14
Delphi 6.0 Fundamentos de Programación con Object Pascal I.S.C. Leonel Vázquez Aguirre 8 FUNDAMENTOS DE PROGRAMACIÓN CON OBJECT PASCAL Pag. 1. Breve Historia de Pascal 10 2. Programación Estructurada 10 3. Tipos de Datos 10 3.1. Tipos de Datos Simples 10 3.1.1. Tipos Enteros 10 3.1.2. Tipos Reales 11 3.1.3. Tipos Booleanos 11 3.1.4. Tipos Carácter 11 3.1.5. Tipos Cadena 11 3.2. Tipos Estructurados 11 3.2.1. Arreglos 11 3.2.2. Registros 12 3.2.3. Subrangos 13 3.2.4. Conjuntos 13 3.2.5. Constantes de Tipo 13 3.2.6. Tipos Enumerados 14 3.2.7. Tipo Variant 14 4. Funciones y Procedimientos 14 5. Estructuras de Control 15 5.1. Selectivas 15 5.1.1. If...Then...Else 15 5.1.2. Case Of 15 5.2. Repetitivas 16 5.2.1. Repeat...Until 16 5.2.2. While...Do 16 5.2.3. For...Do 16 6. Introducción a la Programación Orientada a Objetos 17 Pag.

Capítulo II - Fundamentos de Programación Con Object Pascal

Embed Size (px)

Citation preview

Page 1: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

8

FUNDAMENTOS DE PROGRAMACIÓN CON OBJECT PASCAL Pag.

1. Breve Historia de Pascal 10

2. Programación Estructurada 10

3. Tipos de Datos 10

3.1. Tipos de Datos Simples 10

3.1.1. Tipos Enteros 10

3.1.2. Tipos Reales 11

3.1.3. Tipos Booleanos 11

3.1.4. Tipos Carácter 11

3.1.5. Tipos Cadena 11

3.2. Tipos Estructurados 11

3.2.1. Arreglos 11

3.2.2. Registros 12

3.2.3. Subrangos 13

3.2.4. Conjuntos 13

3.2.5. Constantes de Tipo 13

3.2.6. Tipos Enumerados 14

3.2.7. Tipo Variant 14

4. Funciones y Procedimientos 14

5. Estructuras de Control 15

5.1. Selectivas 15

5.1.1. If...Then...Else 15

5.1.2. Case Of 15

5.2. Repetitivas 16

5.2.1. Repeat...Until 16

5.2.2. While...Do 16

5.2.3. For...Do 16

6. Introducción a la Programación Orientada a Objetos 17

Pag.

Page 2: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

9

6.1. Principios y Fundamentos 17

6.1.1. Clase 17

6.1.2. Objeto 17

6.1.3. Encapsulamiento 18

6.1.4. Herencia 18

6.1.5. Polimorfismo 19

7. Partes de una Unidad de Código 19

8. Preguntas de Repaso 21

Page 3: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

10

1. Breve Historia de Pascal Pascal fue diseñado originalmente por Nicklas Wirth en los finales de los años 60's pero

fue considerado como uno de los primeros lenguajes de los 70's. Wirth creó Pascal en

respuesta a otro lenguaje más robusto desarrollado en esa época, ALGOL68. Ambos

lenguajes estaban basados en el lenguaje ALGOL60, pero ALGOL68; quería crear un

lenguaje pequeño y simple que combinara poder con simplicidad. De hecho, Pascal fue

y es utilizado como uno de los primeros lenguajes para introducir a la programación a

los estudiantes de las ciencias de la computación. Se utiliza para ilustrar la mayor parte

de los temas de la programación sin grandes complicaciones.

2. Programación Estructurada La característica distintiva de un lenguaje estructurado es la "compartición" de código y

datos. Se trata de la capacidad de un lenguaje de seccionar (dividir una aplicación en

partes llamadas subrutinas o módulos) y esconder del resto del programa toda la

información y las instrucciones necesarias para llevar a cabo una determinada tarea.

Un ejemplo de lenguaje estructurado es Pascal, Delphi utiliza Object Pascal, que es una

