Está en la página 1de 24

UNEFA - Materia Programacin (4to semestre) Prof. Ing.

Mara Gabriela Briceo - Gua de Pascal

Gua de Pascal Introduccin Resumen de las instrucciones en turbo pascal, sintaxis y conceptos. Cada instruccin est acompaada por varios ejemplos. Sera prudente por parte del lector probar estos ejemplos en el laboratorio o en cualquier computadora. Hola mundo La nica forma de aprender un nuevo lenguaje de programacin es escribiendo programas con l. (Kernichan & Ritchie, inventores del lenguaje C y sistema operativo UNIX) Empecemos, entonces, por el primer programa que hay que escribir en cualquier lenguaje que uno pretenda aprender. program Hola; begin writeln ('Hola mundo.'); end. La salida del programa debera ser: Hola mundo. El objetivo de escribir este programa es toparse con los problemas tcnicos del lenguaje. Cmo funciona el editor. Cmo compilar el programa. Cmo ejecutarlo. Cmo ver el resultado. La estructura de un programa en Pascal La estructura bsica de cualquier programa en Pascal es la siguiente: program NombreDelPrograma; uses const var begin end. Los elementos de un programa escrito en Pascal deben aparecer en el orden correcto. Sin embargo, algunos elementos pueden omitirse si no son necesarios. Por ejemplo, un programa que no hace nada tiene que tener la siguiente apariencia: program HacerNada; begin end. {inclusin de libreras} {declaracin de constantes} {declaracin de variables} {instrucciones}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-1-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Comentarios Se le pueden aadir comentarios a los programas. Un comentario es una porcin de texto que no es ejecutada por el lenguaje pero que sirve para clarificar el cdigo y permitir que otros programadores entiendan nuestro programa. Los comentarios van entre llaves: {comentario} program Hola; {este programa imprime en pantalla la frase hola mundo} begin writeln ('Hola mundo.'); end. Es una buena costumbre comentar el cdigo de nuestros programas, no slo por los dems sino tambin para nuestro provecho. Cuando un programa es muy largo, probablemente no recordemos qu hace cada parte y nos sea muy difcil modificarlo. Tambin suele suceder que necesitemos hacer modificaciones a programas que escribimos hace muchos aos y no recordemos absolutamente nada de l (un ejemplo de este caso fue el Y2K). Por todo esto, es muy recomendable escribir un cdigo bien comentado. Nota: Es fundamental escribir el cdigo con las sangras correspondientes, idententificar los bloques de instrucciones y acentuar la estructura lgica del programa. Utilizar la tecla tab del teclado para alcanzar este objetivo. Convencionalmente se utiliza una sangra de 4 espacios. Identificadores Los identificadores son nombres que nos permiten referenciar valores. El nombre de una variable es un identificador. El nombre de un programa tambin es un identificador. Los identificadores deben cumplir con las siguientes reglas: Deben comenzar con una letra Pueden continuar con letras, nmeros o el carcter guin bajo _ No pueden contener caracteres especiales como: ~!@#$%^&*() +`-={}[]:";'<>?,./|\ Los identificadores no pueden ser iguales a algunas de las instrucciones de Pascal. Por ejemplo, una variable no se puede llamar writeln. En Pascal no importan las maysculas o minsculas. La variable mivariable es igual a MIVARIABLE o a MiVariable. Los identificadores pueden tener una longitud de hasta 32 caracteres. Los caracteres que excedan esta longitud no sern tenidos en cuenta.

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-2-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Variables y Tipos de Datos Una variable es un lugar en la memoria de la computadora en el que podemos guardar distintos tipos de valores. Tambin podemos recuperar o modificar estos valores. Las variables deben ser declaradas al comienzo del programa en la seccin var. var ListaDeIdentificadores : TipoDeDato; ListaDeIdentificadores : TipoDeDato; ListaDeIdentificadores : TipoDeDato; ...

