PDF de programación - Capítulo 7. Abstracciones (subprogramas)

Imágen de pdf Capítulo 7. Abstracciones (subprogramas)

Capítulo 7. Abstracciones (subprogramas)gráfica de visualizaciones

Publicado el 12 de Abril del 2018
436 visualizaciones desde el 12 de Abril del 2018
237,6 KB
24 paginas
Creado hace 12a (28/11/2011)
Capítulo7. Abstracciones(subprogramas).

LenguajesdeProgramación
CarlosUreñaAlmagro
Curso2011-12

Contents
1 Introducción
2 Procedimientos
3 Funciones
4 Parámetros
4.1 Mecanismosdepasodeparámetros .
4.2 MecanismosenAda .
.
.
.
.
.
.
.
.
4.3 MecanismosenC/C++ .
4.4 MecanismosenJava .
.
.
.
.
.
.
.
.
.
.
.
4.5 MecanismosenC#.
5 Efectoslaterales
6 Ordendeevaluación
6.1 Operadoresofuncionesnoestrictas .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

2
3
6
12
14
15
17
18
18
20
21
22

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

.
.
.
.
.

.

1

1

INTRODUCCIÓN

1 Introducción
Elconceptodeabstracción
Engeneral,unaabstracciónesuncálculo(asociadoaunnombre)quepuedeserutilizadoendistintaspartes
deunprograma.
Sellamaabstracciónporqueelprogramadorpuedeusarlaabstrayéndosedecómosellevaacaboelcálculo,
ycentrándoseenqueefectostiene.
Ventajasdelasabstracciones
Lasabstraccionessonesencialespara:
• Mejorarlalegibilidad: permiteprogramasmáscortos,mássimples.
• Mejorarlafacilidaddeescritura: permitetrasladarmásfácilmentelosdiseñosacódigo.
• Permitirofacilitarlareusabilidad.
• Particionarlosprogramas,disminuyendolacohesión.
• Facilitareltrabajoenequipo.
Tiposdeabstracciones
Lasabstraccionessepuedenclasificarenbasealtipodecálculoasociado,aquíveremosestosdostipos:
• Abstraccionesprocedurales(procedimientos):elcálculoeslaejecucióndeunadeterminadasentencia.
Constituyenabstraccionessobresentencias.
• Abstracciones funcionales (funciones): el cálculo es la evaluación de una determinada expresión.
Constituyenabstraccionessobreexpresiones.
Declaracióndeabstracciones
Lasabstraccionespuedenversecomoasociacionesentreunnombreyelcálculocorrespondiente.
• Paraestablecerestaasociaciónesnecesarioescribirundeclaración.
• Enladeclaraciónseespecificaelnombredelaabstracciónyelcálculoasociado.

2

2 Procedimientos
Elconceptodeprocedimiento
Unaprocedimientoes,engeneral,unaabstracciónsobreunaorden.
• Unprocedimientotieneasociadounnombre. Estaasociaciónseproducemedianteunadeclaración.
• Elnombredelprocedimientosepuedeusar(enelámbitodesudeclaración)comounaordenmás. A
estasaparicionesdelnombreselesdenominallamadasalprocedimiento
Declaracióndeprocedimiento
Unadeclaracióndeunprocedimientoesuntipodedeclaraciónquecreaelprocedimientoyledaunnombre.
Constade:
• Elnombredelprocedimiento(unidentificador: id)
• Losparámetrosformales(opcionalmente)
• Lasentenciaasociada(posiblementecompuesta,ycondeclaracioneslocales)(lallamaremos O).
Declaracionesdeprocedimientos.
• Enelámbitodeladeclaración,idsepuedeusarcomounaorden,completamenteequivalentea O
• Alaorden Oselesuelellamarelcuerpodelprocedimiento.
• La elaboración de la declaración no suele conllevar ningún procesamiento en tiempo de ejecución,
exceptoenlenguajesinterpretados
Declaracionesdeprocedimientos.
Supongamosunadeclaracióndeunprocedimientoconestoselementos:
• Nombre: actumax
• Sentencia: O =
• Estadeclaracióndebeaparecerenelámbitodeladeclaraciónde max, xe y
• En el ámbito de la declaración, el identificador actumax() se puede usar como una sentencia,
equivalentealasentencia if

if ( x > y ) max = x ; else max = y ;

2 PROCEDIMIENTOS

