palabrareservadas pascal

Upload: oliverio-velasquez

Post on 12-Oct-2015

90 views

Category:

Documents


0 download

TRANSCRIPT

PalabraUsoPalabraUso

ABSOLUTEANDConjuncin lgica

ARRAYDefinicin de variables (arrays)ASM

BEGINInicio de procedimientoCASESalto condicional SWITCH - CASE - END

CONSTDefinicin de constantesCONSTRUCTOR

DESTRUCTOREXTERNAL

DIVDivisin enteraDOBucle FOR - TO/DOWNTO - DO - END

DOWNTOBucle FOR - TO/DOWNTO - DO - ENDELSESalto condicional IF - THEN - ELSE - END

ENDTrmino de saltos condicionales y buclesFILEDefinicion de un archivo

FORBucle FOR - TO/DOWNTO - DO - ENDFORWARD

FUNCTIONDefinicin de funcinGOTOSalto incondicional

IFSalto condicional IF - THEN - ELSE - ENDIMPLEMENTATION

INInclusin de conjuntosINLINE

INTERFACEINTERRUPT

LABELMODResto de divisin entera

NILNOTNegacin lgica

OBJECTOFDefinicin de variables

ORDisyuncin lgica inclusivaPACKED

PRIVATEPROCEDUREDefinicin de procedimiento

PROGRAMRECORDDefinicin de variables (registros)

REPEATBucle REPEAT - UNTILSETDefinicin de variables (conjuntos)

SHLSHR

STRINGTHENSalto condicional IF - THEN - ELSE - END

TOBucle FOR - TO/DOWNTO - DO - ENDTYPEDefinicin de tipos

UNITInterfaz de programa dadoUNTILBucle REPEAT - UNTIL

USESDefinicion para usar una libreriaVARDefinicin de variables

VIRTUALWHILEBucle WHILE - DO - END

WITHDefinicion para utilizar las variables de un registro.XORDisyuncin lgica exclusiva

Estructura de un programa en Turbo PascalAl igual que una carta comercial o un trabajo escolar escrito deben seguir siempre un modelo de escritura; as tambin, un programa escrito en Turbo Pascal deber seguir una misma estructura bsica de escritura de las intrucciones que lo conforman. En el mismo orden de la lista a continuacin, se escriben las partes que conforman la estructura de un programa en Turbo Pascal:1. Cabecera del programa2. Seccin de Unidades o Librerias3. Seccin de Declaraciones Declaracin de Etiquetas Declaracin de Constantes Declaracin de Tipos definidos por Usuario Declaracin de Variables Declaracin de Procedimientos y Funciones4. Cuerpo del programa PrincipalCabecera del programaEn la cabecera del programa se especifica el nombre y los parametros del programa, esta es solamente informativa y no tiene ningna utilidad para programa en si. Esta seccin corresponde a la primera linea del programa, la cual esta encabezada por la palabra reservada PROGRAM, seguida de un nombre cualquiera para el programa definido por el usuario. La sintaxis para esta seccin es la siguiente:PROGRAM NombrePrograma;El primer carcter para el nombre debe ser obligatoriamente una letra, y los caracteres siguientes a la primera letra; pueden letras, nmeros, o el carcter guin bajo [_], no se permiten usar espcios en blanco, ni tampoco se pueden usar las palabra reservadas como nombre de programa. Por ejemplo:PROGRAM Mi_1_Programa;Seccin de Unidades o LibreriasEn sta seccin sigue despus de la cabecera, y en ella se deben indicar las unidades o librerias que sern utilizadas por el programa. Las unidades son mdulos de instrucciones compiladas independientemente en un archivo, las cuales incorporan una serie de procedimientos y funciones creados para simplificar la programacin de ciertas tareas dentro de un programa, estos mdulos (libreras) se especifican utilizando la palabraUSES, seguido de los nombres de la libreras que se van a utilizar.Algunas de las libreras mas utilizadas son las unidades CRT, DOS, GRAPH, PRINTER. Por ejemplo, para epecificarle al programa que utilize las unidades CTR y GRAPH, en la seccin de unidades se escribe de la siguiente forma:USES Crt,Graph;Seccin de DeclaracionesEn esta seccion es donde se especifican los elementos, tales como las etiquetas, constantes, variables, procedimientos, y funcines que se necesitarn dentro del programa principal para que funcione correctamente. Se pueden declarar varios de estos elementos y en cualquier orden. La manera como se deben declarar tales elementos ya se explic en capitulos anteriores, lo nico que debenos conocer ahora es que estas declarciones se deben ubicar despus de la seccin de unidades. Observe en el siguente ejemplo en el que se declaran dos constantes y dos variables:CONST Pi = 3.1416; MiMensaje = 'VIVA COLOMBIA!';

