Sei sulla pagina 1di 43

Lenguaje de programación Pascal

Presentación de la unidad:
El lenguaje de programación Pascal tiene una amplia difusión, particularmente en las
Universidades. Fácil de aprender y de enseñar, este lenguaje fue concebido para ser un
instrumento en la enseñanza de los conceptos de la programación y también facilitar el
desarrollo de aplicaciones científicas y de negocios.

El objetivo principal del curso es enseñar a resolver problemas a través de la técnica de


desarrollo de algoritmos, lo que se logra en tres etapas: el análisis del problema, la
especificación del algoritmo y, finalmente, la ejecución del programa en lenguaje Pascal.

Estructura del texto:


Este texto se ha diseñado para ser utilizado como material de estudio en cursos de
introducción a la programación de computadoras, con duración de 36 horas pedagógicas.

Su contenido aporta la habilidad de adquirir hábitos en la resolución de problemas y en la


programación. Dichos hábitos son incalculables mediante el uso de ejemplos, la práctica
frecuente y la interacción entre instructor y estudiante.

Así mismo, se anima a los estudiantes a hacer un esbozo de la resolución de los problemas;
describiendo primero cada paso del algoritmo y, después refinando cuidadosa y
completamente cada uno de los pasos de manera individual.

El texto está diseñado del tal manera que los alumnos puedan empezar a programar tan
rápidamente como sea posible. Cada nuevo elemento del lenguaje Pascal se utiliza en la
resolución de problemas de ejemplo a medida que van apareciendo.

El uso de varios elementos del lenguaje Pascal estándar, es explicado detalladamente.

Al final del texto, el estudiante encontrará una lista de problemas de programación.


Aparecen también las soluciones de algunos de ellos.

Presentación del libro

Los temas que aborda este texto son: Diseños de algoritmos y lenguaje de programación
Pascal.

Los contenidos tratados en la primera Unidad son técnicas de desarrollo de algoritmos. La


segunda Unidad nos muestra el editor del turbo Pascal 7.0. La tercera Unidad contienen las
estructuras básicas para construir un programa en lenguaje Pascal y la última, la unidad IV
contiene la estructura de datos necesarios para poder guardar datos y convertirlos en
información útil para el usuario del programa y además subprogramas: funciones y
procedimientos.
Unidad I

Lenguaje Pascal

Técnicas de desarrollo de algoritmos

Introducción

El diseño de un algoritmo es el primer paso, a seguir por toda persona que desee aprender
un lenguaje de programación.

El presente módulo entrega las instrucciones básicas para la construcción de un algoritmo a


través del Pseudo lenguaje (lenguaje materno).

Objetivos

Al término de la presente unidad usted estará en condiciones de:


• Conocer los conceptos asociados al diseño de un algoritmo.
• Analizar un problema.
• Diseñar un algoritmo que permita resolver problemas computacionales.
Programas

La computadora es una herramienta poderosa. Los datos de entrada pueden almacenarse en


la memoria y manejarse a velocidades excepcionalmente altas para producir resultados
(información; salidas del programa). Podemos describirle a la computadora ciertas tareas
para manejar los datos, presentándole una lista de instrucciones (llamada programa) que
deben ser realizadas. Una vez que esta lista le ha sido proporcionada a la computadora, ésta
puede llevar a cabo (ejecutar) dichas instrucciones.

Al proceso de elaborar una lista de instrucciones (escribir un programa) se le llama


programación. Escribir un programa computacional es similar a describir las reglas de un
juego a personas que nunca lo han jugado, para que las apliquen.

Para esto se requiere de un lenguaje de descripción entendible por todas las partes
involucradas en la comunicación. Suele utilizarse como primera etapa el lenguaje propio
del programador (pseudo lenguaje) y luego transcribir las instrucciones a un lenguaje de
Programación, es decir, el que comunica a la computadora con el usuario.

El primer paso en el diseño de un programa es escribir un algoritmo.

Un algoritmo es una secuencia de instrucciones o pasos lógicos, bien definidos que


ejecutados en un número finito de veces, permite resolver un problema computacional.

Una instrucción: corresponde a un conjunto de caracteres que especifican una operación a


realizar.

En todo proceso en que nos enfrentamos a un problema que debe ser resuelto, es
conveniente para optimizar nuestro trabajo, seguir una secuencia o en otras palabras
resolver el problema por etapas. Cada una de estas etapas tiene un objetivo específico, pero
todas ellas en conjunto nos permiten resolver el problema.

Para aprender a programar se tendrá que hacer conciencia de alguna de las estrategias
subyacentes de resolución del problema. Algunas de estas etapas son las siguientes: diseño,
construcción, codificación, verificación y documentación.

Las etapas anteriores deben ser realizadas en el mismo orden.

Diseño: En esta etapa el programador se debe plantear un modelo que le permita dar
solución al problema en cuestión. El modelo que se plantea no se debe expresar en
términos de un lenguaje específico, refiriéndonos a un lenguaje de programación, sino a
través de un Pseudo código.

El diseño para su mejor elaboración se subdivide en los siguientes puntos:

• Entender el problema: significa que el programador debe distinguir en forma clara y


precisa los datos que se dan, la información que se pide y además verificar o determinar
si la información que se está pidiendo es posible obtenerla con los datos que han sido
entregados, también debe considerar algunos supuestos.

• Estrategia de solución: una vez alcanzado el punto anterior el programador debe buscar
la forma de resolver el problema para lo cuál verificará si ha resuelto un problema
similar anteriormente, de ser efectivo lo anterior debe ver la forma de cómo adecuar el
problema que ya existe para resolver la nueva circunstancia. Si jamás ha resuelto un
problema similar debe buscar la forma de resolverlo.

• Desarrollo de un modelo: cuando se habla de un modelo se hace referencia a una


representación apropiada al problema planteado. Por lo general los modelos que se
aplican son de tipo matemático.

• Construcción: la etapa de construcción consiste en desarrollar un algoritmo que de


solución al problema, orientado a la estructura que debe poseer el programa.

Un algoritmo puede ser representado de varias formas: narrativa, diagrama de flujo,


pseudo lenguaje. Está última tiene la ventaja de ser muy parecido a programar en algún
lenguaje.

En este nivel se aplican transformaciones en forma sucesiva al algoritmo de tal forma de


obtener niveles más refinados para lo cual existen algunas técnicas.

Codificación: consiste en transcribir las instrucciones escritas en Pseudo lenguaje a un


determinado lenguaje de programación.

Verificación: una vez escrito el programa en un editor del lenguaje de programación, se


procede a ejecutar el programa y así verificar si se obtienen o no las salidas requeridas.

Documentación: cuando un programa cumple con el objetivo planteado, es decir los


resultados que se deseaban, el programador puede escribir un texto, que explique el
desarrollo del programa y/o el modelo matemático, para poder ser entendido por terceras
personas o para en el futuro ser modificado. También el programa se puede documentar a
través de comentarios, mensajes que no serán ejecutados por la computadora.

A continuación definiremos algunos términos que se utilizan en la construcción de un


algoritmo.

Datos: materia prima en bruto; las entradas del programa.

Variable: es una unidad de memoria, que permite guardar en ella un valor.


Existen variables de distintos tipos: entero, real, carácter, palabra, arreglo, matriz, etc. El
identificador de una variable describe su nombre y su tipo.
Estructuras básicas en la construcción de un algoritmo
Dividiremos en tres tipos las estructuras a utilizar.

I Estructuras de secuencia

Son aquellas instrucciones que no involucran ninguna decisión, sino que indican tareas
específicas y deben ser ejecutadas de acuerdo al orden en que son escritas.

Lectura

leer x permite ingresar desde teclado un valor, el cual será guardado en una
variable llamada "x".

