You are on page 1of 81

Programación

Clase 17. Módulos en C++ (2)
Prof. Gonzalo Müller
gmullerb@mail.com

Facultad de Ingeniería Universidad Central de Venezuela

Clase Anterior
Datos Agrupados de Diferentes Tipos → Estructura UML Estructura en C++: 1º Se debe definir la estructura: struct
Nombre de la estructura. Tipos de variables contenidas. Nombres de las variables contenidas. Antes de las declaraciones de módulos y de variables

2º Declarar una variable de tipo estructura.

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 2

Clase Anterior
Manejo de una variable estructura: Campos de una estructura. Operador miembro . . Asignación de una variable estructura. Módulos con estructuras: Estructura como parámetro. Estructura como retorno.
“2 ó más retornos”

Metodología para creación de un programa modular con estructuras en C++.
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 3

Programación Modular
Acoplamiento de datos Estándar → Parámetros: Datos que permiten la comunicación con el módulo. Parámetros de Entrada: datos únicamente de entrada al módulo. Parámetro1 Módulo
Subrutinas. Funciones.
… ParámetroK

Parámetros de Retorno o Salida o Modificables: Parámetro1 … ParámetroN datos retornados por el módulo.
Solo Subrutinas.
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 4

Subrutina

Programación Modular
Valores utilizados dentro del algoritmo

Parámetros de Retorno Parámetros de Entrada Módulo Salidas
Valor utilizado fuera del algoritmo

Retorno
Valor utilizado dentro del algoritmo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 5

Programación Modular
Valores utilizados dentro del algoritmo

Varios Resultados Parámetros de Entrada Subrutina Salidas
Valor utilizado fuera del algoritmo

Parámetros de Entrada

Función

1 Resultado
Valor utilizado dentro del algoritmo
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 6

Parámetros de Entrada
Parámetros de entrada → Parámetro por valor Los parámetros por valor constituyen valores de entrada al módulo. El valor del argumento utilizado en la llamada del módulo es asignado al parámetro de éste, es decir el parámetro recibe una copia del argumento.

Módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 7

Parámetros de Entrada
Parámetros de entrada → Parámetro por valor Los parámetros por valor constituyen valores de entrada al módulo. El valor del argumento utilizado en la llamada del módulo es asignado al parámetro de éste, es decir el parámetro recibe una copia del argumento.

Módulo

Copia
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 8

Parámetros de Entrada
Parámetros de entrada → Parámetro por valor Los parámetros por valor constituyen valores de entrada al módulo. El valor del argumento utilizado en la llamada del módulo es asignado al parámetro de éste, es decir el parámetro recibe una copia del argumento.

A=2

A

Módulo
A: argumento

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 9

Parámetros de Entrada
Parámetros de entrada → Parámetro por valor Los parámetros por valor constituyen valores de entrada al módulo. El valor del argumento utilizado en la llamada del módulo es asignado al parámetro de éste, es decir el parámetro recibe una copia del argumento.

A=2

A

Módulo

B=2
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 10

B: parámetro

Copia de Valor

Parámetros de Entrada en C
Declaración y Definición Se indica el tipo y el nombre del parámetro por valor: … nombre(tipo parámetro1, tipo parámetro2, …) Llamada … nombre(argumento1, argumento2, …)
Constante, variable o expresión del tipo de parámetro1 Constante, variable o expresión del tipo de parámetro2

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 11

Parámetros de Entrada en C

Los parámetros de entrada es como se ha venido trabajando hasta ahora con los parámetros en los módulos

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 12

Parámetros de Entrada en C
Ejemplo:
Parámetro por valor numero
cubo

double cubo(double numero) { return numero*numero*numero; }

numero3

Parámetro por valor

void escribeResultado(double resultado) { printf("Cubo: %lf", resultado); }
resultado
escribeResultado

resultado

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 13

Parámetros de Entrada en C
Ejemplo:
main() { double digito, resultado; Argumento Variable … resultado = cubo(digito); … resultado = cubo(3.0); Argumento Constante … resultado = cubo(digito + 3.0); … } Argumento Expresión
Reutilización del módulo cubo
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 14

Parámetros de Entrada en C
Ejemplo:
… resultado = cubo(3.0) … 1 Llamada numero = 3.0

Asigna el valor del argumento (3.0) al parámetro (numero) antes de continuar la ejecución

double cubo(double numero) { return numero*numero*numero; }

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 15

Parámetros de Entrada en C
Ejemplo:
… resultado = cubo(3.0) … numero = 3.0 double cubo(double numero) { return numero*numero*numero; } 2
Continua la ejecución el módulo correspondiente

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 16

Parámetros de Entrada en C
Ejemplo:
… resultado = cubo(3.0) … numero = 3.0 double cubo(double numero) { return numero*numero*numero; } 3.0*3.0*3.0 3 Operaciones
Se ejecutan todas las sentencias del módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 17

Parámetros de Entrada en C
Ejemplo:
… resultado = cubo(3.0) … 4 Retorno numero = 3.0 27.0 Regresa y continua la
ejecución del algoritmo

double cubo(double numero) { return numero*numero*numero; } 3.0*3.0*3.0

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 18

Parámetros de Entrada en C
Ejemplo:
… resultado = cubo(3.0) resultado = 27.0 … 4 Retorno numero = 3.0 27.0 Regresa y continua la
ejecución del algoritmo

double cubo(double numero) { return numero*numero*numero; } 3.0*3.0*3.0

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 19

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito) … 1 numero = 4.0

Llamada

Asigna el valor del argumento (4.0) al parámetro (numero) antes de continuar la ejecución

double cubo(double numero) { return numero*numero*numero; }

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 20

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito) … numero = 4.0 double cubo(double numero) { return numero*numero*numero; } 2
Continua la ejecución el módulo correspondiente

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 21

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito) … numero = 4.0 double cubo(double numero) { return numero*numero*numero; } 4.0*4.0*4.0 3 Operaciones
Se ejecutan todas las sentencias del módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 22

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito) … 4 Retorno numero = 4.0 64.0 Regresa y continua la
ejecución del algoritmo

double cubo(double numero) { return numero*numero*numero; } 4.0*4.0*4.0

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 23

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito) … 4 Retorno numero = 4.0 64.0 Regresa y continua la
ejecución del algoritmo

resultado = 64.0

double cubo(double numero) { return numero*numero*numero; } 4.0*4.0*4.0

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 24

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito + 3) … 1 Llamada numero = 7.0

Asigna el valor del argumento (7.0) al parámetro (numero) antes de continuar la ejecución

double cubo(double numero) { return numero*numero*numero; }

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 25

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito + 3) … numero = 7.0 double cubo(double numero) { return numero*numero*numero; } 2
Continua la ejecución el módulo correspondiente

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 26

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito + 3) … numero = 7.0 double cubo(double numero) { return numero*numero*numero; } 7.0*7.0*7.0 3 Operaciones
Se ejecutan todas las sentencias del módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 27

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito + 3) … 4 Retorno numero = 7.0 343.0 Regresa y continua la
ejecución del algoritmo

double cubo(double numero) { return numero*numero*numero; } 7.0*7.0*7.0

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 28

Parámetros de Entrada en C
Ejemplo:
digito = 4.0; … resultado = cubo(digito + 3) … 4 Retorno numero = 7.0 343.0 Regresa y continua la
ejecución del algoritmo

resultado = 343.0

double cubo(double numero) { return numero*numero*numero; } 7.0*7.0*7.0 Los parámetros por valor pueden verse como variables locales con un valor inicial
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 29

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

Módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 30

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

Módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 31

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

Módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 32

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

Módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 33

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

Módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 34

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

Módulo
Si se pone rojo adentro, sale afuera rojo también

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 35

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

Módulo
Si se pone rojo adentro, sale afuera rojo también

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 36

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

A=2

A

Módulo

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 37

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

A=2

A

Módulo

B es A
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 38

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

A=2

A

Módulo

B es A
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 39

Si B se le asigna 5, entonces A valdrá 5

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

A=2

A

Módulo

B es A B = 5
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 40

Si B se le asigna 5, entonces A valdrá 5

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia El parámetro por referencia constituye una variable que entra al módulo. La variable del argumento utilizada en la llamada pasa al módulo con el nombre del parámetro de éste, es decir el parámetro y la variable son la misma, no es una copia.

A=2

A
A=5

Módulo

B es A B = 5
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 41

Si B se le asigna 5, entonces A valdrá 5

Parámetros de Retorno
Parámetros de retorno → Parámetro por referencia Los parámetros de salida se utilizan cuando se requiere:
Obtener más de un resultado. “Sólo en Subrutinas”.

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 42

Parámetros de Retorno en C++
Declaración y Definición Utilizando el operador referencia & se declara un parámetro como parámetro por referencia:
Parámetro referencia Parámetro referencia

… nombre(tipo &parámetro1,tipo &parámetro2, …)
Operador referencia Operador referencia

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 43