VAR NombreCliente: string[15]; EdadCliente: Integer;Cuerpo del Programa PrincipalEl cuerpo del programa es el que contiene las instrucciones o sentencias que sern ejecutadas cuando el programa est funcionando en el computador. Las intrucciones del programa principal se encuentran acotadas entre las palabras reservadas BEGIN y END. En el siguiente modelo de ejemplo se indica la forma como debe escribirse el cuerpo del programa:BEGIN Sentencia1; Sentencia2; Sentencia3;

...

SentenciaN;

END.Mi primer programa en Turbo Pascal

En la imagen anterior se puede apreciar la escritura de un programa completo, conteniendo algunos de los elementos de las secciones ya mencionadas en esta pgina. No se preocupe si an no entiende alguna de las instrucciones de este programa ya que se explicarn ms adelante; pero, en caso de que usted tenga el lenguaje Turbo Pascal instalado en su computador, puede copiar el siguiente codigo de este programa y ejecutarlo para as ver su funcionamiento.PROGRAM Mi_Primer_Programa;

USES Crt;

VAR MiMensaje: String[22];

BEGIN clrscr; MiMensaje := 'Hola Colombia linda!'; TextColor(red); Write(Mensaje); ReadlnEND.Reglas de escritura de un programaNote en el programa de ejemplo anterior, como casi todas las sentencias terminan con un punto y coma(;) al final, esto es debido a que es una regla bsica en Turbo Pascal que todas las lneas de cdigo deben terminar en punto y coma, salvo algunas excepciones que expresan a continuacin. Las reglas relativas con los punto y coma que separan una sentencia de las otras son las siguientes:1. Cada sentencia se debe separar una de otras mediante un punto y coma.2. Se debe omitir el punto y coma si la lnea termina en una palabra reservada.3. Se puede omitir el punto y coma final si va seguido de las palabras reservadas END o UNTIL.4. La palabra reservada END al final del programa debe terminar en punto (.) final.

Instrucciones bsicas de entrada y salidaLa mayoria de las tareas que realizan los computadores requieren que el usuario le ingrese la informacin necesaria para poder llevar a cabo todas las operaciones y procedimientos, que posteriormente devolvern los resultados finales de dichas tareas. Hay varias formas de introducir informacin en un computador, a travs del teclado, el mouse, desde un disco flexible, una unidad de CD-ROM, y un sin nmero de dispositivos que no alcanzo a mencionar; del mismo modo tambin hay mltiples formas de extraerle informacin, ya sea por medio del monitor, la impresora, un mdem, entre otros.

En Turbo Pascal existen dos instrucciones sencillas que permiten realizar las tareas basicas de entrada y salida de informacin, tales como las instruccionesWrite,ReadyReadkey, las cuales veremos a continuacin.Escribir datos en la pantallaUna de las instrucciones ms utilizadas en Turbo Pascal es la intruccinWrite, la cual es un procedimiento que permite escribir en la pantalla cualquier tipo de datos, lo que resulta muy util para comunicar cualquier mensaje al usuario. La sintaxis para esta instruccin es la siguiente:Write(Dato1, Dato2, ..., DatoN);Donde:Dato1, Dato2, y DatoN,son parametros que representan un elemento que contenga la informacin que se desea visualizar en pantalla, los cuales pueden ser, una cadena de texto, un valor numrico, el valor de una variable o una constante, o incluso tambin puede ser el valor del resultado de una expresin como las que se explicaron anteriormente.La instruccinWriteposee una variante, la cual es la instruccinWritelncuya funcin es la misma que la primera, solo que esta coloca el cursor al comienzo de la siguiente linea de la pantalla despues de escribir los datos. La sintaxis para esta instruccin es la misma que la anterior, as por ejemplo, podemos utilizar estas instrucciones como sigue:Program Escribir_pantalla;{+-------------------------------------------+ |Recuerde: Para ejecutar un programa pulse | |las combinaciones de teclas CTRL+F9 y luego| |ALT+F5 para ver los resultados en pantalla | +-------------------------------------------+}

