INFORMATICA I Funciones CLASE 13.

Slides:



Advertisements
Presentaciones similares
Ejercicio: 1.- Dado el siguiente esquema: Art1 Art2 Art3
Advertisements

El lenguaje de programación C - El primer programa -
Profesora: Nelwi Báez P
Ejemplo de Programa C++
Funciones y recursividad
MANUAL EXPRESS DE C J.M.sevilla.
Tipos de Datos Abstractos (III) Clase #23 Introducción a la Programación.
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Repaso para la construcción del intérprete 2012
Estructuras de control
Programacion de Computadora Prof. Obadiah Oghoerore.
EJERCICIOS DE PROGRAMACION
FUNCIONES EN C.
INFORMATICA I Arreglos 1 CLASE 17.
INFORMATICA I Arreglos 2 CLASE 18.
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
CS1101X Programming Methodology
Mergesort como ejemplo de Divide y Vencerás
ESTRUCTURA DEL LENGUAJE C
Principios y Herramientas de Programación
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Programación Estructurada
Funciones Funciones De biblioteca Definidas por el usuario
SOBRECARGA DE FUNCIONES
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
Funciones y procedimientos
FUNCIONES EN C.
Programación I Teoría II
Estructuras de repetición
LIA. SUEI CHONG SOL, MCE.. #include void main() { float N1,N2,N3,SUMA; cout>N2;
Programa “Coordenadas” Ing. Arturo Díaz Vargas Departamento de Sistemas División de Ciencias Básicas e Ingeniería UNIVERSIDAD AUTONOMA METROPOLITANA.
LENGUAJE “C” Programación.
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
Ejemplo Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. El sistema debe poder mostrar información de una figura.
Sección 5-2 Estructuras de Control de Decisión Expresiones Lógicas.
FUNCIONES EN C.
Estructuras de Iteracion (Repetitivas ) while , for,, do-while
Arreglos.
Programación III Clase 06 Funciones.
CI TEORIA semana 4 Estructura Algorítmica: SELECCIÓN
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de.
Ejemplos openMP.
Búsqueda. Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y.
Introducción a la Programación “El lenguaje C” Manuel Crisosto M., Claudio Gutiérrez S., Christian Vidal C.
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Análisis de Algoritmos 2
Trazado. 1 Intercambio sin error #include void intercambio(int *, int *); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(&a,&b);
Principios de programación LIA. Suei Chong Sol, MCE. Sentencias de Control Repetitivas.
Tema ‧ Comando - while Repeticiones. Comando while ‧ Un ciclo es cualquier construcción de programa que repite una sentencia ó secuencia de sentencias.
Radio Volumen esfera m. m #include.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
LENGUAJE “C” Programación.
LENGUAJE “C” Programación.
Ingeniería en Software Facultad de Ingeniería 2014
2011/1 - CLASE 12. AGENDA 1 Introducción 2 Sentencia while 3 Sentencia for 14 Sentencia do-while 5 Instrucciones Especiales 6 Ciclos anidados.
Arreglos Ejemplo paso a paso. Planteamiento Como estudiante de ingeniería, quieres usar tus habilidades de programador para llevar un registro de tus.
TIPOS DE DATOS PARCIAL III FUNCIONES. Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores.
Integrantes:  Gómez Desire  Orgelys Linares  Oriannys Linares  Sánchez Alfredo  Wendher Villasmil.
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
Características de “C” Esta conformado por un Ambiente Integrado. Es un Lenguaje de Nivel medio.Es un compilador. Contiene un conjunto de palabras reservadas.
ARREGLOS Por: Astaroth.  En la clase anterior vimos que c++, es un mundo de cajas, bien hoy hablaremos de una caja un tanto particular “vagoncin” el.
Programacion I Curso: 5 I (TT)
Introduction a la Programacion
Usando for, while y do while
CICLOS. OPERADOR DE ASIGNACION COMPUESTA CICLO WHILE.
Transcripción de la presentación:

INFORMATICA I Funciones CLASE 13

Chiste del día

