Você está na página 1de 41

27/3/2015

Presentacindelaunidad

Unidad6.Funciones

Presentacindelaunidad

Hastaestaetapadelcurso,hasaprendidoa
utilizarlasestructurasdecontrolparadisear
solucionesdeproblemassimples.Tambin
hasconocidodiferentesformasde
representarlosdatosinvolucradosenun
problema,desdesimpleshastaestructurados
(comoarreglos,cadenasyestructuras).Sin
embargo,todaslassolucionespropuestas
constannicamentedeunmdulo(funcin),
llamadoprincipal(enC,main)locualno
esconvenientecuandosetratadeproblemas
complejosquerequierandeunaseriede
tareasparalograrsusolucin,puessta
seramuygrandey,porlotanto,difcilde
corregiromodificar.

Daclicenlaflechaparacontinuar.

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

1de4

1/1

27/3/2015

Presentacindelaunidad

Unidad6.Funciones

Presentacindelaunidad

Lorecomendableescrearmdulos
independientesquerealicencadaunadelas
tareasespecficasyqueenconjunto
implementenlasolucindelproblema.A
estametodologaselellamadiseo
modular,yestinspiradoenlaestrategia
divideyvencers.
Enestaunidadseexplicarnlasfunciones,
quesonelmedioporelcualseimplementan
losmdulosenlenguajeC.Sepresentarla
sintaxisparacrearunafuncinylaformaen
laqueseutilizan.Adems,seresolverun
problemautilizandoeldiseomodularpara
ejemplificareltema.

Daclicenlasflechasparaavanzaroretroceder.

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

2de4

1/1

27/3/2015

Propsitosdelaunidad

Unidad6.Funciones

Propsitosdelaunidad

Enestaunidad:
Identificarslossubproblemasenquese
puededividirunproblema.
Disearsalgoritmosmodularespara
solucionarunproblema.
ConstruirsfuncionesenlenguajeCque
realicentareasespecficas.

Daclicenlasflechasparaavanzaroretroceder.

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

3de4

1/1

27/3/2015

Competenciaespecfica

Unidad6.Funciones

Competenciaespecfica

Implementarfuncionespararesolverproblemas
atravsdeldesarrollodeprogramasmodulares
escritosenlenguajeC.

Paracomenzarlaunidad,dacliceneltema6.1.Diseodescendente.

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

4de4

1/1

27/3/2015

6.1.Diseodescendente

Unidad6.Funciones

6.1.Diseodescendente

Ladescomposicindeunprogramaen
mdulosmspequeosseconocecomoel
mtododedivideyvencers(divideand
conquer)odiseodescendente(top
down).Consisteendividirunproblemaen
unidadesmspequeassucesivashasta
queseandirectamenteejecutadasporel
procesador,enotraspalabras,lasolucin
delproblemasedivideunayotravezhasta
queestexpresadaentrminosde
estructurasdecontrol,cadaunodelos
nivelesopasossucesivosseconocecomo
refinamiento(stepwise).

Daclicenlaflechaparacontinuar.

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

1de5

1/1

27/3/2015

6.1.Diseodescendente

Unidad6.Funciones

6.1.Diseodescendente

Lametodologadeldiseodescendenteconsisteenefectuarunarelacinentrelasetapasde
estructuracindemaneraqueserelacionenentresatravsdeentradasysalidasdedatos.
Esdecir,sedescomponeelproblemaenetapasdeestructuracinjerrquicas,deformaque
sepuedaconsiderarcadaestructuradesdedospuntosdevista:quhace?ycmolo
hace?
Conloanteriorpodemosdecirque:unmdulosecaracterizaporrealizarunatarea
especfica,poseesuspropiosdatosdeentradallamadosparmetrosdeentradaysu
resultadollamadosalidaovalorderetorno.Eldiseodecadamdulodebeser
independientedelosotrossiesnecesarioqueexistacomunicacinentreellos,sta
nicamentepodrrealizarseatravsdelosparmetrosdeentradaydelvalorderetorno.En
estesentido,puedeservisto,porotrosmdulos,comounacajanegraquehaciaelexterior
slomuestraquhaceyqunecesita,peronocmolohace.

