Programación – Unidad 2 Descripción de un Programa · 1990 fue ratificado como estándar ISO....
Transcript of Programación – Unidad 2 Descripción de un Programa · 1990 fue ratificado como estándar ISO....
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
1
Descripciónde un
Programa
Programación – Unidad 2
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
2
El Lenguaje C (1)El lenguaje C fue creado en 1972 por Ken L. Thompson yDennis M. Ritchie en los Laboratorios Bell.
Es evolución de un lenguaje más antiguo: B (a su vezbasado en BCPL). A su vez, hay otros lenguajes popularesque derivan de él (como el C++) o se inspiran en él (comoel JAVA).
Aunque no fue estandarizado hasta 1989 (ANSI C) y en1990 fue ratificado como estándar ISO.
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
33
El Lenguaje C (2)Es uno de los lenguajes de programación más utilizados .
Inicialmente muy utilizado para desarrollar sistemasoperativos. Por ejemplo, Linux está desarrollado en C.
Se ha usado de manera intensiva también en entornoscientíficos. Junto con el FORTRAN ha sido posiblementeel lenguaje de programación más popular.
Existen multitud de librerías científicas con las funcionesmás interesantes ya codificadas.
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
444
El Lenguaje C (3)Es un lenguaje imperativo estructurado que poseeestructuras de alto nivel, pero que también permiteprogramación de bajo nivel.
Algunos de sus detalles son:
Case sensitive: No son iguales mayúsculas que minúsculas
No hay diferencias entre espacios en blanco y saltos delínea.
Las instrucciones se separan con un punto y coma (;).
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
5
Genealogía del Lenguaje C
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
6
El Modelo de Compilación de C
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
77
Estructura General de un Programa
#include <stdio.h>
main(){
printf(“!Hola Mundo!\n”);getch();
}
Librería para entrada y salida
Sentencia de salida
Espera una tecla
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
8888
Declaración de VariablesLas variables permiten almacenar valores de diferentestipos. Sus características son:
nombre: un identificador válidotipo: int, float, double, char, etc.valor: el valor almacenado
En C es necesario definir todas las variables que seutilicen, con la siguiente sintaxis: tipo var;
Por ejemplo: int a, b, c; float r, s;
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
99999
Tipos de Datos NuméricosTipo Longitud Rango
unsigned char 8 bits 0 a 255
char 8 bits -128 a 127
enum 16 bits -32.768 a 32.767
unsigned int 16 bits 0 a 65.535
short int 16 bits -32.768 a 32.767
int 16 bits -32.768 a 32.767
unsigned long 32 bits 0 a 4.294.967,295
long 32 bits -2.147.483.648 a 2.147.483.647
float 32 bits 3,4*(10^-38) a 3,4*(10^+38)
double 64 bits 1,7*(10^-308) a 1,7*(10^+308)
long double 80 bits 3,4*(10^-4932) a 1,1*(10^+4932)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
101010
Sensible a mayúsculas/minúsculas Se distingue entre mayúsculas y minúsculas (case
sensitive en inglés).
Los identificadores Pepito, pepito y PEPITO son
diferentes.
Todas las palabras reservadas del lenguaje van en
minúsculas.
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
111111
ComentariosExisten dos formas de introducir comentarios:
1) Comentario de una línea:// Comentario de una línea
2) Comentario en una o más líneas:/* Comentario
de más
de una línea
*/
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
1212
La disposición de los elementos dentro del código es libre.
• Sentencias: Línea simple de código terminada en ;.x = y + z + w;
• Bloque de código: Conjunto de sentencias agrupadasentre llaves.
{x = x + y;c = c +1;
}
Lenguaje de Formato Libre
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
1313
• Variables: Zona de memoria cuyos valores van acambiar durante la ejecución del programa.
Declaración:<tipo> <identificador>; ó
<tipo> <identificador>, <identificador>;
Por ejemplo:int a, b, c;float x,y;
Variables
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
141414
• Una constante es una zona de memoria cuyos valoresno varían durante la ejecución del programa.
• Las constantes simbólicas favorecen la realización demodificaciones en los programas (Modificabilidad).
Declaración:
#define <identificador> = <valor>; ó
Por ejemplo:#define PI = 3.1416;
Constantes Simbólicas
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
15
auto break case char
continue default do double
else enum extern float
for goto if imt
long register return short
sizeof static struct switch
typedef union unsigned void
while
Palabras Reservadas
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
16
• Se utiliza el operador de asignación =:<variable> = <expresión>;
• La parte izquierda siempre debe ser una variable.
• La parte derecha puede ser un literal, una variable, unafunción o una combinación de todos.
• Se puede asignar un valor a una variable en el momentode declararla. Por ejemplo:
int s = 0;
Asignación de Variables
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
17
Operadores (1)• Operadores unarios: + , –
• Operadores aritméticos: +, –, *, /, % (resto de ladivisión entera)
• Operadores de asignación: =, +=, *=, /=, %=
<var> += <expresión> <var> = <var> + <expresión>
• Por ejemplo:
• x += 3; x = x + 3;
• y *= 5; y = y * 5;
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
1818
• Operadores incrementales: ++, ––
Precediendo a la variable: ++<var> , --<var> Siguiendo a la variable: <var>++ , <var>-- Por ejemplo:
• {i=1;j=i++;} i=1;j=i;i=i+1; ≡ i=2,j=1
• {i=1;j=++i;} i=1;i=i+1;j=i; ≡ i=2,j=2
• {x = ((++z ) – (w--) % 100 ;} equivale a:
{z = z+1; x= (z – w) % 100 ; w = w – 1;}
Operadores (2)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
19
• Operadores relacionales: == (igual), != (distinto),> (mayor que), < (menor que), >= (mayor ó igual que),<= (menor ó igual que).
• Operadores lógicos: && (AND) || (OR) ! (NOT) & (AND bit a bit) | (OR bit a bit)
Operadores (3)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
2020
Operadores (4)• Operadores condicional:
<exp1> ? <exp2> : <exp3>;
• Se evalúa como <exp2> si <exp1> es cierto ó como <exp2> en caso contrario. Por ejemplo:
x = (y > 10) ? z + 1 : 30;
equivale a:
si (y > 10) entonces x ← z + 1
sino x ← 30
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
2121
La biblioteca math.h contiene la definición de variasfunciones matemáticas útiles. Algunas de ellas son lassiguientes:
• ceil(x): Redondea al entero más pequeño no menorque x.
• cos(x): Coseno de x.
• exp(x): ex.
• fabs(x): Valor absoluto de x.
Funciones Matemáticas (1)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
222222
• floor(x): Redondea al entero más grande no mayorque x.
• log(x): Logaritmo natural de x.
• log10(x): Logaritmo base 10 de x.
• pow(x,y): xy.
• sin(x): Seno de x.
• sqrt(x): Raíz cuadrada de x.
• tan(x): Tangente de x.
Funciones Matemáticas (2)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
23
La función scanf(), disponible al incluir stdio.h, permiteleer datos por teclado. La función scanf se usa de un modosimilar a printf: su primer argumento es una cadena cuyamarca de formato indica de que tipo es el valor que vamosa leer, y a éste le siguen la dirección de memoria en dondese almacenará el valor leído.
La forma general de utilizarla es la siguiente:
scanf(cadena_de_formato, &<variable>);
Entrada Estándar (1)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
24
Observemos que la variable cuyo valor se lee por tecladova obligatoriamente precedida por el operador &: es asícomo se obtiene la dirección de memoria en la que sealmacena el valor de la variable.Por ejemplo, la sentencia de lectura:
scanf("%d", &x);
Lee un valor entero y lo deposita en la dirección dememoria en donde se encuentra la variable x.
Entrada Estándar (2)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
2525
La función printf() (de “print” = imprimir y “f” = formato)sirve para escribir datos en el dispositivo de salidaestándar (generalmente la pantalla) con un formatodeterminado por el programador. La forma general deutilizarla es la siguiente:
printf(cadena_de_formato, <variables>);
El primer argumento especifica el modo en el que sedeben mostrar los datos que aparecen a continuación.
Salida Estándar (1)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
262626
Esta cadena se compone de una serie de códigos deformato que indican a C qué tipo de datos son los que sedesean imprimir. Todos los códigos están precedidos delsímbolo de porcentaje (%). Por ejemplo, el código %dindica a la función que se desea escribir un número detipo int, y el código %f, que se desea escribir un númeroreal de tipo float. Por ejemplo:
printf("%d \t %d \n",a,b);
Salida Estándar (2)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
2727
• Las sentencias de control del flujo de ejecución,permiten tomar decisiones y realizar un procesorepetidas veces.
• Hay dos tipos principales de sentencias de control deflujo:
Condicionales: if, switch Iteración: for, while, do - while
• Otras sentencias que permiten interrumpir el flujonormal de ejecución son break y continue.
Estructuras de Control
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
28
La Sentencia if – else (1)
if (expresion){<sentencias_1;}
else {<sentencias_2>;}
• Por ejemplo:
if (x < min) x = min else i = i + 1;
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
29
La Sentencia if – else (2)• Por definición, el valor numérico de una expresión de
relación o lógica es 1 (uno) si la relación es Verdadera, y0 (cero) si la relación es Falsa.
• En un sentido amplio, el lenguaje C consideraverdadera una expresión si es distinta de 0 (cero), yfalsa en caso contrario.
• Por ejemplo:if (x--) y = a else y = b;
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
3030
La Sentencia switch (1)switch (<variable>){
case valor1: [<grupoSentencias1>;][break;]
...case valorN: [<grupoSentenciasN>;]
[break;]
[default: <grupoSentencias>;]}
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
313131
La Sentencia switch (2)• Opciones de un menú:
1) Altas 2) Bajas 3) Modificaciones 4) Salir
switch (opcion){
case 1: altas(); break;
case 2: bajas(); break;
case 3: modificaciones(); break;
case 4:
default: salir();
}
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
32
• Permite la ejecución repetida un número de vecespredeterminado, de un grupo de sentencias.
La Sentencia for (1)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
3333
for (<inicializa>;<exprLógica>;actualiza>){
<grupoSentencias>;}
• <inicializa>: Asignación del valor inicial de lasvariables que intervienen en la expresión.
• <exprLógica>: Condición lógica (booleana).
• <actualiza>: Asignación del nuevo valor de lasvariables.
La Sentencia for (2)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
3434
• En <inicializa> y en <actualiza> pueden ir másde una asignación, separadas por comas.
• Por ejemplo, el siguiente código:for (i=0, j=10; i < j; i++, j -= 3)
printf("%d \t %d \n",i,j);
produce la siguiente salida:
0 101 72 4
La Sentencia for (3)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
35
• El grupo de sentencias se ejecuta mientras se cumpla laexpresión booleana.
while (<exprBooleana>){<grupoSentencias>;
}• Por ejemplo:
i = 0;while (i < 10){printf (“%d”, i);i += 1;
}
La Sentencia while
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
3636
• El grupo de sentencias se ejecuta mientras se cumpla laexpresión booleana.
do {<grupoSentencias>;
} while (<exprLógica>)
• Por ejemplo:i = 0;do {printf (“%d”, i); i++;
} while (i < 10);
La Sentencia do-while
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
37
Tipos de Datos Simples en C
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
383838383838
Tipos de Datos NuméricosTipo Longitud Rango
unsigned int 16 bits 0 a 65.535
short int 16 bits -32.768 a 32.767
int 16 bits -32.768 a 32.767
unsigned long 32 bits 0 a 4.294.967,295
long 32 bits -2.147.483.648 a 2.147.483.647
float 32 bits 3,4*(10^-38) a 3,4*(10^+38)
double 64 bits 1,7*(10^-308) a 1,7*(10^+308)
long double 80 bits 3,4*(10^-4932) a 1,1*(10^+4932)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
393939
• En C un carácter es un valor entero representado por sucorrespondiente código ASCII, y encerrado entrecomillas. Por ejemplo:
char c = ‘A’;
• Para leer un carácter:getchar(c);
• Para escribir un carácter:putchar(c);
Tipos de Datos Caracter
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
4040
• Una enumeración es una lista de nombres que almacenanvalores enteros constantes. El primer nombre de la listatiene el valor 0, el siguiente 1, etc. La declaración adoptala forma siguiente:
enum nombre_tipo {lista_de_identificadores};
• Una vez hecha una definición como esta, se puedenemplear variables del tipo de esta enumeración, que sese declaran en de la siguiente manera:enum nombre_de_tipo var_1, ..., var_n;
Tipos de Datos Enumerados (1)
Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA
ProgramaciónTIG - TUP
414141
• Por ejemplo:
main(){
enum dias {Lu, Ma, Mi, Ju, Vi};
enum dias x, y, z;
x = Lu; y = Vi;
for (z = x; z <= y; z++)
printf(“z vale %d\n", z);
}
Tipos de Datos Enumerados (2)