Está en la página 1de 6

¿Quieres saber qué es el 

lenguaje C y sus características? En este artículo resolvemos tus dudas


sobre este lenguaje de programación de bajo nivel.
C es un lenguaje de programación (considerado como uno de lo más importantes en la actualidad)
con el cual se desarrollan tanto aplicaciones como sistemas operativos a la vez que forma la base de
otros lenguajes más actuales como Java, C++ o C#.
El lenguaje C no es sencillo, por eso recomendamos que se haga una primera aproximación
realizando un curso de programación en C para adquirir los conocimientos básicos y poder empezar
a trabajar con una base sólida.

Origen del lenguaje C


Tenemos que viajar hasta 1972 para ver el nacimiento del lenguaje de programación C (y el
sistema operativo UNIX)  de la mano del científico informático estadounidense Dennis Ritchie (con
la ayuda de Ken Thompson). Recibió el nombre de C simplemente por una cuestión alfabética, ya
que sustituyó a sus lenguajes predecesores B y BCPL que codificaban la minicomputadora PDP-7.
El desarrollo del lenguaje C toma protagonismo para la creación del sistema operativo UNIX que
llevarían consigo los nuevos minicomputadores PDP-11, primeros en conectar el procesador, los
periféricos y la memoria entre sí mediante un BUS bidireccional.

Características del lenguaje C


Son varias las características de C tal y como vemos a continuación.
 Estructura de C - Lenguaje estructurado.
 Programación de nivel medio (beneficiándose de las ventajas de la programación de alto y
bajo nivel).
 No depende del hardware, por lo que se puede migrar a otros sistemas.
 Objetivos generales. No es un lenguaje para una tarea específica, pudiendo programar tanto
un sistema operativo, una hoja de cálculo o un juego.
 Ofrece un control absoluto de todo lo que sucede en el ordenador.
 Organización del trabajo con total libertad.
 Los programas son producidos de forma rápida y son bastante potentes.
 Rico en tipo de datos, operadores y variables en C.
Como inconvenientes, siendo también características del lenguaje C, debemos decir que no es un
lenguaje sencillo de aprender, que requiere una continua práctica y un serio seguimiento si
queremos tener el control de los programas.

Sintaxis en C
Todos los programas que son creados tienen unos diferentes tipos de formato. Este formato es
conocido como la sintaxis. La sintaxis en C es una serie de reglas y procesos que lideran la
estructura de un programa. Estas reglas tienen que ser entendidas por el compilador para que se
pueda crear un programa en C válido, es decir, tienen que establecer cómo comienza una línea de
código en C, cómo termina o cuándo usar, por ejemplo, comillas o llaves. El lenguaje en C hace
distinción entre mayúsculas y minúsculas siendo este el motivo por el que se programa en
minúsculas.
La sintaxis básica en C determina la forma en que se agrupan los caracteres para formar tokens,
que son la unidad mínima de programación en C. Tomando como ejemplo el programa “Hola
Mundo”, usado para la introducción a la mayoría de lenguajes de programación, tendríamos el
siguiente código en C:

#include

int main()

