unidad 6

41
Hasta esta etapa del curso, has aprendido a utilizar las estructuras de control para diseñar soluciones de problemas simples. También has conocido diferentes formas de representar los datos involucrados en un problema, desde simples hasta estructurados (como arreglos, cadenas y estructuras). Sin embargo, todas las soluciones propuestas constan únicamente de un módulo (función), llamado principal (en C, main); lo cual no es conveniente cuando se trata de problemas complejos que requieran de una serie de tareas para lograr su solución, pues ésta sería muy grande y, por lo tanto, difícil de corregir o modificar. Unidad 6. Funciones Presentación de la unidad Da clic en la flecha para continuar. 1 de 4

description

¿Cuál es la condición que completa el siguiente codigo?if() printf("El valor de n está dentro del intevalo [5,10]\n");elseprintf("El valor de n está fuera del intevalo [5,10]\n");

Transcript of unidad 6

  • 27/3/2015 Presentacindelaunidad

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/00_FPR_U6_Presentacion/00_FPR_U6_Presentacion_p1.html 1/1

    Hastaestaetapadelcurso,hasaprendidoautilizarlasestructurasdecontrolparadisearsolucionesdeproblemassimples.Tambinhasconocidodiferentesformasderepresentarlosdatosinvolucradosenunproblema,desdesimpleshastaestructurados(comoarreglos,cadenasyestructuras).Sinembargo,todaslassolucionespropuestasconstannicamentedeunmdulo(funcin),llamadoprincipal(enC,main)locualnoesconvenientecuandosetratadeproblemascomplejosquerequierandeunaseriedetareasparalograrsusolucin,puesstaseramuygrandey,porlotanto,difcildecorregiromodificar.

    Unidad6.Funciones

    Presentacindelaunidad

    Daclicenlaflechaparacontinuar. 1de4

  • 27/3/2015 Presentacindelaunidad

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/00_FPR_U6_Presentacion/00_FPR_U6_Presentacion_p2.html 1/1

    Lorecomendableescrearmdulosindependientesquerealicencadaunadelastareasespecficasyqueenconjuntoimplementenlasolucindelproblema.Aestametodologaselellamadiseomodular,yestinspiradoenlaestrategiadivideyvencers.

    Enestaunidadseexplicarnlasfunciones,quesonelmedioporelcualseimplementanlosmdulosenlenguajeC.Sepresentarlasintaxisparacrearunafuncinylaformaenlaqueseutilizan.Adems,seresolverunproblemautilizandoeldiseomodularparaejemplificareltema.

    Unidad6.Funciones

    Presentacindelaunidad

    Daclicenlasflechasparaavanzaroretroceder. 2de4

  • 27/3/2015 Propsitosdelaunidad

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/00_FPR_U6_Presentacion/00_FPR_U6_Presentacion_p3.html 1/1

    Enestaunidad:

    Identificarslossubproblemasenquesepuededividirunproblema.Disearsalgoritmosmodularesparasolucionarunproblema.ConstruirsfuncionesenlenguajeCquerealicentareasespecficas.

    Unidad6.Funciones

    Propsitosdelaunidad

    Daclicenlasflechasparaavanzaroretroceder. 3de4

  • 27/3/2015 Competenciaespecfica

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/00_FPR_U6_Presentacion/00_FPR_U6_Presentacion_p4.html 1/1

    ImplementarfuncionespararesolverproblemasatravsdeldesarrollodeprogramasmodularesescritosenlenguajeC.

    Unidad6.Funciones

    Competenciaespecfica

    Paracomenzarlaunidad,dacliceneltema6.1.Diseodescendente. 4de4

  • 27/3/2015 6.1.Diseodescendente

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/01_FPR_U6_6_1/01_FPR_U6_Tema_6_1_p1.html 1/1

    Ladescomposicindeunprogramaenmdulosmspequeosseconocecomoelmtododedivideyvencers(divideandconquer)odiseodescendente(topdown).Consisteendividirunproblemaenunidadesmspequeassucesivashastaqueseandirectamenteejecutadasporelprocesador,enotraspalabras,lasolucindelproblemasedivideunayotravezhastaqueestexpresadaentrminosdeestructurasdecontrol,cadaunodelosnivelesopasossucesivosseconocecomorefinamiento(stepwise).

    Unidad6.Funciones

    6.1.Diseodescendente

    Daclicenlaflechaparacontinuar. 1de5

  • 27/3/2015 6.1.Diseodescendente

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/01_FPR_U6_6_1/01_FPR_U6_Tema_6_1_p2.html 1/1

    Lametodologadeldiseodescendenteconsisteenefectuarunarelacinentrelasetapasdeestructuracindemaneraqueserelacionenentresatravsdeentradasysalidasdedatos.Esdecir,sedescomponeelproblemaenetapasdeestructuracinjerrquicas,deformaquesepuedaconsiderarcadaestructuradesdedospuntosdevista:quhace?ycmolohace?

    Conloanteriorpodemosdecirque:unmdulosecaracterizaporrealizarunatareaespecfica,poseesuspropiosdatosdeentradallamadosparmetrosdeentradaysuresultadollamadosalidaovalorderetorno.Eldiseodecadamdulodebeserindependientedelosotrossiesnecesarioqueexistacomunicacinentreellos,stanicamentepodrrealizarseatravsdelosparmetrosdeentradaydelvalorderetorno.Enestesentido,puedeservisto,porotrosmdulos,comounacajanegraquehaciaelexteriorslomuestraquhaceyqunecesita,peronocmolohace.

    Unidad6.Funciones

    6.1.Diseodescendente

    Daclicenlasflechasparaavanzaroretroceder. 2de5

  • 27/3/2015 6.1.Diseodescendente

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/01_FPR_U6_6_1/01_FPR_U6_Tema_6_1_p3.html 1/1

    Unidad6.Funciones

    6.1.Diseodescendente

    Daclicenlasflechasparaavanzaroretroceder. 3de5

  • 27/3/2015 6.1.Diseodescendente

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/01_FPR_U6_6_1/01_FPR_U6_Tema_6_1_p4.html 1/1

    Noexisteunmtodoparasaberencuntosmdulossedebedividirunproblema,sinembargoesimportantetenerencuentalossiguientesprincipiosdeldiseomodular:

    Laspartesaltamenterelacionadasdebenperteneceraunmismomdulo.Laspartesnorelacionadasdebenresidirenmdulosdiferentes.

    Paraejemplificarestaformaderesolverproblemasycmoimplementarla,sepresentalasiguientesituacin:

    DaclicenelconoparadescargarelEjemplo6.1.

    Unidad6.Funciones

    6.1.Diseodescendente

    Daclicenlasflechasparaavanzaroretroceder. 4de5

  • 1Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

    Fundamentos de ProgramacinUnidad 6. Funciones6.1. Diseo descendente

    Fundamentos de ProgramacinUnidad 6. Funciones6.1. Diseo descendente

    Problema 6.1: Realiza el anlisis y diseo de un programa que lea las temperaturas promedio mensuales registradas en una ciudad a lo largo de un ao y calcule el promedio anual. Adems, debe convertir las temperaturas mensuales dadas en grados Celsius a grados Fahrenheit al igual que el promedio.

    Empecemos por hacer un bosquejo de los pasos que se tienen que realizar para llegar al resultado deseado. 1. Leer las doce temperaturas promedio mensuales 2. Calcular el promedio anual de las temperaturas3. Convertir las temperaturas promedio mensuales de Celsius a Fahrenheit4. Convertir el promedio anual de temperaturas a Fahrenheit5. Imprimir las temperaturas mensuales en grados Fahrenheit y el promedio anual de las temperaturas,

    en Celsius y Fahrenheit.

    Para registrar las temperaturas mensuales proponemos utilizar un arreglo de tamao 12. Y de acuerdo con lo anterior, proponemos tres mdulos: El primero encargado de leer las temperaturas mensuales dadas en grados Celsius, este mdulo necesita el nombre del arreglo donde va a almacenar los datos. Otro mdulo encargado de calcular el promedio de las temperaturas, que recibe como parmetros de entrada el arreglo con las temperaturas mensuales y devuelve el promedio en grados Celsius. El ltimo mdulo slo convierte grados Celsius a grados Fahrenheit. Esta informacin se resume en el diagrama modular que se muestra a continuacin.

    Principal

    Datos entrada: temps[ ]

    Salida:tempsF[ ], promeF y promC

    aFahrenheit

    Parmetros Entrada: tempC

    Valor de retorno:tempF

    promTemps

    Parmetros Entrada: temps[ ]

    Valor de retorno:prom

    leerTempsParmetros Entrada:

    temps[ ] (arreglo donde leer los datos)

    Valor de retorno:Ninguno (actualiza los

    temps[ ])

    Figura 6.1: Diagrama modular del problema 6.1

    Es mediante un diagrama modular como se representan de manera grfica los mdulos que integran la solucin del problema. Y una vez que se han definido, el siguiente paso es disear el algoritmo de cada uno de ellos.

    En primer lugar se muestra el pseudocdigo de los mdulos secundarios.

  • 2 Educacin Superior Abierta y a Distancia Carrera

    Fundamentos de ProgramacinUnidad 6. Funciones6.1. Diseo descendente

    Mdulo leerTemps(temp[ ]) Inicio

    Desde mes 1 mientras mes 12, mes mes + 1

    Imprimir Proporciona la temperatura del

    mes, mesLeer temps[mes-1]

    Fin_DesdeFin

    Algoritmo 6.1: Algoritmo del mdulo leerTemps(temp[])

    Observa que el ciclo del mdulo leeTemps se inicia con mes igual a 1 y termina cuando mes es 13, se propone as porque se pide la temperatura de los mes 1, 2, 3,.. 12, as que la variable mes guardara el nmero de mes correspondiente a cada lectura, sin embargo para almacenar la temperatura en la posicin del arreglo indicada se resta uno (temps[mes-1]), as se guarda desde la posicin 0 y hasta la posicin 11.

  • 3Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

    Fundamentos de ProgramacinUnidad 6. Funciones6.1. Diseo descendente

    Fundamentos de ProgramacinUnidad 6. Funciones6.1. Diseo descendente

    Mdulo promTemps(temp[]) Inicio

    suma 0Desde mes 0 mientras mes 11, mes mes + 1

    suma suma + temps[mes]]Fin_DesdeRegresa (suma/12)

    Fin

    Algoritmo 6.2: Algoritmo del mdulo promTemps(temp[])

    En contraste con el ciclo del mdulo leerTemp, en este mdulo el contador del ciclo se inicia en 0 y termina en 11 (aunque el valor que tiene al finalizar el ciclo es 12) pues se utiliza para ir sumando cada uno de los elementos del arreglo, as que la variable mes indicar cada una de las posiciones del arreglo.

    Mdulo aFahrenheit(tempC)Inicio

    tempF = tempC + 32Regresa tempF

    Fin

    Algoritmo 6.2: Algoritmos de mdulos secundarios del problema 6.1 (pseudocdigo)

  • 4 Educacin Superior Abierta y a Distancia Carrera

    Fundamentos de ProgramacinUnidad 6. Funciones6.1. Diseo descendente

    Mdulo PrincipalInicio

    /* Lectura de las temperaturas, invocando al mdulo leerTemps */Imprimir Ingresa los promedios de temperaturas mensualesleerTemps(temps[])

    /* Clculo del promedio utilizando el mdulo promTemps */promC promTemps(temps[])

    /* Conversin del promedio a grados Fahrenheit, invocando al mdulo aFahrenheit */promF aFahrenheit(promC)

    /* Conversin de las temperaturas mensuales a grados Fahrenheit */Desde mes 0 mientras mes 11, mes mes + 1tempsF[mes] aFahrenheit(temps[mes])Fin_Desde

    /* Impresin de temperaturas mensuales en Fahrenheit */Desde mes 1 mientras mes 12, mes mes + 1 Imprimir Temperatura en Fahrenheit del mes, mes, es: , tempF[mes-1]Fin_Desde

    /* Impresin del promedio en grados Celsius y grados Fahrenheit */Imprimir El promedio en grados Celsius es: , promCImprimir El promedio en grados Fahrenheit es: , promF

    Fin

    Algoritmo 6.4: Algoritmo del mdulo principal del problema 6.1 (pseudocdigo)

    Por esta ocasin se te deja como ejercicio que realices las representaciones en diagrama de flujo del mdulo principal, considerando que el smbolo que se utiliza para llamar a mdulos que no devuelven ningn valor, como es el caso de leerTemps , se muestra a continuacin:

    leerTemps(temp[])

    Esto no es caso, del resto de los mdulos secundarios que s devuelven un valor, as que se utiliza el smbolo de proceso (rectngulo).

  • 27/3/2015 6.1.Diseodescendente

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/01_FPR_U6_6_1/01_FPR_U6_Tema_6_1_p5.html 1/1

    Conelejemplo,resaltanvariasventajasqueproporcionaundiseomodular:

    1. Esposiblereutilizarcdigo,staesindudablementeunadelasmsimportantesyaquenoesnecesarioescribirelmismocdigocadavezquedeseamosrealizarunatareasemejante.Porejemplo,elmduloaFahrenheitseutiliza13veces(12enelcicloyunaparaconvertirelpromedio)yslobastdefinirlounavez.

    2. Fcildeteccinycorreccindeerrores,dadoqueelproblemafuedividoenpequeosmduloscadaunoresponsabledeunatarea,sienalgnmomentoexistieraunerrorenlasolucinglobal,bastaidentificarculdelastareaseslaquenoseestresolviendoadecuadamenteycorregirnicamenteaquellosmdulosinvolucrados.

    3. Fcilmodificacinoextensin,siserequieremodificarunatareadelproblemaoagregarunanueva,nosernecesariorediseartodoelalgoritmo,bastaconhacerlasmodificacionesenlosmdulospertinentes.

    Unproblemasevuelvemssencillodesolucionarsipensamosdemaneramodular.

    Unidad6.Funciones

    6.1.Diseodescendente

    DaclicenlaActividad1.Foro:Funciones. 5de5

  • 27/3/2015 Actividad1.Foro:Funciones

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/02_FPR_U6_Actividad1/02_FPR_U6_Actividad1_p1.html 1/1

    Esteforoesunespaciodondeentreestudiantespodrncompartirideas,experiencias,dudas,hallazgosylogrosentornoalasFuncionesenLenguajeCylasventajasdeldiseodescendente.

    Indicaciones:

    Apartirdelasolucinmodulardelproblemaqueplanteasteenlasunidadesanteriores,reflexionasobrelasventajasdeldiseodescendenteylasfuncionesenLenguajeC.Comparteentusreflexionesyconformeavanceseneldiseomodulardetuproblema,ingresatuscomentariosenelForo.

    Paraingresaralforo:Enlaruta(partesuperiorizquierdadelaula)daclicenFundamentos.SeenlistarnlasactividadesdelaUnidaddaclicenlaActividad1.ForoFunciones.

    Unidad6.Funciones

    Actividad1.Foro:Funciones

    Alterminartuparticipacinenelforo,daclicenelTema6.2.Definicin,declaracineinvocacindefuncionesenC. 1de1

  • 27/3/2015 6.2.Definicin,declaracineinvocacindefuncionesenC

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/03_FPR_U6_6_2/03_FPR_U6_Tema_6_2_p1.html 1/1

    EnelcasoparticulardeC,unmduloseimplementacomounafuncin,recuerdaqueenlaunidad3seexplicqueunprogramaenCestintegradodevariasfunciones,dondeunafuncinsedefinecomounaporcindecdigo(unconjuntodeinstruccionesagrupadasporseparado)enfocadoarealizarunatareaenespecfico,resaltandolafuncinprincipalmain.

    Aligualquelafuncinprincipal,cadaunadelasfuncionesexistedemaneraindependiente,tienesuspropiasvariables,instruccionesyunnombrequelasdistinguedelasotras.

    Ademsdelosparmetrosdeentrada(tambinllamadosargumentos)querecibeyeltipodedatoqueregresa.

    Unidad6.Funciones

    6.2.Definicin,declaracineinvocacindefuncionesenC

    Daclicenlaflechaparacontinuar. 1de5

  • 27/3/2015 6.2.Definicin,declaracineinvocacindefuncionesenC

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/03_FPR_U6_6_2/03_FPR_U6_Tema_6_2_p2.html 1/1

    Elindicaeltipodedatoquelafuncindevuelve(puedesercualquieradelostiposbsicos),paralocualseutilizalapalabrareservadareturn.Cuandolafuncinnovaadevolverningndatoseespecificamedianteeltipovoidynodebeincluirlapalabrareservadareturn.

    Eleselnombrequelevamosadaralafuncinymedianteelcualvamosahacerreferenciaaella.Sedebenseguirlasmismasreglasquelosidentificadoresdelasvariablesyserecomiendaqueseanemnicos.Enseguidadelnombreyentreparntesisvalalistadeparmetros,queconsistedeunalistadedeclaracionesdevariableslocalesquevanacontenerlosdatosdeentradaparalafuncin,sedebeespecificarexplcitamenteeltipoynombreparacadauno,separadosporcomas,ancuandoseandelmismotipo:tipo1param1,tipo2param2,,tipoNparamN.Porltimo,lasinstruccionesdelcuerpodelafuncinvanentrellaves.

    Unidad6.Funciones

    6.2.Definicin,declaracineinvocacindefuncionesenC

    Daclicenlasflechasparaavanzaroretroceder. 2de5

  • 27/3/2015 6.2.Definicin,declaracineinvocacindefuncionesenC

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/03_FPR_U6_6_2/03_FPR_U6_Tema_6_2_p3.html 1/1

    Laprimeralneadeladefinicindeunafuncinseconocecomoencabezadodelafuncin(eninglsheader).

    Parailustraresto,acontinuacinsemuestralacodificacindelmduloaFahrenheitdefinidoeneltemaanterior.

    floataFahrenheit(floattempC){

    return((9.0/5.0)*tempC+32)

    }

    Programa6.1:CodificacindelmduloaFahrenheit

    Unidad6.Funciones

    6.2.Definicin,declaracineinvocacindefuncionesenC

    Daclicenlasflechasparaavanzaroretroceder. 3de5

  • 27/3/2015 6.2.Definicin,declaracineinvocacindefuncionesenC

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/03_FPR_U6_6_2/03_FPR_U6_Tema_6_2_p4.html 1/1

    Lallamadaoinvocacinaunafuncinserealizacuandoserequierequeseejecutenlasinstruccionesdelcuerpoconvaloresdeentradadeterminados.Parainvocaraunafuncinsetienequeescribirelnombreseguidodelosvaloresquedebencoincidirconelorden,nmeroytipodelosparmetrosdeentradadadosenladefinicindelafuncinydebenestarencerradosentreparntesis.

    Lasintaxisgeneralparainvocarunafuncinyaseapredefinidaodefinidaporelprogramador,eslasiguiente:

    ()

    Losparmetrosdeentradadeunafuncinsonvalores,porloquepuedenestardeterminadospor:valoresconstantes(8,a,5.2,cadenaconstante),unavariable(loquerealmentesepasaalafuncineselvaloralmacenado)ounaexpresin(elparmetrodeentradarealeselresultadodelaevaluacin).Porejemplo,lallamadaalafuncinquedefinimosseremarcaenlasiguienteinstruccin:

    promF=aFahrenheit(promC)

    Unidad6.Funciones

    6.2.Definicin,declaracineinvocacindefuncionesenC

    Daclicenlasflechasparaavanzaroretroceder. 4de5

  • 27/3/2015 6.2.Definicin,declaracineinvocacindefuncionesenC

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/03_FPR_U6_6_2/03_FPR_U6_Tema_6_2_p5.html 1/1

    Aligualquelasvariablesunafuncindebedeserdeclaradaantesdeutilizarse,esdecir,antesdeinvocarla.Ladeclaracindeunafuncinserealizaescribiendoelprototipodelafuncin.Elprototipodeunafuncincoincideconelencabezadodelamismaterminandoconpuntoycoma()Elprototipodeunafuncinsloindicaalcompiladorqueexisteycmoes,msnoloquehaceporlotantosedebedefinirdespus.Porejemplo,elprototipodelafuncinantesdefinidasera:

    floataFahrenheit(floattempC)

    Cabesealarqueenelprototipodelasfuncionessepuedeomitirlosidentificadoresdelosparmetros,msnolostipos.

    Parailustrartodoloanterior,daclicaquyobservalacodificacindelalgoritmomodulardiseadoenlaseccinanterior.

    Unidad6.Funciones

    6.2.Definicin,declaracineinvocacindefuncionesenC

    DaclicenlaActividad2.Funciones. 5de5

  • Unidad 6. Funciones

    6.2. Definicin, declaracin e invocacin de funciones en C

    Codificacin del algoritmo modular promedioTemp.c /* Programa: promedioTemp.c

    * Descripcin: Calcula el promedio de las temperaturas promedio

    * mensuales registrada a lo largo de un ao*/

    /* Biblioteca */ #include

    #include

    /* Variables globales */ int meses = 12;

    /* Prototipos de las funciones */

    /* Funcin que lee las temperaturas promedio mensuales registradas en

    un ao*/ void leerTemps( float temps[]);

    /* Funcin que calcula el promedio de las temperaturas promedio mensuales

    registradas en un ao*/ float promTemps( float temps[]);

    /* Funcin que convierte de grados Celsius a grados Fahrenheit */ float aFahrenheit(float tempC);

    /* Funcin principal */ main()

    {

    /* Declaracin de variables locales a main */ float temps[12], tempsF[12], promF, promC;

    int mes;

    /* Lectura de las temperaturas, invocando a leerTemps*/ printf(Ingresa los promedios de temperaturas mensuales\n); leerTemps(temps);

    /* Clculo del promedio utilizando la funcin promTemps*/ promC = promTemps(temps);

  • /* Conversin del promedio a grados Fahrenheit, invocando al

    mdulo aFahrenheit*/ promF = aFahrenheit(promC);

    /* Conversin de las temperaturas promedio mensuales a grados

    Fahrenheit, invocando al mdulo aFahrenheit*/ for(mes = 0; mes

  • Figura 6.2: Ejecucin del programa promedioTemp.c

  • 27/3/2015 Actividad2.Funciones

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/04_FPR_U6_Actividad2/04_FPR_U6_Actividad2_p1.html 1/1

    Enestaactividadpresentarsunaversinpreliminardelprogramaquehastrabajadocomopartedelasevidenciasdeaprendizajeanteriores,elcual,ahoradebeincorporarmdulosparahacermseficientesufuncionamiento.

    1. Retomaelprogramaqueenviastecomoevidenciaenlaunidadanterioryrealizaunapropuestaparadividirloenmdulos.Justificaporqudecidisteproponercadamdulo.

    2. RealizaunaprimeraversindelalgoritmoenpseudocdigoodiagramadeflujoyenvaloatuFacilitador(a).

    Paraenviartudocumento:Enlaruta(partesuperiorizquierdadelaula)daclicenFundamentos.Seenlistarnlasactividadesdelaunidad,daclicenlaActividad2.Funciones.

    Unidad6.Funciones

    Actividad2.Funciones

    Alconcluirlaactividaddacliceneltema6.3.Alcancedelasvariables. 1de1

  • 27/3/2015 6.3.Alcancedelasvariables

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/05_FPR_U6_6_3/05_FPR_U6_Tema_6_3_p1.html 1/1

    Elalcancedelasvariableseslapartedelprogramadentrodelacualsepuedenutilizar.Cuandosondeclaradasfueradelcuerpodecualquierfuncinsedenominanvariablesglobalesypuedenserutilizadasencualquierpuntodelprogramaapartirdellugardondefuerondeclaradas,encambiocuandosondeclaradasdentrodelcuerpodealgunafuncinsedenominanvariableslocales,esdecirslodentrodeesafuncinpuedenserutilizadas.

    Lasvariableslocalesquetienenelmismonombreperofuerondeclaradasendiferentesfunciones,notienenrelacin,sonespaciosdememoriatotalmenteindependientesunodeotro.Podemosdecirque,soncomodospersonasdiferentesquetienenelmismonombre.

    Lasvariablesqueseponencomoargumentosenladeclaracindeunafuncinseconsideranlocalesastas.

    Daclicaquparaverunejemplo.

    Unidad6.Funciones

    6.3.Alcancedelasvariables

    Daclicenlaflechaparacontinuar. 1de3

  • 27/3/2015 6.3.Alcancedelasvariables

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/05_FPR_U6_6_3/05_FPR_U6_Tema_6_3_p2.html 1/1

    Alutilizarvariablesglobalestodaslasfuncionespuedenmanipularlas,susvalorespermanecenmientraselprogramaestenejecucin.Sinembargo,suusopuedepromovererroresdetipolgico,yaquealmodificarelvalordeunavariabledentrodeunafuncinpuedeafectarelresultadodeotra.

    Porejemplo,supongamosquelafuncininicializaA()modificaelvalordelavariableTAMquealmacenaelnmerodeelementosdelarregloA,estecambiorepercutirenlosciclosdelafuncinmain,loscualesimprimenelarregloA.Enestecasoseproducirunerrorenlaejecucin,puessielvaloresmenoracinconoseimprimirntodoslosvaloresyseesmayorentonceshabrelementosindefinidos.Detectarycorregirestetipodeerrorespuedeserunatareanadafcil,porloquenoserecomiendaelusodevariablesglobales,locualnoocurresisonconstantes.

    Unidad6.Funciones

    6.3.Alcancedelasvariables

    Daclicenlasflechasparaavanzaroretroceder. 2de3

  • 27/3/2015 6.3.Alcancedelasvariables

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/05_FPR_U6_6_3/05_FPR_U6_Tema_6_3_p3.html 1/1

    Lasvariableslocalesporotraparte,favorecenmucholareutilizacindecdigoylamodularidad,yaquecadafuncindeclaraymanipulasuspropiasvariablessindependerdeloqueocurraenotrasfunciones,estonosignificaquealutilizarsolamentevariableslocalesnoseaposiblecompartirdatosentrelasdiferentesfunciones,estosehacemediantesusdatosdeentradayretorno,unaposibledesventajaesqueelvalordelasvariableslocalessepierdecadavezquelafuncintermina.

    Unidad6.Funciones

    6.3.Alcancedelasvariables

    Dacliceneltema6.4.Pasodeparmetros. 3de3

  • 27/3/2015 6.4.Pasodeparmetros

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/06_FPR_U6_6_4/06_FPR_U6_Tema_6_4_p1.html 1/1

    Elpasodeparmetrosserefierealaformaenlaquesetransfierencomoparmetrounavariableaunafuncin,esencialmente,siseleotorganonopermisosparamodificarlosvaloresoriginales.Cuandonoseleotorgapermisosparaquelamodifiquesedicequeespasodeparmetrosporvalor,puesenestecasoslosetransfiereelvalordelavariable,elcualsealmacenaenunavariablelocaldelafuncinqueseestllamando.

    Encambio,cuandolafuncinpuedemodificarelvalordelavariablesedicequeesunpasodeparmetroporreferencia,puesenestecasonosepasasloelvalorsinoladireccindememoriaquelecorrespondealavariable.

    Enlossiguientessubtemasseexplicamsadetallelosdostiposdepasodeparmetro.

    Unidad6.Funciones

    6.4.Pasodeparmetros

    Daclicenelsubtema6.4.1.Porvalor. 1de1

  • 27/3/2015 6.4.1.Porvalor

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/07_FPR_U6_6_4_1/07_FPR_U6_Tema_6_4_1_p1.html 1/1

    Cuandoserealizaunallamadaaunafuncinporvaloryenstaapareceunavariablecomounodelosargumentos,enrealidadnoseestpasandolavariablesinounacopiadelvalorquestacontiene,locualimplicaquesidentrodelafuncinsemodificaelargumentoestonosevereflejadoenelprogramadesdeelcualsehizolallamada,puessonlocalidadesdememoriadiferentes(recuerdaqueencadallamadaaunafuncinsecreannuevasvariablesysedestruyenunavezfinalizalaejecucin).

    DaclicenelconoparadescargarlailustracindelPrograma6.3.

    Unidad6.Funciones

    6.4.1.Porvalor

    Daclicenelsubtema6.4.2.Porreferencia. 1de1

  • 1Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

    Fundamentos de ProgramacinUnidad 6. Funciones6.4.1. Por valor

    Fundamentos de ProgramacinUnidad 6. Funciones6.4.1. Por valor

    Ejemplo de llamada a una funcin por valor

    #include#include

    void inicializa(int a){ a = 0;printf(\nEl valor de la variable local \a\ es %d\n\n,a);}

    main(){int a=10;

    /* Llamada a la funcin incializa */printf(\nEl valor de \a\ antes de la llamada es %i\n\n, a); inicializa(a); printf(\nEl valor de \a\ despues de la llamada es %i\n\n, a);

    system(pause);}

    Programa 6.3: porValor.c

    La ejecucin del programa es:

    Figura 6.3: Ejecucin del programa pasoValor.c

    En la ejecucin puedes ver que la variable local a main no se modifica, esto es porque se pasa una copia del valor que almacena cuando se realiza la llamada a la funcin inicializa(a). Este valor se guarda en un espacio de memoria, tambin llamado a, que es una variable local a la funcin y que existe mientras sta se ejecuta. Observa que el cambio si se realiza en la variable local de la funcin inicializa.

  • 27/3/2015 6.4.2.Porreferencia

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/08_FPR_U6_6_4_2/08_FPR_U6_Tema_6_4_2_p1.html 1/1

    Lallamadaaunafuncinporreferenciasmodificaelvalordelavariable,puesloquerealmenteseestpasandoesladireccindememoriaasignadaalavariableparaquelafuncinpuedamodificarelvalor.

    EnClosarreglossiempresepasanporreferencia,yaqueelnombredelarregloenrealidadalmacenaladireccindememoriadondeseencuentraalmacenadoelprimerelementodelarreglo.Deestamaneracuandoserealizaunallamadaaunafuncinyseescribeelidentificadordeunarreglocomoparmetro,seestpasandoladireccin.

    ParaejemplificarloanteriorsemuestralaejecucindelprogramapasoReferencia.cquesepresentenunsubtemaanterior.

    DaclicenelconoparadescargarlailustracindelPrograma6.4.

    Unidad6.Funciones

    6.4.2.Porreferencia

    Daclicenlaflechaparacontinuar. 1de2

  • 1Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

    Fundamentos de ProgramacinUnidad 6. Funciones6.4.2. Por referencia

    Fundamentos de ProgramacinUnidad 6. Funciones6.4.2. Por referencia

    Figura 6.4: Ejecucin del programa pasoRefencia.c

    En la ejecucin del programa se observa que despus de la llamada a la funcin cambia el estado del arreglo A.

  • 27/3/2015 6.4.2.Porreferencia

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/08_FPR_U6_6_4_2/08_FPR_U6_Tema_6_4_2_p2.html 1/1

    Finalmente,cabemencionarquepararealizarlallamadaporreferenciadeunavariabledetipobsicoenlenguajeCesnecesariopasarladireccindelavariableparalocualseutilizaeloperador&seguidodelnombredelavariable(&nombre),comosehaceenlafuncinscanf,esteoperadorregresaladireccindememoriaquelecorrespondealavariableindicada.

    Porotraparte,paraalmacenarladireccindememoriadeunavariableseutilizaunavariabledetipoapuntador.Unavariableapuntadorseencargadealmacenarunadireccindememoria,ladeclaracindeunavariableapuntadoressimilaraladecualquierotravariable,conladiferenciaquesedebeescribirunasteriscoentreeltipodelavariableyelidentificador.Eltemadelosapuntadoresesmuyinteresante,sinembargo,noesunodelosobjetivosdeestecurso.

    Unidad6.Funciones

    6.4.2.Porreferencia

    DaclicenlaAutoevaluacin. 2de2

  • 27/3/2015 Autoevaluacin

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/09_FPR_U6_Autoev/09_FPR_U6_Autoevaluacion_p1.html 1/1

    IngresaalcuestionariodeAutoevaluacin,ycontestacadaunadelaspreguntasqueseteplantean.Consideravolverarepasaralgunostemassitusrespuestascorrectassonmenosquelasincorrectas.

    Paraingresaralaautoevaluacin:Enlaruta(partesuperiorizquierdadelaula)daclicenFundamentos.Seenlistarnlasactividades,daclicencuestionarioAutoevaluacin.

    Unidad6.Funciones

    Autoevaluacin

    DaclicenlaEvidenciadeaprendizaje.EvidenciadeAprendizaje:ProgramaenC.VersinModular. 1de1

  • 27/3/2015 EvidenciadeAprendizaje:ProgramaenC.VersinModular

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/10_FPR_U6_EA/10_FPR_U6_EA_p1.html 1/1

    DespusdehaberestudiadoestaunidadyacuentasconloselementosparadisearunasolucinmodularparaelproblemaqueplanteasteenlaEvidenciadeAprendizajedelaUnidad2ydelcualyahasdesarrolladounasolucinnomodularizada,ademsdelapropuestamodularinicialhechaenlaActividad2.

    Paraestaocasindebesproponerlasolucinmodularfinalqueconstede,almenos,dosmdulossecundarios(funciones)ademsdelmduloprincipal(funcinmain).

    Unidad6.Funciones

    EvidenciadeAprendizaje:ProgramaenC.VersinModular

    Daclicenlaflechaparacontinuar. 1de4

  • 27/3/2015 EvidenciadeAprendizaje:ProgramaenC.VersinModular

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/10_FPR_U6_EA/10_FPR_U6_EA_p2.html 1/1

    Realizalosiguiente:

    1. EnunarchivodeWord,realizaeldiagramamodulardescribiendoculessonlosparmetrosdeentradadecadamdulo,culeslasalida(valorderetorno)ylatareaquerealizarcadaunodeellos.Recuerdaquelatareaquerealizacadamdulodebeestarbiendelimitada.

    2. Enelmismoarchivorealizaelalgoritmodecadaunodelosmdulospropuestos,paraellopuedesutilizardiagramasdeflujoopseudocdigo(noesnecesarioqueenestepuntorepresenteselalgoritmodelasdosformas).Aliniciodeestearchivo,agregaladescripcindelproblemayelanlisisquerealizasteenlasEvidenciasdeAprendizajedelasunidades2y3.

    3. GuardatutrabajoconelnombreFPR_U6_EA_XXYZ.doc,envaloyesperaaquetuFacilitador(a)retroalimentetutrabajo.AtiendeloqueseteindiqueyhazlosajustesnecesariosparamejorartuEvidencia.

    Unidad6.Funciones

    EvidenciadeAprendizaje:ProgramaenC.VersinModular

    Daclicenlasflechasparaavanzaroretroceder. 2de4

  • 27/3/2015 EvidenciadeAprendizaje:ProgramaenC.VersinModular

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/10_FPR_U6_EA/10_FPR_U6_EA_p3.html 1/1

    4. Despusdequeel(la)facilitador(a)teenvesuscomentariosyteaseguresquetualgoritmoescorrecto,enelmismoarchivorealizalarepresentacinquetefalta,estoes,eldiagramadeflujosilohicisteenpseudocdigo,obien,elpseudocdigosiantesloentregasteendiagramadeflujo.

    5. Unavezqueestsseguro(a)dequetualgoritmoescorrecto,codifcaloenlenguajeCyguardatuprogramaconelnombreFPR_U6_EA_XXYZ.c.Posteriormentecomplaloyejectalocondiferentesdatosdeentradaparavalidarquefuncionaadecuadamente.

    6. Envalaversincorregidadetutrabajo,incluyendolosiguienteenunacarpetacomprimidallamadaFPR_U6_EA_XXYZ.zip:

    Algoritmoenpseudocdigoydiagramadeflujo.Programafuente(.c).Archivoejecutable(.exe).

    Unidad6.Funciones

    EvidenciadeAprendizaje:ProgramaenC.VersinModular

    Daclicenlasflechasparaavanzaroretroceder. 3de4

  • 27/3/2015 EvidenciadeAprendizaje:ProgramaenC.VersinModular

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/10_FPR_U6_EA/10_FPR_U6_EA_p4.html 1/1

    ConsultaatuFacilitador(a)paraconocerlafechalmiteenlaquepuedesenviarlasegundaversindetutrabajo.

    Porltimo,noolvidesrevisarlaescaladeevaluacinparaqueconozcasloslineamientosquesetomarnencuentaalmomentodecalificartuevidencia.

    DacliceneliconoparaverlaEscaladeevaluacin.

    Paraenviartuevidencia:Enlaruta(partesuperiorizquierdadelaula)daclicenFundamentos.Seenlistarnlasactividadesdelaunidad,daclicenlaEvidenciadeAprendizaje:ProgramaenC.VersinModular.

    AlterminarlaEvidenciadeAprendizaje:ProgramaenC.VersinModular,esimportantehacertuAutorreflexin.Paraello,IngresaalforodePreguntasdeAutorreflexinyapartirdelaspreguntaspresentadasportuFacilitador(a),realizatuejercicioysbeloenlaseccinAutorreflexiones.

    Unidad6.Funciones

    EvidenciadeAprendizaje:ProgramaenC.VersinModular

    Alconcluirlaevidenciadeaprendizaje,daclicenCierredelaunidad. 4de4

  • 27/3/2015 Cierre

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/11_FPR_U6_Cierre/11_FPR_U6_Cierre_p1.html 1/1

    Felicidades!,aquconcluyeelestudiodelaUnidad6.FuncionestambindelaasignaturadeFundamentosdeprogramacinyconellapartedeunciclodeaprendizaje,desarrolloprofesionalypersonalnico.

    EsperamosqueloscontenidosyactividadesalolargodelaunidadhayanpermitidoimplementarfuncionespararesolverproblemasatravsdeldesarrollodeprogramasmodularesescritosenlenguajeC.SirequieresprofundizaroresolveralgunadudasobreeltemanodudesenconsultaratuFacilitador(a).

    Continaconentusiasmo,disciplinayempeoeltercerCuatrimestredetuformacinprofesional!

    Unidad6.Funciones

    Cierredelaunidad

    Paraconcluirelestudiodelaunidad,daclicenFuentesdeconsulta. 1de1

  • 27/3/2015 Fuentesdeconsulta

    http://aulatres.unadmexico.mx/av20151/pluginfile.php/427/mod_scorm/content/1/12_FPR_U6_FC/12_FPR_U6_FC_p1.html 1/1

    DeitelH,M.,&DeitelP,J.CmoprogramarenC/C++.Mxico:PrenticeHall.

    Joyanes,L.,&Zohanero,I.(2005).ProgramacinenC.Metodologa,algoritmosyestructurasdedatos.aspao:McGrawHill.

    Kernighan,B.,&Ritchie,D.(1991).EllenguajedeprogramacinC.Mxico:PrenticeHallHispanoamericana.

    Lpez,L.(2005).ProgramacinestructuradaenlenguajeC.Mxico:Alfaomega.

    Prez,H.(1992).FsicaGeneral(PrimeraEdicined.).Mxico:PublicacionesCultura.

    Unidad6.Funciones

    Fuentesdeconsulta

    Felicidades!Hasconcluidoelestudiodelaasignatura. 1de1