SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Programación
     (L109)
   Sesión: 6 y 7
Funciones y variables
  Ing. José C. Benítez P.
Sesión 6 y 7. Temas

          Funciones
            Concepto
            Sintaxis de una función
            Declaración de funciones
            Instrucción return
            Paso de parámetros a una función
            Variables globales y locales




                  Programación - Prof. Ing. Jose C. Benitez P.   2
Sesión 6 y 7. Temas

          Funciones
            Concepto
            Sintaxis de una función
            Declaración de funciones
            Instrucción return
            Paso de parámetros a una función
            Variables globales y locales




                  Programación - Prof. Ing. Jose C. Benitez P.   3
Funciones. Concepto

     Las funciones son bloques de código utilizados para
     dividir un programa en partes más pequeñas, cada
     una de las cuáles tendrá una tarea determinada.
     Las funciones pueden ser llamadas desde la función
     main o desde otras funciones.
     Nunca se debe llamar a la función main desde otro
     lugar del programa.

     Los argumentos de la función y sus variables locales
     se destruirán al finalizar la ejecución de la misma.


                    Programación - Prof. Ing. Jose C. Benitez P.   4
Sesión 6 y 7. Temas

          Funciones
            Concepto
            Sintaxis de una función
            Declaración de funciones
            Instrucción return
            Paso de parámetros a una función
            Variables globales y locales




                  Programación - Prof. Ing. Jose C. Benitez P.   5
Funciones. Sintaxis

     tipo_función nombre_función ( tipo y nombre de argumentos )
     {
        bloque de sentencias ;
     }

   tipo_función:
      Puede ser de cualquier tipo: char, int , float, etc..
      El valor devuelto por la función será de este tipo.
      Por defecto, es decir, si no indicamos el tipo, la función
      devolverá un valor de tipo entero ( int ).
      Si queremos que no retorne ningún valor deberemos
      indicar el tipo vacío ( void ).
   nombre_función:
      Es el nombre que le daremos a la función.
                       Programación - Prof. Ing. Jose C. Benitez P.   6
Funciones. Sintaxis

     tipo_función nombre_función ( tipo y nombre de argumentos )
     {
        bloque de sentencias ;
     }

  tipo y nombre de argumentos:
     Son los parámetros que recibe la función.
     Los argumentos de una función no son más que variables
     locales que reciben un valor.
     Este valor se lo enviamos al hacer la llamada a la función.
     Pueden existir funciones que no reciban argumentos.
  bloque de sentencias:
     Es el conjunto de sentencias que serán ejecutadas cuando
     se realice la llamada a la función.
                       Programación - Prof. Ing. Jose C. Benitez P.   7
Sesión 6 y 7. Temas

          Funciones
            Concepto
            Sintaxis de una función
            Declaración de funciones
            Instrucción return
            Paso de parámetros a una función
            Variables globales y locales




                  Programación - Prof. Ing. Jose C. Benitez P.   8
Funciones. Declaración.
     Al igual que las variables, las funciones también deben
     ser declaradas.
     Esto es lo que se conoce como prototipo de una
     función.
     Para que un programa en C sea compatible entre
     distintos compiladores es imprescindible escribir los
     prototipos de las funciones.

     Los prototipos de las funciones pueden escribirse
     antes de la función main o bién en otro archivo.
     En este último caso le indicaremos al compilador
     mediante la directiva #include.

                    Programación - Prof. Ing. Jose C. Benitez P.   9
Funciones. Declaración. Ejemplo.
  En el ejemplo vemos la declaración de una
                                                                          Archivo: funcion2.c
  función imprime ( prototipo ).
  Al no recibir ni retornar ningún valor, está                            /* Declaración de funciones. */
  declarada como void en ambos lados.                                     #include <stdio.h>

  También vemos que existe una variable global                            void imprime(void); /* prototipo */

  llamada num.                                                            int num=5; /* variable global */
  Esta variable es reconocible en todas las
                                                                          main() /* Escribe dos números */
  funciones del programa.                                                 {
  Y en la función main encontramos una variable                             int num=10; /* variable local */
                                                                            printf("%dn",num);
  local llamada num.                                                        imprime(); /* llamada */
  Al ser una variable local, ésta tendrá preferencia                      }
  sobre la global.                                                        void imprime(void)
                                                                          {
                                                                            printf("%dn",num);
  Por tanto la función escribirá los números 10 y 5.                      }



                           Programación - Prof. Ing. Jose C. Benitez P.                                  10
