Story Transcript
Lenguaje C Elementos de un Programa Ing. Hugo Fdo. Velasco Peña Universidad Nacional © 2006
Objetivos
Conocer los elementos que conforman un programa en C
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 mayusculas No pueden ser palabras reservadas
1.1. Identificadores
Ejemplos:
Nombre cuenta1
i cuenta2
cantidad_total
Los siguientes identificadores son distintos: Fecha fecha
1.2. Palabras Reservadas Llamadas tambien keyword Son palabras que el lenguaje C asocia con un significado especial. No pueden ser utilizadas como nombre de identificadores o funciones
1.2. Palabras reservadas asm double long switch auto else register union break enum return unsigned case extern short void char float signed volatile const for sizeof while continue goto static default if struct do int typedef En rojo están los especificadores de tipo de dato En azul los modificadores de tipo de dato
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 notas Autor: 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.
Espacios en blanco Tabulación Retornos de carro Avance de línea
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. Variables
Para 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.
= ;
Se puede declarar varias variables en una sola línea
, , ;
2.1. Variables
Ejemplos: int i = 1; double a;
/*declarada y definida*/ /*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 int mi_edad; int main() { printf(“¿Cuál es mi edad?”); scanf(“%d”,&mi_edad); }
#include int main() { int mi_edad; printf(“¿Cuál es mi edad?”); scanf(“%d”,&mi_edad); }
2.1. Variables
Incorrecto: Al final del bloque
#include int main() { printf(“¿Cuál es mi edad?”); scanf(“%d”,&mi_edad); int mi_edad; }
No recomendado En mitad del bloque
#include 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: Globales Locales 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 Local
Ejemplo: #include 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 enteros B. números reales C. 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. Tipo C
int
Rango -32768 … +32767
unsigned int 0 … 65535 short int -128 … 127 short unsigned short int 0 … 255 unsigned short A: Aritmética de enteros B: Ciclos C: Conteos I: Índices
Uso A, B, C B, C, I A, B, C A, B, C, I
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. Base 10 Decimal 8 10 16
Base 16 Hexadecimal 0x8 0xA 0x10
Base 8 Octal 010 012 020
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. Tipo C
Rango
long long int unsigned long unsigned long int
-2147483648 … 2147483647 0 … 4294967295
2.2.1. Números Enteros
Ejemplos long cedula = 79912345L; unsigned long distancia;
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;
Tipo C
Rango
Precisión Bytes
float
3.4×10 -38…3.4×1038
7 dígitos
4
double
1.7×10-38…3.4×1038
15 dígitos
8
long double 3.4×10-4932…3.4×104932 19 dígitos
10
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. Caracteres
Por 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 Altos
Además de los caracteres imprimibles de los ASCII estándar, se puede requerir de caracteres que no tiene el teclado.
Ejemplo El 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 Código de escape
Significado
Código ASCII Hex
\n
Nueva línea
0A
\r
Retorno de carro
0D
\t
Tabulación
09
\v
Tabulación vertical
0B
\a
Alerta (pitido sonoro)
07
\b
Retroceso de espacio
08
\f
Avance de pagina
0C
\\
Barra inclinada inversa
5C
\’
Comilla simple
27
\”
Doble comilla
22
\?
Signo de interrogación
3F
\xhh
Número hexadecimal
Todos
2.2.3.2. Códigos de Escape
Ejemplo #include 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 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; }
Ejercicios
Probar el siguiente programa: #include main() { float cels, farh; farh = 35.0; cels = 5.0 * ( farh - 32.0 ) / 9.0; printf(">>> %f F son %f C\n", farh, cels ); }
Trabajo Extraclase Complete el programa anterior para convertir a grados Kelvin. Hacer un programa que calcule el rango de los un tipo de entero con signo que abarque 3 Bytes y muestre este rango en pantalla.