extensión de Pascal y que hereda de éste sus capacidades como lenguaje estructurado y

agrega además la funcionalidad para manejar objetos.

3. Tipos de Datos 3.1. Tipos de Datos Simples

3.1.1. Tipos Enteros Tipo Rango de Valores Formato Shortint -128..127 Signo 8-bit

Smallint -32,768..32767 Signo 16-bit

Integer -

21,474,883,648..21,474,883,

647

Signo 32-bit

Longint -

21,474,883,648..21,474,883,

647

Signo 32-bit

Int64 -2^63..2^63-1 Signo 64-bit

Byte 0..255 Sin Signo 8-bit

Word 0..65,535 Sin Signo 16-bit

Longword 0..4294967295 Sin Signo 32-bit

Cardinal 0..4294967295 Sin Signo 32-bit

Page 4: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

11

3.1.2. Tipos Reales Son números que se identifica por tener una parte fraccional.

Tipo Rango de Valores Bytes Requeridos

Dígitos

Real 5.0e10^-324..1.7e10^308 8 15-16

Real48 2.9e10^-39..1.7e10^38 6 11-12

Single 1.5e10^-45..3.4e10^38 4 7-8

Double 5.0e10^-324..1.7e10^308 8 15-16

Extended 3.6e10^-4951..1.1e10^4932 10 19-20

Comp -2^63+1..2^63-1 8 19-20

Currency -9233720366685477.5808 a

9233720366685477.5807

8 19-20

3.1.3. Tipos Booleanos Tipo Rango Valores Bytes Requeridos Boolean Booleano preferente de 1

Byte

1

ByteBool Booleano tamaño Byte 1

Bool Booleano de una palabra 2

WoordBool Booleano de una palabra 2

LongBool Booleano de doble palabra 4

3.1.4. Tipo Carácter

Este tipo de datos acepta solo caracteres

Tipo Tamaño en Bytes

ANSIChar 1

WideChar 2

Char 1

3.2. Tipos Estructurados 3.2.1. Arreglos

Un Arreglo es una estructura de datos que contiene elementos del mismo tipo

y su tamaño depende tanto del tipo de dato como del número de elementos que

contendrá el arreglo.

Un arreglo en Pascal se define dentro de la sección type con la palabra

reservada array.

Por ejemplo:

Type

Numeros = array [1..10] of integer;

Page 5: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

12

Define un arreglo de 10 elementos de tipo entero.

Object Pascal y en consecuencia Delphi permiten la creación de arreglos

multidimensionales, los cuales funcionan como arreglos de columnas y

renglones.

Para crear un arreglo de más de una dimensión se emplea la misma sintaxis,

pero para cada dimensión se agrega una coma. Por ejemplo:

Type

Matriz = array [1..3,1..3] of integer;

Define un arreglo de 3 columnas con 3 elementos cada una del tipo entero.

Una vez definido el arreglo se debe declarar una variable del tipo arreglo para

poder ser utilizado. Una vez declarada la variable, se puede acceder a cada

elemento del arreglo por medio de su índice.

Var

ArrNumeros : Numeros;

Arrmatriz : Matriz;

Mientero : Integer;

Begin

Mientero := Numeros[1];

end

3.2.2. Registros Un registro es una estructura de datos que contiene un conjunto de

componentes o campos, los cuales pueden ser de cualquier tipo de dato válido

en Object Pascal.

Un registro se define dentro de un programa Object Pascal dentro de la sección

type usando la palabra reservada record. Un ejemplo de un registro es el

siguiente:

Type Registro = record Nombre : String;

Edad : Integer;

Telefono: String;

End,

Var MiRegistro : Registro;

3.2.3. Subrangos

Page 6: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

13

Un subrango es un rango de valores de tipo ordinal denominado tipo anfitrión.

En el subrango se deben definir tanto el valor más pequeño como el más

grande dentro del subrango.

Un tipo de dato subrango se define dentro de la sección type de un programa.

Por ejemplo:

Type Letras = 'A'..'Z';

