programacion en c unidad 03 capitulo 1
TRANSCRIPT
-
8/3/2019 Programacion en C unidad 03 capitulo 1
1/56
INC-112 Programacion IUnidad 3
Profesores: Eliana Providel - Roberto Munoz S.Escuela de Ing. Civil Informatica,
Universidad de Valparaso{eliana.providel,roberto.munoz.s}@uv.cl
Segundo Semestre 2011
Unidad 1
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
2/56
Contenidos Unidad 3
Parte I: Funciones.
Parte II: Arreglos.
Parte III: Entrada y Salida de datos, parte II de II.
Parte IV: Archivos.
Unidad 1
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
3/56
Parte I: Funciones
Unidad 1
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
4/56
Contenidos
Que son y para que sirven?
Un programa en C y funciones.Definicion de una funcion.
Variables y funciones.
Declaracion de una funcion.
Recursividad.
Paso de paramentros.
Unidad 1
Q i ?
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
5/56
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Que son y para que sirven?
Que son y para que sirven
Una funcion es un conjunto de instrucciones agrupadas bajoun mismo nombre que dan solucion a un problema.
Permite que los programas sean faciles de entender y depurar.
Util cuando un fragmento de codigo se debe utilizar mas de
una vez dentro del codigo.
Unidad 1
Q i ?
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
6/56
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Que son y para que sirven?
Que son y para que sirven?
Sirven para dividir un problema grande en problemas mas pequenos(Paradigma Divide y Venceras):
1 Hacen solo una tarea.
2 Son mas faciles de resolver.
3 Son mas faciles de entender y manipular.
Unidad 1
Que son y para que sirven?
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
7/56
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Un programa en C y funciones
C esta compuesto por varias funciones que hacen solo una tareaespecfica.
Ej.Raz cuadrada: sqrt(x).
Elevar X a Y: pow(x,y)
Mostrar en pantalla: printf();
Todo programa en C consta al menos de una funcion
main()
Unidad 1
Que son y para que sirven?
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
8/56
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Un programa en C y funciones
Unidad 1
Que son y para que sirven?
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
9/56
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Nombre-funcionParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Definicion de una funcion
Una Funcion:
Se define.
Se asocia a un tipo de dato.
Se invoca.
Se ejecuta.
Puede devolver un valor.
Unidad 1
Que son y para que sirven?N b f i
http://find/http://goback/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
10/56
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Nombre-funcionParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Definicion de una funcion
Una funcion en C tiene la siguiente forma:
[tipo_retorno] nombre_funcion([parametros]){
declaracion [e inicializacion ] de variables
cuerpo de la funcion sentencias
...[valor de retorno]
}
Unidad 1
Que son y para que sirven?N b f i
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
11/56
Q y p qUn programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Nombre-funcionParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Nombre de la funcionDonde:Nombre-funcion
Equivale al nombre bajo el cual se agruparan las diferentes
sentencias que dan solucion al problema.Para utilizar la funcion se debe hacer referencia al nombre dela funcion.
Se invoca la funcion como si fuese una sentencia:
Ej.: factorial();Para poder invocar a la funcion, esta siempre se debe habercreado.
En el caso de utilizar las funciones estandar de C, se debenincluir las libreras o archivos cabecera.
Unidad 1
Que son y para que sirven?Nombre funcion
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
12/56
y p qUn programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Nombre-funcionParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Parametros
Donde:parametro
Permite pasar valores a la funcion mediante las variables.
Se debe especificar el tipo y nombre de la variables.
Unidad 1
Que son y para que sirven?Nombre funcion
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
13/56
Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Nombre-funcionParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Parametros
Unidad 1
Que son y para que sirven?U C f i
Nombre-funcion
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
14/56
Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Nombre funcionParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Parametros
Es posible que la funcion main() reciba parametros.
Estos parametros son ingresados por lnea de comando desdela consola al momento de ser ejecutado el programa.
Parametros funcion main
main(int argc, char* argv[]) {...}
Unidad 1
Que son y para que sirven?U C f i
Nombre-funcion
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
15/56
Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Nombre funcionParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Parametros
1 argc: Argument count
Contiene el numero de parametros con los que el programa hasido llamado.Dentro de este numero esta considerado el nombre delprograma .
2 argv[]: Argument vector
Es un arreglo de caracteres que contiene todos los argumentosde la lnea de comando, incluido el nombre del programa.
Unidad 1
Que son y para que sirven?U og a a e C f cio es
Nombre-funcion
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
16/56
Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Parametros
Ejemplo de argumentos ingresados por parametro.
#include
int main(int argc, char *argv[]){
int i;
printf("\targumentos ingresados %d\n",argc);
for(i=0;i
-
8/3/2019 Programacion en C unidad 03 capitulo 1
17/56
Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Parametros
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Nombre-funcion
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
18/56
Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Parametros
Segun el numero de parametros ingresados, es posiblerestringir que el usuario ingrese una cierta cantidad deparametros.
Dependera de la funcionalidad del programa.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Nombre-funcionP
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
19/56
Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Tipo Retorno
Donde:
tipo-retornoCorresponde al tipo de datos que la funcion debe retornar(int, float, char,...etc).
Tipo void: cuando la funcion no devuelve valor.
Obs.: Cuando no se declara tipo explcitamente corresponde aint.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Nombre-funcionP t
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
20/56
U p og a a e C y u c o esDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Valor de Retorno
Palabra clave: returnEjemplo: return valor;
La funcion puede retornar un valor que se obtuvo, porejemplo, dentro de la funcion.
Cuando se termina de ejecutar la funcion, se devuelve elcontrol al medio en donde fue llamada la funcion, y se entrega
el valor de retorno.Si la funcion no retorna un valor, se finaliza cuando se llega a}.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Nombre-funcionParametros
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
21/56
p g yDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Valor de Retorno en la funcion main()
En el main es posible retornar un valor.
Cuando el main retorna un valor, este es utilizado como
control de estado para el entorno desde el que se ha ejecutadoel programa.
Algunos compiladores no obligan a que el main retorne unvalor.
Cuando s obligan a que este retorne un valor, y no se hacolocado la lnea de codigo correspondiente, se enva unmensaje de error:main : function should return a value; void return type
assumed.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Nombre-funcionParametros
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
22/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Valor de Retorno en la funcion main()
A pesar de que no todos los entornos de programacion loexigen, es considerado una muy buena practica deprogramacion, ya que return 0 indica que el programa se haejecutado correctamente.
Existen 3 valor estandares y portables para el retorno de lafuncion main():
1 El valor 0.2
EXIT SUCCESS
definida en , equivale a unacontante simbolica; indica que el programa finalizo con exito.3 EXIT FAILURE definida en , equivale a una
contante simbolica; indica que el programa NO finalizo conexito.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Nombre-funcionParametros
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
23/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Valor de Retorno en la funcion main()
Para que sirve?
S se utiliza cualquiera de los dos valores 0 o EXIT SUCCESS segarantiza que el compilador los trasladara a un codigo que seaconsiderado terminacion correcta por el Sistema Operativo.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
D fi i i d f i
Nombre-funcionParametros
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
24/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
ParametrosTipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Cuerpo de la funcion
En esta parte va el codigo que da solucion a un problemaespecfico.
Incluyendo if-else, switch, for, do-while, while....segun elproblema.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
D fi i i d f i
Nombre-funcionParametros
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
25/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Tipo RetornoValor de RetornoCuerpo de la funcionDeclaracion e inicializacion de variables
Declaracion [e inicializacion] de variables
Se declaran las variables que se utilizaran en la funcion.
Se debe definir su tipo.
Es posible inicializar las variables con algun valor, no esobligatorio pero es recomendable.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable Globales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
26/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Variable y funciones
Tipos de Variables
Variables Globales.
Variables Locales.
Variables Estaticas.
Variables de Registro.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable Globales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
27/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Variable Globales
Variable Globales
Se definen fuera de la funcion.
Puede ser utilizada por diferentes funciones.
Con esto, se pueden comunicar datos entre funciones.
Existen durante la ejecucion de todo el programa.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable Globales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
28/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Variables Locales
Se definen dentro de la funcion.
Tiene validez solo dentro de la funcion.
Se reserva espacio de memoria al entrar en la funcion y selibera al salir de ella.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable GlobalesV i bl L l
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
29/56
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Paso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Ejemplo Variables Locales y Globales
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable GlobalesV i bl L l
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
30/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Ejemplo Variables Locales y Globales
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable GlobalesVariables Locales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
31/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Variables Estaticas - static
Las variables estaticas se caracterizan porque su valor permance
durante todo el programa, es decir, su valor no se borra al finalizarla funcion.Palabra reservada static
1 Permite que una variable local retenga su valor previo cuando
se ingresa nuevamente en el bloque donde reside.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable GlobalesVariables Locales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
32/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Ejemplo static
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionV i bl f i
Variable GlobalesVariables Locales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
33/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Ejemplo static
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionV i bl f i
Variable GlobalesVariables Locales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
34/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Variables LocalesVariables Estaticasvariables tipo Registro
Variables tipo registro
Palabra reservada: register
Se almacenan en registros de alta velocidad y de accesorapido, si es posible fsicamente.
Util cuando una variable es utilizada forma muy frecuente.
Solo se pueden declarar variables como register s sonvariables locales o argumentos formales de una funcion.
Al utilizar una variable de tipo register, no esta garantizado
que su valor se almacene en un registro. Para que esto suceda,debe haber algun registro disponible; al no encontrar unregistro disponible C ignora el calificador register y crea lavariable localmente.
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
Variable GlobalesVariables Locales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
35/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Variables Estaticasvariables tipo Registro
Variable tipo registro - Ejemplo
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
Variable GlobalesVariables Locales
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
36/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Variables Estaticasvariables tipo Registro
Variable tipo registro - Ejemplo
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
37/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Declaracion de una funcion
Conocido como funcion prototipo.
Permite al compilador chequear los tipos de parametros cadavez que se utiliza la funcion, ya que una funcion no puede serllamada si es que no esta definida o declarada.
Tiene la misma sintaxis que la declaracion de la funcion, pero
no lleva el cuerpo de la funcion. Se finaliza con ;
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
38/56
Variable y funcionesDeclaracion de una funcion
RecursividadPaso de Parametros
Declaracion de una funcion - Ejemplo Prototipo
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
39/56
y uDeclaracion de una funcion
RecursividadPaso de Parametros
j pEjemplo 2Posibles Problemas
Recursividad
Recursividad es cuando una funcion puede invocarse a
s misma.Permite una solucion elegante del problema.
La idea es que en cada nueva llamada a la funcion se vasimplificando el problema a resolver.
Es recomendable que la funcion posea una caso base o norecursivo.
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
40/56
yDeclaracion de una funcion
RecursividadPaso de Parametros
j pEjemplo 2Posibles Problemas
Partes de funcion recursiva
1 Caso base o no recursivo
Permite finalizar la recursividad.Es recomendable utilizar como base una funcion trivial.
2 Caso recursivo
Aquel que realiza una nueva invocacion recursiva.Para garantizar que en algun momento la recursividad finalice,
esta debe avanzar siempre hacia el caso base.
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
41/56
Declaracion de una funcionRecursividad
Paso de Parametros
Ejemplo 2Posibles Problemas
Partes de una funcion recursiva
Parte o caso recursivo:
La funcion se llama a s misma.El problema se resuelve, resolviendo el mismo problema perode tamano menor.La manera en la cual el tamano del problema disminuyeasegura que el caso base eventualmente se alcanzara.
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funciones
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
42/56
Declaracion de una funcionRecursividad
Paso de Parametros
Ejemplo 2Posibles Problemas
Parte de funcion recursiva
Es posible que en una funcion existan muchos casos bases y/orecursivos.
Siempre dependera del problema a resolver.
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesD l i d f i
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ej l 2
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
43/56
Declaracion de una funcionRecursividad
Paso de Parametros
Ejemplo 2Posibles Problemas
Cuando usar recursividad?
Cuando usar recursividad?
Para simplificar el codigo.Cuando la estructura de datos es recursiva ejemplo : arboles.
Cuando NO usar recursividad?
Cuando los metodos usen arreglos largos.Cuando el metodo cambia de manera impredecible de campos.
Cuando las iteraciones sean la mejor opcion.
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesD l i d f i
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ej l 2
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
44/56
Declaracion de una funcionRecursividad
Paso de Parametros
Ejemplo 2Posibles Problemas
Ejemplo 1 Recursividad
Suma de los n primeros numeros.Se desea poder dar solucion a:S(n)= 1+2+3+4+5+. . . n
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ejemplo 2
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
45/56
Declaracion de una funcionRecursividad
Paso de Parametros
Ejemplo 2Posibles Problemas
Ejemplo 1 Recursividad
Unidad 1
Que son y para que sirven?Un programa en C y funcionesDefinicion de una funcion
Variable y funcionesDeclaracion de una funcion
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ejemplo 2
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
46/56
Declaracion de una funcionRecursividad
Paso de Parametros
Ejemplo 2Posibles Problemas
Ejemplo 1 Recursividad
Para n=3
La funcion suma es llamada con n=3 en la funcion main(...).
Dentro de la funcion suma, se llama nuevamente a la funcion
suma con n=2.Al ejecutar la funcion suma, con n=2, se llama a la funcionsuma con n=1.
Al ejecutarse la funcion suma con n=1, se selecciona el caso
base y se retorna 1.Continua la ejecucion para n=2, se retorna n+suma(1)=2+1.
Continua la ejecuion para n=3, se retorna n+suma(2)=3+3.
Por lo que suma(3)=6.
Unidad 1
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
47/56
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcion
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ejemplo 2
-
8/3/2019 Programacion en C unidad 03 capitulo 1
48/56
Declaracion de una funcionRecursividad
Paso de Parametros
Ejemplo 2Posibles Problemas
Ejemplo 2 Recursividad
int fibonacci(int i){
if((i==0) || (i==1)) return 1;
else
return fibonacci(i-1)+fibonacci(i-2);
}
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcion
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ejemplo 2
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
49/56
RecursividadPaso de Parametros
j pPosibles Problemas
Ejemplo 2 Recursividad
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcion
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ejemplo 2
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
50/56
RecursividadPaso de Parametros
jPosibles Problemas
Ejemplo 2 Recursividad
1 entra a fibonacci(4) 10 sale de fibonacci(1)2 entra a fibonacci(3) 11 sale de fibonacci(3)
3 entra a fibonacci(2) 12 entra a fibonacci(2)4 entra a fibonacci(1) 13 entra a fibonacci(1)5 sale de fibonacci(1) 14 sale de fibonacci(1)6 entra a fibonacci(0) 15 entra a fibonacci(0)7 sale de fibonacci(0) 16 sale de fibonacci(0)
8 sale de fibonacci(2) 17 sale de fibonacci(2)9 entra a fibonacci(1) 18 sale de fibonacci(4)
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcion
Partes de funcion recursivaCuando usar recursividad?Ejemplo 1Ejemplo 2
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
51/56
RecursividadPaso de Parametros
Posibles Problemas
Posibles Problemas
Que el programa nunca finalice, puede ser siempre o solo enalgunos casos.
Esto es porque no existe un caso base o la recursividad notiene un caso base.
Calculo repetido de los mismo datos, utilizando mas memoriay tiempo de ejecucion.
Sobrepasar la cantidad de memoria disponible, provocandouna salida inesperada del programa.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionR i id d
Ejemplo paso por ValorEjemplo paso por Referencia
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
52/56
RecursividadPaso de Parametros
Paso de Parametros
Cuando la funcion que se ha programado lleva parametros,debe recibirlos para que pueda ejecutarse de forma adecuada.
Para el correcto funcionamiento, los parametros con los que sellama a la funcion deden cooncordar en el numero y tipo.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionR i id d
Ejemplo paso por ValorEjemplo paso por Referencia
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
53/56
RecursividadPaso de Parametros
Paso de Parametros
2 formas de pasar los parametros:1 Por Valor
La funcion cuando recibe el parametro, realiza una copia de lavariable con la que trabajara.
Por lo que cuando se finaliza la ejecucion de la funcion, lavariable que fue pasada como parametro no tiene su valoralterado.
2 Por Referencia
Las instrucciones de la funcion operan con el valor del
parametro que se les pasa.Por lo que su valor se puede modificar.Esto es posible porque se le pasa la direccion de memoria.Los cambios a la variable persistiran a lo largo de la ejecuciondel programa.
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Ejemplo paso por ValorEjemplo paso por Referencia
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
54/56
RecursividadPaso de Parametros
Ejemplo paso por Valor
void funcion(int i){
i=5;
}
int main(){
int i=0;
printf("Antes Paso por Valor: El valor de i es %d",i);
funcion(i); /* solo pasamos el valor */
printf("Luego Paso por Valor: El valor de i es %d",i);return 0;
}
Unidad 1
Que son y para que sirven?Un programa en C y funciones
Definicion de una funcionVariable y funciones
Declaracion de una funcionRecursividad
Ejemplo paso por ValorEjemplo paso por Referencia
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
55/56
RecursividadPaso de Parametros
Ejemplo paso por referencia
void funcion(int *i){
*i=5;
}
int main(){
int i=0;
printf("Antes Paso por referencia: El valor de i es %d",i);
funcion(&i); /* con & pasamos la direccion de memoria */
printf("Luego Paso por referencia: El valor de i es %d",i);return 0;
}
Unidad 1
Preguntas
http://find/ -
8/3/2019 Programacion en C unidad 03 capitulo 1
56/56
Preguntas
Unidad 1
http://find/