17/09/2014Catedra de Programacion I1 Programación I Funciones.

Slides:



Advertisements
Presentaciones similares
Funciones y recursividad
Advertisements

Fundamentos de la Programación Estructurada
Procedimientos y Funciones
Programación I Teoría III
Funciones. Programación, Algoritmos y Estructuras de Datos.
FUNCIONES EN C.
INFORMATICA I Arreglos 1 CLASE 17.
Informática II Prof. Dr. Gustavo Patiño MJ
INFORMATICA I Funciones CLASE 13.
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
1.3 Programación modular. Subprogramas.
Algoritmos y Estructuras de Datos
Funciones Funciones De biblioteca Definidas por el usuario
Estructuras de Datos Memoria y Variables. Conceptos Computador: CPU + Memoria + Dispositivos E/S La memoria se encarga de almacenar los datos y los programas.
Unidad 3 Punteros.
Curso Práctica 3 1 Funciones CONTENIDO Consideraciones sobre funciones Estructura de un programa en C Uso de funciones Paso de parámetros Punteros.
Introducción a lenguaje C
Acciones y funciones Concepto
Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
Funciones y procedimientos
FUNCIONES EN C.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
El lenguaje de programación C - Funciones -
Programación I Teoría VI: Recursividad

Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Estructuras de repetición
Tema 6: Clases Antonio J. Sierra.
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Semana 5 Subprogramas..
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
PROCEDIMIENTOS FUNCIONES
Programación III Clase 07 Funciones.
FUNCIONES EN C.
Funciones1 PROGRAMACIÓN ESTRUCTURADA EN PSEUDÓCODIGO Profr. Miguel Rodríguez Hernández PROGRAMACIÓN MODULAR O FUNCIONAL.
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Archivos.

Descomposición Modular. Funciones
Computación II Unidad IV Funciones y Módulos. Objetivos: –Comprender como construir programas en forma modular partiendo de pequeñas partes conocidas.
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Unidad II Introducción a la programación en C++
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Punteros.
Elementos básicos del lenguaje
Funciones Definidas por el Programador
APUNTADORES.
Definición de subprogramas en C
Curso de C # República Bolivariana de Venezuela Área de Computación
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
INTRODUCCION A LA PROGRAMACION
LENGUAJE “C” Programación.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Una función es un bloque de instrucciones que se ejecuta al ser llamada desde algún punto del programa, con nombre, que ejecuta una tarea específica y.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
MEMORIA DINÁMICA.
Gabriela Araya Baez Estudiante Ingenieria Civil Industrial.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
1 Procedimientos y Funciones Introducción a la Informática Departamento de Sistemas Universidad del Cauca 2006.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Transcripción de la presentación:

17/09/2014Catedra de Programacion I1 Programación I Funciones

17/09/2014Catedra de Programacion I2 Funciones Introducción En C se pueden definir funciones que permiten la implementación de programas modulares. El concepto de programación modular 1 fue visto en el curso de Introducción a la computación. Recordemos que para la implementación de dicho paradigma se usaron las subrutinas como herramienta.En el lenjuaje C las subrutinas son reempazadas por las llamadas funciones. La ventaja de las fuciones sobre las subrutinas es que implementan en forma natural las siguientes tareas:  El pasaje de parámetros por el Stack  La creación y destrucción del Stack Frame  La creación y destrucción de variables locales en el stack  El acceso a los parámetros y las variables locales a través del Frame pointer.  El programador ya no debe preocuparse por el tamaño de las variables. 1-Recomendamos releer lo visto en introducción sobre este tema.

17/09/2014Catedra de Programacion I3 Funciones Definición La definición de cualquier función responde a la siguiente sintaxis Toda función se define de la siguiente manera: Tipo nombre (Argumentos formales) bloque nombre: Es el nombre de la función Argumentos formales : es el nombre y tipo de los parámetros que recibe la función. Tipo Es el el tipo devuelto por la función. Para retornar un valor se usa la sentencia return cuya sintaxis es: [return expresión;] Bloque: es el que contiene las sentencias que se ejecutan cuando la función es invocada. Este bloque queda definido por un par de llaves ( { } ).

17/09/2014Catedra de Programacion I4 Funciones Definición Ejemplo int suma (int a, int b) { int resultado; resultado=a+b; return resultado; } a y b son los parámetros formales resultado es una variable local resultado es el valor que devuelve la función a través del stack

17/09/2014Catedra de Programacion I5 Invocación Funciones int suma (int a, int b) { int resultado; resultado=a+b; return resultado; } int suma(int,int); int c, n1=500, n2=6000; void main (void) { c=suma(n1,n2); } PSHX Hacemos lugar en el Stack para el primer parámetro LDD n1 TSX STD 0,X Y lo guardamos LDD n2 JSR suma STD c PULX RTS PSHB Guardamos el segundo parámetro en el stack PSHA PSHX Creamos la variable local resultado TSX LDD a,X Parámetro ‘a’ ADDD b,X Parámetro ‘b’ STD resultado,X Guardamos la suma en resultado PULX devolvemos la zona ocupada por resultado PULX devolvemos la zona ocupada por el segundo parámetro RTS El resultado vuelve en el registro D Prototipo de la función Parámetros actuales aequ6 Desplazamientos respecto del Stack Frame bequ2 resultadoequ0