Opc = 1.10;

Var RgLetras : letras;

RgOpc : Opc;

Para crear este tipo de datos se deben tener dos consideraciones, una es que

deben ser de tipo ordinal, y la otra es que el valor del primer elemento debe ser

menor que el del último elemento definido.

3.2.4. Conjuntos Un conjunto es un grupo de elementos que se pueden asociar a un solo nombre

y con el cual se pueden comparar otros valores para su inclusión o exclusión

del mismo.

Una de las propiedades de los conjuntos es que pueden contener tanto valores

individuales como subrangos.

Un tipo de dato conjunto se define dentro de la sección type de un programa

utilizando las palabras reservadas set of. Por ejemplo:

Type Caracteres = set of ['a'..'z','0'..'9','_'];

Var CjCaracteres: Caracteres;

3.2.5. Constantes de tipos

Una constante de tipo no es más que una variable inicializada. Pudiera parecer

confuso el uso de una constante de tipo, pero su utilidad radica en que esta se

va a inicializar cada vez que se entra al módulo donde se declaró.

Var Opcion : Char = 'S';

3.2.6. Tipos Enumerados

Page 7: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

14

Los tipos de datos enumerados permiten definir un grupo de elementos que

pertenece a un conjunto. La única consideración a tomar en cuenta es que el

número de elementos debe ser menor de 256.

Un tipo de dato enumerado se declara dentro de la sección type de un

programa o unidad. Por ejemplo:

Type Semana = (lunes, martes, miercoles, jueves, viernes, sabado,

domingo);

Var Dia: Semana ;

3.2.7. Tipo Variant El tipo de dato Variant es un tipo de dato de 16 bytes que puede contener

cualquier tipo de dato definido para Object Pascal; esto es; puede declararse

una variable de tipo variant que contenga al principio un valor entero, luego un

valor string, un valor boolean, etc..

Aunque es un tipo de dato incorporado a Delphi, no se recomienda su uso, ya

que Object Pascal cuenta con todos los tipos necesarios para realizar cualquier

operación. La única forma en que se recomienda su uso es cuando se utiliza

OLE.

4. Funciones y Procedimientos Las funciones y procedimientos son piezas modulares de código que realizan alguna

tarea específica. Estos son conocidos como subrutinas en otros lenguajes.

Para el funcionamiento de sus programas necesita de unos procedimientos llamados

librerías de Delphi ya escritas como Definición de Variables y Constantes, Control de

Errores, Control del Sistema, entre otros.

Cuando los procedimientos y funciones son declaradas dentro de alguna clase, estos son

llamados Métodos.

Usted puede definir sus propias funciones y procedimientos declarándolos en la sección

"Interface" de un programa y definiéndolos en la sección "Implementation".

Ejemplos:

Procedure Calculo( Tipo : Integer );

Function Mayor( val1, val2 : Real ): real;

5. Estructuras de Control

Este tipo de datos son sentencias definidas por el programador capaces de

determinar la dirección de flujo del programa en base a condiciones lógicas o

Page 8: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

15

aritméticas o de datos, así como de controlar el número de veces que se ejecutará

una función. Los tipos de sentencias de control son los siguientes:

5.1. Selectivas

5.1.1. If..then...Else

If <Condición> Then

Sentencia (Condición Verdadera)

Else Sentencia(Condición Falsa);

If <Condición> then

Begin Sentencia 1;

Sentencia 2;

End Else Begin Sentencia 3;

Sentencia 4;

End;

5.1.2. Case Of

Case <Variable de Condición> Of Condición 1: Acción 1;

Condición 2: Acción 2;

Condición n: Acción n;

Else Otra acción;

End;

5.2. Repetitivas

5.2.1. Repeat...Until Se caracteriza por que la condición que determina las veces que se ejecutará el

ciclo, se evalúa al final, después de haber realizado por lo menos una vez todas

las acciones.

Repeat Acción 1;

Acción 2;

Acción n;

Until <Condición> Para la terminación del ciclo.

Page 9: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

16

