Escolar Documentos
Profissional Documentos
Cultura Documentos
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, 3:30pm-4:30pm Mircoles, 2:00pm-4:00pm Viernes. Website: http://yalma.fime.uanl.mx/~romeo/ED/2011/ Sesiones: 48 * Slides aumentados con informacin de Dr. Roger Ros, y Dr. Fernando Lpez
4.
5. 6. 7.
8.
9.
Conceptos Bsicos La Pila 40% Tareas Colas 30% Examen Recursin Parcial Listas 30% Examen Final 10% Participacin rboles Ordenamiento Bsqueda Administracin de Almacenamiento
Material de apoyo:
Estructura de Datos con C y C++. Yedidyah Langsam, Moshe J. Augenstein, Aaron M. Tenenbaum, Brooklyn College Segunda Edicin, Prentice-Hall. Algorithms. Third Edition. Parts 1-4, Fundamentals Data Structures Sorting Searching Robert Sedgewick. Estructura de Datos. Romn Martnez, Elda Quiroga. Thomson Learning.
Software:
Cualquier libro de Estructura de Datos! Compiladores GCC (GNU Compiler Collection) IDEs (Integrated Development Environment): http://www.eclipse.org/downloads/ http://kdevelop.org/ http://www.bloodshed.net/devcpp.html
Repaso C/C++
C/C++ tiene pocos tipos bsicos de datos: enteros (int y derivados), nmeros de punto flotante (float, double), caracteres (chars). El tipo de datos de una variable especifica dos cosas: La cantidad de almacenamiento a reservar La forma de interpretar los datos representados por las cadenas de bits Ya que usamos bits para representarlos, los rangos de los valores en enteros, y la precisin en punto flotante depende de la implementacin en el hardware de la mquina. Cuando ejecutamos una operacin con algn tipo de dato debemos asegurarnos que los operandos y los resultados son del tipo correcto. Usamos Casting para convertir explcitamente entre tipos.
double
64
Variable: Es el medio por el cual se hace referencia a una localidad de memoria en la que se almacena informacin (datos).
Declaracin: type var1; type var1_new , var2, var333; type var1=value, var2_, var3_01=value; Ejemplos: char _b, c=c; double y, x, z_2 = 78.0098;
Prdida de datos (data loss): double x = 3; //OK (int -> double), implcito int n = 3.7; //Warning: compilador convierte a enteros, pero se pierden datos fraccionales Conversin forzada: Casting. (static, dynamic, const, reinterpret)_cast<type> int n = static_cast<int> (3.7); //OK
Expresin (expr):
constante | variable expr op expr Op expr
Aritmticas
Operadores: +, -, *, /, %
Ejemplos
x+ 3 x+y+z (x + 7) / 3 * y 14 % 3 - (x * 3) % 4 Y = ++x Y = x++ Especiales (op =): x +=4, y/=x; t*=5;
Expresiones Lgicas
Operadores: !, ||, && C usa enteros (0, 1) C++ usa bool (false, true,) Ejemplos:
! 2 \\ value es 0 ! (x == (x +1)) \\ value es 1 (x == 0) || (x !=0) \\ siempre es 1 (x == x) && (1!=2) \\ value es 1 1 || (x == y) \\ (x == y) no se evala
De Seleccin
Expr1 ? Expr2 : Expr3 El resultado es expr2 si expr1 es true, o Expr3 si expr1 es falso Ejemplos:
0 ? Y : z //value es z 1? 10 : 13 //value es 10 A ? B : 9 //value es B if A is true, 9 de otra manera
Simples
Null Expresin (expr) If While Do For Switch
Compuestas { }
If, if-else
If (expr) statement1 If (expr) statement1 else statement2 Ejemplos:
If(a==1) x +=4; If (y!=x+5) {
x+=1;
} else {
y -=1;
while
while (expr) statement(s) Ejemplo:
int i=1, N; cout<<Dame N: ; cin >> N; while (i<N){ cout << i: <<i++; }
Cul es el mnimo nmero de iteraciones para while? Ejercicio: Imprime los nmeros de N a 1.
Do
for
for(expr1;expr2;expr3) statement(s)
Las tres expresiones son opcionales Expr1 es el inicializador, evaluada solamente una vez Expr2 es la condicin, evaluada en cada iteracin que rompe el ciclo Expr3 se evala despus de que el cuerpo del for se ejecuta
Ejemplo:
For(i = 1; i<N; i++){ cout << i: ; } Cul es el mnimo nmero de iteraciones?
break: Causa la terminacin del ciclo que lo contenga Ejemplos: int i=1; int limite; cin>>limite; while(true){ if(i==limite) break; i++; }
Continue: avanza inmediatamente a la siguiente iteracin del ciclo Ejemplo: for(i=0;i<100<i++){ if(i%2 ==1) continue; cout<<Valor de i: <<I; }
Switch (expr) { case constant1: statement (s); break; default: statement (s); } Ejemplo:
Int opcion;
cin>>opcion; switch (opcion){ case 1: cout<<Opcion 1; break; case 2: cout<<Opcion 2; break; default: cout<<Oprimiste una opcin no vlida. }
Repaso C/C++
6
[1234]
Es posible declarar una apuntador, y cuyos valores sean intvariable *y = &x; direcciones de memoria.
[1234]
Repaso C/C++
x 6 y [1234]
Repaso C/C++
? y = y - 1;
[96]
6
y = y + 1; ?
[100]
[104]
Repaso C/C++
Ejercicio:
[1234]
x 10 5 y [4567] 5 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 direccin de pi es pi<<endl; 13: cout<<T6: El contenido de pi es *pi<<endl; 14: return 0;
temp
[8901] 5 pi [5432] 1234