unidad 6
-
Upload
edgar-cruz-jimenez -
Category
Documents
-
view
5 -
download
0
description
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