Вы находитесь на странице: 1из 39

Fundamentos de Programacin

Qu es memoria Dinmica?

Qu son estructuras de datos Dinmicas?


Para qu sirven? Qu son tipos de datos parametrizados?

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
1

Consideraciones que nos permitirn aprovechar al mximo la clase


Reglas de juego

Evitar interrupciones por el


uso de telfonos celulares o salidas del saln

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

Consideraciones que nos permitirn aprovechar al mximo la sesin de capacitacin


Reglas de juego

Respeto por las opiniones


de los dems

Respeto reglamento de la
Universidad

Supletorios Copia Pilas con las Notas Finales


Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
3

Contenido

1 2 3 4 5

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

6 7

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
4

Objetivos del Curso

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

Habilidades que desarrollarn

Estimular la destreza para solucionar problemas mediante algoritmos.

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

Promover la reutilizacin de cdigo y el empleo de tipos de datos parametrizados..

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

Primer Parcial 25% Segundo Parcial 25%

Tercer Parcial 25%


Proyecto 15% Primera Entrega (Diseo) 5%

Entrega Final y Sustentacin 10%


Quices y Talleres 10%.

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

Repaso y Unificacin de Conceptos

Implemente la siguiente funcin

bool primo(int n) informa si n es primo o no


Haga un programa que reciba caracteres del teclado hasta que le digiten un signo de interrogacin ? Haga un programa que declare un arreglo de float de diez posiciones y lo inicialice con los nmeros 0,1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9 Declare una estructura que tenga como datos miembro el cdigo de un estudiante de tipo entero, el nombre de tipo cadena, el genero de tipo carcter, la fecha de nacimiento entero largo. Defina un arreglo de 100 posiciones de esa estructura.

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

Tipos de Datos - abstraccin

Entender como representar el problema del mundo real (Abstraccin)

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

Nombre : Arrempugencia pataquiba panqueba Fecha Nacimiento : 06/09/1990 Gnero: Femenino

Peso: 58 kilogramos Fuma: Si


Salario: $1.586.720.30

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

Peso: 58 kilogramos Fuma: Si


Salario: $1.586.720.30

entero

int
bool

falso/verdadero real float

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
15

Tipos de datos - tamaos


bits 8 8 Rango / Tipo de uso 0 <= X <= 255 Nmeros pequeos y juego caracteres del PC. -128 <= X <= 127 Nmeros muy pequeos y juego de caracteres ASCII [5] -32,768 <= X <= 32,767 Nmeros muy pequeos, control de bucles pequeos 0 <= X <= 65,535 Nmeros muy pequeos, control de bucles pequeos 0 <= X <= 4,294,967,295. Nmeros grandes -2,147,483,648 <= X <= 2,147,483,647 Nmeros pequeos, control de bucles 0 <= X <= 4,294,967,295 Distancias astronmicas

Tipo unsigned char char (signed)

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

Tipos de datos - tamaos


bits 32 32 Rango / Tipo de uso -2,147,483,648 <= X <= 2,147,483,647 Nmeros grandes 1.18e-38 <= |X| <= 3.40e38 Precisin cientfica ( 7dgitos) 2.23e-308 <= |X| <= 1.79e308 Precisin cientfica (15dgitos) 3.37e-4932 <= |X| <= 1.18e4932 Precisin cientfica (18dgitos)

long (int) float

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

Tipos de datos Conversiones - Implcitas

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

Tipos de datos Conversiones - casting

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>

d = (int)(r + b); d = (int)(n + a + r); O bien: d = int(r + b); d = int(n + a + r);

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
19

Tipos de datos Operaciones a nivel de bits

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

Tipos de datos Tabla ASCII

Cdigo 32 7 0 1 A a ? ; \

Carcter Espacio Beep 48 41 65 97 161 63 59 92


315 308 17 17
21

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

Tipos de datos Operaciones a nivel de bits


Decimal 0 1 2 3 4 5 6 7 8 9 Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Hexadecimal 0 1 2 3 4 5 6 7 8 9

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

Tipos de datos Operaciones a nivel de bits

Operador & | ^ ~ << >>

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

Tipos de datos Operaciones a nivel de bits

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

Tipos de datos Operaciones a nivel de bits

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

Tipos de datos Ejercicios en el laboratorio lunes 31/01/2011

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

Manejo de plantillas para definicin de funciones

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

Manejo de plantillas para definicin de funciones

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

Manejo de plantillas para definicin de funciones

Qu tal que pudiramos escribir una sola vez la funcin para cualquier tipo de datos?

Existir una forma de hacerlo en C++?


Plantillas de funciones o funciones genricas Ambas funciones maximo() tienen un cuerpo idntico, pero como los argumentos son diferentes, se diferencian en los prototipos.

int maximo(int a, int b ) { if (a<b) return b; return a; }

float maximo(float a, float b ) { if (a<b) return b; return a; }

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

Manejo de plantillas para definicin de funciones

Una funcin genrica define un conjunto de operaciones que se aplicarn a diferentes tipos de datos.

Una plantilla de funciones es como un patrn.


Una plantilla especifica un conjunto infinito de funciones que pueden ser aplicadas a distintos tipos de datos. Una plantilla describe las propiedades genricas de una funcin. Las plantillas de funciones o funciones genricas tienen la siguiente sintaxis: template <lista de tipos genricos> declaracin de funcin

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
31

Manejo de plantillas para definicin de funciones -

template <class TIPO1> TIPO1 funcion ( TIPO1 a ) { // cuerpo de la funcin. }

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

Manejo de plantillas para definicin de funciones A tener en cuenta

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. }

ERROR No hay ningn parmetro en la lista de tipo TIPO

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
33

Manejo de plantillas para definicin de funciones Ejemplo

Encontrar el mximo de un conjunto de nmeros de cualquier tipo en un vector


template <class TIPOg> TIPOg max_vector( TIPOg v[ ] , int dim ) { TIPOg aux; aux = v[0]; for (int i =0; i<dim; i++) { if ( v[i]>aux ) aux = v[i]; } return aux; }

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

m = max_vector(c, 4); // TIPOg char


}

Fundamentos de Programacin 2011 - Clases 1 y 2 Luis Carlos Moreno GESTIN DEL CAMBIO TI

315 308 17 17
34

Manejo de plantillas para definicin de funciones Sobrecarga

Las plantillas de funciones se pueden sobrecargar

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

Creacin de libreras Archivos h

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

Creacin de libreras Ejercicios para el taller - Laboratorio

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

Вам также может понравиться