0% encontró este documento útil (0 votos)
509 vistas33 páginas

Apuntes Pascal

El documento proporciona información sobre la historia y desarrollo de Pascal y Turbo Pascal. Explica que Pascal fue creado en los años 1970 para la enseñanza de programación y que Turbo Pascal, lanzado en 1983, lo popularizó debido a su facilidad de uso. También describe los componentes básicos de un programa Pascal como identificadores, comentarios, variables, tipos de datos y la estructura general de un programa.

Cargado por

Sandra Rodriguez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
509 vistas33 páginas

Apuntes Pascal

El documento proporciona información sobre la historia y desarrollo de Pascal y Turbo Pascal. Explica que Pascal fue creado en los años 1970 para la enseñanza de programación y que Turbo Pascal, lanzado en 1983, lo popularizó debido a su facilidad de uso. También describe los componentes básicos de un programa Pascal como identificadores, comentarios, variables, tipos de datos y la estructura general de un programa.

Cargado por

Sandra Rodriguez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 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
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 la
computadora y no necesitan traducción posterior, para que la CPU pueda comprender y ejecutar
programas. Las instrucciones en lenguaje máquina se expresan en términos de la unidad de
memoria
má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 1001
1001 0001 1001 1110
Como se puede observar estas instrucciones son fáciles de leer por la computadora y difícil por un
programador.
Lenguaje de bajo nivel
La programación en lenguaje máquina es difícil, por ello se necesitan programas que permitan
simplificar este proceso. Los lenguajes de bajo nivel han sido diseñados para ese fin, el lenguaje
típico
es el Ensamblador. En este lenguaje, las instrucciones se escriben en códigos alfabéticos
conocidos
como 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. Una
instrucción típica del ensamblador puede ser:
ADD x,y,z (suma x + y, lo almacena en z)
Lenguaje de alto nivel
Los lenguajes de alto nivel son aquellos en que las instrucciones o sentencias a la computadora
están escritos en lenguaje similar a los lenguajes del ser humano. En general el lenguaje inglés
como
es 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 se
escriban
programas en este lenguaje.
PROGRAM identificador
USES identificadores
LABEL lista de etiquetas
CONST
Definiciones de constantes
TYPE
Declaración de tipos de datos definidos por el usuario
VAR
Declaración de variables
------------ ----------- --------- ----------
PROCEDURE
Definiciones de procedimientos
FUNCTION
Definiciones de funciones
------------ ----------- --------- ----------
BEGIN {cuerpo del programa}
sentencias
END.
Las cinco secciones de declaración (label, const, type, procedure, y/o function) así como la cláusula
uses, no tiene que existir en todos los programas. Las secciones de declaraciones están seguidas del
cuerpo del programa o programa principal que siempre existirá y que contará de un número
determinado 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 la
estructura
de un programa.

PALABRAS RESERVADAS
Las palabras reservadas de T. Pascal tienen significado especial y no se pueden utilizar para otros
propósitos. Una palabra reservada no puede ser utilizada como identificador.
Absolute end inline procedure type
And external interface program Unit
Array File Interrupt Record Until
Begin For Label Repeat Uses
Case Forward Mod Set Var
Const Function Nul Shl While
Div Goto Not Shr With
Do If Of String xor
Downto Implementation Or Then
Else 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 en
un
disco 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 o
comentarios). Los objetos son las unidades significativas más pequeñas de texto de un programa y
se
dividen en:
• Identificadores
• Etiquetas
• Constantes
• Variables
• Directivas, etc.

IDENTIFICADORES
Los identificadores representan los objetos de un programa (constantes, variables, tipos de datos,
procedimientos, funciones, unidades, programas y campos de registros). Es una secuencia de
caracteres
que 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 identificadores
está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 recomendaciones
expuestas

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 de
programas
fundamentales.
* Comentarios:
La legibilidad de los programas aumenta considerablemente utilizando comentarios. Un
Comentario
es 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.

VARIABLES
Las variables son objetos de un programa cuyo valor puede cambiar durante la ejecución del
programa.
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)
se
llama “NOMBRE DE LA VARABLE”, el valor almacenado en la posición se llama “VALOR DE
LA
VARIABLE”.
Las variables se asemejan a cajas o buzones, cada una de las cuales tiene un nombre y contiene un
valor.
Nombre de la variable Valor de la variable
Todas 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 palabra
reservada VAR. Declarar variables con sus tipos de datos asociados.

TIPOS DE DATOS
Los diferentes objetos de información con los que un programa Pascal trabaja se conocen
colectivamente como datos. Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un
simple carácter, tal como “B”, un valor entero como el 35, o un número entero como 141592. Una
operación de suma no tiene sentido con caracteres, solo con números. La operación de suma se
almacena 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 100
2- Determinar como ejecutar las operaciones.
Pascal se conoce como lenguaje “Fuertemente Tipeado”, o de tipos fuertes. Esto significa que todos
los
datos deben tener sus tipos de datos declarados. La ventaja de los lenguajes de tipos fuertes (ricos
en
tipos de datos) es que gasta menos esfuerzo en la depuración de programas ya que el programa
detecta
estos errores. (Variables con tipos mal declarados).
El Tipo de Dato determina la naturaleza del conjunto de valores que puede tomar una variable. Otro
concepto importante a tener en cuenta es la representación interna de los números, o al menos el
espacio ocupado por una variable de un tipo dado.
Clasificación:
TIPOS ENTEROS
Pascal dispone de cinco tipos predefinidos:
TIPO RANGO FORMATO
byte 0 .. 255 8 bits sin signo
integer -32768 .. 32767 16 bits con signo
longint -247483648 .. 2147483647 32 bits con signo
Shortint -128 .. 127 8 bits con signo
word 0 .. 65535 16 bits sin signo
Integer
Los enteros se expresan en el rango de valores -32768 .. 32767, y no pueden tener parte decimal.
Los
enteros INTEGER se almacenan en memoria como dos bytes. El bit de mayor peso (orden) de los
dos
bytes 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 enteros
no
detallados en el párrafo anterior.
TIPOS REALES
Tipos de Datos
Datos Estáticos Datos Dinámicos
Tipos
Simples
Tipos
Cadenas
Tipos Estructurados
Tipos Procedimiento
Tipos
Puntero
Ordinales:
*Predefinidos
-Integer
-Boolean
-Char
*Definidos por el usuario
-Enumerado
-Subrango
No Ordinales:
- Reales
Array
Registro
Conjunto
Archivo

Los tipos de datos reales son aquellos que representan al conjunto de los números reales. Los
cálculos
matemáticos normales exigen dos tipos de datos numéricos: enteros y reales. Las computadoras
diferencian uno y otro tipo. Las diferencias residen en la representación interna en memoria.
Formato binario Formato real
Nota: Efectúe una lectura comprensiva. Elabore un resumen cada uno de los tipos de datos Reales
no
detallados en el párrafo anterior.
1-Notación Científica o de coma flotante
El á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 10
numero real = mantisa x 10exponente
Esta notación se utiliza para representar números muy grandes o muy pequeños. En notación
decimal
los números se escriben en notación E (E de exponente) y significa multiplicar por 10 la potencia
que
sigue.
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.00000000016125
3.492E-02 equivale a 3.492x10-2 = 0.0349
2-Notación en coma fija:
Expresar el número real con un punto decimal (no con comas).
3.141592 0.0056 -18.8
El 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 cifras
significativas (precisión) y el espacio ocupado en memoria.
TIPO RANGO CIFRAS TAMAÑO Y BYTES
Real 2.910-39 .. 1.71038 11-12 6
Single 1.510-45 .. 3.41038 7-8 4
Double 5.010-324 .. 1.710308 15-16 8
Extended 1.910-4931 .. 1.1104932 19-20 10
Comp -263 +1 .. 263 -1 19-20 8
TIPO STRING
Una cadena de caracteres (string) es una aserie de caracteres cuya serie puede tener una longitud de
1a
255 caracteres.
T. Pascal tiene el Tipo de Dato string que almacena información de texto. Este dato se puede
almacenar en constates y en variables de cadena. Una variable de cadena está declarada por la
palabra
string seguida de la longitud máxima de la cadena de caracteres entre corchetes.
Declaración en VAR y en TYPE
Var

Número binario Mantisa Exponente


Taller I - “T. Pascal”
Mensaje: string [80];
Nombre : string [40];
---
Type
Cadena80 = string [80];
Var
Mensaje: cadena80;
Una vez declaradas las variables de cadena se pueden realizar asignaciones o bien operaciones de
lectura/escritura en los programas.

UNIDAD II: Sentencias


Sentencias. Concepto. Clasificación.
Simples: Sentencias de Asignación. Sentencias de Entrada / Salida. Sentencias de llamada
a 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.-

SENTENCIAS
Las sentencias describen las acciones algorítmicas que pueden ser ejecutadas. En general las
sentencias se clasifican en ejecutables ( especifican operaciones de cálculos aritméticos y
entrada/salida
de 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 palabra
reservada
Begin.
Cada sentencia ejecutable se traduce por el compilador en una o varias instrucciones de lenguaje
má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 el
usuario:
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. Un
procedimiento
está 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
Son sentencias compuestas de otras sentencias: ( compuestas y sentencias with), condicionalmente
(sentencias condicionales o selectivas), o repetitivas (sentencias repetitivas).

SENTENCIAS DE ASIGNACIÓN
La sentencia de asignación se utiliza para asignar (almacenar) valores o variables. La asignación es
una
operación que sitúa un valor determinado en una posición de memoria. En seudo código se denota
con
el 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. Examine
los
ejemplos presentados en el libro (Pág. 77-79.
Analice el tema tratado bajo el título: Operaciones de asignación especiales.

OPERACIONES DE ENTRADA / SALIDA


Los datos pueden almacenarse en memoria de tres maneras distintas: asociadas con constantes, con
sentencias 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. Esta
operació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 programa
especiales denominados procedimientos de entrada / salida que forman parte del compilador de
Pascal.
Procedimientos de entrada: Read ReadLn
Procedimientos de salida: Write WriteLn
8
Taller 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 dado
y
en la misma línea. Al terminar de visualizar la línea, el cursor avanza, (salta) al comienzo de la
siguiente línea.
Writeln, permite escribir salidas en diferentes líneas. Sin ningún ítem en su sintaxis proporciona
saltos
o avances de línea.
Procedimiento Write:
Si desea dejar el cursor después del último elemento en la misma línea, se debe utilizar el
procedimiento Write.
Formatos de salida:
La puntuación de resultados de un programa suele ser un factor importante en le eficiencia del
mismo.
Sin embargo, no siempre es posible conocer con antelación la anchura que ocupan los valores a
visualizar, 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.
Ejemplos
x:=5.265;
writeln(x:8:4) 5.2650
writeln(x:8:2) 5.26
x:=14;
writeln(x:3) 14
wrileln(’A’:4) A
Organización de cadenas:
Un valor de cadena siempre se imprime justificado a derecha de su campo. Por consiguiente,
espacios
en blanco preceden a la cadena si el campo en que se imprime es mayor que la cadena. Si el campo
es
menor se imprime los primeros caracteres de la anchura de campo.
“A” :1 A
“A” :2 A
“MUSA” :1 M
“MUSA” :2 MU
“MUSA” :5 MUSA
Impresión de resultados:
Las salidas a la pantalla se obtienen mediante los procedimientos WRITE, WRITELN,.
Si desea enviar los resultados a impresora:
USES
PRINTER;
WriteLn(lst,’Hola’);
Printer define un archivo LST y asocia este archivo al Puerto de comunicaciones LPT1 (impresora)
del
DOS.
La entrada de datos (Lectura):
El término lectura se aplica a una operación de entrada de valores provenientes de un periférico y
dirigidos 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 último
carácter introducido. En ReadLn, el cursor se envía al principio de la siguiente línea, tras pulsar la
tecla
Intro.
Nota: Trabajar con la guía de Trabajos Prácticos Número uno. Ejercicios 1,2,3.

EXPRESIONES
Expresiones 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 b
Div División entera A div b Cociente entero de a por b
Mod Resto entero A mod b Resto de a por b
Shl Desplazamiento a izquierda A shl b Desplaza a izquierda b bits
Shr Desplazamiento a derecha A shr b Desplaza a derecha b bits
Operadores DIV y MOD
Los 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 el
programa declarando las mismas variables tipo integer.
Analice los inconvenientes presentados. Efectúe las correcciones necesarias.
Reglas de evaluación de expresiones (Prioridad):
La siguiente tabla presenta a todos los operadores con su respectiva prioridad.
Operador Prioridad
Not Más alta (se evalúa primero)
*, /, div, mod, and
+, - , or
<, <= , = , <> , >= , > Más baja (se evalúa el último)

ESTRUCTURAS DE CONTROL SELECTIVAS


En todos los algoritmos realizados, cada instrucción se ha ejecutado en el orden en que aparecen.
Pero
con frecuencia nos enfrentamos a situaciones en las que se deben proporcionar instrucciones
alternativas 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 son
verdaderas o falsas. Estas condiciones se llaman expresiones lógicas (o booleanas).
Las expresiones lógicas se forman comparando los valores de las expresiones utilizando operadores
de 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 AND
TTT
TFF
FTF
FFF
Operador1 Operador 2 OR
TTT
TFT
FTT
FFF
Operador1 NOT
TF
FT
Nota: Leer Variables Lógicas. Pg. 113.
La Sentencia IF
Dado que las expresiones lógicas toman el valor V o F, se necesita una sentencia que dirija a las
computadoras a ejecutar una sentencia si la condición es V y otra si es F.
Ejemplo 1:
PROGRAM primero;
USES CRT;
VAR
Numero: integer;
BEGIN
CLRSCR;
WRITE(‘Introduzca un número: ‘);
READLN(numero);
IF numero >0 then
WRITELN(‘ El número es positivo.’);
REPEAT UNTIL KEYPRESSED
END.
Ejemplo 2:
PROGRAM primero;
USES CRT;
VAR
Numero: integer;
BEGIN
CLRSCR;
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 KEYPRESSED
END.
Sentencias Compuestas:
En numerosas ocasiones, en lugar de realizar una sola acción, cuando se cumpla o no se cumpla una
determinada condición, se deben realizar diferentes acciones. Esto se realiza mediante sentencias
compuestas.
La sentencia anterior al ELSE
no finaliza con ; (punto y
coma)
Punto y coma de final de
sentencia.
Taller I - “T. Pascal”
Una Sentencia Compuesta es un conjunto de sentencias separadas por puntos y comas, y encerradas
entre las palabras Begin y End. El cuerpo de un programa o procedimiento es una sentencia
compuesta.
Ejemplo 3:
PROGRAM primero;
USES CRT;
VAR
Numero: integer;
BEGIN
CLRSCR;
WRITE(‘Introduzca un número: ‘);
READLN(numero);
IF numero >0 then
BEGIN
WRITELN(‘ El número es positivo.’);
WRITELN(‘Muchas Gracias.’)
END;
REPEAT UNTIL KEYPRESSED
END.
Ejemplo 4:
PROGRAM primero;
USES CRT;
VAR
Numero: integer;
BEGIN
CLRSCR;
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 KEYPRESSED
END.
Nota: Si en cada círculo en rojo, se escribiera un punto y como ¿ cuál sentencia provocaría un
mensaje
de 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, incluso
otro 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;
VAR
Numero: integer;
BEGIN
CLRSCR;
WRITE(‘Introduzca un número: ‘);
Por ser sentencias compuestas
deben estar encerradas por un
begin...end
Taller 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.’)
ELSE
WRITELN(‘ El número es CERO.’)
END;
REPEAT UNTIL KEYPRESSED
END.
La sentencia CASE:
La sentencia CASE se utiliza para elegir entre diferentes alternativas. Una sentencia CASE se
compone
de varias sentencias simples. Cuando CASE se ejecuta una (y solo una) de las sentencias simples se
selecciona.
Ejemplo 1:
Program selectivas;
Uses
crt;
Var
Num: integer;
begin
clrscr;
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’)
ELSE
Write(‘es otro carácter’)
END;
CASE con sentencia compuesta.

