Llenguatge C

De Viquipèdia
Jump to navigation Jump to search
Infotaula de llenguatge de programacióC
The C Programming Language logo.svg
Gedit hello world.png
Tipus llenguatge de programació, llenguatge de programació imperatiu, llenguatge de programació procedural i llenguatge de programació estructurada
Data de creació 1972[1]
Disseny Dennis Ritchie
Desenvolupador Kenneth L. Thompson, Dennis Ritchie & Bell Labs (creadors);
ANSI X3J11 (ANSI C)
ISO/IEC JTC1/SC22/WG14 (ISO C)
Darrera versió estable C11 /desembre de 2011
Tipus de dades estàtic, feble, manifest i nominal
Majors implementacions múltiples, per exemple GCC, Intel C
Dialectes Cyclone
Influenciat per B (BCPL, CPL), ALGOL 68,[2] Assemblador, PL/I, FORTRAN
Ha influenciat AMPL, AWK, csh, C++, C--, C#, Objective-C, BitC, D, Go, Rust, Java, JavaScript, Limbo, LPC, Perl, PHP, Pike, Processing, Seed7, Verilog (HDL)[3]
Sistema operatiu multiplataforma
Extensió dels fitxers .c,.h
Etiqueta d'Stack Exchange Etiqueta
Modifica les dades a Wikidata

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.

C és apreciat per l'eficiència del codi que produeix i és el llenguatge de programació més popular per crear software 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...[4]

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ístiques[modifica]

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

  • És un llenguatge de programació de proò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++)[5].Tracta amb elements bàsics com caràcters o números, i també amb bits i direccions 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.[6]

Estructura[modifica]

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.[7]

Versions de C[modifica]

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'exemple[modifica]

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 C[modifica]

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ínia[modifica]

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òria[modifica]

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).[8]

Llenguatges derivats[modifica]

Vegeu també[modifica]

Referències[modifica]

  1. Ritchie, Dennis M. «The Development of the C Language» (en anglès), gener 1993. [Consulta: 18 juny 2014].
  2. Ritchie, Dennis M. «The Development of the C Language» (en anglès), gener 1993. [Consulta: 18 juny 2014].
  3. «Verilog HDL (and C)» (en anglès). The Research School of Computer Science at the Australian National University, 03-06-2010. [Consulta: 18 juny 2014].
  4. «Lenguaje de Programación C - EcuRed». [Consulta: 8 desembre 2018].
  5. «C++ | enciclopèdia.cat». [Consulta: 8 desembre 2018].
  6. «El llenguatge de programació C - característiques» (en espanyol). Universitat de Corunya. [Consulta: 8 desembre 2018].
  7. «El llenguatge de programació C - estructura» (en espanyol). Universitat de Corunya. [Consulta: 18 desembre 2008].
  8. «El llenguatge de programació C - biblioteca C.» (en espanyol). Universitat de Corunya. [Consulta: 18 desembre 2008].

Enllaços externs[modifica]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Llenguatge C Modifica l'enllaç a Wikidata