viernes, 2 de mayo de 2008

ESTRUTURA DE UN PROGRAMA

La estructura de un programa son cada una de las partes que los constituyen, genericamente la estructura de un programa seria la siguiente:

Partes de un programa
Cabecera (título)
Declaración de unidades
Declaración de constantes
Declaración de tipos
Declaración de variables

Inicio
Declaración de subprogramas, procedimientos /funciones
Cuerpo del programa
End.

En pascal seria de la siguiente manera:

PROGRAM nombre;
USES crt, dos;
CONST
nom_cte1 = valor1;
nom_cteN = valorN;

TYPE
tipo1=string [15];
VAR
nom_var1 : tipo1;
nom_varN : tipoN;
BEGIN
Read/Readln(datos)

Function o procedure (incluye el conjunto de instrucciones, condiciones y procedimientos que conforman el programa)
Write/Writeln(‘El valor de a es ´,a)
END.


Cabecera de un programa: La cabecera es una sección obligatoria, debe figurar en todos los programas. Debe comenzar con la palabra reservada PROGRAM seguida del nombre del programa y un ";". Es recomendable incluír también un comentario lo utilizamos para documentar el programa, en el comentario se debe incluír el mayor número de componentes de los que se citan a continuación:
Autor del programa
Versión actual
Fecha de inicio del programa
Fecha de la última modificación
Qué se pretende que haga el programa
Nombre del fichero fuente en el que se guarda

PROGRAM MiPrimerPrograma;
(*************************************************)
(* Autor: Benito Santos Feijoo *)
(* Version: 1.0 *)
(* Fecha inicio: 25/11/2000 *)
(* Fecha modif.: 29/11/2000 *)
(* Objetivo: El que sea... *)
(* Fichero: nombre-fichero.pas *)
(*************************************************)


Declaración de unidades: En esta sección se declaran las unidades que se van a usar en el programa. La palabra reservada que comienza la declaración de unidades es USES y que va seguida de los nombres de las unidades que se quieran utilizar en el programa separados por coma ",". Se finaliza la sección con un punto y coma ";". esta sección no es obligatoria.

USES nombre_unidad1,nombre_unidad2,...,nombre_unidad_n;

Declaración de constantes: Esta sección se usa para las constantes que se van a usar en el programa, para declarar las constantes se debe empezar con la palabra reservada CONST, seguida de una lista de parejas nombre_de_la_constante=valor_de_la_constante.
Una constante es un objeto al que se le asigna un valor al declararlo y lo mantiene durante toda la ejecución del programa.

CONST
Min = 0;
Max = 1000;
Incremento = 5;
Saludo = 'Hola';

Tipos de constantes:

Constantes literales: Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen nombre. Ejemplo de declaracón de constantes literales

VolumenEsfera := 4/3 * 3.1416 * Radio * Radio * Radio;

en este ejemplo 3, 4, y 3.1416 son constantes literales


Constantes declaradas: También llamadas constantes con nombre, son las que se declaran en la sección CONST asignándoles un valor directamente.

CONST
Pi = 3.141592; (* valor real *)

Min = 0; (* entero *)

Max = 99; (* entero *)

Saludo = 'Hola'; (* cadena caract. *)


Constantes expresión: También se declaran en la sección CONST, pero a estas no se les asigna un valor directamente, sino que se les asigna una expresión. Esta expresión se evalúa en tiempo de compilación y el resultado se le asigna a la constante.

Ejemplo:
CONST
Min = 0;

Max = 100;

Intervalo = 10;

N = (Max - Min) div Intervalo;

Centro = (Max - Min) div 2;


Declaración de tipos: Esta parte se usa cuando el programador necesita definir sus propios tipos de datos en el programa. Para programas sencillos no hará falta declarar tipos, bastará con los que proporciona Pascal (Integer, Real, Boolean, String). Los tipos que se declaren en esta seccion serán utilizador luuego para declarar las variables. A veces es importante declarar tipos para hacer el código más legible pero no es es obligatorio hacerlo.

Para declarar los tipos se comienza con la palabra reservada TYPE
el siguiente ejemplo se declararan unos cuantos:
TYPE
tContador = Integer;
tPalabra = String[20];
tFinSemana = (Sabado,Domingo); (* tipo enumerado *)
tHorasDia = 0..23; (* tipo subrango *)


Declaración de variables: Esta sección, aunque no es obligatoria casi siempre se declara. Pues un programa por muy pequeño que sea, casi siempre va a hacer uso de variables.
La forma de declarar variables es la siguiente se debe comenzar con la palabra reservada VAR, seguida de una lista de parejas lista_de_variables=tipo_al_que_pertenecen. Cada par debe ir seguido por un punto y coma. La lista_de_variables es uno o más nombres de variables separados por comas.

Una variable representa una porción de memoria en donde guardamos un dato que dependerá del tipo al que pertenezca la variable. A diferencia de una constante, el valor de una variable puede cambiar durante la ejecución de un programa.
Ejemplo de declaración de variables:

VAR
I, J, K : Integer;
Contador : Integer;
Radio : Real;
Letra : Char;

Toda variable pertenece a un tipo de dato concreto. En la declaración de una variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una variable:

Declaración de variables: La declaración se realiza en la sección que comienza con la palabra VAR
Iniciación de variables: Esto no es más que darle un valor inicial a una variable, lo primero que se hace con una variable es declararla, lo siguiente es iniciarla. Esto se hace para evitar posibles errores en tiempo de ejecución, pues una variable tiene un valor indeterminado después de declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables:
Mediante una sentencia de asignación
Mediante uno de los procedimientos de entrada de datos (read o readln)


Este ejemplo reúne los dos casos:
begin

n := 10; (* asignamos valor al maximo *)

i := 1; (* asignamos valor al contador *)

