Post on 07-Apr-2018
8/6/2019 Funciones Alcance Variables y Para Metros
1/23
8/6/2019 Funciones Alcance Variables y Para Metros
2/23
CONTENIDOCONTENIDO
InstruccionesInstrucciones breakbreakyycontinuecontinue Importancia delImportancia delusouso dede subalgoritmossubalgoritmos oo
subprogramassubprogramas
Definicin deDefinicin de FuncionesFuncionesDefinicin deDefinicin de ProcedimientosProcedimientos
AlcanceAlcance de las variables:de las variables: GlobalesGlobales yy
LocalesLocalesComunicacinComunicacin de subprogramas a travsde subprogramas a travs
del pasaje dedel pasaje deparmetrosparmetros..
PasoPaso de parmetros porde parmetros porvalorvalory pory porreferenciareferencia..
8/6/2019 Funciones Alcance Variables y Para Metros
3/23
InstruccinInstruccin breakbreak
EnEn ocasionesocasiones eses convenienteconveniente salirsalir deldelbuclebucle sinsin tomartomar enen cuentacuenta lala condicincondicin..EjemploEjemplo::
whilewhile((((caractercaracter==getchargetchar()) != S )()) != S ){{
ifif ((caractercaracter = = .)= = .)
break;break;printfprintf(has introducido %(has introducido %c,caracterc,caracter););
}}
8/6/2019 Funciones Alcance Variables y Para Metros
4/23
InstruccinInstruccin breakbreakSiSi estaesta instruccininstruccin nono sese usausa
adecuadamente,adecuadamente, puedepuede perturbarperturbar lalaprogramacinprogramacin estructurada,estructurada, ellaella esesrecomendadarecomendada cuandocuando ocurreocurre unauna
excepcinexcepcin.. UnaUna mejoramejora deldel programaprogramaanterioranterior serasera::
whilewhile((((caractercaracter==getchargetchar()) != S &&()) != S && caractercaracter !=.)!=.){{
printfprintf(has introducido %(has introducido %c,caracterc,caracter););
}}
8/6/2019 Funciones Alcance Variables y Para Metros
5/23
InstruccinInstruccin continuecontinueEnEn algunosalgunos casoscasos elel cuerpocuerpo dede unun buclebuclepuedepuede resultarresultar complejocomplejo yy eses posibleposible quequeeventualmenteeventualmente nono sese requierarequiera ejecutarejecutar unaunaparteparte dede laslas instrucciones,instrucciones, aunqueaunque sese deseadesea
permanecerpermanecer dentrodentro dede ll.. EjemploEjemplo::whilewhile((((caractercaracter==getchargetchar()) != S)()) != S)
{{
IfIf (( caractercaracter= = .)= = .)continuecontinue;;
printfprintf(has introducido %(has introducido %c,caracterc,caracter););
}}
8/6/2019 Funciones Alcance Variables y Para Metros
6/23
InstruccinInstruccin continuecontinue
UnaUna versinversin mejoradamejorada deldel cdigocdigo anterioranterior eses::
whilewhile((((caractercaracter==getchargetchar()) != S)()) != S)
{{
ifif (( caractercaracter! = .)! = .)
printfprintf(has introducido %(has introducido %c,caracterc,caracter););
}}
8/6/2019 Funciones Alcance Variables y Para Metros
7/23
Importancia del uso de subalgoritmos oImportancia del uso de subalgoritmos o
subprogramassubprogramas
Los subalgoritmos permiten a losprogramadores desarrollar soluciones deproblemas complejos, a travs del mtododescendente (top-down).
Representan unidades de programasdiseados para ejecutar una tarea
especfica. Los subprogramas se escriben 1 sola vez,
pero pueden ser referenciados en
diferentes puntos de un programa
8/6/2019 Funciones Alcance Variables y Para Metros
8/23
Importancia del uso de subalgoritmos oImportancia del uso de subalgoritmos o
subprogramassubprogramas
Con el uso de los subprogramas se facilitala localizacin de un error.
Los programas son ms fciles decomprender, debido a la independenciaentre las unidades de programas.
8/6/2019 Funciones Alcance Variables y Para Metros
9/23
Importancia del uso de subalgoritmos oImportancia del uso de subalgoritmos o
subprogramassubprogramas
Problema
SP1 SP2 SP3
8/6/2019 Funciones Alcance Variables y Para Metros
10/23
El programa principal invoca al subprogramaEl programa principal invoca al subprograma
Programa Subprograma
Primera Llamada
Retorno 1
Segunda Llamada
Retorno 2
8/6/2019 Funciones Alcance Variables y Para Metros
11/23
Diferentes niveles de subprogramasDiferentes niveles de subprogramas
Programa
Subprograma1
Subprograma2
Subprograma1.1
8/6/2019 Funciones Alcance Variables y Para Metros
12/23
FuncionesFunciones
RepresentanRepresentan rutinasrutinas dede programasprogramasqueque sonson invocadasinvocadas desdedesde algnalgn otrootro
programaprograma..SonSon referenciadasreferenciadas aa travstravs dede unun
nombrenombre yy unauna listalista dede parmetrosparmetros
actualesactuales oo realesreales..
8/6/2019 Funciones Alcance Variables y Para Metros
13/23
Declaracin de FuncionesDeclaracin de Funciones
(lista deparmetros)parmetros)
[declaraciones locales][declaraciones locales]
inicioinicio
/*cuerpo de la funcin*/ /*cuerpo de la funcin*/devolver ()
fin_funcinfin_funcin
La llamada es mediante una instruccin con la siguienteLa llamada es mediante una instruccin con la siguienteestructura:estructura:
X=X=nombre_funcinnombre_funcin(lista de parmetros):(lista de parmetros):
8/6/2019 Funciones Alcance Variables y Para Metros
14/23
Ejemplo Declaracin de FuncionesEjemplo Declaracin de Funciones
f(x)=x/(1 +x*x)f(x)=x/(1 +x*x)
funcin F(x) funcin F(x)inicioinicio
devolver (x/(1+x*x))devolver (x/(1+x*x))
fin_funcionfin_funcion
8/6/2019 Funciones Alcance Variables y Para Metros
15/23
Ejemplo: Valor absoluto de un nmeroEjemplo: Valor absoluto de un nmero
Algoritmo Calculo_valor_absolutoAlgoritmo Calculo_valor_absolutovar X,Y enterovar X,Y entero
inicioinicio
leer Xleer X
Y=valor_absoluto(X)Y=valor_absoluto(X)
escribir El valor absoluto de X es Yescribir El valor absoluto de X es Yfinfin
8/6/2019 Funciones Alcance Variables y Para Metros
16/23
Ejemplo: Valor absoluto de un nmeroEjemplo: Valor absoluto de un nmero
enteroentero valor_abolutovalor_aboluto((entero:Nentero:N))varvar Z enteroZ enteroInicioInicio
sisi N
8/6/2019 Funciones Alcance Variables y Para Metros
17/23
ProcedimientosProcedimientos
EsEs unun subprogramasubprograma queque ejecutaejecuta ununprocesoproceso especficoespecfico..
NingnNingn valorvalorestest asociadoasociado concon elel nombrenombre
deldel procedimientoprocedimiento..CuandoCuando unun procedimientoprocedimiento eses invocadoinvocado
sese ejecutanejecutan laslas accionesacciones queque lolo definendefinen yy
luegoluego sese devuelvedevuelve elel controlcontrol aa lalainstruccininstruccin siguientesiguiente aa lala llamadallamada..
AA diferenciadiferencia dede laslas funcionesfunciones nonodevuelvendevuelven valoresvalores..
8/6/2019 Funciones Alcance Variables y Para Metros
18/23
ProcedimientoProcedimiento
Procedimiento nombreProcedimiento nombre [(lista de parmetros[(lista de parmetrosformales)]formales)]
Fin_procedimientoFin_procedimiento
La llamada es mediante una instruccin con laLa llamada es mediante una instruccin con la
siguiente estructura:siguiente estructura:[[llamar_allamar_a]] nombre [(lista de parmetros)]nombre [(lista de parmetros)]
8/6/2019 Funciones Alcance Variables y Para Metros
19/23
Procedimiento. Clculo de la divisinProcedimiento. Clculo de la divisinde dos nmeros para obtener cocientede dos nmeros para obtener cociente
y restoy resto
AlgoritmoAlgoritmo calculo_cociente_restocalculo_cociente_resto
Var M,N,P,Q enteroVar M,N,P,Q enteroinicioinicio
leer Mleer M
leer Nleer N
llamarllamardivisiondivision (M,N,P,Q)(M,N,P,Q)
finfin
8/6/2019 Funciones Alcance Variables y Para Metros
20/23
Procedimiento. Clculo de la divisinProcedimiento. Clculo de la divisinde dos nmeros para obtener cocientede dos nmeros para obtener cociente
y restoy resto
ProcedimientoProcedimiento divisiondivision((entero:D,d,C,Rentero:D,d,C,R))
inicioinicio
C = DC = D divdiv dd
R = DR = D--C*dC*describir C,Rescribir C,R
fin_procedimientofin_procedimiento
8/6/2019 Funciones Alcance Variables y Para Metros
21/23
Alcance de VariablesAlcance de Variables
VariablesVariables localeslocales:: EsEs aquellaaquella declaradadeclarada dentrodentrodede unun subprogramasubprograma yy eses distintadistinta dede laslasvariablesvariables queque tengantengan elel mismomismo nombrenombre enencualquiercualquier parteparte deldel programaprograma principalprincipal.. CuandoCuando
sese hacehace referenciareferencia aa unauna variablevariable concon elel mismomismonombrenombre queque otraotra dentrodentro dede unun programa,programa, seserefiererefiere aa unauna posicinposicin diferentediferente dede memoriamemoria..
VariablesVariables GlobalesGlobales
:: EsEs aquellaaquella queque estestdeclaradadeclarada enen elel programaprograma principalprincipal yy sese puedepuedereferenciarreferenciar desdedesde cualquiercualquier parteparte deldel programa,programa,inclusiveinclusive desdedesde otrosotros subprogramassubprogramas..
8/6/2019 Funciones Alcance Variables y Para Metros
22/23
A
B
C
DE
F
8/6/2019 Funciones Alcance Variables y Para Metros
23/23
Paso de ParmetrosPaso de Parmetros
PorPor valorvalor:: SeSe pasapasa unauna copiacopia deldel parmetroparmetrooriginaloriginal alal subprogramasubprograma llamadollamado.. LosLos cambioscambios aalala copiacopia nono afectanafectan elel valor valor dede lala variablevariable
originaloriginal enen elel lugarlugar dondedonde sese hacehace lala llamadallamada..
PorPor referenciareferencia:: ElEl invocador invocador lele dada alal
subprogramasubprograma llamadollamado lala capacidadcapacidad dede accederaccederdirectamentedirectamente aa lala posicinposicin dede memoriamemoria dondedondesese encuentraencuentra elel datodato yy modificarlomodificarlo sisi sese deseadesea..