Cada lista de identificadores es una serie de nombres separados por comas ,. Los identificadores que se encuentran en una misma lista son del mismo tipo de dato. Los tipos de datos ms importantes son: integer real char string boolean Integer: es un nmero entero que va desde 32768 hasta 32767 Real: es un nmero con coma que va desde 3.4x10-38 hasta 3.4x1038. Puede ser negativo. Char: es un carcter. a , B, +, 1 son de tipo char. Los elementos de tipo char deben ir entre comillas simples. String: es una cadena de caracteres. Hola, Cmo te va?, 123+ son cadenas de caracteres. Las cadenas de caracteres deben ir entre comillas simples. La longitud mxima de una cadena de caracteres es de 255. Boolean: una variable de tipo boolean slo puede tener dos valores: TRUE o FALSE. Sirve para guardar valores de verdad.

Un ejemplo de declaracin de varias variables: var edad, division: integer; grado: integer; peso: real; turno: char; nombre, apellido: string; casado: boolean;

Nota: Es importante poner nombres significativos a las variables. Nombres como A o B1 no nos dicen nada sobre qu informacin guarda la variable. Es bueno utilizar nombres como PRECIO o RESULTADO para nuestras variables. Constantes Simblicas Una constante es un identificador asociado a un valor determinado. A diferencia de las variables, una constante no puede ser modificada en ningn momento del programa. Las constantes deben ser definidas en la seccin const. const Identificador = valor; Identificador = valor; Identificador = valor; ... Nota: No es una buena costumbre poner "nmeros mgicos" en un programa ya que proporcionan muy poca informacin a quien tenga que leer el programa y son difciles de modificar en forma sistemtica. Es bueno darle nombres significativos a estos nmeros utilizando constantes.

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-3-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Asignacin y Operaciones Una vez que la variable ha sido declarada se le puede asignar un valor. Para asignar un determinado valor a una variable se debe utilizar la siguiente sintaxis: MiVariable := expresion; Una expresin puede ser tanto un valor como una operacin, otra variable o una combinacin de variables y valores: numero numero numero numero := := := := 23; 5 + 2; miVariable + 2; numero + 1;

La expresin y la variable deben ser del mismo tipo de datos para que la asignacin sea vlida. OPERADOR + * / div mod OPERACIN Suma Resta Multiplicacin Divisin Divisin entera Modulo (resto entero) OPERANDOS Integer o real Integer o real Integer o real Integer o real integer integer RESULTADO Integer o real Integer o real Integer o real real integer integer

div devuelve como resultado el cociente de la divisin entera entre dos nmeros. Ejemplo: numero := 5 div 2; numero := 15 div 5; {asigna 2 a la variable numero} {asigna 3 a la variable numero}

mod devuelve como resultado el resto de la divisin entera entre dos nmeros. Ejemplo: numero := 5 mod 2; numero := 15 mod 5; Ejemplos con variables: program ejemploConVariables1; var a: integer; begin a := 5; writeln(a); end. {el resultado es: 5} program ejemploConVariables2; var a, b : integer; begin a := 5; b := 2; writeln(a + b); end. {el resultado es: 7} program ejemploConVariables3; var a : string; begin a := 'hola mundo'; writeln(a); {asigna 1 a la variable numero} {asigna 0 a la variable numero}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-4-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