Uses Crt;

Var MiEstatura: String[8];

Begin MiEstatura := '1.68 mts'; Writeln('Bienvenidos a mi pgina'); Write('Yo tengo: ', 25, ' aos, '); Writeln('mi estatura es: ', MiEstatura); Writeln('El resultado es igual a: ', 500 + 25);End.Leer datos desde el tecladoUna de las formas de introducir informacin a un programa, es mediante la instruccinRead, la cual permite leer un dato introducido por el usuario desde el teclado, para luego almacenarlo en una determinada variable. La sintaxis para esta sentencia es la siguiente:Read (Variable);En dondevariablees un parametro que representa el nombre de una variable del mismo tipo de datos que el dato leido por la instruccin, ya sea de tipo string, integer, real o boolean.Existe tambin una variante para esta sentencia, la instruccinReadln, que realiza lo mismo que la primera, pero con la diferecia de que coloca el cursor en la siguiente linea una vez se lea el dato. Usted puede usar cualquiera de las dos.Cuando se ejecuta esta instruccin, el programa espera a que el usuario escriba un dato y luego se debe pulsar la tecla Enter para que el programa contine. Un ejemplo de un programa sencillo que utilice las intrucciones anteriormente descritas, se ecribira de la siguiente forma:Program Leer_teclado;

Uses Crt;

Var MiMensaje: String[40];

Begin Write('Escriba un mensaje y luego pulse la tecla ENTER: '); Readln(MiMensaje); Writeln('El mensaje que escribiste fue: ' , MiMensaje); Write('Ahora pulse ENTER para salir'); Readln;End.Leer un nico caracter desde el tecladoOtra manera de introducir informacin a un programa, es mediante la funcinReadkey, la cual permite leer un nico caracter desde el teclado y almacenarlo en si misma. El caracter de la tecla pulsada no se muestra en pantalla, pero el valor de la funcin puede ser usado en una instrucin o ser almacenarlo en otra variable del programa. Esta funcion resulta muy util para determinar que tecla se ha pulsado. Por ejemplo:Program Leer_tecla;

Uses Crt;

Var MiTecla: Char;

Begin Writeln('Por favor, pulse cualquier tecla'); MiTecla := Readkey; Writeln('La tecla que pulso fue: ', MiTecla); Write('Ahora pulse cualquier tecla para salir'); Readkey;End.Borrar el contenido de la PantallaA medida que los programas se van ejecutando la pantalla se va llenando de datos, en algn momento dado necesitaremos despejar la pantalla para escribir nueva informacin, esta tarea es posible por medio de la instruccinClrscr, la cual es un procedimiento borra completamente el contenido de la pantalla o la ventana actual. Esta instruccin no necesita ningn parametro y su sintaxis es:Clrscr;El procedimientoClrscrsolo se encuentra displonible en la unidadCrt, por lo que debemos especificar dicha unidad en la seccin de unidades para poder utilizarlo dentro de un programa.Cada vez que se termina de ejecutar un programa, los resultados de sus operacines permanecen escritos en la pantalla si estos no se borran, por esta razn, es recomendable utilizar este procedimiento como primera instruccin para borrar de la pantalla los resultados de los programas ejecutados con anterioridad, despejando asi la pantalla para la nueva aplicacin que se vaya a ejecutar. Veamos un ejemplo:Program Borrar_con_Clrscr;

Uses Crt;

Begin Clrscr; {Borra los resultados de programas anteriores} Writeln('Bienvenidos a mi pgina'); Write('Yo tengo ', 25, ' aos, '); Writeln('mi estatura es 1.68 mts'); Writeln('El resultado es igual a ', 500 + 25); Write('Pulse Enter para borrar la pantalla'); Readkey; Clrscr; {Borra los nuevos resultados} Write('Ahora pulse una tecla para salir'); Readkey;End.Formato de salida de nmeros realesEl formato por defecto con el que se visualizan los nmeros reales en la pantalla, es el de notacin cientifica. A veces sta notacin resulta inadecuana para presentar un nmero. Con el fin de mejorar el aspecto de presentacin en la pantalla, en las intruccinesWriteyWritelnse pueden especificar el formato de escritura de los nmeros reales, indicando la cantidad de espacios de tabulacin hacia la derecha en donde se alinear el nmero en pantalla, y la cantidad de cifras que mostrar en su parte decimal. La sintaxis para indicar el formato de salida para los nmeros es la siguiente:Write(Numero:m:n);Writeln(Numero:m:n);Dondemes la cantidad de espacios hacia la derecha en donde se alinear el nmero, ynindica el nmero de cifras que emplear la parte decimal; ste argumento slo se emplea cuando el argumentoNumeroes de tipo real. Por ejemplo:Writeln(3.14159265 :25:4);El ejemplo de la sentencia anterior dara como resultado el nmero 3.1416, como notar el nmero se redondea al nmero de cifras decimales indicado; tambin se alinear con una tabulacin de 25 espacios hacia la derecha de la pantalla. Realizando el programa de ejemplo que se presentar a continuacin, entender mejor el uso de stos parametros de formato.Program Escribir_Numeros_Reales;

Uses crt;

Var num: real;

Const Pi: Real = 3.14159265;

Begin num := 1234567.89; Clrscr; Writeln(num); {Escribe el nmero con el formato por defecto} Writeln('Fjate en donde se alinean los siguientes nmeros'); Writeln(Pi:42:3); {Lo alinea a 42 espacios a la derecha, tres decimales} Writeln(num:42:4); {a 42 espacios, cuatro decimales} Writeln(num:23:2); {a 42 espacios, dos decimales} Writeln(num:23:1); {a 42 espacios, un decimal} Writeln(num:23:0); {a 42 espacios, sin decimales} Writeln(num:0:3); {Cul ser el resultado aqu?} Writeln(num:42); {Y aqu?} Readkey;End.

Instrucciones CondicionalesSupongamos que maana es fin de semana y debes decidir entre ir a cine o ir a comer a un restaurante con tu novia, en esta situacin an no sabes que escoger, as que decides que realizaras una accin o otra dependiendo del animo y la cantidad de dinero que dispongas para maana.Con esto damos a entender que la vida real esta repleta de decisiones, en las cuales cada persona debe elegir entre una u otra opcin, de igual modo para que un programa decida el control de ejecucin entre una y otra de sus intrucciones se disponen de las sentencias condicionales, tales como las que veremos en los temas a continucain.Instruciones IF... THEN y ELSEEsta es una estructura logica de intruciones que permite decidir la ejecucin de solamente uno de dos bloques de instuciones dependiendo el valor de una expresin de control evaluada. Su sintaxis es la siguiente:IF [Expresin] THEN BEGIN Instruccin 1; Instruccin 2; ... Instruccin 5; END ELSE BEGIN Instruccin 6; Instruccin 7; ... Instruccin N; END;La expresin que sigue a IF representa la condicin que se desea evaluar. La sentencias que siguen a THEN se ejecutarn slo si el valor de la exprecin evaluada es verdadera (True, en ingles); en caso contrario, si es falsa (False, en ingles); se ejecutan la sentencias que siguen a ELSE o no se ejecuta ninguna si no existe la parte del bloque de intrucciones de ELSE.Note que despus de las palabras THEN y ELSE no debe escribirse el punto y coma. Si se escribe precediendo a ELSE, se terminar all la sentencia IF y se producir un error de compilacin. Tampoco se debe colocar punto y coma antes de la clusula ELSE.Para entender mejor realizemos el sigiente ejemplo, del programa completo en donde a una persona se le evala la edad, esta tiene dos opciones; o es mayor de edad o no:PROGRAM Evalua_Edad;

USES crt;

VAR edad: BYTE;