17/09/2014Catedra de Programacion I6 Funciones Void Cuando una función no devuelve nada de debe explicitar de la siguiente manera void motor( int velocidad); /* Prototipo */ void motor( int velocidad)/* Definición */ { ……… } De igual manera si no recibe nada: int temperatura (void); /* Prototipo */ int temperatura (void) /* Definición */ { int val; …………………… return (val) }

17/09/2014Catedra de Programacion I7Funciones Visibilidad y Tipo de almacenamiento Del ejemplo anterior se puede verificar lo siguiente: 1.Los parámetros actuales n1,n2 se pasan por VALOR es decir la función recibe una copia de los mismos en el stack.Esta copia desaparece en cuanto termina el cuerpo de la función. 2. La variable local resultado también se encuentra en el Stack y por lo tanto también desaparece al terminar la función. 3. De 1 y2 tenemos que los nombres de las variables locales y los de los parámetros formales solo existen dentro de la función se dice que su duración esta limitada al ámbito o entorno (scope) de la función. Dicho en otras palabras la visibilidad de dichas variables queda confinada a la función. Esto ultimo nos permite repetir nombres en otras funciones. Observar que el nombre de las variables a, b y resultado no son otra cosa que los desplazamientos respecto del frame pointer. No representan posiciones absolutas!!. LDD 6, X LDD a, X ADDD 2, X STD resultado, X STD 0, X ADDD b, X

17/09/2014Catedra de Programacion I8Funciones Visibilidad y Tipo de almacenamiento Es decir que podemos hacer lo siguiente sin entrar en conflictos No hay conflicto porque la variable resultado es local en ambas funciones. En efecto cuando se invoca a main se crea un SF donde habita resultado. Cuando main invoca a suma se vuelve a crear un SF diferente del de main. Allí es donde se encuentra resultado. int suma(int,int); int n1=500, n2=6000; void main (void) { int resultado; resultado=suma(n1,n2); } int suma (int a, int b) { int resultado; resultado=a+b; return resultado; }

17/09/2014Catedra de Programacion I9Funciones Visibilidad y Tipo de almacenamiento Supongamos ahora que a la variable resultado la hacemos global Es decir : En este caso el compilador le da prioridad a la definición de la variable local resultado sobre la variable global resultado. Es decir que siguen siendo diferentes. Una variable en un bloque exterior no puede ser accedida desde un bloque interior si tienen el mismo nombre. En estos casos la variable local oculta a la global. int suma(int,int); int resultado, n1=500, n2=6000; void main (void) { resultado=suma(n1,n2); } int suma (int a, int b) { int resultado; resultado=a+b; return resultado; }

17/09/2014Catedra de Programacion I10Funciones Visibilidad y Tipo de almacenamiento Que pasa si hacemos lo siguiente? En este caso la variable global resultado si es vista por la función suma dado que no existe dentro de suma una variable local con igual nombre que la global Nótese que el valor de resultado1 se pierde.!!! int suma(int,int); int resultado, n1=500, n2=6000; void main (void) { resultado=suma(n1,n2); } int suma (int a, int b) { int resultado1; resultado1= a+b; return resultado; }

17/09/2014Catedra de Programacion I11Funciones Visibilidad y Tipo de almacenamiento Que pasa si hacemos lo siguiente? En este caso la variable global resultado si es vista por la función suma dado que no existe dentro de suma una variable local con igual nombre que la global Nótese que el valor de resultado1 se pierde.!!! int suma(int,int); int resultado, n1=500, n2=6000; void main (void) { resultado=suma(n1,n2); } int suma (int a, int b) { int resultado1; resultado1= a+b; return resultado; }

17/09/2014Catedra de Programacion I12Funciones Visibilidad y Tipo de almacenamiento Predecir la salida del siguiente programa: #include void fun1(void); void fun2(void); int n1=1; void main (void) { int n1=2; { int n1=3; printf("A:%d\n ",n1); fun1(); fun2(); } printf("D:%d\n ",n1); } void fun1(void) { int n1=4; printf("B:%d\n ",n1); } void fun2(void) { printf("C:%d\n ",n1); }

17/09/2014Catedra de Programacion I13Funciones Visibilidad y Tipo de almacenamiento #include void fun1(void); void fun2(void); int n1=1; void main (void) { int n1=2; { int n1=3; printf("A:%d\n ",n1); fun1(); fun2(); } printf("D:%d\n ",n1); } void fun1(void) { int n1=4; printf("B:%d\n ",n1); } void fun2(void) { printf("C:%d\n ",n1); } RTA: A:3 B:4 C:1 D:2

17/09/2014Catedra de Programacion I14Funciones Cual es el valor de resultado? #include int suma(char,char); unsigned char c, n1=129,n2=1 ; int resultado; void main(void) { resultado=suma(n1,n2); printf("%d",resultado); } int suma(char a, char b) { int resultado1; resultado1=a+b; return resultado1; }

17/09/2014Catedra de Programacion I15Funciones Cual es el valor de resultado? #include int suma(char,char); unsigned char c, n1=129,n2=1 ; int resultado; void main(void) { resultado=suma(n1,n2); printf("%d",resultado); } int suma(char a, char b) { int resultado1; resultado1=a+b; return resultado1; } RTA: unsigned char -> char 129   1 resultado = -126