Universidad Tecnol贸gica La Salle Le贸n, Nicaragua
Lenguaje de Programaci贸n I Docente: Ing. Carolina Robelo ing.carolina.robelo@gmail.com
Unidad II: Elementos del Lenguaje
C
Secuencias de Escape En C algunos caracteres no son directamente imprimibles, por lo que para utilizarlos en un programa es necesario un mecanismo especial. Puede usarse el código ASCII asociado al carácter. Pueden usarse secuencias de escape especiales. • Son utilizadas para visualizar caracteres que no estan representados por simbolos tradicionales.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Secuencias de Escape Una secuencia de escape siempre comienza con una barra inclinada hacia atrás y es seguida por uno o más caracteres especiales.
Una secuencia de escape siempre representa un solo caracter, aun cuando se escriba con dos o más caracteres. Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Tipos de Datos en C C ofrece distintos tipos de datos, cada uno de los cuales se puede encontrar representado de forma diferente en la memoria de la computadora. Los requisitos de memoria para cada tipo de datos pueden variar de un compilador de C a otro.
Tipo de Datos
Descripción
Requisito de Memoria
int
Cantidad entera
2 bytes
char
Caracter
1 byte
float
Número en coma flotante (Real, un número que punto decimal )
4 bytes
double
Número en coma flotante de doble precisión (más cifras significativas y mayor valor posible de la parte entera)
Universidad Tecnológica La Salle
incluye
8 bytes
Ing. Carolina V. Robelo J.
Tipos de Datos en C Variaciones de tipos de datos (permiten un uso más eficiente de los tipos de datos) Short (corto) Long (largo) Signed (con signo) Unsigned (sin signo). Por ejemplo short int, long int o unsigned int (estos tipos de datos se suelen escribir simplemente short, long o unsigned, y se supone que son enteros). long float o long double. Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Declaraciones Una declaración asocia un tipo de datos especificado a un grupo de variables. Se deben declarar todas las variables antes de que aparezcan en las instrucciones ejecutables. Una declaración consta de un tipo de datos, seguido de uno o más nombres de variables, finalizando con un punto y coma.
Cada variable array debe ir seguida de un par de corchetes, con un entero positivo dentro de éstos que especifica el tamaño (el número de elementos) del array. Ej: char texto[80]; Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Declaración de Variables A una variable se le pueden asignar diferentes valores en distintas partes del programa. De esta forma la información representada puede cambiar durante la ejecución del programa. Sin embargo, el tipo de datos asociado a la variable no puede cambiar. Declaracion Escribimos primero el tipo de dato y a continuación el nombre de la variable. Si se desea dar un valor inicial a la variable, éste se pone a continuación. <tipo de dato> <nombre de variable> = <valor inicial> <tipo de dato> <nomb-var1>, <nomb-var2> . . . <nomb-varN> Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Declaración de Variables Ejemplos int longitud; int valor = 10; int x1, x2; int num=12, n= 20; long medida; unsigned long distancia_media; float f; float x,y; float n=99.9; char dato; char letra= ‘a’; Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Declaración de Variables Es necesario declarar las variables antes de utilizarlas. Se pueden declarar al principio de un archivo o bloque de código o al principio de una función.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Declaraci贸n de Variables
Universidad Tecnol贸gica La Salle
Ing. Carolina V. Robelo J.
Ejemplo Sencillo en C /* Distancia a la luna en kilometros */ #include <stdio.h> #define luna 238857 /* distancia en millas */
main () { float luna_km; printf("Distancia a la luna %d millas\n", luna); luna_km= luna * 1.609; /* una milla = 1.609 kilometros */ printf("En kilometros es %f km\n", luna_km); getch(); /*instruccion esperar a que el usuario presione una tecla para saltar a la siguiente instruccion o finalizar el programa si es que ya no quedan sentencias */ }
Universidad Tecnol贸gica La Salle
Ing. Carolina V. Robelo J.
Declaración de Variables En C las declaraciones se han de situar siempre al principio del bloque. Su ámbito es el bloque en el que están declaradas. Ejemplo: #include <stdio.h> /* Diferentes declaraciones */ main() { int x, y1; /* declarar a las variables x y1 en la función main() */ x = 75; y1 = 89; if (x > 10) { int y2 = 50; /* declara e inicializa a la variable y2 en el bloque if */ y1 = y1+y2; } printf("x = %d, y1 = %d\n",x,y1); getch();
} Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Duración De Una Variable Dependiendo del lugar donde se definan las variables de C, éstas se pueden utilizar en la totalidad del programa, dentro de una función o pueden existir sólo temporalmente dentro de un bloque de una función. La zona de un programa en la que una variable está activa se denomina, normalmente, ámbito o alcance. De acuerdo al ámbito de una variable los tipos básicos de variables en C son: Variables Locales Variables Globales Variables Dinámicas
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Variables Locales Las variables locales son aquéllas definidas en el interior de una función y son visibles sólo en esa función específica. Las reglas por las que se rigen las variables locales son: En el interior de una función, una variable local no puede ser modificada por ninguna sentencia externa a la función. Los nombres de las variables locales no han de ser únicos.
Las variables locales de las funciones no existen en memoria hasta que se ejecuta la función. Se llaman también automáticas o auto, ya que dichas variables se crean automáticamente en la entrada a la función y se liberan también automáticamente cuando se termina la ejecución de la función. Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Variables Locales Ejemplo
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Variables Globales Las variables globales son variables que se declaran fuera de la función y por defecto (omisión) son visibles a cualquier función, incluyendo main().
Todas las variables locales desaparecen cuando termina su bloque. Una variable global es visible desde el punto en que se define hasta el final del programa (codigo fuente). Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Variables Globales La memoria asignada a una variable global permanece asignada a través de la ejecución del programa, tomando espacio válido según se utilice. Por esta razón, se debe evitar utilizar muchas variables globales dentro de un programa. Otro problema que surge con variables globales es que una función puede asignar un valor específico a una variable global. Posteriormente, en otra función, y por olvido, se pueden hacer cambios en la misma variable. Estos cambios dificultarán la localización de errores.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Variables Dinámicas Las variables dinámicas tienen características que en algunos casos son similares tanto a variables locales como a globales. Una variable dinámica se crea y libera durante la ejecución del programa. La diferencia entre una variable local y una variable dinámica es que la variable dinámica se crea tras su petición (en vez de automáticamente, como las variables locales). Se libera cuando no se necesita.
Se pueden crear variables dinámicas que son accesibles desde múltiples funciones. Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Constantes Constantes definidas (simbólicas) Las constantes pueden recibir nombres simbólicos mediante la directiva #define.
Constantes declaradas const El cualificador const permite dar nombres simbólicos a constantes. Especifica que el valor de una variable no se puede modificar durante el programa.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Diferencias entre const y #define Las definiciones const especifican tipos de datos, terminan con puntos y coma, y se inicializan como las variables. La directiva #define no especifica tipos de datos, no utilizan el operador de asignación (=) y no termina con punto y coma.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Ventajas de const sobre #define El compilador, normalmente, genera código más eficiente con constantes const.
Como las definiciones especifican tipos de datos, el compilador puede comprobar inmediatamente si las constantes literales en las definiciones de const están en forma correcta. Con #define el compilador no puede realizar pruebas similares hasta que una sentencia utiliza el identificador constante, por lo que se hace más difícil la detección de errores. Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Desventaja de const sobre #define
Los valores de los símbolos de const ocupan espacio de datos en tiempo de ejecución, mientras que #define sólo existe en el texto del programa y su valor se inserta directamente en el código compilado.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
OPERADORES Y EXPRESIONES OPERADOR DE ASIGNACIÓN El operador = asigna el valor de la expresión derecha a la variable situada a su izquierda. Símbolo
Abreviada
No Abreviada
=
a = b;
*=
a *= b;
a = a * b;
/=
a /= b;
a = a / b;
%=
a %= b;
a = a % b;
+=
a += b;
a = a + b;
-=
a -= b;
a = a - b;
Estos operadores de asignación no siempre se utilizan, aunque algunos programadores C se acostumbran a su empleo por el ahorro de escritura. Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
OPERADORES Y EXPRESIONES OPERADORES DE INCREMENTACIÓN Y DECREMENTACIÓN Incrementación
Decrementación
++n;
--n;
n+=1;
n-=1;
n=n+1;
n=n-1
Estos operadores tienen la propiedad de que pueden utilizarse como sufijo o prefijo, el resultado de la expresión puede ser distinto, dependiendo del contexto
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
OPERADORES DE INCREMENTACIÓN Y DECREMENTACIÓN Las sentencias ++n; n++; Tienen el mismo efecto, asi como --n; n--; Sin embargo, cuando se utilizan como expresiones los resultados son diferentes. Si los operadores ++ y -- están de prefijos, la operación de incremento o decremento se efectúa antes que la operación de asignación Si los operadores ++ y -- están de sufijos, la asignación se efectúa en primer lugar y la incrementación o decrementación a continuación. Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
OPERADORES DE INCREMENTACIÓN Y DECREMENTACIÓN
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
OPERADORES DE INCREMENTACIÓN Y DECREMENTACIÓN Ejemplo: Demostración del funcionamiento de los operadores de incremento/decremento #include <stdio.h> main( ) { int m = 45, n = 75; printf(" m = %d, n = %d\n",m,n); ++m; --n; printf(" m = %d, n = %d\n",m,n); m++; n--; printf( " m = %d, n = %d\n",m,n); getch(); } Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
OPERADORES DE INCREMENTACIÓN Y DECREMENTACIÓN Diferencias entre operadores de preincremento y postincremento. #include <stdio.h> /* Test de operadores ++ y -- */ main() { int m = 99, n; n = ++m; printf("m = %d, n = %d\n",m,n); n = m++; printf("m = %d, n = %d\n",m,n); printf("m = %d \n",m++); printf ("m = %d \n",++m); getch(); } Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Operador COMA El operador coma permite combinar dos o más expresiones separadas por comas en una sola línea. Se evalúa primero la expresión de la izquierda y luego las restantes expresiones de izquierda a derecha.
expresión , expresión , expresión , . . . , expresión
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
El operador ( ) ( ) es el operador de llamada a funciones. Sirve para encerrar los argumentos de una función. Efectuar conversiones explícitas de tipo. Indicar en una declaración que un identificador corresponde a una función. Resolver los conflictos de prioridad entre operadores.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
El operador []
Sirve para dimensionar los arrays designar un elemento de un array.
Universidad Tecnológica La Salle
y
Ing. Carolina V. Robelo J.
EL OPERADOR SIZEOF Con frecuencia un programa necesita conocer el tamaño en bytes de un tipo de dato o variable. C proporciona el operador sizeof , que toma un argumento, bien un tipo de dato o bien el nombre de una variable.
sizeof (nombre-variabl e) sizeof(tipo-dato) sizeof(expresión)
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
EL OPERADOR SIZEOF Ejemplo Suponga que se desea conocer el tamaño, en bytes, de variables de coma flotantey de doble precision de su computadora. El siguiente programa realiza esta tarea:
#include <stdio.h> main() { printf("El tamano de variables de coma flotante es %d \n", sizeof(float)); printf("El tamano de variables de doble precision es %d \n", sizeof(double)); getch(); }
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
CONVERSIONES DE TIPOS Convertir un valor de un tipo a otro sin cambiar el valor que representa
Implícitas (ejecutadas automáticamente) Explícitas (solicitadas específicamente por el programador).
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Conversión implícita Los tipos fundamentales (básicos) pueden ser mezclados libremente en asignaciones y expresiones. Las conversiones se ejecutan automáticamente: los operandos de tipo más bajo se convierten en los de tipo más alto.
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Conversión explícita cast C fuerza la conversión explícita de tipos mediante el operador cast, que tiene el siguiente formato
Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.
Actividad en Clase Escribir un programa que imprima la letra B con asteriscos.
Escribir y ejecutar un programa que imprima su nombre y carrera (constantes definas con define). Mostrar en pantalla la siguiente información con este formato: Ingenierias:
Universidad Tecnológica La Salle
Universidad La Salle Cibernetica Mecanica Mecatronica Industrial Ing. Carolina V. Robelo J.
Actividad en Clase Realiza un programa con declaración global de variables, que visualice tu nombre y numero de carnet. Realizar un programa que nos calcule la distancia recorrido por un móvil con velocidad uniforme durante un tiempo determinado. Considerar v=30km/h y t=5. v=d/t. Declare 2 variables radio y altura de un recipiente cilindrico, asígneles un valor inicial, y luego determine el volumen en centímetros cúbicos que puede almacenar dicho recipiente. Pi declararla como una constante con const. V=pi*r^2*h Universidad Tecnológica La Salle
Ing. Carolina V. Robelo J.