Clase Programación 17

Share Embed Donate


Short Description

Descripción: Clase 17 de Programación, Prof. Gonzalo Müller [email protected], Facultad de Ingeniería, UCV...

Description

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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF