Programación III Clase 07 Funciones.

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Curso de java básico (scjp)
REGISTROS INTERNOS DEL PROCESADOR.
Ejemplo de Programa C++
Funciones y recursividad
MODOS DE DIRECCIONAMIENTO
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++.
Introducción a Programación Concurrente
Funciones. Programación, Algoritmos y Estructuras de Datos.
MANEJO DE EXCEPCIONES EN C++
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Tema Función main Elementos básicos del lenguaje.
66.20 Organización de Computadoras
FUNCIONES EN C.
Informática II Prof. Dr. Gustavo Patiño MJ
INFORMATICA I Funciones CLASE 13.
Detalles del sistema operativo
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
BUFFER OVERFLOW Y EXPLOITS
SOBRECARGA DE FUNCIONES
Estructuras de Datos Punteros y algo más.
Estructuras de Datos Memoria y Variables. Conceptos Computador: CPU + Memoria + Dispositivos E/S La memoria se encarga de almacenar los datos y los programas.
Acciones y funciones Concepto
PROG. EN ENSAMBLADOR Ing. Pablo Cesar Tapia Catacora.
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
El lenguaje de programación C - Funciones -
Chapter 7 Functions Dale/Weems/Headington. 2 Tópicos Capítulo 7 l Writing a Program Using Functional Decomposition l Writing a Void Function for a Task.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Lenguaje de maquina Unidad II Programación en Lenguaje Ensamblador. Interrupción: Introducción. Servicios. Tema:
Material de apoyo Unidad 2 Estructura de datos
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
Tema 6: Clases Antonio J. Sierra.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
MODOS DE DIRECCIONAMIENTO No. Lista 21 7am Rivas chacón Ana cristina
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
LENGUAJE “C” Programación.
Semana 5 Subprogramas..
1 LENGUAJES LOGICOS IMPLEMENTACION CALCULO DE PREDICADOS PROLOG.
FUNCIONES EN C.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Programación III Clase 06 Funciones.
Estructura de un programa en C
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Introducción a la Programación. Lenguaje de Máquina.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Secciones y Segmentos STARTUP
Descomposición Modular. Funciones
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Manejo de Punteros y objetos en memoria dinámica en C++
Clase 10 Apuntadores & Memoria Dinámica
Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida.
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String

CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Modularización (Funciones) Prof. Miguel Vélez Rubio.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Ing. Lionel Hendryk. Sistemas Embebidos Un sistema embebido es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas.
No. 26 8:00 a.m. Lenguaje Ensamblador. Segmento de Pila  Model small  stack  Data  Code  mov  mov ds, ax  push ds  …código del programa.
INTRODUCCION A LA PROGRAMACION
INTRODUCCIÓN AL LENGUAJE C++
LENGUAJE “C” Programación.
TIPOS DE DATOS PARCIAL III FUNCIONES. Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores.
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.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Desbordamiento de buffer remoto Conceptos básicos (CPU Intel x86)
Transcripción de la presentación:

Programación III Clase 07 Funciones

Los Segmentos de Memoria Cada vez que se ejecuta cualquier programa, el mismo deberá pasar a memoria. Los programas en memoria tienen varias secciones o segmentos, los cuales sirven para organizar el manejo de la memoria por el programa.

Segmentos de Memoria Los Segmentos de Memoria son: CS  Code Segment (Segmento de Código) DS  Data Segment (Segmento de Datos) SS  Stack Segment (Segmento de Pila) HS  Heap Segment (Segmento de Heap) Cada Segmento tiene asignado una “cosa” del programa

Segmentos de Memoria Segmento del Heap (HS = Heap Segment) Segmento de Pila (SS = Stack Segment) Segmento de Datos (DS = Data Segment) Segmento de Código (CS = Code Segment)

Segmento de Código En este segmento se guardan las instrucciones, en lenguaje máquina, de nuestro programa.

Segmento de Datos En este Segmento se guardan las variables globales del programa.

Segmento de Pila En este segmento se guardan: Los Llamados a las funciones: Los parámetros de las funciones llamadas Las variables locales Otra información necesaria para el funcionamiento del programa. Cada vez que se llama a una función entra en este segmento con toda su información.

Segmento del Heap En este segmento se guardan los objetos que han sido creados dinámicamente en tiempo de corrido.

El Segmento de Pila y el Llamado de Funciones (Call Stack) Al terminar la función d() ella sale del stack void a(); void b(); void c(); void d(); int main() { a(); // fin return 0; } void a(){ b(); c(); void b(){ d(); void c() {} void d() {} Al terminar la función b() ella sale del stack Al terminar la función c() ella sale del stack Al terminar la función a() ella sale del stack d() Al terminar el main() se acaba el programa b() c() a() main()

Parámetros por Valor y por Referencia Los parámetros, por defecto, son pasados a las funciones por valor. Cuando los parámetros son pasados por valor lo que sucede es que se hace una copia de lo que se manda. Los parámetros por referencia NO HACEN UNA COPIA, sino que se refieren a los objetos que fueron enviados como parámetro.

Parámetros por Valor void f(int x) { x = 5; } ... int y = 10; f(y); Al Terminar la función f: La Memoria void f(int x) { x = 5; } ... int y = 10; f(y); cout << y << endl; 5 x 10 x Al llamar a la función f, se hace una copia de y La función f, cambia el valor de x ¿Cuánto queda en la variable y? 10 y Al declarar y

Parámetros por Referencia La Memoria void f(int& x) { x = 5; } ... int y = 10; f(y); cout << y << endl; Cambia el valor de x x 10 y 5 Al llamar a f crea una Referencia x Al declarar y

Recursión La Recursión es cuando una función se llama a si misma. Viene de las definiciones matemáticas, que por naturaleza son recursivas. Existen dos partes de una función recursiva: El Caso Base El Caso Recursivo

Las Partes… El Caso Base El Caso Recursivo Por medio de este caso es que termina la función recursiva. Es indispensable para evitar la recursión infinita. El Caso Recursivo Es la parte de la función en la que se llama a la función otra vez.

Ejemplo de Hierro… La función factorial está definida matemáticamente:

Ahora, la función: long int factorial(unsigned int n) { if (n == 1 || n == 0) return 1; else return n * factorial(n-1); }

Prueba de Escritorio de factorial Vamos a suponer el llamado a: factorial(5) Segmento de Pila 1 == 0 || 1 == 1 ¡SI! 1 1 factorial(1) 2 == 0 || 2 == 1 NO 2 * factorial(1) 2 factorial(2) 3 == 0 || 3 == 1 NO 3 * factorial(2) 6 factorial(3) 4 == 0 || 4 == 1 NO 4 * factorial(3) factorial(4) 24 120 factorial(5) 5 == 0 || 5 == 1 NO 5 * factorial(4) Llamados a Funciones Anteriores

El Segmento de Pila Cuando se llama a una función recursiva, cada llamado que se haga irá entrando al segmento de pila. Si la recursión es demasiado “profunda”, corremos el riesgo de llenar la pila, y revalsarla: Este es un error de tiempo de corrido llamado Desbordamiento de Pila (Stack Overflow)

Tarea Elaborar de una manera iterativa la función factorial. Elaborar de una manera recursiva una función que calcule lo siguiente: Elaborar una función recursiva que calcule la siguiente función: