PDF de programación - Programación en C++ - Funciones y Parámetros

<<>>
Imágen de pdf Programación en C++ - Funciones y Parámetros

Programación en C++ - Funciones y Parámetrosgráfica de visualizaciones

Publicado el 9 de Mayo del 2017
2.167 visualizaciones desde el 9 de Mayo del 2017
955,5 KB
51 paginas
Funciones y Parámetros

! Funciones
! Concepto
! Argumentos

! Programa Principal
! Recursividad

El programa principal
  Es el punto de entrada al programa
  Imprescindible para conseguir un
ejecutable autónomo o “programa”

  Mínimo programa totalmente correcto


int main(void)
{

}

return 0;

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

2

Concepto de función

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

3

Función y procedimiento
  Semejante a función matemática
  Invocación, argumentos, valor

devuelto
  Un único punto de entrada
  Un único punto de salida

  Procedimiento

  Si no devuelve ningún valor

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

4

Funcionalidades
  Crear una función para cada
funcionalidad o método bien
delimitado de cada módulo del
programa

  ¡Aunque sólo se use una vez!
  Programa = conjunto de funciones

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

5

I

Función – descripción
  Qué es lo que hace (funcionalidad)
  El nombre debe resumirlo
  Ejemplo clásico

  factorial(n) = n * (n-1) * ... * 2 * 1
  factorial(0) = 1
  Para n natural (entero no negativo)

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

6

Función – descripción
Una función se invoca proporcionando
valores a los argumentos de la llamada.

II

  El valor se devuelve por medio de
return.
  El control del número y tipo de
argumentos es mínimo.
  Las funciones en C++ admiten
recursividad.

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

7

Función – declaración
  Dice cómo se usarla
  No dice cómo está hecha
  Se declara su prototipo

Qué devuelve

(tipo)

Qué hace
(nombre)

Qué recibe

(tipo)

unsigned factorial(unsigned);

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

8

Punto y coma

Función – invocación

II

Argumento

int main(void)
{
cout <<"3! = "<<factorial(3)<<endl;
cout <<"7! = "<<factorial(7)<<endl;
return 0;
}
  Varias invocaciones a la misma función son

independientes

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

9

Función – definición

Variable local

Parámetro formal

unsigned factorial(unsigned n)
{
unsigned result = 1;
/* Recorre de n a 2 */
for (; n > 1; n--)

return result;
}



result = result * n;

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

10

Paso de parámetros
  Paso por valor:

  La función trabaja
con una copia del
valor del parámetro.

  Se considera un

parámetro de
entrada.

  Paso por
referencia:
  Se distingue

poniendo & delante
del parámetro.

  La función trabaja
con la variable de
entrada
directamente.

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

11

