1. Elementos léxicos de un Programa
Cuando el programa es compilado el primer paso es realizar el “preprocesado”. Aquí el C obtiene una lista de Tokens (o elementos léxicos del programa).Estos son las palabras y/o caracteres que conforman el vocabulario de un programa.
1.1. Identificadores
Es una cadena de caracteres alfanuméricos, dígitos y subrayados “_”. El primer carácter siempre debe ser una letra. Algunos compiladores aceptan “_” al inicio y tambien aunque puede ser de cualquier longitud algunos solo toman los primeros 32.Son sensibles a las mayusculasNo pueden ser palabras reservadas
1.1. Identificadores
Ejemplos:
Nombre i cantidad_totalcuenta1 cuenta2
Los siguientes identificadores son distintos:Fecha fecha
1.2. Palabras Reservadas
Llamadas tambien keywordSon palabras que el lenguaje C asocia con un significado especial. No pueden ser utilizadas como nombre de identificadores o funciones
1.2. Palabras reservadas
typedefintdoEn rojo están los especificadores de tipo de datoEn azul los modificadores de tipo de dato
structifdefaultstaticgotocontinue
whilesizeofforconstvolatilesignedfloatcharvoidshortexterncaseunsignedreturnenumbreakunionregisterelseautoswitchlongdoubleasm
1.3. Comentarios
Los comentarios se encierran entre /* y */.Pueden extenderse a lo largo de varias líneas.
Ejemplos:/* Promedio de Notas. Autor: Mario Baracus */
/* Programa para promediar las notasAutor: Mario Baracus */
En C++ un comentario de una sola línea se comienza con //
1.4. Signos de puntuación
Toda sentencia debe acabar con un punto y coma “;”
“/.,?><:‘;\][~=+-)(*&^%!
1.5. Separadores
Son algunos caracteres que no son imprimibles a través de un símbolo.
Avance de líneaRetornos de carro
TabulaciónEspacios en blanco
2. Datos en C
Todos los datos que maneja un programa se almacenan en variables. Estas variables tienen un identificador arbitrario definido por el programador e invisible para el usuario del programa.Ni el resultado, ni la velocidad de cálculo ni la cantidad de memoria utilizada dependen del identificador de las variables.
2.1. VariablesPara declarar una variable en C se debe poner el tipo de dato y a continuación el nombre (identificador) de la variable. Si se desea dar un valor (definir) inicial a la variable, se debe poner a continuación.
<tipo de dato> <nombre de la variable> = <valor inicial>;
Se puede declarar varias variables en una sola línea
<tipo de dato> <nombre de la variable1>, <nombre de la variable2>, <nombre de la variablen>;
2.1. VariablesEjemplos:int i = 1; /*declarada y definida*/double a; /*declarada*/
int valor1, valor2;int mi_edad=26, mis_hijos=2;int mi_edad=26; int mis_hijos=2;
2.1. Variables
Las variables deben ser declaradas antes de utilizarlas.
Ejemplos Correctos:
#include <stdio.h> #include <stdio.h>int mi_edad; int main()int main() int mi_edad; printf(“¿Cuál es mi edad?”); printf(“¿Cuál es mi edad?”); scanf(“%d”,&mi_edad); scanf(“%d”,&mi_edad);
2.1. VariablesIncorrecto:Al final del bloque
#include <stdio.h> int main()printf(“¿Cuál es mi edad?”); scanf(“%d”,&mi_edad);int mi_edad;
No recomendadoEn mitad del bloque
#include <stdio.h> int main()printf(“¿Cuál es mi edad?”);int mi_edad; scanf(“%d”,&mi_edad);
2.1.1. Duración de una Variable
Dependiendo de donde se defina una variable, se puede utilizar en todo el programa, dentro de una función o temporalmente dentro de un bloque de una función.
Según su duración se clasifican en:GlobalesLocales Dinámicas
2.1.1.1. Variable Global
Se declaran fuera de las funciones donde se va a utilizar. Esto incluye la función main.Es visible desde el punto donde se define hasta el final del programa.Se utilizan para compartir información entre funciones. Pero por esto hay que tener cuidado de cambios indeseados en su valor.Se debe minimizar su uso.
2.1.1.2. Variable Local
Es aquella definida al interior de una función.Es visible solo al interior de la función donde se define.Su valor no puede ser modificado por una sentencia externa a la función.No existen en memoria hasta que se ejecuta la función.
2.1.1.2. Variable LocalEjemplo:#include <stdio.h>int a, b, c; /*declaración de variables globales*/
int main()
int valor; /*declaración de variable local*/
printf(“Tres valores: ”);scanf(“%d %d %d”,&a,&b,&c); valor = a+b+c;…
2.1.1.3. Variables Dinámicas
Estas variables son similares a las locales y a las globales.Se parecen en las locales en que se crean y se liberan durante la ejecución del programas. Pero son diferentes en que las dinámicas se crean tras su petición, no con la función.Se parecen a las globales en que se pueden crear para que sean visibles para múltiples funciones.
2.2. Tipos de datos en C
Los tipos de datos o variables definidos en C son tres:A. números enterosB. números realesC. caracteres
El lenguaje C trata a todos como si fueran números.
A pesar de ser solo estos se pueden crear tipos de datos personalizados.
2.2.1. Números Enteros
Los números enteros, positivos o negativos, se almacenan en variables de tipo int (comúnmente) o long.
Los enteros son útiles en aplicaciones que trabajen con datos numéricos que no posean parte fraccionaria.
2.2.1. Números Enteros Los números enteros int, aceptan modificadores para permitir un uso más eficiente del tipo de dato.
A: Aritmética de enterosB: Ciclos C: ConteosI: Índices
A, B, C-128 … 127short intshort
B, C, I0 … 65535unsigned int
A, B, C, I0 … 255unsigned short intunsigned short
A, B, C-32768 … +32767intUsoRangoTipo C
2.2.1. Números Enteros Ejemplo:La manera de declarar una variable llamada contador_1 es escribir la siguiente línea:
int contador_1;
Una vez declarada la variable se puede almacenar en ella cualquier valor entero que se encuentre dentro del rango del tipo int. Por ejemplo, en la variable contador_1 se puede almacenar el valor 123, pero no el valor 54196412 por no estar en el rango permitido, ni 7,4 por ser un número real.
2.2.1. Números Enteros
Los números pueden ser escritos en formato decimal, octal o hexadecimal.
0200x10160120xA100100x88
Base 8Octal
Base 16Hexadecimal
Base 10Decimal
2.2.1. Números Enteros
Cuando el rango de los números enteros int no cubre las necesidades se recurre a los enteros largos long.
0 … 4294967295unsigned long
unsigned long int
-2147483648 …2147483647
longlong int
RangoTipo C
2.2.2. Números Reales
Los números reales se almacenan en variables de tipo float o de tipo double.
Los números reales son útiles en aplicaciones que trabajen con datos numéricos que posean parte fraccionaria o decimal.
2.2.2. Números Reales
La manera de declarar variables de estos tipos es análoga al caso de variables enteras:
float x;double z;
1019 dígitos3.4×10-4932…3.4×104932long double815 dígitos1.7×10-38…3.4×1038double47 dígitos3.4×10 -38…3.4×1038float
BytesPrecisiónRangoTipo C
2.2.3. Caracteres
Un carácter es una letra, un digito, un signo de puntuación o en general cualquier símbolo que puede escribirse en pantalla o en una impresora. Se almacena en una variable tipo char.
La manera de declarar la variable dato como tipo char es la siguiente:
char dato;char dato = ‘e’;
2.2.3. Caracteres
Los caracteres se almacenan como números.
Así,char c_1 = ‘A’;char c_1 = 65;son sentencias equivalentes.
c_1 = c_1 + 32; /*convierte ‘a’=65 en ‘A’=97*/
2.2.3. CaracteresPor otro lado caracteres de dígitos son iguales al digito + 0x30. Así,
char c_1 = ‘5’;
equivale a char c_1 = 53;
pero NO equivale a char c_1 = 5;
2.2.3.1. ASCII AltosAdemás de los caracteres imprimibles de los ASCII estándar, se puede requerir de caracteres que no tiene el teclado.
EjemploEl simbolo “Ω” se representa mediante el prefijo \x y el número hexadecimal del código ASCII. En este caso 0xEA
char ohms = ‘\xEA’;
2.2.3.2. Códigos de Escape
Los códigos de escape se utilizan para imprimir algunos caracteres que pueden cumplir ciertas acciones, y que no necesariamente se representan o imprimen con un símbolo. También para imprimir caracteres que cumplen un significado especial en C.
Los códigos de escape deben ir precedidos del la barra oblicua “\”
2.2.3.2. Códigos de Escape
3FSigno de interrogación\?TodosNúmero hexadecimal\xhh
22Doble comilla\”27Comilla simple\’5CBarra inclinada inversa\\0CAvance de pagina\f08Retroceso de espacio\b07Alerta (pitido sonoro)\a0BTabulación vertical\v09Tabulación\t0DRetorno de carro\r0ANueva línea\n
Código ASCII HexSignificadoCódigo de escape
2.2.3.2. Códigos de EscapeEjemplo
#include <stdio.h>int main()
char alarma = ‘\a’;char bs = ‘\b’;printf(“%c %c”, alarma, bs);return 0;
Ejercicios/* Programa que multiplica dos números enteros y muestra el
resultado por pantalla */#include <stdio.h>int main( )
int multiplicador; /* se define multiplicador como un entero */int multiplicando; /*se define multiplicando como un entero */int res; /* se define resultado como un entero*/multiplicador =1000; /* se les asigna valores*/multiplicando=2;res=multiplicador*multiplicando;printf("Resultado = %d",res); /*muestro resultado en pantalla*/return 0;
EjerciciosProbar el siguiente programa:
#include <stdio.h>main()
float cels, farh;farh = 35.0;cels = 5.0 * ( farh - 32.0 ) / 9.0;printf(">>> %f F son %f C\n", farh, cels );