programacion.pdf

download programacion.pdf

of 27

Transcript of 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,&nota);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