Descripción: Clase 17 de Programación, Prof. Gonzalo Müller
Programación
Clase 17. Módulos en C++ (2) Prof. Gonzalo Müller
[email protected]
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
Parámetros de Entrada
Función
Salidas Valor utilizado fuera del algoritmo
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
Copia de Valor Programación – Prof. Gonzalo Müller – Clase 17 – GM - 10
B: parámetro
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
double cubo(double numero) { return numero*numero*numero; }
numero
cubo
numero3
Parámetro por valor
void escribeResultado(double resultado) { printf("Cubo: %lf", resultado); }
resultado
escribeResultado
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 13
resultado
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; }
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 16
2 Continua la ejecución el módulo correspondiente
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; }
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 21
2 Continua la ejecución el módulo correspondiente
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
resultado = 64.0
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 - 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; }
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 26
2 Continua la ejecución el módulo correspondiente
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
resultado = 343.0
ejecución del algoritmo
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
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 59
Tipo Subrutina o Función
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
Usar
0
Subrutina con parámetros de entrada Función
1 2 ó más 1 Estructura (“2 ó más retornos”)
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
estructura
1 ó más
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 ¶m2,…) { … }
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
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 68
los los un de
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 Programación – Prof. Gonzalo Müller – Clase 17 – GM - 73
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 Programación – Prof. Gonzalo Müller – Clase 17 – GM - 74
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
Validación
Proceso
Tarea 1
Programación – Prof. Gonzalo Müller – Clase 17 – GM - 75
Salida
Tarea 2
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
Combinación de Parámetros. Programación – Prof. Gonzalo Müller – Clase 17 – GM - 80
utilizar
como
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