Llenguatge C
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.
![]() | |
![]() | |
Tipus | llenguatge 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ó ![]() |
---|---|
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) |
Paradigma de programació | llenguatge imperatiu, programació estructurada i programació procedimental ![]() |
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,[1] 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)[2] |
Sistema operatiu | multiplataforma |
Extensió dels fitxers | .c ,.h |
Etiqueta d'Stack Exchange | Etiqueta ![]() |
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:
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,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].
- ↑ «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].
- ↑ «Lenguaje de Programación C - EcuRed». [Consulta: 8 desembre 2018].
- ↑ «C++ | enciclopèdia.cat». [Consulta: 8 desembre 2018].
- ↑ 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 |
- Web de l'estàndard C més recent (anglès)
- Draft ANSI C Rationale (ANSI X3J11/88-151) (anglès) de 18 de novembre de 1988.
- GNU Compilers collection (anglès) Compilador de codi obert per a C, C++, Objective-C i d'altres per a diversos entorns incloent Linux.
- LLVM - CLang (anglès) Frontal de C per al compilador de codi obert LLVM.
- Borland C (anglès) Compilador de C i C++ per a Windows.