introd. a la algoritmia tema 4 y 6

Upload: miguel-moronta

Post on 04-Apr-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    1/26

    Introduccin a la Algoritmia

    Leccin: Formatos de Programas en C

    Pontificia Universidad Catlica Madre y Maestra

    Vicerrectora Acadmica

    Facultad Ciencias de las Ingenieras

    Ingeniera en Sistemas y Computacin - ISC

    16-ene-13Santiago, Rep. Dom.

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    2/26

    Formatos de Programas en CEstructura de un Programa

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    3/26

    Formatos de Programas en CEstructura de un Programa

    #include Incluir librerias de C#define Definir constantes/macros

    [declaracin de funciones][declaracin de variables globales]

    main()

    {declaracin de variables locales para el main;Sentencias;llamadas de funciones;

    }

    funcion_a()

    { declaracin de variables locales para funcin_a;Sentencias;

    }

    funcion_b(){}

    Todas las sentencias deben terminarCon punto y comas (;)

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    4/26

    Formatos de Programas en CEstructura de un Programa

    Ej.: Obtener un nmero, calcular e

    imprimir su cuadrado.

    #include void main()

    {

    int num,cuadrado; /* declarar variables */

    printf(\n introduzca el numero => ); /* imprimir letrero para pedir el numero */

    scanf(%d,&num); /* leer numero */

    cuadrado = num * num; /* elevarlo al cuadrado */

    /* imprimir el valor al cuadrado */

    printf(\n %d elevado al cuadrado es = %d \n,num,cuadrado);

    }

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    5/26

    Formatos de Programas en CEstructura de un Programa

    Salida.

    #include

    void main()

    {int num,cuadrado; /* declarar variables */

    printf(\n introduzca el numero => ); /* imprimir letrero para pedir el numero */

    scanf(%d,&num); /* leer numero */

    cuadrado = num * num; /* elevarlo al cuadrado */

    /* imprimir el valor al cuadrado */printf(\n %d elevado al cuadrado es = %d \n,num,cuadrado);

    }

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    6/26

    Formatos de Programas en C

    printf(cadena_caracteres,v1,v2...) : Imprimir porel dispositivo de salida estndar, pantalla.

    cadena_caracteres va a contener los textos quedeseo imprimir, as como los respectivos formatosde las variables(v1,v2,...). El contenido de controlva entre comillas dobles (contenido).

    Ej. printf(La edad de %s es %d aos, nombre, edad);

    Salida

    Lista de variables.

    Formatos de las variables. Variables.

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    7/26

    Formatos de Programas en CTabla de formatos y secuencias de escape

    Conversin para printf/scanf Se imprime/lee como

    %c

    %d

    %f

    %s

    %o%x

    %%

    Carcter

    Entero

    Punto flotante

    Cadena

    OctalHexadecimal

    Carcter %

    Secuencia de escape Efecto

    \a

    \b

    \f

    \n

    \t

    Seal sonora

    retroceso

    Nueva pgina

    Nueva lnea

    Tabulacin horizontal

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    8/26

    Formatos de Programas en C

    scanf(formato,v1,v2...) : Leer desde el dispositivo de entrada estndar(teclado), y almacenarlo en las respectivas variables.

    formato especificar el tipo de datos que sern capturados para lasvariables v1 y v2. El contenido del formato va entre comillas dobles (..).

    e.j.: scanf(%d, &edad);scanf(%c, &caracter);

    scanf(%s, cadena); si el tipo de datos es texto o cadenano lleva & antes del nombre de lavariable. Esto ser explicado al trabajarcon punteros.

    Entrada

    Lista de variables.

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    9/26

    Formatos de Programas en C

    Estructuras de Control.

    Controlan el flujo de ejecucin de un programa o funcin. Permitencombinar instrucciones o sentencias en una unidad lgica con unpunto de entrada y un punto de salida.

    Una sentencia compuesta es un conjunto de sentencias encerradas entrellaves {}, utilizado para esquematizar un flujo secuencial.

    Tipos de Estructura:

    Secuencia.

    Seleccin (decisin).

    Repeticin (bucles, ciclos).

    Estructuras de Control

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    10/26

    Formatos de Programas en C

    Estructuras de Control Simples Sentencia if para la seleccin.

    Estructuras de Control

    se cumple lacondicion?

    Instruccin (es)

    if simple

    se cumple lacondicin?

    no

    Instruccionessi

    Instrucciones

    if..else (de dos alternativas)

    if (condicin/expresin){ instruccion(es) };

    if (condicin/expresin){ instruccion(es) ; }

    else{ instruccion(es) ; }

    si

    no

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    11/26

    Formatos de Programas en C

    Estructuras de Control Sentencia if anidada.

    Estructuras de Control

    Se cumple lacondicin?

    Instrucciones

    Instrucciones

    Se cumple lacondicin?

    Se cumple lacondicin?

    si

    si

    no

    no

    no

    si

    Instrucciones

    Instrucciones

    if (expresion booleana)if (expresion booleana)

    if (expresion booleana){ instruccion(es) }

    else{ instruccion(es) }

    else{ instruccion(es) }

    else{ instruccion(es) ; }

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    12/26

    Formatos de Programas en C

    Estructuras de Control Mltiple Sentencia switch.

    Estructuras de Control

    Selector ?

    Instruccin (es)break;

    Instruccin (es)break;

    Instruccin (es)break;

    Instruccin (es).......etiqueta1 : etiqueta2 : etiqueta3 : default :

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    13/26

    Formatos de Programas en CEstructuras de Control

    #include #include

    /* Uso de la funcion switch Leer un carcter (+- * /) y dos nmeros enteros. Si el carcterledo es un operador aritmtico calcular laoperacin correspondiente, si es cualquier otro

    mostrar error. */

    void main(){char c, se='s';int a,b;

    do

    {fflush (stdin);printf("Digite Operacion: + - * / \n");c=getchar();printf("dame dos numeros Ej. 3,8 \n");scanf("%d, %d",&a,&b);

    switch (c){case '+':

    printf("resultado %d",a+b);break;

    case '-':printf("resultado %d",a-b);break;

    case '*':printf("resultado %d",a*b);break;

    case '/':printf("resultado %d",a/b);break;

    default:printf("error");

    }fflush (stdin);printf("\n Desea Continuar \n");scanf("%c",&se);}while (toupper(se)=='S');system("pause");

    }

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    14/26

    Formatos de Programas en CEstructuras de Control

    #include void main(){

    char c;int a,b;printf("Digite la Operacion(+ - * /) \n");c=getchar();fflush (stdin);printf("Digite dos numeros Ej 5 8\n");scanf("%d %d",&a,&b);

    switch (c){case '+':

    printf("%d + %d es = a %d",a,b,a+b);break;

    case '-':printf("%d + %d es = a %d",a,b,a-b);break;

    case '*':printf("%d + %d es = a %d",a,b,a*b);break;

    case '/':printf("%d + %d es = a %d",a,b,a/b);break;

    default:

    printf("error");}

    printf("\n\n");system("PAUSE");return 0;

    }

    /* Leer un carcter y dos nmeros enteros. Si el carcter ledo es un operadoraritmtico calcular la operacin correspondiente, si es cualquier otro mostrar error.Hacer el programa utilizando la instruccin switch() */

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    15/26

    Formatos de Programas en C

    Estructuras de Control de Repeticin Sentencia for.

    Estructuras de Control

    La condicin es ? Instruccin(es)

    for(variable=vi; ;variacin)

    expresion deincremente/decremento

    Variable Control

    = Valor inicial verdadero

    falso

    for

    Ej. Imprimir la tabla del 2.

    main(){ int num;

    printf(tabla del 2 \n);for(num=1;num

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    16/26

    Formatos de Programas en C

    Estructuras de Control de Repeticin Sentencia while.

    Estructuras de Control

    Instruccin(es)

    while {

    instrucciones;}

    verdadero

    falsoEj. Imprimir la tabla del 2.

    main(){ int num;

    printf(tabla del 2 \n);

    num=1;while (num

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    17/26

    Ej. Pedir un nmero positivo

    main(){ int num;

    do{

    printf(Digite un n%cmero positivo: );scanf(%d, &num);}while (num

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    18/26

    Formatos de Programas en C

    Uso del break.

    Cuando se encuentra la sentencia break en un ciclo, el programatermina el ciclo y el control del programa pasa a la siguiente sentenciadel ciclo.

    Por Ejemplo:

    int t;

    for(t=0; t

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    19/26

    Formatos de Programas en C

    Uso del continue.

    La sentencia continue funciona igual a la sentencia break, pero forzandoa la siguiente iteracin, por lo que salta las instrucciones que restan parallegar a probar la condicin.

    Por ejemplo, el siguiente programa visualizar slo los nmeros pares:

    for( x=0; x

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    20/26

    Formatos de Programas en C

    Funcin

    Es un segmento del programa que realiza determinadas tareas.Siempre regresa cero o un valor nico.

    Una funcin puede recibir cero o ms valores de entrada, los cualesreciben el nombre de argumentos o parmetros.

    Funciones

    Valores

    Introducidos FUNCIN

    Valor

    Regresado

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    21/26

    Formatos de Programas en C

    Una funcin puede ser llamada desde cualquier parte de un programa.

    Cuando esto sucede, el programa se detiene y pasa el control a la funcin,la cual al completarse su ejecucin retorna a la instruccin de donde fueinvocada (su punto de referencia) y el programa retoma el control.

    Funciones

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    22/26

    Formatos de Programas en C

    Elementos

    Funciones

    int maximo(int a, int b, int c)

    { int m;

    m=a;if (b > m)

    m=b;

    if (c > m)m=c;

    return m;}

    Encabezado Tipo de dato que retorna Nombre de la funcin

    Lista de parmetros

    Cuerpo. Declaracin de variables

    locales. Clculos. Instruccin de retorno.

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    23/26

    Formatos de Programas en C

    Asociacin de Parmetros

    Funciones

    Prototipo de una Funcin

    Es cuando declaramos una funcin. Contiene el tipo de dato deretorno, el nombre de la funcin y la lista de parmetros encerradosentre parntesis y terminando con un punto y coma (;).

    int maximo(int a, int b, int c) en la funcin

    max = maximo(int val1, int val2, int val3) en el programa

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    24/26

    Formatos de Programas en C

    Pase de Parmetros

    Por Valor: La funcin reciba unacopia de los valores de losparmetros. Si se cambia el

    valor dentro de la funcin, estecambio slo afecta el mbito dela funcin.

    Por Referencia: La funcin puede

    modificar los valores de losparmetros. Aqu se pasa ladireccin de memoria del valordel parmetro a la funcin.

    Funciones

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    25/26

    Formatos de Programas en C

    Pase de Parmetros

    Por Valor:

    int main(){

    int i = 6;

    func(i);

    return 0;

    }

    Funciones

    void func( int i){

    printf(%d,i)i++;

    }

    6 6

  • 7/30/2019 Introd. a la Algoritmia Tema 4 y 6

    26/26

    Formatos de Programas en C

    #include

    #include

    void pvalor(float,float);

    void preferencia(float *,float *);

    int main()

    {

    float a,b;

    a = 5.0, b=1.0e2;

    printf("\n Valores Iniciales: \n ");

    printf("\n a = %.1f \t b = %.1f \n", a, b);

    pvalor(a, b);

    printf("\n Valores luego del pase por valor: \n ");

    printf("\n a = %.1f \t b = %.1f ",a,b);

    preferencia(&a, &b);printf("\n\n Valores luego del pase por referencia: \n ");

    printf("\n a = %.1f \t b = %.1f \n \n ",a,b);

    system("PAUSE");

    return 0;

    }

    Funciones

    void pvalor(float x,float y){

    x= x*x;

    y= y*y;}

    void preferencia(float *x,float *y){

    *x= (*x) * (*x);*y= (*y) * (*y);

    }