Ejemplo 4:
Readln(selección);
CASE selección OF
‘N’,’n’: begin
write(‘su nombre es: ’);
write(nombre)
end;
‘D’,’d’: begin
write(‘su dirección es: ’);
write(dirección)
end;
‘F’,’f’: {no hace nada}
ELSE
Writeln(‘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 un
mensaje
de error?.

ESTRUCTURAS DE CONTROL REPETITIVAS


El concepto de Bucle: Una estructura de control que permite la repetición de una serie determinada
de
sentencias se denomina BUCLE (lazo o ciclo).
El cuerpo del bucle contiene las sentencias que se repiten. Pascal proporciona tres estructuras o
sentencias de control para especificar la repetición: WHILE, REPEAT, FOR.
Las acciones que se repiten en un bucle se denominan cuerpo del bucle y
cada repetición del cuerpo del bucle se denomina
iteración.
La sentencia WHILE
La estructura repetitiva WHILE (mientras) es aquella en la que el número de iteraciones no se
conoce
por anticipado y el cuerpo del bucle se repite mientras se cumple una condición. Por esta razón se le
denominan bucles condicionales.
Reglas de funcionamiento
1- La condición se evalúa antes y después de cada ejecución del bucle. Si la condición es V, se
ejecuta el bucle, y si es falsa, el control pasa a la siguiente sentencia, al bucle
2- Si la condición es F, cuando se ejecuta el bucle por primera vez, el cuerpo del bucle no se
ejecuta 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 valor
entonces el bucle no termina nunca, y se denomina bucle infinito o sin fin.
MIENTRAS condicion = V
Sentencias
FIN_MIENTRAS
Nota: La condición se evalúa al principio. Si es falsa las sentencias no se ejecutan.

La sentencia REPEAT
Una de las características de los bucles while-do es que la condición se evalúa al principio de cada
iteración.
La sentencia Repeat especifica un bucle condicional que se repite hasta que la condición se hace
verdadera. Este bucle se denomina Repeat-until.
Reglas de funcionamiento
1- 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.
4- La sintaxis no requiere begin-end.
REPETIR
Sentencias
HASTA_QUE condicion = V
Nota: 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 una
condición simple cambiando el operador relacional de la forma siguiente:
Operador Operador que complementa
< >=
<= >
> <=
>= <
= <>
<> =
La sentencia FOR
En numerosas ocasiones se puede desear que un bucle se ejecute un número determinado de veces,
y
cuyo número se conozca por anticipado.
DESDE I ← inicio HASTA fin HACER
Sentencias
FIN_DESDE
Nota: 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 la
denomina 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 se
incrementa el valor de variable, y se vuelven a ejecutar las sentencias, hasta que la variable de
control
sea mayor que el valor final.
15
sentencias
condición
I←1
I←i+1 I≤10
Sentencia
Taller I - “T. Pascal”
FOR variable : = inicio HASTA final DO
Sentencia;
Si la sentencias son compuestas entonces:
FOR variable : = inicio HASTA final DO
BEGIN
Sentencias1;
Sentencias2
END;
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 DO
Writeln(i);
EJEMPLO
PROGRAM ejemplo;
USES CRT;
VAR
I: integer;
Num, suma, prom: real;
BEGIN
Clrscr;
Suma:= 0; prom:=0;
Writeln (‘Ingrese diez valores para determinar el promedio: ‘);
I:=0;
WHILE I < 10 DO
BEGIN
Readln(num);
Suma:=suma+num;
I:=i+1
END;
I:=0;
REPEAT
Readln(num);
Suma:=suma+num;
I:=i+1
UNTIL I>=10;
{no se inicializa I}
FOR i := 1 TO 10 DO
BEGIN
Readln(num);
Suma:=suma+num
END;
Prom:= suma/10;
Writeln(‘El promedio es: ‘, prom:5:2);
Repeat until keypressed
END.
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 REPEAT
I : = 0 I < 10 I >=10
I : = 1 I <= 10 I > 10

UNIDAD III: Estructuras de Datos: Arrays


Concepto 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 DATOS


Concepto: Una estructura de datos es una colección de datos organizados de un modo particular.
Las
estructuras de datos pueden ser de dos tipos: Estructuras de Datos Estáticas y Estructuras de Datos
Dinámicas.
Las Estáticas son aquellas que se le asigna una cantidad fija de memoria cuando se declara la
variable.
En numerosas ocasiones se necesitan colecciones de datos que crezcan y reduzcan su tamaño en
memoria a medida que el programa progresa. Las estructuras que reducen y aumentan su tamaño se
denominan 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 de
otro
modo, 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 se
diferencian 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 estructurado
compuesto 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 Array
La estructura de un array (vector) se describe por la declaración del tipo de array.
Formato:
Type
Nombre_array = array[tipo subindice] of tipo
Ejemplo:
Type
X = array [1..8] of real;
Variable Tipo Array:
Las declaraciones de tipo array no crea ninguna variable específica tipo array. En realidad la
declaració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: Var
NombreArray: NombreTipo;
17
Taller I - “T. Pascal”
Ejemplo:
Type
Valores = array [1..10] of real;
Var
Precios: Valores;
O bien
Var
Precios : array [1..10] of real;
Los límites de un array ordinario en Pascal se deben fijar en tiempo de compilación. El compilador
de
Pascal debe conocer, cuando se compila el programa, exactamente el espacio ocupado por los
elementos 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 de
declaración de un programa. Esta declaración es correcta:
Var
Coordenadas: array [1..15] of real;
Pero es preferible asociarlas con identificadores tipo, como en
Type
ArrayReal =array [1..15] of real;
Y a continuación utilizar estos identificadores tipo para declarar los tipos de arrays:
Var
Coordenadas : ArrayReal;
Uso de índice de un array:
Cada referencia a un array incluye el nombre y el subíndice (índice) encerrado en corchetes; el
índice
determina qué elemento se procesa. El tipo índice suele ser un subrango. Centrándonos en el array y
los
datos 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 o
escritura de un array se debe hacer elemento a elemento, y para realizar estas operaciones se deben
leer
o visualizar los componentes de un array mediante estructuras repetitivas.
Lectura de un vector
VAR
Notas: array [1..100] of real;
Bucle FOR
FOR I :=1 to 100 DO
Readln (notas [i] );
Bucle WHILE
I:=1;
WHILE I <= 100 DO
Begin
Readln (notas [i] );
I:= I +1
End;
18
Taller I - “T. Pascal”
Escritura de un Vector:
Los elementos de un vector pueden ser visualizados situando una sentencia de salida dentro de una
estructura repetitiva.
Bucle FOR
Writeln (‘Las notas son: ‘);
For I :=1 to 100 do
Writeln (notas [i] :4 :2 );
Bucle WHILE
Writeln (‘Las notas son: ‘);
I:=1;
While I <= 100 do
Begin
Writeln (notas [i] :4 :2 );
I:= I +1
End;
Copia de Vectores:
Una operación que se suele dar en ocasiones es la copia de los elementos de un vector en otro
vector.
En general, un array puede ser asignado a otro array solo cuando ambos tienen el mismo tipo y el
mismo tamaño.

ARRAYS BIDIMENSIONALES: TABLA o MATRIZ.


Un array bidimensional (tabla o matriz) es un array con dos índices, al igual que los vectores, deben
ser 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.
12345678
1 T[1,1] T[1,2] T[1,3] T[1,8]
2
3
4
5 T[5,1] T[5,8]
Declaración de los Arrays Bidimensionales
Al igual que en los arrays de una dimensión (los vectores), los arrays bidimensionales (tablas) se
crean
con 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.
19
T[3,4]
Taller I - “T. Pascal”
Formato:
Type
Identificdor = array [índice1, índice2] of tipo elemento
Ejemplo
Type
Tabla=array [1..25,1..4] of real;
Var
Grados: Tabla;
O bien
Var
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 de
las
tablas o de los arrays multidimensionales, existen diferentes órdenes para su recorrido. Los más
usuales 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
propios
Ejercicio:
Escribir un programa que permita sumar y multiplicar dos matrices leídas del teclado.
RTA: Pg. 372.

UNIDAD IV: Funciones y Procedimientos de Biblioteca


Funció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 ESTANDAR
Las Funciones
Una función es un subprograma que recibe como argumento o parámetros datos de tipo numérico o
no
numéricos (char, string, bollean u otros), y devuelve un resultado. Esta es la característica que le
diferencia 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 realizan
operaciones
matemáticas y devuelven un valor. Las funciones son referenciadas directamente en una expresión o
sentencia genérica y el valor calculado por la función es sustituido por la referencia de la función.
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 real
tiene 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.
Ejemplo
Round(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.
Ejemplo
Frac(4.85962) {Devuelve 0.85962} Rdo Tipo REAL
INT: Devuelve la parte entera de un número real.
Formato: Int(x)
.x..... expresión de tipo real.
Ejemplo
Int(321.0004) {Devuelve 321.0} Rdo Tipo REAL
3.- Funciones Exponenciales y Logarítmicas:
EXP: Devuelve la función exponencial de x. Potencia de e elevado a x (ex), (x número real o
entero),
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 ,
Exp
y 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íz
cuadrada
del argumento.
Formato: Sqr(x) .x de tipo real o entera
Sqrt(x) .x de tipo real.
4. Funciones Trigonométricas:
SIN, COS, ATN
Tan, Cot, Sec, Cosec.
5.- Funciones Ordinales:
22
Taller 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.
Ejemplo
Ord (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ésimo
cará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 del
valor
del 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 y
devuelve
un 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 de
procedimientos. La razón de utilizar Inc, Dec reside en el hecho de su mayor velocidad de
ejecució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 elementos
dependientes del azar como por ejemplo juegos de lotería. En estas ocasiones se debe utilizar la
computadora 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) que
la
funció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 propias
funciones
de igual modo que declara sus procedimientos.
Una función es un subprograma que devuelve un único resultado al programa o subprograma que le
llamó.

Formato
Function Nombre(p1,p2,):tipo
{declaraciones locales y subprogramas}
Begin
{Cuerpo de la función}
nombre:= valor de la función
end;
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 el
nombre de la función se refiere a la posición de memoria que contiene el valor devuelto por la
función.
3. La lista de parámetros formales son los identificadores utilizados para recibir los valores del
programa.
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 ser
cualquier tipo de dato escalar (integer, real, booean o char) o un tipo enumerado o un tipo
subrango o un tipo puntero.
Ejemplo:
Función triple de un número.
Function triple(numero:real): real;
begin
triple:=3* numero
end;
* Función signo de un número
Function signo(x:real): integer;
{ devuelve signo del parámetro x: 1,0,-1. para pos, cero, neg.}
Var
Aux:integer;
Begin
If x > 0 then aux:= 1;
If x = 0 then aux:=0;
If x< 0 then aux:=-1;
signo:= aux
end;
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 sentencia
de 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, un
tipo 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
mismo argumento.
Ej.
Function mayúscula(ch:char):char;
Begin
If ch in [‘a’..’z’] then
Mayuscula:= chr( Ord(ch) – Ord(‘a’) + ord(‘A’))
Else
Mayuscula:=ch;
End;
Parámetros variables sin tipo
Cuando un parámetro formal es un parámetro sin tipo, el parámetro real (actual) correspondiente
puede
ser 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 que
contiene)
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 almacenar
en
constantes y en variables de cadena. Una variable de cadena esta declarada por la palabra string
seguida
de la longitud máxima de la cadena de caracteres entre corchetes.
Declaración de una variable tipo cadena: Se declaran en la sección VAR
VAR
nombre: 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.
Una
variable de cadena puede tener de 0 a 255 caracteres de longitud. La ocupación en memoria de una
cadena 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 cadena
contiene
la longitud de la cadena actualmente almacenada en memoria.
VAR
Nombre: 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 puede
cambiar durante el tratamiento de la cadena.
VAR
Nombre: string[15]
....
....
nombre:=’Computación’;
25
Taller I - “T. Pascal”
Bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
11 C o m p u t a c i ó n
Longitud Lógica: 11
Longitud Física: 15
Asignación de cadenas:
Se les puede asignar valores por medio de una sentencia de asignación o bien con una sentencia de
lectura.
Caso 1: Destino = Fuente → No existen inconvenientes
Caso 2: Destino > Fuente → No existen inconvenientes
Caso 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 y
fuente 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 ASCII
y
con los operadores de relación.
* Concatenación: es el proceso de combinar dos o más cadenas en una sola cadena. Es posible
concatenar con el operador de concatenación (+), y la función concat.
Procedimientos y funciones de cadenas internos:
Funciones Función
De Conversión
Procedimientos Procedimiento de
Conversión
• Concat
• Length
• Pos
• Copy
• Upcase • Delete
• Insert
• Str
• Val
Función Concat
Proceso de combinar dos o más cadenas de caracteres en una sola.
Formato
Concat(S1,S1,....,Sn)
S1, S2 …… cadenas o variables de tipo string
Si la cadena en mayor a 255 se truncan los caracteres después del 255.
Función Length
Proporciona la longitud lógica de una cadena de caracteres y devuelve un valor entero.
Formato
Length(s)
s... expresión de tipo cadena.
Función Pos
Permite determinar si una cadena está contenida en otra. En este caso la función devuelve la
posición
donde comienza la cadena buscada en la cadena fuente. Si la cadena no existe, se devuelve el
resultado
cero (0).
Formato:
Pos(cadena_buscada, cadena_fuente)

Función Copy
Esta 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: Upcase
Permite cambiar letras minúsculas a mayúsculas. La función Upcase toma un argumento de tipo
CHAR
y devuelve la mayúscula correspondiente.
Formato:Upcase(s)
s... tipo char
Procedimiento Delete
Delete borra o elimina una subcadena de una cadena. Una subcadena es una cadena contenida en
otra
cadena de mayor longitud. Delete, en esencia, borra uno o varios caracteres de una cadena a partir
de
una posición dada.
Formato:Delete(S, Posición, número)
S cadena
Posición expresión entera que indica la posición del primer carácter a suprimir
Número cantidad de caracteres a suprimir. (Tipo entero).
Procedimiento Insert
Inserta una subcadena en una cadena.
Formato:
Insert(cad1, S, Posición)
Cad1 cadena a insertar
S posición donde se inserta
Posició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 63
no
es igual ‘63’, son dos datos diferentes.
Str
Efectúa la conversión de un valor numérico en una cadena.
Formato:
Str(Valor,S)
Valor expresión numérica
S cadena
Val
Convierte 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.
Código Si la conversión se efectuó, toma el valor cero, en caso contrario contiene la
posición del primer carácter de la cadena que impide la conversión y en ese caso la variable no
queda
definida. 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) se
pueden
considerar una serie de características complementarias que es necesario tener presente a la hora de
realizar una buena programación de las cadenas. Algunas características ya han sido tratadas
anteriormente, 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 por
una 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: CLRSCR
La orden (procedimiento) ClrScr, borra, limpia la pantalla (ventana actual) y situa el cursos en la
esquina superior izquierda. (1,1).
Para poder utilizar ClrScr, deberá declara la unidad estándar CRT.
Formato
CLRSCR;
Nota: Es una buena costumbre utilizar en todos los programas el procedimiento clrscr.
Movimiento del cursor: GotoXY
La 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, estos
van
de 0 a 65535, la precisión del tiempo depende de los ciclos de reloj del procesador.
Pantalla de Texto
Las computadoras personales tienen dos modos de presentación o vídeo, texto y gráficos. Cuando
están
en modo texto, pueden visualizar los 256 caracterwes estándar ASCII que soporta.
Modos Texto
Los diferentes modos de visualización de texto se pueden seleccionar mediante el procedimiento
textmode
Formato
TextMode(Modo)
Modo: valores posibles recogidos de la siguiente tabla
Constante Valor Modo de video
BW40 0 40x25 Blanco y negro en tarjeta de color
CO40 1 40x25 Color
BW80 2 80x25 Blanco y negro en tarjeta de color
CO80 3 80x25 Color
Mono 7 80x25 Monocromático
Font 8 x 8 256 Juego de caracteres en ROM
Colores de Texto y Atributos del Vídeo
Los procedimientos que permiten controlar los colores del texto son: TextColor y TextBackGround.
Estos dos procedimientos actúan sobre monitores monocromos o color, pero con presentaciones
diferentes.
TextColor
Este procedimiento selecciona el color de primer plano del carácter, es decir, el color del texto.
Formato
TextColor(color)
Color: es una expresión entera en el rango 0...7, correspondiente a una de las dieciséis
constantes de color definidas en CRT.
Se puede hacer parpadear a los caracteres, añadiendo 128 al valor del color. Blink es una constante
entera predefinida que sirve para ese propósito. Blink vale 128. Si se añade Blink a una constante de
color, se hará parapadear a ese carácter.
Ejemplos
Textcolor(4); { selecciona amarillo}
Textcolor(red); {selecciona rojo}
Textcolor(Green-Blink); {parpadeo}
Textcolor(lightred+blink); {caracteres amarillos}
TextBackGround
Selecciona el color de fondo
Formato
TextBackGround(color)
Color expresión entera en el rango 0..7, correspondiente a una de las ocho primeras constantes
de color.