Sesión 6 y 7. Temas

          Funciones
            Concepto
            Sintaxis de una función
            Declaración de funciones
            Instrucción return
            Paso de parámetros a una función
            Variables globales y locales




                  Programación - Prof. Ing. Jose C. Benitez P.   11
Instrucción return
   Como ya hemos visto, las funciones pueden retornar
   un valor.                                                             Archivo: funcion3.c
   Esto se hace mediante la instrucción return, que
   finaliza la ejecución de la función, devolviendo o no un              /* Paso de parámetros. */
   valor.
                                                                         #include <stdio.h>
                                                                         int suma(int,int); /* prototipo */
   En una misma función podemos tener más de una                         main() /* Realiza una suma */
   instrucción return.                                                   {
                                                                            int a=10,b=25,t;
   La forma de retornar un valor es la siguiente:                           t=suma(a,b); /* guardamos el valor */
        return ( valor o expresión );                                       printf("%d=%d",suma(a,b),t);
   El valor devuelto por la función debe asignarse a una                    suma(a,b); /* el valor se pierde */
   variable. De lo contrario, el valor se perderá.                       }
                                                                         int suma(int a,int b)
                                                                         {
   En el ejemplo se puede ver lo que ocurre si no                           return (a+b);
   guardamos el valor en una variable.                                   }


Nota.
  A la hora de mostrar el resultado de la suma, en el
  printf, también podemos llamar a la función.
                               Programación - Prof. Ing. Jose C. Benitez P.                                 12
Sesión 6 y 7. Temas

          Funciones
            Concepto
            Sintaxis de una función
            Declaración de funciones
            Instrucción return
            Paso de parámetros a una función
            Variables globales y locales




                  Programación - Prof. Ing. Jose C. Benitez P.   13
Paso de parámetros

                                                                              Archivo: funcion4.c
Existen dos formas de enviar parámetros a una función:
Por valor:                                                                    /* Paso por valor. */
      Cualquier cambio que se realice dentro de la
      función en el argumento enviado, NO afectará al                         #include <stdio.h>
                                                                              void intercambio(int, int); /* prototipo */
      valor original de las variables utilizadas en la                        main() /* Intercambio de valores */
      llamada.                                                                {
      Es como si trabajaramos con una copia, no con el                            int a=1,b=2;
                                                                                  printf("a=%d y b=%d",a,b);
      original.                                                                   intercambio(a,b); /* llamada */
      No es posible enviar por valor arrays, deberemos                            printf("a=%d y b=%d",a,b);
      hacerlo por referencia.                                                 }
Por referencia:                                                               void intercambio (int x, int y)
                                                                               {
      Lo que hacemos es enviar a la función la dirección                         int aux;
      de memoria donde se encuentra la variable o dato.                          aux=x;
      Cualquier modificación SI afectará a las variables                         x=y;
                                                                                 y=aux;
      utilizadas en la llamada.                                                  printf("a=%d y b=%d",x,y);
      Trabajamos directamente con el original.                                }


                               Programación - Prof. Ing. Jose C. Benitez P.                                      14
Paso de parámetros
Para enviar un valor por referencia se utiliza el símbolo
& ( ampersand ) delante de la variable enviada.                               Archivo: funcion5.c

Esto le indica al compilador que la función que se                            /* Paso por referencia. */
ejecutará tendrá que obtener la dirección de memoria
en que se encuentra la variable.                                              #include <stdio.h>
                                                                              void intercambio(int *, int *);
                                                                              main() /* Intercambio de valores */
En el ejemplo anterior podrás comprobar que antes y                           {
después de la llamada, las variables mantienen su                               int a=1,b=2;
valor. Solamente se modifica en la función intercambio                          printf("a=%d y b=%d",a,b);
                                                                                intercambio(&a,&b); /* llamada */
( paso por valor ).                                                             printf("a=%d y b=%d",a,b);
                                                                              }
En el siguiente ejemplo podrás ver como las variables                         void intercambio (int *x, int *y)
                                                                              {
intercambian su valor tras la llamada de la función                             int aux;
( paso por referencia ).                                                        aux=*x;
                                                                                *x=*y;
Las variables con un * son conocidas como punteros,                             *y=aux;
                                                                                printf("a=%d y b=%d",*x,*y);
el único dato en C que pueden almacenar es una                                }
dirección de memoria.
                               Programación - Prof. Ing. Jose C. Benitez P.                                  15
