A continuación se muestra el programa más sencillo posible en C:

int main( ) 
{ 
}

Todo programa en C debe tener y sólo una función main(). Esta función debe constar de una serie de sentencias (en este caso vacía) delimitada por los símbolos { }. Estas sentencias especifican la secuencia de acciones que el programa llevará a cabo.

En C pueden ponerse comentarios en cualquier sitio del programa, utilizando los símbolos /* */. El compilador de C ignora todo el texto entre el inicio del comentario (/*) y el final del mismo (*/). Añadir comentarios a un programa no incrementa el tamaño de los archivos objeto ni ejecutable, ni tampoco ralentiza la ejecución del programa. En el caso de comentarios de una línea pueden ir precedidos por //

Ejemplo 1:

/* Mi programa
en C */
int main ( )
{
// otro comentario
}

El modelo de compilación en C

Preprocesador

El preprocesador toma como entrada el código fuente y es el responsable de eliminar los comentarios (ya que no representan ninguna instrucción) y de interpretar las directivas especiales del preprocesador, denotadas por el símbolo #. Por el momento destacaremos únicamente dos de las directivas más utilizadas:

  • include: incluye un archivo externo dentro del archivo fuente. Se utilizan los símbolos < > para indicar que el archivo se encuentra en un directorio del entorno de compilación, distinto del directorio de trabajo actual. Por el contrario, se utilizan los símbolos “ “ para indicar archivos locales. Por ejemplo:
    • #include <stdio.h> -> incluye el archivo con las definiciones de las funciones de entrada y salida de la librería estándar
    • #include “funciones.h” -> incluye el archivo funciones.h del directorio actual
  • #define : define un nombre simbólico. Cuando el preprocesador encuentra un nombre simbólico en el programa le sustituye por el valor que se le haya asociado con la directiva #define. Por ejemplo:
    • #define NUM_ELEMENTS 100 -> Define la constante NUM_ELEMENTS con el valor 100
    • #define PI 3.1415927 -> Define la constante PI.

En pseudocódigo utilizaremos la declaración:

const <nombre_constante_1> = <valor_1>;
<nombre_constante_2> = <valor_2>;
...
fconst

Elementos sintácticos de un programa en C

Símbolo Significado
# Indicador de directivas de precompilación (#define, #include, ...)
/* ...... */ Delimitadores de los comentarios. Son ignorados por el compilador
; Final de sentencia. Todas las sentencias deben terminar en ;
{.....} Delimitadores de un bloque de instrucciones que forman una unidad

Identificadores

Un identificador en un lenguaje de programación es un nombre utilizado para referir un valor constante, una variable, una estructura de datos compleja, o una función, dentro de un programa. Todo identificador está formado por una secuencia de letras, números y caracteres de subrayado, con la restricción de que no puede empezar por un número y no puede tener caracteres en blanco.

El lenguaje C diferencia entre mayúsculas y minúsculas.

En cualquier caso, nunca pueden utilizarse las palabras reservadas del lenguaje.

Palabras reservadas

Auto do goto signed  Unsigned 
break double if  sizeof void 
Case else int  static  volatile 
Char enum  long  struct  while 
const extern  register  switch   
continue float  return  typedef   
default for  short  union  

Estructura de un programa

Todo programa en C consta básicamente de los siguientes elementos:

  • Directivas del preprocesador
  • Definiciones de tipos de datos
  • Declaraciones de funciones

Por el momento trataremos únicamente la declaración de la función main() que corresponde al programa principal. La ejecución de un programa escrito en C siempre comienza por esta función. Por esta razón, en un programa sólo puede haber una función con ese nombre.

Toda función en C y en particular la función main ( ), tiene la siguiente estructura:

Tipo_de_datos_que_devuelve nombre_función ( parámetros_de_la_función)
{
  declaración_de_variables;
  secuencia_de_sentencias;
}

Dejamos para más adelante el paso de parámetros y la devolución de datos de un determinado tipo. Simplemente hay que ver que tanto la devolución de datos como los parámetros son opcionales, y que en la mayoría de casos no lo necesitamos en el programa principal.

A continuación vemos un ejemplo de un programa para evaluar la expresión 3*5-32/4:

#include <stdio.h>
int main ( )
{
  int a,b,c = 5;
  a = 3 * c;
  b=32/4;
  c= a – b;
  printf (“El valor de la expresión es: %d\n”, c);
}

El cuerpo del programa principal lo constituyen todas las líneas comprendidas entre los símbolos {}. En cada una de las líneas puede haber una o más sentencias. Una sentencia es una orden completa para el ordenador. Toda sentencia debe acabar con punto y coma.

Tipo de datos elementales

En C hay tres tipos de datos elementales, a partir de los cuales se construyen todos los demás, el tipo char (carácter), el tipo int (entero) y sus variantes, y el tipo float (real) y variantes.

Datos de tipo entero (entero/int)

TIPOS RANGO BYTES

short

short int

-32768 A 32767. 2

int

signed int

-2,147,483,648 A 2,147,483,647 4
unsigned int 0 A 4294967295 4

long int

long

signed long int

-2.147.483.648 A 2.147.483.647 4

Dades de tipus real (Real /float i double)

TIPOS RANGO BYTES
float 3.4X10-38 A 3.4X1038 4
double 1.7X10-308 A 1.7X10308 8
long double 3.4X10-4932 A 3.4X104932 10

Datos de tipo carácter (Carácter / char)

TIPOS RANGO BYTES

char

unsigned char

-128 A 127 1
unsigned char 0 A 255 1

Datos de tipo lógico (Booleano / -)

El lenguaje C a diferencia de la mayoría de lenguajes de programación, no dispone inicialmente del tipos de datos booleano para representar los valores verdadero (true) o falso (false). A C se considera true cualquier valor numérico distinto de 0 y false el valor 0. El tipo de datos lógico o booleano se acostumbra a representar mediante una variable de tipo int. En cuanto a los valores true y false se suelen definir con macros de la siguiente manera:

  • #define TRUE 1
  • #define FALSE 0

Operadores

Operadores de asignación

Permite asignar valores a las variables. Su símbolo es un signo igual ( = ). Este operador asigna en la variable que está a la izquierda del operador el valor que está a la derecha.

Su forma general es:

nombre_variable = expresión;

En la expresión de la derecha puede aparecer la misma variable a la que se desea asignar la expresión. Una sentencia tal como:

  • a = a+1;

es totalmente correcta en C, aunque matemáticamente parezca incorrecta.

Además del operador de asignación (=) existen otros cuatro operadores de asignación: (+=, –=, *= i /=)

  • a += b significa a = a + b
  • a –= b significa a = a – b
  • a *= b significa a = a * b
  • a /= b significa a = a / b

Operadores con datos de tipo entero

OPERACION PSEUDOCODIGO C
Suma + +
Resta - -
Multiplicación * *
División DIV /
Módulo MOD %

Operadores con datos de tipo real

OPERACION PSEUDOCODIGO C
Suma + +
Resta - -
Multiplicación * *
División / /

Operadores con datos de tipo lógico

A B NO A (!A) A y B (A && B) A o B (A || B)
VERDADERO VERDADERO FALSO VERDADERO VERDADERO
VERDADERO FALSO FALSO FALSO VERDADERO
FALSO VERDADERO VERDADERO FALSO VERDADERO
FALSO FALSO VERDADERO FALSO FALSO

Operadores relacionales

Se pueden utilizar con cualquier tipo de datos. El resultado es siempre un dato de tipo lógico.

OPERACION PSEUDOCODIGO C
Mayor > >
Mayor o igual >=
Menor < <
Menor o igual <=
Igual = =
No igual !=

Prioridad de los operadores aritméticos

La prioridad de las operaciones es simplemente el orden en que éstas se ejecutan.

Por ejemplo consideramos la expresión : x := 5+4/ 2

La prioridad exige que la división se ejecute antes que la suma. Sino la operación anterior podría considerarse de dos formas. Si la división se hace antes el resultado será 7, si la suma se hiciera antes el resultado sería 4.5. Si realmente nosotros quisiéramos que la suma se hiciera antes deberíamos indicarlo utilizando paréntesis -> x = (5+4)/2

Prioridad Operador Orden de cálculo
1 () Se calculan primero. Si hay paréntesis anidados, la expresión en el par más interno se evalúa primero. Si existe más de uno par “en el mismo nivel”, se calculan de izquierda a derecha.
2 *, /, % Se evalúan en segundo lugar. Si hay más de una, se calculan de izquierda a derecha.
3 +, - Se evalúan en último lugar. Si hay más de una, se calculan de izquierda a derecha.

 

Pin It