Programación Científica

Slides:



Advertisements
Presentaciones similares
Introducción Programación.
Advertisements

Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
Estructura de Datos En C++
Ingeniería en Sistemas computacionales Fundamentos de programación
Clase 3: Punteros y Referencias
Programación I Teoría III
Programación, Algoritmos y Estructuras de Datos
Direcciones, Arreglos y Argumentos de Funciones
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
Sintaxis básica del lenguaje
Punteros Universidad Nacional Mayor de San Marcos

Informática II Prof. Dr. Gustavo Patiño MJ
Tema 1. Introducción a la programación (Lenguaje java).
Funcionamiento, programación
Programación (Estructura de Datos)
Estructuras Compuestas.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
M.C. Juan Carlos Olivares Rojas
Programación Orientada a Objetos en Java
Estructuras de Datos Punteros y algo más.
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.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Vectores en java.
Programación Científica
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

Estructura de Datos En C++
PUNTEROS Ó (apuntadores) EN LENGUAJE C
Inteligencia Artificial M.C. Juan Carlos Olivares Rojas.
Diseño de algoritmos “Punteros”
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Fundamentos de Programación
1 Chapter 15 Pointers, Dynamic Data, and Reference Types Dale/Weems/Headington.
Semana 5 Subprogramas..
Introducción a los punteros
Capítulo 5. Punteros y Cadenas de Caracteres
Estructura de Datos En C++
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Índice. Revisando conceptos acerca de la memoria.
Programación Científica
Estructura de Datos En C++
Estructura de Datos En C++
Unidad VI Registros (estructuras, uniones y enumeraciones)
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
PUNTEROS Ing Anghello Quintero.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Informática Ingeniería en Electrónica y Automática Industrial
Programación en C para electrónicos
Elementos básicos del lenguaje
PUNTEROS Y REFERENCIAS
Estructura de Datos Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel.
Estructura de Datos En C++
APUNTADORES.
Memoria dinámica con Estructuras. Memoria dinámica ¿Qué hacer cuando las variables declaradas son insuficientes o cuando no se conoce anticipadamente.
Los punteros Programación modular.
Punteros Recomendado: 1. Nivelación Funciones
Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Estructura de Datos En C++
Estructura de Datos En C++
MEMORIA DINÁMICA.
Informática (34159) Presentación del curso Grado en Matemáticas
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Transcripción de la presentación:

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/2011/ Sesiones: 48 * Slides aumentados con información de Dr. Roger Ríos, y Dr. Fernando López

Fundamentos de Programación en C Apuntadores y Funciones 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!

Material de apoyo: Software: 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

Apuntadores Apuntadores: Son variables que contienen direcciones de memoria. Se declaran como cualquier otra variable, declarando el tipo y nombre de la nueva variable seguido de un *. La declaración por sí sola no asigna una referencia al puntero. int * y; // Puntero a entero *y //Producirá un error si se trata de acceder a //su valor El operador de referencia &. Una variable x precedida del operando & devuelve la dirección de memoria de la variable en lugar de su contenido. Es decir, una referencia a x para ser usada por un apuntador. XXXX int x = 6; x […] int * y = &x; y […] 6

Apuntadores El operador de dereferencia *: x [1234] y 6 Ya que los apuntadores son referencias a otros valores, para acceder al contenido de la dirección referenciada (al valor) se utiliza el operador *. Esta operación se conoce como dereferencia, y la única restricción es que el apuntador tiene que tener una referencia válida. x [1234] y Cuál es el valor actual de *y? Y después de la modificación: *y = 8; y = ? x = ? 6

Apuntadores El puntero NULO o NULL Pointer: Se utiliza para representar a un puntero sin valor, es decir, un puntero sin ninguna referencia. C utiliza el símbolo NULL, que es equivalente a la constante entera 0. Asignación de Punteros: La asignación entre dos punteros hace que ambos tengan la misma referencia. int x = 6; int *y = &x; x y int *z = y; z 6 Ambos punteros comparten la misma dirección de memoria.

Apuntadores Ventajas: Compartiendo información: X() DATOS Y() DATOS Permiten compartir información de una manera más eficiente Permiten el diseño y desarrollo de estructuras de datos complejas como árboles y listas vinculadas Compartiendo información: Copia superficial: Una función le pasa un puntero a un valor específico a otra, pero el valor no se duplica. Ambas funciones pueden acceder a la referencia la cual es compartida evitando duplicar grandes cantidades de información. Copia a profundidad: Una copia completa de los datos se duplica y es utilizada independientemente por cada función o referencia. X() Y() DATOS N1 X() Y() DATOS

Apuntadores Ejercicio: x 5 [1234] 10 0: #include 1: int main(){ 2: int x=5, y=10, temp; 3: int *pi; 4: cout<<“T1: El valor de x es “<<x<<endl; 5: cout<<“T2: El valor de y es “<<y<<endl; 6: pi = &x; 7: temp = *pi; 8: *pi = y; 9: y = temp; 10: cout<<“T3: El valor de x es “<<x<<endl; 11: cout<<“T4: El valor de y es “<<y<<endl; 12: cout<<“T5: La dirección de pi es ”pi<<endl; 13: cout<<“T6: El contenido de pi es ”*pi<<endl; 14: return 0; y 10 [4567] 5 temp [8901] 5 pi [5432] 1234

Operaciones con apuntadores Incremento y decremento: [96] y = y - 1; [100] y = y + 1; [104] Cómo obtenemos el contenido de la dirección en y + 1? ? 6 N1 ?

Funciones returnType functionName(parameters){ body} Ejemplos: int cuadrado(int n){ return n*n; } int cubo(int n){ return cuadrado(n)*n; Ejercicio: Escribe la función que te regrese la potencia de un número xn Las variables locales existen mientras las funciones se encuentren en ejecución Valores de retorno

Funciones: Paso de Parámetros Por valor: Los valores que se pasan se copian a los parámetros de la función cuando se invoca. Si el valor de un parámetro se altera dentro de la función, el valor en el programa que lo llama no se modifica. Ejercicio: int x = 0; cout<<“x = “<<x<<endl; incrementa(x); Cout<<“x= “<<x<<endl; Int incrementa(int param){ return ++param; } Variables locales! int * direccion(){ int temp; return (&temp); } void obtenDireccion(){ int * direcPtr; direcPtr = direccion(); *direcPtr = 1234; } Es correcto esto?

Funciones: Paso de Parámetros Por Referencia: Permite modificar el valor de la variable que se pasa a la función, si se pasa la dirección de la misma. void es una palabra reservada que se puede usar en una función que no retorna nada int x = 0; incrementa(&x); Cout<<“x= “<<x<<endl; void incrementa(int *param){ ++(*param); } Evita copias y permite la comunicación entre la funcion referida y quien lo llamó.

Funciones: Paso de parámetros Por Referencia: Siempre se necesita colocar el operador &? int x = 0; incrementa(&x); Cout<<“x= “<<x<<endl; void incrementa2(int * param){ *param = *param + 2; } void incrementa(int *param){ ++(*param); incrementa2(param); Es correcto esto?