end. {el resultado es: hola mundo} program ejemploConVariables4; var a, b, c : integer; begin a := 5; b := 2; c := a div b; writeln(c); end. {el resultado es: 2} program ejemploConVariables5; var a: integer; begin a := 5; a := a + 1; writeln(a); end. {el resultado es: 6} Se pueden utilizar parntesis para separar trminos dentro se una expresin aritmtica. Ejemplo con parntesis: program ejemploConParentesis; var a : integer; begin a := (2+2)*(3+5); writeln(a); end. {el resultado es: 32} Funciones Matemticas Pascal provee varias funciones matemticas que podemos utilizar. Por ejemplo la funcin sin que devuelve el seno de un nmero en radianes: valor := sin (3.14); FUNCIN Abs Arctan Cos Round Sin Sqr Sqrt Trunc DESCRIPCIN Valor absoluto Arco tangente en radianes Coseno en radianes Redondear al entero ms cercano Seno en radianes Elevar al cuadrado Raz cuadrada Redondear para abajo

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-5-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Entrada de Datos Generalmente, nuestros programas van a necesitar datos para poder funcionar. Para obtener datos del teclado utilizaremos la instruccin readln. La sintaxis es la siguiente: readln(miVariable); {guarda en la variable miVarible lo que ingrese el usuario por teclado y baja una lnea en pantalla} De manera similar, la instruccin read guarda en la variable miVariable lo que ingrese el usuario pero no baja una lnea en la pantalla. read(miVariable); {guarda en la variable miVarible lo que ingrese el usuario por teclado} Probar los ejemplos con ambas instrucciones para ver la diferencia. Ejemplos con entrada de datos: program ejemploConEntradaDeDatos1; var a, b: integer; begin writeln('Ingrese un nmero'); readln(a); writeln('Ingrese otro nmero'); readln(b); writeln('La suma es: ', a + b); end. {el resultado es la suma de los dos nmeros que ingres el usuario} program ejemploConEntradaDeDatos2; var a: string; begin writeln('Ingrese su nombre'); readln(a); writeln('Su nombre es: ', a); end. {el resultado es el nombre que ingres el usuario} program ejemploConEntradaDeDatos3; var a, b, res: integer; begin writeln('Ingrese un nmero'); read(a); write('Ingrese otro nmero'); readln(b); res := a b; writeln('La resta entre',a,' y ',b,' es ',res); end. {el resultado es la resta de los dos nmeros que ingres el usuario}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-6-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Salida de datos: Para escribir datos en la pantalla utilizaremos la instruccin writeln cuya sintaxis es la siguiente: writeln (texto

o variables);

