Llenguatge C

llenguatge de programació
(S'ha redirigit des de: C (llenguatge))

El llenguatge de programació C, llenguatge C o llenguatge de programació de sistemes, va ser creat per Dennis Ritchie i Ken Thompson als Laboratoris Bell d'AT&T, a principis de la dècada dels 70. C està basat en un llenguatge que havia creat Ken Thompson anomenat llenguatge B el 1970. El llenguatge C es va crear per la necessitat de tenir-ne un que fos més flexible que l'assemblador a l'hora de programar, però que mantingués la característica de ser un llenguatge proper a la màquina. En la seva absència, el llenguatge C es va fer per a poder crear el sistema operatiu Unix. Actualment, C és el llenguatge més utilitzat per a desenvolupar sistemes operatius i altres tipus de programari bàsic, i també per aplicacions en general. El llenguatge C++ es va desenvolupar a partir de C.

Infotaula de llenguatge de programacióC
Tipusllenguatge de programació imperatiu, llenguatge de programació procedural, llenguatge de programació estructurada, llenguatge de programació compilat, llenguatge de programació i terme de ciències de la computació Modifica el valor a Wikidata
Data de creació1972[1]
DissenyDennis Ritchie Modifica el valor a Wikidata
DesenvolupadorKenneth L. Thompson, Dennis Ritchie & Bell Labs (creadors);
ANSI X3J11 (ANSI C)
ISO/IEC JTC1/SC22/WG14 (ISO C)
Paradigma de programacióllenguatge imperatiu, programació estructurada i programació procedimental Modifica el valor a Wikidata
Darrera versió estableC11 /desembre de 2011
Tipus de dadesestàtic, feble, manifest i nominal
Majors implementacionsmúltiples, per exemple GCC, Intel C
DialectesCyclone
Influenciat perB (BCPL, CPL), ALGOL 68,[1] Assemblador, PL/I, FORTRAN
Ha influenciatAMPL, AWK, csh, C++, C--, C#, Objective-C, BitC, D, Go, Rust, Java, JavaScript, Limbo, LPC, Perl, PHP, Pike, Processing, Seed7, Verilog (HDL)[2]
Sistema operatiumultiplataforma
Extensió dels fitxers.c,.h
Etiqueta d'Stack ExchangeEtiqueta Modifica el valor a Wikidata

C és apreciat per l'eficiència del codi que produeix i és el llenguatge de programació més popular per crear programari de sistemes, tot i que també s'utilitza per crear aplicacions.

Es tracta d'un llenguatge dèbilment tipat de mig nivell però amb moltes característiques de baix nivell. Disposa de les estructures típiques dels llenguatges d'alt nivell però, també disposa de construccions del llenguatge que permeten un control a molt baix nivell. Els compiladors solen oferir extensions al llenguatge que possibiliten barrejar codi en assemblador amb codi C o accedir directament a memòria o a dispositius perifèrics. Algunes de les seves instruccions són molt semblants a altres llenguatges, incloent sentències com if, else, for, do, while...[3]

La primera estandardització del llenguatge C fou en ANSI, amb l'estàndard X3.159-1989. El llenguatge que defineix aquest estàndard fou conegut vulgarment com a ANSI C. Posteriorment, el 1990, fou ratificat com a estàndard ISO (ISO/IEC 9899:1990). L'adopció d'aquest estàndard és molt àmplia, així que, si els programes creats el segueixen, el codi és portable entre plataformes i/o arquitectures. En la pràctica, els programadors solen utilitzar elements no-portables dependents del compilador o del sistema operatiu.

CaracterístiquesModifica

Les principals característiques del llenguatge C són:

  • És un llenguatge de programació de propòsit general associat al sistema operatiu UNIX.
  • És un llenguatge de baix o mitjà nivell (si es busca un llenguatge d'alt nivell és recomanable utilitzar el llenguatge C++).[4] Tracta amb elements bàsics com caràcters o números, i també amb bits i adreces de memòria.
  • Posseeix una gran portabilitat.
  • És utilitzat per a la programació de sistemes; per exemple, per a la construcció d'editors de text.
  • Aquest llenguatge consta del llenguatge C pròpiament dit (tipus de dades, expressions i estructures de control) i d'extensions en forma de macros i un ampli conjunt de llibreries predefinides.[5]

EstructuraModifica

Un programador consta d'un o més mòduls, és a dir, fitxers fonts.

Cada mòdul pot contenir:

  • Directives del precompilador; per exemple, amb la finalitat d'incloure altres fitxers (#include) i definir constants i macros (#define).
  • Declaracions de variables i prototips de funcions.
  • Una o més funcions.
  • Comentaris.

Cada funció pot incloure:

  • Directives del precompilador.
  • Declaracions.
  • Un o més blocs.
  • Comentaris.

Cada bloc pot tenir:

  • Directives del precompilador.
  • Declaracions.
  • Una o més sentències
  • Comentaris.

Cada sentència està determinada per ;

Cada bloc de sentències es tanca entre claus {. . . }.

La funció denominada main és la primera en ser executada.

Els comentaris poden aparèixer en qualsevol lloc del codi font i es poden insertar:

  • Entre /*x*/. Per exemple, /*aquí dins s'insereix el text del comentari*/.
  • Entre // i el final de la línia. Per exemple, //aquí dins s'insereix el text del comentari.[5]

Versions de CModifica

Existeixen 3 versions principals de C:

  • Kernighan and Ritchie (K & R), basat en el llibre The C Programming Language (el llenguatge de programació C), de Kernighan i Ritchie
  • ANSI C / ISO C, és la versió que es va estandarditzar el 1990
  • C99, adoptat com a estàndard per l'ANSI el 2000

Programa d'exempleModifica

Aquest programa escriu "Hola món" al dispositiu de sortida de defecte (habitualment el monitor).

 #include <stdio.h>

 int main(void)
 {
 printf("Hola, món!\n");
 return 0;
 }

La primera línia del programa consisteix en una directiva del preprocesador, indicada per #include. Això provoca que el preprocessador -la primera eina a examinar el codi durant la compilació- substitueixi tota la línia pel contingut complet del fitxer de capçalera stdio.h que conté les declaracions de les funcions estàndards d'entrada i sortida com printf.

La següent línia indica que s'està definint una funció amb el nom de main que retornarà un valor de tipus enter i que no accepta cap paràmetre.

Els claudàtors delimiten un bloc de codi, en aquest cas a l'anar precedits de la declaració de la funció main, correspon a la seva definició.

La primera línia del bloc de definició de main és printf("Hola, món!\n"); Aquesta línia indica que s'ha de cridar una funció printf i s'ha de passar com argument a aquesta funció la cadena "Hola, món!\n". La funció printf forma part de la llibreria de funcions estàndard de C i s'encarrega d'imprimir la cadena que se li passa com argument, per la sortida estàndard que sol ser la pantalla. El caràcter \n indica que s'ha de fer un salt de línia i retorn de carro després d'imprimir la cadena.

Per últim la línia següent indica que s'ha de retornar el valor 0. Aquest valor es retorna al procés que ha cridat el programa -sol ser el sistema operatiu- indicant en aquest cas absència d'errors en l'execució.

Biblioteca CModifica

El llenguatge de programació C és molt petit. No obstant això, moltes de les tasques es poden desenvolupar mitjançant la biblioteca C. Es pot utilitzar per:

  • Assignar i desassignar memòria.
  • El manipulat de cadenes i caràcters.
  • Funcions matemàtiques.
  • Entrades i sortides.
  • ...

En els sistemes UNIX la informació sobre les diverses funcions de la biblioteca es troba disponible en la documentació en línia.

Documentació en líniaModifica

La documentació en línia d'una funció indica, a part de la sintaxis d'aquesta funció, si és necessari algun tipus de fitxer include o cal indicar alguna llibreria addicional.

Assignació de memòriaModifica

Per tal d'assignar memòria s'utilitza void *malloc(size_t size):

  • L'usuari li passa com a argument la quantitat de bytes que vol reservar (s'acostuma a utilitzar sizeof per determinar-ho).
  • A continuació, aquest retorna una direcció de memòria on hi ha dsponible aquesta quantitat de bytes.

Quan ja no es necessita la memòria assignada amb malloc, es pot desassignar a partir de void free (void *ptr).[5]

Llenguatges derivatsModifica

Vegeu tambéModifica

ReferènciesModifica

  1. 1,0 1,1 Ritchie, Dennis M. «The Development of the C Language» (en anglès), gener 1993. Arxivat de l'original el 2013-06-22. [Consulta: 18 juny 2014].
  2. «Verilog HDL (and C)» (en anglès). The Research School of Computer Science at the Australian National University, 03-06-2010. Arxivat de l'original el 2013-11-06. [Consulta: 18 juny 2014].
  3. «Lenguaje de Programación C - EcuRed». [Consulta: 8 desembre 2018].
  4. «C++ | enciclopèdia.cat». [Consulta: 8 desembre 2018].
  5. 5,0 5,1 5,2 «El llenguatge de programació C» (PDF) (en castellà). Universidade da Coruña. [Consulta: 8 desembre 2018].

Enllaços externsModifica

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Llenguatge C