Programación Científica

9
Programación Científica Dr. Romeo Sánchez Nigenda. E-mail: [email protected] 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

description

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 - PowerPoint PPT Presentation

Transcript of Programación Científica

Page 1: Programación Científica

Programación Científica

Dr. Romeo Sánchez Nigenda.E-mail: [email protected]://yalma.fime.uanl.mx/~romeo/Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar ChacónHoras 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

Page 2: Programación Científica

Temario:

1. Fundamentos de Programación en C2. Apuntadores y Funciones3. Arreglos y Estructuras4. Manejo de Memoria5. Recursividad6. Entrada y Salida de Archivos7. Desarrollo y Depuración de Proyecto de

Programación

Total a calificar: 110 puntos!

40% Proyecto30% Examen Parcial30% Examen Final10% Participación

Page 3: Programación Científica

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 Compiler Collection)

IDEs (Integrated Development Environment):http://www.eclipse.org/downloads/http://kdevelop.org/ http://www.bloodshed.net/devcpp.html

Page 4: Programación Científica

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

Page 5: Programación Científica

Preliminares

C/C++ da la flexibilidad al programador de asignar y liberar memoria 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.

Page 6: Programación Científica

Manejo de MemoriaC da acceso al manejo de memoria

utilizando funciones de su librería <stdlib.h>:◦void * malloc(size_t size)

Solicita un bloque contiguo 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 memoria previamente

asignado por malloc() y retorna ese bloque al Heap para su reutilización.

◦void* realloc (void* block, size_t size) Toma un bloque de memoria existente, 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.

Page 7: Programación Científica

Arreglos DinámicosLos arreglos representan

posiciones contiguas de memoria. Podemos entonces asignarlos dinámicamente.

int main(){ //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 usadas igual free(b);}

Page 8: Programación Científica

Ventajas de usar memoria dinámicaEl 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);

Page 9: Programación Científica

Desventajas de usar memoria dinámicaAntes de usar los datos tienes que

asignarle memoriaTienes que liberar la memoria

explícitamenteLos 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.