Parámetros de Retorno en C++
Declaración y Definición Utilizando el operador referencia & se declara un parámetro como parámetro por referencia:
Parámetro referencia Parámetro referencia

… nombre(tipo &parámetro1,tipo &parámetro2, …)
Operador referencia Operador referencia

Los parámetros por referencia son sólo válidos en C++
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 44

Parámetros de Retorno en C++
Ejemplo: Construir un módulo que devuelva el mayor y menor de un conjunto de datos.

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 45

Parámetros de Retorno en C++
Ejemplo: Construir un módulo que devuelva el mayor y menor de un conjunto de datos. 2 valores de retorno → Subrutina con parámetros de retorno

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 46

Parámetros de Retorno en C++
Ejemplo: Construir un módulo que devuelva el mayor y menor de un conjunto de datos. 2 valores de retorno → Subrutina con parámetros de retorno
void maymen(double &mayor, double &menor) { unsigned char N, k, x; printf("Cantidad de Números:"); scanf("%hhu", &N); … mayor = x; menor = x; while(k < N) …
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 47

Parámetros de Retorno en C++
Ejemplo: Construir un módulo que devuelva el mayor y menor de un conjunto de datos. 2 valores de retorno → Subrutina con parámetros de retorno
void maymen(double &mayor, double &menor) { Parámetro por referencia unsigned char N, k, x; printf("Cantidad de Números:"); scanf("%hhu", &N); … mayor = x; menor = x; while(k < N) …
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 48

Parámetros de Retorno
Llamada: Cuando se realiza una llamada con parámetros de referencia SIEMPRE se debe utilizar como argumento una VARIABLE, ya que ésta es la encargada de almacenar el valor correspondiente al resultado. … nombre(variable1, variable2, …)
Variable del tipo Variable del tipo de parámetro1 de parámetro2

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 49

Parámetros de Retorno en C++
Ejemplo:
main() { double mayor1, menor1; … maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); … }

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 50

Parámetros de Retorno en C++
Ejemplo:
main() { double mayor1, menor1; Argumento Variable … maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); … }

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 51

