apuntes pascal

33
“Turbo Pascal” UNIDAD I: Presentación Historia de Pascal. Lenguajes de Programación. Formato general de un programa de Pascal. Palabras Reservadas. Creación de Programas. Objetos de un Programa. (Identificadores, Comentarios, etc.) Variables. Tipos de Datos: Clasificación General. Ordinales Predefinidos (Enteros, Boolean, Char) y Definidos por el usuario, (Enumerados, Subrango). No Ordinales Predefinidos (Reales). Tipo Cadena (String). UNA BREVE HISTORIA DE PASCAL Y TURBO PASCAL A principios de los años 70, Niklaus Wirth, un profesor del instituto Tecnológico de Zurích (Suiza) diseñó Pascal, un lenguaje concebido para la enseñanza de técnicas de programación a estudiantes universitarios, que con el correr de los tiempos se ha convertido en un estándar del mundo de la programación. El objetivo fundamental – ya comentado en el párrafo anterior- de su creador fue desarrollar un lenguaje que permitiera “enseñar programación como una disciplina sistemática basada en determinados conceptos fundamentales”, estos conceptos se reflejan de modo claro y fundamental en el lenguaje. En la mitad de la década de los 80, Pascal era un lenguaje cuya difusión se reduce a los ambientes universitarios y de investigación. Tal vez la razón residía en el elevado precio de los compiladores y de las herramientas complementarias necesarias: editores y depuradores. En 1983 aparece en el mercado norteamericano, comercializado por Borland Internacional INC; un compilador de Pascal denominado Turbo Pascal. En los años sucesivos aparecieron versiones 2.0, 3.0, 3.1, 3.2. Su éxito se debía a la facilidad de edición, compilación y ejecución, constituía en sí mismo un editor, compilador y depurador integrado. Posteriormente apareció la versión 4.0, que superó con creces a las versiones anteriores, ofrecía un gran número de mejoras y novedades, como confort y entorno de programación. A finales 1988 aparece en los Estados Unidos la versión 5.0 que entre otras novedades ofrecía un entorno desarrollado. Entrado el año 1989 aparece la versión 5.5, idéntica a la 5.0 pero con una excepción, incorpora facilidades para la programación orientada a objetos (POO). Hoy en día ya podemos contar con la versión 7.0 para DOS y para Windows 3.1 o superior. El lenguaje Pascal presenta una serie de características que lo hacen idóneo como primero o segundo lenguaje de programación, desde el punto de vista de aprendizaje y como lenguaje de propósito general, para la resolución de aplicaciones de todo tipo: gestión, científicas, ingeniería, etc. LENGUAJES DE PROGRAMACIÓN: Los lenguajes de programación utilizados para escribir programas de computadoras que puedan ser

Upload: sandra-rodriguez

Post on 25-Jun-2015

341 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Apuntes Pascal

“Turbo Pascal”UNIDAD I: PresentaciónHistoria de Pascal. Lenguajes de Programación.Formato general de un programa de Pascal. Palabras Reservadas. Creación de Programas.Objetos de un Programa. (Identificadores, Comentarios, etc.)Variables.Tipos de Datos: Clasificación General. Ordinales Predefinidos (Enteros, Boolean, Char) yDefinidos por el usuario, (Enumerados, Subrango). No Ordinales Predefinidos (Reales).Tipo Cadena (String).

UNA BREVE HISTORIA DE PASCAL Y TURBO PASCALA principios de los años 70, Niklaus Wirth, un profesor del instituto Tecnológico de Zurích (Suiza)diseñó Pascal, un lenguaje concebido para la enseñanza de técnicas de

programación a estudiantes

universitarios, que con el correr de los tiempos se ha convertido en un estándar del mundo delaprogramación.El objetivo fundamental – ya comentado en el párrafo anterior- de su creador fue desarrollar unlenguaje que permitiera “enseñar programación como una disciplina sistemática basada endeterminados conceptos fundamentales”, estos conceptos se reflejan de modo claro y fundamentalen ellenguaje.En la mitad de la década de los 80, Pascal era un lenguaje cuya difusión se reduce a los ambientesuniversitarios y de investigación. Tal vez la razón residía en el elevado precio de los compiladores yde las herramientas complementarias necesarias: editores y depuradores.En 1983 aparece en el mercado norteamericano, comercializado por Borland Internacional INC; uncompilador de Pascal denominado Turbo Pascal. En los años sucesivos aparecieron versiones 2.0,3.0,3.1, 3.2. Su éxito se debía a la facilidad de edición, compilación y ejecución, constituía en sí mismouneditor, compilador y depurador integrado. Posteriormente apareció la versión 4.0, que superó concreces a las versiones anteriores, ofrecía un gran número de mejoras y novedades, como confort yentorno de programación.A finales 1988 aparece en los Estados Unidos la versión 5.0 que entre otras novedades ofrecía unentorno desarrollado. Entrado el año 1989 aparece la versión 5.5, idéntica a la 5.0 pero con unaexcepción, incorpora facilidades para la programación orientada a objetos (POO).Hoy en día ya podemos contar con la versión 7.0 para DOS y para Windows 3.1 o superior.El lenguaje Pascal presenta una serie de características que lo hacen idóneo como primero osegundolenguaje de programación, desde el punto de vista de aprendizaje y como lenguaje de

propósito

general, para la resolución de aplicaciones de todo tipo: gestión, científicas, ingeniería, etc.

LENGUAJES DE PROGRAMACIÓN:Los lenguajes de programación utilizados para escribir programas de computadoras que puedan ser

Page 2: Apuntes Pascal

entendidas por ellas, se denominan: “Lenguajes de Programación”.Los lenguajes de programación se clasifican en tres categorías:

Lenguaje máquina:Los lenguajes máquina son aquellos cuyas instrucciones son directamente entendidas por lacomputadora y no necesitan traducción posterior, para que la CPU pueda comprender y ejecutarprogramas. Las instrucciones en lenguaje máquina se expresan en términos de la unidad dememoriamás pequeña: el Bit (dígito binario) cuyo valor puede ser cero o uno.Una serie de instrucciones en lenguaje máquina son:0010 0000 0000 10011001 0001 1001 1110Como se puede observar estas instrucciones son fáciles de leer por la computadora y difícil por unprogramador.Lenguaje de bajo nivelLa programación en lenguaje máquina es difícil, por ello se necesitan programas que permitansimplificar este proceso. Los lenguajes de bajo nivel han sido diseñados para ese fin, el lenguajetípicoes el Ensamblador. En este lenguaje, las instrucciones se escriben en códigos alfabéticosconocidoscomo nemotécnicos.ADD (suma) MPY (multiplicar)SUB (resta) DIV (dividir)Las palabras nemotécnicas son más fáciles de recordar que las secuencias de dígitos 0,1. Unainstrucción típica del ensamblador puede ser:ADD x,y,z (suma x + y, lo almacena en z)Lenguaje de alto nivelLos lenguajes de alto nivel son aquellos en que las instrucciones o sentencias a la computadoraestán escritos en lenguaje similar a los lenguajes del ser humano. En general el lenguaje ingléscomoes el caso de Turbo Pascal. Lo que facilita la escritura y comprensión por el programador.

INTRODUCCIÓN A PASCAL:La estructura de un programa:En esta sección se analiza en detalle las reglas de estructura que se debe seguir siempre que seescribanprogramas en este lenguaje.PROGRAM identificadorUSES identificadoresLABEL lista de etiquetasCONSTDefiniciones de constantesTYPEDeclaración de tipos de datos definidos por el usuarioVARDeclaración de variables------------ ----------- --------- ----------PROCEDUREDefiniciones de procedimientosFUNCTIONDefiniciones de funciones------------ ----------- --------- ----------

Page 3: Apuntes Pascal

BEGIN {cuerpo del programa}sentenciasEND.Las cinco secciones de declaración (label, const, type, procedure, y/o function) así como la cláusulauses, no tiene que existir en todos los programas. Las secciones de declaraciones están seguidas delcuerpo del programa o programa principal que siempre existirá y que contará de un númerodeterminado de sentencias. Es recomendable seguir siempre el orden establecido en la figura.Nota: Efectúe una lectura comprensiva. Elabore un resumen de cada una de las partes de laestructurade un programa.

PALABRAS RESERVADASLas palabras reservadas de T. Pascal tienen significado especial y no se pueden utilizar para otrospropósitos. Una palabra reservada no puede ser utilizada como identificador.Absolute end inline procedure typeAnd external interface program UnitArray File Interrupt Record UntilBegin For Label Repeat UsesCase Forward Mod Set VarConst Function Nul Shl WhileDiv Goto Not Shr WithDo If Of String xorDownto Implementation Or ThenElse in packed to

CREACIÓN DE PROGRAMAS:Sitúese en la ventana de edición de TP y escriba el siguiente ejemplo:Program primero:

Uses CRT;

Begin

Write(‘Hola’);

Write(‘Mi nombre es.......’);

End.Cuando termina de escribir y no observa errores a simple vista puede hacer dos cosas: guardarlo enundisco o bien compilarlo. El orden lógico que deberá seguir para evitar pérdidas es:• Editar• Guardar el programa fuente en disco (Menú: FILE- Opción: SAVE)• Compilar (Menú: COMPILE- Opción: COMPILE)• Ejecutar (Menú: RUN -Opción: RUN)Nota: Efectúe una lectura comprensiva. Elabore un resumen de cada una de los siguientes puntos:(Pág. 21-24)• Codificación de un programa.• Documentación interna.• Compilación y ejecución de un programa (Programa Fuente, Objeto, Ejecutable)• Verificación y depuración de un programa.• Documentación y mantenimiento.Objetos de un Programa:Un programa en Pascal se construye en base de objetos (tokens) y separadores (Blancos ocomentarios). Los objetos son las unidades significativas más pequeñas de texto de un programa y

Page 4: Apuntes Pascal

sedividen en:• Identificadores• Etiquetas• Constantes• Variables• Directivas, etc.

IDENTIFICADORESLos identificadores representan los objetos de un programa (constantes, variables, tipos de datos,procedimientos, funciones, unidades, programas y campos de registros). Es una secuencia decaracteresque puede ser de cualquier longitud, pero los 63 primeros son significativos.Un identificador se caracteriza por éstas reglas:1. Debe comenzar con una letra (mayúscula o minúscula) y no puede contener blancos.2. Letras, dígitos, caracteres subrayados, están permitidos después del primer carácter.3. No se puede utilizar una palabra reservada como identificador, sin embargo, los identificadoresestándares se pueden volver a redefinir.Identificador estándar:Tipos: integer, read, byte, ....Procedimientos: write, writeln, read, reset, ...Funciones: sin, cos, abs, ....Nota. Analice cual sería la correcta elección de un identificador según las recomendacionesexpuestas

COMENTARIOS* El estilo de programación:El buen Estilo de Programación es la característica más notable de un programador.Sangrado (identación): Es práctica habitual realizar sangrado en los bloques y unidades deprogramasfundamentales.* Comentarios:La legibilidad de los programas aumenta considerablemente utilizando comentarios. UnComentarioes un texto explicativo más o menos largo, situado en el programa e ignorado por el compilador.{comentario}(*comentario*)Pueden aparecer en una sola línea, al final o embebido en una sentencia.Nota: Analice el ejemplo presentado en el libro de referencia.

VARIABLESLas variables son objetos de un programa cuyo valor puede cambiar durante la ejecución delprograma.El cambio se produce mediante sentencias ejecutables.Una variable es una posición de memoria con nombre. El nombre de la posición (un identificador)sellama “NOMBRE DE LA VARABLE”, el valor almacenado en la posición se llama “VALOR DELAVARIABLE”.Las variables se asemejan a cajas o buzones, cada una de las cuales tiene un nombre y contiene unvalor.

Page 5: Apuntes Pascal

Nombre de la variable Valor de la variableTodas las variables de Pascal deben ser declaradas antes de ser utilizadas.Las variables se deben declarar en la sección de declaración del programa, mediante la palabrareservada VAR. Declarar variables con sus tipos de datos asociados.

TIPOS DE DATOSLos diferentes objetos de información con los que un programa Pascal trabaja se conocencolectivamente como datos. Todos los datos tienen un tipo asociado con ellos. Un dato puede ser unsimple carácter, tal como “B”, un valor entero como el 35, o un número entero como 141592. Unaoperación de suma no tiene sentido con caracteres, solo con números. La operación de suma sealmacena de modo distinto para números entero y números reales.La Asignación de Tipos de Datos, tiene dos objetivos principales:1- Detectar errores de operaciones en programas.MONEDAS 1002- Determinar como ejecutar las operaciones.Pascal se conoce como lenguaje “Fuertemente Tipeado”, o de tipos fuertes. Esto significa que todoslosdatos deben tener sus tipos de datos declarados. La ventaja de los lenguajes de tipos fuertes (ricosentipos de datos) es que gasta menos esfuerzo en la depuración de programas ya que el programadetectaestos errores. (Variables con tipos mal declarados).El Tipo de Dato determina la naturaleza del conjunto de valores que puede tomar una variable. Otroconcepto importante a tener en cuenta es la representación interna de los números, o al menos elespacio ocupado por una variable de un tipo dado.Clasificación:TIPOS ENTEROSPascal dispone de cinco tipos predefinidos:TIPO RANGO FORMATObyte 0 .. 255 8 bits sin signointeger -32768 .. 32767 16 bits con signolongint -247483648 .. 2147483647 32 bits con signoShortint -128 .. 127 8 bits con signoword 0 .. 65535 16 bits sin signoIntegerLos enteros se expresan en el rango de valores -32768 .. 32767, y no pueden tener parte decimal.Losenteros INTEGER se almacenan en memoria como dos bytes. El bit de mayor peso (orden) de losdosbytes en memoria es el bit de signo, 0-positivo o 1-negativo.Nota: Efectúe una lectura comprensiva. Elabore un resumen cada uno de los tipos de datos enterosnodetallados en el párrafo anterior.TIPOS REALESTipos de DatosDatos Estáticos Datos DinámicosTiposSimplesTiposCadenasTipos EstructuradosTipos ProcedimientoTiposPuntero

Page 6: Apuntes Pascal

Ordinales:*Predefinidos-Integer-Boolean-Char*Definidos por el usuario-Enumerado-SubrangoNo Ordinales:- RealesArrayRegistroConjuntoArchivo

Los tipos de datos reales son aquellos que representan al conjunto de los números reales. Loscálculosmatemáticos normales exigen dos tipos de datos numéricos: enteros y reales. Las computadorasdiferencian uno y otro tipo. Las diferencias residen en la representación interna en memoria.Formato binario Formato realNota: Efectúe una lectura comprensiva. Elabore un resumen cada uno de los tipos de datos Realesnodetallados en el párrafo anterior.1-Notación Científica o de coma flotanteEl área ocupada por un real se divide en dos zonas: Mantisa y Exponente.mantisa: Fracción binaria entre 0.5 y 1.0 (o –0.5 y –1.0 para negativos)exponente: potencia de 10numero real = mantisa x 10exponente

Esta notación se utiliza para representar números muy grandes o muy pequeños. En notacióndecimallos números se escriben en notación E (E de exponente) y significa multiplicar por 10 la potenciaquesigue.n E ± dd .n = número decimal (con o sin signo + o - )dd = exponente entero (positivo, negativo o cero)1.6125E-10 equivale a 1.6125x10-10 = 0.000000000161253.492E-02 equivale a 3.492x10-2 = 0.03492-Notación en coma fija:Expresar el número real con un punto decimal (no con comas).3.141592 0.0056 -18.8El tipo real se representa en memoria con 6 bytes y en un rango de 10-38 a 1038 .Los diferentes tipos reales se diferencian por el dominio de definición, el número de cifrassignificativas (precisión) y el espacio ocupado en memoria.TIPO RANGO CIFRAS TAMAÑO Y BYTESReal 2.910-39 .. 1.71038 11-12 6Single 1.510-45 .. 3.41038 7-8 4Double 5.010-324 .. 1.710308 15-16 8Extended 1.910-4931 .. 1.1104932 19-20 10Comp -263 +1 .. 263 -1 19-20 8TIPO STRINGUna cadena de caracteres (string) es una aserie de caracteres cuya serie puede tener una longitud de1 a255 caracteres.

Page 7: Apuntes Pascal

T. Pascal tiene el Tipo de Dato string que almacena información de texto. Este dato se puedealmacenar en constates y en variables de cadena. Una variable de cadena está declarada por lapalabrastring seguida de la longitud máxima de la cadena de caracteres entre corchetes.Declaración en VAR y en TYPEVar

Número binario Mantisa ExponenteTaller I - “T. Pascal”Mensaje: string [80];Nombre : string [40];---TypeCadena80 = string [80];VarMensaje: cadena80;Una vez declaradas las variables de cadena se pueden realizar asignaciones o bien operaciones delectura/escritura en los programas.

UNIDAD II: SentenciasSentencias. Concepto. Clasificación.Simples: Sentencias de Asignación. Sentencias de Entrada / Salida. Sentencias de llamadaa Procedimiento. Go To.Estructuradas: Sentencias Compuestas. Sentencias Condicionales: IF..THEN, CASE.Sentencias Repetitivas: REPEAT, WHILE, FOR.Expresiones: Operadores Aritméticos. Operadores de relación. Operadores Lógicos.-

SENTENCIASLas sentencias describen las acciones algorítmicas que pueden ser ejecutadas. En general lassentencias se clasifican en ejecutables ( especifican operaciones de cálculos aritméticos yentrada/salidade datos) y no ejecutables (no realizan acciones concretas, ayudan a la legibilidad del programa)Las sentencias ejecutables aparecen en el cuerpo del programa a continuación de la palabrareservadaBegin.Cada sentencia ejecutable se traduce por el compilador en una o varias instrucciones de lenguajemáquina, que se copian en el archivo objeto y posteriormente se ejecutan.Las declaraciones describen el significado y el propósito de cada identificador definido por elusuario:no se traducen a instrucciones de lenguaje máquina y no aparecen en el archivo objeto.Las sentencias se clasifican en:• Simples.• Estructuradas.Sentencias Simples:Es una sentencia que no tiene ninguna otra sentencia. Se clasifican en:Asignación: Asignan valores a variables.Procedure: Un procedimiento es un subprograma que realiza una tarea específica. Unprocedimientoestá compuesto por un grupo de sentencias a las que se les asigna un nombre (identificador).Goto: Su uso no es recomendable en Turbo Pascal.Sentencias Estructuradas

Page 8: Apuntes Pascal

Son sentencias compuestas de otras sentencias: ( compuestas y sentencias with), condicionalmente(sentencias condicionales o selectivas), o repetitivas (sentencias repetitivas).

SENTENCIAS DE ASIGNACIÓNLa sentencia de asignación se utiliza para asignar (almacenar) valores o variables. La asignación esunaoperación que sitúa un valor determinado en una posición de memoria. En seudo código se denotaconel símbolo ← que en pascal se sustituye por “:=” que se denomina operador de asignación.Nota: Efectúe una lectura comprensiva. Elabore un resumen de las reglas de asignación. Examinelosejemplos presentados en el libro (Pág. 77-79.Analice el tema tratado bajo el título: Operaciones de asignación especiales.

OPERACIONES DE ENTRADA / SALIDALos datos pueden almacenarse en memoria de tres maneras distintas: asociadas con constantes, consentencias de asignación, o una sentencia de lectura.El tercer método es el más indicado. Además la lectura permite asignar valores desde dispositivos,hasta archivos externos, y se denomina operación de entrada o lectura.A medida que se realizan cálculos en un programa, se necesitan visualizar los resultados. Estaoperación se conoce con el nombre de operación de salida o escritura.En Pascal todas las operaciones de entrada / salida se realizan ejecutando unidades de programaespeciales denominados procedimientos de entrada / salida que forman parte del compilador dePascal.Procedimientos de entrada: Read ReadLnProcedimientos de salida: Write WriteLn8Taller I - “T. Pascal”Procedimiento WriteLn:Permite escribir (visualizar) información en pantalla.Cuando se ejecuta el procedimiento WRITELN, se visualizan todos los elementos en el orden dadoyen la misma línea. Al terminar de visualizar la línea, el cursor avanza, (salta) al comienzo de lasiguiente línea.Writeln, permite escribir salidas en diferentes líneas. Sin ningún ítem en su sintaxis proporcionasaltoso avances de línea.Procedimiento Write:Si desea dejar el cursor después del último elemento en la misma línea, se debe utilizar elprocedimiento Write.Formatos de salida:La puntuación de resultados de un programa suele ser un factor importante en le eficiencia delmismo.Sin embargo, no siempre es posible conocer con antelación la anchura que ocupan los valores avisualizar, lo que puede ser preocupante sobre todo si se trata de alinear números en columna.Es posible especificar el número de posiciones del campo de escritura.Se pueden utilizar especificadores de formato de campo para definir dicha anchura.Ejemplosx:=5.265;writeln(x:8:4) 5.2650writeln(x:8:2) 5.26x:=14;

Page 9: Apuntes Pascal

writeln(x:3) 14wrileln(’A’:4) AOrganización de cadenas:Un valor de cadena siempre se imprime justificado a derecha de su campo. Por consiguiente,espaciosen blanco preceden a la cadena si el campo en que se imprime es mayor que la cadena. Si el campoesmenor se imprime los primeros caracteres de la anchura de campo.“A” :1 A“A” :2 A“MUSA” :1 M“MUSA” :2 MU“MUSA” :5 MUSAImpresión de resultados:Las salidas a la pantalla se obtienen mediante los procedimientos WRITE, WRITELN,.Si desea enviar los resultados a impresora:USESPRINTER;

WriteLn(lst,’Hola’);Printer define un archivo LST y asocia este archivo al Puerto de comunicaciones LPT1 (impresora)delDOS.La entrada de datos (Lectura):El término lectura se aplica a una operación de entrada de valores provenientes de un periférico ydirigidos hacia zonas de memoria (teclado, disco, u otro dispositivo).La operación de lectura permite proporcionar datos durante la ejecución de un programa.Diferencias entre Read y ReadLn:En read, después de pulsar la tecla Intro, el cursor permanece inmediatamente después del últimocarácter introducido. En ReadLn, el cursor se envía al principio de la siguiente línea, tras pulsar lateclaIntro.Nota: Trabajar con la guía de Trabajos Prácticos Número uno. Ejercicios 1,2,3.

EXPRESIONESExpresiones y Operaciones Aritméticas:Las variables y constantes se pueden procesar utilizando operaciones y funciones adecuadas.Una expresión es un conjunto de datos o funciones unidos por operadores aritméticos.Operador Significado Ejemplo Resultado+ Suma A+b Suma de a y b- Resta a-b Diferencia a y b* Multiplicación A*b Producto de a por b/ División A/b Cociente de a por bDiv División entera A div b Cociente entero de a por bMod Resto entero A mod b Resto de a por bShl Desplazamiento a izquierda A shl b Desplaza a izquierda b bitsShr Desplazamiento a derecha A shr b Desplaza a derecha b bitsOperadores DIV y MODLos operadores DIV y MOD solo se pueden utilizar con números enteros.Nota: Realice el ejercicio número dos del TP N° 1, declarando las variables Tipo Real. Modifique elprograma declarando las mismas variables tipo integer.Analice los inconvenientes presentados. Efectúe las correcciones necesarias.Reglas de evaluación de expresiones (Prioridad):

Page 10: Apuntes Pascal

La siguiente tabla presenta a todos los operadores con su respectiva prioridad.Operador PrioridadNot Más alta (se evalúa primero)*, /, div, mod, and+, - , or<, <= , = , <> , >= , > Más baja (se evalúa el último)

ESTRUCTURAS DE CONTROL SELECTIVASEn todos los algoritmos realizados, cada instrucción se ha ejecutado en el orden en que aparecen.Perocon frecuencia nos enfrentamos a situaciones en las que se deben proporcionar instruccionesalternativas que pueden o no ejecutarse dependiendo de los datos de entrada.Para lo que debemos recurrir a estructuras de decisión.La realización de acciones alternativas o decisiones se especifican utilizando condiciones que sonverdaderas o falsas. Estas condiciones se llaman expresiones lógicas (o booleanas).Las expresiones lógicas se forman comparando los valores de las expresiones utilizando operadoresde relación ( o relacionales) o comparación y los operadores lógicos.Operadores de Relación:Operador Significado Equivalente Matemático> Mayor que >< Menor que <= Igual a =>= Mayor o igual ≥<= Menor o igual ≤<> Distinto ≠Operadores Lógicos:Operador1 Operador 2 ANDT T TT F FF T FF F FOperador1 Operador 2 ORT T TT F TF T TF F FOperador1 NOTT FF TNota: Leer Variables Lógicas. Pg. 113.La Sentencia IFDado que las expresiones lógicas toman el valor V o F, se necesita una sentencia que dirija a lascomputadoras a ejecutar una sentencia si la condición es V y otra si es F.Ejemplo 1:PROGRAM primero;USES CRT;VARNumero: integer;BEGINCLRSCR;WRITE(‘Introduzca un número: ‘);

Page 11: Apuntes Pascal

READLN(numero);IF numero >0 then

WRITELN(‘ El número es positivo.’);REPEAT UNTIL KEYPRESSEDEND.Ejemplo 2:PROGRAM primero;USES CRT;VARNumero: integer;BEGINCLRSCR;WRITE(‘Introduzca un número: ‘);READLN(numero);IF numero >0 then

WRITELN(‘ El número es positivo.’)

ELSE

WRITELN(‘ El número es Negatico.’);REPEAT UNTIL KEYPRESSEDEND.Sentencias Compuestas:En numerosas ocasiones, en lugar de realizar una sola acción, cuando se cumpla o no se cumpla unadeterminada condición, se deben realizar diferentes acciones. Esto se realiza mediante sentenciascompuestas.La sentencia anterior al ELSEno finaliza con ; (punto ycoma)Punto y coma de final desentencia.Taller I - “T. Pascal”Una Sentencia Compuesta es un conjunto de sentencias separadas por puntos y comas, y encerradasentre las palabras Begin y End. El cuerpo de un programa o procedimiento es una sentenciacompuesta.Ejemplo 3:PROGRAM primero;USES CRT;VARNumero: integer;BEGINCLRSCR;WRITE(‘Introduzca un número: ‘);READLN(numero);IF numero >0 then

BEGIN

WRITELN(‘ El número es positivo.’);

WRITELN(‘Muchas Gracias.’)

END;REPEAT UNTIL KEYPRESSEDEND.Ejemplo 4:

Page 12: Apuntes Pascal

PROGRAM primero;USES CRT;VARNumero: integer;BEGINCLRSCR;WRITE(‘Introduzca un número: ‘);READLN(numero);IF numero >0 then

BEGIN

WRITELN(‘ El número es positivo.’);

WRITELN(‘Muchas Gracias.’)

END

ELSE

BEGIN

WRITELN(‘ El número es Negativo.’);

WRITELN(‘Muchas Gracias.’)

END;REPEAT UNTIL KEYPRESSEDEND.Nota: Si en cada círculo en rojo, se escribiera un punto y como ¿ cuál sentencia provocaría unmensajede error?.Analice: “Sentencias Compuestas”, “Puntos y comas innecesarios”, “La sentencia vacía”. Pág.120-122.Sentencias IF anidadas

La sentencia que sigue a la palabra reservada then o else puede ser cualquier sentencia, inclusootro ifthen-else. Cuando una o ambas bifurcaciones de la sentencia if-then-else contiene una sentencia ifthen-else, se dice que dichas sentencias IF están anidadas y al proceso anidamiento.PROGRAM primero;USES CRT;VARNumero: integer;BEGINCLRSCR;WRITE(‘Introduzca un número: ‘);Por ser sentencias compuestasdeben estar encerradas por unbegin...endTaller I - “T. Pascal”READLN(numero);IF numero >0 then

WRITELN(‘ El número es positivo.’)

ELSE

BEGIN

IF numero < 0 then

WRITELN(‘ El número es Negativo.’)

Page 13: Apuntes Pascal

ELSE

WRITELN(‘ El número es CERO.’)

END;REPEAT UNTIL KEYPRESSEDEND.La sentencia CASE:La sentencia CASE se utiliza para elegir entre diferentes alternativas. Una sentencia CASE secomponede varias sentencias simples. Cuando CASE se ejecuta una (y solo una) de las sentencias simples seselecciona.Ejemplo 1:Program selectivas;Usescrt;VarNum: integer;beginclrscr;writeln('Introdusca un número del 1 al 7');read(num);Case num of

1:write('Corresponde al día Domingo');

2:write('Corresponde al día Lunes');

3:write('Corresponde al día Martes');

4:write('Corresponde al día Miércoles');

5:write('Corresponde al día Jueves');

6:write('Corresponde al día Viernes');

7:write('Corresponde al día Sábados');

end;end.Ejemplo 2:CASE valor OF‘+’: resultado := resultado+2;‘-‘ : resultado := resultado-2;END;Ejemplo 3:CASE caracter OF‘0’..’9’: write(‘Cifra’);‘a’..’z’: write(‘minúscula’);‘A’..’Z’: write(‘mayúscula’);‘a’, ’e’, ’i’, ’o’, ’u’: write(‘Es una vocal’)ELSEWrite(‘es otro carácter’)END;CASE con sentencia compuesta.

Ejemplo 4:Readln(selección);CASE selección OF

Page 14: Apuntes Pascal

‘N’,’n’: beginwrite(‘su nombre es: ’);write(nombre)end;‘D’,’d’: beginwrite(‘su dirección es: ’);write(dirección)end;‘F’,’f’: {no hace nada}ELSEWriteln(‘Elección no válida’)END;Nota: Si en cada círculo en rojo, se escribiera un punto y como ¿ cuál sentencia provocaría unmensajede error?.

ESTRUCTURAS DE CONTROL REPETITIVASEl concepto de Bucle: Una estructura de control que permite la repetición de una serie determinadadesentencias se denomina BUCLE (lazo o ciclo).El cuerpo del bucle contiene las sentencias que se repiten. Pascal proporciona tres estructuras osentencias de control para especificar la repetición: WHILE, REPEAT, FOR.Las acciones que se repiten en un bucle se denominan cuerpo del bucle ycada repetición del cuerpo del bucle se denominaiteración.La sentencia WHILELa estructura repetitiva WHILE (mientras) es aquella en la que el número de iteraciones no seconocepor anticipado y el cuerpo del bucle se repite mientras se cumple una condición. Por esta razón se ledenominan bucles condicionales.Reglas de funcionamiento1- La condición se evalúa antes y después de cada ejecución del bucle. Si la condición es V, seejecuta el bucle, y si es falsa, el control pasa a la siguiente sentencia, al bucle2- Si la condición es F, cuando se ejecuta el bucle por primera vez, el cuerpo del bucle no seejecuta nunca. El bucle entonces se ha ejecutado cero veces.3- Mientras la condición sea verdadera el bucle se ejecutará. Si la expresión nunca cambia de valorentonces el bucle no termina nunca, y se denomina bucle infinito o sin fin.MIENTRAS condicion = VSentenciasFIN_MIENTRASNota: La condición se evalúa al principio. Si es falsa las sentencias no se ejecutan.

La sentencia REPEATUna de las características de los bucles while-do es que la condición se evalúa al principio de cadaiteración.La sentencia Repeat especifica un bucle condicional que se repite hasta que la condición se haceverdadera. Este bucle se denomina Repeat-until.Reglas de funcionamiento1- La expresión se evalúa al final después de ejecutarse todas las sentencias.2- Si la expresión es F, se vuelve a repetir el bucle y se ejecutan todas las sentencias.3- Si la expresión lógica es V, se sale del bucle y se ejecuta la siguiente sentencia a until.

Page 15: Apuntes Pascal

4- La sintaxis no requiere begin-end.REPETIRSentenciasHASTA_QUE condicion = VNota: La condición se evalúa al final. Si es V sale del bucle. Si es F continúa.Nota: Efectúe una lectura comprensiva. Analice el cuadro comparativo de la página 163.Complementar una condición:Para cambiar de un bucle a otro se necesita complementar la condición. Se puede complementar unacondición simple cambiando el operador relacional de la forma siguiente:Operador Operador que complementa< >=<= >> <=>= <= <><> =La sentencia FOREn numerosas ocasiones se puede desear que un bucle se ejecute un número determinado de veces,ycuyo número se conozca por anticipado.DESDE I ← inicio HASTA fin HACERSentenciasFIN_DESDENota: La condición se evalúa un número determinado de veces.Incrementos del contador FOR (TO)Al ejecutarse la sentencia FOR la primera vez, el valor inicial se asigna a la variable que se ladenomina variable de control, y a continuación se ejecuta la sentencia del interior del bucle.Al llegar a la sentencia END se verifica si el valor final es mayor que el inicial en caso negativo seincrementa el valor de variable, y se vuelven a ejecutar las sentencias, hasta que la variable decontrolsea mayor que el valor final.15sentenciascondiciónI←1I←i+1 I≤10SentenciaTaller I - “T. Pascal”FOR variable : = inicio HASTA final DOSentencia;Si la sentencias son compuestas entonces:FOR variable : = inicio HASTA final DOBEGINSentencias1;Sentencias2END;Decremento del contador FOR (DOWNTO)El contador del bucle se puede decrementar de uno en uno en lugar de incrementar.FOR i:= 5 DOWNTO 1 DOWriteln(i);EJEMPLOPROGRAM ejemplo;

Page 16: Apuntes Pascal

USES CRT;VARI: integer;Num, suma, prom: real;BEGINClrscr;Suma:= 0; prom:=0;Writeln (‘Ingrese diez valores para determinar el promedio: ‘);I:=0;WHILE I < 10 DOBEGINReadln(num);Suma:=suma+num;I:=i+1END;I:=0;REPEATReadln(num);Suma:=suma+num;I:=i+1UNTIL I>=10;{no se inicializa I}FOR i := 1 TO 10 DOBEGINReadln(num);Suma:=suma+numEND;Prom:= suma/10;Writeln(‘El promedio es: ‘, prom:5:2);Repeat until keypressedEND.Nota: Analice el ejemplo para cada una de las estructuras repetitivas.Leer: “ Reglas de funcionamiento”. Pág. 168.“Bucles anidados”. Pág. 171.“Elección de la estructura repetitiva adecuada”. Pág. 177.Iteraciones:VALOR WHILE REPEATI : = 0 I < 10 I >=10I : = 1 I <= 10 I > 10

UNIDAD III: Estructuras de Datos: ArraysConcepto de Estructuras de Datos. Array. Concepto. Clasificación.Arrays Unidimensional (vector). Declaraciones de tipo Array. Variables de tipo Array.Operaciones con Arrays.Arrays Bidimensional (matriz). Declaración. Manipulación.

INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOSConcepto: Una estructura de datos es una colección de datos organizados de un modo particular.Lasestructuras de datos pueden ser de dos tipos: Estructuras de Datos Estáticas y Estructuras de DatosDinámicas.Las Estáticas son aquellas que se le asigna una cantidad fija de memoria cuando se declara la

Page 17: Apuntes Pascal

variable.En numerosas ocasiones se necesitan colecciones de datos que crezcan y reduzcan su tamaño enmemoria a medida que el programa progresa. Las estructuras que reducen y aumentan su tamaño sedenominan estructuras de datos dinámicas.¿Que es un array?Es una estructura de datos en la que se almacena una colección de datos del mismo tipo. Dicho deotromodo, un array es una lista de un número finito de elementos del mismo tipo que se caracteriza por:1. Almacenar elementos del array en posiciones de memoria continuas.2. Tener un único nombre de variable que representa a todos los elementos, y éstos a su vez sediferencian por un índice o subíndice.3. Acceso directo o aleatorio a los elementos individuales del array.Los arrays se clasifican en:• Unidimensionales (Vector o Lista)• Multidimensionales (Tabla o Matriz)

ARRAYS UNIDIMENSIONALES: LOS VECTORES.Un array de una sola dimensión (unidimensional) – vector o lista – es un tipo de datos estructuradocompuesto de un número de elementos finitos, tamaño fijo y elementos homogéneos.� Finito indica que hay un último elemento.� Tamaño fijo significa que el tamaño del array debe ser conocido en tiempo de compilación.� Homogéneo significa que todos los elementos deben ser del mismo tipo.Nota: Analizar Ejemplo 11.1 y 11.2 presentados por el libro.Declaración de Tipo ArrayLa estructura de un array (vector) se describe por la declaración del tipo de array.Formato:TypeNombre_array = array[tipo subindice] of tipoEjemplo:TypeX = array [1..8] of real;Variable Tipo Array:Las declaraciones de tipo array no crea ninguna variable específica tipo array. En realidad ladeclaración type proporciona información perteneciente un grupo de arrays como un todo.Las variables tipo array son creadas utilizando la declaración var, cuyo formato general es:Formato: VarNombreArray: NombreTipo;17Taller I - “T. Pascal”Ejemplo:Type

Valores = array [1..10] of real;

VarPrecios: Valores;O bienVarPrecios : array [1..10] of real;Los límites de un array ordinario en Pascal se deben fijar en tiempo de compilación. El compiladorde

Page 18: Apuntes Pascal

Pascal debe conocer, cuando se compila el programa, exactamente el espacio ocupado por loselementos del array. No se puede redimensionar arrays ordinarios, ni se puede cambiar su forma.Los tipos de datos de un array pueden ser cualquier dato válido.Las declaraciones de arrays pueden aparecer directamente en la sección de variables de la parte dedeclaración de un programa. Esta declaración es correcta:Var

Coordenadas: array [1..15] of real;Pero es preferible asociarlas con identificadores tipo, como enType

ArrayReal =array [1..15] of real;Y a continuación utilizar estos identificadores tipo para declarar los tipos de arrays:VarCoordenadas : ArrayReal;Uso de índice de un array:Cada referencia a un array incluye el nombre y el subíndice (índice) encerrado en corchetes; elíndicedetermina qué elemento se procesa. El tipo índice suele ser un subrango. Centrándonos en el array ylosdatos contenidos en él, las operaciones básicas que pueden ejecutar en ellos son:• Asignación de valores a elementos del array.• Índices distintos de enteros.Nota: Analizar los puntos mencionados, en el libro de referencia.-Operaciones con Arrays:Los vectores (arrays) no se pueden leer/escribir en una sola operación o sentencia. La lectura oescritura de un array se debe hacer elemento a elemento, y para realizar estas operaciones se debenleero visualizar los componentes de un array mediante estructuras repetitivas.Lectura de un vectorVARNotas: array [1..100] of real;Bucle FORFOR I :=1 to 100 DOReadln (notas [i] );Bucle WHILEI:=1;WHILE I <= 100 DOBeginReadln (notas [i] );I:= I +1End;18Taller I - “T. Pascal”Escritura de un Vector:Los elementos de un vector pueden ser visualizados situando una sentencia de salida dentro de unaestructura repetitiva.Bucle FORWriteln (‘Las notas son: ‘);For I :=1 to 100 doWriteln (notas [i] :4 :2 );Bucle WHILE

Page 19: Apuntes Pascal

Writeln (‘Las notas son: ‘);I:=1;While I <= 100 do

BeginWriteln (notas [i] :4 :2 );I:= I +1End;Copia de Vectores:Una operación que se suele dar en ocasiones es la copia de los elementos de un vector en otrovector.En general, un array puede ser asignado a otro array solo cuando ambos tienen el mismo tipo y elmismo tamaño.

ARRAYS BIDIMENSIONALES: TABLA o MATRIZ.Un array bidimensional (tabla o matriz) es un array con dos índices, al igual que los vectores, debenser ordinales o tipo subrango.Para localizar o almacenar un valor en el array se deben especificar dos posiciones (dos subíndices),uno para la fila y otro para la columna. Los elementos se referencian con formato:T [3,4] Fila 3, Columna 4.1 2 3 4 5 6 7 81 T[1,1] T[1,2] T[1,3] T[1,8]2345 T[5,1] T[5,8]Declaración de los Arrays BidimensionalesAl igual que en los arrays de una dimensión (los vectores), los arrays bidimensionales (tablas) secreancon declaraciones type y var cuando un programa se codifica en Pascal.Se deben indicar:1. Nombre del array.2. Tipo del array (recuerde que todos los elementos de un array deben ser del mismo tipo).3. El rango permitido (es decir el primero y el último valor posible) por cada subíndice.19T[3,4]Taller I - “T. Pascal”Formato:TypeIdentificdor = array [índice1, índice2] of tipo elementoEjemploType

Tabla=array [1..25,1..4] of real;

VarGrados: Tabla;O bienVar

Grados: array [1..25,1..4] of real;Manipulación de Tablas:El orden más natural de procesar es el orden secuencial: del primero al último elemento. En caso delas

Page 20: Apuntes Pascal

tablas o de los arrays multidimensionales, existen diferentes órdenes para su recorrido. Los másusuales son: recorrido por filas y recorrido por columnas.Nota: Observar detalladamente la figura 9.2, presentada por el libro. Pg. 354.Analizar el ejemplo 11.5, presentado por el libro. Transcribir el ejemplo, compilar y ejecutar.Lograr una ejecución modelo como la presentada por el libro. Pg. 358.Para ello deberá primero, consultar la UNIDAD V: Programación Modular:

Procedimientos

propiosEjercicio:Escribir un programa que permita sumar y multiplicar dos matrices leídas del teclado.RTA: Pg. 372.

UNIDAD IV: Funciones y Procedimientos de BibliotecaFunción. Concepto.Funciones Predefinidas: Funciones Aritméticas ( Trunc, Round, Abs, Frac, Int, Exp, Ln,XY, Sqr, Sqrt). Funciones Trigonométricas (Sin, Cos, Atn). Funciones Ordinales (Ord,Chr, Pred, Succ). Funciones Especiales (Pi, Odd). Incremento y Decremento (Inc, Dec).Número Aleatorios.Funciones Definidas por el usuario.Funciones y Procedimientos de Cadena (Concat, Lenght, Pos, Copy, Upcase,. Delete, Insert,Str, Val).Procedimientos Gotoxy, Clrscr, TextColor, TextBackgroud

FUNCIONES ESTANDARLas FuncionesUna función es un subprograma que recibe como argumento o parámetros datos de tipo numérico ononuméricos (char, string, bollean u otros), y devuelve un resultado. Esta es la característica que lediferencia de un procedimiento.Formato General.Nombre_funcion(Argumento1, Argumento2,...)Argumento............... dato de tipo char, string, etc.,El argumento se conoce también con el nombre de PARÁMETRO.En T. Pascal existen dos grandes grupos de funciones:• Funciones predefinidas, estándar o internas.• Funciones definidas por el usuario.Funciones Predefinidas:Las funciones están divididas en los siguientes grupos:1. De asignación dinámica de memoria.2. De transferencia.3. Aritméticas.4. Ordinales.5. Cadena.6. Dirección y punteros.7. Especiales.Funciones Matemáticas:Las funciones matemáticas, denominadas también aritméticas, son aquellas que realizanoperacionesmatemáticas y devuelven un valor. Las funciones son referenciadas directamente en una expresión osentencia genérica y el valor calculado por la función es sustituido por la referencia de la función.

Page 21: Apuntes Pascal

1.-Función de conversión: (reales/enteras, y enteros/reales)El valor entero se puede asignar a variables de tipo real. Y lo inverso NO es posible porque un realtiene parte decimal y no hay forma de expresar una parte decimal en tipo integer..TRUNC: La función Trunca la parte decimal de un número real.Formato : Trunc(x).x ... expresión numérica de tipo real en el rango de los entero largo.Trunc devuelve un valor entero largo Longint.Ejemplo:Trunc(5.2) {Devuelve: 5}Trunc(5.99) {Devuelve: 5}ROUND: La función round redondea un real a un entero.Formato Round(x).x….. expresión de tipo real dentro del rango de los enteros largos.EjemploRound(4.448) {Devuelve 4}Round(5.6125) {Devuelve 6)Round devuelve un valor entero que es el entero más próximo a x.2.- Funciones Aritméticas elementales:ABS: Devuelve el valor absoluto de un número.Formato Abs(x).x.... expresión de tipo entero o real.El resultado es del mismo tipo que x.FRAC: Devuelve la parte decimal de un número.Formato Int(x).x.... expresión de tipo real.EjemploFrac(4.85962) {Devuelve 0.85962} Rdo Tipo REALINT: Devuelve la parte entera de un número real.Formato: Int(x).x..... expresión de tipo real.EjemploInt(321.0004) {Devuelve 321.0} Rdo Tipo REAL3.- Funciones Exponenciales y Logarítmicas:EXP: Devuelve la función exponencial de x. Potencia de e elevado a x (ex), (x número real oentero),siendo su resultado siempre real.LN: Devuelve el Logaritmo Natural (logaritmo en base e) de x. El resultado es real.

XY: Al contrario que otros lenguajes, Pascal no contiene la función de potencia (xy). Sin embargo ,Expy Ln permiten diseñar una función que eleva un número a una potencia dada.XY = Exp(y * Ln(x) )SQR / SQRT: Sqr(x) equivale a x2 o de otro modo x*x. La función Sqrt(x) es la función raízcuadradadel argumento.Formato: Sqr(x) .x de tipo real o enteraSqrt(x) .x de tipo real.4. Funciones Trigonométricas:SIN, COS, ATNTan, Cot, Sec, Cosec.5.- Funciones Ordinales:

Page 22: Apuntes Pascal

22Taller I - “T. Pascal”Son aquellas que se aplican a argumentos o parámetros de tipo ordinal.ORD: devuelve la posición ordinal (un entero) del valor x.EjemploOrd (false) {Devuelve 0)Ord(True) {Devuelve 1)Ord(6) {Devuelve 6)Ord(B) {Devuelve 66)CHR: Es la opuesta de Ord. Devuelve el carácter del código ASCII correspondiente al x-enésimocarácter (x es un entero).Ejemplo:Chr(66) {Devuelve B}Chr(13) {Devuelve un retorno de carro (Enter)}PRED y SUCC: Dado un valor ordinal Pred y Succ, devuelven el predecesor y el antecesor delvalordel argumento.Ejemplo:Pred(43) {Devuelve 42}Succ(456) {Devuelve 457)PI: devuelve el valor de la constante matemática Pi. (3.141592)ODD: verifica si el argumento de la función es un número impar. Recibe un número entero ydevuelveun valor lógico.Resultado: T si es impar. F si es par.Incremento y Decremento:Se añaden dos procedimientos estándar que operan sobre tipos ordinales.INC: Incrementa un valor tipo ordinal.DEC: Decrementa un valor tipo ordinal.Inc y Dec, son equivalentes a Pred y Succ, con la diferencia que éstas son funciones en lugar deprocedimientos. La razón de utilizar Inc, Dec reside en el hecho de su mayor velocidad deejecución.Nota: Realice un ejercicio donde pueda aplicar cada una de las funciones.Puede tomar como referencia los presentados en la bibliografía.Números Aleatorios:Existen numerosas ocasiones en que se necesitan realizar simulaciones y que implican elementosdependientes del azar como por ejemplo juegos de lotería. En estas ocasiones se debe utilizar lacomputadora y un método generador de números aleatorios.Random: es una función que genera números pseudoaleatorios.Randomize: en una sentencia encargada de reinicializar la semilla RaadSeed (semilla aleatoria) quelafunción Random utiliza para la generación de números pseudoaleatorios.

FUNCIONES DEFINIDAS POR EL USUARIO:Además de las funciones predefinidas es posible que el usuario pueda delcarar sus propiasfuncionesde igual modo que declara sus procedimientos.Una función es un subprograma que devuelve un único resultado al programa o subprograma que lellamó.

Formato

Page 23: Apuntes Pascal

Function Nombre(p1,p2,):tipo{declaraciones locales y subprogramas}Begin{Cuerpo de la función}nombre:= valor de la funciónend;p1,p2.... lista de parámetros formales.Tipo...... tipo de dato del resultado que devuelve la función.Comparación entre funciones y procedimientos:1. En lugar de la palabra Procedure se debe utilizar la palabra Function.2. Al igual que en los procedimientos, el nombre de la función es un identificador. Sin embargo elnombre de la función se refiere a la posición de memoria que contiene el valor devuelto por lafunción.3. La lista de parámetros formales son los identificadores utilizados para recibir los valores delprograma.4. El tipo de dato del resultado coincide con el tipo expresado en la cabecera de la función.5. En el cuerpo de la función debe existir una sentencia de asignación similar a:nombre_funcion:=valor_funcion. Donde esta definido el valor de la función.6. La función solo devuelve un valor, el procedimiento puede devolver cero, uno o varios valores.7. El tipo de dato del resultado en la función debe estar indicado en la cabecera y puede sercualquier tipo de dato escalar (integer, real, booean o char) o un tipo enumerado o un tiposubrango o un tipo puntero.Ejemplo:Función triple de un número.Function triple(numero:real): real;begintriple:=3* numeroend;* Función signo de un númeroFunction signo(x:real): integer;{ devuelve signo del parámetro x: 1,0,-1. para pos, cero, neg.}VarAux:integer;BeginIf x > 0 then aux:= 1;If x = 0 then aux:=0;If x< 0 then aux:=-1;signo:= auxend;Llamadas a la función.Se llama igual que una función predefinida haciendo referencia a ella en una extensión.La llamada se realiza con un designador de la función nombre(lista de parámetros) en una sentenciade asignación o en una sentencia de salida (escritura).Formato (designador de una función)Nombre_funcion(lista de parámetros actuales)• Los parámetros actuales deben estar separados por comas.• El número de parámetros Actuales y Formales debe ser el mismo y de igual tipo.Funciones con resultado no numérico:Un función puede devolver un valor perteneciente a cualquier tipo estándar, un tipo enumerado, untipo subrango, o un tipo puntero.Un ejemplo la función Mayúscula recibe un argumento tipo carácter, y devuelve una mayúscula o el

Page 24: Apuntes Pascal

mismo argumento.Ej.Function mayúscula(ch:char):char;

Begin

If ch in [‘a’..’z’] thenMayuscula:= chr( Ord(ch) – Ord(‘a’) + ord(‘A’))ElseMayuscula:=ch;End;Parámetros variables sin tipoCuando un parámetro formal es un parámetro sin tipo, el parámetro real (actual) correspondientepuedeser cualquier referencia a variable con independencia de su tipo.

FUNCIONES DE CADENA:Concepto de cadena de caracteres (String):Una cadena de caracteres es una serie de caracteres cuya longitud (número de caracteres quecontiene)puede variar de 1 a 255 caracteres.T.P. tiene un tipo de dato String que almacena información de texto. Este dato se puede almacenarenconstantes y en variables de cadena. Una variable de cadena esta declarada por la palabra stringseguidade la longitud máxima de la cadena de caracteres entre corchetes.Declaración de una variable tipo cadena: Se declaran en la sección VARVARnombre: string;El contenido de una cadena de caracteres se debe encerrar entre apóstrofos.En los procedimientos de Entrada/Salida resultaría:Readdln(nombre);Writeln(‘Su nombre es: ‘ , nombre);Longitud de una cadena:Una cadena físicamente es una estructura tipo array de caracteres con índice cero a longitud física.Unavariable de cadena puede tener de 0 a 255 caracteres de longitud. La ocupación en memoria de unacadena es un número de bytes igual al de caracteres de la cadena más uno. Así la cadena‘Mortimer’Tiene una longitud de 8 bytes, pero ocupa 9. Esto se debe a que el primer byte en una cadenacontienela longitud de la cadena actualmente almacenada en memoria.VARNombre: string[10]Si la variable nombre contiene ´Mortimer’ ocupará en memoria 9 bytes.Una cadena en Pascal tiene dos longitudes:Longitud Física: es la cantidad de memoria que la cadena ocupa realmente.Longitud Lógica: es el número de caracteres actualmente almacenados en la cadena, este dato puedecambiar durante el tratamiento de la cadena.VARNombre: string[15]........

Page 25: Apuntes Pascal

nombre:=’Computación’;25Taller I - “T. Pascal”Bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1511 C o m p u t a c i ó nLongitud Lógica: 11Longitud Física: 15Asignación de cadenas:Se les puede asignar valores por medio de una sentencia de asignación o bien con una sentencia delectura.Caso 1: Destino = Fuente → No existen inconvenientesCaso 2: Destino > Fuente → No existen inconvenientesCaso 3: Destino < Fuente → Fuente se trunca al tamaño de Destino.Nota: Analice los inconvenientes que se presentan cuando en una asignación de cadenas, destino yfuente no tienen igual longitud. Pág. 384.-Operaciones entre cadenas:Las operaciones son:* Asignación: es posible asignar el contenido de una cadena a otra cadena.* Comparación: las comparaciones se realizan según el orden de los caracteres en el código ASCIIycon los operadores de relación.* Concatenación: es el proceso de combinar dos o más cadenas en una sola cadena. Es posibleconcatenar con el operador de concatenación (+), y la función concat.Procedimientos y funciones de cadenas internos:Funciones FunciónDe ConversiónProcedimientos Procedimiento deConversión• Concat• Length• Pos• Copy• Upcase • Delete• Insert• Str• ValFunción ConcatProceso de combinar dos o más cadenas de caracteres en una sola.FormatoConcat(S1,S1,....,Sn)S1, S2 …… cadenas o variables de tipo stringSi la cadena en mayor a 255 se truncan los caracteres después del 255.Función LengthProporciona la longitud lógica de una cadena de caracteres y devuelve un valor entero.FormatoLength(s)s... expresión de tipo cadena.Función PosPermite determinar si una cadena está contenida en otra. En este caso la función devuelve laposición

Page 26: Apuntes Pascal

donde comienza la cadena buscada en la cadena fuente. Si la cadena no existe, se devuelve elresultadocero (0).Formato:Pos(cadena_buscada, cadena_fuente)

Función CopyEsta función devuelve una cadena de caracteres (subcadena) extraída de una cadena.Formato:Copy(S, Posición, Número)S expresión tipo cadena (fuente).Posición primer carácter a extraer (tipo entero)Número total de caracteres a extraer (tipo entero)Función de conversión a mayúscula: UpcasePermite cambiar letras minúsculas a mayúsculas. La función Upcase toma un argumento de tipoCHARy devuelve la mayúscula correspondiente.Formato:Upcase(s)s... tipo charProcedimiento DeleteDelete borra o elimina una subcadena de una cadena. Una subcadena es una cadena contenida enotracadena de mayor longitud. Delete, en esencia, borra uno o varios caracteres de una cadena a partirdeuna posición dada.Formato:Delete(S, Posición, número)S cadenaPosición expresión entera que indica la posición del primer carácter a suprimirNúmero cantidad de caracteres a suprimir. (Tipo entero).Procedimiento InsertInserta una subcadena en una cadena.Formato:Insert(cad1, S, Posición)Cad1 cadena a insertarS posición donde se insertaPosición carácter a partir del cual se inserta.Procedimiento de conversión Números / Cadenas:Recordemos que un número y una cadena equivalente no son intercambiables. En otras palabras 63noes igual ‘63’, son dos datos diferentes.StrEfectúa la conversión de un valor numérico en una cadena.Formato:Str(Valor,S)Valor expresión numéricaS cadenaValConvierte una cadena de caracteres en variable numérica. Formato:Val(S, Variable, Código)S Cadena, equivalente numérica de tipo entero o real.Variable Variable tipo entero o tipo real.

Page 27: Apuntes Pascal

Código Si la conversión se efectuó, toma el valor cero, en caso contrario contiene laposición del primer carácter de la cadena que impide la conversión y en ese caso la variable noquedadefinida. Tipo entero.Nota: Realice un ejercicio donde pueda aplicar cada una de las funciones.Puede tomar como referencia los presentados en la bibliografía.Otras Propiedades de las Cadenas:Además de las ya analizadas propiedades fundamentales de los datos tipos string (cadena) sepuedenconsiderar una serie de características complementarias que es necesario tener presente a la hora derealizar una buena programación de las cadenas. Algunas características ya han sido tratadasanteriormente, pero se vuelven a analizar para reforzar su importancia en el tratamiento de cadenas.• Cadena nula o vacía• Compatibilidad de datos tipo char y tipo string• Acceso a posiciones individuales en una cadena.• Arrays de datos tipo char.Nota: Efectúe una lectura comprensiva de los items descriptos en el párrafo anterior. Resúmalos.Ejercicios:1.- Escribir un programa que lea una cadena de caracteres y la visualice dentro de un cuadro************************* CURSO PASCAL *************************2.- Escribir un programa que tenga como entrada el apellido y nombre de una persona separados poruna coma. Y que visualice el apellido y el nombre en variable por separado.

PROCEDIMIENTOS (Operaciones Básicas de Utilidad)El borrado (limpieza) de la pantalla: CLRSCRLa orden (procedimiento) ClrScr, borra, limpia la pantalla (ventana actual) y situa el cursos en laesquina superior izquierda. (1,1).Para poder utilizar ClrScr, deberá declara la unidad estándar CRT.FormatoCLRSCR;Nota: Es una buena costumbre utilizar en todos los programas el procedimiento clrscr.Movimiento del cursor: GotoXYLa orden (procedimiento) GotoXY, mueve el cursor a la posición x,y, donde x, es la columna

(contando de izq. A der.) e y es la fila (contando de arriba hacia abajo).Formato:GotoXY( x,y);Los valores de x e y pueden ser declarados como tipo integer, byte, word, longint, o shortint.GotXY requiere la unidad estándar CRT.

Este procedimiento detiene la ejecución del programa el número de milisegundos indicado, estosvande 0 a 65535, la precisión del tiempo depende de los ciclos de reloj del procesador.Pantalla de TextoLas computadoras personales tienen dos modos de presentación o vídeo, texto y gráficos. Cuandoestánen modo texto, pueden visualizar los 256 caracterwes estándar ASCII que soporta.Modos TextoLos diferentes modos de visualización de texto se pueden seleccionar mediante el procedimientotextmodeFormato

Page 28: Apuntes Pascal

TextMode(Modo)Modo: valores posibles recogidos de la siguiente tablaConstante Valor Modo de videoBW40 0 40x25 Blanco y negro en tarjeta de colorCO40 1 40x25 ColorBW80 2 80x25 Blanco y negro en tarjeta de colorCO80 3 80x25 ColorMono 7 80x25 MonocromáticoFont 8 x 8 256 Juego de caracteres en ROMColores de Texto y Atributos del VídeoLos procedimientos que permiten controlar los colores del texto son: TextColor y TextBackGround.Estos dos procedimientos actúan sobre monitores monocromos o color, pero con presentacionesdiferentes.TextColorEste procedimiento selecciona el color de primer plano del carácter, es decir, el color del texto.FormatoTextColor(color)Color: es una expresión entera en el rango 0...7, correspondiente a una de las dieciséisconstantes de color definidas en CRT.Se puede hacer parpadear a los caracteres, añadiendo 128 al valor del color. Blink es una constanteentera predefinida que sirve para ese propósito. Blink vale 128. Si se añade Blink a una constante decolor, se hará parapadear a ese carácter.EjemplosTextcolor(4); { selecciona amarillo}Textcolor(red); {selecciona rojo}Textcolor(Green-Blink); {parpadeo}Textcolor(lightred+blink); {caracteres amarillos}TextBackGroundSelecciona el color de fondoFormatoTextBackGround(color)Color expresión entera en el rango 0..7, correspondiente a una de las ocho primeras constantesde color.

Tabla de ColoresExisten 8 constantes predefinidas para los fondos de la pantalla, este rango va de 0 a 7, estosrepresentan los primero 3 dígitos del byte de atributo, los caracteres cuentan con 16 constantes paraelcolor, este rango va de 0 a 15, estos representan los 4 dígitos siguientes, y por ultimo un dígito deparpadeo.Constante Valor ColorBlack 0 NegroBlue 1 AzulGreen 2 VerdeCyan 3 CianRed 4 RojoMagenta 5 MagentaBrown 6 MarrónLight Gray 7 Gris claroDark gray 8 Gris oscuroLight Blue 9 Azul claro

Page 29: Apuntes Pascal

Light Green 10 Verde claroLight Cyan 11 Cyan claroLight Red 12 Rojo claroLight Magenta 13 Magenta claroYellow 14 AmarilloWhite 15 BlancoBlink 128 Parpadeo

UNIDAD V: Programación Modular: Procedimientos propiosEl diseño descendente: Los subprogramas. El diseño modular: Los módulos.Procedimientos. Declaración. Llamada. Transferencia de información. Los Parámetros.Parámetros Actuales y Formales. Parámetros Valor y Variable. Variables Locales yGlobales. Ámbito de un Identificador. Uso de Forward.-EL DISEÑO DESCENDENTE: LOS SUBPROGRAMASUno de los métodos fundamentales para resolver un problema es dividirlo en problemas máspequeños,llamados subproblemas. Esta técnica de dividir el problema principal se denomina, divide yvencerás.El método de diseño se denomina diseño descendente debido a que comienza en la partesuperior conun problema general y se diseñan soluciones específicas a sus subproblemas. Cada subproblema esdeseable que sea independiente de los restantes y se denomina módulo, de modo que cadaproblemaprincipal se subdivide en subproblemas. El problema principal se resuelve con el programaprincipal(también llamado conductor del programa), y los subproblemas (módulos) mediante subprogramas:procedimientos y funciones.EL DISEÑO MODULAR: LOS MÓDULOSLos subproblemas o módulos, se diseñan mediante subprogramas: procedimientos y funciones.Los procedimientos y funciones son unidades de programas diseñados para ejecutar una tareaespecífica.El proceso de descomposición de un problema en módulos se conoce como modulación y a laprogramación relativa a ellos programación modular.Los procedimientos y funciones que sirven para realizar los módulos son similares pero presentannotables diferencias entre ellos:FUNCIONES PROCEDIMIENTOLas funciones normalmente, devuelven un solovalor a la unidad de programa (programa principalu otro subprograma) que le referencia.Los procedimientos pueden devolver cero, uno ovarios valores. En caso de no devolver ningúnvalor, realiza una tarea tal como alguna operaciónde entrada o salida.A un nombre de procedimiento no se puedeasignar un valor, y por consiguiente ningún tipoestá asociado con un nombre de procedimiento.Una función es referenciada utilizando su nombreen una expresión.Un procedimiento sé referencia por una llamada oinvocación al mismo.PROCEDIMIENTOS:

Page 30: Apuntes Pascal

Un procedimiento es un subprograma que realiza una tarea específica. Puede recibir cero o másvaloresdel programa que llama y devolver cero o más valores a dicho programa llamador. Unprocedimientoestá compuesto de un grupo de sentencias a las que se asigna un nombre (identificador) y constituyeuna unidad de programa. La tarea asignada al procedimiento se ejecuta siempre que Pascalencuentreel nombre del procedimiento.Los procedimientos deben estar declarados en Pascal. Y deben estar declarados antes de serreferenciados.Declaración de un Procedimiento.Al igual que cualquier otro identificador en Pascal, todos los procedimientos se deben declarardentrodel cuerpo.La declaración de un procedimiento no indica a la computadora que ejecute las instrucciones dadas,sino que indica a la computadora cuales son estas instrucciones y dónde están localizadas cuandoseanecesario.Formato1ProcedureDeclaraciones localesBeginCuerpo del procedimientoEnd;Formato2Procedure( lista de parámetros formales)Declaraciones localesBeginCuerpo del procedimientoEnd;Llamada al procedimientoLos procedimientos se llaman dentro de un programa o de otro procedimiento directamente por sunombre, de acuerdo a los formatos 1 ó 2.Formato1NombreprocFormato2Nombreproc (lista de parámetros actuales)En resumen un procedimiento al igual que un programa, consta de tres partes:1. Una cabecera del procedimiento, que proporciona el nombre del mismo y, en caso de existir,una lista de parámetros formales.2. Una sección de declaración que pude contener constantes, variables e incluso otrosprocedimientos.3. Una sección ejecutable: el cuerpo del procedimiento.Ejemplo1Procedure Estrella;{ visualiza 15 estrellas}beginwrite(‘**************’)end;Ejemplo2Procedure Geometría(Longitud, Anchura: Real; Var Area, Perimetro: Real)

Page 31: Apuntes Pascal

beginArea:= longitud * anchura;Perimetro:= 2 * (longitud + Anchura)end;Orden de Ejecución Relativa de Procedimiento y el Programa PrincipalCuando se llama a un procedimiento, se instruye a la computadora para ejecutar las sentencias queconstituyen el cuerpo del procedimiento.Al ejecutar la computadora la sentencia que llama al procedimiento se localiza este procedimiento yse ejecutan las instrucciones del cuerpo de ese procedimiento.Cuando el cuerpo del procedimiento se termina de ejecutar, se retorna al programa principal y seejecuta la sentencia inmediatamente a la siguiente que llamó al procedimiento.Analizar el ejemplo presentado por el libro. Transcribir el ejemplo, compilar y ejecutar. Pg. 205.

Transferencia de Información a/desde procedimientos: Los ParámetrosUna de las características más importantes y diferenciadoras de los programas es la posibilidad decomunicación entre el programa principal y los procedimientos. (o entre procedimientos). Estacomunicación se realiza a través de una lista de parámetros.Un parámetro es un método para pasar información – valores o variables- del programa principal alprocedimiento y viceversa.Un parámetro es, prácticamente, una variable cuyo valor debe ser o bien proporcionado por elprograma principal al procedimiento o ser devuelto desde el procedimiento hasta el programaprincipal. Por consiguiente hay dos tipos de parámetro:• Parámetros de entrada (valores proporcionados por el Programa Principal.)• Parámetros de salida (valores devueltos por el procedimiento).Lista de Parámetros Actuales y Formales.Las sentencias de llamadas a un procedimiento constan de dos partes: un nombre de procedimientoyuna lista de parámetros llamados Actuales.Nombreproc (p1, azul, rojo,...)Los parámetros actuales p1, azul, rojo,... tienen que tener unos valores que se pasan alprocedimientonombreproc.En la declaración de un procedimiento, cuando se incluyen parámetros, éstos se denominanparámetrosformales o ficticios. Ellos sirven para contener los valores de los parámetros actuales cuando seinvoca al procedimiento.Procedure nombreproc (p1, azul, rojo,...)Correspondencia de ParámetrosLos parámetros actuales en la invocación del procedimiento deben coincidir en número, orden ytipocon los parámetros formales de la declaración del procedimiento.Parámetros Valor y Variable

Los parámetros valor, son parámetros unidireccionales que se utilizan para proporcionarinformación a un procedimiento, pero no pueden devolver valores.En la declaración de un procedimiento, los nombres de los parámetros Variable estánprecedidos dela palabra Var. Los parámetros Valor se utilizan tanto para recibir información como. Paratransmitirvalores entre subprogramas y el programa llamador.Un parámetro Variable puede actuar de parámetro de Entrada/ Salida.

Page 32: Apuntes Pascal

Nota: Comparar los ejemplos 6.6 y 6.4. Pg. 211-212Cuando Utilizar Parámetros Valor o Variable:� Si la información que se pasa al procedimiento no tiene que ser devuelta fuera delprocedimiento, el parámetro formal que representa la información puede ser un parámetro valor(parámetro de entrada).� Si se tiene que devolver información al programa llamador, el parámetro formal que representaesa información debe ser un parámetro variable (parámetro de salida).� Si la información que se pasa al procedimiento puede ser modificada y se devuelve un nuevovalor, el parámetro formal que representa a esa información debe ser un parámetro variable(parámetro de entrada / salida).Variables Locales y Globales.

Una Variable Local es una variable que está declarada dentro de un subprograma, y se dice queeslocal al subprograma. Una variable local sólo está disponible durante el funcionamiento del mismo.Las variables declaradas en el programa principal se denominan Variables Globales. Alcontrario quelas variables locales, cuyos valores se pueden utilizar solo dentro del subprograma en que estándeclaradas. Las variables Globales pueden ser utilizadas en el programa principal y en todos lossubprogramas.Las variables locales se declaran dentro de los subprogramas. Y las variables Globales se declaranen elprograma principal.Ámbito de un identificador:Un programa puede ser definido como una cabecera de programa, un bloque y un punto. Unprocedimiento como se sabe en Pascal, consta también de cabecera de procedimiento seguido de unbloque y un punto y coma.El primer nivel de procedimiento puede tener otro nivel de anidamiento.Los bloques en los que un identificador puede ser utilizado se conocen como ámbito del

identificador, dicho de otro modo el ámbito es la sección de un programa en la que unidentificadores válido, y las reglas que definen el ámbito se llaman “Reglas de ámbito”.La declaración Forward:Un procedimiento no puede ser llamado a menos que la declaración del mismo aparezca antes quelasentencia que lo invoca. Sin embargo, en ocasiones, es necesario llamar a un procedimiento que noha sido declarado antes que la sentencia de llamada. Para resolver este problema es necesarioinformar al compilador que la declaración del procedimiento no exige ningún orden previo.EjemploProcedure uno(x: Real);

Begin..Dos(y); {incorrecto}..End;

Procedure dos(a: Real);

Begin..uno(b); {correcto}..

Page 33: Apuntes Pascal

End;Este problema no se resuelve invirtiendo el orden de los procedimientos, puesto que UNO y DOS,sellaman mutuamente.La resolución del problema requiere informar al compilador que la declaración del procedimientoaparecerá más tarde en la sección de declaración. Esto se realiza con la declaración o sentenciaforward. Antes de la declaración del procedimiento UNO, se debe poner la cabecera completadelprocedimiento DOS, seguida por la palabra reservada Forward y un punto y coma.Procedure dos(a: Real); FORWARD;

Procedure uno(x: Real);

Begin..Dos(y); {incorrecto}..End; {uno}

Procedure dos;

Begin..uno(b); {correcto}..End; {dos}