Paso de parámetros

 Hemos visto que las funciones pueden recibir
 argumentos.
                                                                   Archivo: funcion6.c
 La función main también puede recibir
 argumentos, en este caso desde el exterior.                       /* Argumentos de la función main. */

 Los argumentos que puede recibir son:                             #include <stdio.h>
 argc: es un contador. Su valor es igual al número de              main(int argc, char *argv[]) /* argumentos */
 argumentos escritos en la línea de comandos,                      {
                                                                     printf("nCurso de Programación en C –
 contando el nombre del programa que es el primer                    Copyright (c) 2007, José C. Benítez P.n");
 argumento.                                                          printf("Programa de ejemplo.nn");
 argv: es un puntero a un array de cadenas de                        if (argc<2) {
 caracteres que contiene los argumentos, uno por                         printf("Teclee: funcion6 su_nombre");
                                                                         exit(1); /* fin */
 cadena.                                                              }
 En este ejemplo vamos a ver un pequeño programa                     printf("Hola %s",argv[1]); /*Solo el 2do argv*/
 que escribirá un saludo por pantalla.                             }

 El programa FUNCION6.EXE.

                             Programación - Prof. Ing. Jose C. Benitez P.                                  16
Llamadas a funciones con arrays
Llamadas a funciones con arrays
                                                                         Archivo: arrays3.c
   Los arrays únicamente pueden ser enviados a
   una función por referencia.                                           /* Envío de un array a una función. */
   Para ello deberemos enviar la dirección de
   memoria del primer elemento del array.                                #include <stdio.h>
                                                                         void visualizar(int []); /* prototipo */
   Por tanto, el argumento de la función deberá ser                      main() /* rellenamos y visualizamos */
   un puntero.                                                           {
                                                                           int array[25],i;
En el ejemplo se puede apreciar la forma de enviar                         for (i=0;i<25;i++) {
                                                                             printf("Elemento nº %d",i+1);
un array por referencia.                                                     scanf("%d",&array[i]);
                                                                           }
La función se podía haber declarado de otra manera,                        visualizar(&array[0]);
                                                                         }
aunque funciona exactamente igual:                                       void visualizar(int array[]) /* desarrollo */
                                                                         {
declaración o prototipo void visualizar(int *);                            int i;
desarrollo de la función void visualizar(int *array);                      for (i=0;i<25;i++) printf("%d",array[i]);
                                                                         }
llamada de la función visualizar(array):

                               Programación - Prof. Ing. Jose C. Benitez P.                                    17
Sesión 5. Temas

          Funciones
            Concepto
            Sintaxis de una función
            Declaración de funciones
            Instrucción return
            Paso de parámetros a una función
            Variables globales y locales




                  Programación - Prof. Ing. Jose C. Benitez P.   18
Variables globales y locales

      Según el lugar donde son declaradas puede haber
      dos tipos de variables.
         Globales: las variables permanecen activas
         durante todo el programa. Se crean al iniciarse
         éste y se destruyen de la memoria al finalizar.
         Pueden ser utilizadas en cualquier función.
         Locales: las variables son creadas cuando el
         programa llega a la función en la que están
         definidas. Al finalizar la función desaparecen de
         la memoria.


                     Programación - Prof. Ing. Jose C. Benitez P.   19
Variables globales y locales

                                                                     /* Variables globales y locales. */

                                                                     #include <stdio.h>
Si dos variables, una global y una local,                            int num1=1; /* variable global */
                                                                     main() /* Escribe dos cifras */
tienen el mismo nombre, la local prevalecerá                         {
                                                                       int num2=10; /* variable local */
sobre la global dentro de la función en que                            printf("%dn",num1);
ha sido declarada.                                                     printf("%dn",num2);
                                                                     }
Dos variables locales pueden tener el mismo
                                                                     /* Variables globales y locales. */
nombre siempre que estén declaradas en
                                                                     #include <stdio.h>
funciones diferentes.                                                int num1=1; /* variable global */
                                                                     main() /* Escribe dos cifras */
                                                                     {
                                                                       int num1=10; /* vaiable local */
                                                                       printf("%dn",num1);
                                                                       printf("%dn",num1);
                                                                     }


                      Programación - Prof. Ing. Jose C. Benitez P.                             20
Tarea (T6 y 7)
     Hacer un programa en C utilizando funciones .
     1. Mostrar la tabla del numero x del 1 al 24.
         Consola debe mostrar:
         Ingrese x:
         Tabla del 1 al 24 de x:
     2. Llenar la matriz de m x n.
         Consola debe mostrar:
         Ingrese m:
         Ingrese n:
         Ingrese los datos de la matriz m x n:
         Matriz de m x n:
     3. Ordena un arreglo de x números flotantes.
         Consola debe mostrar:
         Ingrese x:
         Ingrese los datos de la matriz x flotantes:
         x numeros flotantes ingresados:
         x numeros flotantes ordenados:
     4. Dado un arreglo de los Países de Latinoamérica y su población, las
         ordene por su primera letra y muestre además su población.
                        Programación - Prof. Ing. Jose C. Benitez P.         21
Presentación
   Todos los códigos fuentes deben ser presentados en un
   solo archivo de texto, cuyo nombre lleve las iniciales del
   curso, sus Apellidos, guion bajo y luego el numero de la
   tarea. Ejemplo:
                PRG_BenitezPalacios_T67.txt
   Los códigos deben estar comentados bloque a bloque.
   La presentación de esta Tarea es obligatoria y tiene 03
   puntos de bonificación en la Tercera Practica Calificada.
   Plazo de entrega: Lunes 23/01/12
              Las Tareas que no cumplan las
                  indicaciones no serán
              recepcionados por el profesor.

                   Programación - Prof. Ing. Jose C. Benitez P.   22
Sesión 6 y 7. Funciones y variables

               Programación




         http://utpprogc.blogspot.com
               Programación - Prof. Ing. Jose C. Benitez P.   23

Más contenido relacionado

La actualidad más candente

Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++Rosbelia Balza
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacioncharnisch
 
Estructura hoja resumen
Estructura hoja resumenEstructura hoja resumen
Estructura hoja resumenniurkamv
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1joeshego
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinasmezano09
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinasmezano09
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rogramaivanjvic
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguajeyuli02
 
Unidad1
Unidad1Unidad1
Unidad1chembe
 
49 Php. Funciones De Usuario
49 Php. Funciones De Usuario49 Php. Funciones De Usuario
49 Php. Funciones De UsuarioJosé M. Padilla
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++yesid19
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Facebook
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Joaquin1418
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1camnav
 

La actualidad más candente (18)

Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
 
Estructura hoja resumen
Estructura hoja resumenEstructura hoja resumen
Estructura hoja resumen
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA C++
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rograma
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 
Unidad1
Unidad1Unidad1
Unidad1
 
49 Php. Funciones De Usuario
49 Php. Funciones De Usuario49 Php. Funciones De Usuario
49 Php. Funciones De Usuario
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 

Destacado

Utp pti_s4_instrucciones de control
 Utp pti_s4_instrucciones de control Utp pti_s4_instrucciones de control
Utp pti_s4_instrucciones de controljcbenitezp
 
Utp sirn_s0_generalidades
 Utp sirn_s0_generalidades Utp sirn_s0_generalidades
Utp sirn_s0_generalidadesjcbenitezp
 
Utp pds_sl2_señales con mat_lab
 Utp pds_sl2_señales con mat_lab Utp pds_sl2_señales con mat_lab
Utp pds_sl2_señales con mat_labjcbenitezp
 
Utp va_sl2 procesamiento de imagenes con mat_lab i
 Utp va_sl2 procesamiento de imagenes con  mat_lab i Utp va_sl2 procesamiento de imagenes con  mat_lab i
Utp va_sl2 procesamiento de imagenes con mat_lab ijcbenitezp
 
Utp pti_s5_arreglos
 Utp pti_s5_arreglos Utp pti_s5_arreglos
Utp pti_s5_arreglosjcbenitezp
 
Utp sirn_s2_rna
 Utp sirn_s2_rna  Utp sirn_s2_rna
Utp sirn_s2_rna jcbenitezp
 
Utp ptii_s8_la hipotesis
 Utp ptii_s8_la hipotesis Utp ptii_s8_la hipotesis
Utp ptii_s8_la hipotesisjcbenitezp
 
Utp sirn_sl2 la rna perceptron
 Utp sirn_sl2 la rna perceptron Utp sirn_sl2 la rna perceptron
Utp sirn_sl2 la rna perceptronjcbenitezp
 

Destacado (9)

Utp pti_s4_instrucciones de control
 Utp pti_s4_instrucciones de control Utp pti_s4_instrucciones de control
Utp pti_s4_instrucciones de control
 
Utp sirn_s0_generalidades
 Utp sirn_s0_generalidades Utp sirn_s0_generalidades
Utp sirn_s0_generalidades
 
Utp pds_sl2_señales con mat_lab
 Utp pds_sl2_señales con mat_lab Utp pds_sl2_señales con mat_lab
Utp pds_sl2_señales con mat_lab
 
Utp va_sl2 procesamiento de imagenes con mat_lab i
 Utp va_sl2 procesamiento de imagenes con  mat_lab i Utp va_sl2 procesamiento de imagenes con  mat_lab i
Utp va_sl2 procesamiento de imagenes con mat_lab i
 
Utp pti_s5_arreglos
 Utp pti_s5_arreglos Utp pti_s5_arreglos
Utp pti_s5_arreglos
 
Utp sirn_s2_rna
 Utp sirn_s2_rna  Utp sirn_s2_rna
Utp sirn_s2_rna
 
Utp ptii_s8_la hipotesis
 Utp ptii_s8_la hipotesis Utp ptii_s8_la hipotesis
Utp ptii_s8_la hipotesis
 
Utp sirn_sl2 la rna perceptron
 Utp sirn_sl2 la rna perceptron Utp sirn_sl2 la rna perceptron
Utp sirn_sl2 la rna perceptron
 
C ref card
C ref cardC ref card
C ref card
 

Similar a Utp pti_s6y7_funciones y variables (20)

Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Funciones
FuncionesFunciones
Funciones
 
Funciones en C.docx
Funciones en C.docxFunciones en C.docx
Funciones en C.docx
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
A3 u1-16230227
A3 u1-16230227A3 u1-16230227
A3 u1-16230227
 
Guía funciones
Guía funcionesGuía funciones
Guía funciones
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
07 funciones
07 funciones07 funciones
07 funciones
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
11 Funciones
11 Funciones11 Funciones
11 Funciones
 
11funciones 1231096290787715-2
11funciones 1231096290787715-211funciones 1231096290787715-2
11funciones 1231096290787715-2
 
8448148681
84481486818448148681
8448148681
 
Funciones
FuncionesFunciones
Funciones
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
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
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones
FuncionesFunciones
Funciones
 
Funciones
FuncionesFunciones
Funciones
 
vectores y matrices
vectores y matricesvectores y matrices
vectores y matrices
 

Más de jcbenitezp

Cap4 jc benitez
Cap4 jc benitezCap4 jc benitez
Cap4 jc benitezjcbenitezp
 
Tarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimientoTarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimientojcbenitezp
 
It526 2017 2 ep
It526 2017 2 epIt526 2017 2 ep
It526 2017 2 epjcbenitezp
 
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 gUni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 gjcbenitezp
 
Uni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 gUni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 gjcbenitezp
 
It526 2015 2 pc3
It526 2015 2 pc3 It526 2015 2 pc3
It526 2015 2 pc3 jcbenitezp
 
Calendario academico 2015 02 g
Calendario academico 2015   02 gCalendario academico 2015   02 g
Calendario academico 2015 02 gjcbenitezp
 
Db vsa-011 registro de asistencia docente ago2015
Db vsa-011 registro de asistencia docente  ago2015Db vsa-011 registro de asistencia docente  ago2015
Db vsa-011 registro de asistencia docente ago2015jcbenitezp
 
Utp 2015-2_pdi_lab3
 Utp 2015-2_pdi_lab3 Utp 2015-2_pdi_lab3
Utp 2015-2_pdi_lab3jcbenitezp
 
Utp sirn_2015-2 lab3
 Utp sirn_2015-2 lab3 Utp sirn_2015-2 lab3
Utp sirn_2015-2 lab3jcbenitezp
 
Pdi paterno m_lab2c
Pdi paterno m_lab2cPdi paterno m_lab2c
Pdi paterno m_lab2cjcbenitezp
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivasjcbenitezp
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivasjcbenitezp
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagationjcbenitezp
 
Utp ia_s1_introduccion ia
 Utp ia_s1_introduccion ia Utp ia_s1_introduccion ia
Utp ia_s1_introduccion iajcbenitezp
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2jcbenitezp
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2jcbenitezp
 
Utp sirn_2014-1 lab1
 Utp sirn_2014-1 lab1 Utp sirn_2014-1 lab1
Utp sirn_2014-1 lab1jcbenitezp
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2jcbenitezp
 
Inteligencia artificial
Inteligencia artificialInteligencia artificial
Inteligencia artificialjcbenitezp
 

Más de jcbenitezp (20)

Cap4 jc benitez
Cap4 jc benitezCap4 jc benitez
Cap4 jc benitez
 
Tarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimientoTarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimiento
 
It526 2017 2 ep
It526 2017 2 epIt526 2017 2 ep
It526 2017 2 ep
 
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 gUni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 g
 
Uni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 gUni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 g
 
It526 2015 2 pc3
It526 2015 2 pc3 It526 2015 2 pc3
It526 2015 2 pc3
 
Calendario academico 2015 02 g
Calendario academico 2015   02 gCalendario academico 2015   02 g
Calendario academico 2015 02 g
 
Db vsa-011 registro de asistencia docente ago2015
Db vsa-011 registro de asistencia docente  ago2015Db vsa-011 registro de asistencia docente  ago2015
Db vsa-011 registro de asistencia docente ago2015
 
Utp 2015-2_pdi_lab3
 Utp 2015-2_pdi_lab3 Utp 2015-2_pdi_lab3
Utp 2015-2_pdi_lab3
 
Utp sirn_2015-2 lab3
 Utp sirn_2015-2 lab3 Utp sirn_2015-2 lab3
Utp sirn_2015-2 lab3
 
Pdi paterno m_lab2c
Pdi paterno m_lab2cPdi paterno m_lab2c
Pdi paterno m_lab2c
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivas
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivas
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagation
 
Utp ia_s1_introduccion ia
 Utp ia_s1_introduccion ia Utp ia_s1_introduccion ia
Utp ia_s1_introduccion ia
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
 
Utp sirn_2014-1 lab1
 Utp sirn_2014-1 lab1 Utp sirn_2014-1 lab1
Utp sirn_2014-1 lab1
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
 
Inteligencia artificial
Inteligencia artificialInteligencia artificial
Inteligencia artificial
 

Utp pti_s6y7_funciones y variables

  • 1. Programación (L109) Sesión: 6 y 7 Funciones y variables Ing. José C. Benítez P.
  • 2. Sesión 6 y 7. Temas Funciones Concepto Sintaxis de una función Declaración de funciones Instrucción return Paso de parámetros a una función Variables globales y locales Programación - Prof. Ing. Jose C. Benitez P. 2
  • 3. Sesión 6 y 7. Temas Funciones Concepto Sintaxis de una función Declaración de funciones Instrucción return Paso de parámetros a una función Variables globales y locales Programación - Prof. Ing. Jose C. Benitez P. 3
  • 4. Funciones. Concepto Las funciones son bloques de código utilizados para dividir un programa en partes más pequeñas, cada una de las cuáles tendrá una tarea determinada. Las funciones pueden ser llamadas desde la función main o desde otras funciones. Nunca se debe llamar a la función main desde otro lugar del programa. Los argumentos de la función y sus variables locales se destruirán al finalizar la ejecución de la misma. Programación - Prof. Ing. Jose C. Benitez P. 4
  • 5. Sesión 6 y 7. Temas Funciones Concepto Sintaxis de una función Declaración de funciones Instrucción return Paso de parámetros a una función Variables globales y locales Programación - Prof. Ing. Jose C. Benitez P. 5
  • 6. Funciones. Sintaxis tipo_función nombre_función ( tipo y nombre de argumentos ) { bloque de sentencias ; } tipo_función: Puede ser de cualquier tipo: char, int , float, etc.. El valor devuelto por la función será de este tipo. Por defecto, es decir, si no indicamos el tipo, la función devolverá un valor de tipo entero ( int ). Si queremos que no retorne ningún valor deberemos indicar el tipo vacío ( void ). nombre_función: Es el nombre que le daremos a la función. Programación - Prof. Ing. Jose C. Benitez P. 6
  • 7. Funciones. Sintaxis tipo_función nombre_función ( tipo y nombre de argumentos ) { bloque de sentencias ; } tipo y nombre de argumentos: Son los parámetros que recibe la función. Los argumentos de una función no son más que variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones que no reciban argumentos. bloque de sentencias: Es el conjunto de sentencias que serán ejecutadas cuando se realice la llamada a la función. Programación - Prof. Ing. Jose C. Benitez P. 7
  • 8. Sesión 6 y 7. Temas Funciones Concepto Sintaxis de una función Declaración de funciones Instrucción return Paso de parámetros a una función Variables globales y locales Programación - Prof. Ing. Jose C. Benitez P. 8
  • 9. Funciones. Declaración. Al igual que las variables, las funciones también deben ser declaradas. Esto es lo que se conoce como prototipo de una función. Para que un programa en C sea compatible entre distintos compiladores es imprescindible escribir los prototipos de las funciones. Los prototipos de las funciones pueden escribirse antes de la función main o bién en otro archivo. En este último caso le indicaremos al compilador mediante la directiva #include. Programación - Prof. Ing. Jose C. Benitez P. 9
  • 10. Funciones. Declaración. Ejemplo. En el ejemplo vemos la declaración de una Archivo: funcion2.c función imprime ( prototipo ). Al no recibir ni retornar ningún valor, está /* Declaración de funciones. */ declarada como void en ambos lados. #include <stdio.h> También vemos que existe una variable global void imprime(void); /* prototipo */ llamada num. int num=5; /* variable global */ Esta variable es reconocible en todas las main() /* Escribe dos números */ funciones del programa. { Y en la función main encontramos una variable int num=10; /* variable local */ printf("%dn",num); local llamada num. imprime(); /* llamada */ Al ser una variable local, ésta tendrá preferencia } sobre la global. void imprime(void) { printf("%dn",num); Por tanto la función escribirá los números 10 y 5. } Programación - Prof. Ing. Jose C. Benitez P. 10
  • 11. Sesión 6 y 7. Temas Funciones Concepto Sintaxis de una función Declaración de funciones Instrucción return Paso de parámetros a una función Variables globales y locales Programación - Prof. Ing. Jose C. Benitez P. 11
  • 12. Instrucción return Como ya hemos visto, las funciones pueden retornar un valor. Archivo: funcion3.c Esto se hace mediante la instrucción return, que finaliza la ejecución de la función, devolviendo o no un /* Paso de parámetros. */ valor. #include <stdio.h> int suma(int,int); /* prototipo */ En una misma función podemos tener más de una main() /* Realiza una suma */ instrucción return. { int a=10,b=25,t; La forma de retornar un valor es la siguiente: t=suma(a,b); /* guardamos el valor */ return ( valor o expresión ); printf("%d=%d",suma(a,b),t); El valor devuelto por la función debe asignarse a una suma(a,b); /* el valor se pierde */ variable. De lo contrario, el valor se perderá. } int suma(int a,int b) { En el ejemplo se puede ver lo que ocurre si no return (a+b); guardamos el valor en una variable. } Nota. A la hora de mostrar el resultado de la suma, en el printf, también podemos llamar a la función. Programación - Prof. Ing. Jose C. Benitez P. 12
  • 13. Sesión 6 y 7. Temas Funciones Concepto Sintaxis de una función Declaración de funciones Instrucción return Paso de parámetros a una función Variables globales y locales Programación - Prof. Ing. Jose C. Benitez P. 13
  • 14. Paso de parámetros Archivo: funcion4.c Existen dos formas de enviar parámetros a una función: Por valor: /* Paso por valor. */ Cualquier cambio que se realice dentro de la función en el argumento enviado, NO afectará al #include <stdio.h> void intercambio(int, int); /* prototipo */ valor original de las variables utilizadas en la main() /* Intercambio de valores */ llamada. { Es como si trabajaramos con una copia, no con el int a=1,b=2; printf("a=%d y b=%d",a,b); original. intercambio(a,b); /* llamada */ No es posible enviar por valor arrays, deberemos printf("a=%d y b=%d",a,b); hacerlo por referencia. } Por referencia: void intercambio (int x, int y) { Lo que hacemos es enviar a la función la dirección int aux; de memoria donde se encuentra la variable o dato. aux=x; Cualquier modificación SI afectará a las variables x=y; y=aux; utilizadas en la llamada. printf("a=%d y b=%d",x,y); Trabajamos directamente con el original. } Programación - Prof. Ing. Jose C. Benitez P. 14
  • 15. Paso de parámetros Para enviar un valor por referencia se utiliza el símbolo & ( ampersand ) delante de la variable enviada. Archivo: funcion5.c Esto le indica al compilador que la función que se /* Paso por referencia. */ ejecutará tendrá que obtener la dirección de memoria en que se encuentra la variable. #include <stdio.h> void intercambio(int *, int *); main() /* Intercambio de valores */ En el ejemplo anterior podrás comprobar que antes y { después de la llamada, las variables mantienen su int a=1,b=2; valor. Solamente se modifica en la función intercambio printf("a=%d y b=%d",a,b); intercambio(&a,&b); /* llamada */ ( paso por valor ). printf("a=%d y b=%d",a,b); } En el siguiente ejemplo podrás ver como las variables void intercambio (int *x, int *y) { intercambian su valor tras la llamada de la función int aux; ( paso por referencia ). aux=*x; *x=*y; Las variables con un * son conocidas como punteros, *y=aux; printf("a=%d y b=%d",*x,*y); el único dato en C que pueden almacenar es una } dirección de memoria. Programación - Prof. Ing. Jose C. Benitez P. 15
  • 16. Paso de parámetros Hemos visto que las funciones pueden recibir argumentos. Archivo: funcion6.c La función main también puede recibir argumentos, en este caso desde el exterior. /* Argumentos de la función main. */ Los argumentos que puede recibir son: #include <stdio.h> argc: es un contador. Su valor es igual al número de main(int argc, char *argv[]) /* argumentos */ argumentos escritos en la línea de comandos, { printf("nCurso de Programación en C – contando el nombre del programa que es el primer Copyright (c) 2007, José C. Benítez P.n"); argumento. printf("Programa de ejemplo.nn"); argv: es un puntero a un array de cadenas de if (argc<2) { caracteres que contiene los argumentos, uno por printf("Teclee: funcion6 su_nombre"); exit(1); /* fin */ cadena. } En este ejemplo vamos a ver un pequeño programa printf("Hola %s",argv[1]); /*Solo el 2do argv*/ que escribirá un saludo por pantalla. } El programa FUNCION6.EXE. Programación - Prof. Ing. Jose C. Benitez P. 16
  • 17. Llamadas a funciones con arrays Llamadas a funciones con arrays Archivo: arrays3.c Los arrays únicamente pueden ser enviados a una función por referencia. /* Envío de un array a una función. */ Para ello deberemos enviar la dirección de memoria del primer elemento del array. #include <stdio.h> void visualizar(int []); /* prototipo */ Por tanto, el argumento de la función deberá ser main() /* rellenamos y visualizamos */ un puntero. { int array[25],i; En el ejemplo se puede apreciar la forma de enviar for (i=0;i<25;i++) { printf("Elemento nº %d",i+1); un array por referencia. scanf("%d",&array[i]); } La función se podía haber declarado de otra manera, visualizar(&array[0]); } aunque funciona exactamente igual: void visualizar(int array[]) /* desarrollo */ { declaración o prototipo void visualizar(int *); int i; desarrollo de la función void visualizar(int *array); for (i=0;i<25;i++) printf("%d",array[i]); } llamada de la función visualizar(array): Programación - Prof. Ing. Jose C. Benitez P. 17
  • 18. Sesión 5. Temas Funciones Concepto Sintaxis de una función Declaración de funciones Instrucción return Paso de parámetros a una función Variables globales y locales Programación - Prof. Ing. Jose C. Benitez P. 18
  • 19. Variables globales y locales Según el lugar donde son declaradas puede haber dos tipos de variables. Globales: las variables permanecen activas durante todo el programa. Se crean al iniciarse éste y se destruyen de la memoria al finalizar. Pueden ser utilizadas en cualquier función. Locales: las variables son creadas cuando el programa llega a la función en la que están definidas. Al finalizar la función desaparecen de la memoria. Programación - Prof. Ing. Jose C. Benitez P. 19
  • 20. Variables globales y locales /* Variables globales y locales. */ #include <stdio.h> Si dos variables, una global y una local, int num1=1; /* variable global */ main() /* Escribe dos cifras */ tienen el mismo nombre, la local prevalecerá { int num2=10; /* variable local */ sobre la global dentro de la función en que printf("%dn",num1); ha sido declarada. printf("%dn",num2); } Dos variables locales pueden tener el mismo /* Variables globales y locales. */ nombre siempre que estén declaradas en #include <stdio.h> funciones diferentes. int num1=1; /* variable global */ main() /* Escribe dos cifras */ { int num1=10; /* vaiable local */ printf("%dn",num1); printf("%dn",num1); } Programación - Prof. Ing. Jose C. Benitez P. 20
  • 21. Tarea (T6 y 7) Hacer un programa en C utilizando funciones . 1. Mostrar la tabla del numero x del 1 al 24. Consola debe mostrar: Ingrese x: Tabla del 1 al 24 de x: 2. Llenar la matriz de m x n. Consola debe mostrar: Ingrese m: Ingrese n: Ingrese los datos de la matriz m x n: Matriz de m x n: 3. Ordena un arreglo de x números flotantes. Consola debe mostrar: Ingrese x: Ingrese los datos de la matriz x flotantes: x numeros flotantes ingresados: x numeros flotantes ordenados: 4. Dado un arreglo de los Países de Latinoamérica y su población, las ordene por su primera letra y muestre además su población. Programación - Prof. Ing. Jose C. Benitez P. 21
  • 22. Presentación Todos los códigos fuentes deben ser presentados en un solo archivo de texto, cuyo nombre lleve las iniciales del curso, sus Apellidos, guion bajo y luego el numero de la tarea. Ejemplo: PRG_BenitezPalacios_T67.txt Los códigos deben estar comentados bloque a bloque. La presentación de esta Tarea es obligatoria y tiene 03 puntos de bonificación en la Tercera Practica Calificada. Plazo de entrega: Lunes 23/01/12 Las Tareas que no cumplan las indicaciones no serán recepcionados por el profesor. Programación - Prof. Ing. Jose C. Benitez P. 22
  • 23. Sesión 6 y 7. Funciones y variables Programación http://utpprogc.blogspot.com Programación - Prof. Ing. Jose C. Benitez P. 23