Zona de Preguntas… #include <stdio.h> #define LIMITE 5   int main (void){ int contador, termino = 1; int suma; suma = 0; contador = 0; while(contador/2 < LIMITE){ printf("%d ",termino); contador += 1; if(termino%3 == 0) suma += termino; termino =++contador+termino; } printf("\n%d \n",suma); return 0; CICLOS Zona de Preguntas… #include <stdio.h> #define LIMITE 5   int main (void){ int a, b = 1, c; a = 0; c = 0; for(a=1; a<=LIMITE;a++){ b = a + --b; c = a + b + ++c; b= b++ + ++b; printf("%d %d %d\n",a,b,c); } return 0; Lenguaje C

RESUMEN Diagrama de Flujo Pseudocódigo Lenguaje C Vble1 <- vble Vble2 <- valor Vble3 <- constante . . . VbleN <- expresión Vble1 <- vble Vble2 <- valor Vble3 <- constante . . . vbleN <- expresión Vble1 = vble; Vble2 = valor; Vble3 = constante; . . . vbleN = expresión; CONDICION NO (falsa) secuencias 1 secuencias 2 SI (verdadera) SI (condicion) ENTONCES secuencia 1 | camino 1 SINO Secuencia 2 | camino 2 FIN_SI if (condicion) { código_secuencia1; } else { código_secuencia2; VBLE_CONTROL Valor 1 secuencias 1 Otras secuencias Valor 2 OtrosValores . . . SEGUN(vble_control)HAGA valor 1 secuencias 1 valor 2 secuencias 2 . . . otrosValores otras secuencias FIN_SEGUN switch(vble_control) { case 1: cod_secuencia1; break; case 2: cod_secuencia2; . . . default: cod_secuencias; }

RESUMEN Diagrama de Flujo Pseudocódigo Lenguaje C MQ(CONDICIÓ) Cuerpo del bucle Falso verdadero MIENTRAS(condición)HAGA secuencia FIN_MIENTRAS while(condición){ secuencia } PARA VC=LI, LF,INC Cuerpo del bucle Falso verdadero PARA VC DESDE LI HASTA LF DE INC HAGA secuencia FIN_PARA for(expre1;expre2;expre3){ secuencia; } MQ(CONDICIÓN Cuerpo del bucle Falso verdadero HAGA secuencia MIENTRAS QUE(condición) do{ secuencia }while(condición);

AGENDA Estructura de los programas. Estructura de los programas 1 Estructura de los programas. 1 Estructura de los programas 2 Introducción a las funciones 3 Estructura de una función 4 Variables locales y globales

Estructuras Básicas de los programas //Comentario //Directivas #include …. #define …. //Prototipos Funciones //Inicio int main (void){ Instrucciones… //Llamado a funciones return 0 } // Otras funciones

ESTRUCTURAS DE LOS PROGRAMAS VISTA HASTA EL MOMENTO #include <archivo_cabecera> declaracion_variables_globales; int main() { declaracion_variables_locales; instruccion_1; instruccion_2; . . . instruccion_N; return 0; } Se tiene un solo archivo fuente. Todo lo que hace el programa se implementa dentro de la función main.

PROBLEMAS DE ESTA METODOLOGIA #include <stdio.h> int a[3],b[3],c[3]; int main() { int i; printf(" Ingrese el primer vector: "); for(i=0;i<3;i++) { scanf("%d",&a[i]); } printf(" vec1 = [%d %d %d]\n\n",a[0],a[1],a[2]); printf(" Ingrese el segundo vector: "); scanf("%d",&b[i]); printf(" vec2 = [%d %d %d]\n\n",b[0],b[1],b[2]); c[i]=a[i]+b[i]; printf(" vec3 = vec1 + vec2 = [%d %d %d]\n\n",c[0],c[1],c[2]); return 0; Repetición de código Código Repetitivo y engorroso

SOLUCIÓN AL PROBLEMA: USO DE FUNCIONES PROBLEMAS DE ESTA METODOLOGIA Programación repetida. A medida que el problema se hace mas complejo el main tiende a crecer mucho y hacerse mas difícil de entender. Dificultad para programar. Poca reutilización de código. SOLUCIÓN AL PROBLEMA: USO DE FUNCIONES

Ventajas del uso de funciones 1 Al dividir el problema en módulos o partes se comprende más fácilmente 2 Al hacer modificaciones es más fácil sobre un módulo en particular que en todo el algoritmo. 3 En cuanto a los resultados, se probarán mucho mejor comprobando si cada módulo da el resultado correcto que si se intenta probar de un golpe todo el programa

AGENDA Estructura de los programas. Introducción a las funciones 1 Estructura de los programas. 2 Introducción a las funciones 2 Introducción a las funciones 3 Estructura de una función 4 Variables locales y globales

FUNCIONES DIVIDE Y VENCERAS Conjunto de instrucciones que realizan una acción especifica y que tienen un nombre que las representa. Una función sirve para facilitar la programación, ahorrar espacio, tiempo y para facilitar la portabilidad de los programas. DIVIDE Y VENCERAS

FUNCIONES La forma más razonable de encarar el desarrollo de un programa complicado es aplicar lo que se ha dado en llamar "Programación Top - Down" . Esto implica que, luego de conocer cual es la meta a alcanzar, se subdivide esta en varias tareas. Luego a estas se las vuelve a dividir en otras menores. Y así se continúa hasta llegar a tener un gran conjunto de pequeñas y simples tareas. Tal es el criterio con que está estructurado el lenguaje C, donde una de sus herramientas fundamentales son las funciones. Luego sólo queda resolver cada una de ellas por separado.

FUNCIONES El uso de funciones permite dividir grandes tareas. Se ahorra programación repetida. Se evita reinventar la rueda gracias a la reutilización de código. Hace que los programas sean mas modulares, mas fáciles de leer y mas fáciles de editar .

FUNCIONES Las funciones permiten agrupar una serie de operaciones de tal manera que se puedan utilizar más tarde sin tener que preocuparnos por cómo están implementadas, simplemente sabiendo lo que harán. El uso de funciones es una práctica común y recomendable ya que permite modularizar nuestro código, simplificando así el desarrollo y la depuración del mismo.

FUNCIONES Todo programa tiene al menos una función: void main(){ F1 F2 …. } Desde la funcion main() se puede estructurar todo el programa por medio de llamados a las Funciones PROGRAMA PROGRAMA main() main() F1 F2 F3 F4 F5

LLAMADO A FUNCIONES main() f1() f2() f3() f4()

#include <stdio.h> Ejemplo Programa que recibe el radio de una esfera y calcula el volumen y el area de la superficie de la esfera y los muestra. #include <stdio.h> int main() { r=leaRadio(); //Funcion vol=calVolumen(r); area=calArea(r); muestreArVol(vol,area); return 0; }

AGENDA Estructura de los programas. Introducción a las funciones 1 Estructura de los programas. 2 Introducción a las funciones 3 Estructura de una función 3 Estructura de una función 4 Variables locales y globales

Partes Fundamentales de una Función En el momento de crear mi_función debo seguir tres pasos fundamentales: 1. Declaración del prototipo de la Función. 2. Definición de la Función. 3. Llamado a la Función

Declaracion del prototipo de una Función tipo_retorno nombre(tipo_1 param_1, tipo_N param_N); Consiste en informarle al Compilador los tamaños de los valores que se le enviarán y el tamaño de los valores que ella retornará al programa invocante . Convencionalmente se escribe al principio del programa El “tipo de dato de retorno” es un tipo de dato de los que maneja C (int, float, char,…..). Si la función no retorna nada, en ese lugar se utiliza la palabra void. Nombre de la funcion es el nombre que le damos al conjunto de instrucciones que ella representa. Los tipos de dato de los parametros son todos aquellos tipos de los parametros que la función necesita para su funcionamiento.

Ejemplo declaración de funciones tipoDatoRetorno nomb_funcion(TipoDatosParametros); Ejemplos : float mi_funcion(int i, double j ) ; double otra_funcion(void) ;        otra_mas(long p) ; void   la_ultima(long double z, char y, int x, unsigned long w) ; Nota: En el prototipo no es necesario indicar variables. Sólo el tipo de dato. Si se indican variables el compilador no las toma en cuenta

Definición de la función La definición de la función consiste en expresar que es lo que va a realizar la función. Tipo de dato retornado por la función Nombre de la función float suma(float num1, float num2) { float res; res = num1 + num2; return res; } Cuerpo de la función Argumentos de la función. Variable retornada por la función Al igual que con la función main(), dentro de las llaves se expresa el algoritmo de la función.

Definición de la función La definición de una función puede ubicarse en cualquier lugar del programa, con sólo dos restricciones: debe hallarse luego de su prototipo, y no puede estar dentro de la definición de otra función ( incluida main() ). La definición debe comenzar con un encabezamiento, que debe coincidir totalmente con el prototipo declarado para la misma, y a continuación del mismo, encerradas por llaves se escribirán las sentencias que la componen

Implementando Funciones Una función debe ser declarada antes de ser usado, por ello suele ser común colocar las declaraciones antes de la función main. #include <archivo_cabecera> protipo_funciones; declaracion_variables_globales; int main() { declaracion_variables_locales; funcion_1(); funcion_2(); . . . funcion_N(); return 0; } funcion_1() { codigo_funcion_1; funcion_N() { codigo_funcion_N; #include <archivo_cabecera> float suma(float,float); int main() { . . . return 0; } float suma(float num1, float num2) { float res; res = num1 + num2; return res;

Llamado a Funciones Una vez se ha declarado y definido la función, podemos pasar a la fase en el que la funcion ya se puede utilizar. varRetorno = nomb_funcion(TipoDatosParametros); #include <stdio.h> float suma(float,float); int main() { f1(); f2(); return 0; } f1(){ . . . f2() { f3() main() 1 3 2 6 7 f1() f2() 5 4 f3()

Llamado a Funciones Para hacer que las instrucciones contenidas en una función, se ejecuten en determinado momento, no es necesario más que escribir su nombre como una línea de sentencia en el programa. Dentro de esos paréntesis está ubicados los datos que se les pasan a las funciones. Está permitido pasarles uno, ninguno ó una lista de ellos separados por comas, por ejemplo: raiz=sqrt(a), printf(¨el valor es: %d¨, val ) . El valor de retorno puede ser cargado a una variable o no (Depende del programador).

Llamado a Funciones #include <stdio.h> float suma(float,float); int main() { int a = 3, b = 2, c = 0, d = 3; int e, f, g, h, i, k; d = suma(2,-4); c = suma(a,b); f = suma(2,c++); g = suma(++c,d++); h = suma(suma(1,a),d); suma(2,3); return 0; } float suma(float num1, float num2) { float res; res = num1 + num2; return res; Una función se puede invocar las veces que se desee. Cuando se invoca un función que retorna un valor se es libre de llevar el valor retornado a una variable.

Llamado a funciones Para indicar no retorno de datos se usa la palabra clave void, hay tres casos básicamente: Cuando una función no tiene argumentos de entrada ni retorna nada. Cuando una función tiene argumentos de entrada pero no devuelve nada. Cuando una funcion no pide argumentos de entrada pero devuelve algo. void saludar(void) { printf(“Hola parce!!\n”); } void re_saludar(int N){ int i; for(i=0;i<N;i++) { printf(“Hola !!\n”); int ver_algo(void){ return algo;

Generalidades sobre Funciones Una función puede devolver cualquier tipo de dato simple (char, short, int, long, etc), compuesto (estructura) o un puntero a cualquiera de estos dos tipos. Una función no puede retornar un array o una matriz. Una función solo puede retornar un solo valor a menos que devuelva un puntero o una estructura. Procedimientos No tiene retorno

Etapas de la función Invocación Definición Prototipo int doble (int); void main(){ int x,resul; scanf(“%i”,&x); resul=doble(x); printf(“El doble es %i”,resul); } int doble (int n){ return n*2; Invocación Definición

Ejemplo Realice programa que sume dos numeros. Hagalo utlizando una funcion que se llame suma() Prototipo Invocación Definición

Ejemplo 2 Prototipo llamado Definición Realizar programa que pida dos números y que encuentre el mayor, realice una función mayor() que sea la que encuentre el mayor entre dos #s. Prototipo llamado Definición

Paso de parámetros a Funciones Cuando de hace un llamado a una función, si la función tiene lista de parámetros, estos parámetros pueden ser pasados a las función para que los procese, de la siguiente manera: Por valor. Por referencia(Apuntadores). Por Valor: El dato se le pasa a la función, realizándole una copia en memoria al valor de la variable y No se le pasa la variables en sí. Esto se denomina: PASAJE POR VALOR y garantiza que dichas variables no sean afectadas de ninguna manera por la función invocada. Al salir de la función las variables cuyos valores fueron enviados como parámetros, conservan sus valores iniciales.

Ejemplo paso de argumentos por valor: #include <stdio.h> void doble(int); //prototipo Func doble int main(void){ int cont; for(cont=0; cont<10; cont++){ printf(“cont en main es: %d”,cont); doble(cont); } return 0; void doble(int cont){ printf(“cont en doble es: %d”,cont); cont=2*cont; Escribir que valores de la variable cont son impresos en pantalla por el siguiente programa.

AGENDA Estructura de los programas. Introducción a las funciones 1 Estructura de los programas. 2 Introducción a las funciones 3 Estructura de una función 4 Variables locales y globales 4 Variables locales y globales

Variables locales y Globales Una variable local se declara dentro de una función “Nace” y “muere” con la función. A no ser que se declaren (static) Globales Una variable global se declara fuera de todas las funciones es visible en todo el programa Se le puede cambiar el valor en cualquier parte del programa y lo mantiene. Se recomienda usar pocas o ninguna variable global.

Ámbito de la variables: Variables Locales y Globales Una variable local se declara dentro de una función. Solo es visible dentro de la función que la declare. Normalmente: una variable local se crea cuando se llama a la función y se destruye cuando se termina la función. Si se quiere que la variable mantenga su valor para futuras llamadas a la función la variable local se debe declarar estática. Se hace esto anteponiendo la palabra static Una variable global se declara fuera del main() y de cualquier función y es visible en todo el programa. Se le puede cambiar el valor en cualquier parte del programa y lo mantiene. Se recomienda usar el mínimo número posible de variables globales.

Ejemplo variables locales Analizar el siguiente programa: #include <stdio.h> void contCinco(void); //prototipo Func. int main(void){ int cont; for(cont=0; cont<10; cont++){ printf("cont en main es: %d \n",cont); contCinco (); } return 0; void contCinco(void){ static int contStatic=1; for(cont=contStatic;cont<contStatic+5;cont++){ printf("cont en funcion es: %d \n",cont); contStatic=cont;

Ejemplo variables Globales Analizar el siguiente programa: #include <stdio.h> void contCinco(void); //prototipo Func. int cont=0; int main(void){ while(cont<10){ printf("cont en main es: %d \n",cont); contCinco (); cont++; } return 0; void contCinco(void){ static int contStatic=1; for(cont=contStatic;cont<contStatic+2;cont++){ printf("cont en funcion es: %d \n",cont); contStatic=cont;

Resumen: Ámbito de las variables El ámbito de un elemento en C depende de donde se sitúe la definición y de los modificadores que le acompañan. En resumen, se puede decir que un elemento definido dentro de una función tiene ámbito local, o si se define fuera de cualquier función, se dice que tiene un ámbito global. program.c #include < libreriaX.h> #define CONST 10 int funcion1(void); /*Las vbles. declaradas aquí tienen un ambito global. Cualquier función dentro de este mismo archivo puede hacer uso de ellas.*/ int main(void) { ….. } int funcion1() /*Las vbles. declaradas aquí tienen un ambito local a funcion1. Ninguna otra función puede hacer uso de ellas.*/

Estructurando funciones en archivos separados Hasta ahora todos los programa se han escrito en un solo archivo (.c), solo se ha hecho uso de la inclusión de algunas librerias (archivos .h) del sistema. Los programas grandes son más fáciles de gestionar si se dividen en varios archivos fuente, también llamados módulos, cada uno de los cuales puede contener una o más funciones. program.c archivo2.c archivo2.h #include < libreriaX.h> #define CONST 10 int funcion1(void); int varGlobal; int main(void) { ….. } #include < libreriaX.h> int varGlobal; int funcion2(int x) { int varLocal; ….. } int funcion3(int x) …. #define CONST1 12 int funcion2(int); int funcion3(int);

Estructurando funciones en archivos separados Archivo Fuente 1 Archivo Fuente 2 Archivo Fuente 3 Archivo Fuente n COMPILADOR Archivo objeto 1 Archivo objeto 2 Archivo objeto 3 Archivo objeto n Librerias internas ENLAZADOR PROGRAMA EJECUTABLE

Bibliografía Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo3. H.M. Deitel, P.J. Deitel. Como programar en C y C++ Google

GRACIAS POR SU ATENCIÓN