TP7-Funciones 2c2017 - DGFD PDF

Title TP7-Funciones 2c2017 - DGFD
Author Pablo Ramos
Course Informatica
Institution Universidad Nacional de Salta
Pages 15
File Size 1.8 MB
File Type PDF
Total Downloads 97
Total Views 126

Summary

DGFD...


Description

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Univ.Nac.de Salta – Fac.de Ingeniería

Publicación Moodle de soluciones: 06/11 después 18:15 hs

TP.Nº7: Funciones – parámetros pasados por valor y referencia. Desarrollarse grupalmente. Entregue en formato PDF a través de la plataforma online. La presentación está indicada, luego se descontará hasta -100%; su presentación es obligatoria bajo apercibimiento de quedar libres Res.CD: 414/03, 1312/08, 1142/14.

Consignas generales.: Para cada ejercicio, redactar un programa en C++ y la Auto-Comprobación solicitada. Obligatorio: utilice comentarios diciendo para qué utilizará c/u de las variables. y para rotular bloques del programa.

OBJETIVOS ESPECÍFICOS TP Funciones en C++: 

Entender que las funciones son “subprogramas” => presentan todas las características de estos.



Fijar, entonces, la mecánica de “declaración / redacción” de funciones para su posterior “uso / invocación”.



Parámetros: entender que los argumentos “pasados por valor”, se hace para salvaguardar los valores originales de las variables del programa principal.



Entender que las estructuras de datos compuestas (vectores y matrices, inclusive de registros) pasan siempre como argumentos por referencia; ergo, las funciones pueden modificar o alterar su contenido.



Entender que la diferencia entre funciones con parámetros/argumentos, copiados el valor o pasadas las referencias de memoria, son para que las funciones tengan la potencialidad de modificar dichos parámetros.



Que usaremos variables simples como: parámetros por valor cuando NO queramos que la función tenga la potestad de alterar los valores de las variables del programa. Por el contrario: los argumentos serán por referencia cuando queramos que la función pueda alterar los valores de las variables del programa principal.

Funciones con Parámetros por Valor Ejercicios Básicos: Ej.A: Dados los números enteros X e Y, calcule y muestre la potencia de X elevado a la Y, utilice una función que calcule la potencia de X^Y pasando el valor de X e Y como parámetros.

Ej.B: Dado un número entero N calcular y mostrar la cantidad de sus dígitos. Utilice una función que cuente la cantidad de sus dígitos pasando el valor de N como parámetro.

1/15

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Univ.Nac.de Salta – Fac.de Ingeniería

Publicación Moodle de soluciones: 06/11 después 18:15 hs

Ej.C: Dada una lista de N valores enteros calcular y mostrar el factorial de cada uno de ellos mediante un función para tal fin.

AC: ¿Qué debí entender con los Ejercicios Básicos?:  JTP corroborar 1.

¿Entendió cómo y dónde (en qué zona) se “redacta” (declara) una función (subprograma)?

2.

¿Entendió cómo (y dónde) se usa/llama/invoca a una función previamente declarada?

3.

¿Entendió cómo se definen y usan las variables locales de una función? ¿por qué solo la función puede usar sus propias variables locales?

4.

¿Entendió cómo se definen los parámetros/argumentos de una función? ¿y cómo se le “cargan” valores (pasan valores) al momento de su invocación? ¿Por qué no se ven afectadas las variables del programa principal luego de la ejecución de la misma si los parámetros de ella le son pasados por valor?

5.

¿Por qué toda función debe devolver un resultado? ¿De qué tipo de dato debe ser la variable que recibe el resultado de una función en el programa principal?

Ej.1: Investigue y explique los siguientes conceptos. Utilice el apunte de cátedra Funciones-Argumentos por Valor y Referencia. Función, Nombre de función, Tipo de valor de retorno. 2/15

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Publicación Moodle de soluciones: 06/11 después 18:15 hs

Univ.Nac.de Salta – Fac.de Ingeniería

 



Función: es un subprograma cuyo objetivo es realizar un servicio particular y brindar un resultado al transformar la información pasada como argumentos o parámetros. Argumentos por Valor: en la llamada o invocación a una función los argumentos actuales son evaluados y copiados al subprograma que trabajará con esas copias. Estos valores no son modificados en la función principal. Argumentos por Referencia: la diferencia con el anterior es que los argumentos son evaluados y modificados precedidos de “&” en la función que se desee programar. Es decir, la función devolverá argumentos modificados.

Ej.2: Un operario debe escribir, en la tapa de una caja, un código numérico (i) sumado a su cuadrado (i 2). Este operario trabaja en una cinta transportadora que se mueve a una velocidad de 1 caja cada 2 segundos. Escribir un programa que ayude a este operario a escribir los códigos sobre las cajas, mostrando en pantalla un código a partir de 1 y hasta un valor N ingresado por él mismo. Utilice la siguiente función: int CalcularCodigo(int i)

//Calcula y retorna el código correspondiente.

AC: ¿Entendió con este ejercicio que una función es ideal para ser utilizada un innumerable número de veces dentro del programa principal?; (Incluso cuando ese número de veces es conocido de antemano).

Ej.3: En el depósito de una fábrica de componentes eléctricos se asigna a cada componente un código entero y positivo para identificarlo y agruparlo por “familia” siguiendo estos pasos: c) Determinar la sumatoria de los dígitos del código. a) Verificar todo dígito del código DE A UNO por vez. b) Determinar la cantidad de dígitos del código. d) Determinar el promedio de los dígitos del código. Si el promedio de dígitos es mayor a 5, se clasifica como “familia mayor”. Si el promedio de dígitos es menor a 5, se clasifica como “familia menor”. Si el promedio de dígitos es igual a 5, se clasifica como “familia neutra”. Escribir un programa para clasificar un componente eléctrico. Utilices las siguientes funciones: int CantidadDigitos(int codigo)

