Download - programacion.pdf
-
105/05/2006 Dpto. Lenguajes y Ciencias de la Computacin 1
Tema 2. Fundamentos de la Programacin
Introduccin a la InformticaE.U. Politcnica.
Diseo Industrial. Primer Curso.Curso 2005-2006
Jos Luis Leiva Olivencia.Despacho: I-326(El Ejido)
Dpto. Lenguajes y Ciencias de la Computacin 2
Tema 2. Fundamentos de Programacin.
Introduccin
n Un programa se considera como una secuencia lgica de instrucciones que manipulan un conjunto de objetos (datos) para obtener unos resultados.
n Todo programa contiene dos bloques diferenciados:n Bloque de declaraciones: se especifican los objetos que utiliza
el programa (constantes, variables, tablas, registros, etc)n Bloque de instrucciones: conjunto de operaciones que se han
de realizar para la obtencin de los resultados obtenidos.
n Las instrucciones de un programa consisten generalmente en modificar los objetos del programa
-
2Dpto. Lenguajes y Ciencias de la Computacin 3
Tema 2. Fundamentos de Programacin.
Historia del lenguaje C
n C es un lenguaje moderno de propsito general que combinan las caractersticas e un lenguaje de alto nivel con una serie de caractersticas que slo se encuentran en los de ms bajo nivel.
n Es un lenguaje que no est ligado a ningn sistema operativo, lo que permite la portabilidad de programas escritos en este lenguaje.
n Existe un gran nmero de compiladores, nosotros utilizaremos en clase el compilador DEV-C++
Dpto. Lenguajes y Ciencias de la Computacin 4
Tema 2. Fundamentos de Programacin.
Estructura de un programa en C
n El uso de maysculas y minsculas INFLUYE de manera decisiva en el lenguaje C. Se recomienda para evitar problemas escribir siempre en minsculas.
n La cabecera de un programa en C o bloque de declaraciones suelen constar de:n Comentarios (nombre de programa, fecha, programador,)
n Ej. /*Esto es un ejemplo*/n /*Programa realizado por Agapito Perez*/
n Directrices #include (de inclusin) y #define (de sustitucin)n Ej. #include n Ej. #define pi 3.14
n El bloque de instrucciones DEBE estar compuesto por funciones, una de ellas se denomina main.
-
3Dpto. Lenguajes y Ciencias de la Computacin 5
Tema 2. Fundamentos de Programacin.
Estructura de un programa en C
#include #define pi 3.14;void funcion1();main(){
printf(Buenos das. Soy el programa principal.\n);funcion1();printf(Acabamos de realizar nuestro primer programa);
}funcion1(){printf(Hola y adios. Soy un subprograma\n);}
Dpto. Lenguajes y Ciencias de la Computacin 6
Tema 2. Fundamentos de Programacin.
Variables de un programa
n Son objetos de un programa que son manipulados por las instrucciones. Mediante ellos, podremos realizar el almacenamiento de los datos y de los resultados de las distintasoperaciones que intervienen en la solucin del problema. Todo variable tiene 3 atributos:n Nombre: identificadorn Tipo: conjunto de valores que puede tomarn Valor: elemento del tipo que se le asigna
n El valor de una variable puede cambiar durante la ejecucin de un programa y debe ser declarada antes de ser utilizada. Su declaracin consiste en definir el nombre de la misma con su tipo correspondiente. Cuando queramos componer una cadena de caracteres, pondremos la informacin entre comillas(Ejemplo). Si se trata de un carcter simple, lo escribiremos entre comilla simple(C).
n El lenguaje C utiliza las siguientes palabras para designat los tipos de datos: int, long, short, unsigned, char, float y double.
-
4Dpto. Lenguajes y Ciencias de la Computacin 7
Tema 2. Fundamentos de Programacin.
Ejemplos de declaracin de variables.
int i; /*i es una variable entera*/int n, pasos, contador=0, suma;/*se declaran 4 variables enteras inicializando al valor 0 la variable
contador*/char letra, palabra[30];/*se declara una variable para almacenar una letra, y otra para
almacenar un mximo de 30 letras*/int v[100];/*se declara la variable v, denominada array o vector que es capaz
de almacenar 100 nmeros enteros. La primera posicin es la nmero 0 y la ltima la 99. v[34] es la posicin 35 de v*/
int m[10][30];/*se declara la variable m, denominada matriz o array de array que
es una estructura bidimensional de 10 filas y 30 columnas*/long poblacion;float precio;
Dpto. Lenguajes y Ciencias de la Computacin 8
Tema 2. Fundamentos de Programacin.
Operadores
n Aritmticos:+, - * , / (ojo si es float o int), ++, --, %
n Relacionalesn ==n !=n >, =,
-
5Dpto. Lenguajes y Ciencias de la Computacin 9
Tema 2. Fundamentos de Programacin.
Tablas de verdad de los operadores lgicos.
FFF
FVF
FFV
VVV
A && BBA
FFF
VVF
VFV
VVV
A || BBA
Dpto. Lenguajes y Ciencias de la Computacin 10
Tema 2. Fundamentos de Programacin.
Entrada de datos
n La constituyen todas las instrucciones que toman los datos de entrada desde un dispositivo externo y los almacena en la memoria central para que puedan ser procesados. Las instrucciones de entrada tienen como misin almacenar el dato recogido en el objeto cuyo identificador aparece en la propia instruccin. Si estos objetos tienen algn valor previo, este se pierde.
-
6Dpto. Lenguajes y Ciencias de la Computacin 11
Tema 2. Fundamentos de Programacin.
Instruccin scanf
Instruccin scanf: Permite leer datos desde teclado. Se encuentra en la librera stdio.h
scanf(formato,lista de argumentos);
Entero%i
Entero%d
Cadena de caracteres
%s
Real%f
Carcter%c
TipoComando
Ejemplo:float n;
scanf(%f,&n);
Dpto. Lenguajes y Ciencias de la Computacin 12
Tema 2. Fundamentos de Programacin.
Instruccin cin
n Tiene el mismo funcionamiento que la instruccin scanf, pero se encuentra en la librera iostream.h
Ejemplo:
float numero;
cin>>numero;
-
7Dpto. Lenguajes y Ciencias de la Computacin 13
Tema 2. Fundamentos de Programacin.
Instruccin gets.
n Muy recomendable para las cadenas de texto.
Ejemplo:
char nombre[20];
gets(nombre);
Dpto. Lenguajes y Ciencias de la Computacin 14
Tema 2. Fundamentos de Programacin.
Salida de datos.
n Conjunto de instrucciones que toman los datos finales (resultados) de la memoria central y los envan a los dispositivos externos. Su misin consiste en enviar datos a un dispositivo externo.
n Instruccin printf (stdio.h):printf(formato de los argumentos,lista de argumentos);num=7;printf(El valor del nmero es %d. Gracias\n,num);
n Instruccin cout (iostream.h)cout
-
8Dpto. Lenguajes y Ciencias de la Computacin 15
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que toma como dato de entrada un nmero que corresponde a la longitud de un radio y nos calcula y escribe la longitud de la circunferencia, el rea del crculo y el volumen de la esfera que se corresponden con dicho radio.
Dpto. Lenguajes y Ciencias de la Computacin 16
Tema 2. Fundamentos de Programacin.
Solucin
#include #include #include #define PI 3.14main(){float radio,area,longitud, volumen;printf(Introduzca el valor del radio: );scanf(%f,&radio);area=PI*radio*radio;longitud=2*PI*radio;volumen=4*PI*pow(radio,3)/3;clrscr();printf(El area resultante es: %f\n,area);printf(El volumen resultante es: %f\n,volumen);printf(El permetro resultante es: %f\n,longitud);getche();}
-
9Dpto. Lenguajes y Ciencias de la Computacin 17
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que lee dos nmero enteros, calculando su suma, resta, producto y divisin.
Dpto. Lenguajes y Ciencias de la Computacin 18
Tema 2. Fundamentos de Programacin.
Solucin
#include #include main(){int a,b, suma, respta, producto;float cociente;printf(Introduzca el primer nmero: );scanf(%d,&a);printf(Introduzca el segundo nmero: );scanf(%d,&b);suma=a+b;resta=a-b;producto=a*b;cociente=(float)a/b; /*Por qu hacemos esto?*/printf(La suma es %d\n,suma);printf(La resta es %d\n,resta);printf(El producto es %d\n,producto);printf(El cociente es %f\n,cociente);getche();}
-
10
Dpto. Lenguajes y Ciencias de la Computacin 19
Tema 2. Fundamentos de Programacin.
Ejemplo
n Realizar un programa que nos pida por teclado un carcter y nos informe el cdigo ASCII que le corresponde.
#include main(){char letra;printf(Introduzca letra: );scanf(%c,&letra);printf(El cdigo de %c es %d\n,letra,letra);}
Dpto. Lenguajes y Ciencias de la Computacin 20
Tema 2. Fundamentos de Programacin.
Instrucciones alternativas
n Son aquellas que controlan la ejecucin de uno o varios bloques de instrucciones, dependiendo del cumplimiento o no de alguna condicin o del valor final de una expresin. Existen tres modelos tpicos de instrucciones alternativas:n Alternativa simple: controla la ejecucin de instrucciones por
el cumplimiento o no de una condicin, de tal forma que, si se cumple, se ejecutan; si no se cumple, no se ejecutan.
COND
INSTRUCCIONES
SNif (cond)
{ instrucciones;}
-
11
Dpto. Lenguajes y Ciencias de la Computacin 21
Tema 2. Fundamentos de Programacin.
Instrucciones alternativas
n Alternativa doble: controla la ejecucin de instrucciones por el cumplimiento o no de una condicin, de tal forma que, si se cumple, se ejecutan las instrucciones del primer bloque; si no se cumple, se ejecutan las instrucciones del segundo.
COND
INSTRUCCIONES 1
SN
INSTRUCCIONES 2
if (cond){ instrucciones1;}else{ instrucciones2;}
Dpto. Lenguajes y Ciencias de la Computacin 22
Tema 2. Fundamentos de Programacin.
Instrucciones alternativas
n Alternativa mltiple: controla la ejecucin de varios conjuntos de instrucciones por el valor final de una expresin, de tal forma que cada conjunto de instrucciones est ligado a un posible valor de la expresin, existiendo un bloque al final que engloba otros posibles valores no definidos. Se ejecutar el conjunto que se encuentre relacionado con el valor que resulte de la evaluacin de la expresin, de tal forma que si ste no aparece se ejecutar el ltimo.
switch (expresion){case valor1:instrucciones1; break;case valor2:instrucciones2; break;default: instruccionesdefecto;}
-
12
Dpto. Lenguajes y Ciencias de la Computacin 23
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que lee dos nmeros y nos dice cual es el mayor o si son iguales.
#include #include main(){int a,b;printf(Introduzca dos nmeros: );scanf(%d,&a);scanf(%d,&b);if (a>b)printf(El %d es el mayor\n,a);
elseif (a==b)printf(Son iguales);elseprintf(El %d es el mayor\n,b);
getche();}
Dpto. Lenguajes y Ciencias de la Computacin 24
Tema 2. Fundamentos de Programacin.
Ejemplo
n Realizar un programa que pida el da de la semana y nos informe de su nombre (1 Lunes, 2 Martes, .)
#include #include main(){int dia;printf(Introduzca da de la semana: \n);scanf(%d,&dia);switch (dia){case 1: printf(Lunes);break;case 2: printf(Martes);break;case 3: printf(Mircoles);break;case 4: printf(Jueves);break;case 5: printf(Viernes);break;default: printf(No es un da laborable); break;}getche();}
-
13
Dpto. Lenguajes y Ciencias de la Computacin 25
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que lee tres nmeros cualesquiera y los escribe ordenados de forma ascendente:
(Solucin no demasiado formal)#include #include main(){int a,b,c;printf(Introduzca 3 nmeros diferentes: );scanf(%d,&a);scanf(%d,&b);scanf(%d,&c);if ((a>b) && (b>c))printf(%d-%d-%d\n,a,b,c);
if ((a>c) && (c>b))printf(%d-%d-%d\n,a,c,b);
if ((b>a) && (a>c))printf(%d-%d-%d\n,b,a,c);
Dpto. Lenguajes y Ciencias de la Computacin 26
Tema 2. Fundamentos de Programacin.
Ejemplo
if ((b>c) && (c>a))printf(%d-%d-%d\n,b,c,a);if ((c>a) && (a>b))printf(%d-%d-%d\n,c,a,b);if ((c>b) && (b>a))printf(%d-%d-%d\n,c,b,a);getche();}
-
14
Dpto. Lenguajes y Ciencias de la Computacin 27
Tema 2. Fundamentos de Programacin.
Ejemplo
(Solucin ms formal)#include #include main(){int a,b,c;printf(Introduzca 3 nmeros diferentes: );scanf(%d,&a);scanf(%d,&b);scanf(%d,&c);if (a>b){
if (b>c)printf(%d-%d-%d,a,b,c);else
if (a>c)printf(%d-%d-%d,a,c,b);elseprintf(%d-%d-%d,c,a,b);
}
Dpto. Lenguajes y Ciencias de la Computacin 28
Tema 2. Fundamentos de Programacin.
Ejemplo
else{
if (b>c)if (a>c)printf(%d-%d-%d,b,a,c);elseprintf(%d-%d-%d,b,c,a);
elseprintf(%d-%d-%d,c,b,a);
}getche();}
-
15
Dpto. Lenguajes y Ciencias de la Computacin 29
Tema 2. Fundamentos de Programacin.
Instrucciones repetitivas.
n Son aquellas que controlan la repeticin de un conjunto de instrucciones denominado bucle mediante la evaluacin de una condicin que se realiza cada nueva repeticin o por medio de un contador asociado.
n El lenguaje C dispone de las siguientes instrucciones para este propsito:n while (nmero indeterminado de repeticiones 0 a n)n do..while (nmero indeterminado de repeticiones 1 a n)n for (nmero determinado de repeticiones normalmente por
variable asociada)
Dpto. Lenguajes y Ciencias de la Computacin 30
Tema 2. Fundamentos de Programacin.
Instruccin while
n Controla la ejecucin de instrucciones que configuran el bucle, de tal forma que stas se ejecutan mientras se cumpla la condicin, que ser evaluada siempre antes de cada repeticin, es decir, mientras la condicin sea CIERTA.
COND
BUCLE
si
no while (cond){bucle;}
-
16
Dpto. Lenguajes y Ciencias de la Computacin 31
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que escribe en pantalla todos los nmeros desde uno introducido positivo hasta la unidad.
#include main(){int numero;printf(Introduzca numero positivo: );scanf(%d,&numero);while (numero>0){printf(EL nmero vale ahora: %d\n,numero);numero--;}getche();}
Dpto. Lenguajes y Ciencias de la Computacin 32
Tema 2. Fundamentos de Programacin.
Instruccin do..while
n Controla la ejecucin de instrucciones que configuran el bucle, de tal forma que stas se ejecutan mientras se cumpla la condicin, que ser evaluada siempre despus de cada repeticin, es decir, mientras la condicin sea CIERTA. Al menos se repite 1 vez.
COND
BUCLE
sino
do{bucle;}while (cond);
-
17
Dpto. Lenguajes y Ciencias de la Computacin 33
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que escribe el factorial de un nmero positivo:
#include main(){int numero;long fact=1;printf(Introduzca numero positivo: );scanf(%d,&numero);do{fact=fact*numero; numero--;} while (numero>0);printf(El factorial es %ld.,fact);getche();}
Dpto. Lenguajes y Ciencias de la Computacin 34
Tema 2. Fundamentos de Programacin.
Instruccin for
n La sentencia for permite ejecutar una sentencia simple o compuesta, repetidamente un nmero de veces conocido.
n Su sintaxis es:for(instr.inicio;condicin;intr.actualizacin){Instrucciones;}
n Por ejemplo, para imprimir los nmeros del 1 al 100for (i=1;i
-
18
Dpto. Lenguajes y Ciencias de la Computacin 35
Tema 2. Fundamentos de Programacin.
Instruccin for
n Por ejemplo, para imprimir los mltiplos de 7 que hay entre 23 y 567
for (i=7;i
-
19
Dpto. Lenguajes y Ciencias de la Computacin 37
Tema 2. Fundamentos de Programacin.
Contadores
n Un contador es un objeto que se utiliza para contar cualquier evento que pueda ocurrir dentro de un programa. En general suelen contar de forma natural desde 0 y de 1 en 1, aunque se pueden realizar otros tipos de cuentas necesarios en algunos procesos.
n Se utilizan realizando sobre ellos dos operaciones bsicas:n Inicializacin: todo contador se inicializa a 0 si realiza cuenta
natural o a Vi(valor inicial), si se desea realizar otro tipo de cuenta.
n Contabilizacin o incremento: cada vez que aparece el evento a contar se ha de incrementar el contador en 1 si se realiza cuenta natural o en la In (Incremento) si se realiza otro tipo de cuenta.
Dpto. Lenguajes y Ciencias de la Computacin 38
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que lee 100 nmeros y cuenta cuantos son positivos.#include main(){int numero,contador=0,i=0;do{printf(Introduzca numero : );scanf(%d,&numero);i++;if (numero>0)contador++;
}while (i
-
20
Dpto. Lenguajes y Ciencias de la Computacin 39
Tema 2. Fundamentos de Programacin.
Acumuladores
n Son objetos que se utilizan en un programa para acumular elementos sucesivos de una misma operacin. En general se usan para calcular sumas y productos, sin descartar otros posibles tipos de acumulacin.
n Al igual que los contadores, para utilizarlos hay que realizar sobre ellos dos operaciones bsicas:n Inicializacin: todo acumulador requiere ser inicializado con el
valor neutro de la operacin que va a acumular.(0 para sumas y 1 para productos)
n Acumulacin: cuando se hace presente en la memoria el elemento a acumular por la realizacin de una lectura o clculo, se efecta la acumulacin.
Dpto. Lenguajes y Ciencias de la Computacin 40
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que calcula y escribe la suma y producto de los 10 primeros nmero naturales.
#include main(){int i=1,suma=0,producto=1;do{suma=suma+i;producto=producto*i;}while (i
-
21
Dpto. Lenguajes y Ciencias de la Computacin 41
Tema 2. Fundamentos de Programacin.
Interruptores o conmutadores.
n Los interruptores son objetos que se utilizan en un programa y slo pueden tomar dos valores (Cierto o Falso, 1 o 0), realizando la funcin de transmitir informacin de un punto a otro dentro del programa. Podemos decir que actan como recordatorios manteniendo caractersticas de objetos o clculos que estuvieron presentes en un momento anterior de la ejecucin de un programa.
n Se utilizan inicializndolos con un valor y en los puntos en que corresponda se cambian al valor contrario, de tal forma que examinado su valor posteriormente podemos realizar la transmisin de informacin que desebamos.
Dpto. Lenguajes y Ciencias de la Computacin 42
Tema 2. Fundamentos de Programacin.
Ejemplo
n Algoritmo que lee una secuencia de notas (con valores que van de 0 a 10) que termina con el valor -1 y nos dice si hubo o no alguna nota con valor 10.
#include main(){int sw=0,nota;do{printf(Introduzca nota: );scanf(%d,¬a);if (nota==10)
sw=1;}while (nota!=-1);if (sw==1)printf(Hubo nota 10);elseprintf(No hubo nota 10);getche();}
-
22
Dpto. Lenguajes y Ciencias de la Computacin 43
Tema 2. Fundamentos de Programacin.
Tratamiento secuencial de un vector
n Suele ser ms cmodo utilizar el bucle for utilizando una variable ndice, que permite acceder de forma sucesiva a los distintos elementos del vector.
int v[100],i;..for (i=0;i
-
23
Dpto. Lenguajes y Ciencias de la Computacin 45
Tema 2. Fundamentos de Programacin.
1. Realizar un programa que permita al usuario elegir repetidamente entre calcular el rea de la circunferencia o el volumen de la esfera.
#include #include main(){float radio, area,volumen,pi=3.14;int opcion;do{clrscr();printf(Men de opciones);printf(1. rea crculo\n);printf(2. Volumen esfera\n);printf(3. Salir\n);printf(Elegir opcin: );scanf(%d,&opcion);
Dpto. Lenguajes y Ciencias de la Computacin 46
Tema 2. Fundamentos de Programacin.
if (opcion==1){
printf(Introduzca el radio: );scanf(%f,&radio);if (radio
-
24
Dpto. Lenguajes y Ciencias de la Computacin 47
Tema 2. Fundamentos de Programacin.
if (opcion==2){
printf(Introduzca el radio: );scanf(%f,&radio);if (radio
-
25
Dpto. Lenguajes y Ciencias de la Computacin 49
Tema 2. Fundamentos de Programacin.
3. Realizar un programa que pida por teclado un valor n y nos muestra por pantalla los n primeros t rminos de la sucesin de fibonacci.
#include #include main(){int n,ant1=1,ant2=1,i,aux;printf(Introduzca un nmero: );scanf(%d,&n);for (i=0;i
-
26
Dpto. Lenguajes y Ciencias de la Computacin 51
Tema 2. Fundamentos de Programacin.
5. Realizar un programa que pida por teclado los sueldos de los empleados de una empresa. Debe informar como resultado el mayor y el menor sueldo.
#include #include main(){ float mayor=0,menor=100000,salario;int empleados, i;printf(Introduzca numero de empleados: );scanf(%d,&empleados);for (i=1;imayor)
mayor=salario;if (salario
-
27
Dpto. Lenguajes y Ciencias de la Computacin 53
Tema 2. Fundamentos de Programacin.
Otras instrucciones interesantes
n Librera string.h
n strcat(cad1,cad2);
n strcmp(cad1,cad2);
n strlen(cad);
n strcpy(cad1,cad2);
n Librera stdlib.hn fflush(stdin)
n system
Dpto. Lenguajes y Ciencias de la Computacin 54
Tema 2. Fundamentos de Programacin.
Bibliografa
n Galindo, J; Rodrguez J.Mara, Aprendiendo C. Universidad de Cadiz.
n Ceballos, Fco Javier. Ed. Rama.Curso de Programacin C/C++
n Schildt, Herbert. Gua de autoenseanza en C. McGrawHill.
n Joyanes. Fundamentos de programacin. McGrawHill