Parámetros de Retorno en C++
Ejemplo:
… 1 Llamada maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); … mayor es mayor1, menor es menor1 void maymen(double &mayor, double &menor) { unsigned char N, k, x; printf("Cantidad de Números:"); scanf("%hhu", &N); … Se establece la correspondencia de los mayor = x; argumentos (mayor1, menor1) con los menor = x; parámetros (mayor, menor) antes de continuar la ejecución …
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 52

Parámetros de Retorno en C++
Ejemplo:
… maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); … mayor es mayor1, menor es menor1 void maymen(double &mayor, double &menor) Continua la ejecución { 2 el módulo unsigned char N, k, x; correspondiente printf("Cantidad de Números:"); scanf("%hhu", &N); … mayor = x; menor = x; …
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 53

Parámetros de Retorno en C++
Ejemplo:
… maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); … mayor es mayor1, menor es menor1 void maymen(double &mayor, double &menor) { unsigned char N, k, x; printf("Cantidad de Números:"); scanf("%hhu", &N); lectura de N y x’s … N=3 x1=4, x2=6, x3=0 3 Operaciones mayor = x; … Se ejecutan todas las menor = x; mayor =6 sentencias del módulo … menor=0
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 54

Parámetros de Retorno en C++
Ejemplo:
… maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); … mayor es mayor1, menor es menor1 void maymen(double &mayor, double &menor) { unsigned char N, k, x; printf("Cantidad de Números:"); scanf("%hhu", &N); lectura de N y x’s … N=3 x1=4, x2=6, x3=0 3 Operaciones mayor = x; … Se ejecutan todas las menor = x; mayor =6 mayor1=6 sentencias del módulo … menor=0 menor1=0
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 55

Parámetros de Retorno en C++
Ejemplo:
… maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); … mayor1 = 6 mayor es mayor1, menor1 = 0 menor es menor1 void maymen(double &mayor, double &menor) { unsigned char N, k, x; printf("Cantidad de Números:"); scanf("%hhu", &N); lectura de N y x’s … N=3 x1=4, x2=6, x3=0 mayor = x; … menor = x; mayor =6 mayor1=6 … 4 Regresa y continua la menor=0 menor1=0 ejecución el algoritmo
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 56

Parámetros de Retorno en C++
Ejemplo:
… maymen(mayor1, menor1); printf("[%f,%f]", menor1, mayor1); [6,0] … mayor1 = 6 mayor es mayor1, menor1 = 0 menor es menor1 void maymen(double &mayor, double &menor) { unsigned char N, k, x; printf("Cantidad de Números:"); scanf("%hhu", &N); lectura de N y x’s … N=3 x1=4, x2=6, x3=0 mayor = x; … menor = x; mayor =6 mayor1=6 … 4 Regresa y continua la menor=0 menor1=0 ejecución el algoritmo
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 57

Representación de Algoritmos Modulares
Definición de una subrutina con parámetros de referencia DF
nombre(&parámetro1, &parámetro2, …)

Fin

DRE

nombre(&parámetro1, &parámetro2, …) … fin
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 58

Metodología de la Programación Modular
Tabla de Módulos: Una vez desarrollados los algoritmos de todos los módulos es de utilidad para la posterior implementación en el lenguaje construir una tabla donde se listen todos los módulos, sus tipos y parámetros.
Modulo Parámetros de Entrada Nombre Lista de del módulo parámetros Parámetros Retorno de Retorno Lista de Valor parámetros retornado Tipo Subrutina o Función

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 59

Programación Modular en C++
Ejemplo: Construir un programa modular en C++ con acoplamiento de datos estándar para obtener el mayor y menor de N conjunto de datos.

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 60

Parámetros de Retorno

Formas en que podemos utilizar los módulos: # Retornos 0 1 2 ó más 1 Estructura (“2 ó más retornos”) Usar Subrutina con parámetros de entrada Función Subrutina con parámetros de retorno Función

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 61

Parámetros de Retorno
Formas en que podemos utilizar los módulos que manejan estructuras: # Retornos Usar 0
estructura

1 1 ó más

estructura

estructura estructura

1 Estructura (“2 ó más retornos”)

estructura

Subrutina con parámetros de entrada no son (Uso de estructuras) modificadas, Función ni creadas (Uso de estructuras) Subrutina con parámetros de retorno (Modificación de estructuras) Función (Creación de nueva estructura)

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 62

Combinación de Parámetros en C
Es posible utilizar en un módulo una combinación de parámetros por valor y parámetros por referencia: Declaración de parámetros por valor y referencia:
void nombre(tipo param1,tipo &param2,…) { … }

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 63

Combinación de Parámetros en C
Ejemplo: Construir un módulo que devuelva las raíces reales de una ecuación cuadrática.

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 64

Combinación de Parámetros en C
Ejemplo: Construir un módulo que devuelva las raíces reales de una ecuación cuadrática. 2 valores de retorno → Subrutina con parámetros de retorno

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 65

Combinación de Parámetros en C
Ejemplo: Construir un módulo que devuelva las raíces reales de una ecuación cuadrática. 2 valores de retorno → Subrutina con parámetros x y de retorno
a b c
rre

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 66

Combinación de Parámetros en C
Ejemplo: Construir un módulo que devuelva las raíces reales de una ecuación cuadrática. 2 valores de retorno → Subrutina con parámetros x y de retorno
a b c
rre

void rre(float a,float b,float c,float &x,float &y) {

float D; D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); y = -(D + b) / (2*a); }
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 67

Combinación de Parámetros en C
Ejemplo: Construir un módulo que devuelva las raíces reales de una ecuación cuadrática. 2 valores de retorno → Subrutina con parámetros x y de retorno
a b c
rre Parámetros Entrada Parámetros Salida

void rre(float a,float b,float c,float &x,float &y) {

float D; D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); y = -(D + b) / (2*a); }

Es recomendable colocar primero parámetros de entrada y luego parámetros de salida al definir módulo que posee ambos tipos parámetros

los los un de

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 68

Combinación de Parámetros en C
Ejemplo:
1 Llamada coefA = 1, coefB = 5, coefC = 6 … rre(coefA, coefB, coefC, raiz1, raiz2); printf("1:%f\n2:%f", raiz1, raiz2); … a = 1, b = 5, c = 6, x es raiz1, y es raiz2
void rre(float a,float b,float c,float &x,float &y) {

float D; D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); y = -(D + b) / (2*a); }
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 69

Combinación de Parámetros en C
Ejemplo:
coefA = 1, coefB = 5, coefC = 6 … rre(coefA, coefB, coefC, raiz1, raiz2); printf("1:%f\n2:%f", raiz1, raiz2); … a = 1, b = 5, c = 6, x es raiz1, y es raiz2
void rre(float a,float b,float c,float &x,float &y) { Continua la ejecución 2 el módulo float D; correspondiente D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); y = -(D + b) / (2*a);

}
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 70