Paso por valor
int main(void)
{
unsigned num = 5, res;
res = factorial(num);
/* num sigue valiendo 5 */


  Se pasa el valor de la expresión evaluada,
no la variable en sí
 Esto es siempre así en C
 En C++ existe el paso por referencia

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

12

Paso por referencia
  Solo se pueden

usar variables como
parámetros.

  Los parámetros se
pueden modificar.


void incremento (int &a) {
a = a + 1;
}

int main () {
int a = 0;
incremento(a);
// Ahora a vale 1
return a;
}

  Podemos crear
procedimientos
(funciones de tipo
void).

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

13

La función main
  El programa principal es una función

como las demás:
  Es la primera que se ejecuta.
  Sirve de punto de inicio del programa.
  Se denomina función principal (en
inglés: main function).

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

14

Argumentos de invocación
  Los argumentos con los que es
invocado el ejecutable son accesibles
desde la función principal main

I

int main(int argc, char* argv[])
int argc : Número de argumentos
char* argv[] : Argumentos de invocación

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

15

Argumentos de invocación II
$ g++ prog.cpp -o prog
$ ./prog uno dos tres cuatro
int main(int argc, char* argv[])

argc == 5

p r o g \0
u n o \0
d o s \0
t r e s \0
c u a t
r o

\0

argv[0]
argv[1]
argv[2]
argv[3]
argv[4]
argv[5]

NULL

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

16

Argumentos de invocación III

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{


cout <<"Ejecutable: "<<argv[0]<<endl;

for(int i=0; i<argc; i++)


return 0;

cout<<"Argumento["<<i<<"]: "<<argv[i]<<endl;

}

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

17

Ejercicio

Programe:



La función principal de un programa que



muestre el factorial de los números



del 0 al 20 inclusive

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

18

Solución

#include <iostream>
using namespace std;
int main(void)
{

unsigned n;
for (n = 0; n <= 20; n++)

return 0;

cout <<n<<"! = "<<factorial(n)<<endl;

}

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

19

Ejercicio

Programe la siguiente función

definida sobre
m y n naturales



binomial(m,n) = m! / (n!*(m-n)!)

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

20

Solución

unsigned binomial(unsigned m, unsigned n)
{


return factorial(m) /


(factorial(n)*factorial(m-n));

}

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

21

I



Ámbito de las variables
  La declaración de las variables lleva
asociado un ámbito, dentro del cual la
variable es visible:
  Ámbito global: La variable es visible para
todas las funciones del programa.
  Ámbito local: La variable es visible sólo
dentro de la función (tiene prioridad sobre
el ámbito global).



© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

22

Ámbito de las variables

II


int x,y;
int main()
{

float x,z;
// Aquí x y z son reales e y un entero

}

// Aquí x e y son variables enteras
// La variable z no existe fuera de la
// función.



© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

23

Arrays como parámetros
  Los arrays como parámetros se

I

pueden modificar dentro de la función
  Se debe tener en cuenta el tamaño y

número de dimensiones del array
  En caso de que se desconozca el

tamaño, se debe indicar como
parámetro, si la función lo requiere
  En char[] se usa ‘\0’ para indicar el final

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

24

Arrays como parámetros II


int suma (int lista[], int num_elem) {
int i;
int acumulador = 0;
for (i=0; i < num_elem; i++) {
acumulador = acumulador + lista[i];
}
}
return acumulador;
}



© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

25

Arrays como parámetros III


int contar_letras (char letra, char cadena[]) {
int contador = 0;
for (int i=0; cadena[i] != '\0'; i++) {
if (cadena[i] == letra) {
contador++;
}
}
return contador;
}



© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

26

Función – recursividad
I
  Facultad de las funciones de invocarse

a sí mismas

  Forma natural de expresar ciertos

problemas autocontenidos

  Ejemplo clásico

  factorial(n) = n * factorial(n-1)
  factorial(0) = 1

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

27

Función – recursividad
  Estructura tipica de una función

II

recursiva:

tipo func_recursiva(...) {
...
if (!condición_parada) {
...
func_recursiva(...);
} else {
...
}
}

© Francisco Rosales, Jose
María Peña & Jesús Montes



Programación C++

28

Ejercicio

Programe:



Una versión recursiva de la función:



factorial(0) = 1

factorial(n) = n * factorial(n-1)

Para n natural (entero no negativo)

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

29

Solución

unsigned factorial(unsigned n)
{
if (n == 0)

n = 1;
else

return n;
}

n = n * factorial(n - 1);

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

30

III

Función – recursividad
  Funcionalmente equivalente iterar
  La implementación:

  no contiene ningún bucle
  pero si una condición de terminación

  Es mucho más difícil de seguir
  La recursión infinita es fatal

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

31

Recursividad vs. Iteración


int fact(int num) {
int val = 0;
if (num > 0) {
val = num*fact(num-1);
} else {
val = 1;
}
return val;
}


int fact(int num) {
int ret = 1;
int val = num;
while (val > 0) {
ret = ret * val;
val--;
}
return ret;
}

© Francisco Rosales, Jose
María Peña & Jesús Montes

Programación C++

32

Modificadores de función
static

  Sólo visible dentro del módul
  • Links de descarga
http://lwp-l.com/pdf3426

Comentarios de: Programación en C++ - Funciones y Parámetros (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad