clase programación 15

Upload: gmullerb

Post on 31-May-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Clase Programacin 15

    1/54

    Programacin

    Prof. Gonzalo [email protected]

    Facultad de Ingeniera Universidad Central de Venezuela

    Clase 15. M ulos en C

  • 8/14/2019 Clase Programacin 15

    2/54

    Clase Anterior

    Creacin de un programa Compilado.

    Ambiente de Desarrollo C.

    Lenguaje C/C++

    Vocabulario: Identificadores, Palabras Claves,

    Programacin Prof. Gonzalo Mller Clase 15 GM - 2

    pera ores, onstantes, etc.Estructura bsica de un programa en C.

    Funcin Main.Declaraciones: Tipos de Datos.

    Secuencia de Sentencias.

  • 8/14/2019 Clase Programacin 15

    3/54

    Clase Anterior

    Directivas de preprocesador, Libreras y Funciones.

    Funciones Entrada/Salida:

    printf: Sin formato, Con formato.scanf.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 3

    Sentencias de Control.Condicionales.

    Repetitivas.Metodologa para creacin de un programa C.

  • 8/14/2019 Clase Programacin 15

    4/54

    Metodologa de la Programacin Modular

    Nombre armetro1 armetro2

    Programacin Prof. Gonzalo Mller Clase 15 GM - 4

    Fin

  • 8/14/2019 Clase Programacin 15

    5/54

    Metodologa de la Programacin Modular

    Tabla de Mdulos: Una vez desarrollados losalgoritmos de todos los mdulos, se debe establecer

    los tipos de datos para las variables y los parmetros.Es de utilidad para la posterior implementacin en ellenguaje construir una tabla donde se listen todos los

    Programacin Prof. Gonzalo Mller Clase 15 GM - 5

    mdulos con sus parmetros y retorno indicando eltipo de dato para cada uno de estos.

    Modulo Parmetros Retorno Tipomodulo1 parametro11:tipo11, retorno1:tipo1 subrutina o funcin

    moduloN parametroN1:tipoN1, retornoN :tipoN subrutina o funcin

  • 8/14/2019 Clase Programacin 15

    6/54

    Programacin Modular en C

    Mdulos en C: El uso de mdulos en C consta de trespasos:

    1. Declaracin.2. Llamada.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 6

    . e n c n.

  • 8/14/2019 Clase Programacin 15

    7/54

    Declaracin de Mdulos en C

    1. Declaracin: se indica al compilador el encabezado delmdulo, conocido como prototipo, de tal forma que al

    llamar al mismo dentro del cdigo ste seareconocido.

    Las declaraciones de los mdulos a i ual ue las

    Programacin Prof. Gonzalo Mller Clase 15 GM - 7

    variables debe hacer antes de ser utilizados, por loque se colocan antes de las declaraciones de las

    variables globales.

    Dar a conocer el mdulo para poder hacer uso a lolargo de todo el programa.

  • 8/14/2019 Clase Programacin 15

    8/54

    Definicin de Mdulos en C

    3. Definicin: constituye la codificacin del algoritmodel mdulo, es decir, el conjunto de sentencias

    necesarias para que ste realice la tarea a la que estdestinado.

    Usualmente la definicin de los mdulos se coloca

    Programacin Prof. Gonzalo Mller Clase 15 GM - 8

    luego del bloque principal.Al igual que el main un mdulo:

    Puede declarar sus propias variables.Puede realizar llamadas a otros mdulos.

    Debe ser documentado adecuadamente.

  • 8/14/2019 Clase Programacin 15

    9/54

    Declaracin y Definicin de Mdulos en C

    Declaracin y Definicin de una funcin :

    tipo nombre ( tipo parmetro1 , tipo parmetro2 ,){

    Declaraciones locales

    Programacin Prof. Gonzalo Mller Clase 15 GM - 9

    //// Algoritmo

    ////return valor ;

    }

  • 8/14/2019 Clase Programacin 15

    10/54

    Declaracin y Definicin de Mdulos en C

    Tipo del Valor de Retorno Tipo del Parmetro

    Identificador de la funcintipo nombre ( tipo parmetro1 , tipo parmetro2 ,){

    Declaraciones locales

    Programacin Prof. Gonzalo Mller Clase 15 GM - 10

    Mismo Tipo//// Algoritmo

    ////return valor ;

    }

  • 8/14/2019 Clase Programacin 15

    11/54

    Declaracin y Definicin de Mdulos en C

    Identificador: Es el nombre que el programadorcoloca para referirse a una determinada locacin de

    memoria, ya sea una variable o una funcin.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 11

    cubo

    F41C LocalidadDireccin

  • 8/14/2019 Clase Programacin 15

    12/54

    Declaracin y Definicin de Mdulos en C

    Reglas para definir un Identificador:

    1. Se forma con un secuencia de los siguientes

    caracteres:a b c d e f g h i j k l m n o p q r s t u v w x y z

    Programacin Prof. Gonzalo Mller Clase 15 GM - 12

    A B C D E F G H I J K L M N O P Q R S TU V W X Y Z

    0 1 2 3 4 5 6 7 8 9 _

  • 8/14/2019 Clase Programacin 15

    13/54

    Declaracin y Definicin de Mdulos en C

    2. No puede contener espacios en blanco, ni ningnotro carcter diferente de los indicados en

    anteriormente.3. El primer carcter no puede ser un dgito.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 13

    .minsculas.

    5. Puede tener hasta 31 caracteres.

    Recomendacin: utilizar un nombre que tenganun significado la funcin que representa.

  • 8/14/2019 Clase Programacin 15

    14/54

    Declaracin y Definicin de Mdulos en C

    Variable retorno : Usualmente se define una variablelocal que contiene el valor a retornar.tipo nombre ( tipo parmetro1 , tipo parmetro2 ,){

    // Declaraciones localesMismo Tipo

    Programacin Prof. Gonzalo Mller Clase 15 GM - 14

    tipo resultado ;

    // Algoritmo

    ////return resultado ;

    }

    Variable retorno

    Retorno

  • 8/14/2019 Clase Programacin 15

    15/54

    Declaracin y Definicin de Mdulos en C

    Ejemplo: Definir una funcin que calcule el cubo deun nmero:signed long cubo( signed short numero){

    // Declaraciones locales//

    Mismo Tipo

    Programacin Prof. Gonzalo Mller Clase 15 GM - 15

    signed long res;// Algoritmo//res = numero*numero*numero;//return res;

    }

    Variable retorno

    Retorno

  • 8/14/2019 Clase Programacin 15

    16/54

    Declaracin y Definicin de Mdulos en C

    Declaracin y Definicin de una subrutina :

    void nombre ( tipo parmetro1 , tipo parmetro2 ,){

    Programacin Prof. Gonzalo Mller Clase 15 GM - 16

    //

    // Algoritmo

    //}

  • 8/14/2019 Clase Programacin 15

    17/54

    Declaracin y Definicin de Mdulos en C

    Le indica al C que NO hay Valor de Retorno

    void nombre ( tipo parmetro1 , tipo parmetro2 ,){

    Programacin Prof. Gonzalo Mller Clase 15 GM - 17

    //

    // Algoritmo

    //}

  • 8/14/2019 Clase Programacin 15

    18/54

    Declaracin y Definicin de Mdulos en C

    Ejemplo: Definir una subrutina para escribir enpantalla un resultado numrico:

    void escribeResultado( float resultado){

    printf( El Resultado es %f , resultado);

    Con Parmetro

    Programacin Prof. Gonzalo Mller Clase 15 GM - 18

    Ejemplo: Definir una subrutina para escribir enpantalla un encabezado:

    void escribeEncabezado(){

    printf( GOLTEC 1.0\n2006\n );

    }

    Sin Parmetro

  • 8/14/2019 Clase Programacin 15

    19/54

    Declaracin y Definicin de Mdulos en C

    // Directivas de preprocesador//

    Programacin Prof. Gonzalo Mller Clase 15 GM - 19

    // Mdulos//

    main()

    {

  • 8/14/2019 Clase Programacin 15

    20/54

    Llamada de Mdulos en C

    2. Llamada: se pone en ejecucin el mdulo.

    Se coloca el nombre del mdulo.

    Seguido de los argumentos separados por comasentre parntesis.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 20

    nom re argumento1 , argumento2 ,

    Llamada a una subrutina: se pone en ejecucin a travsuna sentencia de llamada:

    nombre ( argumento1 , argumento2 , );

  • 8/14/2019 Clase Programacin 15

    21/54

    Llamada de Mdulos en C

    Llamada a una funcin:Sentencia a Asignacin.

    Ejemplo: s = cubo(a);Expresin Lgica.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 21

    u

    Expresin Aritmtica.Ejemplo: (cubo(a) + 2)/cubo(b)

    Argumento de otra Llamada.Ejemplo: cubo(a + cubo(b))

    escribeResultado(cubo(a));

    Argumento

    Argumento

  • 8/14/2019 Clase Programacin 15

    22/54

    Programacin Modular en C

    Ejemplo: Disear y construir un programa modular enC con acoplamiento de datos bsicos para calcular las

    races de una ecuacin cuadrtica.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 22

  • 8/14/2019 Clase Programacin 15

    23/54

    Ejercicio

    Disear y construir un programa modular en C conacoplamiento de datos bsico para calcular el cubo dedos nmeros. Al menos 3 mdulos:

    Programacin Prof. Gonzalo Mller Clase 15 GM - 23

    Fase 1: Diseo y Anlisis:DTDDES, DRE DF y LV de Mdulos y TM.

    DES, DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.Notacin, Documentacin e Indentacin.

    ectura, proceso y escritura

  • 8/14/2019 Clase Programacin 15

    24/54

    Ejercicio

    Disear y construir un programa modular en C conacoplamiento de datos bsico para calcular el cubo deN nmeros. Al menos 3 mdulos:

    Programacin Prof. Gonzalo Mller Clase 15 GM - 24

    Fase 1: Diseo y Anlisis:DTDDES, DRE DF y LV de Mdulos y TM.

    DES, DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.Notacin, Documentacin e Indentacin.

    ectura, proceso y escritura

  • 8/14/2019 Clase Programacin 15

    25/54

    Funciones Matemticas en C

    C ofrece un conjunto de funciones matemticaspredefinidas en las libreras estndar math, las

    principales operaciones definidas son:Raz Cuadrada.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 25

    .

    Seno.

    Coseno.

    Tangente.

    Exponencial.

    Logaritmos.

  • 8/14/2019 Clase Programacin 15

    26/54

    Funciones Matemticas en C

    Raz Cuadrada: La funcin sqrt permite obtener la razcuadrada de un valor

    sqrt( A)

    2 A

    Programacin Prof. Gonzalo Mller Clase 15 GM - 26

    sqrt( aria le)

    sqrt( Constante)

    sqrt( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    27/54

    Funciones Matemticas en C

    Potencia: La funcin pow permite elevar un nmero auna potencia dada.

    pow( A, B)

    B

    A

    Programacin Prof. Gonzalo Mller Clase 15 GM - 27

    pow( Varia le, Varia le) pow( Variable, Constante )

    pow( Variable, Expresin Aritmtica)

    pow( Expresin Aritmtica, Expresin Aritmtica )

  • 8/14/2019 Clase Programacin 15

    28/54

    Funciones Matemticas en C

    Seno: La funcin sin calcula el seno de un valor dadoen radianes.

    sin( Variable)sin( Constante)

    Programacin Prof. Gonzalo Mller Clase 15 GM - 28

    s n( Expresin Aritmtica)Arcoseno:

    asin( Variable)

    asin( Constante)

    asin( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    29/54

    Funciones Matemticas en C

    Coseno: La funcin cos calcula el coseno de un valordado en radianes.

    cos( Variable)cos( Constante)

    Programacin Prof. Gonzalo Mller Clase 15 GM - 29

    cos( Expresin Aritmtica)Arcocoseno:

    acos( Variable)

    acos( Constante)

    acos( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    30/54

    Funciones Matemticas en C

    Tangente: La funcin tan calcula la tangente de un valor dado en radianes.

    tan( Variable)tan( Constante)

    Programacin Prof. Gonzalo Mller Clase 15 GM - 30

    tan( Expresin Aritmtica)Arcotangente:

    atan( Variable)

    atan( Constante)

    atan( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    31/54

    Funciones Matemticas en C

    Exponencial: La funcin exp calcula e (constante deEuler) elevado a un valor dado.

    exp( A)A

    e

    Programacin Prof. Gonzalo Mller Clase 15 GM - 31

    exp( aria le)exp( Constante)

    exp( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    32/54

    Funciones Matemticas en C

    Logaritmo: La funcin log10 calcula logaritmo base 10de un valor dado.

    log10( A) Alog 10

    Programacin Prof. Gonzalo Mller Clase 15 GM - 32

    log1 ( aria le)log10( Constante)

    log10( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    33/54

    Funciones Matemticas en C

    Logaritmo neperiano: La funcin log calcula logaritmobase e de un valor dado.

    log( A) Alog e

    Programacin Prof. Gonzalo Mller Clase 15 GM - 33

    log( Varia le)log( Constante)

    log( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    34/54

    Funciones Matemticas en C

    Valor Absoluto : El mtodo abs calcula el valorabsoluto de un valor entero.

    abs( A) A

    Programacin Prof. Gonzalo Mller Clase 15 GM - 34

    a s ar a eabs( Constante)

    abs( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    35/54

    Funciones Matemticas en C

    Valor Absoluto : El mtodo fabs calcula el valorabsoluto de un valor real.

    fabs( A) A

    Programacin Prof. Gonzalo Mller Clase 15 GM - 35

    a s ar a efabs( Constante)

    fabs( Expresin Aritmtica)

  • 8/14/2019 Clase Programacin 15

    36/54

    Funciones Matemticas en C

    Nmeros Aleatorios : En ocasiones es necesarioobtener nmeros en forma aleatoria.

    rand(): Es una funcin de la librera stdlib, generanmeros enteros positivos pseudo aleatoriosuniformemente distribuidos entre 0 32767

    Programacin Prof. Gonzalo Mller Clase 15 GM - 36

    (RAND_MAX).

    Pseudo aleatorios ya que se generan una sucesin{Nk } de nmeros a travs de una funcin fija f(k)

  • 8/14/2019 Clase Programacin 15

    37/54

    Funciones Matemticas en C

    Si se requiere un rango diferente se debe construiruna expresin que realice el ajuste, tal como:

    rand() % (N + 1) Rango: 0Nrand() / 32767.0 Rango: 0.01.0

    Programacin Prof. Gonzalo Mller Clase 15 GM - 37

  • 8/14/2019 Clase Programacin 15

    38/54

    Funciones Matemticas en C

    srand(semilla): Es una funcin de la librera stdlib,que permite establecer la semilla del generador denmeros pseudo aleatorios.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 38

    .

    Normalmente se llama al comienzo del programaantes de la primera llamada a rand().

    La semilla permite ajustar en que elemento de la

    sucesin {N k } comienza el generador.

  • 8/14/2019 Clase Programacin 15

    39/54

    Funciones Matemticas en C

    Ejemplo: Construir un programa en C para hallar lahipotenusa de un triangulo cuyos catetos son A y Bson aleatorios.

    A = Entero entre 0 y 8, B = Real entre 0 y 5.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 39

  • 8/14/2019 Clase Programacin 15

    40/54

    Ejercicios

    Construir un programa modular en C conacoplamiento de datos bsico para:

    1) Calcular f(x) = sen(2*x)+x4 para 2 puntos.2) Determinar las distancias entre 2 maquinas.3) Calcular el factorial de 2 nmeros.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 40

    4) Dado un conjunto de 2 nmeros, establecercuales son capica.Fase 1: Diseo y Anlisis:DES, DTD

    DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.

    Ej i i

  • 8/14/2019 Clase Programacin 15

    41/54

    Ejercicios

    Construir un programa modular en C conacoplamiento de datos bsico para:

    1) Calcular f(x) = sen(2*x)+x4 para N puntos.2) Determinar las distancias entre N maquinas.3) Calcular el factorial de N nmeros.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 41

    4) Dado un conjunto de N nmeros, establecercuales son capica.Fase 1: Diseo y Anlisis:DES, DTD

    DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.

    Ej i i

  • 8/14/2019 Clase Programacin 15

    42/54

    Ejercicios

    Construir un programa modular en C conacoplamiento de datos bsico para:

    5) Dado 2 puntos en R 2, determinar cuales seencuentra por encima, por debajo y sobre una rectadada por el usuario.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 42

    6) Dado 2 intervalos, calcular la sumatoria de losnmeros que contiene cada intervalo.Fase 1: Diseo y Anlisis:DES, DTD

    DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.

    Fase 2: Codificacin: programa modular en C.

    Ej i i

  • 8/14/2019 Clase Programacin 15

    43/54

    Ejercicios

    Construir un programa modular en C conacoplamiento de datos bsico para:

    5) Dado un conjunto de puntos en R 2, determinarcuales se encuentra por encima, por debajo y sobreuna recta dada por el usuario.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 43

    6) Dado N intervalos, calcular la sumatoria de losnmeros que contiene cada intervalo.Fase 1: Diseo y Anlisis:DES, DTD

    DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.

    Fase 2: Codificacin: programa modular en C.

    Ej i i

  • 8/14/2019 Clase Programacin 15

    44/54

    Ejercicios

    Construir un programa modular en C conacoplamiento de datos bsico para:

    7) Promediar los pares y promediar los impares delos nmeros entre A y B.8) Encontrar por Newton 1 solucin para f(x) = 0.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 44

    9) Encontrar 1 Mnimo de f(x) por 1+1.Fase 1: Diseo y Anlisis:DES, DTD

    DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.

    Ejercicios

  • 8/14/2019 Clase Programacin 15

    45/54

    Ejercicios

    Construir un programa modular en C conacoplamiento de datos bsico para:

    10) Dado un conjunto de puntos en R 2, determinarcual se encuentra ms alejado del origen.11) Dado N segmentos en R 3, determinar cual tiene

    Programacin Prof. Gonzalo Mller Clase 15 GM - 45

    menor longitud.Fase 1: Diseo y Anlisis:DES, DTDDES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.

    Resumen

  • 8/14/2019 Clase Programacin 15

    46/54

    Resumen

    Mdulos en C:Declaracin.

    Nombre, Tipos: parmetros y retorno.Definicin.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 46

    a otros mdulos.Variable de retorno.

    LlamadaSubrutinas: Sentencia de llamada.Funciones: Asignacin, Expresiones y Argumento.

    Funciones Matemticas en C.

  • 8/14/2019 Clase Programacin 15

    47/54

    LecturaExtra

    Programacin Prof. Gonzalo Mller Clase 15 GM - 47

    Declaracin y Definicin por Separado

    Otra forma de trabajar la programacin modular en C

    Declaracin y Definicin por Separado

  • 8/14/2019 Clase Programacin 15

    48/54

    Declaracin y Definicin por Separado

    Estructura bsica de un programa modular :

    // Declaraciones de mdulos//

    main()

    Programacin Prof. Gonzalo Mller Clase 15 GM - 48

    {

    }// Definiciones de mdulos

    //

    Declaracin y Definicin por Separado

  • 8/14/2019 Clase Programacin 15

    49/54

    Declaracin y Definicin por Separado

    Declaracin de un funcin : En la declaracin deuna funcin se debe establecer:

    El nombre de la funcin.El tipo de dato del valor de retorno.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 49

    .

    tipo tipo tipo tipo nombre ( tipo tipo tipo tipo parmetro1 , tipo tipo tipo tipo parmetro2 , );

    Tipo del Valor de RetornoNombre de la funcin

    Tipo del Parmetro 1 Tipo del Parmetro 2

    Declaracin y Definicin por Separado

  • 8/14/2019 Clase Programacin 15

    50/54

    Declaracin y Definicin por Separado

    Ejemplo: Declarar una funcin que calcule el cubo deun nmero:

    signed long cubo( signed short numero);

    Programacin Prof. Gonzalo Mller Clase 15 GM - 50

    Declaracin y Definicin por Separado

  • 8/14/2019 Clase Programacin 15

    51/54

    Declaracin y Definicin por Separado

    Declaracin de una subrutina : En la declaracin deuna subrutina se debe establecer:

    El nombre de la subrutina.El tipo de dato de cada uno de los parmetros.

    Programacin Prof. Gonzalo Mller Clase 15 GM - 51

    voidvoidvoidvoid nombre ( tipo tipo tipo tipo parmetro1 , tipo tipo tipo tipo parmetro2 , );

    Le indica al C que NO hay Valor de RetornoNombre de la funcin

    Tipo del Parmetro 1 Tipo del Parmetro 2

    Declaracin y Definicin por Separado

  • 8/14/2019 Clase Programacin 15

    52/54

    Declaracin y Definicin por Separado

    Ejemplo: Declarar una subrutina para escribir en lasalida un resultado numrico:

    void escribeResultado( float resultado);

    Programacin Prof. Gonzalo Mller Clase 15 GM - 52

    Declaracin y Definicin por Separado

  • 8/14/2019 Clase Programacin 15

    53/54

    Dec a ac y De c po Sepa ado

    // Declaraciones de mdulos//tipo modulo1 ( tipo parametro1 , ...);

    main(){

    Programacin Prof. Gonzalo Mller Clase 15 GM - 53

    variable1 = modulo1 ( variable2 );

    }// Definiciones de mdulos

    //tipo modulo1 ( tipo parametro1 , ...){

    }

    Declaracin y Definicin por Separado

  • 8/14/2019 Clase Programacin 15

    54/54

    y p p

    // Declaraciones de mdulos//float cubo( float numero);

    main(){

    Programacin Prof. Gonzalo Mller Clase 15 GM - 54

    x = cubo(2);

    }// Definiciones de mdulos

    //float cubo( float numero){

    return numero*numero*numero;

    }