5.2.2. While....Do Se caracteriza porque evalúa la sentencia condicional al principio del bloque

de instrucciones y además que éstas van incluidas entre las palabras Begin y end. While <Condición> do Begin Acción 1;

Acción 2;

Acción n;

End;

5.2.3. For...Do Se utiliza cuando se sabe hasta cuantas veces se desea ejecutar el ciclo, ya que

la condición se debe determinar durante el diseño del sistema.

For <Variable> := <Valor Num. Inicial> to <Valor Num. Final> Do Begin Acción 1;

Acción 2;

Acción n;

End;

6. Introducción a la Programación Orientada a Objetos

La programación Orientada a Objetos es una extensión natural de la programación

estructurada. El resultado de una Programación Estructurada más la Programación

Orientada a Objetos es un código limpio que facilita de una manera sencilla y simple al

mantenimiento de sistemas.

La finalidad del diseño Orientado a Objetos consiste en que cada módulo del sistema

represente un objeto y que al modelo general se le considere como un conjunto de

objetos.

Object Pascal es un lenguaje Orientado a Objetos que presenta 3 características

principales:

• Encapsulamiento • Herencia • Polimorfismo

La forma en que éstos se implementan constituye el modelo de objetos de Delphi.

6.1. Principios y Fundamentos

6.1.1. Clase Definición de estructura que declara tipos de datos, métodos y propiedades.

Una clase es un registro, un conjunto de campos conteniendo datos, cada uno

de los cuáles son de un tipo definido.

Page 10: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

17

Los registros facilitan la referencia a una colección de datos relacionados

como una entrada. Las clases pueden contener código ( Procedimientos y

Funciones) que actúan sobre los datos contenidos en los campos de Clase.

Estos procedimientos y funciones son llamadas Métodos.

Un método de clase es un procedimiento o función que puede usarse para

llevar a cabo una tarea o después de que un objeto exista en memoria.

6.1.2. Objeto Un objeto es un tipo de datos que se deriva a partir de una clase la cual

conjunta datos y código, todo dentro de un solo ente. Una vez que un objeto es

creado puede reutilizarse en otras aplicaciones reduciéndose en gran parte el

tiempo de desarrollo y aumentando la productividad. Estos se caracterizan por

contener métodos, propiedades y eventos que definen su comportamiento,

apariencia y funcionamiento.

Propiedades Son valores o atributos de un objeto definidos por default pero son

modificables tanto en tiempo de ejecución como en tiempo de diseño y

determinan la apariencia que tendrá el objeto.

En tiempo de diseño La definición de propiedades en tiempo de diseño se hace mediante el

Inspector de Objetos. Para ello selecciona el Objeto, usando el inspector de

objetos o seleccionándolo directamente de la forma, buscar la propiedad en la

columna "Properties" y en la columna de valores emplear cualquiera de las

siguientes opciones:

A) Teclear algún valor.

B) Seleccionar un valor de una lista despegable.

C) Dar clic sobre los tres puntos que se muestran en la columna de valores.

En tiempo de ejecución En tiempo de ejecución se utiliza el operador de asignación ( := ), de acuerdo a

la siguiente sintaxis:

<NombreDelObjeto>.Propiedad := Valor;

6.1.3. Encapsulamiento Literalmente significa ocultar o encerrar en una cápsula. En programación

significa que puede recibir servicios e información de otro, sin tener

conocimiento de cómo están implementados internamente. Ahí radica la

importancia de las partes Interface e Implementation de una unidad, para

diferenciar la información que se oculta y la que se muestra. La sección de

implementation es una sección privada y oculta. En Object Pascal existen

cuatro partes adicionales de una declaración de tipo que modifican que tan

accesible es: privada, protegida, pública y publicada.

Page 11: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

18

Privada ( Private ) Contiene sentencias inaccesibles a elementos fuera de la

unidad donde se declaran.

Protegida ( Protected ) Sólo las clase descendientes fuera de la unidad donde

se declaran las piezas protegidas pueden acceder a éstas.

Publica ( Public ) Las piezas declaradas en esta sección son accesibles por

