Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+¦ol)

download Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+¦ol)

of 34

Transcript of Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+¦ol)

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    1/34

    Introduccin a la

    Programacin con C

    Copyright 2005

    Cdigo de Curso: CY320

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    2/34

    Volumen 4

    Funciones en C

    Copyright 2005

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    3/34

    Funciones

    Copyright 2005

    Unidad 1

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    4/34

    Copyright 2005

    Objetivos del Aprendizaje

    Explicar la naturaleza y usos de las unciones! "escribir algunas unciones incorporadas de C

    y explicar c#$o se usan!

    %dentiicar las dierentes partes del encabezado

    de una unci#n!

    "escribir los dierentes tipos de argu$entos!

    "einir los prototipos de unciones y sus usos!

    Explicar c#$o usar las unciones parasolucionar proble$as!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    5/34

    Copyright 2005

    %ntroducci#n

    &na unci#nes un progra$a autocontenido 'ue lleva

    a cabo una tarea espec(ica!

    &n progra$a en C es real$ente una colecci#n deuna o $)s unciones!

    As(*main()

    es en eecto una unci#n!

    +odos los progra$as en C deben tener una unci#nmain!

    ,os progra$as en C se inician con la ejecuci#n de la

    unci#nmain!

    &na unci#n to$a cero o $)s entradas* lleva a cabouna tarea espec(ica y retorna un solo valor co$oresultado!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    6/34

    Copyright 2005

    -unciones %ncorporadas en C

    ,as unciones incorporadas son a'uellas 'ue son

    parte de la librer(a est)ndar de C! .on dierentes a las unciones deinidas por el

    usuario las cuales son dise/adas y escritas por elprogra$ador para un uso espec(ico en lasaplicaciones!

    Algunas unciones incorporadas en C sonprintfscanf

    touppersqrt

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    7/34Copyright 2005

    1)s acerca de -unciones

    &na unci#n tiene las siguientes caracter(sticas

    +iene un no$bre 3nico o un identiicador!

    +rabaja con cero o $)s entradas 4par)$etros!

    ,as unciones ta$bi6n se pueden invocar dentro deotras unciones y se conoce co$o llamara una unci#n

    4calling)!

    ,a unci#n invocada desde otra unci#n se conoce co$ola funcin llamada(called).

    ,a funcin llamada ejecuta las sentencias 'ue son

    parte de la unci#n* llevando a cabo la tarea deseada yretorna a la unci#n 'ue la invoc#!

    ,a ejecuci#n se reanuda en la sentencia 'ue siguein$ediata$ente despu6s a la lla$ada de la unci#n!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    8/34Copyright 2005

    Caracter(sticas de las -unciones en C

    Algunas caracter(sticas relacionadas con -unciones

    en C son

    .e pueden crear unciones deinidas por el usuario!

    Orece dierentes $ecanis$os para

    7! 8asar entradas a la unci#n!

    2! Aceptar las entradas para luego procesarlas!

    9! :etornar un solo valor co$o resultado!

    ;! Controlar tareas internas involucradas en elproceso de invocar* transerir el control*

    ejecutar y retornar a la unci#n 'ue la invoc#!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    9/34Copyright 2005

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    10/34Copyright 2005

    8artes de una -unci#n

    &na unci#n tiene dos partes principales

    Encabezado de la unci#n! Cuerpo de la unci#n!

    El encaezado de funcintiene

    Especiicaci#n del tipo del valor a ser retornado por la

    unci#n! &n no$bre de unci#n* 'ue sigue las reglas para crear un

    identiicador!

    &n conjunto de argu$entos* datos pasados co$o entrada ala unci#n* 'ue est)n separados por co$as!

    El conjunto de argu$entos en un encabezado de unci#nes opcional!

    .i una unci#n no to$a ninguna entrada* el encabezadotendr) un no$bre de unci#n seguido por()!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    11/34Copyright 2005

    8artes de una -unci#n!!!2

    !l cuer"o de la funcin es el conjunto desentencias encerradas entre llaves { }#

    El conjunto de sentencias deine la tarea 'ue llevaa cabo la unci#n!

    El cuerpo de la unci#n puede contener lossiguientes tipos de sentencias

    .entencias "eclarativas!

    .entencias de Asignaci#n!

    .entencias Co$puestas! ,la$adas a -unciones!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    12/34Copyright 2005

    El cuerpo puede contener cero o $)s sentenciasreturn!

    ,as sentencia return ayudan a pasar el valor delresultado 3nico al progra$a 'ue hizo la lla$ada!

    Eje$plonombreFuncion(){ sentencias; return;

    }

    ,a sentencia return causa 'ue el progra$a 'ue

    lla$a inicie la ejecuci#n a partir de la sentencia 'uesigue in$ediata$ente despu6s a la lla$ada de launci#n!

    &so de -unciones en la .oluci#n de 8roble$as

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    13/34Copyright 2005

    -unciones y .entencias return

    ,as unciones con tipo de retorno voidno necesitan

    tener la sentencia returnexpl(cita$ente! ,a sentencia return en este caso se $antiene por

    dos razones

    ,a sentencia return se usa cuando hay $3ltiples

    condiciones veriicadas en una unci#n y la unci#ndebe inalizar su ejecuci#n* cuando una de suscondiciones se satisace!

    .e considera una buena pr)ctica de progra$aci#ninsertar una sentencia return a3n cuando hay unsolo punto de retorno en la unci#n!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    14/34Copyright 2005

    -unciones!!!Eje$plo 7"eter$inar el 1)xi$o de "os =3$eros Enteros/* Versin 1 */

    intmax(int x, int ){if(x !" )return (x);

    e#sereturn ();

    }/* Versin $ */intmax(int x, int ){ int maximo; if(x !" )

    maximo"x; e#se

    maximo"; return maximo;}

    ,a unci#n lla$adamaxretorna intco$o resultado!

    El cuerpo de la unci#n veriica cu)l de las variables es $ayor

    y retorna el valor!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    15/34Copyright 2005

    "eter$inar si un Entero es %$par

    int es%mpar(int x){ if(x & $ '" )

    return (1);e#se

    return ();}

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    16/34Copyright 2005

    Convertir un Car)cter de 1in3scula a 1ay3scula!

    c0arminama(c0ar en){ if(en !" 2a2 33 en 4" 252){

    return (en 6 2a2 7 22); }

    e#se{ return(en);

    }}

    8roponer una .egunda

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    17/34

    Copyright 2005

    -unciones !!! Eje$plo ;

    "eter$inar el -actorial de un Entero!

    int factoria#(int x){ int 8,fact;

    fact " 1; if(x "" 99 x "" 1) return (1);

    e#se{ for(8 " $; 8 4" x; 877) fact " fact * 8; return (fact); }}

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    18/34

    Copyright 2005

    Clases de Al$acena$iento

    En C se puede especiicar una clase de

    al$acena$iento en la declaraci#n! ,as clases de al$acena$iento se usan en C para

    deinir la visibilidad y el tie$po de vida de las variables!

    El or$ato es

    4c#ase6de6a#mac!4tipo6dato!nom6var; C tiene cuatro clases de al$acena$iento

    automatic

    extern

    re:ister

    static

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    19/34

    Copyright 2005

    Clase de Al$acena$iento tipo automatic

    ,as variables deinidas dentro de una unci#n se

    deno$inan variables locales 8or deecto las variables locales corresponde a laclase de al$acena$iento automatic#

    int f1(){

    int i; /* Variab#e automatic */

    f#oat f;

    sentencia1;

    sentencia$;

    sentencian;

    }

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    20/34

    Copyright 2005

    Clase de Al$acena$iento tipo re:ister

    ,a clase de al$acena$ientore:ister

    asigna$e$oria en los registros de altavelocidad de la C8& !

    .e usa para sugerirle al co$pilador 'ue una variablelocal auto$)tica sea guardada en un registro delprocesador* en vez de la $e$oria regular!

    int f1(re:isterint a}{

    re:isterint i;

    }

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    21/34

    Copyright 2005

    Clase de Al$acena$iento tipo static

    ,a clase de al$acena$iento static le inor$a al

    co$pilador 'ue los valores al$acenados en las variablesest)n disponibles entre lla$adas a unciones!main(){

    int i; /* # buc#e invoca #a funcin :enerar%dno */

    for(i " 1; i 4" 1; i77)printf(

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    22/34

    Copyright 2005

    Clase de Al$acena$iento tipo extern

    ,as variables cuya deinici#n est) uera de cual'uier

    unci#n 4incluyendo la unci#n $ain4pertenecen a laclase de al$acena$iento extern!

    ,as variables de tipo externson visibles a trav6s delprogra$a* a partir del punto en 'ue son deinidas hastael inal del )$bito establecido para ellas!

    Cual'uier ca$bio 'ue se haga a los valores de lasvariables de tipo extern aectan al resto delprogra$a!

    >.e puede tener una variable declarada co$o

    externen otro archivo?

    $a res"uesta es s%#

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    23/34

    Copyright 2005

    Clase de Al$acena$iento tipo extern!!!2

    /* rc0ivo1?c */

    int 8, m;

    main(){

    }

    /* rc0ivo$?c*/int 8,@; extern int m;int f1(){

    }int n;int f$(){ }

    /* rc0ivoA?0 */

    /* .os prototipos defunciones estBn en Cstearc0ivo */

    int f1(); int f$();

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    24/34

    Copyright 2005

    Archivos de Encabezados 4header

    ,os archivos de Encabezados 4header centralizan las

    deiniciones y declaraciones! 8er$ite tener una sola copia $ientras se desarrolla el

    progra$a acilitando el $anteni$iento!

    En el eje$plo* el contenido co$3n se coloca en Archivo9!hconocido co$o un arc&i'o &eader'ue se incluye a trav6s dela sentencia (include@Archivo9!h en los archivos Archivo7!cy Archivo2!c!

    El $ecanis$o de c#$o co$pilar y cargar un progra$a en C'ue reside en varios archivos uente var(a de un siste$a aotro!

    En &=%B* el co$ando ccrealiza el enlace

    cc rc0ivo1?c rc0ivo$?c rc0ivoA?0

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    25/34

    Copyright 2005

    :esu$en

    .e explic# la naturaleza y uso de las unciones!

    .e describieron algunas unciones incorporadas de C yc#$o se usan!

    .e identiicaron las dierentes partes del encabezadode una unci#n!

    .e estudiaron los dierentes tipos de argu$entos!

    .e deini# el concepto de prototipos de unciones y yse estableci# sus usos!

    .e estudiaron los tipos de al$acena$iento!

    .e discuti# las ventajas de los archivos deencabezado!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    26/34

    Copyright 2005

    Unidad 3

    )ecursin

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    27/34

    Copyright 2005

    Objetivos del Aprendizaje

    Explicar el concepto de recursi#n!

    "iscutir las dierentes condiciones 'ue deben sersatisechas para 'ue las unciones recursivastrabajen correcta$ente!

    "escribir c#$o una unci#n recursiva trabajacuando se ejecuta!

    "einir el rol de la pila en la ejecuci#n de lasunciones recursivas!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    28/34

    Copyright 2005

    %ntroducci#n

    ,a palabra recursi#n tiene ra(z latina re 'ue signiicaDregresar y el suijo latin currere*signiica Dcorrer!

    ,a palabra recursi#n literal$ente signiica correr haciaatr)s* o 'ue suceda otra vez* especial$ente en unintervalo espec(icoD!

    En el contexto de la progra$aci#n de co$putadoras* lapalabra recursin se reiere a una funcin *ue esca"az de llamarse as% misma#

    Eje$plo

    intmecursive(int x){ mecursive(x61);}

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    29/34

    Copyright 2005

    "einici#n de :ecursi#n

    &na deinici#n de recursion es

    +Una t,cnica algor%tmica donde una funcin "araacometer una tarea- se llama a s% misma con'alores modificados de sus argumentos.#

    :ecursi#n es real$ente una t6cnica algor(t$ica 'ue se

    e$plea para resolver ciertos proble$as! En el contexto de un progra$a en C* la recursi#n

    i$plica una unci#n en C 'ue puede ser lla$ada desdeel cuerpo de la $is$a unci#n!

    Cuando una unci#n se lla$a a s( $is$a* lo hace conDvalores $odiicados de sus argu$entos usual$ente* atrav6s de los par)$etros 'ue son pasados en lalla$ada!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    30/34

    Copyright 2005

    Escribir -unciones :ecursivas

    Calcular el -actorial de un Entero

    !/em"lo de Factorial:

    -actorial de 5 F 5 x ; x 9 x 2 x 7=

    720

    efinicin del Factorial:

    0G F 7nG F n x 4n7 x 4n2 x H x 7 para n I 0

    .e escribe el actorial de nco$o n' y se lee n6actorial!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    31/34

    Copyright 2005

    Calcular el -actorial de un Entero :ecursiva$ente

    El actorial se puede ta$bi6n deinir usando inducci#n

    $ate$)tica* es decir* recursiva$ente* co$o siguen'" n x (n61)' paran !

    '" 1 paran "

    ,a deinici#n or$al recursiva del actorial den

    es

    if (n"")return 1;

    e#sereturn factoria#(n61) * n;

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    32/34

    Copyright 2005

    :ecursi#n vs %teraci#n

    +odas las soluciones recursivas pueden

    nor$al$ente ser resueltas usando iteraciones*$ientras lo contrario no es verdadero!

    &n c#digo recursivo es co$pacto* )cil de escribiry )cil de entender!

    El c#digo* sin e$bargo* no ahorra tie$po niespacio!

    8ara proble$as sencillos co$o el actorial*-ibonacci* etc!* las soluciones iterativas son $)s

    econ#$icas en t6r$inos de espacio y tie$po!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    33/34

    Copyright 2005

    :esu$en

    Explicar el concepto de recursi#n!

    "iscutir las dierentes condiciones 'ue deben sersatisechas para 'ue las unciones recursivas trabajencorrecta$ente!

    "escribir c#$o una unci#n recursiva trabaja cuandose ejecuta!

    "einir el rol de la pila en la ejecuci#n de las uncionesrecursivas!

  • 7/23/2019 Intro to Programming Using C Master Visuals Vol 4 V3 (Espa+ol)

    34/34

    Unidad 2

    $aoratorio de Funciones

    Unidad 4

    $aoratorio de )ecursin