{
printf("Hola Mundo"); // línea sencilla de comentarios
return 0;
/*
línea
múltiple de
comentarios
*/

Si seleccionamos sólo la línea de código printf, tendríamos los siguientes tokens: printf, (, “, Hola


Mundo, “,), y; Por lo tanto, podemos decir, que estos tokens son los pequeños bloques con los que
se programa en C, pudiendo ser variables, identificadores, constantes, palabras clave, símbolos que
comprenda el lenguaje o sentencias en lenguaje C.
El comienzo de todo programa en este lenguaje debe comenzar por  #include cuya función es
inicializar el entorno de trabajo; en nuestro ejemplo, vinculando el archivo stdio.h (biblioteca de C)
que a su vez contiene la orden printf. 
La función en lenguaje C int main() hace que el programa vuelva a ese punto de retorno tras
ejecutarse y su orden está delimitada entre {}.
Cómo en la mayoría de los lenguajes de programación, nos podemos ayudar de comentarios que
el compilador no procesará pero que nos serán de mucha utilidad a la hora de aclarar cualquier
concepto en la línea de código. Podemos hacer los comentarios en lenguaje C de dos maneras; una
única línea de comentario comenzando con // o en múltiples líneas comenzando y terminando por /*.

Bibliotecas de C
Al hablar de bibliotecas en lenguaje C nos referimos a una serie de librerías que son usadas en
este lenguaje de programación y están formadas por una serie de código con el que podemos leer el
teclado, realizar operaciones matemáticas, imprimir en pantalla… La biblioteca referente es la
estándar de ANSI C formada por 24 archivos de cabecera. Según su tarea, se clasifican en
categorías, como por ejemplo matemáticas, de salida y entrada, de uso de textos, de gestión de
memoria... 
Entre las librerías más destacadas encontramos stdio.h (de entrada y salida), conio.h (potente
gestión de textos), math.h (encargada de operaciones matemáticas), time.h (obtienen fecha y hora
actual para poder utilizarla según sus necesidades), etcétera.

En estos momentos, podemos concluir que el lenguaje de programación C es el idóneo para
programar sistemas operativos debido a su cercanía en el lenguaje, al igual que cumple con creces
en la creación de programas de otra índole y ofrece a los programadores un control total sobre la
memoria pudiendo asignarla cómo, cuándo y dónde quieran. Otro punto a destacar es la gran
variedad de bibliotecas (como las estándar ASCI) que facilitan mucho al programador la redacción de
las acciones a realizar.

Pese a sus virtudes a la hora de programar a nivel de sistema y su versatilidad para afrontar la
creación de infinitas clases de aplicaciones, el lenguaje C no siempre es la mejor opción para el
programador, sobre todo para el desarrollo de aplicaciones, ya que puede tener errores de
compilación que otros lenguajes basados en C, como Java o C++ solventan sin problemas. Tampoco
debemos olvidar que no es un lenguaje de programación sencillo, por lo que necesita de mucha
disciplina en su estudio y puesta en práctica. Esta dificultad puede verse reducida por la perfecta
estructuración del código y por la rapidez y potencia con la que las aplicaciones son generadas.
En conclusión, entendiendo su estructura básica y logrando la familiarización con algunas de sus
bibliotecas, no tardaremos en convertir este lenguaje en uno de nuestros favoritos, y podremos
empezar así a programar en C con soltura.
Capítulo 1. Estructura de un programa en C

Tabla de contenidos
1.1. Un programa en C
1.2. Bibliografía de apoyo
1.3. Actividades
1.3.1. Los elementos de un programa en C

En la actualidad existen múltiples lenguajes de programación denominados de “alto


nivel”, es decir, aquellos que permiten escribir programas en un formato lejano al
lenguaje máquina o ensamblador que es el que utiliza el procesador para ejecutar todos
los programas. Java es un lenguaje de alto nivel “orientado a objeto” pues los
programas se estructuran alrededor de clases y objetos. C, en cambio, no dispone de
objetos y se estructura en base a un conjunto de funciones, por lo que se denomina
un “lenguaje procedimental”.

Java es un lenguaje con una funcionalidad muy extensa, y aunque coincide con C en
un porcentaje amplio de esta funcionalidad las diferencias entre ambos son mucho
mayores que las coincidencias. Las construcciones del lenguaje C son mucho
más simples que las de Java. En mecanismos tales como bucles, condicionales, etc.,
ambos lenguajes coinciden, pero en el resto de aspectos tales como la definición de
estructuras de datos C ofrece mecanismos más simples.

1.1. Un programa en C

Un programa en C es un conjunto de funciones, definiciones de tipos de datos y


declaraciones de variables contenidos en un conjunto de ficheros. Un programa en C
siempre comienza a ejecutar por la función con nombre main. Cualquier función puede
llamar a cualquier función, y las variables declaradas fuera de las funciones tienen
ámbito global o local al fichero que las contiene (si se declaran con el prefijo  static). La
siguiente figura ilustra la estructura de un programa en C contenido en varios ficheros.

El compilador es el programa encargado de traducir un conjunto de funciones,


definiciones y declaraciones en múltiples ficheros a un fichero ejecutable. El compilador
de C tiene un comportamiento sorprendentemente sencillo y realiza mucho menos
trabajo del que se está acostumbrado con otros compiladores como el de Java. Para
crear un ejecutable, el compilador procesa los ficheros de código uno a uno de forma
independiente, de forma que las definiciones de variables y funciones de un fichero no
las recuerda cuando procesa el fichero siguiente. Además, el compilador realiza
una única pasada por el texto, por lo que cuando se traduce un fichero, en un punto
concreto del texto, sólo se dispone de las definiciones que se han encontrado hasta ese
punto.
Como consecuencia de este comportamiento, una variable no puede ser utilizada, a
no ser que se haya declarado previamente en ese mismo fichero. Igualmente, una
función no puede ser invocada a no ser que se haya incluido previamente en el mismo
fichero. Para poder dividir igualmente el código en múltiples ficheros el lenguaje permite
la definición de “prototipos de funciones” (el tipo del resultado que devuelven, seguido
del nombre de la función y del tipo de sus parámetros entre paréntesis) sin incluir el
código, y además permite la definición de variables como “externas”, es decir, que están
en otro fichero. A continuación, se muestran dos ficheros en los que la
función fill_in y la variable table están definidas en un fichero, pero las utiliza la
función main en el otro fichero.

Fichero1.c Fichero2.c

#define SIZE 100


/* Tabla de 100 enteros #define SIZE 100
1
(Global) */ 1 /* Variable global declarada en
2 otro fichero */
int table[SIZE]; 2
3 extern int table[SIZE];
3
4
/* Rellena una tabla con 4
5 ceros */ /* Función declarada en otro
5
6 void fill_in(int *t, int fichero */
size) 6
7 void fill_in(int *, int);
{ 7
8
int i; 8
9 /* Punto de entrada del programa
for (i = 0; i < size; 9 */
10
i++) 10 int main(int argc, char *argv[])
11
{ 11 {
12
t[i] = 0; 12 fill_in(table, SIZE);
13
} 13 return 0;
14
return; }
}

La línea 3 en Fichero2.c notifica al compilador que existe una tabla de 100 enteros


con nombre table definida en otro fichero. La línea 6 es un prototipo de función.
Contiene el tipo del resultado (void) seguido del nombre de la función (fill_in) y de
los nombres y tipos de los parámetros entre paréntesis (int *t, int size). Esta línea
informa al compilador que una función de estas características está definida en otro
lugar de del programa. Gracias a estas definiciones la línea 11 es correcta. La
función fill_in puede ser invocada, y la variable table es conocida.
La línea 1 de ambos ficheros (#define) es una directiva del preprocesador, que
indica que tiene que cambiar todas las ocurrencias de una cadena de caracteres dada
(en este caso SIZE) por un valor específico (en este caso, 100). El preprocesador corre
automáticamente antes que el compilador y se encarga de estas sustituciones. Usa la
directiva #define siempre que vayas a definir constantes en tu programa, sobre todo
para los tamaños de arrays, y escribe siempre esas constantes en mayúsculas, de forma
que sean fáciles de leer y modificar.

Responde a las siguientes preguntas para ver si has entendido lo que se explica en este
documento:
1.
Un programa en C es un conjunto de definiciones de tres tipos: variables,
funciones y tipos de datos.
o Verdadero
o Falso
2.
Algunas funciones y variables se pueden agrupar en “clases”, como en Java.
o Verdadero
o Falso
3.
Puedo utilizar una función en un fichero y luego definirla (incluir su código) en un
lugar más abajo de ese fichero.
o Verdadero
o Falso
4.
Como una función no puede llamar a otra que no se haya definido previamente, en
C no se pueden escribir dos funciones que se llamen la una a la otra.
o Verdadero
o Falso
5.
¿Qué es el prototipo de una función?
o Una línea en el programa que tiene sólo su nombre.
o Una línea de código con el nombre, los parámetros de la función y el
resultado que devuelve.
o La definición de la función: nombre y parámetros seguido de su
código.
o Una descripción en papel de lo que debe hacer una función para
luego implementarla.

También podría gustarte