cualquier otra pieza.

Publicada ( Published ) Son públicas y tienen la capacidad adicional de

hacerse disponibles desde el inspector de objetos.

6.1.4. Herencia Significa que una nueva clase deriva su comportamiento predeterminado y sus

características de una clase ancestro definida con anterioridad. La nueva clase

denominada clase descendiente. A esta estructura de ancestros y

descendientes se le conoce como jerarquía de clases y tiene una clase de base

o raíz de la que descienden el resto de las clases.

En ciertos lenguajes la herencia múltiple permite que las nuevas clases

descendientes se hereden de más de una clase ancestro, Object Pascal no

soporta la herencia múltiple.

Cada nuevo descendiente hereda toda la funcionalidad de sus ancestros y

agrega un nuevo nivel de funcionalidad.

La herencia se utiliza para representar generalización y evitar duplicidad de

código al construir clases similares.

6.1.5. Polimorfismo Literalmente indica la habilidad de un objeto para tomar muchas formas, es

decir, permite referenciar objetos de diferentes clases con significado variable

para el mismo programa. ( Dentro de cada clase, los procedimientos tienen una

implementación diferente, por ejemplo el procedimiento OPEN).

La herencia y el polimorfismo pueden usarse para construir programas basados

en clases jerárquicas.

7. Partes de una Unidad de Código Los elementos generales de una unidad de código son:

Unit

Page 12: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

19

Interface <Declaraciones de estructuras y Datos>

Implementation <Declaraciones de estructuras y Datos>

end.

Unit (Nombre de la unidad). Es el nombre con el cual Delphi identifica los

archivos.pas. Se logra cambiar el nombre al grabar el proyecto o al usar File | Save ó

File | Save as.

Interface. Las declaraciones realizadas en esta sección pueden ser accesadas desde

otras unidades declarándolas desde el "uses" de la unidad. El alcance de estas

declaraciones es global con respecto a la unidad actual. Las estructuras y datos que

puede contener se describen a continuación:

Uses. En esta sección se agregan automáticamente las librerías de Delphi al

incorporar un componente a la forma.

Type. Se identifican las declaraciones de los objetos usados en la forma. Es posible

definir un tipo de objeto de usuario para posteriormente crearlo en tiempo de ejecución.

Var. Con esta palabra reservada se indica la declaración de variables.

Const. Declaración de constantes.

Procedure <Nombre>(<Parámetros>). Se declaran procedimientos, solamente la

cabecera, con o sin parámetros.

Function <Nombre>(<Parámetros>):Tipo de dato de retorno>. Se declaran las

funciones, solamente las cabeceras, los parámetros son opcionales.

Implementation. En esta sección se pueden hacer las mismas declaraciones que en

la sección "Interface", las diferencias con respecto a esta sección son:

• El alcance de estas declaraciones es global para la unidad actual y no se pueden ver

desde otras unidades, ni aún usando el "Uses".

• Se puede declarar también un "Uses" y se aconseja que haga referencia a las

unidades creadas por el usuario dejando al "Uses" de la sección "Interface" las

referencias a las unidades propias de Delphi. Esto es con la intención de facilitar la

lectura del programa.

Page 13: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

20

• Puede incluir una sección de "Initialization" antes del "end" del programa, que sirve

para inicializar variables o separar recursos para la aplicación.

• Puede incluir también una sección de "Finalization" que libera los recursos

asignados a la sección de "Initialization".

• Para los procedimientos y funciones se escriben las cabeceras y además el código de

cada uno de ellos.

Page 14: Capítulo II - Fundamentos de Programación Con Object Pascal

Delphi 6.0 Fundamentos de Programación con Object Pascal

I.S.C. Leonel Vázquez Aguirre

21

Preguntas de Repaso

1. Describa las partes de una Unidad de Código.

2. Escriba tres diferentes tipos de datos que permite trabajar Delphi.

3. Defina los siguientes términos: Método, Propiedad, Evento, Clase y Objeto.

4. Defina: Herencia, Polimorfismo y Encapsulamiento.