1 / 13

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/2011/

ratana
Download Presentation

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/2011/ 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. 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 //suvalor • El operador de referencia &. • Una variable xprecedida del operando & devuelve la dirección de memoria de la variable en lugar de su contenido. Es decir, una referencia a xpara ser usadapor un apuntador. XXXX int x = 6; x […] int * y = &x; y […] 6

  5. Apuntadores • El operador de dereferencia*: • 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

  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 punteroscomparten la mismadirección de memoria.

  7. Apuntadores • Ventajas: • 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. DATOS X() Y() X() Y() DATOS DATOS

  8. Apuntadores x 5 [1234] 10 • Ejercicio: 0: #include 1: intmain(){ 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 contenidode pi es ”*pi<<endl; 14: return 0; y 10 5 [4567] temp 5 [8901] pi 1234 [5432]

  9. Operaciones con apuntadores • 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 ?

  10. Funciones returnTypefunctionName(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 existenmientras lasfunciones se encuentren en ejecución Valores de retorno

  11. 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(intparam){ return ++param; } Variables locales! int*direccion(){ inttemp; return (&temp); } void obtenDireccion(){ int * direcPtr; direcPtr = direccion(); *direcPtr = 1234; } Es correctoesto?

  12. 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 esunapalabra reservadaque se puede usar en unafunción que no retorna nada int x = 0; incrementa(&x); Cout<<“x= “<<x<<endl; void incrementa(int*param){ ++(*param); } Evitacopias y permite la comunicación entre la funcion referida y quien lo llamó.

  13. 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?

More Related