Funciones en C++ PDF

Title Funciones en C++
Author Braian Roldan
Course Informatica
Institution Universidad Nacional de Salta
Pages 24
File Size 1.8 MB
File Type PDF
Total Downloads 1
Total Views 135

Summary

funciones en c++...


Description

TP.Nº7:Funciones en C++ Parámetros por Valor y Referencia.

OBJETIVOS ESPECÍFICOS TP Funciones en C++:  Entender que las funciones son “subprogramas” => presentan todas las características de estos (enumérelas).  Fijar, entonces, la mecánica de “declaración / redacción” de funciones para su posterior “uso / invocación”.  Parámetros: entender que las instanciaciones de valores en 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, es para que las funciones tengan la potencialidad de modificar dichos parámetros/argumentos. 

Que usaremos: parámetros por valor con variables simples cuando NO queramos que la función tenga la potestad de alterar los valores de las variables del programa. Por el contrario: los argumentos con variables simples 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:(desarrollado Teór/Práct).Dados losnúmerosenterosX e Y, calcule y muestre la potencia de X elevado a la Y, para elloutilice una función que calcule la potencia de X^Y pasando el valor de Xe Y como parámetros. Ejemplo:X = 2, Y = 4 =>X^Y = 2^4 =16

1/24

Ej.B: Dado un número entero Ncalcular 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.

Ej.C: Dado elintervalo [V, W], calcular y mostrar la sumatoria de los números enteros que pertenecen al intervalo y son divisibles de un número entero Z ingresado por el usuario. Utilice una función que calcule la sumatoria dedivisibles de Z pertenecientes al intervalo [V, W] pasando los valores V, W y Z como parámetros. AC: 1. 2. 3.

¿Qué debí entender con los Ejercicios Básicos? ¿Entendió cómo y dónde (en qué zona) se “redacta” (declara) una función (subprograma)?. ¿Entendió cómo (y dónde) se usa/llama/invoca a una función previamente declarada? ¿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? ¿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?

2/24

Ej.1: (desarrollado x JTP).Dada una lista, de tamaño desconocido de números enteros (que termina con un cero), mostrar el promedio de los DIGITOS de cada número ingresado. Utilizar una función que retorne el promedio de dígitos de un entero Q de la lista pasado por valor. floatpromDigitos(intq) // Devuelve elpromedio de dígitos del número q Modifique el programa redactado previamente para que informe al final cuántas veces fue usada la función. 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 desconocido de antemano).

Ej.2:Realizar un algoritmo para realizar la siguiente aproximación: 1

f (x )≃1+

2

3

n

( x−1 ) ( x−1) ( x−1 ) (x −1) + + +. ..+ 2! 1! n! 3!

Ingresar x y n ambas enteras, calcular f(x) definiendo las siguientes funciones: floatpotencia(float base, int exponente) // Devuelve el valor de la base elevada al exponente indicado. // No utilice la función pow() de la librería matemática. int factorial(int denominador) // Devuelve el factorial del denominador del cociente. floataproxima(float x, int N) // Calcula la sumatoria de términos mostrada más arriba

3/24

AC: ¿Aprendí con este ejercicio 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 dos funciones?; explique.

4/24

Ej.3: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 las siguientes funciones: floatsalario(floatVH, intHMT)// Devuelve el salario de un 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?

5/24

Ej.4:Dada una lista de números enteros que termina con un cero, determinar cuántos de ellos son CAPICUA. Ej: X =35253 =>ES CAPICUAX =2323 =>NO ES CAPICUA Utilizar las siguientes funciones: boolesCapicua(int x)// Devuelve si un número x es capicúa AC: ¿Cargó el vector con un ciclo mientras al no poderlo hacer con un ciclo desde? ¿Cómo deberá utilizarla función esCapicua()para determinar si un número es capicúa?

6/24

Ej.5:En muchos problemas de ingeniería es importante encontrar al menos una raíz de una función f(X), o sea el valor de X tal que f(X)=0, y el método más utilizado para ello es el Método de Newton-Raphson. Dada la función f(x) calcular y mostrar la raíz en el intervalo [a,b] = [1,2], es decir calcular en valor de X tal que f(X)=0. Utilice el Método de Newton-Raphson. Sugerencia: Puede utilizar un graficador de funciones para verificar resultados.

Implemente las siguientes funciones: 7/24

float f(float x) //Calcula y retorna f(x). floatdf(float x) //Calcula y retorna df(x). Derivada primera de f(x).

Luego modifique las funciones f y df del programa para calular y mostrar la raiz de la siguiente función en el intervalo [a,b] = [0,1].

8/24

El algoritmo del Método de Newton-Raphson es : var float a,b//Extremos del intervalo. float,X0,X1//Valor inicial y siguiente. Int i//Contador de iteraciones. inicio leer(a) leer(b) i=1 X0 = (a+b) / 2 X1 = X0 – ( f(X0) / f’(X0) ) mientras ( |X0 – X1| > 0.001 ) { i = i + 1 X0 = X1 X1 = X0 – ( f(X0) / f’(X0) ) } imprimir(“Luego de “, i ,” iteraciones”) imprimir(“La raíz de F es “, X1) fin AC: Con este ejercicio deseamos que solidifique los conceptos de declaración e invocación de funciones.

Funciones con Parámetros por Referencia Ejercicios Básicos: 9/24

Ej.D:(desarrollado Teór/Práct).Dado un vector V de N números enteros, elimine el último de sus componentes utilizando la siguiente función: voideliminaUltimo(int v[],int&N)//Elimina el ultimo componente del vector 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:Dado un vector V de N números enteros, inserte al principioelproducto de los componentes del mismo utilizando las siguientes funciones: intcalproducto(int v[],intN)//Calcula productoría de componentes del vector voidinsPrimero(int v[],int&N,intprod)//Inserta al principiodel vector el paramprod 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, luego de que función?

10/24

Ej.6:( desarrollado x JTP).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 las siguientes funciones: voidcargarVect(int v[],intN) //Carga datos en el vector V boolesPesado(int valor)//Determina si x es pesado voideliminaPesado(intv[],int&N, intX)//Elimina valor pesado del vector V según pos X AC.: ¿Entendió con este ejercicio 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 eliminaPesado() y mostrarVect()? ¿El vector debe pasarse a la función eliminaPesado() por valor o por referencia? (¿qué debía recordar?)

11/24

Ej.7:Dado un vector W de M enteros con capacidad máxima para 20, insertar donde se encuentre un númeropar, lacantidad de sus dígitos. Mostrar el vector resultante. voidcargarVect(int v[],intN) //Carga datos en el vector V intcantDigitos(int valor)//Cantidad de dígitos de un valor. voidinsertar_valor(int V[],int&N, int pos, int X)//Inserta un valor en el vector V. voidmostrarVect(int v[],intN)//Muestra el vector. AC.: ¿Una función puede realizar varias tareas?, ¿es conveniente? ¿Una función puede devolver más de un valor?

12/24

13/24

Ej.8:En materias como Algebra lineal, Análisis Numérico y Matemática Aplicada se utilizan métodos especiales para resolver problemas de sistemas de ecuaciones lineales, uno de ellos es la Norma Euclideana de un vector. Por ejemplo: El vector X=(-1,1,2) tiene Norma Euclideana

Dado un vector X que almacena números reales y capacidad máxima para 20. Cargarlo con N (N...


Similar Free PDFs