EI lenguaje de programación C se diseñó para aumentar la economía de expresión
en una amplia variedad de aplicaciones. El lenguaje C se usa principalmente para programación
de sistemas, que fue como se usó para producir el 90 por 100 del código del sistema operativo UNIX.
Sin embargo, los operadores, tipo de datos y librería de funciones del C son inusualmente ricos
y C es muy transportable, haciendo que su aplicación sea potencialmente amplia.
Puesto que C es el lenguaje del UNIX, el actual uso del UNIX en la programación científica y de procesamiento
de datos aumentará también, indudablemente, el uso de C en estas áreas.
Un programa en C, en su forma más sencilla, tiene una línea de cabecera; una llave izquierda, { ; una serie de declaraciones (para las variables, archivos, arrays,etcétera); una serie de sentencias y una llave derecha, }.
Las llaves izquierda y derecha, { y }, juegan en C el papel del begin y end en otros lenguajes, y por tanto, delimitan grupos de sentencias que se tratan como una.
Frecuentemente aparece también, al principio, una línea que comienza
con "#include", para añadir una o más librerías en el proceso de compilación.
A continuación se muestra un sencillo programa en C que calcula y presenta la media de
un número indeterminado de números de entrada. Por ejemplo, si la entrada fuera 85.5, 87.5 y 89.5 y 91.5 el resultado presentado sería 88.5.
EI programa utiliza la variable x para almacenar un número de entrada y la variable n para determinar el número de números introducidos en el
proceso. Las variables suma y med sirven para almacenar la suma de los números y su media, respectivamente.
#include
main ()
float x, suma, med;
int n;
n=0;
suma=0;
while (scanf("%f",&x)>0) {
++n;
suma+= x;
}
med=suma/n;
printf ("%d numeros que se dan n",n);
printf ("%f es media n", med);
}
nota: Los diferentes tipos de sentencias de este programa se explicarán posteriormente.
Generalmente vemos que el punto y coma se utiliza para terminar una sentencia, y las llaves, { }, se utilizan para agrupar sentencias.
Por tanto, las dos sentencias que siguen a "while..." se tratan como un grupo que se repetirá hasta que ocurra el final de la entrada.
Observe también que el formato de un programa en C queda determinado libremente por el programador.
El estilo de indentación mostrado aquí es uno completamente convencional, el cual facilita la legibilidad de los programas.
Los comentarios en un programa en C pueden insertarse en cualquier sitio, siempre que vayan encerrados entre los delimitadores /* y */.
Finalmente, observamos que puede usarse, al escribir un programa en C, todo el alfabeto de letras rwayúsculas y minúsculas (A-Z y a-z).
Tipos y valores de datos elementales
Volver a Contenidos
Los tipos de datos básicos del C son los números, los cuales pueden ser int, float o double; o caracteres ASCII, que se llaman char.
Además, los números int pueden ser short, long o unsigned.
Generalmente un número int es una secuencia de dígitos (0 ... 9), el cual puede estar precedido de un signo (+ o -). Los valores long int se denotan mediante el carácter L (o 1) añadido como sufijo.
Los enteros hexadecimales y octales pueden también ser representados añadiendo el prefijo 0X (o 0x) y 0, respectivamente al número.
Los dígitos hexadecimales desde A a F (o a a f) se utilizan junto con el 0 hasta el 9 para representar números hexadecimales.
Un número float es un int, una fracción decimal, una parte exponente o alguna combinación de éstos.
La parte exponente consta del símbolo E seguido de un entero, denotando la multiplicación por esa potencia entera de 10.
Entonces, por ejemplo, el número float -5.33E-4 consta del entero 5, la fracción decimal .33 y la parte exponente E-4, y es equivalente al número -0.000533.
Por supuesto, el número -0.000533 también es un float legítimo y representa el mismo valor que -5.33E-4.
Por supuesto, cada número tiene varias representaciones float equivalentes.
El rango de los números válidos int y float depende de la implementación.
Además, la mayoría de las implementaciones soportan valores float en doble precisión,
y C soporta esto mediante el tipo double.
Normalmente, los valores float de precisión simple permiten hasta seis dígitos significativos, mientras que los de doble precisión permiten hasta dieciséis.
El tipo de datos char da la base para el procesamiento de cadenas en C.
Un dato "char" es un carácter (una letra, dígito o carácter especial) encerrado entre apóstrofos como los siguientes ejemplos:
Existe otro uso especial de las variables en C que es muy importante en el contexto de las estructuras de datos y enlace de parámetros. Es decir, una variable puede usarse para "apuntar a" otra posición de memoria que contiene esa dirección de memoria como su valor. Cuando una variable, por ejemplo PX, se utiliza de esta forma como un puntero, se declara del tipo int y se prefija con un asterisco, como sigue:
int *PX;
Ahora a PX se le puede asignar como valor la dirección de otra variable, por ejemplo X, usando como prefijo el signo & para denotar "la dirección de;' la siguiente forma:
int X;
int *PX= &X;
Así pues, cada referencia de la forma *PX significa "el contenido de la dirección de X", y esto es entonces equivalente a la propia referencia X.
Arrays y otras estructuras de datos
Las tres estructuras de datos internas dadas en C son los "arrays", "estructuras" y "uniones". Para todas éstas, las nociones mencionadas anteriormente de "puntero" y "dirección" son esenciales.
Un array se declara vía una "declaración de array", la cual tiene la siguiente forma:
identificador del tipo { tamaño ] [ tamaño ] . [ tamaño ];
Sentencia | Propósito |
Sentencia expresión | Ejecutar una serie de operaciones aritméticas (suma, resta, etc.) o llamadas a función y posiblemente asignar el resultado a una variable, entrada de un array o estructura. |
Sentencia compuesta | Unificar una serie de sentencias para que se traten como una sentencia simple. |
Sentencia goto Sentencia break Sentencia continue Sentencia return |
Alterar la secuencia de ejecución de sentencias del programa transfiriendo el control a una sentencia que no va inmediatamente a continuación en el texto del programa. |
Sentencia condicional Sentencia switch |
Seleccionar una sentencia para su ejecución dependiendo de si una condición particular es verdad o no. |
Sentencia for Sentencia while Sentencia do..while |
Repite la ejecución de una secuencia de sentencias. |