Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de...
-
Upload
jose-maria-lozano-villanueva -
Category
Documents
-
view
232 -
download
0
Transcript of Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de...
![Page 1: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/1.jpg)
Funciones Definidas por el Programador
Prof. Flor NarcisoDepartamento de Computación
Escuela de Ingeniería de SistemasFacultad de Ingeniería
Universidad de Los Andes
![Page 2: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/2.jpg)
Funciones Definidas por el Programador
• Nuestra primera función!!!!!
void main ( ){
cout << “Yo soy una funcion y mi nombre es main!!” << endl;
}
• Un programa en C++ consta de una o varias funciones.• Un programa siempre debe contener la función main.• La ejecución de un programa siempre comienza por la
función main.
![Page 3: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/3.jpg)
Definición de una Función
tipo_resultado función nombre_función (lista_parámetros_formales)
Declaración_variables_locales
InicioConjunto de sentenciasdevolver expresión
fin_función
• El tipo del resultado (tipo de la función), la lista de parámetros formales, la declaración de variables locales y la sentencia devolver son opcionales.
• Una definición de una función no puede estar incluida en otra.
![Page 4: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/4.jpg)
Sentencia Devolver
• Sentencia devolver expresión devuelve el valor del resultado de la ejecución de la función.
• El tipo de esta expresión debe ser el mismo que el tipo de la función definida en tipo_resultado.
• Si la función no tiene asociado un tipo_resultado entonces se omite la sentencia devolver. En otros lenguajes de programación a este tipo de funciones se les llama “procedimiento”.
![Page 5: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/5.jpg)
Recordar!!!!
• Cuando se llama a una función desde alguna parte específica del programa, se ejecutan sus sentencias. Una vez ejecutada la función completa, se devuelve el control a la parte del programa desde donde se realizó la llamada.
• Generalmente una función devuelve un sólo valor, aunque se pueden escribir funciones que no devuelven ningún valor o que devuelven varios valores.
![Page 6: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/6.jpg)
Definición de una Función: Ejemplo 1
Calcular el cuadrado de un número entero
entero función cuadrado (entero e)
Inicio devolver e * e
fin_función
tipo_resultado: entero
nombre_función: cuadrado
lista_parámetros_formales: e de tipo entero (parámetro de entrada)
Declaración_variables_locales: No hay variables locales
devolver: valor de e * e
![Page 7: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/7.jpg)
Definición de una Función: Ejemplo 2
Dados tres números enteros, determinar cuál es el mayor
entero función mayor (entero x, entero y, entero z)
entero max
Inicio max = x Si (y > max) entonces
max = y fin_si
Si (z > max) max = z
fin_si devolver max
fin_función
tipo_resultado: entero
nombre_función: mayor
lista_parámetros_formales: x de tipo entero, y de tipo entero y z de tipo entero(parámetros de entrada)
Declaración_variables_locales: max de tipo entero
devolver: valor de max
![Page 8: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/8.jpg)
Llamada a una Función
• Si la función es de un tipo determinado<var> = <nombre_función> (<lista de parámetros actuales>)
x = mayor(a, b + 1, 2)
• Si la función no tiene tipo asociado<nombre_función> (<lista de parámetros actuales>)
ordenar(x, y, z1)
• Dentro de una expresión<var> = E(x + <nombre_función>(<lista de parámetros actuales>))
y = mayor(a + factorial(b), b, c)
![Page 9: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/9.jpg)
Llamada a una Función que no tiene Tipo Asociado
0. Inicio1. MiFuncion()2. OtraFuncion()3. Fin
MiFuncion ()
0. Inicio
……
n. fin_función
OtraFuncion ()
0. Inicio
……
m. fin_función
![Page 10: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/10.jpg)
Llamadas a Funciones: Ejemplos
• F = factorial(5); // Funcion de un tipo determinado
• F = factorial(a)/factorial(a - b); // Funcion de un tipo
// determinado
• if (esBisiesto(anyo) == cierto) // Dentro de una condición
• MiFuncion(); // Funcion que no tiene tipo asociado
![Page 11: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/11.jpg)
Llamadas a Funciones: Ejemplo 1
Calcular x2 + y2/(x-y)2
entero función cuadrado (entero e)
Inicio devolver e * efin_función
0. Inicio1. Escribir (“Introduzca los valores de x y y”)2. Leer (x, y)3. Resultado = (cuadrado(x) + cuadrado(y))/cuadrado(x - y)4. Escribir (“Resultado =”, Resultado)5. Fin
![Page 12: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/12.jpg)
Llamadas a Funciones: Ejemplo 1
Calcular x2 + y2/(x-y)2
Para x = 5, y = 4Resultado = (cuadrado(5) + cuadrado(4))/cuadrado(1)
1) entero cuadrado (entero e) devolver 5 * 5 = 25Resultado = (25 + cuadrado(4))/cuadrado(1)
2) entero cuadrado (entero e) devolver 4 * 4 = 16Resultado = (25 + 16)/cuadrado(1)
3) entero cuadrado (entero e) devolver 1 * 1 = 1Resultado = (25 + 16)/1 = 41
5
4
1
![Page 13: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/13.jpg)
Llamadas a Funciones: Ejemplo 2
entero función mayor (entero x, entero y, entero z)
entero maxInicio max = x Si (y > max) entonces
max = y fin_si
if (z > max) max = z
fin_si devolver max;fin_función
0. Inicio1. Escribir (“Introduzca los valores
de a, b y c”)2. Leer (a, b, c)3. P = mayor (3, 4, 6)4. Q = mayor (a, b, c);5. R = mayor (a + 1, b, 1)6. S = mayor (P, Q, R)7. Escribir (“mayor =”, S)8. Fin
![Page 14: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/14.jpg)
Definición de una Función en C++
<tipo_función> <nombre_función> (<lista_parámetros_formales>)
{
<Declaración_variables_locales>
<Sentencias>
return <expresión>
}
Cuerpo de la función
![Page 15: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/15.jpg)
Encabezado de una Función en C++
<tipo_función> <nombre_función> (<lista_parámetros_formales>)
void main ( )
Tipo_función (no tiene)
Nombre_función
No hay parámetros formales
![Page 16: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/16.jpg)
Encabezado de una Función en C++
• El tipo void se usa para indicar que la función no devuelve ningún valor, o que no existen parámetros formales.
void function (void) // No devuelve valor y no // tiene parámetros formales
• Cada parámetro formal debe ser declarado.
int F2 (int a, int b, char c) // La funcion F2 devuelve un valor entero// Tiene tres parametros formales// Dos enteros a y b, uno caracter c
![Page 17: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/17.jpg)
Cuerpo de una Función en C++
• Declaración de variables locales.• Código ejecutable (conjunto de sentencias).
Ejemplo int F2 (int a, int b){ // Declaración de variables locales int c; // Codigo ejecutable c = a*a; c += b; return c; // Sentencia muy importante!!!!}
![Page 18: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/18.jpg)
Sentencia Return
Sentencia que devuelve el valor obtenido como resultado de la ejecución de una función.
Ejemploint cuadrado (int e) {
return e * e;}
![Page 19: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/19.jpg)
Funciones en C++: Ejemplo 1
entero función mayor (entero x, entero y, entero z)
entero max
Inicio max = x Si (y > max) entonces
max = y fin_si
Si (z > max) max = z
fin_si devolver maxfin_función
int mayor (int x, int y, int z) {
int max = x;
if (y > max)max = y;
if (z > max)max = z;
return max;}
Algoritmo Codificación
![Page 20: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/20.jpg)
Funciones en C++: Ejemplo 2
// Funcion factoriallong int factorial (int n) {
long int f;int i;
f = 1;i = 0;while (i < n){
i++;f = f * i;
}return f;
}
x = factorial(4)
n = 4 2 < 4 ?f = 1 n = 4i = 0 f = 6
0 < 4 ? i = 3n = 4 3 < 4 ?f = 1 n = 4i = 1 f = 24
1 < 4 ? i = 4n = 4 4 < 4 ? f = 2 return 24i = 2
Codificación Corrida en frío
![Page 21: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/21.jpg)
Funciones en C++: Ejemplo 3#include <iostream.h>
int a; // a es global
void f1 (int b, int c){ int k; // k es local
k = b * b;cout << “k = ” << k << endl;a = k + c; // a es globalcout << “a = “ << a << endl;
}
void f2 (int b, int c)// b y c diferentes a las de f1{ int k; // k local diferente
// a la de f1k = b + 2;cout << “k = “ << k << endl;a = k * a * c; // a globalcout << “a = ” << a << endl;
}void main () {
f1(1,2);a++;f2(3,4);
}
![Page 22: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/22.jpg)
Funciones en C++: Ejemplo 4
// Calcular los cuadrados de los enteros del 1 al 10
#include <iosream.h>
int cuadrado (int e) {return e * e;
}
void main () {int x;
for (x = 1; x <= 10; x++)cout << cuadrado(x) << endl;
}
![Page 23: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/23.jpg)
Funciones en C++: Ejemplo 5
// Convertir un caracter en minuscula a // mayuscula
#include <iosream.h>#include <ctype.h>
int minusc_mayusc (int c1) {
int c2;c2 = toupper(c1);return c2;
}
void main () {
int may, min, x;
for (x = 1; x <= 10; x++){ cout << “Introduzca una
letra minuscula” << endl; cin >> min; may = minusc_mayusc(min); cout << may << end;}
}
![Page 24: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/24.jpg)
Prototipos de Funciones en C++
• En los ejemplos descritos anteriormente, las funciones definidas por el programador siempre han precedido a la función main.
• Cuando la función main precede a las funciones definidas por el programador se utilizan prototipos.
<tipo_función> <nombre_función> (tipo_param_1, … , tipo_param_n);
![Page 25: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/25.jpg)
Funciones en C++: Ejemplo 1
#include <iostream.h>
void Pas( void ); // Prototipo de la
// funcion Pasvoid EscribirMiVar( void );// Prototipo// de la funcion EscribirMiVar
int gMiVar = 10; //gMiVar es global
void main( ){
// Llamada a una funcion dentro// de otraPas();
}
void Pas( void ){
// Llamada a una funcion dentro// de otraEscribriMiVar();
}void EscribirMiVar( void ){
cout << "gMiVar = " << gMiVar << endl;}
![Page 26: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/26.jpg)
Funciones en C++: Ejemplo 2
#include <iostream.h>
void Pas(int); // Prototipo de la funcion // Pas
void EscribirMiVar(int); // Prototipo // de la funcion EscribirMiVar
void main( ){
int miVar = 10;
// Llamada a una funcion dentro// de otraPas(miVar);
}
void Pas(int miVar){
// Llamada a una funcion dentro// de otraEscribriMiVar(miVar);
}
void EscribirMiVar(int miVar){
cout << ”miVar = " << miVar << endl;
}
![Page 27: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/27.jpg)
Ejercicios
• Explicar el significado de cada uno de los siguientes prototipos de funciones:
int f(int);double f1(double, int);char f2(void)
• Escribir una llamada a apropiada para cada una de las siguientes funciones:float formula(float x) void escribir(int a, int b){ { float y; int c; y = 3 * x - 1; c = sqrt(a * a + b * b); return (y); cout << “c = “ << c << end;} }
![Page 28: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/28.jpg)
Ejercicios
• Escribir una función (algoritmo y codificación) que reciba como parámetro un número y devuelva como resultado un valor de tipo lógico que indique si el número es o no par.
• Escribir una función (algoritmo y codificación) que reciba como parámetro dos números y devuelva como resultado un valor de tipo lógico que indique si el primer número es múltiple del segundo.
• Utilizando la función factorial, escribir una función (algoritmo y codificación) que calcule el número combinatorio dado por la fórmula siguiente: n!
m! x (n - m)!
![Page 29: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/29.jpg)
Ejercicios
• Escribir una función (algoritmo y codificación) que reciba los valores de x y n como parámetros de entrada y devuelva el valor de xn como salida.
• Escribir una función (algoritmo y codificación) que imprima la pirámide 1
121 12321 1234321
La declaración de la función será la siguiente:void piramide (int niveles)
Siendo niveles el número de filas de la pirámide (en el ejemplo 4).
![Page 30: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/30.jpg)
Ejercicios• Escribir una función de nombre Siguiente tal que, recibiendo un
número primo mayor que uno, devuelva el número primo inmediatamente siguiente y superior a dicho número primo. Por ejemplo, si se invoca Siguiente(7), la función devolverá el número 11.
• Escriba una función que reciba como parámetros las dos coordenadas cartesianas (x, y) de un punto del plano y devuelva como resultado un número del 1 al 4 que indique el cuadrante al cual pertenece al punto (no considere los ejes de coordenadas).
• Escribir una función que reciba como parámetros de entrada dos instantes de tiempo expresados en horas, minutos y segundos y devuelva como resultado un 1 o un 2según el primer instante de tiempo sea anterior al segundo o viceversa.
![Page 31: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/31.jpg)
Ejercicios• Sea el siguiente programa incompleto:
#include <iostream.h>
void main (void){ int x1, x2, suma; cout << “Introduce dos valores: ” << endl;
cin >> x1 >> x2;suma = suma_intervalo (x1, x2);cout << “La suma de los valores del intervalo es:” << suma << endl;
}
Completar el programa escribiendo la función suma_intervalo que calcula la suma de todos los números enteros comprendidos entre los dos parámetros de entrada, ambos inclusive.
![Page 32: Funciones Definidas por el Programador Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad.](https://reader035.fdocuments.net/reader035/viewer/2022081511/5665b4901a28abb57c923b3a/html5/thumbnails/32.jpg)
Ejercicios
• Escribir una funciónvoid maxmin (int x1, int x2, Pint max, Pint min);
que reciba como parámetros de entrada dos números enteros x1 y x2 y devuelva a través de los parámetros de salida max y min el máximo y el mínimo, respectivamente, de ambos números.
• Modificar la función anterior para que calcule también el valor medio de ambos números. El nuevo prototipo de la función será ahora el siguiente:
void maxmin (int x1, int x2, Pint max, Pint min, Pint media);
• Escribir una función cuyo prototipo es:Logico esLetra (char c);
que reciba como parámetro de entrada un carácter y devuelva un valor lógico Cierto si dicho carácter es una letra del alfabeto, y Falso en caso contrario.