Combinación de Parámetros en C
Ejemplo:
coefA = 1, coefB = 5, coefC = 6 … rre(coefA, coefB, coefC, raiz1, raiz2); printf("1:%f\n2:%f", raiz1, raiz2); … a = 1, b = 5, c = 6, x es raiz1, y es raiz2
void rre(float a,float b,float c,float &x,float &y) {

float D; D=1 D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); 3 Operaciones x = –2 y = –3 Se ejecutan todas las y = -(D + b) / (2*a); }
sentencias del módulo
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 71

Combinación de Parámetros en C
Ejemplo:
coefA = 1, coefB = 5, coefC = 6 … rre(coefA, coefB, coefC, raiz1, raiz2); printf("1:%f\n2:%f", raiz1, raiz2); … a = 1, b = 5, c = 6, x es raiz1, y es raiz2
void rre(float a,float b,float c,float &x,float &y) {

float D; D=1 D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); 3 Operaciones x = –2 y = –3 Se ejecutan todas las y = -(D + b) / (2*a); }
sentencias del módulo
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 72

raiz1= –2 raiz2= –3

Combinación de Parámetros en C
Ejemplo:
coefA = 1, coefB = 5, coefC = 6 … rre(coefA, coefB, coefC, raiz1, raiz2); printf("1:%f\n2:%f", raiz1, raiz2); … raiz1 = –2 a = 1, b = 5, c = 6, x es raiz1, y es raiz2 raiz2 = –3
void rre(float a,float b,float c,float &x,float &y) {

float D; D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); y = -(D + b) / (2*a); } 4
Regresa y continua la ejecución el algoritmo – Prof. Gonzalo Müller – Clase 17 – GM - 73 Programación

D=1 x = –2 y = –3

raiz1= –2 raiz2= –3

Combinación de Parámetros en C
Ejemplo:
coefA = 1, coefB = 5, coefC = 6 … rre(coefA, coefB, coefC, raiz1, raiz2); printf("1:%f\n2:%f", raiz1, raiz2); 1: –2 2: –3 … raiz1 = –2 a = 1, b = 5, c = 6, x es raiz1, y es raiz2 raiz2 = –3
void rre(float a,float b,float c,float &x,float &y) {

float D; D = sqrt(b^2-4*a*c); x = (D - b) / (2*a); y = -(D + b) / (2*a); } 4
Regresa y continua la ejecución el algoritmo – Prof. Gonzalo Müller – Clase 17 – GM - 74 Programación

D=1 x = –2 y = –3

raiz1= –2 raiz2= –3

Acoplamiento de datos Estándar
El algoritmo se construye utilizando todos los bloques del diagrama Top-Down.

Programa Inicialización Lectura Entrada Proceso Salida

Validación

Tarea 1

Tarea 2

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 75

Acoplamiento de datos Estándar
Subrutinas: Pueden tener Parámetros de Entrada. Se utilizan cuando:
No se necesita resultado. … Se necesitan 2 ó más resultados, se utiliza … parámetros de retorno.

Funciones: Pueden tener Parámetros de Entrada. Se utilizan cuando:

Se retorna 1 resultado.

1

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 76

Programación Modular en C
Ejemplo: Construir un programa modular en C++ con acoplamiento de datos estándar para obtener todas las raíces de una ecuación cuadrática.

Programación – Prof. Gonzalo Müller – Clase 17 – GM - 77

Parámetros por Valor
Una vez tomado su valor pueden ser empleados como variables locales, sin afectar las variables externas. Ejemplo:
… resultado = cubo(3.0) resultado = cubo(x) … double cubo(double numero) { double res; res = numero*numero*numero; numero = 8; Cambio en parámetro por valor que no afecta return res; variables externas, ejemplo: x no se ve afectada. } Recordar que lo que recibe numero es un valor
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 78

Ejercicio

Construir un programa modular en C++ con acoplamiento de datos estándar para calcular el máximo, mínimo y promedio de N cuartetos. Fase 1: Diseño y Análisis: DTD DES, DRE ó DF y LV de Módulos y TM. DES, DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++.
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 79

Resumen
Acoplamiento de datos estándar: Parámetros de entrada → Parámetro por valor. Parámetros de retorno o salida → Parámetro por referencia.
Obtener más de un resultado. Operador referencia &. Llamada: SIEMPRE se debe argumento una VARIABLE utilizar como

Combinación de Parámetros.
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 80

Resumen
Acoplamiento de datos estándar: Subrutinas
No se necesita resultado. Se necesitan 2 ó más resultados.

Funciones
Se retorna 1 resultado.

Representación de Algoritmos Modulares:
Parámetros de Retorno: &.

Tabla de Módulos: Parámetros → Parámetros de Entrada y Parámetros de Retorno
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 81