leer a, b permite leer en este caso dos valores, que serán guardadas en las variables
llamadas "a" y "b". Se separan con comas las variables a leer.

Nota: Se utilizará la palabra inicio para comenzar un algoritmo y fin para terminarlo.

Ejemplo:
El siguiente es un algoritmo sin enunciado, luego no soluciona un problema específico.

inicio
leer a
leer b,c,d
leer h
fin

Explicación

Este algoritmo permite ingresar cuatro variables, de distintas formas: la primera instrucción
solo lee una variable; la segunda instrucción lee tres instrucciones y la última solo una
instrucción.

Asignación

a=2 asigna a la variable "a" el valor 2.

b=a asigna a la variable llamada "b" el valor que contiene la variable "a".

Nota: se puede asignar a una variable el resultado de una operación matemática. A


continuación describiremos las cuatro operaciones.
Variables operación explicación
a b a+b suma
x y x-y resta
p q p*q multiplica
c d c/d divide

Escritura

escribir a escribe en pantalla el contenido de la variable llamada


"a".

escribir 'hola' escribe en pantalla el mensaje escrito entre comillas.

escribir 'el resultado es', a escribe el mensaje entre comillas seguido del valor de la
variable "a".

Por ejemplo: sí a=120, el mensaje de la instrucción escribir "El número final es", a

Aparecerá en pantalla: El número final es 120

Ejemplo Nº 1 (Estructuras de secuencias)

Problema: se desea calcular el promedio de las tres notas de un alumno.

Desarrollo: en este punto se debe tener una comprensión profunda de lo que se requiere
para la resolución del problema. Se debe proceder a organizar la formulación del problema
mediante la construcción cuidadosa de una lista de pasos - el algoritmo - que describirá la
secuencia de operaciones que deben ser llevada a cabo para la resolución del problema.

Solución:

Tabla de datos

• Variable de entrada: nota1, nota2 y nota3.


• Variables del programa: suma.
• Variable de salida: promedio.

Estrategia de solución.

El propósito de la formulación de los pasos a seguir es proporcionar una descripción


detallada y precisa de los pasos individuales que debe ejecutar la computadora para la
resolución del problema.
• Paso 1: leer las tres notas guardándolas en las variables "nota1", "nota2" y "nota3".

• Paso 2: calcular la suma de los datos de las variables "nota1", "nota2", "nota3" y
almacenar el resultado en la variable llamada "suma".

• Paso 3: calcular el promedio de los datos dividiendo la variable suma por 3 y


guardándola en la variable "promedio".

• Paso 4: escribir el valor de la variable "promedio".

Construcción:

leer nota1, nota2, nota3


suma = nota1 + nota2 + nota3
promedio = suma / 3
escribir "El promedio de las notas del alumno es", promedio

Salida

Mediante la siguiente tabla se registrarán los datos de entrada y las asignaciones del
programa. Supongamos que las notas ingresadas son: 5, 4.8 y 6.4.

Variable
nota1 5
nota2 4.8
nota3 6.4
suma 16.2
promedio 5.4

Ejemplo Nº 2 (Estructuras de secuencias)

Problema: se desea calcular el salario líquido de un empleado. Dados su sueldo base, %


descuentos legales y % bonificación.

Desarrollo: en este punto se debe tener una comprensión profunda de lo que se requiere
para la resolución del problema. Se debe proceder a organizar la formulación del problema
mediante la construcción cuidadosa de una lista de pasos - el algoritmo - que describirá la
secuencia de operaciones que deben ser llevada a cabo para la resolución del problema.

Solución:

Tabla de datos

• Variables de entrada: salario del empleado (salario), % descuentos (descuentos), %


bonificación (bonificación)
• Variables del programa: calculodescuentos y calculobonificación.
• Variable de salida: sueldofinal.

Estrategia de solución.

El propósito de la formulación de los pasos a seguir es proporcionar una descripción


detallada y precisa de los pasos individuales que debe ejecutar la computadora para la
resolución del problema.

• Paso 1: Leer los datos guardándolos en las variables salario, descuentos y


bonificación.

• Paso 2: Calcular los porcentajes de los datos descuentos y bonificación,


almacenando los resultados en las variables llamadas calculodescuentos y
calculobonificación.

• Paso 3: Calcular el sueldo final, sumando los datos guardados en salario y


calculobonificación y finalmente restando a este resultado el valor de
calculodescuentos. Los cálculos serán guardados en sueldofinal.

• Paso 4: escribir el valor de la variable "sueldofinal".

Construcción:

leer salario, descuentos, bonificacion


calculodescuentos= (descuentos * salario)/100
calculobonificacion=(bonificacion * salario)/100
sueldofinal = (salario + calculobonificacion ) - calculodescuentos
escribir "El sueldo líquido del empleado es “,sueldofinal

Salida

Mediante la siguiente tabla se registrarán los datos de entrada y las asignaciones del
programa. Supongamos los datos iniciales registrados:

Variable
salario 100.000
descuentos % 12
bonificación % 15
calculobonificacion 15000
calculodescuentos 12000
sueldofinal 103000

Ejemplo Nº 3 (Estructuras de secuencias)


Problema: Dado el mes de nacimiento de un bebé de menos de 1 año de vida y que nació
en el año en curso. Calcule su edad en días. Suponga meses de 30 días.

Desarrollo: en este punto se debe tener una comprensión profunda de lo que se requiere
para la resolución del problema. Se debe proceder a organizar la formulación del problema
mediante la construcción cuidadosa de una lista de pasos - el algoritmo - que describirá la
secuencia de operaciones que deben ser llevada a cabo para la resolución del problema.

Solución:

Tabla de datos

• Variable de entrada: mesactual, mesdenacimiento.


• Variables del programa: calculomeses, calculodias.
• Variable de salida: calculodias.

Estrategia de solución.

El propósito de la formulación de los pasos a seguir es proporcionar una descripción


detallada y precisa de los pasos individuales que debe ejecutar la computadora para la
resolución del problema.

• Paso 1: Ingresar el mes de nacimiento y el mes actual y guardarlas en las variables "
"mesdenacimiento” y “mesactual".

• Paso 2: calcular la diferencia de los datos de las variables "mesactual " y


"mesdenacimiento " y almacenar el resultado en la variable llamada "calculomeses”.

• Paso 3: calcular el número de días multiplicando la variable calculomeses por 30 y


guardándola en la variable "calculodias ".

• Paso 4: escribir el valor de la variable "calculodias".

Construcción:

leer mesdenacimiento, mesactual


calculomeses = mesactual - mesdenacimiento
calculodias = calculomeses * 30
escribir "La edad en días del bebé es ", calculodias

Salida

Mediante la siguiente tabla se registrarán los datos de entrada y las asignaciones del
programa. Supongamos que los meses ingresados son: 2 mes de nacimiento y 10 mes
actual.
Variable
mesdenacimiento 2
mesactual 10
calculomeses 8
calculodias 240

Actividad Nº 1

Escriba un algoritmo para cada uno de los siguientes enunciados.

1) Encuentre el valor de "z" si z= ( a + b ) / ( a - c )


2) Calcule la edad de una persona, dados el año de nacimiento y el año actual.
3) Calcule el puntaje de ingreso a la Universidad de un alumno, sí:
PI = 25% NEM + 25% PAC + 25% PAM + 25% PE

Donde: PI = puntaje de ingreso.


NEM = notas de enseñanza media.
PAC = prueba de aptitud verbal.
PAM = prueba de aptitud matemáticas.
PE = prueba especial.

II Estructura de decisión

