Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Descomponer un problema
Problema: Dibujar esta figura
Tema 4
1. Dibujar el crculo
2. Dibujar el tringulo
1. Dibujar las dos lneas secantes
2. Dibujar la lnea horizontal
3. Dibujar las otras dos lneas secantes
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Dibujar figura
Dibujar crculo
Dibujar tringulo
Dibujar lneas
secantes
Dibujar lneas
secantes
Dibujar lnea
horizontal
* En realidad son el mismo subproblema
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.2
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
L
A
Y
O
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
*
*
*
*
* * *
*
*
*
*
4.3
Imprimir mensaje
Imprimir HOLA
Imprimir
H
Imprimir
O
Lneas en blanco
Imprimir
A
Imprimir L
Imprimir YO
Imprimir Y
Imprimir
O
4.4
Los subprogramas
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.5
Ejemplos de subprogramas
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Datos en un subprograma
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.7
Datos en un subprograma
Tema 4
Introduccin:
Subprogramas
Programa
Procedimientos
Funciones
Subprogram
a
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.8
Ejemplos
Tema 4
Introduccin:
Subprogramas
Procedimientos
Ejemplo
Subprograma que, dado un nmero, lo muestra por pantalla
numero
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
codig
o
x2
4.9
Procedimientos en Pascal
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.10
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Invocacin
var
numero, resultado: integer;
begin
readln(numero);
calcCuadrado(numero, resultado);
writeln(El cuadrado es , resultado);
end.
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
program figuras ;
procedure DibujaCirculo ;
begin {DibujaCirculo}
Writeln (
Writeln (*
Procedimientos
);
*);
Writeln ( * *);
end; {DibujaCirculo}
Funciones
procedure Dibujalineas ;
begin {Dibujalineas}
Alcance y
visibilidad
Writeln ( /\ );
Desarrollo con
subprogramas
Writeln (/
Writeln ( / \ );
\);
end; {Dibujalneas}
procedure Dibujabase ;
begin {Dibujabase}
Writeln (--------);
end; {Dibujabase}
begin {Programa principal}
DibujaCirculo;
Dibujalineas;
Dibujabase;
Dibujalineas;
end.
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
p r o c e d im ie n to
c ab e c e ra
p r o c e d im ie n to
d e c la ra c io n e s
lo c a le s
b e g in
c u erp o
end
c a b e c e r a p r o c e d im ie n to
id e n t if ic a d o r
p ro c e d u re
lis ta
p a ra m e tro s
c u e rp o
s e n te n c ia
4.13
lis ta p a r a m e tr o s
Introduccin:
Subprogramas
id e n tif ic a d o r
id e n tific a d o r
tip o
Procedimientos
Funciones
var
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.14
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
procedure escribeH;
procedure prueba1 (var num: integer);
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
p3:
p6:
p1:
p4:
real;
boolean;
char;
integer);
4.15
Invocacin de procedimientos
Tema 4
Introduccin:
Subprogramas
lla m a d a p r o c e d im ie n to
Procedimientos
Funciones
id e n tific a d o r
a rg u m e n to
Alcance y
visibilidad
Desarrollo con
subprogramas
a rg u m e n to
c o n s ta n te
v a r ia b le
e x p r e s io n
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.16
Invocacin de procedimientos
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.17
Invocacin de procedimientos
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Ejemplos
var
ch1: char;numReal: real;
numEntero: integer;
incognita: boolean;
escribeH;
prueba1 (num);
prueba1 (numEntero);
Qu llamadas son
correctas?
4.18
Parmetros: ejemplo
Tema 4
Introduccin:
Subprogramas
Procedimientos
program paso;
var
X,Y : Real ;
sum, med : Real;
procedure SumayMedia (num1, num2 :Real; Var Suma, media : Real);
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
begin { SumayMedia }
suma := num1 + num2 ;
media := suma / 2.0
end; { SumayMedia }
begin
X :=8 ;
Y :=10 ;
...
SumayMedia(X,Y,sum,med);
writeln(sum);
writeln(med);
end.
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Traza
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Prog.
principal
8.0 X
10.
0
?
?
Procedimiento sumaYMedia(X,Y,sum,med)
Y
sum
med
8.0
num1
10.
0
num2
antes
suma
media
Desarrollo con
subprogramas
8.0
8.0
num1
10.
0
18.
0
10.
0
num2
sum
suma
med
9.0
despus
media
var
A : integer;
Procedimientos
Alcance y
visibilidad
begin
Prog. principal
Procedimiento
X:=X+1;
end;
antes
Desarrollo con
subprogramas
A5
X
Por
valor
begin
A:=5;
incrementa(A);
writeln(A);
end.
despus
A5
var
A : integer;
incrementa
Procedimientos
Alcance y
visibilidad
begin
Prog. principal
X:=X+1;
Procedimiento
end;
A5
Desarrollo con
subprogramas
begin
antes
X
Por
variabl
e
A:=5;
incrementa(A);
writeln(A);
end.
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
despus
A6
begin
write(Introduzca el nmero: );
readln(num);
write(Introduzca las veces: );
readln(veces);
mostrar
end.
Uso de VARIABLE
GLOBAL!!!
Uso de VARIABLE
GLOBAL!!!
begin
write(Introduzca el nmero: );
readln(num);
write(Introduzca las veces: );
readln(veces);
mostrar(num, veces)
end.
begin
for cont:= 1 to v do
writeln(n)
end;
En este caso, mostrar solo utiliza sus
parmetros n y v y a su variable local
cont, lo cual es correcto
4.25
Ejercicios
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.26
Funciones
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.27
Funciones
Cundo usar funciones?
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.28
Tipo de
la
funcin
fu n c io n
c a b e c era
fu n c io n
d e c la r a c io n e s
lo c a le s
b e g in
c u e rp o
end
c a b e c e r a fu n c io n
f u n c t io n
id e n tif ic a d o r
lis ta
p a ra m e tro s
id e n t ific a d o r
tip o
lis ta p a r a m e tr o s
c u erp o
id e n tific a d o r
s e n te n c ia
id e n tific a d o r
t ip o
,
;
;
4.29
id e n tific a d o r
a rg u m e n to
a rg u m e n to
c o n s ta n te
v a r ia b le
e x p r e s io n
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.31
Ejemplo
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.32
Otro ejemplo
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.33
Procedimientos
var
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
I, prod : integer ;
begin
prod:=0;
for I:=1 to X do
prod : = prod + Y; {sumamos Y X veces}
producto := prod;
end;
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Procedimientos anidados
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Imprimir HOLA
Lneas en blanco
Imprimir YO
Alcance y
visibilidad
Desarrollo con
subprogramas
Imprimir H
Imprimir O
Imprimir A
Imprimir Y
Imprimir O
Imprimir L
4.35
Visibilidad de Procedimientos
program miPrograma;
var
x, y: real;
procedure externo (var x: real);
var
m, n: integer;
procedure interno (x: real);
var
n, p: integer;
begin (* interno *)
...
end; (* interno *)
procedure otro;
const
blanco = ;
begin (* otro *)
...
end; (* otro *)
begin (* p.p. *)
...
end. (* p.p. *)
begin (* externo *)
...
end; (* externo *)
4.36
Procedimientos
Tipos de identificadores
Locales a bloque Declarados en el bloque
No locales a bloque Declarados en un nivel de anidamiento
superior al del bloque
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Regla de alcance
El alcance de un identificador son las sentencias posteriores del bloque
en el que se declara y las de los bloques anidados posteriores a su
declaracin
Regla de visibilidad
Si dos identificadores con igual nombre tienen alcance en una
determinada zona del programa, en dicha zona slo es visible el de
menor alcance
La visibilidad de un identificador incluye todas las sentencias posteriores
del bloque en el que se declara y las de los bloques anidados
posteriores a su declaracin en los que el identificador no se redeclara
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.37
Ejercicio
program miPrograma;
var
x, y: real;
procedure externo (var x: real);
var
m, n: integer;
procedure interno (x: real);
var
n, p: integer;
begin (* interno *)
...
end; (* interno *)
begin (* externo *)
...
end; (* externo *)
begin (* p.p. *)
...
end. (* p.p. *)
m? n? p? x? y?
4.38
Estilo de programacin
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.39
Estilo de programacin
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.40
Diseo descendente
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.41
Primer diseo
Tema 4
Introduccin:
Subprogramas
Procedimientos
Funciones
Alcance y
visibilidad
Programa principal
Repetir
Elegir opcin
Ejecutar opcin elegida
Mostrar resultado
Hasta que la opcin elegida se distinta de cero
Desarrollo con
subprogramas
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.42
Primer refinamiento
Tema 4
Introduccin:
Subprogramas
Procedimientos
Subprograma elegir_opcion
Repetir
Mostrar men con las opciones
Leer la opcin elegida
Hasta que la opcin sea vlida
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Subprograma ejecutar_opcion
Si el valor de la opcion es:
1 traducir_cms_pulgadas
2 traducir_kgs_libras
3 traducir_euros_pts
4 traducir_cent_fahr
0 No hacer nada
Programa principal
Repetir
Elegir opcin
Ejecutar opcin elegida
Mostrar resultado
Hasta que la opcin elegida se distinta de cero
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.43
Segundo refinamiento
Tema 4
Introduccin:
Subprogramas
Subprograma mostrar_menu
Escribir la estructura del men con writeln
Procedimientos
Subprograma elegir_opcion
Funciones
Alcance y
visibilidad
Desarrollo con
subprogramas
Repetir
Mostrar men con las opciones
Leer la opcin elegida con readln
Hasta que la opcin sea vlida
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.44
Procedimientos
Funciones
Alcance y
visibilidad
Subprograma traducir_cms_pulgadas
Pedir tipo de conversin (cms->pulgadas, pulgadas->cms)
Pedir la cantidad original
Si cms->pulgadas
Calcular_pulgadas
Si no
Calcular_cms
Desarrollo con
subprogramas
Subprograma ejecutar_opcion
Si el valor de la opcion es:
1 traducir_cms_pulgadas
2 traducir_kgs_libras
3 traducir_euros_pts
4 traducir_cent_fahr
0 No hacer nada
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.45
Tercer refinamiento
Tema 4
Introduccin:
Subprogramas
Subprograma pedir_tipo_conversion_cms_pulgadas
Procedimientos
Alcance y
visibilidad
Desarrollo con
subprogramas
Subprograma traducir_cms_pulgadas
Pedir tipo de conversin (cms->pulgadas, pulgadas->cms)
Pedir la cantidad original con readln
Si cms->pulgadas
Calcular_pulgadas
Si no
Calcular_cms
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
4.46