SlideShare una empresa de Scribd logo
1 de 20
1
2 Acciones y funciones
2.1 Concepto
Una acción o una función es un conjunto de instrucciones agrupadas
a las que se da un nombre que permite referirse a ellas globalmente.
La utilización de acciones y funciones hace que los programas sean
mucho más cortos y sencillos.
Suele ser útil construir acciones y funciones para representar frag-
mentos de un algoritmo que se usan más de una vez dentro de un
mismo algoritmo o que se repiten en distintos algoritmos.
2
2.2. Acciones y funciones
Ejemplo de definición de una función:
función distancia(x, y: real): real
devuelve (x2
+ y2
)1/2
;
ffunción
Cuando un algoritmo utiliza una acción o una función decimos que el algoritmo
llama (o invoca) a la acción o a la función correspondiente.
Tanto las definiciones de las acciones y funciones como las llamadas a éstas en los
algoritmos deben especificar sus parámetros. Los parámetros representan los da-
tos que manipula el algoritmo implementado por la acción o la función correspon-
diente.
Ejemplos de llamadas:
x := distancia(1,2);
y := distancia(3,4);
3
l orden de los parámetros es importante. Los parámetros utilizados en las llamadas a
na función o a una acción deben escribirse en el mismo orden que los parámetros de
u definición.
(x,y) = (x2
– y2
)1/2
f(3,2) = 51/2
f(2,3) = (-5)1/2
Vamos a distinguir dos tipos de parámetros:
. Parámetros formales o simplemente parámetros: son los que se utilizan
en la definición de una función o de una acción.
. Parámetros reales o argumentos: son los utilizados en las llamadas a una
función o a una acción.
n el ejemplo anterior “x” e “y” son parámetros formales, mientras 3 y 2 son
arámetros reales.
ada llamada a una función o a una acción tiene unos parámetros reales distintos.
:= f(3,2) → los parámetros reales de esta llamada a la función f son 3 y 2.
:= f(5,4) → los parámetros reales de esta llamada a la función f son 5 y 4.
4
Los parámetros pueden clasificarse de acuerdo con otros criterios. A continuación
introducimos una segunda clasificación:
1. Parámetros de entrada (ent): representan datos que necesita conocer el algo-
ritmo. Su valor no se modifica durante la ejecución del algoritmo.
2. Parámetros de salida (sal): representan los resultados del algoritmo. El algo-
ritmo modifica su valor durante la ejecución de manera que reflejen los resul-
tados obtenidos.
3. Parámetros de entrada y salida (ent/sal): representan datos cuyo valor ini-
cial es necesario para el algoritmo, pero cuyo valor queda modificado duran-
te la ejecución de éste.
Las acciones utilizan parámetros de estos tres tipos: entrada, entrada/salida y
salida.
Las funciones sólo utilizan parámetros de entrada y se caracterizan porque
siempre devuelven un valor.
5
2.3. Definición de funciones
Las funciones se caracterizan porque sólo tienen parámetros de entrada y siempre
devuelven un valor.
En la definición de las funciones se especifica el tipo de valores que puede tomar
cada parámetro y el tipo de valor que devuelve la función. Toda definición de una
función contiene al menos una instrucción del tipo “devuelve expresión”.
función Mínimo(x, y: entero): entero
var r: entero fvar
si x < y entonces
r := x;
si no
r := y;
fsi
devuelve r;
ffunción
6
función Factorial(n: entero): entero
var r, i: entero fvar
r:=1;
si n > 1 entonces
para i:=2 hasta n hacer
r := r*i;
fpara
fsi
devuelve r;
ffunción
Ejemplos de llamadas correctas a estas funciones:
algoritmo Minimo y tabla de factoriales
var x, y, k, n: entero fvar
Escribir(“Introduzca dos enteros: “); LeerEntero(x); LeerEntero(y);
Escribir(“El mínimo es: “); EscribirEntero(Mínimo(x,y));
Escribir(“Introduzca un entero: “); LeerEntero(n);
para k:=0 hasta n hacer
Escribir(“El factorial de “); Escribir(k); Escribir(“ es “);
Escribir(Factorial(k)); Escribir(‘n’);
fpara
falgoritmo
7
2.4. Definición de acciones
En la definición de las acciones se indica para cada parámetro si es de entrada
(ent), salida (sal) o entrada/salida (ent/sal), el nombre del parámetro y el tipo
de valores que puede tomar.
acción saludo( )
Escribir(“Hola. ¿Qué tal?“);
facción
acción escribir_resultado(ent resultado: real)
Escribir(“El resultado es “); EscribirReal(resultado);
facción
acción leer_real_positivo(sal x: real)
LeerReal(x);
mientras ( x < 0 ) hacer
LeerReal(x);
fmientras
facción
8
acción intercambiar(ent/sal x, y: real)
var auxiliar: real fvar
auxiliar := x;
x := y;
y := auxiliar;
facción
Ejemplos de llamadas correctas a estas acciones:
algoritmo
var x, y: real fvar
x=2; y=3;
saludo( );
escribir_resultado(x+y);
leer_real_positivo(y);
Escribir(“x = “); EscribirReal(x); Escribir(“ y = “); EscribirReal(y);
intercambiar(x,y);
Escribir(“x = “); EscribirReal(x); Escribir(“ y = “); EscribirReal(y);
falgoritmo
9
Ejemplo: Algoritmo que utiliza acciones y funciones.
algoritmo Máximo par de una lista de N números positivos.
const N: entero = 10 fconst
var x, máximo: real; i, contador : entero fvar
máximo:=0.0; contador=0;
para i:=1 hasta N hacer
leer_real_positivo(x);
si par(x) entonces
contador := contador + 1;
máximo := max(máximo,x)
fsi
fpara
si (contador > 0) entonces
Escribir(“El máximo número par introducido es “); Escribir(máximo);
si no
Escribir(“No se ha introducido ningún número par.”);
fsi
falgoritmo
10
acción leer_real_positivo(sal número: real)
LeerReal(número);
mientras número < 0 hacer
LeerReal(número);
fmientras
facción
función max(a, b: real): real
var resultado: entero fvar
si a > b entonces
resultado := a;
si no
resultado := b;
fsi
devuelve resultado;
ffunción
función par(a: real): booleano
devuelve ( RealAEntero(a) mod 2 = 0);
ffunción
11
Acciones y funciones en C
Las acciones y funciones se definen después del programa principal (i.e., main).
En C se distinguen dos tipos de parámetros, en lugar de los tres tipos (entrada,
salida y entrada-salida) que se consideran en la notación algorítmica.
1. Parámetros que se pasan por valor: la función o acción trabaja con una copia
de ellos y no modifica su valor.
2. Parámetros que se pasan por variable o referencia: la acción trabaja con una
referencia (tipo&) a la variable original y modifica realmente su valor. Estos
parámetros se marcan con el símbolo & detrás del tipo en la primera línea de
la definición de una acción y en su prototipo.
El prototipo de una acción o función se coloca en la cabecera del programa, antes
de la definición de main. Los prototipos de las distintas acciones y funciones que
se usan en un programa se escriben en líneas separadas y se recomienda que apa-
rezcan en el mismo orden que las definiciones de las acciones y funciones.
12
Definición de funciones
Es necesario preceder la definición de una función con una declaración del tipo de
valor que devuelve la función. La expresión “devuelve exp;” que aparece siempre
en el cuerpo de una función, se traduce por “return exp;”. Las variables locales se
definen en primer lugar, antes que las instrucciones de la función.
función Mínimo(x, y: real): real
var resultado: real fvar
si x < y entonces resultado := x si no resultado := y fsi
devuelve resultado
ffunción
double Minimo(double x, double y) {
double resultado;
if (x < y) {resultado = x;} else {resultado = y;}
return resultado;
}
El prototipo de una funcción se obtiene sustituyendo “{“ por “;” en la primera línea
de su definición:
double Minimo(double x, double y);
13
función Factorial(n: entero): entero
var r, i: entero fvar
r:=1;
si n > 1 entonces
para i:=2 hasta n hacer
r:=r*i;
fpara
fsi
devuelve r;
ffunción
int Factorial(int n) {
int r=1, i;
if (n > 1) {
for (i=2; i <= n; i++) {
r = r*i;
}
}
return r;
}
14
#include <stdlib.h>
#include <iostream>
using namespace std;
int factorial(int n); /* Prototipo*/
int main (void) {
int i, N;
cout << “Este programa escribe la tabla de los N primeros factoriales” << endl;
cout << “Introduzca N: “;
cin >> N;
for (i=0; i<N; i++) {
cout << “El factorial de “ << i << “ es “ << factorial(i) << endl; } /* Llamada */
system(“pause”);
}
int factorial(int n) { /* Definición */
int r=1, i;
if (n > 1) {
for (i=2; i <= n; i++) { r = r*i; }
}
return r;
}
15
Definición de acciones
En la definición de una acción se utiliza la palabra clave void para indicar que no
devuelve ningún valor.
acción escribir_resultado(ent resultado: real)
Escribir(“El resultado es “); EscribirReal(resultado);
facción
void escribir_resultado(double resultado) {
cout << “ El resultado es “ << resultado;
}
Los parámetros que se pasan por variable o referencia se indican utilizando el sím-
bolo & después de su tipo en la cabecera de la acción y en su prototipo, pero no en
el cuerpo de la acción ni en las llamadas a ésta.
acción leer_real_positivo(sal x: real)
Escribir(“Numero positivo: ”); Leer(x);
mientras ( x < 0 ) hacer
Escribir(“Numero positivo: ”);
Leer(x);
fmientras
void leer_real_positivo(double& x) {
cout << “Numero positivo: ”; cin >> x;
while (x<0) {
cout << “Numero positivo: “; cin << x;
}
}
16
Los parámetros que se pasan por variable o referencia se indican utilizando el sím-
bolo & después de su tipo en la cabecera de la acción y en su prototipo, pero no en
el cuerpo de la acción ni en las llamadas a ésta.
acción intercambiar(ent/sal x, y: entero)
var auxiliar: entero fvar
auxiliar := x; x := y; y := auxiliar;
facción
void intercambiar(int& x, int& y) {
int auxiliar;
auxiliar = x; x = y; y = auxiliar;
}
Las variables locales se definen en primer lugar, antes que las instrucciones de la
ac-
ción.
El prototipo de una acción se obtiene sustituyendo “{“ por “;” en la primera línea de
su definición:
void intercambiar(int& x, int& y);
17
Si una acción no tiene parámetros se indica colocando la palabra clave void en
lugar
de éstos en su definición.
acción saludo( )
Escribir(“Hola. ¿Qué tal?“);
facción
void hello(void) {
cout << “Hola!”;
}
18
Utilización de las acciones y funciones
Las funciones o acciones pueden ser utilizadas en la función principal (i.e., main) de
un programa o en otras acciones y funciones definidas dentro del programa siempre
que sus prototipos se hayan declarado antes de la definición de main.
Cuando esto ocurre se dice que existe una llamada a la función o acción correspon-
diente. Una llamada a una función o acción simplemente contiene el nombre de la
función o acción seguido de los parámetros reales a los que se quiere aplicar.
Ilustramos la utilización de acciones y funciones con una implementación en C del
algoritmo que calcula el máximo número par de una lista de N números positivos.
#include <stdlib.h>
#include <iostream>
#define N 10
using namespace std;
/* Prototipos de las funciones y acciones utilizadas en el programa. */
void leer_real_positivo(double& x);
bool par(double x);
double max(double x, double y);
19
int main(void) {
double numero, maximo=0.0;
int i, contador=0;
for (i=1; i <= N; i++) {
leer_real_positivo(numero);
if ( par(numero) ) {
contador++;
maximo = max(maximo, numero);
}
}
if (contador > 0) {
cout << “El maximo numero par introducido es “ << maximo << endl;
} else {
cout << “No se ha introducido ningún número par.” << endl;
}
system(“pause”);
}
20
void leer_real_positivo(double& x) {
cout << endl << “Introduzca un numero positivo: “;
cin >> x;
while ( x<0 ) {
cout << endl << “Introduzca un numero positivo: “;
cin >> x;
}
}
bool par(double x) {
return ( (int)x % 2 == 0 );
}
double max(double x, double y) {
double resultado;
if ( x>y ) {
resultado=x;
} else {
resultado=y;
}
return resultado;
}

Más contenido relacionado

La actualidad más candente (20)

Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basic
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje c
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Funciones con vectores c++
Funciones con vectores c++Funciones con vectores c++
Funciones con vectores c++
 
Indentificacion de funciones
Indentificacion de funcionesIndentificacion de funciones
Indentificacion de funciones
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
11funciones 1231096290787715-2
11funciones 1231096290787715-211funciones 1231096290787715-2
11funciones 1231096290787715-2
 
Arreglos. lidia
Arreglos. lidiaArreglos. lidia
Arreglos. lidia
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 
Guía funciones
Guía funcionesGuía funciones
Guía funciones
 
4 operadores
4 operadores4 operadores
4 operadores
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
 

Similar a Acciones funciones (20)

Funciones
FuncionesFunciones
Funciones
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
 
Presentacion capitulo 6
Presentacion capitulo 6Presentacion capitulo 6
Presentacion capitulo 6
 
Presentacion
PresentacionPresentacion
Presentacion
 
Programación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónProgramación modular en Introducción a la Programación
Programación modular en Introducción a la Programación
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Clase 19
Clase 19Clase 19
Clase 19
 
Funciones
FuncionesFunciones
Funciones
 
OPERADORES ARITMETICOS
OPERADORES ARITMETICOSOPERADORES ARITMETICOS
OPERADORES ARITMETICOS
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Módulo 4 (sin estilo)
Módulo 4 (sin estilo)Módulo 4 (sin estilo)
Módulo 4 (sin estilo)
 
Escuela
EscuelaEscuela
Escuela
 
Escuela
EscuelaEscuela
Escuela
 
Clase 10
Clase 10Clase 10
Clase 10
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICADERIVACIÓN E INTEGRACIÓN NUMÉRICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Funciones
FuncionesFunciones
Funciones
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
 

Más de Eliezer Cordova

Más de Eliezer Cordova (20)

Tipos de comunicacion
Tipos de comunicacionTipos de comunicacion
Tipos de comunicacion
 
Presentacion 3
Presentacion 3Presentacion 3
Presentacion 3
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Presentacion 1
Presentacion 1Presentacion 1
Presentacion 1
 
Introduccion publisher
Introduccion publisherIntroduccion publisher
Introduccion publisher
 
Presentaciones efectivas
Presentaciones efectivasPresentaciones efectivas
Presentaciones efectivas
 
Resolucion de problemas
Resolucion de problemasResolucion de problemas
Resolucion de problemas
 
Programación
ProgramaciónProgramación
Programación
 
Presentacion aula virtual videoconferencia
Presentacion aula virtual videoconferenciaPresentacion aula virtual videoconferencia
Presentacion aula virtual videoconferencia
 
Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0Metodología para la creación de algoritmos 0
Metodología para la creación de algoritmos 0
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.ppt
 
Presentacion uno
Presentacion unoPresentacion uno
Presentacion uno
 
Intro
IntroIntro
Intro
 
3 estructuras no lineales estáticas y dinámicas
3  estructuras no lineales estáticas y dinámicas3  estructuras no lineales estáticas y dinámicas
3 estructuras no lineales estáticas y dinámicas
 
2 arboles
2 arboles2 arboles
2 arboles
 
1 árbol
1 árbol1 árbol
1 árbol
 
3 funciones
3 funciones3 funciones
3 funciones
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
 
1 estructura programa-c
1 estructura programa-c1 estructura programa-c
1 estructura programa-c
 

Último

PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Marketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPMarketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPANEP - DETP
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaJuan Carlos Fonseca Mata
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 

Último (20)

PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Marketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPMarketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETP
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - Botánica
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 

Acciones funciones

  • 1. 1 2 Acciones y funciones 2.1 Concepto Una acción o una función es un conjunto de instrucciones agrupadas a las que se da un nombre que permite referirse a ellas globalmente. La utilización de acciones y funciones hace que los programas sean mucho más cortos y sencillos. Suele ser útil construir acciones y funciones para representar frag- mentos de un algoritmo que se usan más de una vez dentro de un mismo algoritmo o que se repiten en distintos algoritmos.
  • 2. 2 2.2. Acciones y funciones Ejemplo de definición de una función: función distancia(x, y: real): real devuelve (x2 + y2 )1/2 ; ffunción Cuando un algoritmo utiliza una acción o una función decimos que el algoritmo llama (o invoca) a la acción o a la función correspondiente. Tanto las definiciones de las acciones y funciones como las llamadas a éstas en los algoritmos deben especificar sus parámetros. Los parámetros representan los da- tos que manipula el algoritmo implementado por la acción o la función correspon- diente. Ejemplos de llamadas: x := distancia(1,2); y := distancia(3,4);
  • 3. 3 l orden de los parámetros es importante. Los parámetros utilizados en las llamadas a na función o a una acción deben escribirse en el mismo orden que los parámetros de u definición. (x,y) = (x2 – y2 )1/2 f(3,2) = 51/2 f(2,3) = (-5)1/2 Vamos a distinguir dos tipos de parámetros: . Parámetros formales o simplemente parámetros: son los que se utilizan en la definición de una función o de una acción. . Parámetros reales o argumentos: son los utilizados en las llamadas a una función o a una acción. n el ejemplo anterior “x” e “y” son parámetros formales, mientras 3 y 2 son arámetros reales. ada llamada a una función o a una acción tiene unos parámetros reales distintos. := f(3,2) → los parámetros reales de esta llamada a la función f son 3 y 2. := f(5,4) → los parámetros reales de esta llamada a la función f son 5 y 4.
  • 4. 4 Los parámetros pueden clasificarse de acuerdo con otros criterios. A continuación introducimos una segunda clasificación: 1. Parámetros de entrada (ent): representan datos que necesita conocer el algo- ritmo. Su valor no se modifica durante la ejecución del algoritmo. 2. Parámetros de salida (sal): representan los resultados del algoritmo. El algo- ritmo modifica su valor durante la ejecución de manera que reflejen los resul- tados obtenidos. 3. Parámetros de entrada y salida (ent/sal): representan datos cuyo valor ini- cial es necesario para el algoritmo, pero cuyo valor queda modificado duran- te la ejecución de éste. Las acciones utilizan parámetros de estos tres tipos: entrada, entrada/salida y salida. Las funciones sólo utilizan parámetros de entrada y se caracterizan porque siempre devuelven un valor.
  • 5. 5 2.3. Definición de funciones Las funciones se caracterizan porque sólo tienen parámetros de entrada y siempre devuelven un valor. En la definición de las funciones se especifica el tipo de valores que puede tomar cada parámetro y el tipo de valor que devuelve la función. Toda definición de una función contiene al menos una instrucción del tipo “devuelve expresión”. función Mínimo(x, y: entero): entero var r: entero fvar si x < y entonces r := x; si no r := y; fsi devuelve r; ffunción
  • 6. 6 función Factorial(n: entero): entero var r, i: entero fvar r:=1; si n > 1 entonces para i:=2 hasta n hacer r := r*i; fpara fsi devuelve r; ffunción Ejemplos de llamadas correctas a estas funciones: algoritmo Minimo y tabla de factoriales var x, y, k, n: entero fvar Escribir(“Introduzca dos enteros: “); LeerEntero(x); LeerEntero(y); Escribir(“El mínimo es: “); EscribirEntero(Mínimo(x,y)); Escribir(“Introduzca un entero: “); LeerEntero(n); para k:=0 hasta n hacer Escribir(“El factorial de “); Escribir(k); Escribir(“ es “); Escribir(Factorial(k)); Escribir(‘n’); fpara falgoritmo
  • 7. 7 2.4. Definición de acciones En la definición de las acciones se indica para cada parámetro si es de entrada (ent), salida (sal) o entrada/salida (ent/sal), el nombre del parámetro y el tipo de valores que puede tomar. acción saludo( ) Escribir(“Hola. ¿Qué tal?“); facción acción escribir_resultado(ent resultado: real) Escribir(“El resultado es “); EscribirReal(resultado); facción acción leer_real_positivo(sal x: real) LeerReal(x); mientras ( x < 0 ) hacer LeerReal(x); fmientras facción
  • 8. 8 acción intercambiar(ent/sal x, y: real) var auxiliar: real fvar auxiliar := x; x := y; y := auxiliar; facción Ejemplos de llamadas correctas a estas acciones: algoritmo var x, y: real fvar x=2; y=3; saludo( ); escribir_resultado(x+y); leer_real_positivo(y); Escribir(“x = “); EscribirReal(x); Escribir(“ y = “); EscribirReal(y); intercambiar(x,y); Escribir(“x = “); EscribirReal(x); Escribir(“ y = “); EscribirReal(y); falgoritmo
  • 9. 9 Ejemplo: Algoritmo que utiliza acciones y funciones. algoritmo Máximo par de una lista de N números positivos. const N: entero = 10 fconst var x, máximo: real; i, contador : entero fvar máximo:=0.0; contador=0; para i:=1 hasta N hacer leer_real_positivo(x); si par(x) entonces contador := contador + 1; máximo := max(máximo,x) fsi fpara si (contador > 0) entonces Escribir(“El máximo número par introducido es “); Escribir(máximo); si no Escribir(“No se ha introducido ningún número par.”); fsi falgoritmo
  • 10. 10 acción leer_real_positivo(sal número: real) LeerReal(número); mientras número < 0 hacer LeerReal(número); fmientras facción función max(a, b: real): real var resultado: entero fvar si a > b entonces resultado := a; si no resultado := b; fsi devuelve resultado; ffunción función par(a: real): booleano devuelve ( RealAEntero(a) mod 2 = 0); ffunción
  • 11. 11 Acciones y funciones en C Las acciones y funciones se definen después del programa principal (i.e., main). En C se distinguen dos tipos de parámetros, en lugar de los tres tipos (entrada, salida y entrada-salida) que se consideran en la notación algorítmica. 1. Parámetros que se pasan por valor: la función o acción trabaja con una copia de ellos y no modifica su valor. 2. Parámetros que se pasan por variable o referencia: la acción trabaja con una referencia (tipo&) a la variable original y modifica realmente su valor. Estos parámetros se marcan con el símbolo & detrás del tipo en la primera línea de la definición de una acción y en su prototipo. El prototipo de una acción o función se coloca en la cabecera del programa, antes de la definición de main. Los prototipos de las distintas acciones y funciones que se usan en un programa se escriben en líneas separadas y se recomienda que apa- rezcan en el mismo orden que las definiciones de las acciones y funciones.
  • 12. 12 Definición de funciones Es necesario preceder la definición de una función con una declaración del tipo de valor que devuelve la función. La expresión “devuelve exp;” que aparece siempre en el cuerpo de una función, se traduce por “return exp;”. Las variables locales se definen en primer lugar, antes que las instrucciones de la función. función Mínimo(x, y: real): real var resultado: real fvar si x < y entonces resultado := x si no resultado := y fsi devuelve resultado ffunción double Minimo(double x, double y) { double resultado; if (x < y) {resultado = x;} else {resultado = y;} return resultado; } El prototipo de una funcción se obtiene sustituyendo “{“ por “;” en la primera línea de su definición: double Minimo(double x, double y);
  • 13. 13 función Factorial(n: entero): entero var r, i: entero fvar r:=1; si n > 1 entonces para i:=2 hasta n hacer r:=r*i; fpara fsi devuelve r; ffunción int Factorial(int n) { int r=1, i; if (n > 1) { for (i=2; i <= n; i++) { r = r*i; } } return r; }
  • 14. 14 #include <stdlib.h> #include <iostream> using namespace std; int factorial(int n); /* Prototipo*/ int main (void) { int i, N; cout << “Este programa escribe la tabla de los N primeros factoriales” << endl; cout << “Introduzca N: “; cin >> N; for (i=0; i<N; i++) { cout << “El factorial de “ << i << “ es “ << factorial(i) << endl; } /* Llamada */ system(“pause”); } int factorial(int n) { /* Definición */ int r=1, i; if (n > 1) { for (i=2; i <= n; i++) { r = r*i; } } return r; }
  • 15. 15 Definición de acciones En la definición de una acción se utiliza la palabra clave void para indicar que no devuelve ningún valor. acción escribir_resultado(ent resultado: real) Escribir(“El resultado es “); EscribirReal(resultado); facción void escribir_resultado(double resultado) { cout << “ El resultado es “ << resultado; } Los parámetros que se pasan por variable o referencia se indican utilizando el sím- bolo & después de su tipo en la cabecera de la acción y en su prototipo, pero no en el cuerpo de la acción ni en las llamadas a ésta. acción leer_real_positivo(sal x: real) Escribir(“Numero positivo: ”); Leer(x); mientras ( x < 0 ) hacer Escribir(“Numero positivo: ”); Leer(x); fmientras void leer_real_positivo(double& x) { cout << “Numero positivo: ”; cin >> x; while (x<0) { cout << “Numero positivo: “; cin << x; } }
  • 16. 16 Los parámetros que se pasan por variable o referencia se indican utilizando el sím- bolo & después de su tipo en la cabecera de la acción y en su prototipo, pero no en el cuerpo de la acción ni en las llamadas a ésta. acción intercambiar(ent/sal x, y: entero) var auxiliar: entero fvar auxiliar := x; x := y; y := auxiliar; facción void intercambiar(int& x, int& y) { int auxiliar; auxiliar = x; x = y; y = auxiliar; } Las variables locales se definen en primer lugar, antes que las instrucciones de la ac- ción. El prototipo de una acción se obtiene sustituyendo “{“ por “;” en la primera línea de su definición: void intercambiar(int& x, int& y);
  • 17. 17 Si una acción no tiene parámetros se indica colocando la palabra clave void en lugar de éstos en su definición. acción saludo( ) Escribir(“Hola. ¿Qué tal?“); facción void hello(void) { cout << “Hola!”; }
  • 18. 18 Utilización de las acciones y funciones Las funciones o acciones pueden ser utilizadas en la función principal (i.e., main) de un programa o en otras acciones y funciones definidas dentro del programa siempre que sus prototipos se hayan declarado antes de la definición de main. Cuando esto ocurre se dice que existe una llamada a la función o acción correspon- diente. Una llamada a una función o acción simplemente contiene el nombre de la función o acción seguido de los parámetros reales a los que se quiere aplicar. Ilustramos la utilización de acciones y funciones con una implementación en C del algoritmo que calcula el máximo número par de una lista de N números positivos. #include <stdlib.h> #include <iostream> #define N 10 using namespace std; /* Prototipos de las funciones y acciones utilizadas en el programa. */ void leer_real_positivo(double& x); bool par(double x); double max(double x, double y);
  • 19. 19 int main(void) { double numero, maximo=0.0; int i, contador=0; for (i=1; i <= N; i++) { leer_real_positivo(numero); if ( par(numero) ) { contador++; maximo = max(maximo, numero); } } if (contador > 0) { cout << “El maximo numero par introducido es “ << maximo << endl; } else { cout << “No se ha introducido ningún número par.” << endl; } system(“pause”); }
  • 20. 20 void leer_real_positivo(double& x) { cout << endl << “Introduzca un numero positivo: “; cin >> x; while ( x<0 ) { cout << endl << “Introduzca un numero positivo: “; cin >> x; } } bool par(double x) { return ( (int)x % 2 == 0 ); } double max(double x, double y) { double resultado; if ( x>y ) { resultado=x; } else { resultado=y; } return resultado; }