3

Sonequiv. aestas:
x = 1 ;
y = 2 ;
( x > y ) max = x
if
else max = y ;
z = max ;

2 PROCEDIMIENTOS
Llamadasaprocedimientos
Enelámbitodeladeclaración,sepuedeescribir actumax()comounasentenciamás,siendoequivalente
asusustituciónporelcuerpodelprocedimiento:
Estassentencias:
x = 1 ;
y = 2 ;
;
actumax()
z = max ;
DeclaracionesdeprocedimientosenAda
En Ada, la declaración de procedimientos es un tipo de declaración que puede aparecer en el lugar de
cualquierdeclaracióndevariablesotipos,susintaxisesesta:
is
procedure ident [ parametros ]
begin
end [ ident ]
• Losparámetrosylasdeclaracionessonopcionales,
• Laordenesobligatoria(puedeserskip,quenohacenada).
DeclaracionesdeprocedimientosenC/C++/C#/Java
Enestoslenguajes,lasdeclaracionesdeprocedimientossoncomocualquierotradeclaración,exceptoque
nopuedenaparecerdentrodeunadeclaracióndeprocedimientoofunción.
void ident
{
}

[ declaraciones − y − ordenes ]

;

(

[ declaraciones ]

ordenes

)

[ parametros ]

;

• Losparámetros,lasordenesy/olasdeclaracionessonopcionales
• Laparéntesissonobligatorios
DeclaracionesdeprocedimientosenPython
Enestelenguaje,ladeclaracióndeunprocedimientoesuntipodesentencia

4

2 PROCEDIMIENTOS
• Cuandoseejecutalasentenciadedeclaración,seasociaelidentificadoralasentenciaosentencias
queformanelcuerpo. apartirdeesemomento,elidentificadoresusableparallamaralprocedimiento
• Elámbitodeladeclaracióndesubprogramasessimilaraldelasvariables:
– unadeclaracióndeunsubprograma P,incluidaenelcuerpodeunsubprograma Q,eslocala Q
(sedestruyealacabar Q)
– unadeclaracióndeunsubpr. noincluidaenotroesglobal: permanecehastaelfinaldelprograma
(ohastaquesehagaotraasociaciónalidentificador)

DeclaracionesdeprocedimientosenPython
Haydossintaxisposible,unaesenunasolalínea:
def
oenvarias:
def

): orden
):

[ parametros ]

ident

[ parametros ]

