4 Elementos de un programa - docentes.unal.edu.co€¦ · 1. Elementos léxicos de un Programa...

39
Lenguaje C Elementos de un Programa Ing. Hugo Fdo. Velasco Peña Universidad Nacional © 2006

Transcript of 4 Elementos de un programa - docentes.unal.edu.co€¦ · 1. Elementos léxicos de un Programa...

Lenguaje CElementos de un Programa

Ing. Hugo Fdo. Velasco PeñaUniversidad 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 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.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;

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 );

Trabajo ExtraclaseComplete 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.