Está en la página 1de 13

Programacin Cientfica

Dr. Romeo Snchez Nigenda.


E-mail: romeo.sanchez@gmail.com
http://yalma.fime.uanl.mx/~romeo/
Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar
Chacn
Horas de Tutora: 10am-11am Martes y Jueves

Website: http://yalma.fime.uanl.mx/~romeo/Prog/2011/
Sesiones: 48

* Slides aumentados con informacin de Dr. Roger
Ros, y Dr. Fernando Lpez


Temario:

1. Fundamentos de Programacin en C
2. Apuntadores y Funciones
3. Arreglos y Estructuras
4. Manejo de Memoria
5. Recursividad
6. Entrada y Salida de Archivos
7. Desarrollo y Depuracin de Proyecto de
Programacin

Total a calificar: 110 puntos!
40% Proyecto
30% Examen
Parcial
30% Examen Final
10% Participacin
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 Edicin. 1995.
5. L. Joyanes, I. Zahonero. Programacin en C - Metodologa, 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: 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 declaracin 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 direccin de
memoria de la variable en lugar de su contenido. Es decir, una referencia
a x para ser usada por un apuntador.






Apuntadores
int x = 6;

x []


int * y = &x;

y []

6
XXXX
Apuntadores
El operador de dereferencia *:
Ya que los apuntadores son referencias a otros valores, para acceder al
contenido de la direccin referenciada (al valor) se utiliza el operador *. Esta
operacin se conoce como dereferencia, y la nica restriccin es que el
apuntador tiene que tener una referencia vlida.



x
[1234]


y

Cul es el valor actual de
*y?

Y despus de la
modificacin:

*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 smbolo NULL, que es equivalente a la constante entera
0.

Asignacin de Punteros: La asignacin 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 direccin de memoria.
Apuntadores
Ventajas:
Permiten compartir informacin de una manera ms eficiente
Permiten el diseo y desarrollo de estructuras de datos complejas como
rboles y listas vinculadas

Compartiendo informacin:
Copia superficial: Una funcin le pasa un puntero a un valor especfico a otra,
pero el valor no se duplica. Ambas funciones pueden acceder a la referencia la
cual es compartida evitando duplicar grandes cantidades de informacin.




Copia a profundidad: Una copia completa de los datos se duplica y es utilizada
independientemente por cada funcin o referencia.



X()


Y()
DATOS
X()


Y()
DATOS
DATOS
Apuntadores
Ejercicio:

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 direccin de pi es pi<<endl;
13: cout<<T6: El contenido de pi es *pi<<endl;
14: return 0;
5
10
x
y
temp
pi
[1234]
[4567]
[8901]
[5432] 1234
5
10
5
Operaciones con apuntadores
Operaciones con apuntadores:
Incremento y decremento:



[96]

y = y - 1;

[100]


y = y + 1;

[104]


Cmo obtenemos el contenido
de la direccin en y + 1?


?
6
?
Funciones
returnType functionName(parameters){ body}

Ejemplos:

int cuadrado(int n){
return n*n;
}

int cubo(int n){
return cuadrado(n)*n;
}

Ejercicio: Escribe la funcin que te regrese la potencia de
un nmero x
n
Las variables locales existen mientras
las funciones se encuentren en ejecucin
Valores de
retorno
Funciones: Paso de
Parmetros
Por valor: Los valores que se pasan se copian a los
parmetros de la funcin cuando se invoca. Si el valor de un
parmetro se altera dentro de la funcin, 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
Parmetros
Por Referencia: Permite modificar el valor de la variable que
se pasa a la funcin, si se pasa la direccin de la misma.


int x = 0;
incrementa(&x);
Cout<<x= <<x<<endl;

void incrementa(int *param){
++(*param);
}
void es una palabra
reservada que se puede
usar en una funcin que
no retorna nada
Evita copias y permite la comunicacin entre la funcion
referida y quien lo llam.
Funciones: Paso de
parmetros
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?

También podría gustarte