(
(

ident
orden1
orden2
· · ·
ordenn

DeclaracionesdeprocedimientosenPython
Respectoalasintaxisanterior:
• Enlasegundaforma,lasentenciasqueformanelcuerposontodasaquellasconindentaciónsuperior
alaindentaciónde def
• almenosdebehaberunasentenciaenelcuerpo
• Laconstrucciónpuedeaparecerenellugardecualquiersentencia
• Es importante tener en cuenta que un identificador asociado a una función puede asociarse a otra
funciónoaunavariableencualquiermomento,locualpuedelugaraerrores
AsociacióndinámicaparcialenPython
En Python, los identificadores libres del cuerpo se interpretan en el entorno formado por las variables
globalesexistentesenlallamada,excluyendoselaslocales
• Sepuedeconsiderarunaformadeasociacióndinámicanocompleta,oasociacióndinámicaparcial
• Elcomportamientopuedeserinesperadoaveces
5

3 FUNCIONES

zz

’zz ’)
llamar_escribe_zz() # escribe "hola"

AsociacióndinámicalimitadaenPython
Esteejemploilustracomoseinterpretanlosidentificadoreslibresenelcuerpodeunsubprograma:
def escribe_zz():
print
llamar_escribe_zz():
def
zz = (4,4,4,4)
escribe_zz()
llamar_escribe_zz() # error
(no existe
zz=1;
llamar_escribe_zz() # escribe "1"
zz="hola";
EjemplodedeclaracióndeprocedimientoenPython
Elsiguienteesunejemploqueilustraelhechodequelasdeclaracionesdeprocedimientossonsentencias,
yportantounidentificadorpuedeasociarseadistintossubprogramasendistintasejecuciones(oinclusoen
unaejecución)
x = . . .
y = . . .
x > y :
if
def proce(): print
else:def proce(): print
proce()
def proce()
:
3 Funciones
Elconceptodefunción
• Unafunciónes,engeneral,unaabstracciónsobreunprocesodecálculoqueproduceunvalorúnico
comoresultado(cadavezqueserealizadichoprocesodecálculo). Tambiénselellamaenlaliteratura
abstracciónfuncional.
• Unafuncióntieneasociadounnombre. Estaasociaciónseproducemedianteunadeclaración.
• Elnombredelafunciónsepuedeusarcomounaexpresiónmás(enelámbitodesudeclaración)
• Tambiénselellamanabstraccionesfuncionales
6

"hola"
"adios"
x = 2 # ok:

redefine

’proce’

3 FUNCIONES

Funcionesenlosparadigmasfuncionaleimperativo
• Enloslenguajesfuncionales,unafunciónesunaabstracciónsobreunaexpresión(elprocesodecálculo
eslaevaluacióndelaexpresión).
• Enloslenguajesimperativos,unfunciónesunaabstracciónsobreuntipoespecialdeordenqueproduce
unvalorresultado(elprocesodecálculoeslaejecucióndedichaordenparaobtenerelvalor).
Eltérminofunción
• El término función hace referencia a un determinado cálculo, completamente distinto a una función
matemática,aplicación,ocorrespondencia(queesuntipoespecialderelaciónentreelementosdedos
conjuntosmatemáticos)
• Enunprograma,lasabstraccionesfuncionalessonlaformanaturalimplementarlasfuncionesmatemáti-
cas
Órdenesqueproducenunresultado.
• Enalgunoslenguajes(p.ej. Eiffel,Pascal),estasórdenesincluyennecesariamenteunaasignacióna
unavariablelocalespecialquealmacenaelresultado.
• Estavariablelocalnoestádeclaradaimplicitamente
• EnPascal,sunombrecoincideconeldelafunción
• Alfinalizarlaejecucióndelaorden,elvalordedichavariableeselvalorresultado.
Órdenesqueproducenunresultado.
• Enotroslenguajes(Ada,C/C++,Java,C#)estasórdenesincluyennecesariamenteunaordenespecial:
• Aquí, eesunaexpresióndelmismotipoquelafunción
• Laejecucióndelaórdenreturn edentrodeunaorden(posiblementecompuesta) Osupone:
– Laevaluaciónde eylaobtencióndeunvalor v
– Lafinalizacióndelaejecuciónde O,con vcomovalorresultado.

return e

7

3 FUNCIONES

Declaracionesdefunciones
Unadeclaracióndeunafunciónesuntipodedeclaraciónquecrealafunciónyledaunnombre.
• La declaración permite escribir la expresión u orden una vez, pero usarla varias veces como una
expresiónendistintospuntosdelprograma.
• Usarlaexpresiónuordenquieredeciraquíevaluarlaexpresión(oejecutarlaorden)paraobtenerun
valor. Aestosesueledenominarllamaroinvocaralafunción.
Elementosdelasdeclaracionesdefunciones:
Ladeclaracióndeunafunciónconstade:
• Elnombredelafunción(unidentificador ident)
• Elnombre(odescriptorenalgunoscasos)deltipodelvalorresultado,referenciandountipo T
• Losparámetrosformales(opcionalmente).
• Unaexpresión eounasentenciaqueproduceunvalor O
Declaracionesdefunciones
• Enelámbitodeladeclaración, idsepuedeusarcomounaexpresión,completamenteequivalentea e
• Alaexpresión eoalaorden Oselessuelellamarelcuerpodelafunción.
• Laelaboracióndeladeclaraciónnosueleconllevarningúnprocesamiento.
Ejemplodedeclaracióndeunafunción
(suponeasociaciónestática)
• Elidentificadores difxy
• Laexpresiónqueformaelcuerpoes x-y(sielcuerpoestuvieseformadoporunasentencia,seria x-y)
• Ladeclaracióndebeaparecerenelámbitodeladeclaraciónde xe y
• Ensuámbito, difxy()constituyeunaexpresiónequivalentealaexpresión x-y

8

2*pi*r ;

Sonequiv. aestas:
x = z
y = 2 ∗ h ;
z = h ∗ (x − y) + 3 ;

3 FUNCIONES
Llamadasafunciones.
Enelámbitodeladeclaración,sepued
  • Links de descarga
http://lwp-l.com/pdf10370

Comentarios de: Capítulo 7. Abstracciones (subprogramas) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad