Programacion en C unidad 03 capitulo 1

download Programacion en C unidad 03 capitulo 1

of 56

Transcript of Programacion en C unidad 03 capitulo 1

  • 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/