Normalmente, los pasos de un algoritmo se ejecutan en el orden en que fueron escritos. Sin
embargo, en muchos algoritmos la secuencia de los pasos que se van a ejecutar depende de
los datos de entrada. En estos casos, con base en los valores de ciertas variables, se debe
tomar decisión sobre qué secuencia de pasos va a ser ejecutada.

Tales decisiones requieren la evaluación de una condición que está expresada en término de
las variables relevantes. El resultado de la evaluación determina qué pasos del algoritmo
van a ser ejecutadas a continuación.

El paso del algoritmo que describe la condición se llama paso de decisión.

Cada paso de decisión involucra la evaluación de una expresión lógica, esto es, una
expresión que puede tener el valor de verdadero o falso.

Una condición describe normalmente una relación (mediante un operador relacional)


particular entre dos variables o entre una variable y una constante).

En la siguiente tabla se muestra un ejemplo:

Variable a Variable b Variable c condición valor


2 3 5 a >c Falso
1 4 2 a=2 Falso
9 2 3 b<a Verdadero
7 1 5 a>b y b<c Verdadero
120 200 3 a*c>b Verdadero
12 15 16 a>b o a>c Falso
17 19 21 a<b o a>c Verdadero

La Sintaxis de la estructura de decisión es:

Sí condición lógica entonces

Instrucciones

Sino
Instrucciones

Fin sí

• Si condición lógica es verdadera se ejecutan la o las instrucciones entre sí y sino.


• Si condición lógica es falsa se ejecutan la o las instrucciones entre sino y fin sí.

Ilustraremos la estructura de decisión modificando el problema del ejemplo Nº 1.

Ejemplo Nº 4 (Estructuras de secuencia y decisión)

Problema: se desea calcular el promedio de las tres notas obtenidas en el semestre por un
alumno y determinar si el alumno está o no. La nota mínima de aprobación es
un 4.

Desarrollo: los pasos 1, 2, 3 y 4 del ejemplo Nº 1 se conservan y se agrega:

• Paso 5: si variable "promedio" es menor que 4 (es decir, es verdadera esta


condición) escribir reprobado.
Sino, es decir si la variable promedio no es menor que 4 (falso) escribir aprobado.

Construcción:

leer nota1, nota2, nota3


suma = nota1 + nota2 + nota3
promedio = suma / 3
escribir "El promedio es", promedio
si promedio < 4 entonces
escribir "Reprobado"
sino
escribir "Aprobado"
fin sí
Ejemplo Nº 5 (Estructuras de secuencia y decisión)

Problema: se desea calcular el promedio de las dos notas obtenidas en el semestre por un
alumno, la nota mínima de cada prueba para aprobar la asignatura es un 4, de
no ser así el alumno está reprobado.

Desarrollo: el paso 1 del ejemplo anterior se conserva y se agrega:

• Paso 2: si variable "nota1" es menor que 4 (es decir, es verdadera esta condición)
escribir reprobado.
Si variable "nota2" es menor que 4 (es decir, es verdadera esta condición) escribir
reprobado. Sino, es decir si las dos variables nota1 y nota2 no son menores que 4
(falso) escribir aprobado.

Construcción:

leer nota1, nota2


si nota1<4 entonces
escribir "Reprobado"
sino
si nota2 < 4 entonces
escribir "Reprobado"
sino
escribir "Aprobado"
fin si
fin sí

Ejemplo Nº 6 (Estructuras de secuencia y decisión)

Problema: Lea el salario de un empleado y calcule el aguinaldo que se le asignará. Si el


salario es menor a $ 100.000 se le pagará un 30% del sueldo, como aguinaldo,
en caso contrario se le pagará un 20% del sueldo, como aguinaldo.

Solución

Tabla de datos:

• Constantes : porcentaje1= 0.30, porcentaje2 = 0.20


• Variables de entrada : salario (salario del empleado).
• Variable de salida : aguinaldo.

Estrategia de solución:

• Paso 1: leer salario.


• Paso 2: Decidir si salario es menor o mayor a $100.000.
• Paso 3: calcular aguinaldo de acuerdo al grado de verdad de la condición del paso
anterior.
• Paso 4: escribir el aguinaldo que le corresponde al empleado.

Construcción:

leer salario
sí salario < 100.000 entonces
aguinaldo = salario * 0.30
sino
aguinaldo = salario * 0.20
fin si
escribir " Su aguinaldo es ", aguinaldo

Actividad Nº 2

Escriba un algoritmo para cada uno de los siguientes enunciados:

1) Si el valor de una variable leída no es igual a 0, entonces multiplicarla por 50. De lo


contrario pasar por alto este cálculo. En cualquier caso escribir el valor.
2) Encontrar el mayor de dos valores. Considerar si son iguales.
3) Calcule la diferencia absoluta entre dos números. Sí x es mayor que y, la diferencia
absoluta es x - y; si y es mayor que x, la diferencia absoluta es y - x.

III Estructura de ciclos.

En la primera estructura, desarrollamos un algoritmo que calcula el promedio de tres notas.


Supongamos ahora que debemos calcular la suma de 100 notas. Luego tenemos:

Problema: calcular la suma de 100 notas

Solución: si extendemos la solución del problema 1, podríamos llegar a los pasos que
siguen.
• Paso 1 leer nota1
• Paso 2 leer nota2
• ... leer nota...
• Paso 100 leer nota100
• Paso 101 promedio = suma/100

Evidentemente, este algoritmo no es práctico y necesita una alternativa mejor. La esencia


del problema es encontrar la manera de ingresar los datos e ir sumándolos sin utilizar
instrucciones separadas para cada uno de ellos.
Sería ideal escribir un paso para la lectura y acumulación de todos los datos. Esto es posible
si hacemos referencia a cada una de las notas utilizando el mismo nombre de variable.

La solución del problema es el siguiente:

Una vez que una nota ha sido almacenada en la memoria de la computadora y ha sido
añadida a la suma, ya no se necesita.

Así, cada nota se puede almacenar en la misma variable llamada "nota". Después de añadir
el valor de "nota" a la suma, se almacena la siguiente nota. Esto, por supuesto, destruye el
valor previo de la nota, pero ya no es necesaria para los cálculos.

Para ver como trabaja este proceso, veamos que pasaría si intentamos ejecutar el algoritmo,
solamente con la repetición de los pasos.

• Paso 1 leer nota


• Paso 2 añadir a suma el valor de nota

Para que el algoritmo repita estos dos pasos cien veces se necesita una instrucción de ciclo
llamada mientras, la cual debe ser seguida de una condición lógica, que mientras sea
verdadera, ejecutará las instrucciones escritas inmediatamente después de ella. Finalmente
es necesario que la computadora sepa, cuáles instrucciones pertenecen al ciclo y cuáles no.
Para esto, se termina el ciclo con la palabra fin mientras.

La sintaxis de la estructura de ciclo es:

mientras condición lógica


instrucciones
fin mientras

Para nuestro problema el algoritmo sería:

suma = 0
contador = 1
mientras contador <= 100
leer nota
suma = suma + nota
contador = contador + 1
fin mientras
promedio = suma / 100
escribir " El promedio de las 100 notas es", promedio

Explicación:

Asignamos el valor uno, a la nueva variable contador. Que es aquella que se incrementará
en un número cada vez hasta llegar, en este caso a 100. También inicializamos la variable
suma en cero y a medida que sean ingresadas las notas, ella incrementará su valor,
sumándose a sí misma una nueva cantidad.

Supongamos que las primeras notas son: 5.0, 3.0 y 6.4 los valores de nota, suma y contador
serían:

Contador nota suma


1 5.0 5.0
2 3.0 8.0

3 6.4 14.4

Ejemplo Nº 7 (Estructuras de secuencia, decisión y ciclo)

Problema: se desea sumar los primeros 500 números impares.

Solución:

Tabla de datos

• Variables del programa: Contador: para contar los primeros 500 números impares.
Impar: variable que partirá en uno y se incrementara en dos unidades para ir
generando el impar siguiente. Suma: la variable, que parte de cero y se
incrementará al sumársele el impar siguiente y así sucesivamente.

Estrategia de solución:

• Paso 1: inicializar variable contador, variable suma y variable impar.


• Paso 2: condicionar ciclo.
• Paso 3: sumar número impar e incrementar variable contador y generar impar
siguiente.
• Paso 4: cerrar ciclo.
• Paso 5: mostrar resultado.

Construcción:

contador = 0
impar = 1
suma = 0
mientras contador <= 500
suma = suma + impar
impar = impar + 2
contador = contador + 1
fin mientras
escribir "La suma de los primeros 500 números impares es ", suma

Observación: Para resolver un problema computacional, se utilizan las distintas estructuras


descritas anteriormente, de secuencia, de decisión y de ciclo. Pudiendo, depender del
enunciado, usarse todas o solo algunas de estas instrucciones.

Ejemplo Nº 8 (Estructuras de secuencia, decisión y ciclo)

Problema: se desea encontrar todos los divisores de un número.

Tabla de datos

• Variables de entrada: número al que se le encontrarán los divisores (num),


• Variables del programa: contador del ciclo (I), resultado de la división del número
por cada valor del contador (divisor).
• Variable de salida: divisor.

Estrategia de solución.

El propósito de la formulación de los pasos a seguir es proporcionar una descripción


detallada y precisa de los pasos individuales que debe ejecutar la computadora para la
resolución del problema.

• Paso 1: Leer el número guardándolo en la variable num.


• Paso 2: Validar que num sea mayor que cero.
• Paso 3: Iniciar un ciclo con la variable I desde uno hasta el valor de num.
• Paso 4: dividir num por el valor de I y guardarlo en la variable llamada divisor.
• Paso 5: comparar divisor con cero, si es igual a cero imprimir el valor de divisor

Construcción

Escribir “Ingrese un número positivo”


Leer num
mientras num<0
Escribir “Ingrese un número positivo”
Leer num
fin mientras
i=1
mientras i<=num
si (resto (num dividido i))=0 entonces
escribir i, “es divisor de “,num
fin si
i=i+1
fin mientras
Salida
Mediante la siguiente tabla se registrarán los datos de entrada y las asignaciones del
programa. Supongamos que el número ingresado es: 6.

Variable
num 6 6 6 6 6 6 6
i 1 2 3 4 5 6 7
divisor 0 0 0 2 1 0

Luego la salida será:

Ingrese un número positivo


1 es divisor de 6
2 es divisor de 6
3 es divisor de 6
6 es divisor de 6

Actividad Nº 3

Escriba un algoritmo para cada uno de los siguientes enunciados:

1) Calcule el promedio de los primeros 70 números pares.


2) Sume las edades de los alumnos de un curso de 57 alumnos.
3) Encuentre el promedio de las temperaturas máximas de un mes.

Resumen

Esta Unidad ha estado destinada a presentar además de las instrucciones básicas para
desarrollar un algoritmo, unas cuantas sugerencias para resolver problemas con la
computadora. Resumidas son:

1) Entender qué es lo que se pide.


2) Identificar todos los datos de entrada y salida y listarlo en una tabla de datos.
3) Formular una proposición precisa del problema en término de los datos de entrada y
salida y asegurarse de que hay suficientes elementos de entrada para efectuar los
cálculos que nos llevarán a la solución.
4) Plantear claramente la secuencia de pasos necesarios para producir la salida deseada del
problema a través del manejo de los datos de entrada.
5) Construir el algoritmo, para posteriormente ser transcrito al lenguaje de programación
que va a ser utilizado.

EJERCICIO DE AUTOEVALUACIÓN

Responda las siguientes preguntas:


¿ Qué es una variable ?

¿ Qué diferencia hay entre datos e información ?

¿ Cuál es el primer paso a seguir en la resolución de un problema ?

¿ Qué sentido tiene escribir primero el algoritmo y luego el programa en un lenguaje


determinado ?

Escriba un algoritmo para cada una de los siguientes enunciados:

1) Lea un precio desde teclado y sumele el valor del IVA (IVA = precio * 0.18).
2) Lea un Nº por teclado y determine si es positivo, negativo o cero.
3) Encuentre el menor y el mayor valor de 300 números ingresados por teclado.

Respuestas a los ejercicios de autoevaluación.

Responda las siguientes preguntas:

¿ Qué es una variable ?


Es la referencia a un dato que se halla almacenado en la memoria a través de un nombre
simbólico descriptivo llamado nombre de variable.

¿ Qué diferencia hay entre datos e información ?


Los datos son la materia prima en bruto, es decir las entradas que el programa necesita para
trabajar.
La información es la salida que se obtiene el ejecutar el programa.

¿ Cuál es el primer paso a seguir en la resolución de un problema ?


El primer y más importante paso, es entender el problema. Es vital que se lea varias veces
el enunciado, para no escribir un algoritmo que no corresponda al problema propiamente
tal.

¿ Qué sentido tiene escribir primero el algoritmo y luego el programa en un lenguaje


determinado ?
Al escribir el algoritmo, se analiza de tal manera que se busca estrategias de solución y
luego se construye la solución.
El siguiente paso, luego de haber resuelto el problema es escribir el programa en algún
lenguaje de programación.

Escriba un algoritmo para cada una de los siguientes casos.


1) Lea un precio desde teclado y sumele el valor del IVA (IVA = precio * 0.18).
leer precio
IVA = 0.18
nuevo precio = precio * IVA + precio
Escribir "El precio más IVA es", nuevo precio

2) Lea un Nº por teclado y determine si es positivo, negativo o cero.

leer numero
si numero = 0 entonces
escribir "número es igual a cero"
sino
si numero < 0 entonces
escribir "número es negativo"
sino
escribir "número es positivo"
fin si
fin si

3) Encuentre el menor y el mayor valor de 300 números ingresados por teclado.

contador = 1
leer numero
menor = numero
mayor = numero
mientras contador <= 300
leer numero
si menor > numero
menor = numero
fin si
si mayor < numero
mayor = numero
fin si
contador = contador + 1
fin mientras
UNIDAD III

Lenguaje Pascal

Proposiciones y conceptos fundamentales e instrucciones de control de procedimiento.

Introducción

El lenguaje de programación Pascal tiene una amplia difusión, particularmente en las


Universidades. Fácil de aprender y de enseñar, este lenguaje fue concebido para ser un
instrumento en la enseñanza de los conceptos de la programación y también facilitar el
desarrollo de aplicaciones científicas y de negocios.

Objetivos

Al término de la presente Unidad el alumno estará en condiciones de:


- Describir las principales características de Pascal.
- Escribir programas en lenguaje Pascal, que involucren conceptos básicos e
instrucciones de control de procesamiento.

Características de Pascal

Pascal es un lenguaje de alto nivel, esto significa que los programas escritos en él, no
dependen de la computadora que los ejecuta. Sus principales características son:

1) Es de propósito general: el campo de aplicaciones de Pascal, puede ser considerado


completo ya que permite el tratamiento de problemas científicos, de gestión,
procesamiento de texto, educación, etc.
En otras palabras, es un lenguaje universal.

2) Es un lenguaje estructurado: Pascal tiene estructurados sus programas y sus datos

3) Es un lenguaje algorítmico: en efecto, un algoritmo específico puede ser escrito


directamente en Pascal para ser ejecutado en la computadora.

Expresiones predefinidas en Pascal

Pascal reconoce un conjunto de palabras especiales y símbolos que forman el vocabulario


básico de este lenguaje de programación. Estas expresiones se denominan predefinidas y se
refieren a instrucciones de ejecución y símbolos que el lenguaje emplea para distinguir las
secciones de un programa, tipo de datos, etc.

En este texto serán escritas las palabras propias del lenguaje Pascal en negrita y cursiva.
Secciones de un programa

El texto de un programa en Pascal se compone de secciones, las cuales deben ser escritas, si
el programa lo requiere, en el siguiente orden:
1) Primera línea o encabezamiento (program)
2) Sección de declaración de constantes (const).
3) Sección de declaración de tipos (type).
4) Sección de declaración de variables (var).
5) Sección de procedimientos y funciones (procedure y function).
6) El cuerpo del programa, formado por instrucciones ejecutables encerradas entre las
palabras begin y end.

Observación: solamente son obligatorias las secciones 1 y 6.

1) program nombre;
2) const ...;
3) type ...;
4) var ...;
5) procedure ...;
function ...;
6) begin...
...
end

Se describirá cada sección en forma detallada en el desarrollo de la Unidad.

Indicaciones a considerar en la escritura de un programa

1) La primera línea de un programa en Pascal, debe comenzar con la palabra reservada


program, seguida por un nombre, que se haya acordado darle.
Enseguida y entre paréntesis las palabras input y/o output en el caso que el programa
necesite ingresar datos y/o escribir en pantalla respectivamente.

2) Cualquier grupo de instrucciones ejecutables que se encierren entre las palabras begin y
end constituye un bloque de ejecución, al que también se denomina instrucción
compuesta. El procesamiento normal de las instrucciones de un bloque es el
secuencial, es decir, de acuerdo al orden en que se escriben.

En particular, el cuerpo principal del programa debe empezar con la palabra begin y
terminan con la palabra end, a la que hay que seguir con un punto (.) para indicar el
final del programa.

3) Se emplea el signo punto y coma (;) para separar instrucciones, secciones, etc.

Identificadores o nombres de Variables.

1. Puede contener combinaciones de letras (A - Z) y los dígitos (0 - 9).


2. Deben empezar siempre con una letra.
3. No se deben colocar acentos.
4. Se puede escribir en minúsculas o mayúsculas.
5. Para separador de palabra se utiliza el símbolo de subrayado, no se debe dejar espacio
en blanco.

Ejemplos:
Sumadenumeros
A1
Promedio
TEMPERATURA_MAXIMA

Instrucción de definición de constantes.

const = valor
nombre de la constante

Interpretación: Para declarar una constante se debe anteponer la palabra reservada const
luego se coloca el nombre de la constante seguido del símbolo igual (=) y luego el valor
que se le asignará.

Al ser declarada una constante, su valor no puede ser modificada por ninguna instrucción
posterior durante la ejecución del programa.

Ejemplos:
const
IVA = 0.18;
UF del_día = 15800;
Meses = 12;

Tipos de datos.

Existen tres tipos de datos: numérico, alfanumérico y lógico.

Numéricos pueden ser de tipo:

- Real (real) números decimales positivos, negativos o cero, estos se escriben en notación
exponencial o en base 10.
Por ejemplo 3207,34 o 3.2073400000 + E03

- Entero (integer) números sin punto decimal, comprendidos entre 32.767 y 32.767.

Alfanuméricos pueden ser de tipo:

- Caracter (char) se compone de un solo carácter, pudiendo ser este cualquier simbolo del
teclado incluso numérico, con la salvedad de no poder ser operado matemáticamente.
- Cadenas (string) colecciones ordenadas de caracteres, se asignan entre comillas (` ´).

Lógicas pueden ser:

- Lógicas o booleanas (boolean) admiten valores true (verdadero) o false (falso)

Símbolo de asignación :=

nombre de variable := valor;

Interpretación: a la izquierda debe ir el identificador o nombre de la variable, seguida de


los símbolos := y a la derecha el valor, pudiendo ser éste también el resultado de una
operación aritmética.

Ejemplos:

nota1 := 5.9:
nota2 := 6.3;
suma := nota1 + nota2;
nombre := `Karina´;
letra := `p´;
Suma:=3.8;
Porcentaje:=0.06;
Letra:=`k`;
Palabra:=`hola`;
Nombres:=`Irene Diaz`;
Dirección:=`Alameda 31`;
Edad:=18;
Dia:=5;
Mes:=8;

Operadores aritméticos del lenguaje Pascal

Operación Símbolo Expresión Comentario


Multiplicación * X*Y El resultado es de tipo entero si ambos
operadores son de tipo entero, en caso
contrario es de tipo real.
División (real) / X/Y El resultado de esta operación es de
tipo real.
Adición + X+Y El resultado es de tipo entero si ambos
operadores son de tipo entero, en caso
contrario es de tipo real.
Sustracción - X-Y El resultado es de tipo entero si ambos
operadores son de tipo entero, en caso
contrario es de tipo real.
División DIV X DIV Y Entrega el cuociente entero de la
entera división entre X e Y.

Módulo o MOD X MOD Y Entrega el resto de la división entre X e


resto Y.

Ejemplos:

1) Si a:=17 ; b:=5;
a Mod b es igual a 2 pues es lo que sobra al dividir 12 por 5
a Div b es igual a 3 pues la parte entera de la división.

Operadores lógicos del lenguaje Pascal

Operación Símbolo Expresión Comentario


Negación NOT NOT x NOT cambia el grado de verdad de x, si
es positivo lo deja negativo y viceversa.
Conjunción AND x AND y Esta expresión es verdadera solamente
si las dos expresiones son verdaderas.
En otro caso es siempre falsa.
Disyunción OR x OR y Esta expresión es falsa solamente si las
dos expresiones son falsas. En otro
caso es siempre verdadera.

Ejemplos:

Si a:=true; b:=false; c:=6; h:=20;

Not a es falso
Not b es verdadero
(c>h And h<100 es falso pues c es menor que h.
(c=6 And c<h es verdadero, pues las dos condiciones son verdaderas.
(c>0 And ((c Mod 2)=0) es verdadero porque c es mayor que cero y el resto de dividir
6 por 2 es cero, luego las dos condiciones son verdaderas.

Relaciones de comparación

Relación símbolo Expresión lógica Comentario


Igualdad = x=y Esta expresión es verdadera si x es igual a y, en
caso contrario es falsa.
Desigualdad <> x <>y Esta expresión es verdadera si x es distinto de y,
en caso contrario es falsa.
Menor < x<y Esta expresión es verdadera si x es menor que y,
en caso contrario es falsa.
Mayor > x>y Esta expresión es verdadera si x es mayor que y,
en caso contrario es falsa.
Menor o <= x <= y Esta expresión es verdadera si x es menor o
igual igual a y, en caso contrario es falsa.
Mayor o >= x >= y Esta expresión es verdadera si x es mayor o
igual igual a y, en caso contrario es falsa.

Funciones de Pascal

Función Descripción
ABS(x) Da el valor absoluto de x. El resultado es del mismo tipo que x.

SQR(x) Da el cuadrado de x. El resultado es del mismo tipo que x.


SQRT(x) Entrega la raíz cuadrada de X>=0.
TRUNC(x) Es igual a la parte entera de x. El resultado es de tipo entero.
ROUND(x) Es igual al entero más próximo a x. El resultado es de tipo entero.
LN(x) Da el logaritmo natural de x>0.
SIN(x) Da el valor del seno de x radianes.
COX(x) Da el valor del coseno de x radianes.
ARCTAN(x) Da el valor en radianes del arcotangente de x.
EXP(x) Es el valor de la exponencial de x, es decir, el numero
e=2.71828….) elevado al exponente x.

Introducción declaración de variables

VAR
Nombre_de_variable1:tipo1;
Nombre_de_variable2:tipo2;
-----------------------------------

Interpretación: A cada variable de la lista de variables se le asigna una celda de memoria y


además se especifica de que tipo de datos (entero, real, carácter, palabra, etc.) es la variable
después del signo dos puntos ( : ). Para separar variables que son del mismo tipo se utiliza
una coma (,).

Ejemplo de declaración de variables

VAR
Suma, porcentaje:real;
Letra:char;
Palabra, nombres, direcciones:string;
Edad, dia, mes:integer;

Instrucción read y readln

Read (lista_de_variables_de_entrada);

Interpretación: los datos son ingresados en cada variable especificada en la lista de


variables de entrada.
Para separar los nombres de las variables en la lista se usan comas.

Readln
Cumple el mismo objetivo que la instrucción read, pero luego de leer las variables, sitúa el
cursor en la línea siguiente del programa, es decir, lee y salta línea.

Ejemplos

Read (nota1, nota2, nota3);


Readln (nombre, dirección);

Introducción write y writeln

Write (`mensaje`);
Write (valor);
Write (`mensaje`,valor);

Interpretación: la instrucción write permite mostrar en pantalla un mensaje escrito entre


comillas simples y además el contenido de una variable, en este caso llamada valor.

La instrucción writeln, además de mostrar por pantalla como write, permite escribir y
colocar el cursor en la siguiente línea.

Ejemplo:

Write ( 'hola ');


Write('cómo');
Writeln (éstás?´)
Writeln(´muy´);
Writeln(´bien´);

En pantalla se verá:
Hola ¿cómo estás?
Muy
Bien
Comenzaremos nuestro estudio con un ejemplo de un programa en Pascal.

Ejemplo 1

Problema: Escribir un programa en Pascal que muestra el siguiente mensaje:


Curso de programación y el resultado de la operación 2+5.

Solución:

Program uno (output);


Begin
Writeln(´curso de computación`);
Writeln (2+5);
End.

Explicación

1. La primera línea del programa se forma con la palabra reservada program, el nombre
que le hemos asignado al programa: uno y encerrado entre paréntesis la palabra output
pues se imprimen datos en pantalla.
Finalmente se escribe un ; que es el símbolo de separador de instrucciones.

2. El cuerpo del programa, comprendido entre begin y end tiene dos instrucciones writeln
(significa escribir y luego saltar línea). Nótese que writeln es seguida inmediatamente
por los datos que se desean imprimir encerrados entre paréntesis.

La salida de este programa es:

Curso de computación
7

Ejemplo 2:

Problema: escribir un programa en Pascal que permita ingresar dos valores enteros y
calcular los cuatro operaciones aritméticas. Mostrar los resultados en pantalla.

Solución:

Program operaciones_aritmeticas (input, output);


Var
a,b:integer;
Begin
Write(´Ingrese dos números´);
Readln (a,b);
Writeln(´La suma de ¨,a,´y´,b,´es´a+b);
Writeln(´la diferencia entre´,a,´y ´,b,´es´,a-b);
Writeln(´la multiplicación entre´,a,´y ´,b,´es´,a*b);
Writeln(´la división entre´,a,´y ´,b,´es´,a/b);
End.

Explicación:

1 Se declaran dos variables de tipo entero


2 Se pide mediante un mensaje en pantalla ingresar dos valores
3 Se leen los valores por ejemplo 12 y 4.
4 Se escriben los mensajes y el resultado de las operaciones aritméticas.

La salida del programa es:

Ingrese dos números 12 4


La suma entre 12 y 4 es 16
La diferencia entre 12 y 4 es 8
La multiplicación entre 12 y 4 es 48
La división entre 12 y 4 es 3

Ejemplo 3
Problema: escribir un programa es Pascal que obtenga el promedio de tres valores enteros:

Solución:
Program promedio_de_datos (input, output);
Const
Total=3;
Var
Suma, n1, n2, n3: integer;
Promedio: real;
Begin
Write (´Ingrese tres números´);
Readln(n1, n2, n3);
Suma:=n1 + n2 + n3;
Promedio:=suma/total;
Writeln(´El promedio de los valores es´, promedio);
End

Explicación
1 Se declara la constante total con el número de datos.
2 Se declaran cuatro variables de tipo enteras y una variable llamada promedio que debe
ser de tipo real, pues la operación de división siempre entrega un resultado real.
3 Se escribe un mensaje, luego se leen las variables involucradas.
4 Finalmente se realiza el cálculo del promedio y se muestra el resultado.

Actividad Nº 1
Escriba un programa en lenguaje Pascal para encontrar el área de un circulo según la
formula:
Area = ¶* r²
En donde r es el radio del círculo y ¶= 3.14159

Instrucción de decisión If...then...else

1.1) IF condición lógica THEN


instrucción1;
Instrucción2;

En este caso sólo la instrucción1, está condicionada, es decir, se ejecutará si


condición lógica es verdadera. Instrucción2 está fuera del IF

Observaciones: cuando la instrucción If contiene más de una instrucción, esto deben ser
escrito entre begin y end. Lo mismo ocurre con else.

Ejemplo

Problema: Leer un número, sí es negativo convertirlo en positivo:

Program si(input, output)


Var
a:integer ;
begin
write (`Ingrese un Nº´);
readln (a);
if a < 0 then
a:=a*-1
writeln (´Nº positivo`,a);
end.

Explicación: solamente si el valor de la variable a es negativo se le cambia su valor, la


instrucción siguiente, en este caso writeln siempre se ejecuta independiente del grado de
verdad de la condición.

Salida:
Ingrese un Nº -12
Nª positivo 12

1.2) IF condición lógica THEN


BEGIN
Instrucción1;
Instrucción2;
-------------
Instrucciónk;
END;

Ejemplo 2

Problema: ingresar un numero por teclado, si el número es mayor que 100, multiplicarlo
por 20, sumarle 8 unidades y dividirlo por 4.

Solución

Program uso_del_si(input,output);
Var
A, b, c, d:integer;
Begin
Write (´Ingrese un Nº´);
Readln (a)
If a > 100
Begin
b:=a*20;
c:=b+8;
d:=c/4;
a:=d;
End;
Writeln (a)
End.

Explicación:
Si el número ingresado es mayor que 100, es decir es verdadera la condición, se realizan las
cuatro instrucciones entre begin y end.

Salida:
1) Ingrese un Nº 120
602

2) Ingrese un Nº 36
36

1.3) IF condición lógica Then

BEGIN
Instrucciones;
END { no debe ir un punto y coma antes de un ELSE}
ELSE
BEGIN
Instrucciones;
END;
Ejemplo

Problema: Ingresar un Nº por teclado y determinar, si es o no par.

Program paridad (input, output);


Var
Num: integer;
Begin
Write(´Ingrese un Nº´);
Readln (num);
If (num mod 2)=0 then
Writeln(´número par´)
Else
Writeln (´número impar´);
End.

Explicación: la condición dice: si la variable num es dividida por 2 y el resto es 0 que el


programa escriba numero par, en caso contrario que escriba numero impar.

Salida

1) Ingrese un número par 6


número par

Al dividir 6 por 2 el resto es 0

2) Ingrese un numero impar 5


número impar

al dividir 5 por 2 el resto es 1

Otro ejemplo:

Ingrese los coeficientes de una ecuación de segundo grado (a,b,c), si el determinante d=b²-
4*a*c es positivo encontrar las raíces de la ecuación, en caso contrario escribir un mensaje.

Program raices (input, output);


