-
Notifications
You must be signed in to change notification settings - Fork 1
Sintaxis del lenguaje C
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.
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
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.
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;
#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
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
Son expresiones seguidas por punto y coma (;). Las llaves son utilizadas para agrupar instrucciones en bloques, que sintácticamente equivalen a una instrucción.
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.
while
while (exp)
inst;
for
for (exp1; exp2; exp3)
inst;
do_while:
do
inst;
while (cond);
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.
Resumen de Sintaxis en C: http://ldc.usb.ve/~vtheok/cursos/ci2125/material/ResumenLenguajeC.pdf