Tabla de Colores
Existen 8 constantes predefinidas para los fondos de la pantalla, este rango va de 0 a 7, estos
representan los primero 3 dígitos del byte de atributo, los caracteres cuentan con 16 constantes para
el
color, este rango va de 0 a 15, estos representan los 4 dígitos siguientes, y por ultimo un dígito de
parpadeo.
Constante Valor Color
Black 0 Negro
Blue 1 Azul
Green 2 Verde
Cyan 3 Cian
Red 4 Rojo
Magenta 5 Magenta
Brown 6 Marrón
Light Gray 7 Gris claro
Dark gray 8 Gris oscuro
Light Blue 9 Azul claro
Light Green 10 Verde claro
Light Cyan 11 Cyan claro
Light Red 12 Rojo claro
Light Magenta 13 Magenta claro
Yellow 14 Amarillo
White 15 Blanco
Blink 128 Parpadeo

UNIDAD V: Programación Modular: Procedimientos propios


El 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 y
Globales. Ámbito de un Identificador. Uso de Forward.-
EL DISEÑO DESCENDENTE: LOS SUBPROGRAMAS
Uno de los métodos fundamentales para resolver un problema es dividirlo en problemas más
pequeños,
llamados subproblemas. Esta técnica de dividir el problema principal se denomina, divide y
vencerás.
El método de diseño se denomina diseño descendente debido a que comienza en la parte
superior con
un problema general y se diseñan soluciones específicas a sus subproblemas. Cada subproblema es
deseable que sea independiente de los restantes y se denomina módulo, de modo que cada
problema
principal se subdivide en subproblemas. El problema principal se resuelve con el programa
principal
(también llamado conductor del programa), y los subproblemas (módulos) mediante subprogramas:
procedimientos y funciones.
EL DISEÑO MODULAR: LOS MÓDULOS
Los 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 tarea
específica.
El proceso de descomposición de un problema en módulos se conoce como modulación y a la
programación relativa a ellos programación modular.
Los procedimientos y funciones que sirven para realizar los módulos son similares pero presentan
notables diferencias entre ellos:
FUNCIONES PROCEDIMIENTO
Las funciones normalmente, devuelven un solo
valor a la unidad de programa (programa principal
u otro subprograma) que le referencia.
Los procedimientos pueden devolver cero, uno o
varios valores. En caso de no devolver ningún
valor, realiza una tarea tal como alguna operación
de entrada o salida.
A un nombre de procedimiento no se puede
asignar un valor, y por consiguiente ningún tipo
está asociado con un nombre de procedimiento.
Una función es referenciada utilizando su nombre
en una expresión.
Un procedimiento sé referencia por una llamada o
invocación al mismo.
PROCEDIMIENTOS:
Un procedimiento es un subprograma que realiza una tarea específica. Puede recibir cero o más
valores
del programa que llama y devolver cero o más valores a dicho programa llamador. Un
procedimiento
está compuesto de un grupo de sentencias a las que se asigna un nombre (identificador) y constituye
una unidad de programa. La tarea asignada al procedimiento se ejecuta siempre que Pascal
encuentre
el nombre del procedimiento.
Los procedimientos deben estar declarados en Pascal. Y deben estar declarados antes de ser
referenciados.
Declaración de un Procedimiento.
Al igual que cualquier otro identificador en Pascal, todos los procedimientos se deben declarar
dentro
del 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 cuando
sea
necesario.
Formato1
Procedure
Declaraciones locales
Begin
Cuerpo del procedimiento
End;
Formato2
Procedure( lista de parámetros formales)
Declaraciones locales
Begin
Cuerpo del procedimiento
End;
Llamada al procedimiento
Los procedimientos se llaman dentro de un programa o de otro procedimiento directamente por su
nombre, de acuerdo a los formatos 1 ó 2.
Formato1
Nombreproc
Formato2
Nombreproc (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 otros
procedimientos.
3. Una sección ejecutable: el cuerpo del procedimiento.
Ejemplo1
Procedure Estrella;
{ visualiza 15 estrellas}
begin
write(‘**************’)
end;
Ejemplo2
Procedure Geometría(Longitud, Anchura: Real; Var Area, Perimetro: Real)
begin
Area:= longitud * anchura;
Perimetro:= 2 * (longitud + Anchura)
end;
Orden de Ejecución Relativa de Procedimiento y el Programa Principal
Cuando se llama a un procedimiento, se instruye a la computadora para ejecutar las sentencias que
constituyen el cuerpo del procedimiento.
Al ejecutar la computadora la sentencia que llama al procedimiento se localiza este procedimiento y
se ejecutan las instrucciones del cuerpo de ese procedimiento.
Cuando el cuerpo del procedimiento se termina de ejecutar, se retorna al programa principal y se
ejecuta 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ámetros


Una de las características más importantes y diferenciadoras de los programas es la posibilidad de
comunicación entre el programa principal y los procedimientos. (o entre procedimientos). Esta
comunicació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 al
procedimiento y viceversa.
Un parámetro es, prácticamente, una variable cuyo valor debe ser o bien proporcionado por el
programa principal al procedimiento o ser devuelto desde el procedimiento hasta el programa
principal. 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 procedimiento
y
una 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 al
procedimiento
nombreproc.
En la declaración de un procedimiento, cuando se incluyen parámetros, éstos se denominan
parámetros
formales o ficticios. Ellos sirven para contener los valores de los parámetros actuales cuando se
invoca al procedimiento.
Procedure nombreproc (p1, azul, rojo,...)
Correspondencia de Parámetros
Los parámetros actuales en la invocación del procedimiento deben coincidir en número, orden y
tipo
con 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 proporcionar
información a un procedimiento, pero no pueden devolver valores.
En la declaración de un procedimiento, los nombres de los parámetros Variable están
precedidos de
la palabra Var. Los parámetros Valor se utilizan tanto para recibir información como. Para
transmitir
valores entre subprogramas y el programa llamador.
Un parámetro Variable puede actuar de parámetro de Entrada/ Salida.
Nota: Comparar los ejemplos 6.6 y 6.4. Pg. 211-212
Cuando Utilizar Parámetros Valor o Variable:
 Si la información que se pasa al procedimiento no tiene que ser devuelta fuera del
procedimiento, 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 representa
esa 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 nuevo
valor, 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 que
es
local 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. Al
contrario que
las variables locales, cuyos valores se pueden utilizar solo dentro del subprograma en que están
declaradas. Las variables Globales pueden ser utilizadas en el programa principal y en todos los
subprogramas.
Las variables locales se declaran dentro de los subprogramas. Y las variables Globales se declaran
en el
programa principal.
Ámbito de un identificador:
Un programa puede ser definido como una cabecera de programa, un bloque y un punto. Un
procedimiento como se sabe en Pascal, consta también de cabecera de procedimiento seguido de un
bloque 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 un
identificador
es 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 que
la
sentencia que lo invoca. Sin embargo, en ocasiones, es necesario llamar a un procedimiento que no
ha sido declarado antes que la sentencia de llamada. Para resolver este problema es necesario
informar al compilador que la declaración del procedimiento no exige ningún orden previo.
Ejemplo
Procedure uno(x: Real);
Begin
..
Dos(y); {incorrecto}
..
End;
Procedure dos(a: Real);
Begin
..
uno(b); {correcto}
..
End;
Este problema no se resuelve invirtiendo el orden de los procedimientos, puesto que UNO y DOS,
se
llaman mutuamente.
La resolución del problema requiere informar al compilador que la declaración del procedimiento
aparecerá más tarde en la sección de declaración. Esto se realiza con la declaración o sentencia
forward. Antes de la declaración del procedimiento UNO, se debe poner la cabecera completa
del
procedimiento 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}

También podría gustarte