Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Cie Pntifica
Programacion Cie Pntifica
Temario:
1.
2.
3.
4.
5.
6.
7.
40% Proyecto
30% Examen
Parcial
30% Examen
Final
10% Participacin
Fundamentos de Programacin en C
Apuntadores y Funciones
Arreglos y Estructuras
Manejo de Memoria
Recursividad
Entrada y Salida de Archivos
Desarrollo y Depuracin de Proyecto de
Programacin
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:
Apuntadores
// Puntero a entero
XXXX
//Producir un error si se trata de acceder a
//su valor
6
[]
int * y = &x;
y
[]
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]
6
y
Apuntadores
y
int *z = y;
z
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.
X()
DATOS
Y()
X()
DATOS
DATOS
Apuntadores
Ejercicio:
x
[1234]
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;
5
10
y
[4567]
5
10
temp
[8901]
5
pi
[5432]
1234
[96]
y = y - 1;
6
[100]
y = y + 1;
?
[104]
Cmo obtenemos el
contenido de la direccin en
y + 1?
Funciones
Valores de
retorno
Variables locales!
Ejercicio:
int * direccion(){
int temp;
return
(&temp);
}
Es correcto esto?
int x = 0;
cout<<x =
<<x<<endl;
incrementa(x);
Cout<<x=
<<x<<endl;
Int incrementa(int
param){
return ++param;
}
void obtenDireccion(){
int * direcPtr;
direcPtr = direccion();
*direcPtr = 1234;
}
int x = 0;
incrementa(&x);
Cout<<x= <<x<<endl;
void incrementa(int *param){
++(*param);
}
Es correcto esto?