Daclicenlasflechasparaavanzaroretroceder.

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

2de5

1/1

27/3/2015

6.1.Diseodescendente

Unidad6.Funciones

6.1.Diseodescendente

Daclicenlasflechasparaavanzaroretroceder.

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

3de5

1/1

27/3/2015

6.1.Diseodescendente

Unidad6.Funciones

6.1.Diseodescendente

Noexisteunmtodoparasaberencuntosmdulossedebedividirunproblema,sin
embargoesimportantetenerencuentalossiguientesprincipiosdeldiseomodular:
Laspartesaltamenterelacionadasdebenperteneceraunmismomdulo.
Laspartesnorelacionadasdebenresidirenmdulosdiferentes.
Paraejemplificarestaformaderesolverproblemasycmoimplementarla,sepresentala
siguientesituacin:

DaclicenelconoparadescargarelEjemplo6.1.

Daclicenlasflechasparaavanzaroretroceder.

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

4de5

1/1

Fundamentos de Programacin
Unidad 6. Funciones
6.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 temperaturas
3. Convertir las temperaturas promedio mensuales de Celsius a Fahrenheit
4. Convertir el promedio anual de temperaturas a Fahrenheit
5. 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

leerTemps
Parmetros Entrada:
temps[ ] (arreglo donde
leer los datos)
Valor de retorno:
Ninguno (actualiza los
temps[ ])

promTemps
Parmetros Entrada:
temps[ ]
Valor de retorno:
prom

aFahrenheit
Parmetros Entrada:
tempC
Valor de retorno:
tempF

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.

Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

Fundamentos de Programacin
Unidad 6. Funciones
6.1. Diseo descendente

Mdulo leerTemps(temp[ ])
Inicio
Desde mes 1 mientras mes 12,
mes mes + 1
Imprimir Proporciona la
temperatura del
mes, mes
Leer temps[mes-1]
Fin_Desde
Fin

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.

Educacin Superior Abierta y a Distancia Carrera

Fundamentos de Programacin
Unidad 6. Funciones
6.1. Diseo descendente

Mdulo promTemps(temp[])
Inicio
suma 0
Desde mes 0 mientras mes 11,
mes mes + 1
suma suma + temps[mes]]
Fin_Desde
Regresa (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 + 32
Regresa tempF
Fin

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

Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

Fundamentos de Programacin
Unidad 6. Funciones
6.1. Diseo descendente

Mdulo Principal
Inicio
/* Lectura de las temperaturas, invocando al mdulo leerTemps */
Imprimir Ingresa los promedios de temperaturas mensuales
leerTemps(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 + 1
tempsF[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

Fin

/* Impresin del promedio en grados Celsius y grados Fahrenheit */


Imprimir El promedio en grados Celsius es: , promC
Imprimir El promedio en grados Fahrenheit es: , promF

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).

Educacin Superior Abierta y a Distancia Carrera

27/3/2015

6.1.Diseodescendente

Unidad6.Funciones

6.1.Diseodescendente

Conelejemplo,resaltanvariasventajasqueproporcionaundiseomodular:
1.

Esposiblereutilizarcdigo,staesindudablementeunadelasmsimportantesya
quenoesnecesarioescribirelmismocdigocadavezquedeseamosrealizarunatarea
semejante.Porejemplo,elmduloaFahrenheitseutiliza13veces(12enelcicloyuna
paraconvertirelpromedio)yslobastdefinirlounavez.

2.

Fcildeteccinycorreccindeerrores,dadoqueelproblemafuedividoen
pequeosmduloscadaunoresponsabledeunatarea,sienalgnmomentoexistiera
unerrorenlasolucinglobal,bastaidentificarculdelastareaseslaquenoseest
resolviendoadecuadamenteycorregirnicamenteaquellosmdulosinvolucrados.

3.

Fcilmodificacinoextensin,siserequieremodificarunatareadelproblemao
agregarunanueva,nosernecesariorediseartodoelalgoritmo,bastaconhacerlas
modificacionesenlosmdulospertinentes.

Unproblemasevuelvemssencillodesolucionarsipensamosdemaneramodular.

DaclicenlaActividad1.Foro:Funciones.

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

5de5

1/1

27/3/2015

Actividad1.Foro:Funciones

Unidad6.Funciones

Actividad1.Foro:Funciones

Esteforoesunespaciodondeentreestudiantespodrncompartirideas,experiencias,dudas,
hallazgosylogrosentornoalasFuncionesenLenguajeCylasventajasdeldiseo
descendente.
Indicaciones:
Apartirdelasolucinmodulardelproblemaqueplanteasteenlasunidadesanteriores,
reflexionasobrelasventajasdeldiseodescendenteylasfuncionesenLenguajeC.
Comparteentusreflexionesyconformeavanceseneldiseomodulardetuproblema,
ingresatuscomentariosenelForo.
Paraingresaralforo:Enlaruta(partesuperiorizquierdadelaula)daclicenFundamentos.
SeenlistarnlasactividadesdelaUnidaddaclicenlaActividad1.ForoFunciones.

Alterminartuparticipacinenelforo,daclicenelTema6.2.Definicin,declaracine
invocacindefuncionesenC.

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

1de1

1/1

27/3/2015

6.2.Definicin,declaracineinvocacindefuncionesenC

Unidad6.Funciones

6.2.Definicin,declaracineinvocacindefuncionesenC
EnelcasoparticulardeC,unmduloseimplementacomounafuncin,recuerdaqueenla
unidad3seexplicqueunprogramaenCestintegradodevariasfunciones,dondeuna
funcinsedefinecomounaporcindecdigo(unconjuntodeinstruccionesagrupadaspor
separado)enfocadoarealizarunatareaenespecfico,resaltandolafuncinprincipalmain.
Aligualquelafuncinprincipal,cadaunadelasfuncionesexistedemaneraindependiente,
tienesuspropiasvariables,instruccionesyunnombrequelasdistinguedelasotras.
Ademsdelosparmetrosdeentrada(tambinllamadosargumentos)querecibeyeltipo
dedatoqueregresa.

Daclicenlaflechaparacontinuar.

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

1de5

1/1

27/3/2015

6.2.Definicin,declaracineinvocacindefuncionesenC

Unidad6.Funciones

6.2.Definicin,declaracineinvocacindefuncionesenC

El<tipodedatoretorno>indicaeltipodedatoquelafuncindevuelve(puedeser
cualquieradelostiposbsicos),paralocualseutilizalapalabrareservadareturn.Cuando
lafuncinnovaadevolverningndatoseespecificamedianteeltipovoidynodebeincluir
lapalabrareservadareturn.
El<identificadordelafuncin>eselnombrequelevamosadaralafunciny
medianteelcualvamosahacerreferenciaaella.Sedebenseguirlasmismasreglasquelos
identificadoresdelasvariablesyserecomiendaqueseanemnicos.Enseguidadelnombrey
entreparntesisvalalistadeparmetros,queconsistedeunalistadedeclaracionesde
variableslocalesquevanacontenerlosdatosdeentradaparalafuncin,sedebeespecificar
explcitamenteeltipoynombreparacadauno,separadosporcomas,ancuandoseandel
mismotipo:tipo1param1,tipo2param2,,tipoNparamN.Porltimo,lasinstruccionesdel
cuerpodelafuncinvanentrellaves.

Daclicenlasflechasparaavanzaroretroceder.

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

2de5

1/1

27/3/2015

6.2.Definicin,declaracineinvocacindefuncionesenC

Unidad6.Funciones

6.2.Definicin,declaracineinvocacindefuncionesenC

Laprimeralneadeladefinicindeunafuncinseconocecomoencabezadodelafuncin
(eninglsheader).
Parailustraresto,acontinuacinsemuestralacodificacindelmduloaFahrenheitdefinido
eneltemaanterior.
floataFahrenheit(floattempC)
{
return((9.0/5.0)*tempC+32)
}
Programa6.1:CodificacindelmduloaFahrenheit

Daclicenlasflechasparaavanzaroretroceder.

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

3de5

1/1

27/3/2015

6.2.Definicin,declaracineinvocacindefuncionesenC

Unidad6.Funciones

6.2.Definicin,declaracineinvocacindefuncionesenC

Lallamadaoinvocacinaunafuncinserealizacuandoserequierequeseejecutenlas
instruccionesdelcuerpoconvaloresdeentradadeterminados.Parainvocaraunafuncinse
tienequeescribirelnombreseguidodelosvaloresquedebencoincidirconelorden,nmero
ytipodelosparmetrosdeentradadadosenladefinicindelafuncinydebenestar
encerradosentreparntesis.
Lasintaxisgeneralparainvocarunafuncinyaseapredefinidaodefinidaporelprogramador,
eslasiguiente:
<identificadordelafuncin>(<listadevalores>)
Losparmetrosdeentradadeunafuncinsonvalores,porloquepuedenestardeterminados
por:valoresconstantes(8,a,5.2,cadenaconstante),unavariable(loquerealmentese
pasaalafuncineselvaloralmacenado)ounaexpresin(elparmetrodeentradarealesel
resultadodelaevaluacin).Porejemplo,lallamadaalafuncinquedefinimosseremarcaen
lasiguienteinstruccin:
promF=aFahrenheit(promC)

Daclicenlasflechasparaavanzaroretroceder.

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

4de5

1/1

27/3/2015

6.2.Definicin,declaracineinvocacindefuncionesenC

Unidad6.Funciones

6.2.Definicin,declaracineinvocacindefuncionesenC

Aligualquelasvariablesunafuncindebedeserdeclaradaantesdeutilizarse,esdecir,
antesdeinvocarla.Ladeclaracindeunafuncinserealizaescribiendoelprototipodela
funcin.Elprototipodeunafuncincoincideconelencabezadodelamismaterminandocon
puntoycoma()Elprototipodeunafuncinsloindicaalcompiladorqueexisteycmoes,
msnoloquehaceporlotantosedebedefinirdespus.Porejemplo,elprototipodela
funcinantesdefinidasera:
floataFahrenheit(floattempC)
Cabesealarqueenelprototipodelasfuncionessepuedeomitirlosidentificadoresdelos
parmetros,msnolostipos.
Parailustrartodoloanterior,daclicaquyobservalacodificacindelalgoritmomodular
diseadoenlaseccinanterior.

DaclicenlaActividad2.Funciones.

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

5de5

1/1

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<stdio.h>
#include<stdlib.h>
/* 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<=11; mes++)
tempsF[mes] = aFahrenheit(temps[mes]);
/* Impresin de temperaturas promedio mensuales en grados
Fahrenheti*/
for(mes = 1; mes<=12; mes++)
printf(\n La temperatura en grados Fahrenheit del mes %d es %.2f: ,
mes, tempsF[mes-1]);
/* Impresin del promedio */
printf(\n\n El promedio anual en grados Celsius es: %.2f , promC);
printf(\n El promedio anual en grados Fahrenheit es: %.2f , promF);
system(pause);
} /* fin main */
/* Definicin de funciones */
void leerTemps (float temps[])
{
/* Definicin de variables locales a leerTemps */
int mes;
for(mes = 1; mes<=12; mes++)
{
printf(\n Ingresa la temperatura promedio del mes %d: , mes);
scanf(%f, &temps[mes-1]);
}
} /* fin leerTemps */
float promTemps (float temps[])
{
/* Definicin de variables locales a promTemps */
int mes;
float suma=0;
for(mes = 0; mes<=11; mes++)
suma = suma + temps[mes];
return (suma/12);
} /* fin leerTemps */
float aFahrenheit(float tempC)
{
return ((9.0/5.0)*tempC+32);
} /* fin aFahrenheit */
Programa 6.1: promedioTemp.c

Figura 6.2: Ejecucin del programa promedioTemp.c

27/3/2015

Actividad2.Funciones

Unidad6.Funciones

Actividad2.Funciones

Enestaactividadpresentarsunaversinpreliminardelprogramaquehastrabajadocomo
partedelasevidenciasdeaprendizajeanteriores,elcual,ahoradebeincorporarmdulos
parahacermseficientesufuncionamiento.
1.

Retomaelprogramaqueenviastecomoevidenciaenlaunidadanterioryrealizauna
propuestaparadividirloenmdulos.Justificaporqudecidisteproponercadamdulo.

2.

Realizaunaprimeraversindelalgoritmoenpseudocdigoodiagramadeflujoy
envaloatuFacilitador(a).

Paraenviartudocumento:Enlaruta(partesuperiorizquierdadelaula)daclicen
Fundamentos.Seenlistarnlasactividadesdelaunidad,daclicenlaActividad2.
Funciones.

Alconcluirlaactividaddacliceneltema6.3.Alcancedelasvariables.

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

1de1

1/1

27/3/2015

6.3.Alcancedelasvariables

Unidad6.Funciones

6.3.Alcancedelasvariables

Elalcancedelasvariableseslapartedelprogramadentrodelacualsepuedenutilizar.
Cuandosondeclaradasfueradelcuerpodecualquierfuncinsedenominanvariables
globalesypuedenserutilizadasencualquierpuntodelprogramaapartirdellugardonde
fuerondeclaradas,encambiocuandosondeclaradasdentrodelcuerpodealgunafuncinse
denominanvariableslocales,esdecirslodentrodeesafuncinpuedenserutilizadas.
Lasvariableslocalesquetienenelmismonombreperofuerondeclaradasendiferentes
funciones,notienenrelacin,sonespaciosdememoriatotalmenteindependientesunode
otro.Podemosdecirque,soncomodospersonasdiferentesquetienenelmismonombre.
Lasvariablesqueseponencomoargumentosenladeclaracindeunafuncinseconsideran
localesastas.
Daclicaquparaverunejemplo.

Daclicenlaflechaparacontinuar.

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

1de3

1/1

27/3/2015

6.3.Alcancedelasvariables

Unidad6.Funciones

6.3.Alcancedelasvariables

Alutilizarvariablesglobalestodaslasfuncionespuedenmanipularlas,susvalores
permanecenmientraselprogramaestenejecucin.Sinembargo,suusopuedepromover
erroresdetipolgico,yaquealmodificarelvalordeunavariabledentrodeunafuncinpuede
afectarelresultadodeotra.
Porejemplo,supongamosquelafuncininicializaA()modificaelvalordelavariable
TAMquealmacenaelnmerodeelementosdelarregloA,estecambiorepercutirenlos
ciclosdelafuncinmain,loscualesimprimenelarregloA.Enestecasoseproducirun
errorenlaejecucin,puessielvaloresmenoracinconoseimprimirntodoslosvaloresyse
esmayorentonceshabrelementosindefinidos.Detectarycorregirestetipodeerrores
puedeserunatareanadafcil,porloquenoserecomiendaelusodevariablesglobales,lo
cualnoocurresisonconstantes.

Daclicenlasflechasparaavanzaroretroceder.

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

2de3

1/1

27/3/2015

6.3.Alcancedelasvariables

Unidad6.Funciones

6.3.Alcancedelasvariables

Lasvariableslocalesporotraparte,favorecenmucholareutilizacindecdigoyla
modularidad,yaquecadafuncindeclaraymanipulasuspropiasvariablessindependerdelo
queocurraenotrasfunciones,estonosignificaquealutilizarsolamentevariableslocalesno
seaposiblecompartirdatosentrelasdiferentesfunciones,estosehacemediantesusdatos
deentradayretorno,unaposibledesventajaesqueelvalordelasvariableslocalessepierde
cadavezquelafuncintermina.

Dacliceneltema6.4.Pasodeparmetros.

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

3de3

1/1

27/3/2015

6.4.Pasodeparmetros

Unidad6.Funciones

6.4.Pasodeparmetros

Elpasodeparmetrosserefierealaformaenlaquesetransfierencomoparmetrouna
variableaunafuncin,esencialmente,siseleotorganonopermisosparamodificarlos
valoresoriginales.Cuandonoseleotorgapermisosparaquelamodifiquesedicequees
pasodeparmetrosporvalor,puesenestecasoslosetransfiereelvalordelavariable,el
cualsealmacenaenunavariablelocaldelafuncinqueseestllamando.
Encambio,cuandolafuncinpuedemodificarelvalordelavariablesedicequeesunpaso
deparmetroporreferencia,puesenestecasonosepasasloelvalorsinoladireccinde
memoriaquelecorrespondealavariable.
Enlossiguientessubtemasseexplicamsadetallelosdostiposdepasodeparmetro.

Daclicenelsubtema6.4.1.Porvalor.

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

1de1

1/1

27/3/2015

6.4.1.Porvalor

Unidad6.Funciones

6.4.1.Porvalor

Cuandoserealizaunallamadaaunafuncinporvaloryenstaapareceunavariablecomo
unodelosargumentos,enrealidadnoseestpasandolavariablesinounacopiadelvalor
questacontiene,locualimplicaquesidentrodelafuncinsemodificaelargumentoestono
severeflejadoenelprogramadesdeelcualsehizolallamada,puessonlocalidadesde
memoriadiferentes(recuerdaqueencadallamadaaunafuncinsecreannuevasvariablesy
sedestruyenunavezfinalizalaejecucin).

DaclicenelconoparadescargarlailustracindelPrograma6.3.

Daclicenelsubtema6.4.2.Porreferencia.

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

1de1

1/1

Fundamentos de Programacin
Unidad 6. Funciones
6.4.1. Por valor

Ejemplo de llamada a una funcin por valor


#include<stdio.h>
#include<stdlib.h>
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.

Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

27/3/2015

6.4.2.Porreferencia

Unidad6.Funciones

6.4.2.Porreferencia

Lallamadaaunafuncinporreferenciasmodificaelvalordelavariable,puesloque
realmenteseestpasandoesladireccindememoriaasignadaalavariableparaquela
funcinpuedamodificarelvalor.
EnClosarreglossiempresepasanporreferencia,yaqueelnombredelarregloenrealidad
almacenaladireccindememoriadondeseencuentraalmacenadoelprimerelementodel
arreglo.Deestamaneracuandoserealizaunallamadaaunafuncinyseescribeel
identificadordeunarreglocomoparmetro,seestpasandoladireccin.
ParaejemplificarloanteriorsemuestralaejecucindelprogramapasoReferencia.cquese
presentenunsubtemaanterior.

DaclicenelconoparadescargarlailustracindelPrograma6.4.

Daclicenlaflechaparacontinuar.

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

1de2

1/1

Fundamentos de Programacin
Unidad 6. Funciones
6.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.

Educacin Superior Abierta y a Distancia Ciencias Exactas y Tecnologa

27/3/2015

6.4.2.Porreferencia

Unidad6.Funciones

6.4.2.Porreferencia

Finalmente,cabemencionarquepararealizarlallamadaporreferenciadeunavariablede
tipobsicoenlenguajeCesnecesariopasarladireccindelavariableparalocualseutiliza
eloperador&seguidodelnombredelavariable(&nombre),comosehaceenlafuncin
scanf,esteoperadorregresaladireccindememoriaquelecorrespondealavariable
indicada.
Porotraparte,paraalmacenarladireccindememoriadeunavariableseutilizaunavariable
detipoapuntador.Unavariableapuntadorseencargadealmacenarunadireccinde
memoria,ladeclaracindeunavariableapuntadoressimilaraladecualquierotravariable,
conladiferenciaquesedebeescribirunasteriscoentreeltipodelavariableyelidentificador.
Eltemadelosapuntadoresesmuyinteresante,sinembargo,noesunodelosobjetivosde
estecurso.

DaclicenlaAutoevaluacin.

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

2de2

1/1

27/3/2015

Autoevaluacin

Unidad6.Funciones

Autoevaluacin

IngresaalcuestionariodeAutoevaluacin,ycontestacadaunadelaspreguntasquesete
plantean.Consideravolverarepasaralgunostemassitusrespuestascorrectassonmenos
quelasincorrectas.
Paraingresaralaautoevaluacin:Enlaruta(partesuperiorizquierdadelaula)daclicen
Fundamentos.Seenlistarnlasactividades,daclicencuestionarioAutoevaluacin.

DaclicenlaEvidenciadeaprendizaje.EvidenciadeAprendizaje:ProgramaenC.Versin
Modular.

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

1de1

1/1

27/3/2015

EvidenciadeAprendizaje:ProgramaenC.VersinModular

Unidad6.Funciones

EvidenciadeAprendizaje:ProgramaenC.VersinModular

Despusdehaberestudiadoestaunidadyacuentasconloselementosparadisearuna
solucinmodularparaelproblemaqueplanteasteenlaEvidenciadeAprendizajedela
Unidad2ydelcualyahasdesarrolladounasolucinnomodularizada,ademsdela
propuestamodularinicialhechaenlaActividad2.
Paraestaocasindebesproponerlasolucinmodularfinalqueconstede,almenos,dos
mdulossecundarios(funciones)ademsdelmduloprincipal(funcinmain).

Daclicenlaflechaparacontinuar.

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

1de4

1/1

27/3/2015

EvidenciadeAprendizaje:ProgramaenC.VersinModular

Unidad6.Funciones

EvidenciadeAprendizaje:ProgramaenC.VersinModular

Realizalosiguiente:
1. EnunarchivodeWord,realizaeldiagramamodulardescribiendoculessonlos
parmetrosdeentradadecadamdulo,culeslasalida(valorderetorno)ylatareaque
realizarcadaunodeellos.Recuerdaquelatareaquerealizacadamdulodebeestar
biendelimitada.
2. Enelmismoarchivorealizaelalgoritmodecadaunodelosmdulospropuestos,paraello
puedesutilizardiagramasdeflujoopseudocdigo(noesnecesarioqueenestepunto
representeselalgoritmodelasdosformas).Aliniciodeestearchivo,agregala
descripcindelproblemayelanlisisquerealizasteenlasEvidenciasdeAprendizajede
lasunidades2y3.
3. GuardatutrabajoconelnombreFPR_U6_EA_XXYZ.doc,envaloyesperaaquetu
Facilitador(a)retroalimentetutrabajo.Atiendeloqueseteindiqueyhazlosajustes
necesariosparamejorartuEvidencia.

Daclicenlasflechasparaavanzaroretroceder.

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

2de4

1/1

27/3/2015

EvidenciadeAprendizaje:ProgramaenC.VersinModular

Unidad6.Funciones

EvidenciadeAprendizaje:ProgramaenC.VersinModular

4. Despusdequeel(la)facilitador(a)teenvesuscomentariosyteaseguresquetu
algoritmoescorrecto,enelmismoarchivorealizalarepresentacinquetefalta,estoes,el
diagramadeflujosilohicisteenpseudocdigo,obien,elpseudocdigosianteslo
entregasteendiagramadeflujo.
5. Unavezqueestsseguro(a)dequetualgoritmoescorrecto,codifcaloenlenguajeCy
guardatuprogramaconelnombreFPR_U6_EA_XXYZ.c.Posteriormentecomplaloy
ejectalocondiferentesdatosdeentradaparavalidarquefuncionaadecuadamente.
6. Envalaversincorregidadetutrabajo,incluyendolosiguienteenunacarpeta
comprimidallamadaFPR_U6_EA_XXYZ.zip:
Algoritmoenpseudocdigoydiagramadeflujo.
Programafuente(.c).
Archivoejecutable(.exe).

Daclicenlasflechasparaavanzaroretroceder.

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

3de4

1/1

27/3/2015

EvidenciadeAprendizaje:ProgramaenC.VersinModular

Unidad6.Funciones

EvidenciadeAprendizaje:ProgramaenC.VersinModular
ConsultaatuFacilitador(a)paraconocerlafechalmiteenlaquepuedesenviarlasegunda
versindetutrabajo.
Porltimo,noolvidesrevisarlaescaladeevaluacinparaqueconozcasloslineamientosque
setomarnencuentaalmomentodecalificartuevidencia.

DacliceneliconoparaverlaEscaladeevaluacin.
Paraenviartuevidencia:Enlaruta(partesuperiorizquierdadelaula)daclicen
Fundamentos.Seenlistarnlasactividadesdelaunidad,daclicenlaEvidenciade
Aprendizaje:ProgramaenC.VersinModular.
AlterminarlaEvidenciadeAprendizaje:ProgramaenC.VersinModular,esimportante
hacertuAutorreflexin.Paraello,IngresaalforodePreguntasdeAutorreflexinyapartirde
laspreguntaspresentadasportuFacilitador(a),realizatuejercicioysbeloenlaseccin
Autorreflexiones.

Alconcluirlaevidenciadeaprendizaje,daclicenCierredelaunidad.

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

4de4

1/1

27/3/2015

Cierre

Unidad6.Funciones

Cierredelaunidad

Felicidades!,aquconcluyeelestudiodelaUnidad6.Funcionestambindelaasignatura
deFundamentosdeprogramacinyconellapartedeunciclodeaprendizaje,desarrollo
profesionalypersonalnico.
Esperamosqueloscontenidosyactividadesalolargodelaunidadhayanpermitido
implementarfuncionespararesolverproblemasatravsdeldesarrollodeprogramas
modularesescritosenlenguajeC.Sirequieresprofundizaroresolveralgunadudasobreel
temanodudesenconsultaratuFacilitador(a).
Continaconentusiasmo,disciplinayempeoeltercerCuatrimestredetuformacin
profesional!

Paraconcluirelestudiodelaunidad,daclicenFuentesdeconsulta.

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

1de1

1/1

27/3/2015

Fuentesdeconsulta

Unidad6.Funciones

Fuentesdeconsulta

DeitelH,M.,&DeitelP,J.CmoprogramarenC/C++.Mxico:PrenticeHall.
Joyanes,L.,&Zohanero,I.(2005).ProgramacinenC.Metodologa,algoritmosy
estructurasdedatos.aspao:McGrawHill.
Kernighan,B.,&Ritchie,D.(1991).EllenguajedeprogramacinC.Mxico:Prentice
HallHispanoamericana.
Lpez,L.(2005).ProgramacinestructuradaenlenguajeC.Mxico:Alfaomega.
Prez,H.(1992).FsicaGeneral(PrimeraEdicined.).Mxico:PublicacionesCultura.

Felicidades!Hasconcluidoelestudiodelaasignatura.

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

1de1

1/1

Você também pode gostar