INSTITUTO TECNOLOGICO DE VERACRUZ INTRODUCCION A LA PROGRAMACION
- Slides: 157
INSTITUTO TECNOLOGICO DE VERACRUZ INTRODUCCION A LA PROGRAMACION © Dr. José Antonio Garrido Natarén 2016 1/158
PROGRAMACION C es un lenguaje de programación originalmente desarrollado por Dennis M. Ritchie entre 1969 y 1972 en los Laboratorios Bell. C fue un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. 2/158
PROGRAMACION C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup en la Universidad A&M de Texas. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. 3/158
PROGRAMACION El Lenguaje C LAS VARIABLES LOS APUNTADORES Y LAS REFERENCIAS LOS ARREGLOS DE DATOS LAS SENTENCIAS LAS CLASES LOS OPERADORES LAS FUNCIONES EL C++ DE MFC LAS CLASES DE DATOS MFC LAS CLASES DE COLECCIONES 4/158
PROGRAMACION El programa C++ mas pequeño int main() { return 0; } 5/158
PROGRAMACION LAS VARIABLES 6/158
PROGRAMACION Tamaño de tipos básicos 7/158
PROGRAMACION Tipos fundamentales Nombre Tamaño Comentario int 4 bytes Opción predeterminada para los valores enteros. double 8 bytes Opción predeterminada para los valores de punto flotante. bool 1 byte Representa valores que pueden ser true o false. char 1 byte Se utiliza en los caracteres ASCII de cadenas de estilo C antiguas u objetos std: : string que nunca tendrán que convertirse a UNICODE. wchar_t 2 bytes Representa valores de caracteres “anchos” que se pueden codificar en formato UNICODE (UTF-16 en Windows; puede diferir en otros sistemas operativos). Es el tipo de carácter que se utiliza en las cadenas de tipo std: : wstring. unsigned char 1 byte C++ no tiene un tipo byte integrado. Utilice un carácter sin signo para representar un valor byte. unsigned int 4 bytes Opción predeterminada para los marcadores de bits. long 8 bytes Representa valores enteros muy grandes. 8/158
PROGRAMACION Tipos de datos Caracteres: char, CHAR ´a´ Enteros: short, int, long 128, 4726, 123 467 Punto flotante: float, double 3. 1415, 989 765 354. 987 Booleanos: bool, BOOL true, false, TRUE, FALSE Vacío: void - 9/158
PROGRAMACION Los nombres • Un nombre o identificador se compone de una secuencia de letras y números. • El primer carácter debe de ser una letra. • El carácter ´_´ se considera una letra. • No importa el numero de caracteres. • El carácter ´$´ y las palabras reservadas no pueden ser nombres. • Las mayúsculas son diferentes de las minúsculas • El carácter espacio ´ ´ no puede ser parte de un nombre. 10/158
PROGRAMACION La notación húngara (MS) La notación húngara es un sistema usado normalmente para crear los nombres de variables. Su creador, Charles Simonyi, desarrollador de programas MS nació en Hungría. La notación húngara consiste en prefijos en minúsculas que se añaden a los nombres de las variables y que indican su tipo. El resto del nombre indica, lo más claramente posible, la función que realiza la variable. 11/158
La notación húngara (MS) Prefijo Significado b c dw f h l lp lpfn lpsz n p pt Booleano (int) Carácter (un byte) Entero largo de 32 bits sin signo (double word) Flags empaquetados en un entero de 16 bits Manipulador de 16 bits (handle) Entero largo de 32 bits Puntero a entero largo de 32 bits Puntero largo a una función que devuelve un entero Puntero largo a una cadena terminada con cero Entero de 16 bits Puntero a entero de 16 bits Coordenadas (x, y) empaquetadas en un entero de 32 bits rgb Valor de color RGB empaquetado en un entero de 32 bits sz w Cadena terminada en cero Entero corto de 16 bits sin signo (word) 12/158
PROGRAMACION Las declaraciones • Para que un nombre pueda ser utilizado debe de ser declarado antes en el archivo *. h. • El tipo del nombre debe de ser precisado para informar al compilador del tipo. *. h int n. Value, n. Age; Char s. Name; 13/158
PROGRAMACION El valor NULL • El valor NULL, expresa un valor nulo • NULL no es un tipo (para eso esta void) void* puntero = NULL; int entero = NULL; bool boleana = NULL; char caracter = NULL; 14/158
PROGRAMACION Los comentarios tienen como propósito el de guiar en la comprensión del programa. Los comentarios son de 2 tipos: • Multílinea: Empiezan con ´/*´ y termina con ´*/´ /* tantos comentarios como se quiera explicar el código aquí escrito por mi */ • Monolínea: Empieza son ´//´ y se acaba con la línea // En esta línea se quiso decir esto 15/158
PROGRAMACION Las Estructuras (I) Una estructura es un conjunto de diferentes tipos de datos asociados a un tipo. struct Alumno { Char c. Name[10] = “miguel”; // nombre int n. Edad; // edad int n. Year; // año de nacimiento int n. Control; // numero de control }; 16/158
PROGRAMACION Las Estructuras (III) • Las estructuras son tipos que reagrupan otros tipos bajo un nuevo tipo. • Las estructuras están definidas en el lenguaje ´C´ • Existen 3 tipos de estructuras en C++ • 1) struct. Permite agrupar variables de tipos iguales o diferentes en un solo registro • 2) union. Permite crear un nuevo tipo con datos compartidos • 3) class. Permite asociar variables y funciones 17/158
PROGRAMACION Las Estructuras (II) Una estructura es un tipo de variable. Alumno Mi. Alumno, Otro. Alumno; // declaracion Mi. Alumno. c. Name = “miguel”; // nombre Mi. Alumno. n. Edad = 23; // edad Mi. Alumno. n. Control = 09782345 // numero de control Otro. Alumno = Mi. Alumno; 18/158
PROGRAMACION Las Estructuras (III) Un miembro de una estructura se identifica por la variable que representa la estructura seguido de un punto “. ” seguido del nombre de la variable Alumno Mi. Alumno; // declaracion Mi. Alumno. c. Name = “miguel”; // nombre Mi. Alumno. n. Edad = 23; // edad Mi. Alumno. n. Control = 09782345 // numero de control 19/158
PROGRAMACION Las Estructuras (III) Sintaxis general de struct [ <nombre tipo de estructura > ] { [ <tipo> <nombre-variable[, nombre-variable, . . . ]> ] ; . . . } [ <variables de estructura> ] ; *. h struct. Student { int n. Age; char[50] s. Name; } STUDENT, *LPSTUDENT; 20/158
PROGRAMACION Las Estructuras (III) Miembros de una struct el operador de acceso ´. ´permite acceder a un miembro a partir del nombre de la variable. *. cpp struct. Student Estudiante. Mecatronica; int n. Edad = Estudiante. Mecatronica. n. Age; char * p. Name = Estudiante. Mecatronica. s. Name; 21/158
PROGRAMACION Las Estructuras (III) Estructuras anidadas Una estructura puede contener otra estructura. *. h struct. Resident{ struct. Student; char[50] s. Company; } RESIDENT, *LPRESIDENT; *. cpp struct. Residente. Mecatronica; char * p. Name = Residente. Mecatronica. Student. s. Name; 22/158
PROGRAMACION Las Estructuras (III) union • Una union es un tipo de estructura, con miembros que comparten el mismo espacio de almacenamiento. • Una variable de tipo union puede contener (en momentos diferentes) objetos de diferentes tipos y tamaños. • Las uniones proporcionan una forma de manipular diferentes clases de datos dentro de una sola área de almacenamiento. • En cualquier momento una union puede contener un máximo de un objeto debido a que los miembros de una union comparten el espacio de almacenamiento 23/158
PROGRAMACION Las Estructuras (III) Sintaxis de union Una union se declara con el mismo formato de una struct. Primero declaramos el tipo union y luego declaramos variables de ese tipo. *. h union. Valores { int ival; float fval; str sval; } VALORES, * LPVALORES; 24/158
PROGRAMACION Las Estructuras (III) Los datos de una union • La variable será lo suficientemente grande como para mantener el mayor de los tres tipos. • Valores de cualquiera de esos tipos pueden ser asignados y después empleado en expresiones mientras que el uso sea consistente • El tipo recuperado será el tipo que se almacenó mas recientemente. • El resultado de referenciar un miembro de union diferente al último que se guardó es indefinido 25/158
PROGRAMACION Las Estructuras (III) El operador sizeof devuelve el tamaño de una estructura *. h struct. Resident { struct. Student; char[50] s. Company; } RESIDENT, *LPRESIDENT; *. cpp Int n. Size = sizeof(RESIDENT); // n. Size vale 102 26/158
PROGRAMACION Las enumeraciones Un tipo de datos enumerado es una manera de asociar nombres a números. La palabra reservada enum (de C) enumera automáticamente cualquier lista de identificadores que se le pase, asignándoles valores de 0, 1, 2, etc. enum OPERATION {OPNONE=1, OP_CIRCLE, OP_SEGMENT, OP_RECT, OP_ELLIPSE, OP_LINE}; 27/158
PROGRAMACION Las variables (I) Una variable representa un nombre que almacena un valor que puede cambiar. Una variable tiene necesariamente un tipo: char, int, short, bool, float, etc. Ejemplos: char c. Inicial; short s. Edad; int n. Year; float f. Pi; 28/158
PROGRAMACION Las variables (II) • El nombre de una variable puede estar compuesto de letras, números y cualquier otro carácter que no sea un operador ni espacio. • El nombre de una variable es sensible a mayúsculas Una variable guarda un valor: Ejemplos: c. Inicial = ´a´; n. Edad = 33; n. Year = 2016; f. Pi = 3. 14159; 29/158
PROGRAMACION Las variables (III) Una variable debe de ser declarada antes de que pueda ser utilizada, ya sea en el archivo. h o en el. cpp. Siempre antes de ser utilizada. *. h union. Valores { int ival; float fval; str sval; } VALORES, * LPVALORES; *. cpp VALORES Mi. Valor ; Mi. Valor. i. Val = 12; 30/158
PROGRAMACION Las variables (III) Se pueden inicializar muchas variables en una sola línea separadas por ´, ´ *. cpp VALORES Mi. Valor , Tu. Valor; Las variables de tipo conocidas se inicializan a ´ 0´, a ´NULO´ o a ´VACIO´ *. cpp VALORES Mi. Valor ; // Mi. Valor. i. Val = 0; // Mi. Valor. f. Val = 0; // Mi. Valor. s. Val = ´´; 31/158
PROGRAMACION Las variables (III) Se pueden inicializar una variable con su constructor natural. *. cpp int n. Val(12), f. Val(3. 1415); char * pn. Name(NULL); 32/158
PROGRAMACION Las variables (III) El ámbito de una variable. El ámbito, alcance o scope de una variable es la parte del programa donde la variable es accesible. En C++ existen tres tipos de ámbitos: • Global o de programa • Local o de función. • De bloque. 33/158
PROGRAMACION Las variables (III) Las variables globales • Son variables declaradas fuera de cualquier función, normalmente al comienzo del programa. • Las variables globales son accesibles desde su declaración hasta el final del programa por todas las funciones que lo forman. *. cpp // Ejemplo de variable global int n. X = 1; // se declara x como global. int main() { …. . 34/158
PROGRAMACION Las variables (III) Las variables locales o de función • Las variables locales son las que se declaran dentro de una función. • Son accesibles desde el punto donde se declaran hasta el final del bloque donde se han declarado. • Los límites de los bloques están definidos por las llaves de apertura y cierre { }. • Si el bloque donde se ha declarado la variable local contiene a su vez otros bloques, también son accesibles dentro de ellos. • Las variables locales se destruyen cuando se sale del bloque donde han sido declaradas. • Los parámetros formales (los que aparecen en la cabecera de una función) se consideran variables locales de la función. 35/158
PROGRAMACION Las variables (III) Las variables de bloque • Una función puede contener bloques definidos dentro de otros. • Los límites de los bloques están definidos por las llaves de apertura y cierre { }. • El ámbito de una variable declarada dentro de un bloque comienza en el punto en que se declara hasta el final del bloque donde se ha declarado (llave final del bloque). • Una variable de bloque se destruye cuando acaba la ejecución del bloque donde se ha declarado. 36/158
PROGRAMACION Las variables (III) Ocultamiento de variables • Una variable global y otra local y/o de bloque pueden tener el mismo nombre. • la variable global queda oculta en el ámbito de accesibilidad de la local del mismo nombre. • La variable local queda oculta en el ámbito de accesibilidad de la de bloque. • La variable de bloque queda oculta si en un bloque anidado se declara otra variable con el mismo nombre => Si una variable es definida mas de una vez en un mismo ámbito, el compilador marca un error. 37/158
PROGRAMACION Las variables (III) La declaración de un nuevo tipo typedef la palabra clave typedef permite definir sus propios tipos de datos. Syntaxis: typedef type-declaration synonym; typedef char Flag. Type; typedef enum FIGURETYPE {FT_POLYLINE=1, FT_POLYGON}; 38/158
PROGRAMACION Las variables (III) Las constantes Las datos constantes, mal llamadas por algunos "variables constantes" (realmente no son variables) tienen un valor fijo durante toda la ejecución del programa, es decir, este valor no cambia ni puede ser cambiado a lo largo de la ejecución de nuestro programa. Syntaxis 1: #define nombre_constante valor La instrucción const nos permite declarar constantes de una manera más adecuada y acorde y se declaran al interior de nuestro código como un tipo cualquiera. const float PI = 3. 1416; //Definimos una constante llamada PI 39/158
PROGRAMACION Las variables (III) Las variables estáticas • Las variables estaticas no se borran • Están identificadas por la palabra reservada static. • Las variables estáticas pueden a) Locales (asociada a la función en la que se declara) b) Globales (visible por todo el programa) void function() { static int n. Count = 0; } 40/158
PROGRAMACION Los apuntadores Y las referencias 41/158
PROGRAMACION Los apuntadores A un apuntador puede asignársele un valor a través del carácter ´&´ que precede la variable a la que va a apuntar : Ejemplos: char * lpc. Inicial = &c. Inicial; short * lpn. Edad = &n. Edad; int * lpn. Year = &n. Year; float * lpf. Pi = &f. Pi; El símbolo “&” representa la dirección de la memoria de una variable 42/158
PROGRAMACION Los apuntadores • Un apuntador es una variable que representa la dirección de una variable. • Un apuntador tiene necesariamente el tipo de la variable seguido del carácter´*´ char *, int *, short *, bool *, float *, etc. Ejemplos: char * lpc. Inicial; short * lpn. Edad; int * lpn. Year; float * lpf. Pi; 43/158
PROGRAMACION Los apuntadores Si el valor de un apuntador se declara como short * lpn. Edad = &n. Edad; Entonces… lpn. Edad *lpn. Edad // apunta a la dirección de la variable n. Edad // Representa el valor n. Edad 44/158
PROGRAMACION Los apuntadores Apuntadores constantes const int *p = &a; //objeto constante y puntero variable 45/158
PROGRAMACION Los apuntadores Un apuntador se inicializa automaticamente con el valor NULL short * lpn. Edad; Es lo mismo que short * lpn. Edad(NULL); NULL, es el espacio en memoria con dirección 0 NULL no es un valor 0 46/158
PROGRAMACION Los apuntadores El apuntador void • Un apuntador de cualquier tipo de dato puede convertirse a un apuntador del tipo void *. • Por esto un apuntador void *, recibe el nombre de apuntador genérico. • C++ no permite la conversión implícita de punteros. 47/158
PROGRAMACION Los apuntadores El apuntador void int *puntero; funcion (*puntero); . . void funcion (void *p) { int *q; q=(int *)p; //En C se podria hacer q = p; } 48/158
PROGRAMACION Los apuntadores Los operadores de incremento (++) y decremento (--) se aplican con los apuntadores. char s. Name[20]; char * pchar = s. Name; // apunta al carácter s. Name[0] pchar++; // apunta al carácter s. Name[1] 49/158
PROGRAMACION Los apuntadores Si una variable es un apuntador de una estructura, sus miembros se identifican por el apuntador que representa la estructura seguido de una flecha “->” seguido del nombre de la variable Alumno Mi. Alumno; // declaracion Alumno * p. Otro. Alumno = & Mi. Alumno; p. Otro. Alumno->c. Name = “miguel”; // nombre p. Otro. Alumno->n. Edad = 23; // edad p. Otro. Alumno->n. Control = 09782345; // numero de control 50/158
PROGRAMACION Las referencias • Una referencia almacena la dirección de un objeto. • Una referencia inicializada no puede hacer referencia a otro objeto ni establecerse en NULL. • Una referencia se comporta como una especie de “nombre alternativo” para un objeto. • Una referencia necesita ser inicializada en el momento de la declaración. • Una referencia jamás dejará de referirse al objeto de su inicialización. 51/158
PROGRAMACION Las referencias La referencia es un sobrenombre (un nombre alternativo) para una variable mientras que un puntero es una variable que guarda un dirección de memoria como valor. Podemos usar las referencias para crear apodos a variables en un programa. Lo usual es usar referencias para pasar parámetros a las funciones por referencia y no por valor. 52/158
PROGRAMACION Las referencias A diferencia de las referencias, los punteros pueden usarse para manipular direcciones de memoria. Por ejemplo, al crear y destruir dinámicamente memoria. 53/158
PROGRAMACION Los parámetros de funciones por referencias Existen 3 maneras de pasar parámetros a una función: 1. Por valor 2. Por apuntador 3. Por referencia 54/158
PROGRAMACION Los parámetros de funciones por referencias El paso de datos por referencia a una función es el mas aconsejado por: 1. Se accede a la variable naturalmente 2. Es mas rápido y económico 3. Permite modificar los valores pasados 55/158
PROGRAMACION Los arreglos de datos 56/158
PROGRAMACION Los arreglos (I) • Los arreglos son una colección de variables de un mismo tipo • Un arreglo tiene un tipo • Un arreglo va del elemento 0 al N • Un arreglo tiene dimensiones Un arreglo de una dimensión se declara como int n. Arreglo[100]; // declara un vector de 100 valores enteros Un arreglo de 2 dimensiones de declara como: int n. Arreglo[10]; // declara 100 valores enteros en 2 dimensiones 57/158
PROGRAMACION Los arreglos (II) Un elemento del arreglo se identifica con un índice: int n. Valor = n. Arreglo[15]; // recupera el valor 16 int n. Valor = n. Arreglo[i]; // recupera el valor i int n. Valor = n. Arreglo[i][j]; // recupera el valor i, j El primer elemento de un arreglo es el valor 0: int n. First = n. Valor[0]; // primer valor del arreglo El ultimo valor del arreglo es el N-1: int n. Last = n. Valor[99]; // ultimo valor del arreglo 58/158
PROGRAMACION Los arreglos (II) Los arreglos y los apuntadores. El nombre de un arreglo es la dirección del arreglo char s. Name[20]; char * p. Name = (char*)s. Name; Que es equivalente a: char * p. Name = &s. Name[0]; 59/158
PROGRAMACION Los arreglos (II) Los arreglos y las cadenas alfanuméricas. Una cadena alfanumérica es un arreglo con valor 0 del ultimo elemento útil, lo que indica el final de la cadena. char s. Name[20]; s. Name[0] = ´p´; s. Name[1] = ´e´; s. Name[2] = ´p´; s. Name[3] = ´e´; s. Name[4] = 0; // s. Name vale “pepe” 60/158
PROGRAMACION Los arreglos (II) La navegación en un arreglo El nombre del arreglo seguido de Los caracteres [n] identifica el elemento n del arreglo. char s. Name[20]; char s. Letra = s. Name[n]; // s. Letra contiene al elemento n Un apuntador permite navegar en un arreglo char * p. Letra = s. Name; p. Letta += n; // *p. Letra contiene al elemento n 61/158
PROGRAMACION Las sentencias 62/158
PROGRAMACION Las Instrucciones (I) Las instrucciones controlan el flujo de ejecución de un programa • • • Asignacion = if if – else if for while switch break; return 63/158
PROGRAMACION Las Instrucciones (II) • Las instrucciones están separadas por “; ” • Los espacios no cuentan entre las instrucciones • Los caracteres “{“ y “}” definen un bloque de instrucciones 64/158
PROGRAMACION La Instrucción de asignación “=“ La instrucción de asignación “=“ asigna un valor a una variable int n. Val = 45; 65/158
PROGRAMACION La Instrucción de condición “if” La instrucción de condición “if“ condiciona la ejecución de un bloque de programa If ( n. Val == 25 ) n. My = 47; If ( n. Val == 25 ) { // bloque condicionado }
PROGRAMACION La Instrucción de condición “if - else” La instrucción de condición “if , else“ condiciona la ejecución de uno de 2 bloques de programa if ( n. Val == 25 ) { // bloque condicionado } else { // bloque condicionado } if ( n. Val == 25 ) n. Mi = 47; else { // bloque condicionado } 67/158
PROGRAMACION La Instrucción de condición “if –else if” La instrucción de condición “if , else if“ condiciona la ejecución de N bloques de programa If ( n. Val == 25 ) { // bloque condicionado } else if (n. Val == 47) { // bloque condicionado } else if (n. Control == 52) { // bloque condicionado } 68/158
PROGRAMACION La Instrucción de condición “if , else” La instrucción de condición “if, if else “ condiciona la ejecución de N bloques de programa if ( n. Val == 25 ) { // bloque condicionado } else if (n. Val == 47) { // bloque condicionado } else { // bloque condicionado } 69/158
PROGRAMACION La Instrucción de iteración ”for” La instrucción de iteración “for“ condiciona la repetición de un bloque de programa for ( int n. Val =0; n. Val<10; n. Val++ ) { // bloque condicionado } 70/158
PROGRAMACION La Instrucción de iteración ”for” La instrucción de iteración “for“ está compuesta de 3 campos separados por “; ” : for (n. V 1=0, n. V 2=15; n. V 1<10; n. V 1++, n. V 2 --) instrucción; 1) Inicialización de entrada 2) Condición de salida 3) Calculo al final del bloque 71/158
PROGRAMACION La Instrucción de iteración “while” La instrucción de iteración “while“ condiciona la repetición de un bloque de programa int n. Val = 0; while( n. Val<10 ) { // bloque condicionado n. Val++; } 72/158
PROGRAMACION La Instrucción de condición “switch” La instrucción de condición “switch“ condiciona la ejecución de un bloque de programa entre otros int n. Val = 45; switch( n. Val ) { case 0: … // codigo ejecutado si n. Val vale 0 break; // detiene la ejecución case 34: break; default: break; } 73/158
PROGRAMACION La Instrucción de ruptura “break” La instrucción de ruptura de ejecución “break“ interrumpe la ejecución de un bloque de programa for, while y switch int n. Val = 45; switch( n. Val ) { case 0: … // codigo ejecutado si n. Val vale 0 break; // detiene la ejecución } 74/158
PROGRAMACION La Instrucción de retorno “return” La instrucción de retorno “return“ interrumpe la ejecución de un bloque de programa y manda la ejecución a la función que te llamó switch( n. Val ) { case 0: return; break; } // codigo ejecutado si n. Val vale 0 // regresa la ejecucion a la funcion superior // detiene la ejecución 75/158
PROGRAMACION Las Funciones (I) Las funciones son bloques de programas de uso general con un encabezado y un cuerpo delimitado por “{“ y “}” • • • El nombre de una función sigue las reglas de nombres de variables Una función es una porción de código que ejecuta un calculo Una función puede tener n valores de entrada (parámetros) Una función debe tener un valor de retorno (puede ser void) Una función puede modificar el valor de un parámetro int funcion (int parametro 1); void funcion (int parametro 1, bool parametro 2); int funcion (int parametro 1); 76/158
PROGRAMACION Las Funciones (II) Ejemplo de función: int Suma(int n. Parametro 1, int n. Parametro 2) { int n. Ret = n. Parametro 1 + n. Parametro 2; return n. Ret; } 77/158
PROGRAMACION Las clases 78/158
PROGRAMACION Las Clases (I) Una clase es una estructura que tiene además: Funciones, un Constructor y un Destructor Una clase consta de: • Una Identidad, que lo diferencia de otros objetos (Nombre de la clase) • Métodos o funciones miembro • Atributos o variables miembro 79/158
PROGRAMACION Las Clases (II) class Punto { private: int id; protected: int x; int y; public: Punto(); ~Punto(); int Obtener. X(); int Obtener. Y(); } // Variables y miembro privada // Variables y miembro protegidas // Variables y miembro publicos // Constructor // Destructor // Funciones miembro o métodos 80/158
PROGRAMACION Las Clases (III) Una clase tiene miembros y atributos : • Públicos • Protegidos • Privados 81/158
PROGRAMACION Las Clases (IV) • Los atributos de una clase son variables propias a esa clase • Un atributo solo es conocido por su clase A esta propiedad se le llama “encapsulamiento” 82/158
PROGRAMACION Las Clases (V) Los miembros de una clase son funciones propias a esa clase • • • El nombre de un miembro sigue las reglas de nombres de variables Un miembro conoce los atributos de su clase Un miembro es una porción de código que ejecuta un calculo Un miembro puede tener n valores de entrada (parámetros) Un miembro debe tener un valor de retorno (puede ser void) Un miembro puede modificar el valor de un parámetro int funcion (int parametro 1); void funcion (int parametro 1, bool parametro 2); int funcion (int parametro 1); 83/158
PROGRAMACION Las Clases (VI) Una clase tiene una función miembro llamado “constructor” • • • El constructor tiene el mismo nombre que la clase El constructor es publico El constructor es llamado siempre que se crea el objeto El constructor no tiene valor de retorno Una clase tiene un constructor predeterminado (default) class Punto { public: Punto(); … // Variables y miembro publicos // Constructor 84/158
PROGRAMACION Las Clases (VII) Una clase tiene una función miembro llamado “destructor” • • • El destructor tiene el mismo nombre que la clase precedido por el signo ~ El destructor es publico El destructor es llamado siempre cuando se destruye el objeto El destructor no tiene parámetros El destructor no tiene valor de retorno Una clase tiene un destructor predeterminado (default) class Punto { public: ~ Punto(); … // Variables y miembro publicos // Destructor 85/158
PROGRAMACION Las Clases (VII) El operador sizeof devuelve el tamaño de una clase Una clase sin miembros (datos) tiene un tamaño convencional de 6 bytes (según el compilador). 86/158
PROGRAMACION Las Clases (VIII) • Un valor de un tipo se llama VARIABLE • Un valor de una clase se llama OBJETO int n. Mi. Valor = 45; // Variable int Punto Mi. Punto; // Objeto Punto Los OBJETOS son instancias de CLASES 87/158
PROGRAMACION Las Clases (VIII) Herencia múltiple C++ permite que una clases derive de dos o más clases base. Es decir, la clase derivada comparte los atributos y los métodos de más de una clase. 88/158
PROGRAMACION 89/158
PROGRAMACION Las Clases (VIII) Sintaxis de la derivación class <clase_derivada> : [public|private] <base 1> [, [public|private] <base 2>] {}; class CGeo. Rect : public CFloat. Rect, public CGeo. Line, public CGeo. Brush { }; 90/158
PROGRAMACION Las Clases (VIII) Las funciones virtuales • Una función virtual es un mecanismo que permite a clases derivadas redefinir a las funciones de las clases de base. • La virtualización de funciones y clases nos permite implementar una de las propiedades más potentes de POO: el polimorfismo. • Una función virtual es una función miembro que se espera volver a definir en clases derivadas. 91/158
PROGRAMACION Las Clases (VIII) Las funciones virtuales Cuando se hace referencia a un objeto de una clase derivada mediante un puntero o una referencia a la clase base, se llama la función virtual para ese objeto y se ejecuta la versión de la clase derivada de la función. virtual void Get. Name(); 92/158
PROGRAMACION Las Clases (VIII) Las funciones virtuales Si una clase base contiene una función declarada como virtual y una clase derivada define la misma función. La función de la clase derivada se invoca para los objetos de la clase derivada, aunque se llame mediante un puntero o una referencia a la clase base. 93/158
PROGRAMACION Las Clases (VIII) Las funciones virtuales 94/158
PROGRAMACION Las Clases (VIII) Las clases abstractas • Una clase que contiene al menos una función pura virtual se considera una clase abstracta. • Una clase que declara la existencia de un método pero no los implementa, se considera una clase abstracta. • Una clase abstracta puede contener métodos no-abstractos pero al menos uno de los métodos debe ser declarado abstracto. • Las clases derivadas de la clase abstracta deben implementar la función virtual pura o seguirán siendo clases abstractas. 95/158
PROGRAMACION Las Clases (VIII) Las clases abstractas class Account { public: Account( double d ); virtual double Get. Balance(); virtual void Print. Balance() = 0; private: double _balance; }; // Constructor // Obtain balance // Pure virtual function 96/158
PROGRAMACION Las Clases (VIII) El polimorfismo • Es la habilidad que poseen los objetos para reaccionar de modo diferente ante los mismos mensajes. • El polimorfismo se refiere a la posibilidad de definir • múltiples clases con funcionalidad diferente, pero con métodos o propiedades denominados de forma idéntica, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo de ejecución. 97/158
PROGRAMACION Las Clases (VIII) El polimorfismo • El Polimorfismo es la tercera característica esencial de un lenguaje orientado a objetos, después de la abstracción de datos y la herencia. • En programación orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. • El polimorfismo consiste en conseguir que un objeto de una clase se comporte como un objeto de cualquiera de sus subclases, dependiendo de la forma de llamar a los métodos de dicha clase o subclases. 98/158
PROGRAMACION Las Clases (VIII) El polimorfismo • El polimorfismo permite que podamos construirnos métodos para nuestras clase derivadas que parten de una misma clase base, para que adopten comportamientos totalmente distintos. • Es un concepto realmente potente y que se lleva a cabo mediante la utilización de funciones virtuales. 99/158
PROGRAMACION Los operadores 100/158
PROGRAMACION Los Operadores Un operador es un elemento de programa que se aplica a uno o varios operandos en una expresión o instrucción • Los operadores que requieren un operando, como el operador de incremento (++) se conocen como operadores unarios. • Los operadores que requieren dos operandos, como los operadores aritméticos (+, -, *, /) se conocen como operadores binarios. • El operador condicional (? : ), utiliza tres operandos y es el único operador ternario de C++ 101/158
PROGRAMACION Los Operadores Existen 6 tipos de operadores según su función: 1. 2. 3. 4. 5. 6. Aritméticos Relacionales De asignación Lógicos De dirección De manejo de Bits 102/158
PROGRAMACION Los Operadores Los operadores de asignación binarios 103/158
PROGRAMACION Los Operadores Los operadores aritméticos 104/158
PROGRAMACION Los Operadores Los operadores ++ y -Los operadores unarios ++ y – actúan según su posición: • Si el operador precede a la variable, se conoce como preincremento o pre-decremento (++n) • Si el operador es posterior a la variable (n++) se encuentra en la forma posfija y se le llama pos-incremento o pos-decremento 105/158
PROGRAMACION Los Operadores Los operadores unarios ++ y -Cuando un operador de incremento o decremento precede a su variable, se llevará a cabo la operación de incremento o de decremento antes de utilizar el valor del operando. int x, y, z; x = 2004; y = ++x; z = --y; // x e y valen 2005 // z e y valen 2004 106/158
PROGRAMACION Los Operadores Los operadores unarios ++ y -Cuando un operador de incremento o decremento sucede a su variable, se llevará a cabo la operación de incremento o de decremento después de utilizar el valor del operando. int x, y, z; x = 2004; y = x++; z = y--; // x vale 2005 , y vale 2004 // z vale 2004 , y vale 2003 107/158
PROGRAMACION Los Operadores Los operadores binarios relacionales Los operadores relacionales, se utilizan para comprobar la veracidad o falsedad de propuestas de relación. 108/158
PROGRAMACION Los Operadores Los operadores lógicos producen un resultado booleano, y sus operandos son también valores lógicos o asimilables a ellos (los valores numéricos son asimilados a cierto o falso según su valor sea cero o distinto de cero). 109/158
PROGRAMACION Los Operadores Los operadores de manejo de bits Los operadores de movimiento de bits convierten una determinada cantidad a su equivalente en bits para posteriormente realizar un desplazamiento de dicho valor. 110/158
PROGRAMACION Los Operadores Los operadores de dirección C++ dispone de dos operadores específicos para los apuntadores y de referencia: 1. La indirección “*” 2. La referencia “&” 111/158
PROGRAMACION La conversión de tipos (casting) Un “cast” es un operador que convierte un tipo de dato en otro tipo de dato. El casting es una operación unaria. Sintaxis: (type) expression En el cual “type” es el tipo de dato esperado. 112/158
PROGRAMACION La conversión de tipos (casting) char a(´b´); flost f. Size; int n = (int)a; int n. Size = (int)f. Size; float f. T = (float)n; 113/158
PROGRAMACION Los operadores de clases La sobrecarga de operadores en el interior de una clase se asume que el primer operando es el propio objeto de la clase donde se define el operador. Debido a esto, sólo se necesita especificar un operando. Sintaxis: <tipo> operator<operador binario>(<tipo> <identificador>); Normalmente el <tipo> es la clase para la que estamos sobrecargando el operador, tanto en el valor de retorno como en el parámetro 114/158
PROGRAMACION Los operadores de clases El operador de asignación • El compilador crea un operador de asignación por defecto para tipos simples. • El compilador NO puede copiar un objeto cuando este contiene un apuntador a otro objeto. class Account { public: int m_n. Age; COther. Class * p. Other. Class; }; 115/158
PROGRAMACION Los operadores de clases El operador de asignación. h CFloat. Point & operator=(CFloat. Point & Pt); // declaración de operador. cpp CFloat. Point & CFloat. Point: : operator=(CFloat. Point & Pt) { if ( this != &Pt ) { m_X = Pt. m_X; m_Y = Pt. m_Y; m_Z = Pt. m_Z; } return *this; } // operateur = 116/158
PROGRAMACION Los operadores de clases El operador de asignación double CFloat. Point: : Distance(CFloat. Point & f. Pt. Other) { CFloat. Point f. Vector = f. Pt. Other - *this; return f. Vector. Get. Modulo(); } CFloat. Point f. Pt 1(0, 0, 0), f. Pt 2(10, 10); Double f. Dist = f. Pt 1. Distance(f. Pt 2); 117/158
PROGRAMACION Funciones de conversión El operador de asignación Es posible convertir explícitamente una clase en otra clase. Sintaxis: conversion-function-name: operator conversion-type-name () 118/158
PROGRAMACION Funciones de conversión El operador de asignación class Money { public: operator Amount() { return m_d. Amount; } private: double m_d. Amount; }; int main() { Money Account; double Cash. On. Hand = Account; } 119/158
PROGRAMACION Funciones de conversión El operador de asignación class CFloat. Point { protected: double m_X; double m_Y; double m_Z; public: operator CPoint() { return CPoint((int)m_X, (int)m_Y); } int main() { CFloat. Point f. Pt(10, 20, 30); CPoint Pt = (CPoint) f. Pt; } 120/158
PROGRAMACION La asignación dinámica de la memoria El operador new El operador unario new sirve para reservar memoria dinámicamente El operador new llama el constructor ad-hoc de la clase a la que se le está aplicando. int n. Age = 23; CString s. Name(“Tecnito”); STUDEN * p. Student = new Student; STUDENT * p. Student = new Student(s. Name, n. Age); Int * pn = new int(23); char * p. Array = new char[20]; 121/158
PROGRAMACION La asignación dinámica de la memoria El operador delete sirve para liberar la memoria dinámicamente El operador delete es un operador unario que llama al destructor de la clase a la que se le está aplicando. STUDEN * p. Student = new Student; Int * pn = new int(23); char * p. Array = new char[20]; delete p. Student; delete pn; delete p. Array; 122/158
PROGRAMACION La asignación dinámica de arreglos El operador new La asignación dinámica de un arreglo utiliza el operador new. El operador [n] indica al operador new que debe generar un arreglo de datos contiguos del mismo tipo y de dimensión n. int * pn = new int(23); int * pn. A = new int[23]; char * p. Array = new char[20]; // genera un int de valor 23 // genera un arreglo de 23 int // genera un arreglo de 20 caracteres 123/158
PROGRAMACION La asignación dinámica de arreglos El operador delete sirve para liberar la memoria dinámicamente • El operador delete es un operador unario que llama al destructor del arreglo a la que se le está aplicando. • El operador delete debe de aplicarse al apuntador del arreglo precedido del operador []. char * p. Array = new char[20]; delete [] p. Array; // genera un arreglo de 20 caracteres 124/158
PROGRAMACION La asignación dinámica de arreglos El operador delete Si el operador delete se aplica a un apuntador que no apunta al arreglo si no a un elemento el resultado es impredecible // NUMERO TRIANGULAR int s. Suma(0); int* pn. Data = new int[20]; // genera un arreglo de 20 enteros for (int i=0; i<20; i++) *(pn. Data++) = i; // asigna valor a cada element for (int i=0; i<20; i++) n. Suma += *(pn. Data++); // ERROR ! delete [] pn. Data; // HORROR ! 125/158
PROGRAMACION Las funciones 126/158
PROGRAMACION La declaración de una función Las funciones son un conjunto de instrucciones que realizan una tarea específica. • Las funciones toman ciertos valores de entrada, llamados parámetros (argumentos) y proporcionan un valor de salida o valor de retorno. • En C++ 2 funciones pueden tener el mismo nombre siempre y cuando presenten parámetros diferentes. • Un prototipo de una función debe de ser declarado previamente a su uso. • Una función siempre tiene un valor de retorno, que puede ser void • Una función puede tener una lista de parámetros variable, si los parámetros tienen un valor por default 127/158
PROGRAMACION La declaración de una función Sintaxis: [<tipo_valor_retorno>[modificadores] <identificador>(<lista_parámetros>) { [sentencias] } int Mi. Clase: : suma(int n 1, int n 2) { int n. Suma = n 1 + n 2; return n. Suma; } 128/158
PROGRAMACION La declaración de una función El paso de argumentos Los parámetros pueden pasarse de 3 maneras: 1. Valor (no modificables y lento) 2. Apuntador o dirección (acceso total, sintaxis complicada) 3. Referencia (igual que por apuntador pero con sintaxis simplificada) 129/158
PROGRAMACION La declaración de una función El paso de argumentos Los arreglos deben de pasarse por su dirección: . h void Funcion. Char(char * p. Char); . cpp char * p. Data = new char[1024]; Funcion. Char(p. Data); 130/158
PROGRAMACION Las funciones virtuales • Una función virtual o método virtual es una función cuyo comportamiento, al ser declarado "virtual“ es determinado por la definición de una función con el mismo prototipo en alguna de sus subclases (derivadas) • La virtualización de funciones y clases nos permite implementar una de las propiedades más potentes de POO: el polimorfismo. virtual void Serialize(CArchive& ar); 131/158
PROGRAMACION Las sobrecarga de funciones virtuales La sobrecarga o "overriding“ es la derivación de una clase en la cual se redefine una función virtual que ya existía en la clase de base. La definición de la función en la clase derivada oculta la definición previa en la clase base. Es posible acceder a la función oculta de la clase base mediante su nombre completo: CBase. Clas: : Funcion. Virtual(); 132/158
PROGRAMACION Funciones con numero de argumentos indeterminados • Los parámetros conocidos se declaran de manera “normal” • Debe de existir al menos 1 parámetro normal • Los parámetros desconocidos se sustituyen por tres puntos (. . . ) Sintaxis: <tipo_valor_retorno> <identificador>(<lista_parámetros_conocidos>, . . . ); • Los parámetros se pasan usando la pila • Puede usarse uno de los parámetros conocidos para pasar a la función la cuenta de los parámetros desconocidos • La función debe conocer el tipo de cada parámetro (e. g. printf) 133/158
PROGRAMACION El C++ DE MFC 134/158
PROGRAMACION El C++ de MFC redefine la mayoría de los símbolos utilizados por el lenguaje C estándar. typedef unsigned long typedef int typedef unsigned short typedef float typedef FLOAT typedef BOOL near typedef BOOL far typedef BYTE near typedef BYTE far typedef int near typedef int far typedef WORD near typedef WORD far typedef long far typedef DWORD near typedef DWORD far typedef void far typedef CONST void far typedef int typedef unsigned int DWORD; BOOL; BYTE; WORD; FLOAT; *PBOOL; *LPBOOL; *PBYTE; *LPBYTE; *PINT; *LPINT; *PWORD; *LPLONG; *PDWORD; *LPVOID; *LPCVOID; INT; UINT; *PUINT; 135/158
PROGRAMACION El C++ de MFC ASSERT_VALID La función ASSERT_VALID prueba la validez de un objeto Sintaxis: ASSERT_VALID( p. Object ); Si el objeto no es un objeto válido la versión DEBUG del programa ejecutable genera una excepción. ASSERT_VALID es ignorada en la versión RELEASE del ejecutable. 136/158
PROGRAMACION El C++ de MFC Las Excepciones. TRY & CATCH y END_CATCH Cuando una excepción es encontrada, el common language runtime (CLR) busca el bloque CATCH que trata esta excepción y le pasa la ejecución. Si no encuentra ningún bloque, envía un mensaje al usuario y detiene la ejecución del programa. La manipulación de excepciones consiste en transferir la ejecución del programa desde el punto donde se produce la excepción a un manipulador que coincida con el motivo de la excepción. 137/158
PROGRAMACION El C++ de MFC Las Excepciones. TRY & CATCH y END_CATCH Las excepciones son errores irrecuperables que se producen a la ejecución de un programa (división por cero). • Cualquier línea de código puede originar una excepción • El bloque TRY & CATCH permite detectar y atrapar excepciones. • El bloque TRY & CATCH consiste en un bloque TRY seguido uno o mas bloques CATCH, cada bloque especifica como atrapar las diferentes excepciones. 138/158
PROGRAMACION El C++ de MFC Las Excepciones. TRY & CATCH y END_CATCH int * px; int y = 10000; TRY{ px = new int[y]; px[0] = 10; cout << "Puntero: " << (void *) x << endl; delete[] px; } CATCH: : bad_alloc&) { cout << "Memoria insuficiente" << endl; } El objeto bad_alloc es el asociado a excepciones consecuencia de aplicar el operador new 139/158
PROGRAMACION El C++ de MFC Las Excepciones. TRY & CATCH y END_CATCH La expresión throw se comporta como un return. El valor devuelto por el throw se asigna al objeto del catch adecuado. Los tipos de la expresión del throw y el especificado en el catch deben coincidir. 140/158
PROGRAMACION LAS CLASES DE DATOS MFC 141/158
PROGRAMACION Las clases de datos MFC CPoint • CPoint es la clase punto del GDI de MFC • CPoint contiene 2 miembros (int x , int y) y los métodos para manipular el punto. • Las coordenadas del punto se consideran positivas hacia abajo y hacia la derecha. • Las funciones GDI toman como parámetro un CPoint 142/158
PROGRAMACION Las clases de datos MFC CRect • CRect es la clase rectangulo del GDI de MFC • CRect contiene 4 miembros (int left, int top, int right , int bottom) y los métodos para manipular el rectangulo. • El rectángulo definido por CRect siempre tiene los 4 lados paralelos a la ventana (window) • Las funciones de CRect consideran que el lado superior es menior al lado inferior (top < bottom) • Las funciones GDI toman como parámetro un CRect 143/158
PROGRAMACION Las clases de datos MFC CSize • CSize es la clase vector del GDI de MFC • CSize contiene 2 miembros (int cx, int cy) y los métodos para manipular el vector. • Las funciones GDI toman como parámetro un CSize 144/158
PROGRAMACION Las clases de datos MFC CString • CString es una clase de cadenas alfanuméricas • Las funciones MFC toman como parámetro un CString 145/158
PROGRAMACION LAS CLASES DE COLECCIONES 146/158
PROGRAMACION Las clases de datos MFC Las Colecciones Las clases de colección sirven para administrar grupos de objetos. Existen 3 tipos de colecciones: • CArray • CList • CMap 147/158
PROGRAMACION Las clases de datos MFC La Colección CArray La clase CArray proporciona una matriz de objetos indizada por números enteros, ordenada y con el tamaño ajustado dinámicamente. Existen 2 tipos básicos de colección CArray: Contenido de la colección Matrices Colecciones de objetos de cualquier tipo CArray Colecciones de apuntadores a objetos de cualquier tipo CTyped. Ptr. Array 148/158
PROGRAMACION Las clases de datos MFC La Colección CArray Matrices Las clases predefinidas (sin plantilla) COb. Array CByte. Array CDWord. Array CPtr. Array CString. Array CWord. Array CUInt. Array 149/158
PROGRAMACION Las clases de datos MFC La Colección CList La clase CList proporciona una lista de objetos ordenados sin indizar, implementada como una lista doblemente ligada. Existen 2 tipos básicos de colección CList: Contenido de la colección Listas Colecciones de objetos de cualquier tipo CList Colecciones de apuntadores a objetos de cualquier tipo CTyped. Ptr. List 150/158
PROGRAMACION Las clases de datos MFC La Colección CList Las clases predefinidas (sin plantilla) Matrices COb. List CPtr. List CString. List 151/158
PROGRAMACION Las clases de datos MFC La Colección CMap • La clase CMap es una colección que asocia un objeto clave a un objeto de valor. • Un Mapa es también conocido como un diccionario. • CMap está implementado para que dada una llave, el elemento correspondiente sea encontrado muy rápidamente. • MFC utiliza CMap para almacenar los HANDLES (correlaciona HWND´s a CWnd´s, HPEN´s a CPen´s, y así con todos loa objetos sistema. ) 152/158
PROGRAMACION Las clases de datos MFC La Colección CMap Existen 2 tipos básicos de colección CMap: Contenido de la colección Listas Colecciones de objetos de cualquier tipo CMap Colecciones de apuntadores a objetos de cualquier tipo CTyped. Ptr. Map 153/158
PROGRAMACION Las clases de datos MFC La Colección CMap Las clases predefinidas (sin plantilla) Matrices CMap. Ptr. To. Word CMap. Ptr. To. Ptr CMap. String. To. Ob CMap. String. To. Ptr CMap. String. To. String CMap. Word. To. Ob CMap. Word. To. Ptr 154/158
PROGRAMACION Class Name Description CMap. Word. To. Ptr Stores void pointers keyed by WORDs CMap. Ptr. To. Word Stores WORDs keyed by void pointers CMap. Ptr. To. Ptr Stores void pointers keyed by other void pointers CMap. Word. To. Ob Stores CObject pointers keyed by WORDs CMap. String. To. Ob Stores CObject pointers keyed by strings CMap. String. To. Ptr Stores void pointers keyed by strings CMap. String. To. String Stores strings keyed by other strings 155/158
PROGRAMACION Las clases de datos MFC Características de las formas de colección Forma ¿Ordenada? Insertar un Buscar un ¿Duplicar ¿Indizada? elementos? especificado CArray Matriz Sí Por entero Lento Sí CLista Sí No Rápido Lento Sí CMap Mapa No Por clave Rápido No (claves) Sí (valores) 156/158
157/158
- Programacion imperativa
- Instituto superior tecnológico público
- Cepea instituto
- Instituto tecnológico de la zona maya
- Villahermosa
- Instituto puerto de mejillones
- Instituto tecnologico de tijuana
- Instituto tecnologico de la zona maya
- Teleomórfico
- Instituto tecnológico de villahermosa carreras
- Instituto tecnologico de tehuacan
- Tlhuac
- Instituto tecnologico de la zona maya
- Instituto tecnologico pesquero
- Instituto tecnologico de san luis potosi
- Aspectos legales del derecho mercantil fiscal y empresarial
- Introduccion ala programacion orientada a objetos
- Lis de veracruz arte ciencia luz
- Salud digna veracruz norte
- Forense veracruz
- Certificados electrónicos sev
- Lis de veracruz
- Servicio social veracruz
- Veracruz y naciones unidas
- Valores espirituales
- Radio chicontepec la señal va con tigo
- Sct veracruz
- Volcan cofre de perote
- Marklog simulador decisiones
- Bansatec
- Proyecto socio tecnologico
- Polo tecnologico pavia
- Dimensiones del entorno
- Cambio técnico y social
- Modelo didactico tecnologico caracteristicas
- Ambiente natural macroambiente
- Objeto tecnologico reciclable
- Tecnologico de villahermosa carreras
- Fondo tecnologico
- Análisis tecnológico de un cuaderno
- Paquete tecnologico
- Roque escamilla
- Repositorio tec de monterrey
- Parque tecnologico sao jose dos campos
- Analisis morfologico de una cartuchera
- Nrazes
- Matriz de atractividad y competitividad
- Tipos de caracteres
- Bvc programacion
- Software de sistema clasificacion
- Metodo dual programacion lineal
- Una compañia fabrica y vende dos modelos de lamparas
- Picaxe mc
- Sobrecarga de operadores java
- Programación anual de ept agropecuaria
- Generaciones de los lenguajes de programacion
- Tutorial de pseint
- Programación modular ejemplos
- Modelo relacional base de datos ejemplos
- Hilos programacion
- Programación v
- Programación de medicamentos
- Flujos y archivos en programacion orientada a objetos
- Paradigmas de programacion
- Sintaxis
- Programacion modular
- Mapa conceptual de lenguajes de programacion
- Lenguajes de programacion
- Concepto de pilas en programacion
- Opera mini lenguajes de programación
- Programacion gen
- Programación por procedimientos
- Es verdadero o falso
- Programacion concurrente
- Programacion tauli.cat
- Programacion paralela
- Sle programación
- Um algoritmo é um conjunto finito de instruções
- Ventajas y desventajas del modelo orientado a objetos
- Programacion orientada a objetos en php
- Ejemplos de programación de computadoras
- Lenguaje de programacion
- El mejor lenguaje de programacion
- Turbo assembler
- Arquitectura de 3 capas
- Puerto columbo programacion
- Metodologia agil xp
- Spectrum mi plan latino precio
- Programación hacia adelante ejemplos
- Programacion daz
- Programacion
- Plankalkül
- Una lista de objetos
- Instituto 809
- Instituto 167 tres arroyos
- Matthew stanley meselson
- Suel fuengirola
- Refineria esmeraldas
- Organigrama del instituto arzobispo loayza
- Instituto elos
- Instituto registral y catastral
- Instituto de seguridad laboral isl
- Instituto de la mujer en apodaca
- Instituto educativo panamericano
- Instituto universitario naval
- Instituto superior de ciencias medicas de la habana
- Instituto ferrari valladolid
- Instituto de hidraulica e hidrologia umsa
- Instituto miguel sanchez hinestroza
- Instituto arca real
- Instituto nacional de soyapango
- "prof universidade paulista unip"
- Instituto virgen de covadonga
- Tautologia
- Instituto de liderazgo rotario
- Instituto guillot
- Instituto francisco possenti
- Instituto progreso y esperanza
- Xviidr
- Instituto educativo panamericano campus sur
- Instituto americano de ingenieros químicos
- Instituto universitario internacional de toluca
- Universidad ricardo palma medicina
- Investigador
- Instituto de administración y comercio estado de israel
- Instituto de liderazgo rotario
- Instituto de medicina legal dr. roberto masferrer
- Fundación instituto spiral
- Instituto white star
- Instituto del petroleo
- Instituto calasancio divina pastora
- Instituto escalae
- Instituto tecnico industrial pedro antonio molina
- Instituto nacional del puerto de la libertad
- Instituto aiep temuco
- Instituto de estrategia internacional
- Ifecom
- Rouen cathedral set v
- Instituto nacional de colonização e reforma agrária
- Instituto tecnico marillac
- "instituto asimov"
- Instituto cultural quetzalcoatl
- Instituto de seguros de portugal
- Instituto nueva inglaterra
- Ies jabalcuz
- Matematica aplicada ufrj
- Sucesos historicos
- Diarrein
- Escuela preparatoria instituto superior benjamín franklin
- Instituto geográfico nacional de españa
- Instituto cultural quetzalcoatl
- Escuela campero tucuman
- Instituto giovanni pascoli
- Instituto interamericano salvador dali
- Instituto nacional de estadística de bolivia
- Instituto formar futuro
- Instituto federal
- Addis instituto