//Retorna la cantidad de dígitos de un código.

int SumaDigitos(int codigo)

//Retorna al suma de los dígitos de un código.

float PromedioDigitos(int codigo) //Retorna el promedio de los dígitos de un código.

3/15

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Univ.Nac.de Salta – Fac.de Ingeniería

Publicación Moodle de soluciones: 06/11 después 18:15 hs

AC: ¿Aprendí a invocar a más de una función dentro de cada ciclo de cálculo de una estructura de control “for”? ¿Cómo se interrelacionan las funciones en base a sus argumentos o parámetros? ¿Qué variable del programa principal utiliza para relacionar las tres funciones?; explique.

Ej.4: Un ingeniero responsable de recursos humanos de una plata industrial desea saber el monto total necesario para abonar a N obreros sabiendo solamente el valor por hora trabajada (VH) y la cantidad de horas mensuales que trabajó cada obrero (HMT). Si el obrero trabajó más de 192 horas mensuales, recibirá por hora un 50% adicional. Utilizar: float Salario(float VH, int HMT) //Retorna el salario de un solo obrero AC: ¿En qué momento se debo invocar la función? ¿Dónde debo calcular el adicional del Obrero? ¿Debería declarar otra función para calcularlo?

4/15

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Univ.Nac.de Salta – Fac.de Ingeniería

Publicación Moodle de soluciones: 06/11 después 18:15 hs

Ej.5: El responsable de depósito de una fábrica de bombas de agua debe hacer un control de calidad a N de ellas y decide probar aquellas cuyo número de empaque sea PRIMO y esté comprendido en un intervalo [A,B]. Escribir un programa que muestre el número de empaque de las bombas que debe probar. Utilice la siguiente función: bool EsPrimo(int empaque)

//Retorna TRUE si empaque es primo, sino retorna FALSE.

AC: ¿Entendió en que consiste un parámetro de tipo bool? ¿Cuáles son los resultados posibles de retorno?

5/15

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Univ.Nac.de Salta – Fac.de Ingeniería

Publicación Moodle de soluciones: 06/11 después 18:15 hs

Funciones con Parámetros por Referencia Ejercicios Básicos:

Ej.D: Dado un vector V de N números enteros, elimine el valor almacenado en la posición P utilizando las funciones: void cargar(int v[], int N)//Carga valores en el vector con N valores enteros. void eliminar(int v[], int &N, int P)//Elimina el componente de posición P. void mostrar(int v[], int N) //Muestra el vector modificado. AC: ¿Observa que se pasa &N (argumento por referencia) para que la función modifique la cantidad de compartimentos ocupados del vector dentro de la función y el programa principal vea modificado N luego de ejecutar la función? En lo fáctico será quizás para lo único q utilice parámetros por referencia.

Ej.E: Sea un vector V de N enteros, inserte al principio: el producto de los componentes del mismo; utilice: int calproducto(int v[], int N)//Calcula productoría de componentes del vector void insPrimero(int v[], int &N, int prod)//Inserta al principio del vector el param prod

6/15

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Univ.Nac.de Salta – Fac.de Ingeniería

Publicación Moodle de soluciones: 06/11 después 18:15 hs

AC: ¿Observa la diferencia entre los argumentos N (argumento por valor) y &N (argumento por referencia)? ¿En qué caso se actualiza el valor de N, con cuál función?

Ej.6: Dado un vector V de N números enteros, ELIMINE todos los números pesados. Muestre el vector actualizado. NOTA: un número es pesado si posee una cantidad de dígitos >= a 5, superior a la cantidad de dígitos < a 5. Utilice: void CargarVec(int v[], int N) //Carga datos en el vector V bool EsPesado(int valor)

//Retorna TRUE si x es pesado, FALSE en caso contrario.

void EliminarPesado(int v[], int &N, int POS) //Elimina valor pesado del vector V según POS void MostrarVec(int v[], int N) //Muestra el vector. AC.: ¿Entendió que las estructuras de datos compuestas pasan por defecto como parámetros por valor? ¡RECUÉRDELO! ¿Cómo pasó la variable N en la función cargarVect() (por valor o por referencia)? Argumente su respuesta. ¿Por qué la variable simple N no pasa por referencia en la función mostrarVect()? ¿El vector debe pasarse a la función eliminarPesado() por valor o por referencia? (¿qué debía recordar?)

7/15

INFORMÁTICA (CCA) – 2ºcuat. Año 2017 Entregado: Com.1a4=27/10; Com.5+6=30/10; Fecha Presentación: Com.1a4=03/11; Com.5+6=06/11;

Univ.Nac.de Salta – Fac.de Ingeniería

Publicación Moodle de soluciones: 06/11 después 18:15 hs

Ej.7: Definir un vector “Deposito” con capacidad máxima para 50 valores enteros, permitir que el usuario almacene M valores que representan los stocks de los M materiales. Eliminar los materiales cuyo valor de stock sea menor que el valor PR ingresado por el usuario (PR: Punto de reposición). Mostrar el vector resultante. Utilice estas funciones: void cargarVect(int v[], int M) //Carga datos en el vector V void eliminar(int v[], int &M, int PR) //Elimina valores menores que PR. void mostrarVect(int v[], int M) //Muestra el vector.

Ej.8: Declarar un vector “Legajos” con capacidad máx. 100 y cargarlo con (N...


Similar Free PDFs