Var
A,b,c,d:integer;
X1, x2: real;
Begin
Write ( 'Ingrese los coeficientes de la ecuación ')
Readln(a,b,c);
D:=b*b-4*a*c
IF d<0 Then
Writeln( ' Las raíces son imaginarias ');
ELSE
BEGIN
X1:=(-b + sqrt(sqr(b)- 4*a*c))/2*a
X2:=(-b - sqrt(sqr(b)- 4*a*c))/2*a
Writeln( ' Las soluciones son ', x1:2:1, ' y ',x2:2:1);
END;
END.

Explicación

Primero se leen las variables y enseguida se calcula el determinante. Luego se evalúa si el


determinante es negativo, de ser así, se da un mensaje. En este caso, el mensaje es "las
raíces son imaginarias", pues no existe la raíz cuadrada de un número negativo en los
números reales. Finalmente si la condición es falsa, es decir, es positivo o cero el valor de
d, se extraen las raíces de la ecuación.

Salida

1) Ingrese los coeficientes de la ecuación 1 -1 -2


Las soluciones son 2.0 y -1.0

3) Ingrese los coeficientes de la ecuación


Las soluciones son imaginarias

1.4) Instrucción IF compuesta

IF condición lógica1 THEN


IF condición lógica2 THEN
IF condición lógica3 THEN
BEGIN
instrucciones
END
ELSE
BEGIN
instrucciones
END
ELSE
IF condición logica3 THEN
--------
Nota1: No existe un modelo de lo sí anidados. Ellos se van a anidar de acuerdo al
enunciado.
Nota2: Cada IF... Then que tenga un ELSE se cierra a partir de la posición más interior.
Nota3: Las instrucciones pueden ser a su vez, otros IF.

Ejemplo
Problema: ordenar de menor a mayor tres números distintos ingresados por teclado.

program si_anidados (input, output);


var
a, b, c: integer;
begin
writeln(´Ingrese tres números´);
readln (a, b, c);
if a<b then
if b<c then
writeln (a, b, c)
else
if a<c then
writeln (a, c, b)
else
else
if b<c then
if a<c then
writeln (b, a, c)
else
writeln (b, c, a)
else
writeln (c, b, a)
end.

Explicación: se debía primero tener en cuenta la cantidad de soluciones en este enunciado.


En este caso seis. Se emplearon solamente sí anidados para ejemplificar bien el punto 1.4.
Se recomienda seguir el programa con datos que resulten en distinto orden y así poder
entender mejor el problema.

Actividad.

Escribir un programa en Pascal que lea el salario de un empleado y calcule el nuevo sueldo
de acuerdo a la siguiente tabla.

Sueldo reajuste %
0 - 100.000 15
101.000 - 200.000 12
201.000 - 250.000 10

Instrucción de decisión de alternativas múltiples CASE...OF

CASE selector OF
Etiqueta1:instrucción1;
Etiqueta2:instrucción2;
Etiqueta3:instrucción3;
Etiqueta4:instrucción4;
----------------------------
Etiquetan:instrucciónn;
END;
Interpretación: El selector es un valor , el que se evalúa y se compara con cada uno de los
caso etiquetados. Cada etiqueta es una lista de uno o más valores posibles del selector,
separados por comas.

Nota1: Si el valor del selector no coincide con ninguna etiqueta, no se ejecuta instrucción
alguna.
Nota2: El valor del selector, debe coincidir solamente con una de las etiquetas.
Nota3: El selector y las etiquetas deben ser del mismo tipo de datos.
Nota4: Los datos deben ser de tipos integer, boolean, y char, pero no real.

Ejemplo:

Problema: si un alumno obtiene un puntaje entre 10 y 39 su evaluación es insuficiente;


entre 40 y 49 es suficiente; entre 50 y 59 es buena y entre 60 y 70 esmuy buena.

Solución

PROGRAM evaluacion (INPUT, OUTPUT);


VAR
Nota:integer ;
BEGIN
Write(' Ingrese su nota '); Readln(nota);
CASE nota OF
10..39:writeln(' Insuficiente ');
40..49: writeln(' Suficiente' );
50..59:writeln('Bueno ');
60..70:writeln('Muy bueno');
END;
END.

Explicación: El valor de nota es comparado con cada uno de los rangos, al coincidir con
uno de ellos , escribe el mensaje respectivo.

Salida

Ingrese su nota 57
Bueno

Actividad
Escriba un programa que exprese un número entero N, entre 1 y 3000, en números
romanos.

Por ejemplo: para 2125 se escribe MMCXXV

Instrucción de ciclo WHILE...DO

WHILE condición lógica


Cuerpo del ciclo

Interpretación: Si la condición lógica es verdadera, se ejecuta el cuerpo del ciclo y se


vuelve a preguntar por la condición. El cuerpo del ciclo se repite mientras la condición
lógica sea verdadera. Cuando la condición lógica sea falsa, se sale del ciclo y se ejecuta la
primera instrucción que sigue al cuerpo del ciclo. El cuerpo del ciclo puede ser una
instrucción simple o compuesta (varias instrucciones entre BEGIN y END).

NOTA: Si la condición evaluada resulta ser falsa, la primera vez que prueba, el cuerpo del
ciclo es pasado por alto y no ejecutado.

Ejemplo

Problema: Calcular y mostrar todas las potencias del número dos que son menores de 100,
comenzando con 20=1

Solución

PROGRAM potencias_de_dos(INPUT,OUTPUT);
CONST
Base=2;
VAR
I,mul:integer;
BEGIN
I:=0;
Mul:=1;
WHILE i<=100 DO
BEGIN
Writeln(mul);
Mul:=mul*base;
I:=i+1;
END;
END.

Explicación

1) Se declara una constante para guardar el valor de la base, en este caso dos.
2) Se declara una variable para contador del ciclo que parte en cero y una variable que
generará el valor de cada potencia.
3) La instrucción While i<=100, indica que mientras la variable contador sea menor o
igual a 100 mostrará el valor de mul, generará la potencia siguiente y se incrementará el
contador.

Instrucción de ciclo FOR...TO...DO

FOR variable contador:= inicial TO final DO


Cuerpo del ciclo

Interpretación: El cuerpo del ciclo se ejecuta para cada valor de la variable de control de
ciclo: la variable contador, entre el valor inicial y final, inclusive. Inicial y final pueden ser
constantes, variables o expresiones; sin embargo, variable contador, inicial y final deben ser
del mismo tipo: integer, boolean, char.

Nota1: El valor de variable contador no puede ser modificado dentro del ciclo.
Nota2: Si inicial es mayor que final, el cuerpo del ciclo no será ejecutado.
Nota3: La forma alternativa

FOR variable contador:= final DOWNTO inicial DO


Cuerpo del ciclo

Se utiliza para implementar un ciclo que cuente hacia abajo desde un valor final mayor a un
valor inicial menor.

Ejemplo

Se considerará el ejemplo anterior, pero ahora con la instrucción FOR.

Problema: Calcular y mostrar todas las potencias del número dos que son menores de 100,
comenzando con 20=1

Solución

PROGRAM potencias_de_dos_con_for(INPUT,OUTPUT);
CONST
Base=2;
VAR
I,mul:integer;
BEGIN
Mul:=1;
FOR i:=1 TO 100 DO
BEGIN
Writeln(mul);
Mul:=mul*base;
END;
END.

Otro ejemplo

Problema: escribir la tabla de conversión de grados Celsius a grados Fahrenheit para


temperaturas que comienzan en 5º C y terminan en -5º C. La fórmula de conversión es
F=1,8 * C +32

Solución
PROGRAM conversión(OUTPUT);
Const
Valor1=1.8; maximo =5
Valor2=32; minimo=-5;
Var
Fahrenhirt, contador: integer;
Begin
Writeln (´celsius fahrenhirt´);
For contador:=maximo downto minimo do
Begin
Fahenhirt:=valor1*contador + valor2:
Writeln (contador:3, fahrenheit:12:1);
End;
End.

Explicación
1) Se declaran como constantes los datos del problema.
2) Se declara como variable el contador del ciclo y el valor que calcula la conversión.
3) El ciclo for downto decrementa la variable contador en una unidad cada vez.

Instrucción de ciclo repeat ... until

Repeat
Instrucciones
Until condición lógica

Explicación: la instrucción repeat repite las instrucciones escritas después de ellas hasta
que la condición lógica sea verdadera.
Nota: este ciclo se ejecuta al menos una vez, debido a que la condición se encuentra al final
del ciclo.

Ejemplo:

Problema: escribir un programa que muestre los primeros 200 números pares.
Solución

PROGRAM pares(input,output);
CONST
N=2;
VAR
Pares,contador:integer;
BEGIN
Contador:=1;
REPEAT
Writeln('par ',n*contador);
Contador:=contador+1
UNTIL contador=201;
END.

Explicación

El ciclo REPEAT ejecutará las dos instrucciones que contiene hasta que la variable
contador sea igual a 201.

Salida

Par 2
Par 4
Par 6
------ etc.

Actividades

1) Escriba un programa en Pascal que calcule la suma de los números 1, 2, ...., N. N es


ingresado por teclado.
2) Escriba un programa que muestre los cubos de todos los números comprendidos
entre dos enteros a y b inclusive.
3) Escriba un programa que muestre el nombre del mes correspondiente a los números
1, 2, 3,....., 12
4) Escriba un programa que lea un entero N y que efectúe los siguientes cálculos: si N
termina en 0, 3, 7, u 8, se cambie por el doble; si termina en 1, o 9, por la décima
parte (entera); de otra manera, mantiene su valor.

Resumen

En la presente Unidad se han presentado los conceptos básicos del lenguaje Pascal y las
estructuras de control de procesamiento: las instrucciones if case, while, for, repeat.

Se han mostrado las principales instrucciones de Pascal, mediante su sintaxis y ejemplos de


aplicación.
Ejercicios de autoevaluación.

¿ Qué es un programa ?

Es un conjunto de instrucciones que ejecutan una tarea específica.

¿ En que se diferencia un algoritmo de un programa ?

El algoritmo se representa en un lenguaje informal parecido a Pascal, pero que, no


sigue las reglas sintaxis escritas.

¿ Por qué Pascal es un lenguaje de alto nivel ?

porque un programa en Pascal escrito para un computador puede ser ejecutado en


cualquier otro computador.

Menciones al menos cinco palabras predefinidas o propias de Pascal.

Program, var, const , if, while

Escriba un programa para cada uno de los siguientes enunciados:

1) Encuentre el área de un círculo de radio r, según la fórmula: A=¶*r2

Solución

PROGRAM area_circulo(Input,Output);
CONST
Pi=3.14159;
VAR
Area,radio:ral;
BEGIN
Write('(ingrese el radio del círculo');
Readln(r);
Area:=pi*r*r;
Writeln('El area del circulo de radio ',r,' es ',area:3:2);
END.

2) Calcule el nuevo sueldo de un empleado, de acuerdo a la siguiente tabla:

Años de servicio % reajuste


1-4 5
5-9 9
10-15 12

Solución

Program uno(input,output);
VAR
Sueldo,nuevosueldo:real;
Antigüedad:integer ;
BEGIN
Write('Ingrese su sueldo'); Readln(sueldo);
Write ('Ingrese años de antigüedad en la empresa'); Readln (antigüedad);
IF (antigüedad>=1) and (antigüedad<=4) Then
Sueldo:=sueldo+sueldo*0.05
ELSE
IF (antigüedad >=5) and (antigüedad <=9) Then
Sueldo:=sueldo+sueldo*0.09
ELSE
Sueldo:=sueldo+sueldo*0.12
END.

3) Transforme un dato de entrada de 1 a 7, en el día de la semana que le


correspondería. Por ejemplo: si ingresa 3 debe escribir miércoles.

PROGRAM dia_de_la_semana(Input,output);
Var
Dia:integer ;
BEGIN
REPEAT
Write('Ingrese un número entre 1 y 7 , inclusive');
Readln(dia);
UNTIL (dia>=1) and (dia<=7);
CASE dia OF
1:writeln('Lunes ');
2:writeln('Martes ');
3:writeln(' Miércoles');
4:writeln('Jueves');
5:writeln('Viernes');
6:writeln('Sábado');
7:writeln('Domingo');
END;
END.

4) Encuentre todos los divisores de un número entero y positivo.

Solución
PROGRAM divisores_de_un_numero(Input,output);
VAR
Num,divisores,contador:integer;
BEGIN
REPEAT
Write('Ingrese un número entero y positivo ');
Readln( num);
UNTIL (num>0);
FOR contador:= 1 TO num DO
IF (num MOD contador)=0 Then
Writeln(contador, ' es divisor de ',num);
END.
Unidad IV

Lenguaje Pascal

Estructura de Datos y Subprogramas

Introducción

En muchas ocasiones, nos encontramos con el problema de almacenar grandes cantidades


de datos en la memoria. Hasta el momento, hemos podido procesar cantidades
relativamente grandes de datos, utilizando únicamente unas cuantas celdas de memoria para
resolver nuestros problemas. Hemos procesado cada dato individualmente y hemos vuelto
a usar la celda de memoria en la cual estaba almacenado ese dato.
Hay muchas aplicaciones en las cuales es necesario conservar los datos para poder
procesarlos después.

Por ejemplo, podríamos necesitar un programa que calcule e imprima el promedio de un


conjunto de calificaciones en un test y que después imprima el promedio del conjunto de
las calificaciones y además compare cada calificación con el promedio.
En este caso, es necesario poder contar dos veces con los mismos datos, una vez para
calcular su promedio y otra vez para hacer la comparación respectiva.
Al introducir cada dato, sería tedioso leer con la instrucción read muchas veces, por
ejemplo 100 veces, a la vez que necesitaríamos 100 instrucciones de comparación con cada
dato.

En esta unidad aprenderemos a utilizar otro elemento del lenguaje PASCAL, llamado
arreglo, que sirve para almacenar un conjunto de datos relacionados entre sí. El uso de
arreglos facilitará la tarea de nombrar y referenciar a cada uno de los términos de un
conjunto de elementos. Utilizando un arreglo, podremos introducir un conjunto de datos
completo empleando solamente una instrucción de lectura dentro de un ciclo. Una vez que
el conjunto se ha almacenado en la memoria, podemos hacer referencia a cualquiera de
estos términos cuantas veces queramos sin que tengamos que volver a introducir estos datos
en la memoria.

Además en esta unidad veremos como definir nuestros propios tipos de datos y declarar
registros. Un registro al igual que un arreglo, es un conjunto de dos o más datos
relacionados entre sí. Sin embargo, a diferencia de un arreglo, los componenets
individuales de un registro pueden contener datos de tipos diferentes. Podemos utilizar un
registro para almacenar una gran variedad de clases de información sobre una persona
(nombre, oficio, sueldo, edad, etc), un libro (titulo, autor, año, editorial, numero de páginas,
etc.)

Objetivos:

Al término de la presente unidad, usted estará en condiciones de:


• Definir sus propios tipos de datos.
• Utilizar arreglos y matrices para manejar un conjunto de datos.
• Definir registros.
• Utilizar registros para facilitar el manejo de los datos organizándolos de forma
adecuada.
• Definir sus propias funciones.
• Utilizar procedimientos con y sin parámetros para programar.

Potrebbero piacerti anche