Informática
POO (Programación Orientada a Objetos) con Borland Delphi
Borland Delphi
Indice
Titulo Pagina
Introducción 3
Programación Orientada a Objetos 4
Encapsulación 4
Herencia 4
Polimorfismo 5
¿Que es Delphi? 7
Memoria Principal 8
Sistemas Operativos Soportados 8
Espacio Necesario en el Disco Duro 9
El entorno Delphi 9
La Ventana Principal 10
La Ventana de Programa 10
El Object Inspector 11
El Editor de Código Fuente 13
Desarrollo Visual de un Programa 14
Variables, Tipos de Datos y Constantes 15
Declaración de Variables 15
Asignación de Valores a Variables 17
Tipos de Datos Estándar 18
Instrucciones más Importantes 19
La Instrucción IF 19
La Instrucción CASE 21
La Instrucción REPEAT 23
La Instrucción WHILE 25
La Instrucción FOR 27
Diferencias entre Visual Basic y Delphi 29
Glosario de Términos 30
Dedicatorias y Consideraciones Finales 31
Bibliografía 32
Conclusión 33
Introducción
Inprise es una firma sobradamente conocida por la calidad de sus herramientas de desarrollo entre las que cabe destacar Borland C++, Borland C++ Builder, Borland Intrabuilder, Borland Jbuilder y sobretodo Borland Delphi.
Borland Delphi que represento la primera apuesta de Inprise por un entorno de desarrollo netamente visual, sigue evolucionando y lo hace convirtiéndose en una herramienta de ultima generación sumamente avanzada. El entorno de desarrollo de Borland Delphi es simple, flexible y potente al mismo tiempo, contando con un gran numero de componentes prefabricados que simplificarán de forma notable la creación de cualquier aplicación. El lenguaje de base de Borland Delphi es Object Pascal, una potente versión de Pascal que hereda toda la experiencia que Inprise ha adquirido durante mas de una década de desarrollo de compiladores de este lenguaje.
Algo que diferencia a Delphi de muchos otros competidores es el echo de tratarse de un compilador altamente optimizado, que genera código directamente ejecutable, no pseudo - código que debe ser interpretado posteriormente en tiempo de ejecución. Esto tiene básicamente dos consecuencias: el ejecutable es más rápido, al no tener que ser interpretado en tiempo de ejecución y el tamaño total final de la aplicación suele ser inferior ya que no es necesaria la distribución adicional del programa que interpreta y ejecuta el código al que se suele denominar Runtime.
Programación Orientada al Objeto
La programación orientada al objeto no es mas que una evolución de los lenguajes estructurados hacia una simplificación del mantenimiento del código, así como mayores posibilidades de reutilización de este.
Generalmente la POO se asocia rápidamente con lenguajes como C++, pero Object Pascal, de ahí su nombre cuenta con todos los componentes básicos de un lenguaje orientado a objetos con la encapsulación, la herencia y el polimorfismo.
Encapsulación
Generalmente partiendo de un correcto diseño de los tipos de objetos, los datos que se declaren en el interior del objeto solo serán manipulados por los métodos de ese objeto.
A esta característica de los objetos se la conoce como encapsulación, ya que en cierta forma aísla los datos y métodos de un objeto, como si se tratase de una cápsula, impidiendo así que sean usados unos parámetros erróneos al llamar a un método o que un determinado procedimiento manipule las variables que no son.
La encapsulación es uno de los pilares de la POO, usada correctamente facilitara en gran medida el mantenimiento del código, ya que tomada la definición de un objeto y la implementación de los métodos podemos trabajar sobre ellos sabiendo de antemano que forman una entidad totalmente independiente del resto de la aplicación.
Herencia
La encapsulación es la característica de la POO que permite asociar código y datos formando objetos autosuficientes y, por lo tanto, constituye uno de los puntos principales de los lenguajes orientados a objetos. Otra de las características es la reutilización del código para lo cual tenemos que utilizar la herencia.
A la acción de crear un tipo de objeto a partir de otro ya existente se le llama derivación. Al tipo original se le conoce como tipo base o ascendente, mientras que al nuevo tipo, que hereda las características del anterior, se le llama tipo derivado o descendente. Al hacer que un tipo derivado herede todos los miembros del tipo base será heredado también los miembros de datos y los métodos.
Polimorfismo
La propia palabra, polimorfismo, nos indica que se trata de algo capaz de presentarse o adoptar diversas formas, lo que traducido a un lenguaje orientado a objetos le corresponde con un objeto que puede corresponder a distintos tipos.
Suponga que hemos creado un tipo Tvehiculo que vamos a utilizar como base para derivar tres descendientes: Tbicicleta, Tciclomotor y Tautomovil, de las cuales a su vez se van a derivar otros tipos, constituyéndose la jerarquía de tipos que se muestra:
Aunque un deportivo, un turismo y un coche de competición son obviamente distintos, tienen muchas cosas en común: dos ejes, cuatro ruedas, etc. En realidad, todos son coches. Lo mismo ocurre con un camión, un autobús o un coche, que a pesar de ser distintos siguen teniendo muchas cosas en común y se caracterizan todos por ser automóviles. Tanto un automóvil como una bicicleta o un ciclomotor pertenecen a una misma familia, la de los vehículos, a la que podríamos añadir múltiples medios mas, como puede ser el tren, barco, avión o el carro de caballos.
Analice detalladamente esta jerarquía, vera que si el tipo Tvehiculo incorpora un cierto miembro, este será heredado por todos los demás tipos, ya que Tvehiculo es la base de todos ellos. Los miembros de Tautomovil, sin embargo son solo herederos por sus descendientes directos e indirectos y no por el tipo Tbicicleta y sus derivados. Por lo tanto, una variable del tipo Tvehiculo podría apuntar a un objeto cualquiera de esta jerarquía, ya que todos ellos contienen en su interior un Tvehiculo.
Una variable del tipo Tautomovil podría apuntar a un Tcamion, Tautobus o Tcoche, incluso a un Tturismo o Tberlina, por el contrario no podrá apuntar a un objeto Tbicicleta.
Al utilizar una variable de un cierto tipo que apunte a un objeto de otro tipo, permite manipular objetos de distintos tipos de una genérica, ahorrando mucho código.
¿Qué es Delphi?
-
Delphi es una poderosa herramienta de desarrollo de programas que permite la creación de aplicaciones para Windows 3.1/3.11, 95, 98 y NT.
-
Las aplicaciones pueden colocarse de forma muy sencilla en la pantalla según el principio de módulos. Para ello se dispone de una paleta dotada de una gran variedad de componentes, algo así como los bloques de construcción de cada programa, esta paleta es denominada por Borland VCL*.
-
Esta VCL es mucho más poderosa que la de Turbo Pascal o las conocidas OWL* 1.0 de Borland Pascal 1.0, y ofrece una abstracción mucho mas alta del sistema operativo. El programador es totalmente independiente de las particularidades de Windows como manejadores, punteros y funciones API*. La programación se hace con los cómodos componentes de Delphi y no con las complejas llamadas al sistema de Windows. Esto simplifica enormemente la hasta ahora poco clara programación bajo Windows.
-
A diferencia de otras herramientas de desarrollo programables (Visual Basic, Toolbook, etc.), con Delphi es posible crear de forma sencilla nuevos componentes que pueden entonces incorporarse a en la paleta de los componentes ya existentes y que pueden utilizarse de la misma forma. La VCL puede estructurarse libremente y así adaptarse totalmente a las situaciones de programación.
-
Delphi no solo dispone de componentes para la sencilla creación de entornos como cuadros de lista, conmutadores o cuadro de dialogo terminados, sino que cubre con sus componentes muchos temas de programación bajo Windows: se incluye entre los mismos un complejo centro de control para la creación de aplicaciones multimedia así como una gran variedad de componentes que actúan “debajo” del entorno, como tipos de listado muy variados y contenedores generales de datos. También hay herramientas de comunicación DDE y OLE a través de las que se pueden crear vínculos de datos y comandos con otras aplicaciones. Uno de los aspectos mas destacados lo constituyen los componentes que Borland ha incluido en Delphi para el desarrollo rápido y sencillo de aplicaciones muy poderosas de bases de datos. No se esta limitado a un formato de datos determinado, sino que se tiene acceso a de 50 tipos de formatos de datos diferentes a través de controladores suministrados por terceros (IDAPI y ODBC*). Entre estos se encuentran todos los estándares importantes de bases de datos en el área del PC como XBase, Paradox, Access, etc. Pero también es posible de acceder en forma muy cómoda a servidores de bases de datos de otros sistemas (por ejemplo UNIX) por medio de SQL*.
-
Delphi dispone del Object Pascal, un lenguaje de programación muy poderoso que esta sin dudas a la altura del C++ y que incluso lo supera en algunos aspectos. Este lenguaje surge a partir del desarrollo de Borland Pascal 7.0, un lenguaje que ocupa un lugar muy importante en la programación de ordenadores personales. El Object Pascal es totalmente compatible con Borland Pascal 7.0, lo que permite que programas que sean desarrollados en este ultimo puedan ser convertidos a Delphi.
-
Las aplicaciones terminadas quedan disponibles como archivos ejecutables (EXE) que pueden utilizarse solos y sin bibliotecas adicionales. Consecuentemente, la velocidad con la que pueden ejecutarse los programas creados es muy alta.
-
Delphi es una Two-Way-Tool, es decir una herramienta de dos direcciones, porque permite crear herramientas de dos formas: una de forma visual en la pantalla por medio de la función de arrastrar y colocar (Drag & Drop), la otra es a través de la programación convencional, escribiendo el código. Ambas técnicas pueden utilizarse de forma alternativa o simultanea.
Memoria principal
También la dotación de memoria es un factor que no puede dejar de tenerse en cuenta en un producto como Delphi, que utiliza la memoria de forma tan intensiva.
Con 4 MB casi no se podrá trabajar. Si con esa memoria logra iniciar Delphi (lo cual no siempre esta garantizado) el sistema estará ocupado la mayor parte del tiempo colocando datos y partes del programa en el disco duro y leyéndolos entonces de nuevo desde el mismo. Mientras más grandes sean sus proyectos, mas se incrementará el tiempo de espera. Con 8 MB debe ser posible trabajar de forma aceptable con Delphi. Para grandes proyectos con muchas imágenes será mejor trabajar con 12 MB. Pero si además de trabajar con Delphi quiere hacerlo simultáneamente con otros programas (por ejemplo, su programa preferido de dibujos para desarrollar sus imágenes propias) entonces se necesitaran16 MB o más de memoria.
Sistemas Operativos Soportados
Delphi necesita por lo menos Windows 3.1. El modo real de su procesador, Windows 3.0, no resulta adecuado con él, Delphi no realizará su trabajo. También puede ejecutarse Delphi bajo Windows 95, Windows 98 y Windows NT.
Espacio Necesario en el Disco Duro
No debe olvidar que Windows también necesita constantemente espacio en el disco duro para el intercambio de datos y programas. Después de la instalación de Delphi debe disponerse al menos de 30 Mb para el archivo de intercambio e Windows, si no quiere que el trabajo se convierta en un reto a la paciencia. Si Delphi se coloca en la misma unidad que la del archivo de intercambio, entonces debe tener en cuenta esta necesidad.
Al menos 10 MB tienen que reservarse para textos fuente y proyectos propios que se desean desarrollar con Delphi. Debido a la orientación gráfica del trabajo, se requieren grandes volúmenes de datos para imágenes de fondo, conmutadores gráficos, etc. lo que hace que un proyecto pueda alcanzar fácilmente 400 KB o más.
En total si se pretende instalar una versión completa de Delphi, será necesario disponer de 120 MB de espacio libre en el disco duro.
El entorno de Delphi
La eficacia de la VCL, es una de las bases en que se apoya el programador en el trabajo con Delphi. Pero ¿para qué sirve la mejor biblioteca si no se dispone de ningún entorno adecuado para su utilización? Afortunadamente Borland ha procurado una segunda base sólida en forma de un entorno de trabajo de alto rendimiento, diseñado únicamente con la ayuda de una biblioteca de clase moderna, es decir, la VCL misma.
El entorno de programación típico consta en Delphi de cuatro ventanas que comparten el espacio disponible en la pantalla. Cada una de estas ventanas puede modificarse, cerrarse y volverse a abrir mediante el menú view. Se trata aquí de la ventana principal, el Object inspector, el editor de código fuente y, finalmente de una o varias ventanas de programa, que representan el entorno de un programa desarrollado por uno mismo.
La ventana principal
La barra de programa del margen superior de la pantalla representa la ventana principal de Delphi. Si se cierra, todas las otras ventanas también finalizan su servicio. En la barra de menús de la ventana principal están disponibles todas las ordenes relacionadas con el procesamiento de un proyecto concreto. La carga y almacenamiento de proyectos pertenecen igualmente al menú, así como la ocultación de todas las ventanas y ventanas adicionales (de ayuda) que están a disposición del programador en el entorno de desarrollo. También se encuentran aquí las ordenes para compilar y ejecutar un programa escrito por uno mismo.
La barra de herramientas -extensamente equipada- ocupa, con mucho, el área mayor de la ventana principal, en su mitad izquierda encontramos, de nuevo las funciones más importantes del sistema de menú, como botones de herramientas.
Toda la parte derecha esta reservada para la representación de cada componente. Se simbolizan mediante varios botones gráficos. La interpretación de cada gráfico se simplifica con un pequeño texto, que aparecerá siempre que el puntero del ratón se sitúe sobre alguno de los botones. Para aumentar aun la claridad, los componentes se han dividido en otras “paginas“ y ordenado temáticamente en las secciones estándar, adicional, captura de datos, manejo de datos, diálogo, sistema, VBX y ejemplos. Se puede alternar de una sección a otra con la ayuda de las pestañas con inscripciones que aparecen en la parte inferior de las barras de herramientas.
La ventana de programa
un formulario para cada finalidad
La creación de entornos de programa, así como un parte significativa de la programación, tienen lugar en Delphi de forma puramente visual, es decir, uno simplemente “toma“ el componente deseado de la barra de herramientas de la ventana principal y lo sitúa en una ventana especialmente destinada para ello, llamado formulario formular. Naturalmente, en un programa se puede crear y utilizar cualquiera de dichos formularios. Tampoco hay ninguna diferencia entre diseñar una ventana principal o un dialogo.
Con un formulario se pueden reproducir el aspecto y comportamiento de todo tipo de ventanas, simplemente con especificar las propiedades correspondientes y/o escribir ampliaciones propias. Evidentemente aquí se encuentra el ajuste de tamaño y posición: con este fin, cada formulario posee, mientras se representa en el entorno de desarrollo (no necesariamente en el programa ejecutado), un borde que permite modificar la posición y el tamaño por los cuatro lados.
Mientras que el formulario representa solamente el marco de un programa, los componentes contenidos en el, se encargan de la interacción con el usuario. Los componentes que se utilizan mas a menudo son los cuadros de texto, las listas de selección, o los botones de alternar, aunque también las barras de menú o de estado cuentan entre los posibles candidatos, solo por nombrar algunos ejemplos.
Una vez seleccionados e introducidos en el formulario, los componentes, como es natural, también se podrán modificar a voluntad posteriormente. Como propiedades principales cabría mencionar -del mismo modo que antes para el formulario- el tamaño y la posición. Con este fin muchos componentes poseen un borde que se hace visible mediante la pulsación del botón izquierdo del ratón y con cuya ayuda puede adaptarse a voluntad el tamaño en todas direcciones. La modificación de la posición se realiza con un simple Drag & Drop (arrastrar y colocar).
El Object Inspector
No obstante, malo seria para la eficacia del VCL que el tamaño y la posición fueran las únicas propiedades que admitieran modificaciones. Afortunadamente, cada componente dispone de un gran numero de parámetros modificables, de modo que para su procesamiento, incluso con una sola ventana propia, basta: el Object Inspector.
En el Object Inspector se indican en orden alfabético todas las propiedades y eventos del componente seleccionado en ese momento. Si se selecciona otro componente (por ejemplo, con la ayuda de la lista desplegable en la primera línea del Object Inspector, o bien mediante la pulsación directa sobre otro componente del formulario), el contenido del Object Inspector se adapta al instante.
Las propiedades y eventos se representan en el Object Inspector en distintas paginas de la ventana con la ayuda de las pestañas de la parte inferior de la ventana (o bien mediante CTRL + TAB) se puede escoger la pagina deseada. Cada pagina esta subdividida en dos mitades.
Consideremos primero la pagina de propiedades. Allí se encuentran, en la mitad izquierda, los nombres de todas las propiedades. Como ejemplo sirve aquí una propiedad presente en muchos componentes: Caption (título).
La mitad derecha contiene el valor actual de cada propiedad. Puede tratase de números, cadenas de caracteres, constantes determinadas, así como de gráficos y textos enteros. En caso de que la propiedad mencionada arriba Caption, sea una cadena de caracteres se podría haber introducido, por ejemplo, la palabra “Acerca de...”. Suponiendo que se estén manejando ahora las propiedades de un formulario, aparecerá el texto introducido en la barra de título de la ventana, mientras que en el caso de un botón de alternar, el texto aparecerá en forma de inscripción.
Como ya se ha mencionado, a la pagina de eventos del Object inspector se accede mediante la pulsación de la pestaña correspondiente en la parte inferior de la ventana o bien por medio del teclado CTRL + TAB.
En su mitad izquierda. La ventana contiene los nombres de todos los lugares de corte en los que se puede añadir una rutina propia, como en el caso de las propiedades, esta lista de componentes también es distinta. Un evento que puede producirse en todos los componentes visibles es, por ejemplo, OnClick. Si se añade una rutina en ese lugar de corte de eventos, se producirá una llamada siempre que el usuario del programa pulse el botón izquierdo del ratón sobre dicho componente.
Dentro de ese formato de código fuente debe escribirse el código del programa deseado. El nombre de la rutina representa la conexión entre el evento del componente y el código fuente. Si se modifica el nombre de un evento en el Object Inspector, el nombre que le pertenece se adapta automáticamente en el código fuente.
Naturalmente, las rutinas de eventos pueden agregarse repetidas veces. Si se ha vinculado, por ejemplo, una opción de menú con una rutina OnClick que se encarga de la apertura de un archivo, y se quiere disponer de la misma función en un botón de alternar en la barra de símbolos, no es necesario escribir dos veces el código de programa correspondiente. Basta con indicar asimismo el nombre de la rutina ya existente en el evento OnClick del botón de alternar.
El editor de Código Fuente
Como se ha indicado anteriormente, en el editor de código fuente se encuentra el entorno creado por uno mismo. También se integran aquí todas las rutinas de eventos definidas.
Delphi coloca para cada ventana diseñada un archivo de código fuente propio. Por lo tanto un proyecto consta como mínimo de tantos archivos de código fuente como ventanas existan, mas el archivo de proyecto (con el que normalmente no debe hacerse nada). En programas grandes pueden aparecer fácilmente varias docenas de ellos.
Por esta razón, el editor dispone de un administrador de paginas, realizado totalmente al estilo del resto del producto con la ayuda de pestañas. Cada pagina contiene su propio archivo. Los archivos innecesarios pueden cerrarse mediante la opción de menú File/Close file. Igual que en el Object Inspector, puede accederse a una pagina en concreto mediante la pulsación de la pestaña correspondiente, o bien con la combinación de teclas CTRL + TAB.
Naturalmente, el editor ofrece toda una serie de otras funciones que han sido desarrolladas especialmente para las necesidades de los programadores.
Desarrollo Visual de un Programa
Delphi aplica su nuevo concepto de desarrollo. Combina las ventajas de una enorme biblioteca de clase orientada al objeto con una programabilidad extremadamente sencilla - ya que es visual -. Borland designa su nueva biblioteca de clase como VCL. Todo el entorno de una aplicación puede diseñarse con ella en solo una fracción de tiempo y sin conocimientos preliminares avanzados.
Ofrece una abstracción no conocida hasta la fecha de todas las singularidades especificas de Windows. Con el propio sistema operativo prácticamente no se entra en contacto, a no ser que se programe a propósito para ello.
El núcleo de la VCL, son los ya mencionados componentes, todos los elementos de entorno y de programas listos para el uso, que pueden insertarse fácilmente en la ventana correspondiente mediante Drag & Drop.
Con ello se aprovecha el principio que se emplea desde hace tiempo en el llamado Case - Tools*, es decir, el desarrollo de programas a partir de módulos prefabricados, que deben enlazarse solo de una manera determinada. El tipo de enlace determina el desarrollo del programa.
En cuanto al procesamiento de programas creados de este modo, existen algunas diferencias. Unos ejecutan el programa directamente mediante el intérprete en pasos individuales. Estos programas no son aptos para la ejecución por si mismos, sino solo dentro del programa en que fueron desarrollados. La ejecución es muy larga. Por otra parte, otros crean un tipo de código intermedio comprendido y ejecutado por una biblioteca Runtime desarrollada para ello. Visual Basic es un conocido ejemplo de esto. Desgraciadamente las aplicaciones mas complejas también padecen aquí de falta de velocidad de ejecución.
En Delphi, por el contrario, se crea durante la compilación, un autentico código de programa legible para la maquina, que puede ser procesado directamente por el procesador. La velocidad de los archivos EXE creados es por consiguiente, alta, y puede competir perfectamente con programas escritos en C o en C++.
Variables, Tipos de Datos y Constantes
¿Qué son los identificadores?
Cualquier nombre que aparece en una aplicación Delphi y que no corresponde a palabras reservadas (denominadas palabras clave) es un identificador. Pueden ser nombres de variables, tipos de datos, procedimientos, funciones u objetos. En general puede seguirse la regla de que los identificadores se declaran en código de programa antes de su utilización, es decir, se informa al compilador sobre su presencia. El compilador verifica literalmente la sintaxis del programa antes de su ejecución, e informa al programador de la presencia de posibles errores. En caso de error el proceso de compilación se interrumpe inmediatamente. De esta manera el programador puede corregir el error aparecido y efectuar de nuevo el proceso de compilación.
Los identificadores no pueden tener el mismo nombre que las palabras claves en el sistema y que posean funciones determinadas. Esta función es necesaria para permitir al compilador la identificación inequívoca de palabras clave e identificadores introducidos por el programador. Si se salta esta regla, el compilador comunica el mensaje de error correspondiente.
Declaración de Variables
Una variable es un identificador definido por el usuario, declarado antes del código del programa. El contenido de una variable depende, entre otros factores, del tipo de datos asignado, y se almacena en la memoria del ordenador. El valor de la variable puede modificarse de forma arbitraria durante la ejecución del programa. Esta circunstancia se produce por la asignación de valores.
Al declarar una variable hay que tener en cuenta la elección del nombre, que debe hacerse de forma que la utilización de la variable sea identificada en el programa. Este procedimiento es imprescindible para facilitar la lectura del programa y su comprensión.
Al declarar una variable o cualquier otro tipo de identificador (por ejemplo constantes o tipos de datos) es preciso seguir determinadas reglas referidas a la sintaxis. En primer lugar hay que tener en cuenta que los nombres de la variables no pueden tener mas de 63 caracteres, ya que el compilador solo toma en cuenta los primeros 63 caracteres. Por otra parte los nombres de las variables, lo mismo que de los demás identificadores, deben empezar con una letra o con un trazo de subrayado. No pueden contener diéresis ni caracteres como, por ejemplo, “&” o “%”. En un programa, las denominadas variables globales o publicas pueden declararse una sola vez. En caso de una declaración duplicada, el compilador da un mensaje de error. Las denominadas locales o privadas no pueden declararse dos veces dentro de una misma rutina. Por el contrario, se admite la declaración de la misma variable dentro de diversas rutinas.
El ámbito de aplicación de las variables globales abarca todo el módulo del programa en el que se declara la variable en cuestión. Para conseguir esta condición, la declaración debe encontrarse al comienzo del módulo; por ejemplo en una UNIT. Las variables locales, en contraste, solamente son válidas dentro de la rutina en que están declaradas. Es imposible el empleo de las variables fuera de esa rutina. En la declaración propiamente dicha, las variables globales no se diferencian de las locales.
A continuación se especifica la forma de declaración de las variables en una aplicación Delphi. En primer lugar se representa la palabra reservada VAR de la declaración de variable. A continuación es posible la definición e prácticamente cualquier variable. En cada declaración debe figurar el nombre de la variable y el tipo de datos. Las dos partes de la variable se dividen mediante el carácter de dos puntos. La indicación de tipo de datos debe ir seguida de un símbolo de punto y coma que permita al compilador identificar inequívocamente el final de la declaración de una o de más variables (y otras condiciones).
Var
Valor1:integer;
Valor2:integer;
Valor3:byte;
Valor4:byte;
En el ejemplo anterior, las variables Valor1 y Valor2 son del tipo integer (números enteros comprendidos desde el -32768 y el 32767) y las variables Valor3 y Valor4, del tipo byte (numero comprendidos desde el 0 al 255). Para simplificar la declaración es posible agrupar las variables del mismo tipo, separándolas por una coma. El carácter de dos puntos solo se coloca tras la ultima denominación de variable, en un bloque de variables, y al carácter de dos puntos le siguen generalmente la indicación del mismo tipo de datos aplicable a todas las variables dentro del bloque. El resultado es el siguiente.
Var
Valor1, Valor2: integer;
Valor3, Valor4: byte;
Asignación de valores a Variables
Una vez conocida la forma en que se declaran las variables en los programas Delphi, procede analizar la forma en que estas actúan en el programa y el funcionamiento de cada asignación de valor. Antes de dar un ejemplo concreto, cabe señalar que los valores susceptibles de admisión por las diferentes variables dependen del tipo de datos asignado a las variables en cuestión. Así por ejemplo a la variable Valor4 no se le puede asignar el valor 1000, ya que queda fuera del rango definido para el tipo de datos estándar byte. En este caso solo son validos los valores comprendidos desde 0 hasta 255. Si se asigna a una variable un valor que queda fuera del rango valido para el tipo en cuestión, el compilador proporciona inmediatamente un mensaje de error.
A continuación se muestra un ejemplo de asignación de valores a variables de diferentes tipos.
Var
Valor1, Valor2: integer;
Valor3, Valor4: byte;
String1: string;
Char1: char;
Boolean1: boolean;
Begin
Valor1:= 1000;
Valor2:= 20000;
Valor3:=10;
Valor4:=40;
Sring1:= `esto es una cadena de caracteres';
Char1:= `c';
Boolean1:= true;
End.
Como puede verse, en Object Pascal, la asignación siempre se realiza con la ayuda de los caracteres “:=”. A la izquierda de la asignación aparece la variable, y a la derecha, el valor asignado a la variable en cuestión. La terminación se realiza con un carácter de punto y coma. Para aumentar la legibilidad del código fuente es recomendable emplear comillas como en el ejemplo anterior. Además, en cada línea solamente debe escribirse una instrucción.
Tipos de Datos Estándar
A continuación se exponen en forma de tabla los tipos de datos disponibles en condiciones estándar en el lenguaje Object Pascal. Las variables de los tipos previamente definidos pueden generarse directamente.
Integer | Números enteros comprendidos entre -32768 y 32767; 16 bits (ocupan 2 bytes cada uno en la memoria) |
Byte | Números enteros positivos comprendidos entre 0 y 255; 8 bits (ocupa 1 byte cada uno en la memoria) |
Word | Números positivos comprendidos entre 0 y 65535; 16 bits (ocupan 2 bytes cada uno en la memoria) |
LongInt | Números enteros comprendidos entre -2147483647 y 2147483647 32 bits (ocupan 4 bytes cada uno en la memoria) |
ShortInt | Números negativos y positivos enteros comprendidos entre -128 y 127; 8 bits (ocupa 1 byte cada uno en la memoria) |
Real | Números de coma flotante de 11 a 12 decimales significativos (delante y detrás de la coma); ocupan 6 bytes cada uno en la memoria |
Single | Números de coma flotante de 7 a 8 decimales significativos; solo es posible si está activada la opción de compilador {$N+}; ocupan 4 bytes cada uno en la memoria |
Double | Números de coma flotante de 15 a 16 cifras delante y detrás de la coma; solo es posible si está activada la opción de compilador {$N+}; ocupan 8 bytes cada uno en la memoria |
Extended | Números de coma flotante de 19 a 20 cifras delante y detrás de la coma; solo es posible si está activada la opción de compilador {$N+}; ocupan 10 bytes cada uno en la memoria |
Comp | Números de coma flotante de 19 a 20 cifras delante y detrás de la coma; solo es posible si está activada la opción de compilador {$N+}; ocupan 8 bytes cada uno en la memoria |
String | Secuencia de símbolos con una longitud máxima de 255 caracteres ASCII* |
Char | Caracteres ASCII simples |
Pchar | Puntero a una cadena terminada en carácter nulo |
Pointer | Punteros que pueden apuntar a cualquier estructura de datos; sin enlace con un tipo concreto(denominados punteros sin tipo) |
Boolean | Tipo de Datos Booleano, cuyas variables pueden tomar los valores True (verdadero) o False (falso) |
Instrucciones más Importantes
Las instrucciones se cuentan entre los elementos más importantes del código de programa. Controlan, literalmente, la ejecución del programa. Existen instrucciones de bifurcación, como IF y CASE, y de iteración, como REPEAT, WHILE y FOR. A continuación se describen detalladamente cinco de estas instrucciones, que se emplean en todos los casos de escritura de aplicaciones Delphi.
La instrucción IF
Esta condición se genera con la palabra reservada IF. A continuación sigue la condición, es decir, una expresión, de cuyo resultado depende el camino de ejecución del programa. Si la condición es verdadera, el código de programa se bifurca tras al palabra clave THEN. Si la expresión es falsa, se ejecuta el código de programa que aparece a continuación del bloque THEN o tras la palabra clave ELSE.
If Suma = 100 then
MessageDig (`Suma es 100', mtinformation, [mbOK], 0)
Else
MessageDig (`Suma no es 100', mtinformation, [mbOK], 0);
Si en el ejemplo anterior, la variable Suma no tiene el valor 100, el cuadro de mensaje aparece con el texto “Suma es 100”. Si el valor es distinto de 100, la ventana de mensajes aparece con el texto “Suma no es 100”. Para comprender mejor la instrucción IF esta construcción se denomina “si -entonces -sino- instrucción".
El bloque ELSE es opcional y no tiene por que aparecer siempre. Cuando existe, y el valor booleano de la condición es False, el código de programa se ejecuta a continuación del bloque THEN.
If Suma = 100 then
MessageDig (`Suma es 100', mtinformation, [mbOK], 0);
MessageDig (`Este cuadro de mensaje aparece siempre', mtinformation, [mbOK], 0)
Independientemente de lo expuesto, tanto si la suma es 100 como si no, en el presente ejemplo, el cuadro de mensaje aparece con el texto “Este cuadro de mensaje aparece siempre”. Ello es debido a que la instrucción no forma parte del bloque IF.
Tanto el bloque THEN como el ELSE, en una condición IF, pueden estar formados por varias instrucciones. Para que se ejecuten todas las instrucciones, deben estar encerradas con una instrucción BEGIN END.
If Suma = 100 then
Begin
MessageDig (`Suma es 100', mtinformation, [mbOK], 0);
Mult := suma * 100;
End
Else
Begin
MessageDig (`Suma no es 100', mtinformation, [mbOK], 0);
Mult := suma * 200;
End;
La condición de la instrucción IF puede estar formada por varias condiciones parciales enlazadas entre si mediante los operadores booleanos tales como AND (tratamiento Y) u OR (tratamiento O). Además, pude utilizarse completamente la negación NOT. Cuando esta activada la opción {$B+} del compilador, este valora totalmente las expresiones. Si dicha opción no está activada, el compilador genera un código de valoración conforme al procedimiento denominado parcial, en el que las expresiones parciales (condiciones parciales) van valorándose secuencialmente conformemente aparecen. La valoración se interrumpe cuando el resultado persiste, es decir, cuando el valor de la expresión completa ya no puede variar.
A continuación se presenta una condición IF formada por varias condiciones parciales:
If (suma = 100) or (suma = 200) then
MessageDig (`Suma es 100 o 200', mtinformation, [mbOK], 0)
Else
MessageDig (`Suma no es 100 ni 200', mtinformation, [mbOK], 0);
En este caso, el resultado de la condición IF es True cuando se cumple una de las dos condiciones. Esto ocurre porque se utiliza el operador OR para el tratamiento de las condiciones. Si en lugar de dicho operador se aplica el operado AND, el valor de la expresión en conjunto de la instrucción IF, nunca podrá ser True. Ello es debido a que una variable como la variable suma utilizada en el ejemplo, siempre tiene que tener un único valor. Dos valores de la misma variable simultáneamente son imposibles en la regla de la lógica.
La instrucción CASE
A través de la instrucción CASE pueden establecerse varias condiciones en un bloque. Cuando se cumple una de las condiciones expuestas en el bloque CASE, el código de programa que aparece a continuación de la condición en cuestión se ramifica.
Case suma of
100:
MessageDig (`Suma es 100', mtinformation, [mbOK], 0);
200:
MessageDig (`Suma es 200', mtinformation, [mbOK], 0);
500:
MessageDig (`Suma es 500', mtinformation, [mbOK], 0);
1000:
MessageDig (`Suma es 1000', mtinformation, [mbOK], 0);
End;
A continuación de la palabra CASE se expresa la referencia de las condiciones siguientes. A esta información le sigue la palabra reservada OF. En la línea siguiente comienza el bloque, que contiene las condiciones y las correspondientes ramificaciones código. El final del bloque se reconoce por el compilador gracias a la palabra clave END. Opcionalmente, en un bloque CASE también es posible una sección ELSE, de forma análoga a como ocurre con una condición IF.
Case suma of
100:
MessageDig (`Suma es 100', mtinformation, [mbOK], 0);
200:
MessageDig (`Suma es 200', mtinformation, [mbOK], 0);
500:
MessageDig (`Suma es 500', mtinformation, [mbOK], 0);
1000:
MessageDig (`Suma es 1000', mtinformation, [mbOK], 0)
Else
MessageDig (`Suma no es 100, ni 200, ni 500'+
`ni tampoco 1000', mtinformation, [mbOK], 0);
End;
La instrucción CASE no siempre es posible. El compilador proporciona un mensaje de error, por ejemplo, si durante el tratamiento de un programa, aparece la creación de un bloque CASE con una variable, partiendo de un tipo String. Tampoco es posible la instrucción CASE cuando el tipo de variables de referencia es estructurado (por ejemplo array o record). Sin embargo es preferible a la instrucción IF cuando el tipo de variables a las que se refiere el bloque CASE son Integer o del tipo subrango. La instrucción CASE debe utilizarse sobre todo cuando se necesitan varias condiciones y ramificaciones, como es el caso del ejemplo anterior. Es mucho más eficaz que la condición con varias instrucciones IF. Para aclarar estas condiciones, las condiciones del bloque CASE del ejemplo anterior se han convertido a IF.
If suma = 100 then
MessageDig (`Suma es 100', mtinformation, [mbOK], 0)
Else
If suma = 200 then
MessageDig (`Suma es 200', mtinformation, [mbOK], 0)
Else
If suma = 500 then
MessageDig (`Suma es 500', mtinformation, [mbOK], 0)
Else
If suma = 1000 then;
MessageDig (`Suma es 1000', mtinformation, [mbOK], 0)
Else
MessageDig (`Suma no es 100, ni 200, ni 500'+
`ni tampoco 1000', mtinformation, [mbOK], 0);
Como puede comprobarse, la estructura del código del bloque de condiciones preparado con ayuda de la instrucción CASE es mas claro que el correspondiente a la estructura en base a condiciones IF del ejemplo anterior.
Un inconveniente de las condiciones en el bloque CASE es que no cabe la posibilidad de enlazar condiciones entre sí a base de operadores booleanos tales como AND y OR. Por lo tanto definen una condición única.
Si varias condiciones conducen a la misma ramificación de código, en el bloque CASE pueden enumerarse separadas por comas, a fin de reducir la longitud del código fuente. En el siguiente ejemplo se muestra como funciona esta condición.
Case suma of
100, 200, 500, 1000:
MessageDig (`Suma es 100, 200, 500 o 1000', mtinformation, [mbOK], 0)
Else
MessageDig (`Suma no es 100, ni 200, ni 500'+
`ni tampoco 1000', mtinformation, [mbOK], 0);
La instrucción REPEAT
En los apartados anteriores se han visto las instrucciones IF y CASE para generar condiciones en un programa Delphi. Ahora se describen las instrucciones de bucle que se utilizan para ejecuciones repetidas de partes del código de programa. En primer lugar se describe detalladamente la instrucción REPEAT,
Con la instrucción REPEAT se crean repeticiones de instrucciones en el programa Delphi, hasta que se cumple una condición de interrupción que aparece a continuación de la palabra clave UNTIL. La condición de interrupción es una expresión booleana, y de forma análoga a como ocurre con la condición IF, se compone de varias condiciones parciales. La condición de interrupción se cumple cuando el resultado de expresión total es True.
A continuación se describe la instrucción REPEAT en base a un ejemplo concreto.
Antes del bucle REPEAT... UNTIL se establece en 0 el valor de la variable suma. Cada vez que se cumpla la condición de bucle se aumenta en 1 el valor de suma, lo que puede realizarse de una forma de una forma muy sencilla con el operador “+”. El bloque REPEAT- UNTIL se repite una y otra vez hasta que la variable suma alcanza el valor 100, que es la condición de término de bucle.
Suma := 0;
Repeat
Suma := Suma + 1;
Until Suma = 100;
Para probar de inmediato en la practica la instrucción REPEAT, puede realizarse primero un nuevo proyecto en Delphi. A continuación, se ha de insertar en el proyecto una nueva UNIT generada al pulsar el botón del ratón en la opción NEW UNIT (menú File). En el código fuente del nuevo archivo UNIT que contiene el nombre de UNIT2, se ha de insertar la instrucción USES en la que se indica que debe utilizarse la UNIT estándar WinCrt. Esta condición es necesaria para la visualización de texto por medio de una de las rutinas estándar WRITE o WRITELN.
Una vez realizadas las operaciones descritas, se declara en la sección interface de la UNIT el procedimiento ShowRepeatLoop. En la sección de implementación se escribe el código de la rutina en cuestión, de forma que el listado de la unidad en conjunto tenga la forma siguiente:
unit Unit2;
interface
uses
WinCrt
Procedure ShowRepeatLoop;
Var
Suma : integer;
Begin
Suma := 0;
Repeat
Suma := suma + 1;
Writeln(suma);
Until suma = 100;
End;
End.
Una vez escrito el código fuente de la unidad, en el formulario que se genera al realizar un proyecto nuevo, se ha de insertar un botón y programar la rutina Tform.Button1Click, tal y como se muestra en el listado siguiente:
Procedure Tform1.Button1Click (sender: TObject);
Begin
ShowRepeatLoop
End;
Antes de ejecutar el programa (pulsando la tecla F9), en la instrucción USES del archivo UNIT, enlazado con el formulario donde se encuentra el botón Button1, se inserta la entrada UNIT2, de forma que el compilador pueda enlazar esta UNIT con la del formulario. Esta opción es necesaria para que no se produzcan mensajes de error al compilar el proyecto, debido a que la rutina ShowRepeatLoop es desconocida.
Tras ejecutar el programa y pulsar el botón del ratón sobre el botón insertado en el formulario en el modo de desarrollo, se abre una ventana y se muestran en ella los diferentes pasos de la ejecución del bucle REPEAT... UNTIL. Van apareciendo los valores de la variable suma creados por la rutina ShowRepeatLoop al llamar al procedimiento estándar WRITELN.
La instrucción WHILE
Aparte de la instrucción REPEAT, el lenguaje Object Pascal de Delphi tiene otras dos funciones mas de bucle, se trata de las instrucciones WHILE y FOR. En este apartado se analizan las propiedades de la WHILE - DO.
En primer lugar conviene decir que la diferencia entre las instrucciones REPEAT y WHILE radica en que la condición de la instrucción WHILE... DO se expresa al principio, directamente después de la palabra clave WHILE. El bucle WHILE... DO se ejecuta mientras la citada condición es True. Sin embargo en la instrucción REPEAT, se trata de una condición de interrupción y la condición de la instrucción WHILE puede tomarse como condición para la ejecución del bucle.
De forma análoga a como ocurre con la condición de interrupción de la instrucción REPEAT, también en la instrucción WHILE, la condición para la ejecución del bucle puede estar formada por varias condiciones parciales que se someten a tratamiento lógico de cualquier tipo con la ayuda de los operadores AND y OR. La condición se cumple cuando el resultado de la expresión completa es True. En estos casos, la ramificación hacia el código de programa tiene lugar dentro de la instrucción WHILE - DO. Cuando el resultado de la expresión completa es False, se tiene criterio de interrupción de la ejecución reiterada del código. En este caso, las instrucciones en el bloque WHILE... DO se saltan, y la ejecución del programa continúa con la siguiente instrucción, directamente después del bloque.
Para comprender mejor la instrucción WHILE, se presenta un ejemplo de código que facilite la comprensión de esta instrucción, recurriendo a la suma que se ha utilizado en el apartado anterior.
Como consecuencia de las propiedades de la instrucción WHILE, la condición en el bucle WHILE- DO debe ser modificada ligeramente, en comparación con la condición del bucle REPEAT-UNTIL. El código de programa del bloque WHILE-DO solo puede ejecutarse cuando el valor de suma sea inferior a 100, por lo que es necesario modificar la formulación de la condición.
Suma := 0;
While suma < 100 do
Suma := suma + 1;
Conviene no olvidar que el valor de suma antes de la instrucción WHILE de ponerse a 0. Para que la ejecución del bucle WHILE-DO en el programa pueda seguirse paso a paso, la UNIT UNIT2 se amplía con un nuevo procedimiento que recibe el nombre de ShowWhileLoop. De forma análoga a como ocurre con el procedimiento ShowRepeatLoop, para presentar el texto en pantalla se utiliza en esta rutina la instrucción estándar Writeln.
Procedure ShowWhileLoop;
Var
Suma : integer;
Begin
Suma := 0;
While suma < 100 do
Begin
Suma := suma + 1;
Writeln (suma);
End;
End;
En total, en el bucle ShowWhileLoop pueden ejecutarse dos instrucciones, por lo que el principio del bloque completo debe marcarse con la palabra reservada Begin, y el final, con End.
Para comprobar las diferencias entre la ejecución de las rutinas ShowRepeatLoop y ShowWhileLoop, puede recurrirse a insertar un segundo botón en le formulario del programa. El correspondiente control toma automáticamente el nombre Button2, en el caso que se utilicen componentes Button. Pulsando dos veces el botón del ratón sobre la columna de valores del evento OnClick (en el inspector de objetos) se genera una rutina de tratamiento para el evento. Pero antes de realizar estas operaciones no hay que olvidarse de seleccionar Button2 pulsando el botón de ratón. En la rutina de tratamiento generada por Delphi, provista del nombre Tform1.Button2Click, llamar al procedimiento ShowWhileLoop.
Una vez arrancado el programa, se ha de pulsar una vez el botón del ratón sobre el botón Button1, con lo que llamara a la rutina ShowRepeatLoop (instrucción Repeat). Obsérvese los valores que se muestran en la ventana y, una vez terminada la salida de texto, ciérrese la ventana y púlsese el botón del ratón sobre el botón Button2 en el formulario para llamar a la segunda rutina, la rutina ShowWhileLoop (instrucción While). Al pulsar el botón del ratón sobre el control activo, se abrirá igualmente una ventana y se mostraran los valores actuales que la variable suma va tomando durante la ejecución del bucle. Si se ha observado detenidamente la salida de texto anterior, en la primera ventana, podrá comprobar que ambas rutinas ShowRepeatLoop y ShowWhileLoop hacen lo mismo, a pesar de que utilizan diferentes tipos de bucles.
La instrucción FOR
Hasta aquí se ha hablado de dos tipos de bucles, que se ejecutan cuando la condición definida es True (bucle While... do) o False (Bucle Repeat... Until). En el presente apartado se presenta el tercer tipo de bucle, denominado FOR... DO, en el que no se necesita ninguna condición para la interrupción o para la ejecución del código del programa. En los bucles FOR... DO se define exactamente con anterioridad cuantas veces se repetirá la ejecución del código.
Para la implementación de un bucle FOR... DO es imprescindible declarar previamente una variable numérica, por ejemplo del tipo Integer o Byte. La instrucción FOR introduce la denominada iteración a intervalos, que se ejecuta hasta que el contador alcanza un determinado valor, partiendo del valor inicial. En la instrucción FOR se indica tanto el valor inicial del contador como el final. De esta forma se define la cantidad de repeticiones para el código del bucle FOR... DO. Entre los valores inicial y final del contador debe aparecer la palabra clave TO (incremento del contador o la DOWNTO (decremento del contador).
El empleo de bucles es particularmente recomendable para cumplimentar los campos de las variables de matriz con valores crecientes o decrecientes, o para ponerlos a 0. Para acceder a todos los campos de matriz, basta con escribir a continuación de la denominación ARRAY, entre corchetes, la variable numérica que aumenta (incremento) o disminuye (decremento) en 1 con cada repetición del código.
Var
Array : array[1..100] of integer;
Count : integer;
Begin
For count : = 1 to 100 do
Array1[count] := count;
End;
En el presente ejemplo se recorren todos los campos de la matriz de 1 a 100 y a cada campo se le asigna su índice. Para recorrer los campos de matriz en sentido inverso es preciso cambiar la palabra clave TO de la instrucción FOR por DOWNTO. Además es preciso cambiar entre si los valores de comienzo y de final del contador.
For count := 100 downto 1 do
Array1[count] := count;
Los bucles FOR... DO también pueden anidarse. El anidamiento es necesario, por ejemplo, cuando es necesario rellenar una matriz multidimensional. Por lo demás para cada bucle aisladamente considerado debe utilizarse una variable contadora por separado.
Var
Array2 : array[1..10, 1..100, 1..5] of integer;
Count1, Coount2, Count3: integer;
Begin
For count1 := 1 to 10 do
For count2 := 1 to 100 do
For count3 := 1 to 5 do
Array2[count1, count2, count3] := 0;
End;
En el ejemplo anterior se recorren todos los campos de la matriz tridimensional y se pone 0 a su valor.
En los bucles FOR... DO también es posible definir criterios de interrupción, pero dado que no está previsto inicialmente, para esta finalidad se recurre a la condición IF. Para abandonar un bucle FOR... DO se utiliza la instrucción estándar EXIT.
Var
Arrat3:array[10..1000] of integer;
Count3: integer;
Begin
For count3 := 10 to 1000 do
Begin
Array3[count3] := 0
If count3 = 200 then
Exit; {abandonar el bucle}
End;
End;
Un programador de Delphi debe ser consciente de la gran rapidez de los bucles, por lo que la aplicación debe realizarse siempre que se conozcan los números de repeticiones y se desee ejecutar el código con rapidez.
Diferencias Entre Visual Basic y Delphi
-
Delphi produce aplicaciones en código máquina, mientras que Visual Basic produce código para ser interpretado. Esto quiere decir que las aplicaciones Delphi son mucho más rápidas que las equivalentes escritas en Visual Basic (de 10 a 20 veces, según los datos lo Borland). Pero también significa que nos ahorramos la instalación del intérprete que necesitan los programas de Visual Basic.
-
En cualquiera de las versiones de Delphi podemos programar DLLs, para poder comunicarnos con otros lenguajes de programación.
-
Los componentes visuales de Delphi tienden, por lo general, a ser más eficientes que los correspondientes controles VBXs ya que forman parte del propio programa ejecutable final y no de una biblioteca dinámica. Un control definido en una DLL, por ejemplo, duplica inevitablemente parte del entorno de tiempo de ejecución del sistema en que fue programado, ocupa más memoria y provoca un mayor intercambio de páginas de memoria virtual con el disco.
-
En Delphi podemos programar directamente los componentes visuales. En cambio, Visual Basic no permite programar controles VBX ni OCX. Utilizando Delphi incluso podemos crear nuevos controles que hereden características de controles ya existentes.
-
Delphi puede programar tanto controladores como servidores de automatización.
-
Por último, los componentes visuales de Visual Basic pueden utilizarse desde Delphi, ya sean los obsoletos VBX para la versión de 16 bits, o los nuevos OCX en la versión de 32.
-
Delphi utiliza Object Pascal desde sus primeras versiones, un lenguaje Orientado a Objetos, lo que produce que podemos beneficiarnos de características tan importantes como son el encapsulamiento, el polimorfismo y la herencia.
Glosario de Términos
-
API : Aplication Programing Interface (Interfaz de programación de aplicaciones)
-
ASCII : American Standard Code for Information Interchange (código americano estándar de intercambio de información), es un formato de archivo que no contiene formato de texto, por lo que se puede transferir en distintos sistemas operativos y programas. Los archivos ASCII se usan universalmente para intercambiar información entre equipos.
-
CASE - TOOLS : Computer Aided Software Engineering (desarrollo de software asistido por ordenador)
-
ODBC : Open Database Conectivity. Es una interfaz de programación que permite a las aplicaciones tener acceso a datos en sistemas de administración de bases de datos que utilizan el SQL como estándar de acceso a datos.
-
OWL : Object Windows Library (librería de objetos de Windows)
-
SQL : Structured Query Language (lenguaje de consultas estructurado). Constituye un estándar de lenguaje de uso general, para consultar y modificar datos administrados por servidores especiales de bases de datos como Oracle, Sybase, Informix o Adabas).
-
VCL : Visual Component Library (biblioteca de componentes visuales.
Dedicatorias y Consideraciones Finales
Este presente trabajo se lo queremos dedicar a toda la gente que hay tras nosotros, partiendo primeramente por nuestras familias quienes gracias a su gran esfuerzo nos han ayudado en este difícil camino, creyendo en nosotros y apoyándonos, a nuestros abuelos, tíos, hermanos, amigos, nuestras(os) novias(os), “my lovin' guitar”, por su inspiración, al “gato amarillo” y al Félix, en fin todos aquellos que en poca o gran medida han hecho que nuestro sueño de apoco se convierta en realidad. A todos ustedes quienes siempre recordaremos.
Extra gracias : Al señor Luis Galdames Bert y al señor Jorge Fuentes por su gran ayuda, apoyo y conocimientos entregados sin fines de lucro alguno. (ya nos veremos pronto las caras)
Los autores.
Julio de 2001.
Bibliografía
Para la realización de este trabajo se utilizaron los siguientes textos como referencia.
-
El Gran Libro de Delphi.
Autores : Arthur Burda y Günther Färber
Editorial : Marcombo/Data Becker
-
Programación Orientada a Objetos
Autor : Luis Joyanes Aguilar
Editorial : McGraw-Hill
-
Aprenda Visual Basic 6.0 ya
Autor : Michael Halvorson
Editorial : McGraw-Hill
-
Programación con Delphi 4
Autor : Francisco Charte Ojeda
Editorial : Anaya Multimedia
Conclusión
32
Vehículo
Ciclomotor
Bicicleta
Automóvil
Montaña
Paseo
Camión
Autobús
Coche
Competición
Deportivo
Turismo
Berlina
Familiar
Descargar
Enviado por: | Cesar Galdames Bert |
Idioma: | castellano |
País: | Chile |