Guia de Sintaxis
Guia de Sintaxis
Guia de Sintaxis
Latacunga-Ecuador
1
Guía de Sintaxis de Lenguaje C
1. Estructura de un Programa.
2. Primer programa en C.
3. Palabras reservadas en C.
5. Archivos de cabecera.
6. Comentarios.
7. Tipos de datos.
8. Variables.
9. Expresiones y operadores.
12. Funciones.
14. Cadenas.
15. Estructuras.
2
Estructura de un Programa.
La primera línea indica que se tengan en cuenta las funciones y tipos definidos en la biblioteca
stdio (standard input/output). Estas definiciones se encuentran en el fichero de encabezado
(header) stdio.h.
En la función main se incluye una primera sentencia que llama a la función printf. Ésta toma
como argumento (encerrado entre paréntesis) una cadena de caracteres limitados por dobles
comillas " " y la imprime en la salida habitual, que generalmente es el terminal en el que
trabajamos. El símbolo \n indica un cambio de línea.
3
meses atrás. Para el compilador, los comentarios son inexistentes, por lo que no generan líneas de
código, permitiendo abundar en ellos tanto como se desee. En el lenguaje C se toma como
comentario todo carácter entre los símbolos: /* */.
Cada sentencia de programa queda finalizada por el terminador ";", que indica al compilador el
fin de la misma. Esto es necesario ya que sentencias complejas pueden llegar a tener más de un
renglón, y habrá que avisar al compilador donde terminan. Es perfectamente lícito escribir
cualquier sentencia abarcando los renglones que la misma necesite; por ejemplo podría ser:
printf("Bienvenido a la programación
en lenguaje C\n") ;
En general, un programa suele estar compuesto de tres partes:
• El encabezamiento, que especifica las declaraciones globales de los datos y sus tipos, que
vamos a manejar a lo largo del programa;
• La función principal, que se suele llamar main, y define la estructura del programa.
• Las funciones o subrutinas auxiliares, que realizan las operaciones necesarias; son
llamadas por la rutina principal, la función main. Se suelen colocar después de esta
función.
4
Primer Programa en C.
En particular en C se involucran muchas partes y sintaxis del lenguaje, por lo cual es especialmente
útil verlo como el primer ejemplo de programación en C.
Palabras Reservadas en C.
Las palabras reservadas son identificadores predefinidos (tienen un significado especial). En todos
los lenguajes de programación existe un conjunto de palabras reservadas.
El lenguaje C está formado por un conjunto pequeño de palabras clave (reservadas) o comandos
(keywords), y una serie de operadores. Hay cerca de 40 palabras clave, frente a las 150 del BASIC
o 200 que poseen otros lenguajes, como el COBOL y el PASCAL. Estas palabras son:
5
Directivas del Procesador.
Las siguientes directivas del preprocesador de lenguaje C se encuentran
disponibles:
Estas directivas son las siguientes: #define, #elif, #else, #endif, #error, #if,
#ifdef, #ifndef, #include, #message y #undef.
Sintaxis
Parámetros
6
Descripción
es similar a:
Directivas condicionales
Utilice las directivas #if ... #else ... #endif para controlar el proceso de
ensamblado. Si la condición que sigue a la directiva #if no es verdadera, las
siguientes instrucciones no generarán ningún código hasta que se encuentre una
directiva #endif o #else.
Los bloques #if ... #endif e #if ... #else ... #endif pueden estar anidados.
Visualización de errores
7
Definición de comentarios
Ejemplos
#define tweek 1
#define adjust 3
#ifdef tweek
#if adjust = 1
SUBI R16, 4
#elif adjust = 2
SUBI R16, 20
#elif adjust = 3
SUBI R16, 30
#endif
#endif /* ifdef tweek*/
El siguiente ejemplo utiliza #include para incluir un archivo que define macros
en un archivo fuente. Por ejemplo, las siguientes macros pueden definirse en
"macros.s90".
xch MACRO a, b
PUSH a
MOV a, b
POP b
ENDM
8
NAME include
; program
main: xch R16, R17
RET
END main
Archivos de Cabecera.
Comentarios.
Un “comentario” es una secuencia de caracteres que comienza con una combinación de barra
diagonal/asterisco (/*) que el compilador trata como un único carácter de espacio en blanco y se
pasa por alto de cualquier otra manera.
Los comentarios pueden aparecer en cualquier lugar en el que se permita un carácter de espacio
en blanco. Dado que el compilador trata un comentario como si fuese un único carácter de espacio
en blanco, no se pueden incluir comentarios dentro de tokens. El compilador omite los caracteres
del comentario.
9
Use comentarios para documentar el código. Este ejemplo es un comentario admitido por el
compilador:
Tipos de Datos.
Enteros
• “short” y “long”: Modifica el tamaño en bits del entero. Existen por tanto tres tipos de
enteros: “int”, “short int” (que se puede abreviar como “short”), y “long int” (que
se puede abreviar como “long”).
El lenguaje C no define tamaños fijos para sus tipos de datos básicos. Lo único que
garantiza es que un short int tiene un tamaño menor o igual que un int y este a su vez
un tamaño menor o igual a un long int. Esta característica del lenguaje ha complicado la
creación de programas que sean compatibles entre varias plataformas.
10
Variables.
Una variable es un objeto nombrado capaz de contener un dato que puede ser modificado durante
la ejecución de programa.
En C, las variables tienen tipo, que significa que es necesario especificar el tipo de dato que se le
asigna a una variable (int, float etc.). Las variables se almacenan en la memoria RAM y el espacio
de memoria que ocupan (en bytes) depende de su tipo.
Una constante tiene las mismas características que una variable excepto el hecho de que su valor
asignado no puede ser cambiado durante la ejecución de programa.
Expresiones y operadores.
Los operandos pueden ser nombres que denoten objetos variables o constantes, funciones,
literales de cualquier tipo adecuado de acuerdo con los operadores u otras expresiones más
simples. La evaluación de una expresión da lugar a un valor de algún tipo, una expresión
se dice que es del tipo de su resultado.
Ejemplos de expresiones:
11
Las expresiones se evalúan de acuerdo con la precedencia de los operadores. Ante una
secuencia de operadores de igual precedencia, la evaluación se realiza según el orden de
escritura, de izquierda a derecha. El orden de evaluación puede modificarse usando
paréntesis.
Operadores lógicos.
Están predefinidos para cualquier tipo, T, que designe un booleano, modular o un array
monodimensional de componentes booleanos:
Operadores relacionales.
Los operadores de igualdad están predefinidos para todos los tipos no limitados. Sea T un tipo con
estas características:
Los operadores de ordenación están predefinidos para todos los tipos escalares y los arrays de
elementos discretos. Sea T un tipo con estas características:
12
Existe también un operador de pertenencia ("in", "not in") que determina si un valor pertenece a
un rango o a un subtipo: if i in 1..10 then ...
if A = B then ...
C := (A <= B);
return (A >= B);
C := A + B;
return (A - B);
Los operadores unarios de adición predefinidos para cualquier tipo númerico, T, son la identidad
y la negación:
B := -A;
Cuando se aplica a un tipo modular, el operador de negación ("-") tiene el efecto de restar el
valor del operando, si es distinto de cero, al módulo. Si el valor del operando es cero, el resultado
es cero.
13
Operadores multiplicativos.
C := A * B;
return (A / B);
Los operadores módulo y resto están definidos para cualquier tipo entero, T:
La relación entre el resto y la división entera viene dada por la expresión: A = (A/B)*B + (A rem
B), donde (A rem B) tiene el mismo signo que A, y es menor que B en valor absoluto.
El operador módulo se define de manera que (A mod B) tiene el mismo signo que B, un valor
absoluto menor, y existe un número entero, N, tal que: A = B*N + (A mod B).
C := A rem B;
return (A mod B);
Los operadores de máxima prioridad son: el operador de cálculo del valor absoluto, definido para
cualquier tipo numérico, T1, el operador de negación lógica, definido para cualquier tipo
booleano, modular o array monodimensional de componentes booleanos, T 2, y el operador de
exponenciación, definido para cualquier tipo entero, T3, o para cualquier tipo real en coma
flotante, T4. Cada uno, de acuerdo con las siguientes especificaciones:
14
function "abs"(Right : T) return T
function "not"(Right : T) return T
function "**"(Left : T; Right : Natural) return T
function "**"(Left : T; Right : Integer'Base) return T
A := abs(B);
C := not D;
return (E ** 3); -- E elevado al cubo.
#include <stdio.h>
Función printf()
La función printf() imprime en la unidad de salida (el monitor, por defecto), el texto, y las
constantes y variables que se indiquen. La forma general de esta función se puede estudiar
viendo su prototipo :
Función scanf()
La función scanf() es análoga en muchos aspectos a printf() , y se utiliza para leer datos de la
entrada estándar (que por defecto es el teclado). La forma general de esta función es la siguiente:
Las macros 6 getchar() y putchar() permiten respectivamente leer e imprimir un sólo carácter
cada vez, en la entrada o en la salida estándar. La macro getchar() recoge un carácter
introducido por teclado y lo deja disponible como valor de retorno. La macro putchar() escribe
en la pantalla el carácter que se le pasa como argumento. Por ejemplo:
15
putchar('a');
escribe el carácter a . Esta sentencia equivale a printf("a");
Sentencias de Control.
Condicional if
La sentencia if («si») ejecuta las instrucciones sólo si se cumple una condición. Si la condición
es falsa, no se hace nada:
La sintaxis es la siguiente:
if condición:
sentencias
Condicional if-else
La sintaxis es la siguiente:
if condición:
qué hacer cuando la condición es verdadera
else
qué hacer cuando la condición es falsa
16
n = int(raw_input('Ingrese un numero: '))
if n % 2 == 0:
print 'El numero es par'
print 'La mitad del numero es', n / 2
else:
print 'El numero es impar'
print 'El sucesor del numero es', n + 1
print 'Listo'
La última sentencia no está indentada, por lo que no es parte del condicional, y será ejecutada
siempre.
Condicional if-elif-else
La sentencia if-elif-else depende de dos o más condiciones, que son evaluadas en orden. La
primera que es verdadera determina qué instrucciones serán ejecutadas:
La sintaxis es la siguiente:
if condición1:
qué hacer si condición1 es verdadera
elif condición2:
qué hacer si condición2 es verdadera
...
else:
qué hacer cuando ninguna de las
condiciones anteriores es verdadera
Por ejemplo, la tasa de impuesto a pagar por una persona según su sueldo puede estar dada por la
siguiente tabla:
menos de 1000 0%
17
sueldo = int(raw_input('Ingrese su sueldo: '))
if sueldo < 1000:
tasa = 0.00
elif sueldo < 2000:
tasa = 0.05
elif sueldo < 4000:
tasa = 0.10
else:
tasa = 0.12
print 'Usted debe pagar', tasa * sueldo, 'de impuesto'
Siempre sólo una de las alternativas será ejecutada. Apenas una de las condiciones es verdadera,
el resto de ellas no siguen siendo evaluadas.
Esta manera es menos clara, porque no es evidente a primera vista que sólo una de las
condiciones será verdadera.
Ciclo while
El ciclo while («mientras») ejecuta una secuencia de instrucciones mientras una condición sea
verdadera:
Cada una de las veces que el cuerpo del ciclo es ejecutado se llama iteración.
La sintaxis es la siguiente:
while condición:
18
sentencias
Por ejemplo, el siguiente programa multiplica dos números enteros sin usar el operador *:
m = int(raw_input())
n = int(raw_input())
p=0
while m > 0:
m=m-1
p=p+n
print 'El producto de m y n es', p
Para ver cómo funciona este programa, hagamos un ruteo con la entrada m = 4 y n = 7:
p m n
14
21
28
En cada iteración, el valor de m decrece en 1. Cuando llega a 0, la condición del while deja de
ser verdadera por lo que el ciclo termina. De este modo, se consigue que el resultado sea sumar
m veces el valor de n.
Note que el ciclo no termina apenas el valor de m pasa a ser cero. La condición es evaluada una
vez que la iteración completa ha terminado.
19
En general, el ciclo while se utiliza cuando no es posible saber de antemano cuántas veces será
ejecutado el ciclo, pero sí qué es lo que tiene que ocurrir para que se termine.
El ciclo for con rango ejecuta una secuencia de sentencias una cantidad fija de veces.
Para llevar la cuenta, utiliza una variable de control que toma valores distintos en cada
iteración.
En la primera iteración, la variable de control toma el valor 0. Al final de cada iteración, el valor
de la variable aumenta automáticamente. El ciclo termina justo antes que la variable tome el
valor fin.
Por ejemplo, el siguiente programa muestra los cubos de los números del 0 al 20:
for i in range(21):
print i, i ** 3
range(final)
range(inicial, final)
range(inicial, final, incremento)
El valor inicial siempre es parte del rango. El valor final nunca es parte del rango. El incremento
indica la diferencia entre dos valores consecutivos del rango.
range(9) 0, 1, 2, 3, 4, 5, 6, 7, 8
range(3, 13, 2) 3, 5, 7, 9, 11
20
range(11, 4, -1) 11, 10, 9, 8, 7, 6, 5
Usando un incremento negativo, es posible hacer ciclos que van hacia atrás:
En general, el ciclo for con rango se usa cuando el número de iteraciones es conocido antes de
entrar al ciclo.
Salir de un ciclo
Además de las condiciones de término propias de los ciclos while y for, siempre es posible salir
de un ciclo en medio de una iteración usando la sentencia break. Lo lógico es que sea usada
dentro de un if, para evitar que el ciclo termine prematuramente en la primera iteración:
es_primo = True
for d in range(2, n):
if n % d == 0:
es_primo = False
break
Saltar a la siguiente iteración
La sentencia continue se usa para saltar a la iteración siguiente sin llegar al final de la que está
en curso.
Por ejemplo, el siguiente programa muestra el seno, el coseno y la tangente de los números del 1
al 30, pero omitiendo los que terminan en 7:
21
Funciones.
Las funciones suelen encapsular una operación más o menos compleja de la que se deriva un
resultado. Para ejecutar esta operación, las funciones pueden precisar la invocación de otras
funciones (o incluso de ellas mismas como es el caso de las funciones recursivas).
Las funciones en un programa son entidades que dado un conjunto de datos (los parámetros), se
les encarga realizar una tarea muy concreta y se espera hasta obtener el resultado. Lo idóneo es
dividir tareas complejas en porciones más simples que se implementan como funciones. La
división y agrupación de tareas en funciones es uno de los aspectos más importantes en el diseño
de un programa.
1. Definición de funciones
Cuando se invoca una función se asignan valores a sus parámetros y comienza a ejecutar el
cuerpo hasta que se llega al final o se encuentra la instrucción return. Si la función devuelve un
resultado, esta instrucción debe ir seguida del dato a devolver. Por ejemplo:
La llamada a una función se codifica con su nombre seguido de los valores de los parámetros
separados por comas y rodeados por paréntesis. Si la función devuelve un resultado, la llamada
se reemplaza por su resultado en la expresión en la que se incluye. Por ejemplo:
22
1 int addition(int a, int b)
2 {
3 return (a + b);
4 }
5 int main()
6 {
7 int c;
8 c = c * addition(12, 32);
9 }
Estructura de Datos.
Las estructuras de datos nos permiten resolver un problema de manera más sencilla gracias a que
las reglas que las rigen nunca cambian, así que puedes asumir que ciertas cosas son siempre ciertas.
Cadenas.
Las cadenas de caracteres (también llamadas cadenas o strings) son un tipo particular de vectores,
que como su nombre lo dice son vectores de char, con la particularidad que tienen una marca en
el fin del (el caracter '\0'), además el lenguaje nos permite escribirlas como texto dentro de comillas
dobles si son simples no. Veamos unos ejemplos de su declaración:
Estructuras.
Definición de estructuras
Las estructuras son tipos de datos derivados están construidas utilizando objetos de otros tipos.
Considere la siguiente definición de estructura:
23
struct ejemplo
{
char c;
int i;
}
;
La palabra reservada struct indica se est ́a definiendo una estructura. El identificador ejemplo es
el nombre de la estructura. Las variables declaradas dentro de las llaves de la definici ́on de
estructura son los miembros de la estructura. Los miembros de la misma estructura deben tener
nombres ́unicos
mientras que dos estructuras diferentes pueden tener miembros con el mismo
nombre.
Cada definición de estructura debe terminar con un punto y coma.
La definición de struct ejemplo contiene un miembro de tipo char y otro
de tipo int.
Los miembros de una estructura pueden ser variables de los tipos
de datos básicos (int, char, float,etc) o agregados como ser arreglos y otras
estructuras. Una estructura no puede contener una instancia de si misma.
Declaramos variables del tipo estructura del siguiente modo:
struct ejemplo e1, a[10];
o alternativamente sin usar la palabra struct:
ejemplo e1, a[10];
Las declaraciones anteriores declaran variables e1 de tipo ejemplo y a de tipo
arreglo de ejemplo de dimensi ́on 10.
Se pueden declarar variables de tipo estructura ejemplo colocando sus nom-
bres a continuaci ́on de la llave de cierre de la definici ́on de estructura y el punto
y coma, en el caso anterior:
struct ejemplo
{
char c;
int i;
}
e1, a[10];
1
24
Bibliografía:
Fundamentos de programación: http://zacabag1.blogspot.com/. Recuperado el 19/06/2018.
Funciones de entrada y de salida: http://www.juntadeandalucia.es/averroes/centros-
tic/14005663/helvia/aula/archivos/repositorio/0/230/html/lenguajec/unidad8.htm. Recuperado el
19/06/2018.
Estructura en C: http://c.conclase.net/curso/?cap=011. Recuperado el 19/06/2018.
25