Esta instruccin puede imprimir en pantalla el contenido de una variable o una cadena de caracteres. O ambas cosas a la vez. Recordar siempre que las cadenas de caracteres deben escribirse entre comillas simples. Por ejemplo: writeln('a'); Imprimir en pantalla la letra a. Sin embargo: writeln(a); Imprimir en pantalla en contenido de la variable a. Tambin se pueden combinar cadenas de caracteres con variables utilizando comas: writeln('el

contenido de la variable a es:

', a);

La instruccin write funciona de la misma manera pero no baja una lnea en la pantalla: write (texto o variables); Se recomienda probar los ejemplos con ambas instrucciones para notar la diferencia. Ejemplos con salida de datos: program ejemploConSalidaDeDatos1; var a, b: integer; begin a := 5; b := 2; writeln(a + b); end. {el resultado es: 7} program ejemploConSalidaDeDatos2; var a, b: integer; begin a := 5; b := 2; writeln('Mi nmero de la suerte es el ',a,' pero antes era el ',b); end. {el resultado es: Mi nmero de la suerte es el 5 pero antes era el 2}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-7-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Expresiones Lgicas Un enunciado es una sentencia de la cual se puede decir si es verdadera o falsa. En Pascal existen diversos smbolos para construir enunciados lgicos. Estos enunciados se utilizan luego para alterar el flujo del programa. Los enunciados tambin son llamados expresiones booleanas o lgicas. < ...menor que... ...mayor que... ...igual a... ...menor o igual a... ...mayor o igual a... Negacin lgica conjuncin lgica disyuncin lgica

> = <= >=


Not

And Or

las tablas de verdad de los conectivos lgicos son: (P y Q son enunciados) P NOT( P ) F V P AND Q V F F F P OR Q V V V F Q V F V F Q V F V F

V F
P

V V F F
P

V V F F

El resultado de una expresin lgica puede ser guardado en una variable de tipo boolean. TRUE y FALSE son constantes que representan los valores verdadero y falso respectivamente. Si uno intenta imprimir con la instruccin writeln el contenido de una variable de tipo boolean obtendr TRUE o FALSE como resultado en la pantalla. Nota: Es importante entender bien el significado de cada uno de los operadores lgicos. Estos conceptos sern requeridos a lo largo de todo el curso de Pascal. Ejemplos con expresiones lgicas: program ejemploExpresionesLogicas1; begin writeln(2 < 5); end. {el resultado es: TRUE}

program ejemploExpresionesLogicas2; begin writeln(2 < 1); end. {el resultado es: FALSE}

program ejemploExpresionesLogicas3;

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-8-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

begin writeln(1 < 1); end. {el resultado es: FALSE}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

-9-

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program ejemploExpresionesLogicas4; var a : boolean; begin a := (8 >= 8); writeln(a); end. {el resultado es: TRUE} program ejemploExpresionesLogicas5; var a : boolean; begin a := (8 = 8) AND (2 > 1); writeln(a); end. {el resultado es: TRUE} program ejemploExpresionesLogicas6; var a, b, c : boolean; begin a := (8 = 8); b := (2 > 1); c := (a AND b); writeln(a); end. {el resultado es: TRUE} program ejemploExpresionesLogicas7; var a, b, c : boolean; begin a := (8 = 8); b := (2 > 1); c := a AND ( NOT(b) ) ; writeln(c); end. {el resultado es: FALSE}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 10 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Estructura de decisin If...Then La instruccin If...Then nos permite ejecutar distintos bloques de cdigo dependiendo de cul sea la evaluacin de un determinado enunciado. Si la condicin es verdadera, se ejecuta el cdigo que se encuentra a continuacin de la instruccin If...Then. Si la condicin es falsa, se ejecuta el cdigo siguiente a la instruccin Else (si existiera). Sintaxis: if {enunciado} then begin {bloque de cdigo} ... ... end; o bien: if {enunciado} then begin {bloque de cdigo} ... ... end else begin {bloque de cdigo} ... ... end; Si el bloque de cdigo es de una sola instruccin, los comandos begin y end pueden ser omitidos: if {enunciado} then {una lnea de cdigo} Nota: Es buena costumbre colocar siempre los comandos begin y end pues ayudan a entender el cdigo y a evitar errores. Ejemplos con estructuras de decisin: program ejemploDecision1; var a, b: integer; begin a := 8; b := 2; if a > b then begin writeln('a es el mayor'); end; end. {el resultado es: a es el mayor} program ejemploDecision2; var a, b: integer; begin a := 1; b := 2; if a > b then begin writeln('a es el mayor'); end; end. {el programa no muestra nada}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 11 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program ejemploDecision3; var a, b: integer; begin writeln('Ingrese un nmero'); readln(a); writeln('Ingrese otro nmero'); readln(b); if a > b then begin writeln(a,' es mayor que ',b); end else begin if a < b then begin writeln(a,' es menor que ',b); end else begin writeln(a,' y ',b,' son iguales'); end; end;

end. {el programa muestra la relacin entre los nmeros ingresados por el usuario} program ejemploDecision4; var a: integer; begin writeln('Cul es tu edad?'); readln(a); if a < 0 then begin writeln(a,' no es una edad correcta'); end; if (a >= 0) AND ( a <= 12) then begin writeln('Sos un nio'); end; if (a >= 13) AND (a <= 21) then begin writeln('Sos un joven'); end; if a >= 22 then begin writeln('Sos un adulto'); end; end. {el programa distingue si el usuario es un nio, un joven o un adulto}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 12 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program ejemploDecision5; var a, b: integer; begin writeln('Ingrese un nmero'); readln(a); writeln('Ingrese otro nmero'); readln(b); if a >= b then begin writeln('el mximo entre ',a,' y ',b,' es: ', a); end else begin writeln('el mximo entre ',a,' y ',b,' es: ', b); end; end. {el programa devuelve el mximo entre los dos nmeros que ingres el usuario} program ejemploDecision6; var a, b, res: integer; begin writeln('Ingrese un nmero'); readln(a); writeln('Ingrese otro nmero'); readln(b); res := b; if a >= b then begin res := a; end; writeln('el mximo entre ',a,' y ',b,' es: ', res); end. {el programa devuelve el mximo entre los dos nmeros que ingres el usuario, es otra versin del programa anterior}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 13 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Estructura de decisin Case La instruccin case nos permite tomar distintos caminos en el flujo del programa teniendo en cuenta el valor de una variable de tipo integer o char. Sintaxis: case {miVariable} of {caso 1}: begin {bloque de cdigo} ... ... end; {caso 2}: begin {bloque de cdigo} ... ... end; ... ... else:{opcional} begin {bloque de cdigo} ... ... end; end; Los casos son los valores o rangos de valores que puede tomar la variable. Los valores se denotan con las constantes enteras separadas por comas (1, 2, 3) y los rangos se denotan con las constantes enteras separadas por dos puntos (1..3). Anlogamente se pueden escribir estructuras case con elementos del tipo char. Si el bloque de cdigo consiste en una sola instruccin los comandos begin y end se pueden omitir. Nota: Est demostrado matemticamente que toda instruccin Case se puede reducir a una combinacin de instrucciones if..Then..Else Ejemplos con estructuras de decisin: program ejemploDecision7; var a: integer; begin writeln('Ingrese un nmero del 1 al 10'); readln(a); case a 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: else end; end. {el programa escribe en palabras el nmero ingresado por el usuario. Si es ms grande que diez escribe: MUY GRANDE} writeln('MUY GRANDE'); of writeln('UNO'); writeln('DOS'); writeln('TRES'); writeln('CUATRO'); writeln('CINCO'); writeln('SEIS'); writeln('SIETE'); writeln('OCHO'); writeln('NUEVE'); writeln('DIEZ');

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 14 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program ejemploDecision8; var a: integer; begin writeln('Ingres tu edad'); readln(a); case a of 0..12: begin writeln('Sos un nio'); end; 13..21: begin writeln('Sos un joven'); else

end; begin writeln('Sos un adulto'); end;

end.

end;

{el programa distingue si el usuario es un nio, un joven o un adulto, siempre que la edad ingresada no sea negativa; qu escribe el programa si ingreso una edad negativa?} program ejemploDecision9; var a: char; begin writeln('Ingres un caracter'); readln(a); case a of 'A'..'Z': begin writeln('Ingresaste una mayscula'); end; 'a'..'z': begin writeln('Ingresaste una minscula'); end; '0'..'9': begin writeln('Ingresaste un nmero'); end; else begin writeln('Ingresaste un carcter no alfanumrico'); end;

end; end.

{el programa distingue si el usuario es un nio, un joven o un adulto} Estructura de repeticin While...Do La instruccin while ... do nos permite repetir un bloque de cdigo mientras se cumpla una condicin determinada. Dicha condicin tambin es conocida como "guarda". La sintaxis es la siguiente: while {enunciado} do begin {bloque de cdigo}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 15 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

end;

... ... ...

El enunciado es una expresin lgica y puede tener cualquiera de las formas que vimos anteriormente. Siempre hay que tener en cuenta que la estructura while...do chequea la condicin antes de entrar al ciclo. Puede suceder que la condicin siempre sea falsa con lo cual nunca se ejecute el bloque interno. Ejemplos con estructuras de repeticin: program ejemploRepeticion1; var i : integer; begin i := 1; while i <= 3 do begin writeln('hola!'); i := i + 1; end; end. {el resultado es: hola! hola! hola!} program ejemploRepeticion2; var i : integer; begin i := 1; while i <= 10 do begin writeln(i); i := i + 1; end; end. {el resultado es: 1 2 3 4 5 6 7 8 9 10} program ejemploRepeticion3; var i : integer; begin i := 5; while i < 10 do begin writeln(i); i := i + 1; end;

end. {el resultado es: 5 6 7 8 9}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 16 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program ejemploRepeticion4; var i, n: integer; begin writeln('Ingrese un nmero'); readln(n); i := 0; while i <= n do begin writeln(i); i := i + 2; end;

end. {el programa devuelve los nmeros pares menores e iguales que n, donde n es el nmero ingresado por el usuario} program ejemploRepeticion5; var i, n: integer; begin writeln('Ingrese un nmero'); readln(n); i := 1; while i < n do begin writeln(i); i := i + 2; end;

end. {el programa devuelve los nmeros impares menores que n, donde n es el nmero ingresado por el usuario} Estructura de repeticin Repeat...Until La instruccin Repeat...Until es similar a la instruccin While. La diferencia entre ambas es que en las estructuras while, la condicin se evala al principio del ciclo y en las estructuras repeat..until, al final. En las estructuras while, si la condicin es falsa cuando comienza el ciclo, ste no se ejecuta nunca. Como en repeat...until la condicin se evala al final, el ciclo se ejecutar por lo menos una vez. repeat {bloque de cdigo} ... ... until {enunciado}; Despus de cada repeticin del ciclo se evala la condicin. Si la condicin es verdadera, el ciclo termina y se sale de l, ejecutndose la instruccin siguiente al ciclo. Si la condicin es falsa, el cuerpo del ciclo no se vuelve a ejecutar. Notar que la lgica es inversa a la de la instruccin while. La sintaxis no requiere begin y end. Nota: Se demostr matemticamente que cualquier ciclo construido con la instruccin repeat..until se puede escribir con la instruccin while. Lo contrario no es cierto y le dejamos al lector la tarea de descubrir la razn. Ejemplos con estructuras de repeticin: program ejemploRepeticion6; var i: integer; begin i := 1; repeat

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 17 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

end. {el resultado es: hola! hola!} program ejemploRepeticion7; var i: integer; begin i := 1; repeat writeln(i); i := i + 1; until i > 10; end. {el resultado es: 1 2 3 4 5 6 7 8 9 10} program ejemploRepeticion8; var i: integer; begin i := 5; repeat writeln(i); i := i + 1; until i = 9; end. {el resultado es: 5 6 7 8} program ejemploRepeticion9; var i, n: integer; begin writeln('Ingrese un nmero'); readln(n); i := 0; repeat writeln(i); i := i + 2; until i >= (n - 1);

writeln('hola!'); i := i + 1; until i >= 3;

end. {el programa devuelve los nmeros pares menores que n, donde n es el nmero ingresado por el usuario. Ojo, siempre imprime por lo menos un nmero, el cero}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 18 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program ejemploRepeticion10; var i, n: integer; begin writeln('Ingrese un nmero'); readln(n); i := 1; repeat writeln(i); i := i + 2; until i >= (n - 1);

end. {el programa devuelve los nmeros impares menores que n, donde n es el nmero ingresado por el usuario. Ojo, siempre imprime por lo menos un nmero, el uno} Estructura de repeticin For...Do La instruccin For...Do se utiliza para repetir una determinada cantidad de veces un bloque de cdigo. La instruccin va incrementando una variable determinada dentro del rango de valores especificado. Sintaxis: for MiVar:= valorInicial to valorFinal do begin {bloque de cdigo} ... ... ... end; La variable miVar se ir incrementando desde valorInicial hasta valorFinal, y tomar todos los valores enteros de dicho rango. Anlogamente se puede obtener el resultado inverso (decrementar la variable) modificando levemente la sintaxis: for MiVar:= valorInicial downto valorFinal do begin {bloque de cdigo} ... ... ... end; Ejemplos con estructuras de repeticin: program ejemploRepeticion11; var i: integer; begin for i := 1 to 5 do begin writeln(i); end;

end. {el programa muestra en pantalla: 1 2 3 4 5}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 19 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program ejemploRepeticion12; var i: integer; begin for i := 5 downto 1 do begin writeln(i); end; end. {el programa muestra en pantalla: 5 4 3 2 1} Ejemplos paradigmticos: program sumatoria; var i, n, res: integer; begin writeln('Ingrese un nmero'); readln(n); i := 1; res := 0; while i <= n do begin res := res + i; i := i + 1; end; writeln('La sumatoria es: ', res); end. {el programa muestra la sumatoria de los primeros n nmeros, donde n es el nmero ingresado por el usuario} program factorial; var i, n, res: integer; begin writeln('Ingrese un nmero'); readln(n); i := 1; res := 1; while i <= n do begin res := res * i; i := i + 1; end; writeln('El factorial es: ', res); end. {el programa muestra el factorial de n, donde n es el nmero ingresado por el usuario, n tiene que ser mayor que 0 y menor que 8; por qu el factorial de 8 da negativo?}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 20 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

program primos; var i, n: integer; begin writeln('Ingrese un nmero'); readln(n); i := 2; while (i <= n) AND NOT(n mod i = 0) do begin i := i + 1; end; if i=n then begin writeln(n,' es primo'); end else begin writeln(n,' es compuesto'); end;

end. {el programa dice si el nmero ingresado (mayor que 1) por el usuario es primo} program primosBis; {otra versin} var i, n, r: integer; begin writeln('Ingrese un nmero'); readln(n); i := 2; r := 0; while (i < n) do begin if (n mod i = 0) then begin r := 1; end; i := i + 1; end; if r = 0 then begin writeln(n,' es primo'); end else begin writeln(n,' es compuesto'); end; end. {el programa dice si el nmero ingresado por el usuario es primo. Es otra versin del programa anterior}

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 21 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Bibliotecas Las bibliotecas son grupos de funciones o procedimientos compilados que pueden ser llamados y utilizados desde cualquier programa en Turbo Pascal sin necesidad de escribirlos de nuevo. Las bibliotecas no son ejecutables, dependen del programa que las llama para poder realizar su funcin. Turbo Pascal incorpora algunas bibliotecas que contienen una gran cantidad de rutinas integradas, pero para hacer uso de ellas es necesario primero declarar el uso de tales librerias. Uses Para declarar una biblioteca, o lo que es lo mismo, dejarla lista para ser utilizada, se utiliza la palabra reservada uses. Uses debe ir inmediatamente despues de la sentencia program, despues se escriben los nombres de las unidades que se utilizarn. Algunas de las unidades estndar de turbo pascal son: Crt: funciones relacionadas con la pantalla, colores, ventanas, sonidos y teclado. Dos: funciones relacionadas con el sistema operatibvo DOS. Graph: funciones relacionadas con el modo grfico de video. Printer: funciones relacionadas con el manejo de impresora. System: funciones de bajo nivel.

Bibliografa Recomendada http://www.hoching.com/taoyue/pascal/frameset.html http://www.borland.com/pascal/pascalnet.html http://www.borland.com/pascal/ http://www.geocities.com/SiliconValley/Park/3230/pasles00.html http://www.toptutoriales.com/prog/pascal/pascal2.com "Programacin en Turbo/Borland Pascal 7 3ra edicion" Luis Joyanes Aguilar Osborne/McGraw-Hill "El lenguaje de progamacin C" Brian W. Kernighan, Dennis M. Ritchie Prentice Hall

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 22 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

ANEXO La Biblioteca Crt (control de pantalla) La biblioteca crt.tpu (el archivo donde se ha definido la biblioteca Crt), provista por los fabricantes de Turbo Pascal, brinda procedimientos y funciones para manejar la pantalla (Crt: catodic ray tube o tubo de rayos catdicos) y modificar aspectos referentes a entradas de teclado. Algunos procedimientos y funciones El procedimiento clsscr (clear screen o borrar pantalla) simplemente borra la pantalla y coloca el cursor en la esquina superior izquierda. El procedimiento gotoxy tiene dos parmetros x e y, correspondientes a una columna y una fila en la pantalla (la pantalla de la computadora puede pensarse como una cuadrcula cuyas columnas van de 1 a 80, y sus filas de 1 a 24). La instruccin gotoxy(3,4) posiciona el cursor en la columna 3 y fila 4. Entonces la prxima sentencia (por ejemplo write) imprimir en pantalla a partir de la columna 3 y fila 4. El siguiente programa borra la pantalla e imprime un cartel aproximadamente en el centro: program posicionar; uses crt; begin clrscr; gotoxy(30,10); write(' Esto esta '); gotoxy(30,11); write(' en el medio de'); gotoxy(30,12); write(' la pantalla'); end. Tambin pueden utilizarse variables de tipo integer como parmetros x e y para gotoxy, como se muestra en el programa Escalera (ejemplo abajo). Algunos otros procedimientos para la salida en pantalla son: textbackground(Color) y textcolor(Color). El primero se utiliza para seleccionar el color del fondo de la pantalla. Los valores que puede utilizar son del 0 al 7, tambin es posible utilizar las constantes predefinidas para los colores. El procedimiento textcolor se usa para seleccionar el color del texto en la pantalla. Colores Las constantes definidas para los colores son: Colores para primer plano y fondo: Constante Valor Black 0 Blue 1 Green 2 Cyan 3 Red 4 Magenta 5 Brown 6 Light Gray 7 Color Negro Azul Verde Cyan Rojo Magenta Marrn Gris claro Colores para primer plano: Constante Valor Dark gray 8 Light Blue 9 Light Green 10 Light Cyan 11 Light Red 12 Light Magenta 13 Yellow 14 White 15 Color Gris oscuro Azul claro Verde claro Cyan claro Rojo claro Magenta claro Amarillo Blanco

Otras funciones tiles provistas por Crt son la funcin keypressed (devuelve "true" si se pulsa una tecla, y "false" en caso contrario) y la funcin readkey, que espera a que el usuario pulse una tecla, y devuelve el caracter correspondiente a la tecla pulsada.

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 23 -

UNEFA - Materia Programacin (4to semestre) Prof. Ing. Mara Gabriela Briceo - Gua de Pascal

Ejemplos: Program escalera; Uses Crt; Var i: integer; Begin clrscr; for i:=1 to 10 do begin gotoxy(i,i); write(i); end; End. {el resultado es: 1 2 3 4 5 6 7 8 9 10} Program urgente; Uses Crt; Begin Repeat write('Presion una tecla!'); Until KeyPressed; End. {el resultado es: Presion una tecla! Presion una tecla! Presion una tecla! Presion una tecla! (el programa seguir impriendo en pantalla "Presion una tecla!" hasta que el usuario lo haga)} Program LeerLetra; uses Crt; var c: Char; begin Writeln('Presion una tecla'); c := Readkey; Writeln('Presionaste la ', C); end. {el resultado si apretamos por ejemplo la "a" es: Presion una tecla Presionaste la a} Otro procedimiento que provee la librera Crt es delay(tiempo); ste detiene la ejecucin del programa durante un tiempo especificado en el "tiempo" en milisegundos. El intervalo vlido es desde 0 hasta 65535, la precisin del retardo depende de la precisin del reloj interno de la computadora. program Retardo; uses crt; begin writeln('Inicia retardo de aproximadamente 5 segundos'); delay(5000); writeln('Fin del retardo');

end.

Fuente: Laboratorio de Informtica del Colegio Nacional de Buenos Aires (http://usuarios.cnba.uba.ar/gabinetes/informatica)

- 24 -

También podría gustarte