BEGIN {Inicio del programa} CLRSCR; WRITE('Digite su edad: '); {Pide al usuario que ingrese su edad} READ(edad); {Captura la edad y la guarda en la variable 'Edad'} IF edad < 18 THEN {Se evalua si la edad es menor que 18} BEGIN {Ejecuta condicin IF s la expresin es VERDADERA} WRITELN('Eres un Menor de Edad); END {Finaliza aqui si expresin es VERDADERA, note que no hay un(;)} ELSE {En caso que la edad sea mayor que 18} BEGIN {Ejecuta clausula ELSE en caso que expresicin sea FALSA} WRITE('Eres un Adulto'); END; {Finaliz aqui en caso que la expresin sea FALSA} READKEY; {Hace una pausa hasta que se presione cualquier tecla} END. {Fin del programa, note un punto final}La estructura condicional IF - THEN puede tambien ser ejecutada sin la clausula ELSE si solo se va a decidir entre la ejecucin o no ejecucin de un nico bloque de instrucciones, en este caso la parte de la clausula ELSE no existe, as el programa se escribiria como sigue:PROGRAM Evalua_edad_Sin_ELSE

USES crt; VAR edad: BYTE;

BEGIN CLRSCR; IF Edad = 18 THEN WRITE('Mayor de edad')ELSE WRITE('Menor de edad');Veamos este ejemplo, el cual usa varias sentencias IF... THEN de una sola instrucin, anidadas dentro de otras, para ralizar un pequeo programa que simula una calculadora sencilla:PROGRAM Calculadora1;{+-------------------------------------------+| Cada sentencia IF THEN evalua el operador || elegido y dependiendo de ste se realiza || la operacin respectiva. |+-------------------------------------------+}USES crt; {La unidad CRT permite pode ejecutar el procedimiento CLRSCR}

VAR Num1, Num2: INTEGER; resultado: REAL; Operador:CHAR;

BEGIN CLRSCR; {Borra la pantalla y coloca el cursor al principio} num1 := 0; {Inicializacin de variables} num2 := 0; WRITELN ('Calculadora Sencilla'); WRITE ('Digite el primer nmero:'); READ(Num1); WRITE ('Digite el segundo nmero:'); READLN (Num2); WRITELN ('Digite el operador +, -, *, /'); Operador := READKEY; IF operador = '+' THEN resultado := Num1 + Num2 {S operador es "+" suma} ELSE IF operador = '-' THEN resultado := Num1 - Num2 {S es "-" resta} ELSE IF operador = '*' THEN resultado := Num1 * Num2 {S es "*" multiplica} ELSE IF operador = '/' THEN resultado := Num1 / Num2 {S es "/" divide} ELSE WRITELN ('!Operador invalido!'); WRITELN ('El resultdo es: ', resultado:0:3); READLN;END.Instruccin CASEEn algunas ocasiones es necseario que un programa deba decidir entre realizar multiples opciones dependiendo del valor de una expresin, cuando esto ocurre, la sentencia IF... THEN a pesar de su potencia resulta muy inadecuada, y puede ser propensa errores de lgica de escritura, con lo que obtendriamos resultados inesperados. Para solucionar este problema recurrimos a la sentencia condicional CASE, el cual resulta ms sencilla y eficaz. Su sintaxis es la siguiente:CASE [Variable] OF

Valor1: BEGIN Instrucciones para Valor1 END;

Valor2: BEGIN Instrucciones para Valor2 END;

ValorN: BEGIN Instrucciones para ValorN END ELSE BEGIN Instrucciones ELSE END END;La instruccin CASE permite evaluar una nica variable, en la cual,Valor1,Valor2, yValorNson los distintos valores que puede tomar la variable, y dependiendo de estos se ejecutaran los bloques de instruciones correspondientes a cada valor. La sentencia CASE al igual que IF... THEN, tambin puede incluir una clausula ELSE, con el fin de ejecutar intrucciones cuando la variable no tome ninguno de los valores anteriores.Para poner en practica, veamos una versin de la calculadora anterior que usaba las sentencias IF... THEN ELSE, pero esta vez usando la estructura de la sentencia CASE, note como el codigo resulta ms entendible que la calculadora anterior.PROGRAM Calculadora2; {+-------------------------------------------+| La instruccin CASE OF evalua el operador || elegido y dependiendo de ste realiza la || operacin respectiva. Note tambin que || cada opcin tiene solo una sentencia, por || tanto omiten las palabras BEGIN y END |+-------------------------------------------+}USES crt;

VAR numero1, numero2, resultado: REAL; operador: CHAR;

BEGIN CLRSCR; {Borra la pantalla y coloca el cursor al principio} numero1 := 0; {Inicializacin de variables} numero2 := 0; resultado := 0; WRITELN('Operaciones Bsicas'); {Impresin de mensajes al usuario} WRITE('Digite un nmero: '); READLN(numero1); {Se lee el primer nmero} WRITE('Digite otro nmero: '); READLN(numero2); {Se lee el segundo nmero} WRITELN('Digite el signo de operacion [+, -, *, /]: '); operador := READKEY; {Se lee el operador}

CASE operador OF '+': resultado := numero1 + numero2; {Suma} '-': resultado := numero1 - numero2; {Resta} '*': resultado := numero1 * numero2; {Multiplicacin} '/': resultado :=numero1 / numero2; {Divisin} ELSE {En caso que digite un signo diferente a un operador} WRITE('!Operador invalido!'); END; {Final de CASE OF} WRITELN('Resultado sin formato : ',resultado:0:2); {Impresin de resultados} READKEY; {Hace una pausa hasta que se pulse una tecla} END.

Instrucciones RepetitivasEn muchas ocasiones podemos ver situaciones de la vida real, en donde, las mismas acciones se repiten un numero de veces; vemos por ejemplo, la accin que se produce en un equipo de sonido cuando colocas un casete de msica y observas detenidamente el movimiento giratorio de los engranajes, estos se repiten y se repiten hasta que la cinta se ha rebobinado completamente o hasta que alguien la detiene, lo mismo tambin ocurre con los videojuegos que practicas; podemos citar al juego Mario Bros, aqu juegas hasta que se te acaben las vidas o rescates a la princesa.As mismo, ocurre en la mayora de los programas, en la cual se requiere que un mismo conjunto de instrucciones se repitan un cierto nmero de veces tanto como sea necesario, hasta llegar a la solucin final.Como ejemplo de ello observemos el programa citado abajo, en donde se repiten varias veces las mismas instrucciones; pues en el que se deben almacenar cinco nmeros en un arreglo nmerico de tipo entero y despus sumarlos.PROGRAM Sumas; USES Crt;CONST N = 5;

TYPE VECTOR = ARRAY[1..N] OF INTEGER;

VAR VectNumero: VECTOR; Suma: INTEGER; Promedio: REAL;

BEGIN CLRSCR; WRITELN(Programa sin Instrucciones Repetitivas: '); WRITE('Digite Nmero: '); READLN(VectNumero[1]); WRITE('Digite Nmero: '); READLN(VectNumero[2]); WRITE('Digite Nmero: '); READLN(VectNumero[3]); WRITE('Digite Nmero: '); READLN(VectNumero[4]); WRITE('Digite Nmero: '); READLN(VectNumero[5]); Suma:= VectNumero[1]+ VectNumero[2]+ VectNumero[3]+ VectNumero[4]+ VectNumero[5]; Promedio := Suma / N; WRITELN('La suma es = ',Suma:0:2); WRITELN('El promedio es: ',Promedio:0:2); READKEY;END.La escritura de este programa resulta demasiado tediosa, ya que se debe escribir cinco veces el mismo mensaje, la misma sentencia de lectura y ademas deben ser cinco, ni mas ni menos. Para solucionar este tipo de problemas disponemos de los ciclos o instrucciones repetitivas en Turbo Pascal, los cuales veremos en este tema.En cada una de las instrucciones repetitivas que veremos a continuacin, daremos una solucin ms prctica al ejemplo anterior, cabe destacar que todas estas funcionan hasta que se cumple con una condicin que es la encargada de hacer detener el ciclo repetitivo y continuar con el resto de instrucciones del programa.Instruccin FOR... TO/DOWNEsta instruccin ejecuta un ciclo o bucle repetitivo de instrucciones, a medida que va incrementando o decrementando automaticamente una variable de control hasta llegar sta a un valor determinado. La variable de control presenta durante el ciclo de ejecucin un valor inicial y un valor final, los cuales deben ser ambos del mismo tipo ordinal. La instruccin FOR presenta dos formas de ejecutarse, una es la forma incremental y la otra la forma decremental, tal como se describe a continuacon.Forma Incremental:en la forma incremental se usa la palabra TO, si la variable de control tiene un valor menor o igual que el valor final, en ese caso se ejecuta el bucle y se incrementa la variable de control. Cuando el valor de la variable de control es mayor que el valor final, se da por terminada la ejecucin del bucle. La sintaxis para esta forma es:FOR [VariableControl := ValorInicial] TO [ValorFinal] DOBEGINInstruccin 1Instruccin 2...Instruccin NEND;Forma Decremental:la forma decremental es semejante a la forma incremental, solo que se usa la palabra DOWN, y la variable de control va evolucionando en sentido decreciente. La sintaxis para esta forma es:FOR [VariableControl := ValorInicial] DOWNTO [ValorFinal] DOBEGINInstruccin 1Instruccin 2...Instruccin NEND;La variable control del ciclo es generalmente de tipo INTEGER, pero tambien se puede en algunas ocasiones declarar de tipo carcter, y de ser as, la variable de control recorr el alfabeto de la (a) a la (z) de letra en letra. La sintaxis sera entonces de la siguiente forma:FOR [VariableTipoChar] := 'a'] TO/DOWNTO 'z' DOBEGINInstruccin 1Instruccin 2...Instruccin NEND;Dos cosas muy importantes que se debe tener en cuenta son; primero, que las sentencias dentro del bucle no deben modificar el valor de la variable de control; segundo, que la comprobacin de final de bucle se realiza antes de ejecutarse la sentencia FOR, por tanto, es posible que el bucle no se ejecute ninguna vez s no se establece correctamente los valores iniciales y finales de la variable de control.Tambin, que al igual que otras instrucciones de control, si el ciclo FOR tiene una sola instruccin no requiere usar las palabras delimitadoras BEGIN y END, en caso contrario s las usar.El programa mostrado a continuacin usa la instruccin FOR para realizar la misma operacin que el programa descrito al principio de esta pagina. Note la sencillez se su escritura en comparacin con el programa diseado sin ciclos repetitivos, aunque su escritura son diferentes, el resultado ser el mismo:PROGRAM Ejemplo_Istruccion_For_1;

USES Crt;

CONST N = 5;

TYPE VECTOR = ARRAY[1..N] OF INTEGER;

VAR VectNumero: VECTOR; suma: INTEGER; promedio: REAL; i: BYTE;

BEGIN CLRSCR; WRITELN('Programa con la instruccin FOR TO'); FOR i := 1 TO N DO BEGIN WRITE('Digite Nmero: '); READLN(VectNumero[i]); suma := suma + VectNumero[i]; END; promedio := suma / N; WRITELN('La suma es = ', Suma); WRITELN('El promedio es: ', Promedio:0:2); READKEY;END.Para tener an mayor claridad, a continuacin se presentan otros programas de ejemplo, note tambin como en ellos no se usar ninguna unidad, en este caso emplern la unidad estndar por defecto. Copie estos programas y ejecutelos en Turbo Pascal para que observe su funcionamiento:PROGRAM Ejemplo_Istruccion_For_2;{+----------------------------------------+ | Este programa usa la sentencia FOR de | | forma incremental para escribir linea | | a linea desde el nmero 1 hasta el 150 | +----------------------------------------+}VAR Numero: INTEGER;

BEGIN FOR numero := 1 TO 150 DO BEGIN WRITELN(numero); END; READLN;END.PROGRAM Ejemplo_Istruccion_For_3; {+----------------------------------------+ | Este programa usa la sentencia FOR de | | forma decremental para escribir linea | | a linea desde el nmero 150 hasta el 1 | +----------------------------------------+}VAR Numero: INTEGER;

BEGIN FOR numero := 150 DOWNTO 1 DO BEGIN WRITELN(numero); END; READLN;END.Una de las desventajas del ciclo FOR TO/DOWN es que hasta que no se hallan ejecutado el nmero determinado de repeticiones no se detiene el ciclo, si alguna vez tiene algun problema de este tipo deber recurrir al uso de las sentencias REPEAT o WHILE, como las que veremos a continuacin.Instruccin WHILE... DOLa instruccin WHILE... DO (que en espaol traduce: Mientras que... Haga), permite ejecutar una serie de sentencias un nmero indeterminado de veces hasta que se cumpla con una condicin establecida, aunque tambien se puede hacer que trabaje de manera similar al ciclo FOR.La instruccin WHILE primero evalua una expresin que detiene el ciclo y despues ejecuta sus instruccciones. Si este contiene ms de una instruccin, se necesitarn delimitarse entre las palabras BEGIN y END, en caso contrario no es necesario. La sintaxis de esta instruccin es la siguiente:WHILE (Expresin) DO BEGIN Instruccin 1 Instruccin 2 . . . Instruccin N END;El siguiente ejemplo usa la instruccin WHILE para realizar las mismas operecines del programa descrito al principio de esta pgina; compare estos dos programas y note las diferencias:PROGRAM Ciclo_While;

USES Crt;

CONST N = 5;

TYPE VECTOR = ARRAY[1..N] OF INTEGER;

VAR VectNumero: VECTOR; Suma: INTEGER; Promedio: REAL; i: BYTE;

BEGIN CLRSCR; WRITELN('Lectura con ciclo While '); i := 0; {Note que primero se debe inicializar la variable de control} WHILE (i