Skip to content

Sintaxis del lenguaje C

Guillermo-SP edited this page Nov 22, 2012 · 5 revisions

La sintaxis de un lenguaje de programación es el conjunto de reglas que debemos seguir para que el compilador sea capaz de reconocer nuestro programa como un programa C válido.

Tipos, operadores y expresiones

Identificadores: Formados por letras, números y '_'. Los primeros 31 caracteres son significativos (dependiente del compilador). Las mayúsculas y las minúsculas se distinguen (case sensitive). Las palabras reservadas van en minúsculas

Tipos de datos:

Simples:

 Caracter:
      char -> 1 byte
 Entero:
      int Normalmente refleja el tamaño de los enteros en la máquina host
      short [int] -> 16 bits
      long [int] -> 32 bits
 Real: 
      float Los tamaños son dependientes de la implementación.
      double -> Precisión doble
      long double -> Precisión extendida

Complejos: enumeraciones, arreglos, estructuras y uniones.

Declaraciones:

Todas las variables deben declararse antes de usarse. Una declaración especifica un tipo seguido de una lista no vacía de variables de ese tipo (separadas por comas).

Ejemplo:

float f1, f2;
int i = 1; /* Inicializada al definirla */

Enumeraciones:

enum <nombre> {<enumeradores>}

Ejemplos:

enum boolean {false, true} false vale 0, (por defecto) y true vale 1
enum semana {Lun=1, Mar, Mie, Jue, Vie, Sab, Dom}
enum constantes {nl = '\n', cr = '\r'}

Arreglos:

<tipo> <nombre>[<#elem>].

Ejemplo:

char nombre[30];

arreglo de 30 caracteres- posiciones del 0 al 29.

Estructuras:

struct <nombre> {declaración de los elementos}

Ejemplo:

struct círculo{
int radio;
int x,y; /* Coordenadas del centro */ } circ;

Acceso a los campos a través del operador de proyección '.' circ.radio, circ.x, circ.y

Declaración de nuevos tipos:

typedef <declaración del que será sinónimo> <nuevo nombre>

Ejemplo:

typedef struct s_emp{
char nombre[30];
float sueldo;
int dpto; } empleado;

Constantes:

#define <nombre> <valor>

El #define es una directiva para el compilador que indica que se reemplazará <nombre> por <valor> en el texto.

Ejemplos:

#define MAX_ELEMS 50

Operadores:

Asignación:

=

Casting: operador que obliga a la conversión a un tipo dado:

f = (float) i; /* i no se ve alterado */

Conversiones de tipo:

f = i; /* no hace falta el cast */
i = f; /* se trunca f */

Aritméticos:

+, -, *, /, %, ++, - -, +=, -=.

Hablar de la diferencia entre el pre y el post-decremento i++ vs. ++i

Relacionales:

>, >=, <, <=, ==, !=.

Lógicos:

&&, ||, &, |, !.

Ejemplos:

a && b -> a y b
a || b -> a ó b
!p -> no p

Estructuras de control

Son expresiones seguidas por punto y coma (;). Las llaves son utilizadas para agrupar instrucciones en bloques, que sintácticamente equivalen a una instrucción.

Condicionales:

if_else:

if (cond) inst1
[else inst2]

switch:

switch (exp)
    { case val1: inst1
        ...
      case valn: instn
      [default: instn+1]
    }

Para romper el flujo de control dentro del bloque insti se utiliza la instrucción break.

Ciclos:

while

while (exp)
   inst;

for

for (exp1; exp2; exp3)
   inst;

do_while:

do
   inst;
while (cond);

Funciones

En C no existen procedimientos, sólo hay funciones. Los procedimientos pueden ser simulados por medio de funciones que no retornan ningún valor.

<tipo ret> <nombre>(<parámetros>)
{ declaraciones;
  instrucciones;
}

donde <tipo ret> es el tipo de valor que devuelve la función (por defecto int). Para indicar que no se devuelve nada se coloca void. <parámetros> es una lista de elementos: <tipo nombre>, separados por comas. Para devolver el valor se tiene la instrucción return <exp>. No se pueden devolver estructuras complejas.

Bibliografía

Resumen de Sintaxis en C: http://ldc.usb.ve/~vtheok/cursos/ci2125/material/ResumenLenguajeC.pdf