1 / 9

Programación Científica

Programación Científica. Dr. Romeo S ánchez Nigenda . E-mail: romeo.sanchez @ gmail.com http: //yalma.fime.uanl.mx/~ romeo / Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar Chacón Horas de Tutoría: 10am-11am Martes y Jueves Website: http://yalma.fime.uanl.mx/~ romeo/Prog/ Sesiones: 48

anise
Télécharger la présentation

Programación Científica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programación Científica Dr. Romeo SánchezNigenda. E-mail: romeo.sanchez@gmail.com http://yalma.fime.uanl.mx/~romeo/ Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar Chacón Horas de Tutoría: 10am-11am Martes y Jueves Website: http://yalma.fime.uanl.mx/~romeo/Prog/ Sesiones: 48 * Slides aumentados con información de Dr. Roger Ríos, y Dr. Fernando López

  2. 40% Proyecto 30% Examen Parcial 30% Examen Final 10% Participación Temario: • Fundamentos de Programación en C • Apuntadores y Funciones • Arreglos y Estructuras • Manejo de Memoria • Recursividad • Entrada y Salida de Archivos • Desarrollo y Depuración de Proyecto de Programación Total a calificar: 110 puntos!

  3. Material de apoyo: A. KELLY, I. POHL. A Book on C. Addison-Wesley, Reading, EUA, 1998. 2. B. KERNIGHAN, D. RITCHIE. The C Programming Language. Prentice Hall, Second Edition, 1988. 3. D. KNUTH. The Art of Computer Programming. Addison Wesley, 1998. 4. H. DEITEL, P. DEITEL. Como Programar en C/C++. Prentice Hall, Segunda Edición. 1995. 5. L. Joyanes, I. Zahonero. Programación en C - Metodología, Algoritmos y Estructura de Datos. McGraw Hill-Interamericana, 2006. 6. B. Stroustrup. The C++ Programming Language. Addison Wesley. Third Edition. 1997. Software: Compiladores GCC (GNU CompilerCollection) IDEs (IntegratedDevelopmentEnvironment): http://www.eclipse.org/downloads/ http://kdevelop.org/ http://www.bloodshed.net/devcpp.html

  4. Objetivo General: Entenderá los conceptos relacionados a la asignación de memoria dinámica y manejará las herramientas en C para llevarla a cabo. Asignación Dinámica de Memoria

  5. Preliminares • C/C++ da la flexibilidad al programador de asignar y liberarmemoria dinámica • La tarea de asignar memoria consiste en encontrar un block de memoria libre del tamaño requerido. • La tarea de liberar memoria regresa la memoria asignada para poder ser reutilizada cuando esta ya no es requerida. • El Heap es un área de memoria libre que puede ser utilizada para asignarse.

  6. Manejo de Memoria • C da acceso al manejo de memoria utilizando funciones de su librería <stdlib.h>: • void * malloc(size_t size) • Solicita un bloquecontiguo de memoria del tamaño requerido por la variable size, y retorna un puntero al bloque asignado, o NULL si no es posible. • void free (void* block) • Toma un puntero a un bloque de memoriapreviamenteasignadopormalloc() y retornaesebloque al Heap parasureutilización. • void* realloc (void* block, size_t size) • Toma un bloque de memoriaexistente, y trata de reasignarlo a un bloque con un nuevo tamaño (más grande o más pequeño). Retorna NULL si no es posible.

  7. Arreglos Dinámicos • Los arreglos representan posiciones contiguas de memoria. Podemos entonces asignarlos dinámicamente. intmain(){ //Forma usual reservamos un arreglo de 100 enteros int a[100]; //Dinamicamente asignamos un bloque de 100 posiciones int * p = (int *) malloc(sizeof(int) * 100); //Verificamos la asignacion assert(b!=NULL); a[88] = 5; b[88] = 5; //Las dos variables pueden ser usadasigual free(b); }

  8. Ventajas de usarmemoria dinámica • El tamaño de las estructuras de datos puede definirse en tiempo de ejecución • Los datos existirán hasta que explícitamente se libere usando free • En tiempo de ejecución se puede modificar el tamaño de memoria asignada. Por ejemplo, para incrementar nuestro arreglo en 100 b = realloc(b, sizeof(int) * 200);

  9. Desventajas de usarmemoria dinámica • Antes de usar los datos tienes que asignarle memoria • Tienes que liberar la memoria explícitamente • Los programas con asignación de memoria dinámica son difíciles de depurar porque al compilarlos puede no existir error, pero si la asignación o liberación no se hizo de manera correcta pueden sobreescribirse otras áreas de memoria, corrompiendo datos durante ejecución.

More Related