PDF de programación - 4 - La abstracción procedimental

Imágen de pdf 4 - La abstracción procedimental

4 - La abstracción procedimentalgráfica de visualizaciones

Publicado el 24 de Septiembre del 2019
173 visualizaciones desde el 24 de Septiembre del 2019
6,2 MB
54 paginas
Creado hace 2a (13/11/2017)
Fundamentos de programación

4

Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Material de la Prof.ª Mercedes Gómez Albarrán
Facultad de Informática
Versión revisada y ampliada del material del Prof. Luis Hernández Yáñez
Universidad Complutense

Diseño descendente y abstracción procedimental

Diseño descendente / Refinamientos sucesivos
Un programa debe realizar una serie de tareas.
Cada tarea se podrá subdividir en subtareas más sencillas.
Las subtareas también se podrán subdividir en otras más sencillas ...


Fundamentos de programación: La abstracción procedimental

Página 1



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Diseño descendente y abstracción procedimental
Dibujar figura

Misma tarea

1.Dibujar
2.Dibujar
2.1. Dibujar
2.2. Dibujar
3.Dibujar

REFINAMIENTO

Fundamentos de programación: La abstracción procedimental

Página 2

1.Dibujar
2.Dibujar
3.Dibujar



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Diseño descendente y abstracción procedimental

Dibujar figura

Dibujar

Dibujar

Dibujar

Dibujar

Dibujar

Dibujar

Fundamentos de programación: La abstracción procedimental

Página 3



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Diseño descendente y abstracción procedimental
Mensaje en letras gigantes



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M



+ +
+ +
++++
+ +
+ +

H
O
L
A


A
N
A

Imprimir mensaje
 Imprimir HOLA
Imprimir H
Imprimir O
Imprimir L
Imprimir A
 Imprimir dos líneas en blanco
 Imprimir ANA
Imprimir A
Imprimir N
Imprimir A


Fundamentos de programación: La abstracción procedimental

Página 4

Diseño descendente y abstracción procedimental

Mensaje en letras gigantes


Mostrar HOLA ANA

Mostrar
HOLA

Espacio en

blanco

Mostrar ANA

H O

L

A

A

N

A

Fundamentos de programación: La abstracción procedimental

Página 5



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Abstracción procedimental: subprogramas
Subprograma = módulo de código y datos que lleva a cabo una
funcionalidad concreta (objetivo del subprograma)

 Precondiciones: condiciones que se deben dar antes de comenzar su
ejecución
 Poscondiciones: condiciones que darán al finalizar su ejecución
 Puede comunicarse con el exterior
 Al terminar su ejecución devuelve el control al punto donde se efectuó
la llamada
Los subprogramas:
-Aumentan el nivel de abstracción del programa.
-Promueven la reutilización.
-Facilitan la prueba, la depuración y el mantenimiento.

Fundamentos de programación: La abstracción procedimental

Página 6



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Abstracción procedimental: subprogramas

Integridad de los subprogramas
Un subprograma puede establecer una serie de  Precondiciones
Será responsabilidad del que llame al subprograma garantizar
que se satisfacen las precondiciones
El subprograma puede, además, garantizar otra serie de condiciones
que se darán cuando termine su ejecución  Postcondiciones
En el punto de llamada se pueden dar por garantizadas
las postcondiciones



Fundamentos de programación: La abstracción procedimental

Página 7



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Abstracción procedimental: subprogramas
Datos manejados por un subprograma


El ámbito de los identificadores
de los datos locales y de los
parámetros es el código del
subprograma  de uso
exclusivo del subprograma



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M



 Datos locales (variables y constantes)
Declarados dentro del cuerpo del subprograma
 Datos intercambiados con el exterior  El concepto de parámetro
Datos de entrada: aceptados
Datos de salida: devueltos
Datos de entrada/salida:
aceptados y modificados

Subprograma

Subprograma

Subprograma

a

a

a

a

Fundamentos de programación: La abstracción procedimental

Página 8

Abstracción procedimental: subprogramas
Datos manejados por un subprograma: Comunicación con el

exterior
Subprograma que dado un número calcula y muestra en pantalla su cuadrado:
Subprograma que dado un número calcula y devuelve su cuadrado:
Subprograma que dada una variable numérica la devuelva incrementada en 1:

muestraCuadrado

calculaCuadrado

y (=x2)

x

x

x

incrementaEn1

x



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Fundamentos de programación: La abstracción procedimental

Página 9

Subprogramas en C++

Tipo Nombre(Parámetros) // Cabecera
{
// Cuerpo

Forma general
}  Tipo: tipo del dato en el que se transforma la llamada al subprograma
como resultado de su ejecución (tipo del resultado)
 Parámetros para intercambiar información con el exterior
 Cuerpo: secuencia de declaraciones locales e instrucciones.

Fundamentos de programación: La abstracción procedimental

Página 10



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Subprogramas en C++

Tipos de subprogramas
 Procedimientos: subprogramas con Tipo void
No devuelven ningún resultado de su ejecución.
Llamada: instrucción independiente.
 Funciones: subprogramas con Tipo distinto de void
Devuelven un resultado.
Llamada: en cualquier punto donde pueda ir un valor del tipo del
subprograma.
x = 12 * y + sqrt(20) - 3;


Fundamentos de programación: La abstracción procedimental

Página 11



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Subprogramas en C++

Parámetros
Se distinguen dos tipos de parámetros:
—Parámetros por valor  datos de entrada
—Parámetros por referencia o por variable  datos de salida o E/S
Se declaran en la cabecera, a continuación del nombre de la función y
entre paréntesis Tipo Nombre(Parámetros)


Identificador

&

Parámetros

Tipo

,

Fundamentos de programación: La abstracción procedimental

Página 12



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Subprogramas en C++

Ejemplos de parámetros por valor y por referencia

void func1(int x)

void func2(int x, int y, int z, double& a)

bool func3(int x, int y, int& z, int& w)

int func4(float& a, int x)



Fundamentos de programación: La abstracción procedimental

Página 13



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Subprogramas en C++
Llamada (o invocación) a subprograma

Nombre(Argumentos)



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M



— Deben ponerse entre los paréntesis tantos argumentos como
parámetros
— Debe respetarse el orden de declaración de los parámetros
— Cada argumento, del mismo tipo que el correspondiente parámetro
— Argumento para un parámetro por valor: una constante, una variable
o una expresión
— Argumento para un parámetro por referencia/variable: sólo puede ser
una variable



Fundamentos de programación: La abstracción procedimental

Página 14



Subprogramas en C++
Ejemplo:

int i;
func(3, i, d);

double d;
void func(int x, double& a);

func(i, d);
func(3 * i + 12, d);
func(i, 23);
func(d, i);
func(3.5, d);
func(i);



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

¿Qué llamadas son
correctas?

Fundamentos de programación: La abstracción procedimental

Página 15





l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Paso de argumentos con parámetros por valor

void func(int x, double a)
{ ... }


int main()
{
int i = 124;
double d = 3;
func(i, 33 * d);
...

return 0;

}

Fundamentos de programación: La abstracción procedimental

i
d

x
a

Memoria
124
3.0

...

...

124
99.0

...

Página 16





l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Paso de argumentos con parámetros por referencia

void func(int& x, double& a)
{ ... }


int main()
{
int i = 124;
double d = 3;
func(i, d);
...

return 0;

}

Fundamentos de programación: La abstracción procedimental

i
d

Memoria
124
3.0

...

x
a

Página 17

Procedimientos en C++

 Subprogramas con Tipo void
 La llamada no se transforma en ningún valor (tipo de devolución
void)
 Llamada: instrucción independiente


void Nombre(Parámetros) // Cabecera

{
// Cuerpo
}

Fundamentos de programación: La abstracción procedimental

Página 18



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Procedimientos en C++
Ejemplo 1.- Procedimiento que calcula el área de un triángulo
dadas su base y su altura

base

area

altura

calculaArea



void calculaArea (float b, float a, float& areaTriangulo)
{
areaTriangulo = b * a / 2;
}



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M



Fundamentos de programación: La abstracción procedimental

Página 19

Procedimientos en C++
Ejemplo 1.- Procedimiento que calcula el área de un triángulo
dadas su base y su altura

int main()
{
float base, altura, area;
cout << "Introduzca la base y la altura del triángulo: ";
cin >> base;
cin >> altura;
if ( altura > 0 && base > 0 ) {
calculaArea(base, altura, area);
cout << "El área de un triángulo es: " << area << endl;
}
else cout << "Datos erroneos!";
return 0;
}



Fundamentos de programación: La abstracción procedimental

¿Qué ocurre en memoria?

Página 20



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Procedimientos en C++
Ejemplo 1.- Procedimiento que calcula el área de un triángulo
dadas su base y su altura

int main()
{
float base, altura, area;
cout << "Introduzca la base y la altura del triángulo: ";
cin >> base;
cin >> altura;
if ( altura > 0 && base > 0 ) {
cout << "El área de un triángulo es: ";
cout << calculaArea(base, altura, area) << endl;
}
else cout << "Datos erroneos!";
return 0;
}



Fundamentos de programación: La abstracción procedimental

¿Qué está mal en este
código?

Página 21



l

n
á
r
r
a
b
A

z
e
m
ó
G

s
e
d
e
c
r
e
M

Procedimientos en C++
Ejemplo 2.- Procedi
  • Links de descarga
http://lwp-l.com/pdf16608

Comentarios de: 4 - La abstracción procedimental (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad