Académique Documents
Professionnel Documents
Culture Documents
Entender el problema
Plantear la lgica para la resolucin del problema
Desarrollar la aplicacin para resolver el problema
Compilar la aplicacin
Probar la aplicacin
Poner la aplicacin en ejecucin
nuevo que se acomoda se programa. Puede ocurrir tambin que existan maneras
ms eficientes para manejar la informacin, por lo que la aplicacin requiera de
mejoras. En resumidas cuentas, la conversin para utilizar una nueva aplicacin o
conjunto de programas puede a veces tardan meses cuando nos y llevarse a cabo
en una organizacin.
LA HISTORIA DEL DESARROLLO DE APLICACIONES DE WINDOWS.
Las interfaces grficas de usuario (GUI, por sus siglas en ingls) han
revolucionado el mundo informtico. Quiz ms importante a largo plazo es el
hecho de que las aplicaciones Windows tienen una interfaz de usuario consistente
y hasta cierto punto, mas agradable y fcil de utilizar. Esto conlleva a que los
usuarios de los ordenadores tienen ms tiempo para dominar una aplicacin, sin
tener que preocuparse de las teclas que deben pulsarse dentro de los mens y
cuadros de dilogo.
El xito que tuvieron el desarrollo y la utilizacin de aplicaciones orientadas a
Windows dejaron relegada la programacin orientada a DOS a aplicaciones
sencillas que no requeran de una interfaz grfica y a la enseanza de diversos
lenguajes de programacin, en entornos que no tampoco requeran de
capacidades grficas. Con el atrevimiento de Windows 95, la ventana de
desarrollo de DOS qued an ms relegada dentro del men de inicio de la barra
de Windows, ya no con su nombre original (DOS), sino como "Smbolo del
Sistema", dentro de los Accesorios del men de Programas del botn de Inicio.
Por otro lado, las compaas que producan compiladores para lenguajes de
programacin, comenzaron a darle preferencia al desarrollo de entornos para la
programacin en Windows. Esto a su vez tuvo como consecuencia de que dichas
empresas dejaran de mantener sus productos orientados al entorno de DOS. Con
el paso del tiempo, las herramientas y entornos de programacin orientadas a
DOS quedaron obsoletas. Ahora es posible conseguir tales productos de manera
gratuita, pero desafortunadamente las aplicaciones que se desarrollen con ellos ya
tienen un uso muy restringido o incluso no son compatibles con las nuevas
tecnologas de computacin.
Es obvio que la programacin orientada a Windows ofrece muchas ms ventajas,
tanto tecnolgicas, cientficas y comerciales. Pero todo esto tiene un precio; antes
de la existencia de aplicaciones tales como Visual Basic, Visual C o Delphi, el
desarrollo de aplicaciones para Windows era mucho ms complicado que
desarrollar aplicaciones para DOS. Los programadores tenan que preocuparse
ms de lo que estaba haciendo el ratn, de dnde estaba el usuario dentro de un
men y de si estaba realizando un clic o un doble clic en un punto determinado.
Desarrollar aplicaciones para Windows requera expertos programadores en C, e
incluso stos tenan problemas.
Con el uso comn de entornos para el desarrollo rpido de aplicaciones (RAD)
para Windows, se pueden desarrollar aplicaciones completas ms rpidamente.
Unit1.dcu
Unit1.dfm
Unit1.pas
los archivos anteriores sirven para que Delphi produzca el siguiente archivo:
Project1.exe. Dicho archivo es el programa ejecutable. El compilador de Delphi
ley la informacin contenida en el archivo Project1.dpr, para generar dicho
ejecutable.
Aparentemente el trabajo con un proyecto ya sea de Delphi o de cualquier entorno
de programacin es bastante complicado, sin embargo el entorno de
programacin es el que se encarga de administrar todos estos archivos. Adems
Delphi crea varios archivos temporales en el directorio donde se localiza en dicho
proyecto. Esto reduce el esfuerzo de la persona que desarrolla una aplicacin,
pero no lo libera de tener cuidado con la administracin de los archivos y
directorios donde radican los proyectos. Si por algn error se borra alguno de los
archivos anteriores, la aplicacin probablemente no funcione. Esta aparente
complejidad no debe amedrentar al programador. Si se tiene cuidado con
administracin de los archivos y directorios en el disco rgido de la computadora,
no debe de haber ningn problema.
Las aplicaciones actuales no necesariamente estn compuestas por un proyecto
en particular. Un proyecto puede hacer uso de recursos de otros proyectos o
incluso, un proyecto puede estar compuesto de diversos proyectos o ser parte de
otro proyecto. Pero por el momento, las aplicaciones del curso estarn limitadas a
un solo proyecto, salvo se especifique lo contrario.
Formularios
Objetos
Prcticamente todos los elementos de los entornos visuales son objetos, que unas
veces se encuentran definidos de antemano (los formularios, los controles, objetos
no visuales, etc), y otras se definen en nuestra propia aplicacin.
Todo el desarrollo de aplicaciones visuales est ntimamente ligado con la
definicin y uso de objetos, por lo que es fundamental conocer la mecnica que el
lenguaje de programacin utiliza para describir un objeto, sus caractersticas y su
funcionamiento, sobre todo a la hora de que el programador cree sus propios
controles. En muchos casos no es necesario conocer el funcionamiento de la
programacin orientada a objetos para programar, puesto que en la mayora de los
casos existen controles ya creados sin necesidad de tener que programarlos. Por
ejemplo la mayora de los objetos forman parte de la VCL de Delphi y otros
controles ya han sido escritos por terceros, sin embargo puede ser til desarrollar
un control propio para mostrar por ejemplo, una tabla de valores que contenga
Identificadores
Adems de variables, se utilizan identificadores para nombres de procedimientos, de funciones,
campos en registros, nombres de unidades, y ms. Los identificadores pueden mezclar letras
maysculas y minsculas e incluir nmeros y el carcter de guin bajo ( _ ), pero no pueden
contener espacios u otros caracteres especiales, tales como ! " # $ % & / ? , etc. Los
identificadores deben comenzar con un carcter. No hay una longitud mxima permisible para
stos, aunque se ignora todo lo que rebase los 255 caracteres. En realidad, de manera prctica,
todo lo que exceda unos 20 caracteres es demasiado largo para ser til. Los siguientes son
ejemplos de nombres de variables:
UnaVariableconNombreMuyLargo : integer;
{ un nombre largo de variable entera }
mi_variable
: integer;
: real;
: real;
Label2
: string;
Salario$
A#o
3Mx Delta
Nota
{ Comienza
blanco }
con
nmeros
contiene
espacios
en
Palabras Reservadas
A diferencia de los identificadores, las palabras reservadas son identificadores que representan
instrucciones, etiquetas, operadores, funciones o procedimientos propios del lenguaje. La siguiente
tabla muestra un pequeo conjunto de estas palabras reservadas:
ABSOLUTE
AND
ARRAY
ASM
ASSEMBLER
BEGIN
BOOLEAN
BYTE
CASE
CHAR
COMP
CONST
CONSTRUCTOR
DESTRUCTOR
DIV
DO
DOUBLE
DOWNTO
ELSE
END
EXPORT
EXPORTS
EXTENDED
EXTERNAL
FAR
FILE
FOR
FORWARD
FUNCTION
GOTO
IF
IMPLEMENTATION IN
INDEX
INHERITED
INLINE
INTEGER
INTERFACE
INTERRUPT
LABEL
LIBRARY
LONGINT
MOD
NAME
NEAR
NIL
NOT
OBJECT
OF
OR
PACKED
POINTER
PRIVATE
PROCEDURE
PROGRAM
PUBLIC
REAL
RECORD
REPEAT
RESIDENT
SET
SHL
SHORTINT
SHR
SINGLE
STRING
THEN
TO
TYPE
UNIT
UNTIL
USES
VAR
VIRTUAL
WHILE
WITH
WORD
XOR
Ninguna de estas palabras reservadas puede ser usada como identificador, ya que cada una
de ellas tiene predefinida su funcin.
-1.0
X=
-1
X=
1000
X=
3.14
: Integer;
: Integer;
: Double;
: Byte;
... y ms adelante
X1 := -1;
X := 1000;
Y := 3.14;
Z := 27;
Esto le permite al compilador efectuar una verificacin de tipo y asegurarse de que las cosas estn
en orden al ejecutarse el programa. El uso inadecuado de un tipo de datos dar como resultado un
error o advertencia del compilador que puede analizarse y corregirse de modo que pueda prevenir
un problema antes de que empiece.
Algunos tipos de datos tienen signo y otros no. Un tipo de datos con signo puede contener
nmeros tanto positivos como negativos, mientras que un tipo de datos sin signo slo puede
contener nmeros positivos. La Tabla 1 muestra los tipos bsicos de datos en Object Pascal, la
cantidad de memoria que cada uno requiere y el rango de valores posible para cada tipo de datos.
Esta tabla no incluye los tipos de cadena, los cuales se exponen ms adelante, en la seccin
"Cadenas".
Tabla 1.- Tipos de Datos Empleados en Object Pascal (Programas de 32 Bits).
Tipo de datos
Tamao
en bytes
ShortInt
-128 a 127
Byte
0 a 255
Char
WideChar
SmallInt
-32,768 a 32,767
Word
0 a 65,535
LongInt
-2,147,483,648 a2,147,483,647
Int64
-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
Integer
Cardinal
0 a 2,147,483,647
Single
Double
Real
Extended
10
Comp
-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
Currency
-922,337,203,685,477.5808 a 922,337,203,685,477.5807
Boolean
True or false
Variant
16
Vara
Al examinar la Tabla 1, podr notar que un tipo Integer es igual que uno LongInt. Entonces,
por qu Object Pascal tiene dos tipos de datos diferentes que son exactamente iguales? En
esencia es algo que se viene arrastrando de tiempos pasados. En el entorno de programacin de
16 bits, un tipo Integer requiere de 2 bytes de almacenamiento y un tipo LongInt requiere de 4
bytes.
Sin embargo, en el entorno de programacin de 32 bits, ambos requieren de 4 bytes de
almacenamiento y tienen el n-simo rango de valores. Delphi slo produce programas de 32 bits,
as que Integer y LongInt son idnticos. La mayora de los programadores emplean Integer
en vez de Longlnt.
Tal vez tambin haya notado que los tipos Int64 y Comp (computacional) tienen un rango de
valores idntico. La diferencia entre estos dos tipos est en la forma en que el compilador los trata
de manera interna. El tipo Int64 es un tipo entero, mientras que el tipo Comp es un tipo real. Es
probable que tenga pocos motivos para utilizar en sus programas el tipo Comp.
Note adems que los tipos de datos Real y Double son idnticos. En versiones anteriores de
Delphi, el tipo Real era una variable de 6 bytes. Ahora es una variable de 8 bytes. Este cambio se
hizo para hacer compatible el tipo de datos Real con los procesadores actuales. El tipo Real se
considera obsoleto y en sus aplicaciones Delphi usted debera utilizar Double en lugar de Real.
Nota
El tipo de datos Int64 es nuevo en Delphi. Hay muchas razones para la existencia de
un tipo de enteros de este tamao. Una de las ms importantes es la necesidad de un
valor entero que pueda contener los grandes valores que los discos duros actuales
requieren. Por ejemplo, Windows contiene una funcin llamada GetDiskFreeSpaceEX, la
cual puede devolver valores mayores a 2,147,483,647 (el valor mximo de un
Integer). Un tipo de datos entero de 64 bits era necesario por razones como sta.
Nota
: SmallInt;
Num1
: Integer;
Num2
: Integer;
Ms adelante ...
Num1 := 200;
Num2 := 200;
Resultado := Numl * Num2;
En este caso se trata de asignar el resultado de multiplicar dos valores Integer a un SmallInt.
Aunque esta frmula mezcla dos tipos de datos, Object Pascal puede efectuar una conversin. Tal
vez se sorprenda al descubrir que el resultado es -25,536. Si observa la Tabla 1, ver que un
SmallInt puede tener un valor mximo de 32,767. Qu pasa si toma un tipo SmallInt con un
valor de 32,767 y se le suma 1? Obtendr un valor de -32,768. Esto es en esencia igual al contador
de kilmetros de un automvil que pasa de 99,999 a 00,000 al conducir ese ltimo kilmetro. Para
ilustrarlo, realice los siguientes pasos:
1.
Inicie con una nueva aplicacin y coloque una etiqueta y un botn sobre el
formulario.
2.
Haga doble clic en el botn para crear un controlador de evento para el evento
OnClick del botn.
3.
Modifique el cdigo del dicho evento para que luzca como ste:
var
X
: SmallInt;
begin
X := 32767;
X := X + 1;
Label1.Caption := IntToStr(X);
end;
4.
Al hacer clic en el botn debe ver que la etiqueta cambia a -32768 (en caso de que se lo est
preguntando, la funcin IntToStr traduce un valor entero a una cadena de caracteres). Este
ejercicio ilustra que 32767 ms 1 es igual a -32768.
En realidad este ejemplo ilustra lo que se conoce corno desbordamiento o efecto circular. Debe
tener presentes los valores mximos posibles que pueden contener sus variables y elegir el tipo de
datos que sea lo suficientemente grande para garantizar que la variable contendr el valor sin
desbordamiento. En general no se equivocar demasiado si usa el tipo Integer como su tipo de
datos de eleccin. No es probable que tenga problemas de desbordamiento ya que el tipo de datos
Integer le ofrece un rango aproximado de -2 mil millones a +2 mil millones.
En ciertos casos, Object Pascal no puede realizar una conversin. Si es se el caso, obtendr
un error del compilador que dir algo como "Incompatible types: 'Integer' and 'Real' ".
Este error le indica que est tratando de asignar un valor que no puede almacenarse en un
tipo de datos en particular. Otro error del compilador que podra ver tiene que ver con lo
que se denomina verificacin de rango. Por ejemplo, tome este cdigo:
var
X
: Byte;
begin
X := 1000;
end;
Este cdigo generar un error del compilador que dice "Constant expression violates
subrange bounds" . El compilador le indica que est tratando de asignar un valor de 1000 a
la variable X, ya que X est declarada como de tipo Byte y un byte slo puede contener
valores de 0 a 255.
Nota
Programar es algo ms que slo introducir cdigo. Es, en ltima instancia, la combinacin de
conceptuar una tarea de programacin y despus escribir el cdigo para llevarla a cabo. El cdigo
que usted escribe simplemente va a un archivo de texto. El compilador toma ese archivo y lo
compila en cdigo de mquina que la computadora puede entender. El archivo de texto que Delphi
compila en cdigo de mquina se denomina unidad.
Una unidad es un archivo de texto que puede compilarse a un mdulo de cdigo.
Tipos de unidades
Una aplicacin GUI (Interfaz Grfica de Usuario, por sus siglas en ingls) de Delphi contendr por
lo menos dos unidades. La unidad fuente del proyecto contiene el cdigo fuente del mismo. Estas
unidades tienen la extensin DPR. Puede ver la unidad fuente del proyecto seleccionando Project |
View | Source. Normalmente no es necesario modificar la unidad fuente del proyecto. De hecho, no
debe modificarla a menos de que sepa exactamente lo que est haciendo. Si la modifica en forma
accidental, podra descubrir que su aplicacin ya no compila. (Ciertas tcnicas de programacin
avanzada requieren modificaciones al cdigo fuente del proyecto, pero eso es algo de lo que no
tiene que preocuparse por el momento.)
El segundo tipo de unidad que siempre tiene una aplicacin GUI de Delphi es la unidad del
formulario principal. Una unidad de formulario, como su nombre implica, es una unidad de cdigo
fuente con un formulario asociado. Este tipo de unidad tiene una extensin de nombre de archivo
PAS. ste es el tipo de unidad que usar con ms frecuencia en sus programas Delphi. Una
aplicacin GUI de Delphi siempre tendr una unidad de formulario (para el formulario principal),
pero tambin puede tener una o ms unidades de formulario adicionales. Por ejemplo, una
aplicacin que despliega un cuadro About (Acerca de), tendr la unidad del formulario principal y
una unidad para el cuadro About.
Nota
Habr notado que se sigue diciendo "aplicacin GUI de Delphi'. Esto se debe a que se quiere distinguir entre
una aplicacin GUI y una aplicacin de consola. Una aplicacin de modo consola es una aplicacin de
Windows de 32 bits que se ejecuta en una ventana de consola (cuadro de DOS). Una aplicacin de consola
no tiene formulario principal y podra o no contener otros formularios. Sin embargo, una aplicacin de consola
s tiene una o ms unidades.
Hay un tercer tipo de unidad que puede emplear en aplicaciones Delphi. sta es una unidad que
slo contiene cdigo fuente. Una unidad de slo cdigo contiene cdigo que se llama desde otras
unidades en el proyecto.
Nota
Forms,
05:
06:
07: {$R *.RES}
08:
09: begin
10:
Application.Initialize;
11:
Application.CreateForm(TForm1, Form1);
12:
Application.Run;
13: end.
En la lnea 1 la palabra clave program identifica a esta unidad como la unidad fuente principal del
programa. Puede ver que el nombre de la unidad, MiPrimerAp, sigue a la palabra clave program
(Delphi asigna al proyecto un nombre predeterminado hasta que usted guarde el proyecto con un
nombre ms significativo). A partir de la lnea 3 se ve una seccin identificada por la palabra clave
uses. Todo nombre de unidad que siga a esta palabra clave, hasta el punto y coma, son unidades
que dicha unidad requiere a fin de compilar. La palabra clave uses se describe con ms detalle un
poco ms adelante en la seccin "La lista uses".
En la lnea 7 se ve una directiva de compilador que le indica a Delphi que incluya el archivo de
recursos de este proyecto ({$R *.RES}).
La lnea 9 contiene la palabra clave begin, y la lnea 13 la palabra clave end. Note que la palabra
clave end en la unidad est seguida de un punto. (Una unidad puede tener muchos bloques de
cdigo delimitados con begin y end, pero slo una instruccin end final.) El cdigo de las lneas
10, 11 y 12 es el que inicializa la aplicacin, crea el formulario principal de la aplicacin e inicia la
ejecucin de sta. Para escribir programas en Delphi no es necesario que se preocupe por los
detalles de este cdigo.
Nota
Las palabras clave begin y end marcan un bloque de cdigo. Un bloque de cdigo
puede contener slo unas cuantas lneas, o puede contener cientos o incluso miles de
lneas de cdigo.
Veamos otra unidad bsica de Pascal. Elija File | New. Cuando aparezca el cuadro de dilogo New
Items, localice el icono con el nombre unit y haga doble clic en l. Delphi crear una nueva
unidad y la desplegar en el editor de cdigo. El Listado 2 muestra el cdigo generado para esta
unidad.
Unit Unit2;
02:
03:
Interface
04:
05:
Implementation
06:
07:
end.
Esta unidad tiene dos cosas en comn con la unidad mostrada en el Listado 1. Primero, sta
comienza con la palabra clave unit seguida por el nombre de unidad Unit2 (un nombre
predeterminado creado por Delphi). Aunque el cdigo del Listado 1 comienza con la palabra clave
program y que el cdigo anterior inicia con la palabra clave unit, hay algunos elementos en
comn: una unidad Pascal comienza con una de estas dos palabras seguidas del nombre de la
unidad, y al final de ambos listados aparece la palabra clave end. Aqu, otra vez, la palabra clave
end est seguida de un punto para sealar el final de la unidad.
El cdigo del Listado 2 difiere del cdigo del Listado 1 en que tiene secciones marcadas como
interface e implementation. Una unidad que no es la unidad fuente principal del programa
debe contener una seccin interface y una implementation. Estas dos Palabras clave se
describirn con ms detalle en las secciones tituladas "La seccin interface" y "La seccin
implementation", respectivamente. El Listado 2 tambin difiere del Listado 1 en que no hay
instruccin begin. La unidad principal de un programa debe tener tanto las instrucciones begin
como end, pero una unidad fuente slo debe contener una instruccin end final.
Las siguientes secciones describen palabras clave que se emplean dentro de una unidad Pascal.
La lista uses
La lista uses es una lista de unidades externas a las que hace referencia esta unidad.
Observe el Listado 1. Note la palabra clave uses en la lnea 3. sta indica el inicio de una seccin
que contendr una lista de otras unidades de las que depende esta unidad. Por ejemplo, la lnea 11
del Listado 1 se ve como sigue:
Application.CreateForm(TForm1, Form1);
Esta lnea de cdigo contiene informacin que se localiza en otras unidades y no puede
encontrarse en esta unidad. El procedimiento identificado por Application.CreateForm se
ubica en una unidad de Delphi de nombre Forms.pas, y los identificadores Tform1 y Form1 se
localizan en la unidad del formulario principal del proyecto, la cual se llama Primero.pas. La lista
uses le indica a Delphi dnde buscar informacin adicional que requerir para compilar esta
unidad. Aqu tenemos otra visin de la lista uses:
uses
Forms,
Primero in 'Primero.pas' {Form1};
Note que la lista uses contiene dos nombres de unidades, Forms y Primero. En cierto modo ste
no es un buen ejemplo de una lista uses ya que la segunda unidad listada contiene texto adicional
que por lo regular no se encuentra en una lista uses (Primero in 'Primero.pas' {Form1}).
Este texto se emplea para especificar un formulario que est contenido en una unidad y que slo
ser utilizado por la unidad fuente principal del proyecto. (El texto entre llaves es un comentario
utilizado como referencia y no tiene relacin con el resto del cdigo. Los comentarios se discuten
ms adelante en la seccin "Comentarios en el cdigo").
Hay dos reglas que necesita tener presentes al construir la lista uses:
Primera, cada unidad de la lista debe estar separada de la siguiente por medio de una coma.
Segunda, despus de la ltima unidad listada debe seguir un punto y coma. El punto y coma
seala el final de la lista uses.
Naturalmente, la lista debe contener nombres de unidad vlidos. Entonces, la lista uses est
indicada por la palabra clave uses y termina con un punto y coma. Fuera de eso, no importa cmo
est organizada dicha lista. Por ejemplo, por lo que toca al compilador, las siguientes dos listas
uses son idnticas:
uses
Windows, Messages, SysUtils, Classes, Graphcs, Controls, Forms, Dialogs,
StdCtrls;
uses
Windows,
Messages,
sysutils,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls;
Una unidad puede tener cualquier nmero de listas uses. No es necesario que todas las unidades
que esta unidad necesite estn en una sola lista uses.
Nota
En ciertos casos, Delphi agregar por usted unidades a su lista uses. Esto se hace a
travs del elemento de men File | Use Unit.
La seccin interface
Observe de nuevo el Listado 2. Note que tiene una seccin marcada con la palabra clave
interface. Esta palabra clave marca el inicio de la seccin de interfaz de la unidad.
La seccin interface es la seccin de una unidad en la que se declaran los identificadores
exportados desde esta unidad. Un identificador exportado es aqul que puede ser accedido por
otras unidades del proyecto.
La mayora de las unidades contendrn cdigo que otras unidades utilizan. El cdigo podra
implementarse como una clase, un procedimiento, una funcin o una variable de datos. Todos los
objetos que estn disponibles para otras unidades desde esta unidad deben declararse en la
seccin interface. Podra decirse que la seccin interface contiene una lista de elementos
que otras unidades pueden utilizar. La seccin interface inicia con la palabra clave interface
y termina en la palabra clave implementation.
La seccin implementation
La seccin implementation de una unidad es aqulla que contiene el cdigo real de la unidad.
La seccin implementation inicia con la palabra clave implementation y termina con la
siguiente palabra clave de la unidad. Por lo regular esta palabra clave es el end final de la unidad,
pero podra ser la palabra clave initialization en las unidades que tienen una seccin de
inicializacin. Por el momento es difcil decir algo ms, ya que hay otros aspectos de Pascal que se
necesita exponer antes de acabar todo esto. Sin embargo, se dar un ejemplo que ilustrar el uso
de las secciones interface e implementation.
Supngase que se crea una unidad que tiene un procedimiento denominado HaceAlgo.
Supngase adems que usted desea que HaceAlgo est disponible para otras unidades de su
Interface
procedure HaceAlgo;
Implementation
procedure HaceAlgo;
begin
...
{Aqu va el cdigo de HaceAlgo. }
...
end;
end.
Note que el procedimiento HaceAlgo se declar en la seccin interface y se defini ms
adelante en la seccin implementation. Aqu se est adelantando un poco. Las funciones y
procedimientos se expondrn en otra seccin y ser entonces cuando se abord en detalle las
declaraciones y definiciones.
Una unidad puede contener de manera opcional una o ms secciones const. La seccin const
se designa con la palabra clave const. Dicha seccin describe una lista de variables que se
conocen como constantes.
Una constante es un identificador que no cambia. Por ejemplo, digamos que tiene ciertos valores
que su programa utiliza una y otra vez. Puede asignar variables constantes para dichos valores.
Para ilustrarlo, agreguemos una seccin const al programa del Listado 3. Agregar una seccin
const para las constantes que son pblicas (disponibles para otras unidades) y otra seccin
const para las constantes que slo estn disponibles para esta unidad. El Listado 4 muestra la
unidad con las dos secciones const incorporadas.
Listado 4.- La unidad con secciones const incorporadas.
unit Unit2;
Interface
const
AppCaption = 'Mi Primer Programa v. 1.0';
procedure HaceAlgo;
Implementation
procedure HaceAlgo;
const
BaseX = 20;
BaseY = 200;
begin
...
{Aqu va el cdigo de HaceAlgo. }
...
end;
end.
Declarar un nuevo tipo de datos es una tcnica esotrica de programacin que es difcil explicar en
esta etapa, de modo que tal vez un ejemplo ayude. Suponga que su aplicacin necesita de un
arreglo (un conjunto de valores) de 20 elementos de tipo byte y que este tipo de arreglo se utilizar
una y otra vez. Puede declarar un nuevo tipo como sigue:
type
TipoMiArray = array [0..19] of Byte;
Ahora puede utilizar el identificador TipoMiArray en vez de escribir array [0..19] of Byte cada vez
que desee un arreglo de 20 bytes.
Interface
type
MiArray = array [0..19] of Byte;
const
AppCaption = 'Mi Primer Programa v. 1.0';
var
X : Integer;
MiArray, MiOtroArray : TipoMiArray;
procedure HaceAlgo;
Implementation
procedure HaceAlgo;
const
BaseX = 20;
BaseY = 200;
begin
...
{Aqu va el cdigo de HaceAlgo. }
...
end;
end.
Al igual que con la palabra clave const, var tiene ms de un uso. Tambin se emplea para
declarar parmetros de funciones y procedimientos como parmetros de variables.
Nota
Las secciones descritas por las palabras clave var, const y type comienzan en la
palabra clave y terminan en la siguiente palabra clave de la unidad.
Comentarios en el cdigo
Antes de entrar en el detalle del lenguaje Pascal, se hablar brevemente acerca de los
comentarios del cdigo. Los comentarios son lneas de texto en su cdigo fuente que estn ah
con fines de documentacin y que son ignoradas por el compilador. Los comentarios se pueden
emplear para describir lo que hace el cdigo, suministrar informacin de derechos de autor, o
simplemente para realizar anotaciones para usted u otros programadores.
Los comentarios pueden indicarse hasta en tres formas diferentes. Las siguientes son lneas
vlidas de comentarios:
(* No olvidar liberar
esta memoria! *)
{ ADTAPI.PAS 2.50
Copyright (c) TurboPower Software 1996-98
Jorge necesita corregir esta seccin de cdigo }
Probablemente el tipo ms comn de comentario utilizado en Delphi utilice llaves, como se ilustra
en el segundo caso. Para iniciar el comentario se emplea una llave de apertura y para terminarlo
una llave de cierre { / }. Otro tipo de comentario utiliza (* para iniciarlo y *) para concluirlo.
Existe una diferencia entre los comentarios indicados en esta forma y el empleo de llaves: los
comentarios del par (* / *) pueden emplearse para comentar grandes secciones de cdigo que
contengan otras lneas de comentarios. Estos dos tipos de comentarios pueden utilizarse para
comentar una o varias lneas de cdigo.
Nota
En Pascal, las llaves tienen otro uso. Cuando se emplean junto con un signo de
moneda ($), significan una directiva del compilador. Para indicarle al compilador que
no genere sugerencias de compilacin, puede colocar una lnea como sta en su
cdigo fuente:
{$HINTS OFF}
Cuando el compilador ve esta lnea, deja de generar sugerencias en esta unidad hasta
que encuentre una directiva {$HINTS ON} correspondiente.
El tercer tipo de comentario se indica mediante dos diagonales. Con frecuencia se le llama el estilo
C de comentarios, ya que se utiliza en C y C++. Este tipo slo puede utilizarse para lneas
individuales de cdigo. Debe tener presente que este tipo de comentario no es vlido en todas las
versiones de Delphi o Pascal. Si est escribiendo cdigo que podra utilizarse en Delphi 1 as como
en versiones posteriores, debe asegurarse de no emplear este tipo de comentarios.
Nota
Para el cdigo de produccin (cdigo que otros vern), se utiliza el estilo de llaves. Se
emplea el tipo de comentario de doble diagonal para comentar rpidamente una lnea o
dos con fines de prueba, pero slo como una medida temporal. Rara vez se utiliza el
estilo de comentarios (* / *).
El compilador ignora todo texto comentado. Si utiliza la configuracin predeterminada del IDE de
Delphi, todas las lneas de comentarios se mostrarn en texto en cursivas. Esto facilita identificar
las lneas de comentarios.
Nota
Variables
Si trabaja en un entorno de programacin en equipo, tal vez tenga que leer el cdigo
de sus colaboradores y viceversa. Los comentarios concisos en el cdigo pueden
ahorrarle horas a cualquier programador que tenga que leer y dar mantenimiento al
cdigo de otro programador. Incluso si trabaja en un entorno de un solo programador,
comentar su cdigo es una buena idea. Se sorprendera de saber con que rapidez
olvida lo que se supone que hace el cdigo que escribi. Los buenos comentarios de
cdigo pueden ahorrarle a usted y a sus colaboradores mucho tiempo, as que no se
olvide de documentar su cdigo!
Las variables tienen que declararse antes de que puedan ser utilizadas. Una variable se
declara, como antes se describi, en una seccin especial de cdigo indicada con la palabra clave
var, por ejemplo,
var
X : Integer;
Y : Integer;
Antes se expuso a la palabra clave var en trminos de una unidad de Pascal. Se dijo que las
variables utilizadas en la unidad se declaran en la seccin var de la misma. Esto es cierto, pero
tambin puede tener una seccin var en una funcin o procedimiento. Esto le permite declarar
variables en funciones y procedimientos, as como en unidades. El siguiente es un ejemplo de una
seccin var en un procedimiento:
procedure TNRMain.EjecutaClick(Sender: TObject);
var
Xn_1,
Xn,
Precision
I
deltaX, : real;
: integer;
begin
...
{ Aqu va ms cdigo }
...
end;
end.
Despus de declarar una variable, puede utilizarla para manipular datos en la memoria. Quizs
esto no tenga mucho sentido para usted, as que se darn algunos ejemplos. Los siguientes
fragmentos de cdigo emplean las variables de nombre X y Y antes declaradas. Al final de cada
lnea de cdigo hay un comentario que describe lo que sucede cuando se ejecuta la lnea:
X
:=
100;
:=
X + 50;
:=
150;
:=
X + Y;
Una variable es una ubicacin que se aparta en la memoria de la computadora para contener
algn valor.
Note varias cosas respecto a este cdigo. Primero, note que el valor de X cambia al manipularse la
variable. (Un poco ms adelante se expondrn los operadores, funciones y procedimientos de
Object Pascal que se emplean para manipular variables). Puede ver que se asignan valores a las
variables, se suman, se incrementan, etctera.
Note adems que cada instruccin en este segmento de cdigo termina con un punto y coma ( ; ).
El punto y coma se usa al final de toda instruccin de un programa Pascal.
Nota
c := a + b;
Constantes
Como se expuso con anterioridad, una constante es un identificador asignado a un valor que no
cambia. Los trminos "variable" y "constante" no se eligieron al azar. El programador puede
modificar un valor de variable; un valor de constante no puede cambiarse. Las constantes se
declaran utilizando la palabra clave const. Para declarar una constante, simplemente liste el
nombre de la constante y su valor, por ejemplo:
const
AnchoporDefecto = 400;
AltoporDefecto = 200;
Descripcion = ' Mensaje del programador.';
Note que al declarar una constante, se utiliza el signo de igual y no el operador de asignacin ( :=).
Note adems que no se especifica un tipo de datos. El compilador determina el tipo de datos de la
constante con base en el valor que se le est asignando. Las constantes pueden emplearse en su
cdigo en donde normalmente tendra un valor literal.
El uso sensato de constantes facilita la modificacin posterior del comportamiento de un programa,
en caso necesario. Para modificar el comportamiento de un programa, slo es necesario cambiar el
valor de una o ms constantes en la parte superior de la unidad, en vez de rastrear a lo largo de la
unidad todas las ocurrencias del valor y cambiarlas por otro.
Descripcin
Ejemplo
Operadores matemticos
+
Suma
x := y + z;
Resta
x := y - z;
Multiplicacin
x := y * z;
x := y / 3.14;
div
Divisin entera
x := y div 10;
Operadores de asignacin
:=
Asignacin
x := 10;
Operadores lgicos
and
AND Lgico
if (x = 1) and (y = 2) then
or
OR Lgico
if (x = 1) or (y = 2) then
Operadores de igualdad
Igual a
if (x = 10) then
<>
Diferente de
<
Menor que
>
Mayor que
<=
>=
Operadores unarios
^
Operador de apuntador
MiObjeto.Data^;
Direccin de operador
ptr := @MiRegistro;
and
x := x and $02;
or
OR a nivel de bits
x := x or $FF;
not
not
NOT lgico
Operadores diversos
$
X :=$FF;
[ ]
X := MiArray[51];
X := Record.Data;
Como puede ver, la lista de operadores es un tanto abrumadora. No se preocupe por tratar de
memorizar cada uno. Al trabajar con Object Pascal, aprender en forma gradual cmo emplear
todos los operadores. Algunos, si acaso, se utilizan rara vez y otros los utilizar todo el tiempo.
Notar que las palabras clave and, or y not se emplean en dos contextos: lgico y a nivel de bits.
Por ejemplo, la palabra clave and puede usarse para especificar una operacin de AND lgico o
una operacin de AND a nivel de bits. Observe este cdigo:
if (Bandera = True) and (X > 20) then Z := X;
En este ejemplo la palabra clave and se est usando en dos contextos completamente diferentes.
Sin duda en un principio puede resultar confuso. Descanse seguro de que el compilador sabe
cmo se est empleando la palabra clave y har lo correcto. Estamos viendo material avanzado
muy temprano en el libro, as que no se preocupe si esto no tiene mucho sentido para usted ahora.
Es casi seguro que ms adelante tenga ms sentido del que ahora tiene.
Al avanzar en el libro ver muchos ejemplos de estos operadores. En vez de tratar de memorizar la
funcin de cada operador, trate de aprender a travs del estudio minucioso de los programas de
muestra y fragmentos de cdigo.
Addr
ArcTan
Chr
Concat
Copy
Cos
CSeg
DSeg
Eof
Eoln
Exp
FilePos
FileSize
Frac
Hi
Int
IOResult
Length
Ln
Lo
MaxAvail
Returns the size of the largest contiguous free block in the heap.
MemAvail
Odd
Ofs
Ord
ParamCount
Returns the number of parameters passed to the program on the command line.
ParamStr
Pi
Pos
Pred
Ptr
Random
Round
SeekEof
SeekEoln
Seg
Sin
SizeOf
SPtr
Sqr
Sqrt
SSeg
Succ
Swap
Trunc
UpCase
Procedimientos Pascal
Append
Assign
BlockRead
BlockWrite
ChDir
Close
Dec
Decrements a variable.
Delete
Dispose
Erase
Exit
FillChar
Fills a specified number (count) of contiguous bytes with a specified value (can be
type Byte or Char).
Flush
FreeMem
GetDir
GetMem
Creates a dynamic variableof the specified size and puts the address of the block in a
pointer variable.
Halt
Inc
Increments a variable.
Insert
MkDir
Creates a subdirectory.
Move
New
Creates a new dynamic variable and sets a pointer variable to point to it.
Randomize
Initializes the built-in random number generator with a random value (obtained from
the system clock).
Read
For typed files, reads a file component into a variable. For text files, reads one or
more values into one or more variables
Readln
Executes the Read procedure, then skips to the next line of the file.
Rename
Reset
Rewrite
RmDir
RunError
ScrollTo
Seek
SetTextBuf
Str
Truncate
Val
Write
For typed files, writes a variable into a file component. For text files, writes one or
more values to the file.
Writeln
Executes the Write procedure, then outputs an end-of-line marker to the file.
Esta seccin contiene un vistazo rpido al IDE de Delphi. Debido a que se est abordando la
programacin Windows, se asume que el lector tiene conocimientos acerca del uso y manejo de
ventanas y del ratn de la computadora.
El IDE de Delphi se divide en tres partes fundamentales:
Figura 1.IDE
de
Delphi
con
un
formulario
vaco.
be aclarar que a diferencia del caso del botn (en los cuales un
mbio en la propiedad Caption del botn se reflej en el formulario,
s no en el nombre del componente), en el caso de los
mponentes memo es un tanto a la inversa. Para ser ms precisos,
componentes memo ni siquiera tienen la propiedad Caption
nida. En lugar de ello, los componentes memo tienen una
piedad llamada Lines. Est fue la propiedad que se modific de
nera automtica y que se ve reflejada en pantalla.
Para finalizar con el ejemplo, se recuerda que el ejemplo pide que se " escriba en una ventana el
mensaje "Bienvenidos a Object Pascal", cuando el usuario pulse un botn ". Para ello, realice un
clic doble con el botn izquierdo del ratn, sobre el botn "Ejecutar". Al hacer esto, deber aparecer
en pantalla el editor de cdigo. El editor de cdigo automticamente agregar lo necesario para
que la aplicacin pueda trabajar con Windows. A la sazn, el editor muestra el siguiente texto:
procedure TForm1.EjecutarClick(Sender: TObject);
begin
end;
end.
Nota
Aquellas personas que ya tienen una formacin en versiones previas de Pascal para DOS, tales
como Turbo Pascal o FPK, podran sentirse amedrentados por dicha accin. En primer lugar,
Delphi ya asign un nombre para este procedimiento (TForm1.EjecutarClick), as como unas
instrucciones entre parntesis (Sender: TObject). Por el momento, el significado de la
instruccin entre parntesis no se explicar. Basta con saber que dicha instruccin (a la que
llamaremos parmetro), es necesaria para que la aplicacin final pueda "dialogar" con el sistema
operativo Windows.
end.
Una vez hecho la programacin, ser necesario grabar el trabajo (si es que no se ha hecho).
Asgnele un nombre que sea cmodo y fcil para recordar ("MiPrimerAp" sera algo conveniente).
Una vez grabado el trabajo, ya slo queda hacer correr la aplicacin. Para ello, localice en la
ventana superior el botn de ejecucin (Run)
Despus de pulsarlo
El editor de cdigo es muy similar al explorador de Windows. Para ver una parte especfica del
cdigo, basta con pulsar dos veces sobre los elementos de la ventana izquierda del editor de
cdigo. Por ejemplo, al hacer doble clic sobre el elemento Tform1, aparecer la siguientes lneas
de programa:
SysUtils,
Classes,
Graphics,
Controls,
Type
TForm1 = class(TForm)
Ejecutar: TButton;
Resultado: TMemo;
procedure EjecutarClick(Sender: TObject);
Private
{ Private declarations }
Public
Forms,
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.DFM}