Академический Документы
Профессиональный Документы
Культура Документы
Qu es memoria Dinmica?
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
1
Intervenciones breves
Ser directos en las apreciaciones Participar activamente No hay protesta sin propuesta
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
2
Respeto reglamento de la
Universidad
315 308 17 17
3
Contenido
1 2 3 4 5
Evaluacin
Repaso y Unificacin de Conceptos Tipos de datos, tamaos y conversiones, operaciones a nivel de bits Manejo de plantillas para definicin de funciones Creacin de Libreras
6 7
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
4
El objetivo principal es lograr que el estudiante desarrolle habilidad para definir estructuras estticas y dinmicas de agrupamiento de datos, como son los datos de tipo struct, las pilas, las colas y las listas.
Resolver problemas del mundo real a travs de una adecuada seleccin y utilizacin de las estructuras de datos con base en el anlisis del problema y el diseo de la solucin.
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
5
Contenido
1 2
Objetivos del curso Habilidades que contribuye a desarrollar Evaluacin Repaso y Unificacin de Conceptos Tipos de datos, tamaos y conversiones, operaciones a nivel de bits Manejo de plantillas para definicin de funciones Creacin de Libreras
3
4 5 6 7
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
6
Afianzar los conocimientos de programacin bsica. Definir varias alternativas para solucionar un problema mediante estructuras de datos y seleccionar la alternativa ms viable.
Desarrollar la habilidad para implementar algoritmos diseados en un lenguaje programacin.. los de
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
7
Contenido
Objetivos del curso Habilidades que contribuye a desarrollar Evaluacin Repaso y Unificacin de Conceptos Tipos de datos, tamaos y conversiones, operaciones a nivel de bits Manejo de plantillas para definicin de funciones Creacin de Libreras
2
3 4
5
6 7
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
8
Evaluacin
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
9
Contenido
Objetivos del curso Habilidades que contribuye a desarrollar Evaluacin Repaso y Unificacin de Conceptos Tipos de datos, tamaos y conversiones, operaciones a nivel de bits Manejo de plantillas para definicin de funciones Creacin de Libreras
2
3 4
5
6 7
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
10
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
11
Contenido
Objetivos del curso Habilidades que contribuye a desarrollar Evaluacin Repaso y Unificacin de Conceptos Tipos de datos, tamaos y conversiones, operaciones a nivel de bits Manejo de plantillas para definicin de funciones Creacin de Libreras
2
3 4
5
6 7
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
12
Primera Abstraccin Nombre, Edad, Gnero Abstraccin Segunda Abstraccin Qu dijo? Tercera Abstraccin Color de los ojos, color del cabelllo?
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
13
Tipos de datos
Cuando hacemos un programa es clave declarar las variables en la que vamos a almacenar valores que representan caractersticas de los objetos del mundo real que representamos: Ejemplos
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
14
Tipos de datos
Cuando hacemos un programa es clave declarar las variables en la que vamos a almacenar valores que representan caractersticas de los objetos del mundo real que representamos: Ejemplos
Nombre : Arrempugencia pataquiba panqueba Fecha Nacimiento : 06/09/1990 Gnero: Femenino caracter entero char long
cadena
string
entero
int
bool
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
15
short (signed)
16
unsigned short
16
unsigned (int)
32
int (signed)
32
unsigned long
32
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
16
5
Tipo
double
64
long double
80
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
17
En estos casos, cuando los operandos de cada operacin binaria asociados a un operador son de distinto tipo, el compilador los convierte a un tipo comn. Existen reglas que rigen estas conversiones, y aunque pueden cambiar ligeramente de un compilador a otro, en general sern ms o menos as: (Normalmente al ms largo) Si un operando es de tipo long double, el otro se convertir a long double. Si un operando es de tipo double, el otro se convertir a double. Si un operando es de tipo float, el otro se convertir a float. Si un operando es de tipo unsigned long, el otro se convertir a unsigned long. Si un operando es de tipo long, el otro se convertir a long. Si un operando es de tipo unsigned int, el otro se convertir a unsigned int.
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
18
En general, el uso de casting es obligatorio cuando se hacen asignaciones, o cuando se pasan argumentos a funciones con prdida de precisin.
En el caso de los argumentos pasados a funciones es tambin muy recomendable aunque no haya prdida de precisin. Eliminar los avisos del compilador demostrar que sabemos lo que hacemos con nuestras variables, an cuando estemos haciendo conversiones de tipo extraas.
Un casting tiene una de las siguiente sintaxis: (<nombre de tipo>) <expresin> <nombre de tipo> <expresin>
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
19
Qu es un bit? Abreviatura para binary digit. Dgito Binario, es un dgito del sistema de numeracin binario El bit es la unidad mnima de informacin empleada en informtica, en cualquier dispositivo digital, o en la teora de la informacin. Con l, podemos representar dos valores cualesquiera, 0 1, verdadero falso, abierto cerrado, blanco negro, norte sur, masculino femenino. En electrnica digital el 1 corresponde a una lectura de 5 milivoltios y un cero a una lectura de 2,5 milivoltios En los computadores de hoy un byte corresponde a la unin de 8 bits. En un byte se pueden representar 28 = (256 valores) (0 a 255). Tabla ACII de Caracteres. 1 0 1 1 1 0 1 1
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
20
Cdigo 32 7 0 1 A a ? ; \
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
10
11 12 13 14 15 16 17 18
1010
1011 1100 1101 1110 1111 10000 10001 10010
A
B C D E F 10 11 12
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
22
Accin Y O O exclusiva (XOR) Complemento a uno Negacin Desplazamiento a la izquierda Desplazamiento a la derecha
No se debe confundir el operador & con el operador &&: & es el operador Y sobre bits, && es el operador lgico Y. Similarmente los operadores | y ||.
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
23
Operador 1 E1 0 1 0 1
Operador 2 E2 0 0 1 1
AND E1 & E2 0 0 0 1
OR exclusivo E1 ^ E2 0 1 1 0
OR inclusivo E1 | E2 0 1 1 1
NOT ~E1 1 0 1 0
int a, b, c; a = 0xd3; // = 11010011 b = 0xf5; // = 11110101 c = 0x1e; // = 00011110 d = a | b; // 11010011 | 11110101 = 11110111 -> 0xf7 d = b & c; // 11110101 & 00011110 = 00010100 -> 0x14 d = a ^ c; // 11010011 ^ 00011110 = 11001101 -> 0xcd d = ~c; // ~00011110 = 11100001 -> 0xe1 d = c << 3 // 00011110 << 3 = 11110000 -> 0xf0 d = a >> 4 // 11010011 >> 4 = 00001101 -> 0x0d
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
24
Una aplicacin que tienen los operadores de desplazamiento de bits es para realizar multiplicaciones y divisiones rpidas con enteros. Como se ve en la siguiente tabla, donde un desplazamiento a la izquierda es multiplicar por 2 y uno a la derecha dividir por 2.
int x
x = 0x07; x << 1; x << 3;
Ejecucin
00000111 00001110 01110000
Valor de x
7 14 112
x << 2;
x >> 1; x >> 2;
11000000
01100000 00011000
192
96 24
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
25
Declarar dos variables int x =0x8a,y = 0x30 Realizar todas las operaciones binarias entre x e y presentar el resultado Realizar todas las operaciones uniarias con cada variable y presentar el resultado
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
26
Contenido
Objetivos del curso Habilidades que contribuye a desarrollar Evaluacin Repaso y Unificacin de Conceptos Tipos de datos, tamaos y conversiones, operaciones a nivel de bits Manejo de plantillas para definicin de funciones Creacin de Libreras
2
3 4
5
6 7
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
27
A veces cuando escribimos una funcin pensamos que resolvimos el problema para cualquier situacin , Por ejemplo int maximo(int a, int b ) { if (a<b) return b; return a; } Qu pasa si nos pide que tambin funcione con variables tipo float float maximo(float a, float b ) { if (a<b) return b; return a; } Escribimos otra funcin con el mismo nombre pero que retorne float y reciba como parmetros variables. float Esto se llama sobrecarga de funciones. C++ genera un nombre nico por cada funcin con el nombre de la funcin y los tipos de parmetros, y las usa de acuerdo con la sintaxis de la llamada.
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
28
Y si ahora nos dicen que tambin se va a utilizar con tipo double? double maximo(doble a, double b ) { if (a<b) return b; return a; } Pero y si nos piden otro tipo de dato? Podemos escribir la misma funcin para cada tipo de dato pero es poco prctico, requiere ms tiempo y se pueden generar errores al hacer mantenimiento. Al Modificar una de las funciones se deben arreglar todas Para resolver este problema C++ tiene la funcionalidad de plantillas de funciones o funciones genricas
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
29
Qu tal que pudiramos escribir una sola vez la funcin para cualquier tipo de datos?
Sera muy interesante tener una funcin genrica capaz de calcular el mximo de dos valores de cualquier tipo.
template <class UNTIPO> UNTIPO maximo ( UNTIPO a, UNTIPO b ) { Plantilla con la que se if (a<b) implementa la funcin mximo return b; para cualquier tipo return a; }
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
30
Una funcin genrica define un conjunto de operaciones que se aplicarn a diferentes tipos de datos.
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
31
template <class TIPO1> TIPO1 funcion ( TIPO1 a, TIPO1 b ) { // cuerpo de la funcin. } template <class TIPO1, class TIPO2 > TIPO2 funcion ( TIPO1 a, TIPO2 b) { // cuerpo de la funcin. }
template <class TIPO1> float funcion ( int cont, TIPO1 a ) { // cuerpo de la funcin. }
La palabra reservada template indica que se va a declarar una plantilla. Las plantillas se declaran normalmente en un archivo de cabecera. La lista de tipos contiene los tipos genricos separados por comas. Aunque la notacin anteponga class al tipo, se refiere a cualquier tipo, sea clase o no (enteros, reales, etc. ).
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
32
Una plantilla de funcin o funcin genrica define un conjunto ilimitado de funciones sobrecargadas.
Las plantillas no generan cdigo directamente, sino que la generacin de cdigo se realiza en el momento en que se necesita, con el tipo correspondiente. Las plantillas siguen las mismas normas que la sobrecarga, solo se mira la lista de parmetros, no el tipo de datos de retorno template <class TIPO> TIPO funcion ( int a ) { // cuerpo de la funcin. }
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
33
void main() { int w[5]={1,7,3,4,5}; float k[4]={4.6,7.8,3.2,4.0}; char c[]={f , e , t , h}; int a; float b; char m; a = max_vector(w, 5); // TIPOg int b = max_vector(k, 4); // TIPOg float
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
34
Por ejemplo, para la funcin maximo(), seran vlidas las siguientes plantillas sobrecargadas: template <class T> T maximo ( T a, T b ); template <class T> T maximo ( T a, T b, T c); template <class T> T maximo (T v[ ], int dim);
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
35
Contenido
Objetivos del curso Habilidades que contribuye a desarrollar Evaluacin Repaso y Unificacin de Conceptos Tipos de datos, tamaos y conversiones, operaciones a nivel de bits Manejo de plantillas para definicin de funciones Creacin de Libreras
2
3 4
5
6 7
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
36
En C++ se utilizan los archivos de encabezado denominados para guardar funciones que nos ayudan a resolver ciertas tareas por ejemplo:
math.h, librera de funciones matemticas string.h, librera de funciones para manipular cadenas Entonces cuando hacemos un sistema y tenemos grupos de funciones de utilidad que nos ayudan a resolver problemas en particular, las guardamos en archivos .h para que queden disponibles para que cualquier programador las use. Cmo se hace ? 1. Cree un archivo en C++ con las funciones de utilidad para el sistema que est construyendo, por ejemplo maximo.h 2. Cree el archivo que contendr el main() y agregue esta lnea , como ltimo include en este archivo. #include maximo.h 3. Invoque las funciones en el main de acuerdo con los tipos de datos de retorno y de los parmetros definidos en el archivo.h
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
37
Cree las funciones maximo como plantilla para cualquier tipo de datos y para un arreglo
Gurdelas en un archivo .llamado maximo .h Cree un archivo denominado maximo.cpp Incluya el archivo maximo.h en maximo.cpp agregando la lnea #include maximo.h En el main invoque las funciones maximo con int, float , doble, y un arreglo de enteros y otro de float
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
38
PREGUNTAS
Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI
315 308 17 17
39