C (llenguage de programació)

C és un llenguage de programació de propòsit general[1]<span title="Erro en la seqüencia d'órdens: no existix el mòdul «DecodeEncode».">: 1 originalment desenrollat per Dennis Ritchie entre 1969 i 1972 en els Laboratoris Bell, com a evolució de l'anterior llenguage B, a la seua volta basat en BCPL.[1]<span title="Erro en la seqüencia d'órdens: no existix el mòdul «DecodeEncode».">: 1 [2][3]
De la mateixa manera que B, és un llenguage orientat a l'implementació de sistemes operatius; concretament Unix. C és apreciat per l'eficiència del còdic que produïx i és ellenguage de programació més popular per a crear softwares de sistemes i aplicacions. Es tracta d'un llenguage del tipo senyes estàtiques, débilmente tipado, que dispon de les estructures típiques dels llenguages d'alt nivell, pero, a la seua volta, dispon de construccions dellenguage que permeten un control a baix nivell, lo que ho convertix en un llenguage de nivell mig. Els compiladors solen oferir extensions allenguage que possibiliten mesclar còdic en ensamblador en còdic C o accedir directament a memòria o dispositius perifèrics. La primera estandardisació dellenguage C va ser en ANSI, en l'estàndart X3.159-1989. Ellenguage que definix este estàndart va ser conegut vulgarmente com ANSI C. Posteriorment, en 1990, va ser ratificat com a estàndar ISO (ISO/IEC 9899:1990). L'adopció d'este estàndart és molt àmplia per lo que, si els programes creats ho seguixen, el còdic és portable entre plataformes i/o arquitectura.
Filosofia
[editar | editar còdic]Un dels objectius de disseny dellenguage C és que solament siguen necessàries poques instruccions en llenguage màquina per a traduir cada element dellenguage, sense que faça falta un soport intens en temps d'eixecució. És molt possible escriure C a baix nivell d'abstracció; de fet, C es va usar com a intermediari entre diferents llenguages. En part, a causa de ser de relativament baix nivell i de tindre un modest conjunt de característiques, es poden desenrollar compiladors de C fàcilment. En conseqüència, ellenguage C està disponible en un ampli palmito de plataformes (més que qualsevol atre llenguage). Ademés, a pesar de la seua naturalea de nivell mig, ellenguage es va desenrollar per a incentivar la programació independent de la màquina. Un programa escrit complint els estàndarts i intentant que siga portàtil pot compilarse en molts computadors. C es va desenrollar originalment (conjuntament en el sistema operatiu Unix, en el que ha estat associat molt temps) per programadors per a programadors. No obstant, ha alcançat una popularitat enorme, i s'ha usat en contexts molt alluntats de la programació de software de sistema, per a la que es va dissenyar originalment.
Propietats
[editar | editar còdic]- Núcleu dellenguage simple, en funcionalitats afegides importants, com a funcions matemàtiques i de gestió d'archius, proporcionades per biblioteques.
- És un llenguage estructurat; té estructures de control i tipos de senyes estructurades definides pel programador a partir dels tipos atòmics típics i per mig d'apanys, estructures, unions i punters, inclosos els que apunten a una funció.
- En la seua primera edició no hi havia advertències sobre assignar a una variable un valor un tipo distint. Per lo que hi havia un programa cridat
lintque detectava este tipo d'errors. Actualment els compiladors poden detectar inconsistencias de tipos i atres errors. - Usa un llenguage de preprocesado, el preprocesador de C, per a tasques com definir macros i incloure múltiples archius de còdic font.
- Accés a memòria de baix nivell per mig de l'us de punters.
- Maneig d'Interrupcions per mig de la biblioteca
signal. h. - Un conjunt reduït de paraules clau.
- El cridat a funcions és per valor. Encara que es poden passar busques a variables per a fer cridats per referència.
- Distints tipos d'almagasenament que permeten un disseny modular.
- La paraula clau struct permet encapsular variables i funcions.
- Llenguage molt eficient posat que és possible utilisar les seues característiques de baix nivell per a realisar implementacions òptimes.
- Es va dissenyar com un llenguage de programació de sistemes portàtil.
- És molt poc lo que requerix us d'ensamblador, lo que va permetre portar Unix i atres sistemes operatius a distints equips.
- Distinguix entre mayúscules i minúscules, pero conserva la seua portabilitat en equips que manegen caràcters de 6 bits, com les computadores Cyber de CDC que tenien una paraula de 60 bits, (10 caràcters), perque usen gràfics per a codificar símbols especials.
- El seu compilador de C s'ha portat a la majoria de sistemes. Perque ademés de que no es requerix codificar en ensamblador, interactua en els llenguages especialisats YACC i Alex. també escrits en C com a part d'Unix.
- Facilita la programació modular gràcies a que conta en distints tipos d'almagasenament de les variables i compilació separada. Açò es conseguix per mig de l'inclusió de fichers capçalera . h per mig de la directiva de preprocesador
#include. externservix per a declarar objectes externs que s'usaran en el programa pero que no es troben en el ficher del programa, per lo que és necessari passar els noms dels fichers com a paràmetros del enlazador.
Precaucions
[editar | editar còdic]Els programadors novells deuen anar en conte en la gestió de la memòria; en C el programador ha de reservar i lliberar la memòria explícitament. En atres llenguages (com a C# o Java) la memòria és gestionada de forma transparent per al programador. Açò alivia la càrrega de treball i evita errors, pero li lleva flexibilitat allenguage per a escriure controladors de l'hardware. Per esta raó és molt important que els recent iniciats adopten bones pràctiques a l'hora d'escriure en C i manejar la memòria, com per eixemple un us intensiu d'indentación i conéixer a fondo tot lo que implica el maneig de busques i direccions de memòria.
Algunes característiques de les que carix C
[editar | editar còdic]- Recolecció de fem nativa, no obstant es troben a tal efecte biblioteques com la «lliure» desenrollada per Sun Microsystems, o el Recolector de fem de Boehm.
- Soport per a programació orientada a objectes, encara que l'implementació original de C++ va ser un preprocesador que traduïa còdic font de Quer Vore també la llibreria GObject.
- Unidades, encara que GCC té esta característica com a extensió.
- Soport natiu per a programació multihilo. Disponible usant llibreries com libretad. Encara que la llista de les característiques útils de les que carix C és llarga, este factor ha segut important per a la seua acceptació, perque escriure ràpidament nous compiladors per a noves plataformes, manté lo que realment fa el programa baix el control directe del programador, i permet implementar la solució més natural per a cada plataforma. Esta és la causa de que a sovint C siga més eficient que atres llenguages. Típicament, solament la programació cuidadosa en llenguage ensamblador produïx un còdic més ràpit, puix dona control total sobre la màquina, encara que els alvanços en els compiladors de C i la complexitat creixent dels microprocessadors moderns han reduït gradualment esta diferència. Ellenguage es pot estendre per mig de biblioteques i macros. Per eixemple, l'implementació original de C++ consistia en un preprocesador que traduïa còdic font C++ a C.
Història
[editar | editar còdic]Desenroll inicial
[editar | editar còdic]
El desenroll inicial de C es va portar a terme en els Laboratoris Bell d'AT&T entre 1969 i 1973; segons Dennis Ritchie, el periodo més creatiu va tindre lloc en 1972. Se li va donar el nom «C» perque moltes de les seues característiques varen ser preses d'un llenguage anterior cridat «B». Hi ha moltes llegendes sobre l'orige de C i el sistema operatiu en el que està íntimament relacionat, Unix. Algunes d'elles són:
- El desenroll de C va ser el resultat del desig dels programadors de jugar en Space Travel. Havien estat jugant en l'unitat central de la seua companyia, pero per la seua poca capacitat de procés i en tindre que soportar 100 usuaris, Ken Thompson i Dennis Ritchie no tenien suficient control sobre la nau per a evitar colisions en els asteroides, per eixe motiu varen decidir portar el joc a un PDP-7 de l'oficina que no s'utilisava; pero eixa màquina no tenia sistema operatiu, aixina que varen decidir escriure un. Finalment varen decidir portar el sistema operatiu del PDP-11 que hi havia en la seua oficina, pero era molt costós, puix tot el còdic estava escrit en llenguage ensamblador. Llavors varen decidir usar un llenguage d'alt nivell i portàtil per a que el sistema operatiu es poguera portar fàcilment d'un ordenador a un atre, varen considerar usar B pero caria de les funcionalitats necessàries per a aprofitar algunes característiques alvançades del PDP-11 llavors varen escomençar a crear un nou llenguage: C.
- La justificació per a obtindre l'ordenador original que es va usar per a desenrollar Unix va ser crear un sistema que automatisara l'archiu de palesos. La versió original d'Unix es va desenrollar en llenguage ensamblador. Més vesprada, ellenguage C es va desenrollar per a poder reescriure el sistema operatiu. En 1973, ellenguage C s'havia tornat tan potent que la major part del kernel Unix, originalment escrit en ellenguage ensamblador PDP-11, va ser reescrita en C. Est va ser un dels primers núcleus de sistema operatiu implementats en un llenguage distint a l'ensamblador. (Alguns casos anteriors són el sistema Multics, escrit en PL/I, i Master Control Program per al B5000 de Burroughs, escrit en ALGOL en 1961).
El C de Kernighan i Ritchie
[editar | editar còdic]En 1978, Ritchie i Brian Kernighan varen publicar la primera edició de Ellenguage de programació C, també conegut com «La bíblia de C». Este llibre va ser durant anys l'especificació informal dellenguage.[1]<span title="Erro en la seqüencia d'órdens: no existix el mòdul «DecodeEncode».">: 2 Ellenguage descrit en este llibre rep habitualment el nom del «C de Kernighan i Ritchie» o simplement «K&R C» (La segona edició dellibre cobrix l'estàndart ANSI C, descrit més alvance en este artícul).
Kernighan i Ritchie varen introduir les següents característiques allenguage:
- El tipo de senyes
struct. - El tipo de senyes
long int. - El tipo de senyes
unsigned int. - Els operadors
=+i=-varen ser substituïts per+=i-=per a eliminar l'ambigüitat sintàctica d'expressions comi=-10, que es podria interpretar be comi =- 10o be comi = -10. El C de Kernighan i Ritchie és el subconjunt més bàsic dellenguage que un compilador deu soportar. Durant molts anys, inclús despuix de l'introducció del ANSI C, va ser considerat «el mínim comú denominador» en el que els programadors devien programar quan desijaven que els seus programes anaren transportables, puix no tots els compiladors soportaven completament ANSI, i el còdic raonablement ben escrit en K&R C és també còdic ANSI C vàlit. En les primeres versions dellenguage, la definició de funcions es feya per mig d'un 'prototip de funció' (function prototype), el qual indicava al compilador el tipo de tornada de la funció. Encara que este método té una gran desventaja respecte al nou, degut a que no comprova el número ni el tipo en la llista d'arguments; en atres paraules, és molt més fàcil cometre errors en fer una cridada a una funció en arguments incorrectes. Eixemple del «vell estil»:
* int power(); /* Es podria usar este prototip
per a cridar a la funció. Simplement power();
o ometre-ho ya que el tipo
per default és int */
* power(a,b)
* int a, b;
{
int n;
for (n = 2; b > 0; --b)
n *= a;
return n;
}Eixemple de la nova definició:
* int power(int a, int b) {
for (int n = 1; b > 0; --b)
n *= a;
return n;
}(*) Per defecte, el tipo de tornada en C és int, per lo que la declaració sancera int power(); podria haver-se omés. En els anys següents a la publicació del C de Kernighan i Ritchie, es varen afegir allenguage moltes característiques no oficials, que estaven soportades pels compiladors d'AT&T, entre uns atres. Algunes d'estes característiques eren:
- Funcions
voidi el tipo de senyesvoid *. - Funcions que retornaven tipos de senyes
structounion(en lloc de busques). - Assignació de tipos de senyes
struct. - Calificador
const, que fa que un objecte siga de solament llectura. - Una biblioteca estàndar, que incorporava la majoria de les funcionalitats implementades per varis desenrolladors de compiladors.
- Enumeracions.
ANSI C i ISO C
[editar | editar còdic]- Artícul principal → ANSI C.
A finals de la década de 1970, C va escomençar a substituir a BASIC com a llenguage de programació de microcomputadores predominant. Durant la década de 1980 es va escomençar a usar en els IBM PC, lo que va incrementar la seua popularitat significativament. Al mateix temps, Bjarne Stroustrup va escomençar a treballar en alguns companyers de Bellabs per a afegir funcionalitats de programació orientada a objectes a C. Ellenguage que varen crear, cridat C++, és hui en dia ellenguage de programació d'aplicacions més comuna en el sistema operatiu Microsoft Windows; mentres que C seguix sent més popular en l'entorn Unix. Un atre llenguage que es va desenrollar en eixa época, Objective C, també va afegir característiques de programació orientada a objectes a C. Encara que hui en dia no és tan popular com a C++, s'usa per a desenrollar aplicacions Cocoa per a Mac VOS X. En 1983, l'Institut Nacional Nortamericà d'Estàndarts (ANSI) va organisar un comité, X3j11, per a establir una especificació estàndar de C. Despuix d'un procés llarc i ardu, es va completar l'estàndart en 1989 i es va ratificar com el «Llenguage de Programació C» ANSI X3.159-1989. Esta versió dellenguage es coneix a sovint com ANSI C, o a voltes com C89 (per a distinguir-la de C99). En 1990, l'estàndart ANSI (en algunes modificacions menors) va ser adoptat per l'Organisació Internacional per a l'Estandardisació (ISO) en l'estàndar ISO/IEC 9899:1990. Esta versió es coneix a voltes com C90. No obstant, «C89» i «C90» es referixen en essència al mateix llenguage. Un dels objectius del procés d'estandardisació del ANSI C va ser produir una extensió al C de Kernighan i Ritchie, incorporant moltes funcionalitats no oficials. No obstant, el comité d'estandardisació va incloure també moltes funcionalitats noves, com a prototips de funció, i un preprocesador millorat. També es va canviar la sintaxis de la declaració de paràmetros per a fer-la semblant a l'empleada habitualment en C++:
* main(argc, argv)
int argc;
char **argv;
{
...
}va passar a ser:
* int main(int argc, char *argv[]) {
...
}- ANSI C està soportat hui en dia per casi la totalitat dels compiladors. La majoria del còdic C que s'escriu actualment està basat en ANSI C. Qualsevol programa escrit només en C estàndart sense còdic que depenga d'un hardware determinat funciona correctament en qualsevol plataforma que disponga d'una implementació de C compatible. No obstant, molts programes han segut escrits de manera que solament poden compilarse en una certa plataforma, o en un compilador concret, açò pot ser per diversos motius:
- L'utilisació de biblioteques no estàndar, com a interfaços gràfics d'usuari.
- L'us de compiladors que no complixen les especificacions de l'estàndart.
- L'us de tipos de senyes suponent que tindran el mateix tamany o orde dels bits en totes les plataformes. La macro __STDC__ pot usar-se per a dividir el còdic en seccions ANSI i K&R per al compilador.
# if __STDC__
* extern int getopt(int, char * const *, const char *);
# else
* extern int getopt();
# endifAlguns programadors recomanen usar «#if __STDC__», com en l'eixemple, en lloc de «#ifdef __STDC__» perque alguns compiladors li assignen el valor zero a __STDC__ per a indicar que no són compatibles en ANSI. En el següent eixemple, el programa demana a l'usuari que introduïxca un número. El programa dividirà dit número entre 2 i imprimirà el resultat mentres que este siga parell, i terminarà quan el número siga impar:
#include <stdio. h>
* int main() {
int numere;
fputs("Introduïxca un numere sancer parell: ", stdout);
if (scanf("%d", &numere) != 1) {
fputs("Error: numere no valgut.
", stderr);
return -1;
}
for (int i = 2
; numere % 2 == 0; ++i) {
printf("%.3d| %d/2 = ", i, numere);
numere /= 2;
printf("%d
", numere);
}
printf("No es pot seguir dividint: El numere %d és impar.
", numere);
getchar();
return 0;
}Paraules reservades d'ANSI-C
[editar | editar còdic]auto double int struct
* break else long switch
case enum register typedef
* char extern return union
* const float short unsigned
* continue for signed void
* default goto sizeof volatile
do if static whileC99
[editar | editar còdic]- Artícul principal → C99 (Estàndar de C).
Despuix del procés d'estandardisació d'ANSI, l'especificació dellenguage C va permanéixer relativament estable durant algun temps, mentres que C++ va seguir evolucionant. No obstant, l'estàndart va continuar baix revisió a finals de la década de 1990, lo que va dur a la publicació de l'estàndar ISO 9899:1999 en 1999.[4] Este estàndart es denomina habitualment «C99». Es va adoptar com a estàndar ANSI en març de 2000. Les noves característiques de C99 inclouen:[5]<span title="Erro en la seqüencia d'órdens: no existix el mòdul «DecodeEncode».">: xi–xii
- Les variables poden declarar-se en qualsevolloc (com en C++), en lloc de poder declarar-se solament despuix d'una atra declaració o al començ d'una declaració composta.
- Molts tipos de senyes, incloent
long int(per a reduir el engorro de la transició de 32 bits a 64 bits), un tipo de senya booleano, i un tipocomplexque representa número complex. - Arrays de llongitut variable.
- Soport per a comentaris d'una llínea que escomencen en
//, com en BCPL o en C++, característica per a la que molts compiladors havien donat soport pel seu conte. - Moltes funcions noves, com
snprintf() - Alguns headers nous, com
stdint. h. El compilador GCC, entre molts uns atres, soporten hui en dia la majoria de les noves característiques de C99. No obstant, este nou estàndart ha tingut poc acolliment entre alguns desenrolladors de compiladors, com Microsoft i Borland, que s'han centrat en C++. Brandon Bray, de Microsoft, va dir a este respecto:
C11
[editar | editar còdic]- Artícul principal → C11 (Estàndar de C).
C11 (abans conegut com C2X) és un nom informal per a ISO/IEC 9899:2011[6]. El borrador final, N1570, va ser publicat en abril de 2011.[7] El nou estàndart va superar la seua última revisió el 10 d'octubre de 2011 i va anar oficialment ratificat per l'ISO i publicat el 8 de decembre de 2011.
C embebido
[editar | editar còdic]Històricament la programació en C embebido ha requerit extensions no estàndar dellenguage C per a implementar característiques no oficials tals com a aritmètica de punt fix i operacions bàsiques d'entrada i eixida. En 2008 el comité d'estandardisació de C, per a implementar estes característiques no oficials, va publicar un informe tècnic en el que estenia ellenguage C proporcionant un estàndart comú al que totes les implementacions es podien adherir. Incloïa vàries característiques no disponibles en C normal, tals com a aritmètica de punt fix, espais de direccions en noms i direccionament per hardware d'entrada i eixida bàsic.
C17
[editar | editar còdic]- Artícul principal → C17 (Estàndar de C).
També conegut com C18 o C1x, i formalment com a ISO/IEC 9899:2018.[8]
C23
[editar | editar còdic]- Artícul principal → C23 (Estàndar de C).
És l'estàndart actual, publicat en 2024. Formalment conegut com a ISO/IEC 9899:2024.
Llenguages derivats de C
[editar | editar còdic]Des de l'inici dellenguage han sorgit vàries branques d'evolució que han generat varis llenguages:
- Objective-C és un primer intent de proporcionar soport per a la programació orientada a objectes en C, pero actualment usat en Mac VOS X, iOS i GNUstep.
- C++ (pronunciat C Plus Plus) dissenyat per Bjarne Stroustrup va ser el segon intent de proporcionar orientació a objectes a C i és la variant més difosa i acceptada. Esta versió combina la flexibilitat i l'accés de baix nivell de C en les característiques de la programació orientada a objectes com a abstracció, encapsulación i ocultació. També s'han creat numerosos llenguages inspirats en la sintaxis de C, pero que no són compatibles en ell:
- Java, que unix una sintaxis inspirada en la del C++ en una orientació a objectes més similar a la de Smalltalk i Objective C.
- JavaScript, un llenguage de scripting creat en Netscape i inspirat en la sintaxis de Java dissenyat per a donar a les pàgines web major interactividad. A la versió estandardisada li la coneix com ECMAScript.
- C# (pronunciat C Sharp) és un llenguage desenrollat per Microsoft derivat de C/C++ i Java.
Procés de compilació
[editar | editar còdic]la compilació d'un programa C es realisa en vàries fases que normalment són automatisades i ocultades pels entorns de desenroll:
- Preprocesado consistent en modificar el còdic font en C segons una série d'instruccions (denominades directives de preprocesado) simplificant d'esta forma el treball del compilador. Per eixemple, una de les accions més importants és la modificació de les inclusions (
#include) per les declaracions reals existents en l'archiu indicat. - Compilació que genera el còdic objecte a partir del còdic ya preprocesado.
- Enllaçat que unix els còdics objecte dels distints mòduls i biblioteques externes (com les biblioteques del sistema) en el còdic objecte generat en el pas anterior per a generar el programa eixecutable final.
Eixemple de còdic
[editar | editar còdic]El següent programa imprimix en pantalla la frase «Hola Món» (C99):
// necessari per a utilisar printf()
# include <stdio. h>
* int main(void) {
printf("Hola Món
");
return 0;
}El següent programa mostra l'us de punters en C:
#include <stdio. h>
* int main(){
// Variable
int numere = 99;
// Busca a variable
int p;
// Assignació de punter
p = &numere;
// Accés al valor de la variable a la que apunta la busca
printf("Numere: %d
",p);
// Accés a la direcció a la que apunta la busca
printf("Direccion: %d
",p);
// Canvi de valor de la variable a la que apunta el punter
p = 2;
printf("Numere: %d
",numere);
}El següent escriu «Hola Món» (C89):
/* comentaris en '//' no permesos en C89, sí en C99 */
# include <stdio. h> /* necessari per a utilisar printf */
* main() /* tipo 'int' de tornada implícita */
{
printf ("Hola Món
") ;
return 0;
}Estructura de control «else if»:
* if (condicion 1) {
sentencia 1
} else if (condicion 2) {
sentencia 2
} else if (condicion n) {
sentencia n
} else {
sentències per defecte
}Ferramentes de programació
[editar | editar còdic]En programar en C, és habitual usar algunes ferramentes de programació d'us molt estés, sobretot en entorn de tipo Unix:
- make: automatisatr del procés de compilació i enllaçat;
- lint: detector de còdic sospitós, confús o incompatible entre distintes arquitectura;
- valgrind: detector de possibles fugues de memòria;
- gdb: depurador (debugger) usat en GNU;
- dbx: depurador preinstalado en Unix;
- ddd: interfaç gràfic per als depuradors gdb o dbx.
Aplicabilidad
[editar | editar còdic]
Ellenguage de programació C està fet principalment per a la fluïdea de programació en els sistemes Unix, encara que també s'usa per al desenroll d'uns atres sistemes operatius com Windows o GNU/Linux i per a aplicacions d'escritori com GIMP, el principallenguage del qual de programació és C. De la mateixa forma, és molt usat en aplicacions científiques (per a experiments informàtics; models físics, químics, matemàtics i simuladors), indústriaels (indústria robòtica, cibernètica, sistemes d'informació i base de senyes per a l'indústria petrolera i petroquímica. Predominen també tot lo que es referix a simulació de màquines de manufactura), simulacions de vol (és la més delicada, ya que es tenen que usar massa recursos tant d'hardware com de software per a desenrollar aplicacions que permeten simular el vol real d'una aeronau). S'aplica per tant, en diverses àrees desconegudes per gran part dels usuaris novells. Els ordenadors de finals dels 90 són varis órdens de magnitut més potents que les màquines en que C es va desenrollar originalment. Programes escrits en llenguages de tipo dinàmic i fàcil codificació (Ruby, Python, Perl, etc.) que antany hagueren resultat massa llents, són lo prou ràpits com per a desplaçar en us a C. Aixina i tot, es pot seguir trobant còdic C en grans desenrolls d'animacions, modelacions i escenes en 3D en películas i atres aplicacions multimèdia. Actualment, els grans proyectes de software es dividixen en parts, dins d'un equip de desenroll. Aquelles parts que són més «burocràtiques» o «de gestió» en els recursos del sistema, se solen realisar en llenguages de tipo dinàmic o de guion (script), mentres que aquelles parts «crítiques», per la seua necessitat de rapidea d'eixecució, es realisen en un llenguage de tipo compilado, com a C o C++. Si, despuix de fer la divisió, les parts crítiques no superen un cert percentage del total (aproximadament el 10 %) llavors tot el desenroll es realisa en llenguages dinàmics. Si la part crítica no aplega a complir les expectatives del proyecte, es comparen les alternatives d'una inversió en nou hardware front a invertir en el cost d'un programador per a que reescriga dita part crítica.
Aplicacions embebidas
[editar | editar còdic]C és ellenguage comú per a programar sistemes embebidos.cita requerida El còdic llauger que un compilador C genera, combinat en la capacitat d'accés a capes del software propenques a l'hardware són la causa de la seua popularitat en estes aplicacions. Una característica a on C demostra comoditat d'us particularment valiosa en sistemes embebidos és la manipulació de bits. Els sistemes contenen registres mapeados en memòria (en anglés, MMR) a través dels quals els perifèrics es configuren. Estos registres mesclen vàries configuracions en la mateixa direcció de memòria, encara que en bits distints. En C és possible modificar fàcilment un d'estos bits sense alterar el restant. Per eixemple:
* int *mmr; /* busca al registre que volem modificar */
* mmr = 0x40008ABC; /* direcció de memòria del registre */
* mmr |= 1 << 7; /* posa a 1 el bit 8 sense modificar els demés */
* mmr &= (1 << 12) /* posa a 0 el bit 13 sense modificar els demés */Este tipo de manipulació és molt tediosa o senzillament impossible en atres llenguages d'alt nivell, ya que s'utilisen operacions comunes del llenguage ensamblador com les operacions a nivell bit OR, AND, SHL i CPL pero que estan disponibles en ellenguage C. Atres característiques de C considerades desventages en la programació per a PC -com l'absència de control de memòria automàtic- es convertixen en ventages quan els sistemes embebidos necessiten còdic chicotet i optimisat. Eixe és el cas dels sistemes basats en microcontroladors de poca potència com l'intel 8051 o molts sistemes ARM.
Biblioteques C
[editar | editar còdic]Una biblioteca de C és una colecció de funcions utilisades en ellenguage de programació C. Les biblioteques més comunes són la biblioteca estàndar de C i la biblioteca del estàndar ANSI C, la qual proveïx les especificacions dels estàndarts que són àmpliament compartides entre biblioteques. la biblioteca ANSI C estàndar, inclou funcions per a l'entrada i eixida d'archius, estage de memòria i operacions en senyes comunes: funcions matemàtiques, funcions de maneig de cadenes de text i funcions d'hora i data. Atres biblioteques C són aquelles utilisades per a desenrollar sistemes Unix, les quals proveïxen interfaços cap al núcleu. Estes funcions són detallades en varis estàndarts tals com POSIX i el Single UNIX Specification. Ya que molts programes han segut escrits en ellenguage C existix una gran varietat de biblioteques disponibles. Moltes biblioteques són escrites en C degut a que C genera còdic objecte ràpit; els programadors després generen interfaços a la biblioteca per a que les rutines puguen ser utilisades des de llenguages de major nivell, tals com Java, Perl i Python.
Vore també
[editar | editar còdic]Referències
[editar | editar còdic]- ↑ 1,0 1,1 1,2 Erro en la cita: L'element
<ref>no és vàlit; puix no n'hi ha una referència en text nomenadaK&R2 esp 1991 - ↑ Erro en la cita: L'element
<ref>no és vàlit; puix no n'hi ha una referència en text nomenadaRaymond 2003 - ↑ Erro en la cita: L'element
<ref>no és vàlit; puix no n'hi ha una referència en text nomenadaRaymond TAoUP EvoC - ↑ Erro en la cita: L'element
<ref>no és vàlit; puix no n'hi ha una referència en text nomenadaISO/IEC 9899:1999 - ↑ Erro en la cita: L'element
<ref>no és vàlit; puix no n'hi ha una referència en text nomenadaC99 N1256 - ↑ Erro en la cita: L'element
<ref>no és vàlit; puix no n'hi ha una referència en text nomenadaISO/IEC 9899:2011 - ↑ Erro en la cita: L'element
<ref>no és vàlit; puix no n'hi ha una referència en text nomenadaC11 N1570 - ↑ «ISO/IEC 9899:2018» (en en). ISO. Consultat el 18 de maig de 2019.
Enllaços externs
[editar | editar còdic]Plantilla:Wikiversidad Plantilla:Wikibooks
- Pàgina web oficial de l'estàndart [1] - llenguage de programació C
- Pàgina web oficial del grup de treball d'ISO/IEC [2] encarregat de l'estandardisació dellenguage de programació C
- Este artícul conté una traducció derivada de «C (lenguaje de programación)» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.
- Pàgines en erros en seqüencies d'órdens
- Pàgines en erros de resaltat de sintaxis
- Pàgines en erros de referència
- Proyecte:Artículos desactualizados
- Artículs en passages que requerixen referències
- Llenguage de programació C
- Llenguages de programació per procediments
- Llenguages de programació d'alt nivell
- Laboratoris Bell
- Llenguages de programació de sistemes
- Llenguages de programació creats en 1972