while (i <= n) do

begin

writeln('El valor de i es ',i);

i := i + 1

end

end.


Utilización de variables: Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta varias formas de hacerlo. A continuación se muestran unas cuantas:
Incrementar su valor: i := i + 1
Controlar un bucle: for i:=1 to 10 do
Chequear una condición: if i<10>Participar en una expresión: n := (Max - Min) div i

Las variables se pueden declarar en diferentes tipos de datos

Clasificaciones de los tipos de datos:

Tipos estáticos: Casi todos los tipos de datos son estáticos, la excepción son los punteros y no se tratarán debido a su complejidad. Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en memoria no puede variar durante la ejecución del programa. Es decir, una vez
declarada una variable de un tipo determinado, a ésta se le asigna un trozo de memoria fijo, y este trozo no se podrá aumentar ni disminuír.

Tipos dinámicos: Dentro de esta categoría entra sólamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en los programas. Con ellos se maneja el tamaño de las variables en tiempo de ejecución, o sea, cuando el programa se está ejecutando.
Los punteros quizás sean el concepto más complejo a la hora de aprender un lenguaje de programación, sobre todo si es el primero que aprendes. Debido a esto, no lo trataremos. .

Tipos simples: Como su nombre indica son los tipos básicos en Pascal. Son los más sencillos y los más fáciles de aprender. Por todo esto, serán en los que nos centremos.
Los tipos simples más básicos son: entero, logico, caracter y real
. La mayoría de los lenguajes de programación los soportan, no como ocurre con los estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados: Mientras que una variable de un tipo simple sólo referencia a un elemento, los estructurados se refieren a colecciones de elementos.
Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos colecciones ordenadas que se representan mediante el tipo array (arreglo), colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros.

Tipos ordinales: Dentro de los tipos simples, los ordinales son los más abundantes. De un tipo se dice que es ordinal porque el conjunto de valores que representa se puede contar, es decir, podemos establecer una relación uno a uno entre sus elementos y el conjunto de los números naturales.
Dentro de los tipos simples ordinales, los más importantes son:
El tipo entero (
integer)
El tipo lógico, (boolean)
El tipo carácter (char)

Tipos no-ordinales: Simplificando, podríamos reducir los tipos simples no-ordinales al tipo real. Este tipo sirve para declarar variables que pueden tomar valores dentro del conjunto de los números reales.


Los tipos básicos que nos interesan
Después de ver una de las posibles clasificaciones para los tipos de datos, pasemos a ver los que nos interesan por ahora: los tipos simples. Realmente de los tipos simples veremos: integer, boolean,char, strings y real

El tipo integer (entero): Al declarar una variable de tipo entero, se crea una variable numérica que puede tomar valores positivos o negativos, y sin parte decimal.
Este tipo de variables, se pueden utilizar en asignaciones, comparaciones, expresiones aritméticas, en algunos casos se usan para:
Controlar un bucle (sentencias repetitivas)
Usarlas como contador, incrementando su valor cuando sucede algo
Realizar operaciones enteras, es decir, sin parte decimal

El tipo boolean (lógico): El tipo de datos lógico es el que permite usar variables que disponen sólo de dos posibles valores cierto o falso. Debido a esto, su utilidad salta a la vista, y no es otra que variables de chequeo. Sirven para mantener el estado de un objeto mediante dos valores:
si/no
cierto/falso
funciona/no funciona
on/off

El tipo real (real): Pascal soporta el conjunto entero de números. Pero no es el único, también permite trabajar con números pertenecientes al conjunto real. El tipo de datos real es el que se corresponde con los números reales. Este es un tipo importante para los cálculos.
nota: En Pascal y en todos los lenguajes de programación los numeros reales se escribe con un punto, ejemplo: 3.1416
Los tipos char (carácter): Con el tipo carácter puedes tener objetos que representen una letra, un número, etc. Es decir, puedes usar variables o constantes que representen un valor alfanumérico, cada variable sólo podrá almacenar un carácter.

Los tipos string (cadena): Con las cadenas de caracteres (strings) se puede contener en una sóla variable más de un carácter. Por ejemplo, puedes tener en una variable tu nombre.

Declaración de procedimientos y funciones: Esta sección es muy importante, aunque para los programas sencillos no se necesita. En ella puedes declarar procedimientos y funciones (subprogramas) para que se usen en otros subprogramas o en el cuerpo principal.
Se puede incluír cuantos procedimientos y funciones se desee, incluso alternar entre ellos. Se debe tener cuidado con el orden en que se escriben. Ya que si un subprograma llama a otro, debería estar declarado primero el que es llamado.
La diferencia principal entre una función y un procedimiento es que la primera devuelve un valor y el segundo no devuelve nada.
Ejemplo de como se declaran una función y un procedimiento:


FUNCTION Suma(a:integer;b:integer):integer;
begin
Suma := a + b end;
End.

PROCEDURE Escribe(frase:string);
begin
writeln(frase)
end;


Son dos subprogramas muy sencillos. La función recibe como parámetros dos variables de tipo entero, las suma y devuelve su valor. El procedimiento recibe una cadena de caracteres e invoca a writeln para escribirla en pantalla.

Cuerpo del programa: También se le llama bloque del programa, y es junto con la cabecera, la única sección obligatoria en un programa Pascal. Debe comenzar y finalizar con las palabras reservadas begin y end respectivamente.
Muy imortante: Después de la palabra end, siempre tiene que ir un punto que indica el final del programa.
Entre begin y end se escriben una o más sentencias, ya sean simples o compuestas. Las sentencias pueden ser varias: asignaciones, llamadas a procedimientos y funciones, sentencias selectivas (sentencias if, case), sentencias repetitivas (sentencias for, while, repeat).

No hay comentarios: