APRENDA PASCAL

AUTORES:

Prof. Rodiert Zayas Alzamora.

Prof. Reinier Escobar Santiesteban.

“AÑO 49 DE LA REVOLUCIÓN”

Índice Prefacio ............................................................................................................. 1 Capítulo 1 Introducción a la programación en Borland Pascal.......................... 2 Introducción al Borland Pascal........................................................................... 3 Estructura de un programa en pascal................................................................. 3 Palabras reservadas........................................................................................... 4 Identificadores..................................................................................................... 4 Tipos de datos.................................................................................................... 5 Variables y Constantes....................................................................................... 6 Operadores aritméticos , lógicos y de relación................................................... 8 Funciones estándar de Pascal.......................................................................... 11 Tipos de errores................................................................................................ 12 Convertir expresiones y fórmulas matemáticas en expresiones Pascal........... 12 Resumen........................................................................................................... 13 Ejercicios de autoevaluación............................................................................ 15 Respuestas de ejercicios de autoevaluación.................................................... 17 Ejercicios propuestos........................................................................................ 18 Capítulo 2 Estructuras básicas de control....................................................... 22 Estructura de control lineal............................................................................... 23 Instrucciones de escritura, lectura y asignación............................................... 23 Solución de problemas lineales........................................................................ 25 Estructura de control condicional. Simple, doble y múltiples............................ 29 Solución de problemas condicionales............................................................... 33 Generación de números aleatorios................................................................... 37 Estructura de control iterativa. For, While y Repeat…………………………….. 39 Solución de problemas iterativos...................................................................... 43 Rastreo de programas...................................................................................... 46 Resumen........................................................................................................... 48 Ejercicios de autoevaluación............................................................................ 51 Respuestas de ejercicios de autoevaluación.................................................... 53 Ejercicios propuestos........................................................................................ 55 Capítulo 3 Estructuras de datos....................................................................... 60 Datos estructurados.......................................................................................... 61 Arreglos de una dimensión............................................................................... 61 Operaciones con arreglos................................................................................. 63 Arreglos de dos dimensiones........................................................................... 74 Resumen........................................................................................................... 77 Ejercicios de autoevaluación............................................................................ 78 Respuestas de ejercicios de autoevaluación.................................................... 79 Ejercicios propuestos........................................................................................ 80

Capítulo 4 Registros y Ficheros....................................................................... 82 Registros........................................................................................................... 83 Definición de tipos de registros......................................................................... 83 Arreglos de registros......................................................................................... 85 Ficheros............................................................................................................ 87 Constructor del tipo de dato file........................................................................ 87 Operaciones con ficheros................................................................................. 88 Resumen........................................................................................................... 92 Ejercicios de autoevaluación............................................................................ 93 Respuestas de ejercicios de autoevaluación.................................................... 95 Ejercicios propuestos........................................................................................ 96 Capítulo 5 Modularidad.................................................................................... 98 Principios de modularidad. Ventajas................................................................. 99 Procedimientos. Estructura de un procedimiento............................................. 99 Paso de parámetro por valor y por referencia................................................ 102 Ejemplos de procedimientos creados por el programador............................. 104 Funciones. Estructura de una función............................................................ 105 Ejemplos de funciones creadas por el programador...................................... 106 Recursividad. Funciones recursivas............................................................... 109 Resumen......................................................................................................... 111 Ejercicios de autoevaluación.......................................................................... 112 Respuestas de ejercicios de autoevaluación.................................................. 114 Ejercicios propuestos...................................................................................... 116 Bibliografía.................................................................................................... 118

en especial para los alumnos del primer año. 1 . Cualquier error que se encuentren en este texto por mínimo que sea. Este libro cuenta con una gran recopilación de ejemplos. para motivar al estudiante a resolver problemas relacionados con la vida real. Por favor dirija toda su correspondencia a cualquiera de estas direcciones electrónicas: rzayasa@ispij. Cuenta con ilustraciones de algoritmos y programas completos. Espero que les sea de mucha utilidad. recomendación o crítica será bien recibida. pero que también ofreciera un tratamiento riguroso a la teoría “trabajo con algoritmos” que se requiere para programar con mayor eficiencia.rimed. ya que con este se forman los principios básicos de la programación estructurada. Pascal desde su creación. se convirtió en una de las herramientas más utilizadas para la enseñanza de la programación. ya que teniendo la lógica del trabajo en un lenguaje no visual como este.cu Cualquier información. comentarios y sugerencias para mejorar el producto. no presentarán ningún problema para cuando lleguen a un lenguaje visual. Los autores. utilizando una herramienta tan poderosa el mundo de la programación como es la enseñanza mediante ejemplos. les agradeceríamos (los autores) sus correcciones.rimed. para alumnos con poca o ninguna experiencia en programación. que estuviera al nivel de las exigencias actuales de los Institutos Politécnicos de Informática (IPI).cu rescobar@ipiij. pero en cualquier otro compilador de Pascal se pueden utilizar. ayuda. ejercicios y programas de diversos campos. Todos estos programas y ejemplos aquí presente fueron diseñados para ser ejecutados en Borland Pascal 7.Prefacio Este material ha sido creado por la gran necesidad de contar con un libro de texto de programación en Pascal para nivel medio.0. críticas. o sea.

Pensamientos ◘ Nada es más valioso que el día de hoy.12 Ejercicios de autoevaluación.11 Resumen. • Declarar variables y definir constantes. lógicos y de relación. 1. Mahatma Gandhi. Goethe.14 Ejercicios propuestos. 1.10 Convertir expresiones y fórmulas matemáticas en expresiones Pascal. 1.9 Tipos de errores. ◘ Estar en paz consigo mismo es el medio más seguro de comenzar a estarlo con los demás.6 Variables y Constantes. 1. • Identificar los componentes básicos Pascal. la paz es el camino. • Conocer los operadores aritméticos.2 Estructura de un programa en Pascal. • Convertir expresiones matemáticas en expresiones Pascal.7 Operadores aritméticos . 1. 1.13 Respuestas de ejercicios de autoevaluación. 1. • Familiarizarse con las funciones básicas del lenguaje. 1. ◘ Después de escalar una montaña muy alta descubrimos que hay muchas otras montañas por escalar. 1.Capítulo 1 _____________________________________________________________ Introducción a la programación en Borland Pascal _____________________________________________________________ Objetivos • Familiarizarse con el Borland Pascal y su estructura para programar. 1. así como los tipos de datos fundamentales.8 Funciones estándar de Pascal.3 Palabras reservadas. palabras reservadas.5 Tipos de datos. Nelson Mandela ◘ Mucha gente persigue lo que posee y está esclavizada por las mismas cosas que desea conseguir. Anwar el Sadat ◘ No hay caminos para la paz. 1. lógicos y de relación. tales como. identificadores. Fray Luis de León Sinopsis 1.1 Introducción al Pascal. 2 . 1. 1.4 Identificadores.

y se utiliza muy a menudo en medios educativos. Existen también versiones para desarrollos bajo Linux. Declaraciones: Aquí se le indica al compilador todos los indentificadores y unidades que utilizará nuestro programa. Recuerde que un programa no es más que un conjunto de instrucciones que se le da al ordenador para resolver un problema determinado. diseñado a principios de la década de 1970 por el profesor Niklaus Wirth como un elemento de aprendizaje. Ejemplo: Program Nombre. se trata de un lenguaje estructurado.1 Partes de un programa en BP7. en vez de las tradicionales herramientas en línea de comandos.) introdujo Turbo Pascal. incluía un entorno de desarrollo IDE.1. En la “Figura 1.0 (BP7) es estructurado. Todas las instrucciones van escritas entre las reservadas begin y end. En los últimos años su popularidad ha decrecido. lo que significa que cada programa requiere una forma específica de escritura para que sea entendido por el compilador.2 Estructura de un programa en pascal. para sistemas MS-DOS. Se trataba de un compilador de Pascal. Pascal. se denominó así en honor a Blaise Pascal. De Pascal se derivan diversos lenguajes. En este libro se trabaja bajo la base del Borland Pascal 7. el conocidísimo Object Pascal. Pascal es un lenguaje de programación de alto nivel. entre otros. aunque sigue comercializándose. una versión avanzada orientada a objetos. Cabecera Declaraciones Sentencias Figura 1. 1. 3 . matemático y filósofo francés del siglo XVII que creó la primera calculadora. entre ellos.1” aparece las partes o módulos del Lenguaje de Programación (LP) BP7.1 Introducción al Pascal. La aceptación y el uso de Pascal se incrementó considerablemente en 1984. tanto interpretado como compilado. El producto comercial actual más conocido es Borland Delphi. un entorno de programación visual. disponible en numerosas versiones. de alta velocidad y bajo costo. El lenguaje utilizado en Borland Pascal 7. Cabecera: En esta sección de programa solo lleva el nombre del programa. basado en Turbo Pascal para Windows y que usa las extensiones de Object Pascal.0. cuando Borland International (actualmente Inprise Corp. Sentencias: Aquí se escriben todo el código de instrucciones que realizará nuestro programa.

1. Puede tener cualquier carácter alfabético A. lleva consigo a establecer una diferencia marcada entre un lenguaje y otro aunque existen palabras que son muy comunes en todos los lenguajes. sin Ñ.3 Palabras reservadas. 1.2” son propias de cada lenguaje. esto. etc. PROGRAM RECORD REPEAT SET THEN TO TYPE UNTIL VAR XOR WHILE WITH En la Figura 1. el nombre de una función o de un procedimiento. No puede tener tilde en ningún momento. Estos nombres o "identificadores" serán combinaciones de letras y/ o números. Puedes ver la relación entre ambas estructuras. Todo LP cuenta con una serie de palabras reservadas que son las que le permite al programador poder comunicarse con el mismo. { Cabecera } { Declaraciones } BEGIN { Sentencias } END. No puede tener espacios intermedios. No pueden ser palabras reservadas del LP. AND DO FUNCTION NIL ARRAY DOWNTO GOTO NOT BEGIN ELSE IF OF CASE END IN OR CONST FILE LABEL PACKED DIV FOR MOD PROCEDURE Figura 1.2 Palabras reservadas de Pascal. al nombre del programa.4 Identificadores. Pseudocódigo Algoritmo Nombre { Cabecera } { Declaraciones } Inicio { Sentencias } Fin Las palabras BEGIN y END representan inicio y fin del programa. Los "identificadores" son palabras que usaremos para referirnos a una variable. Deben seguir las siguientes características: • • • • • • No podrán empezar con un número.La estructura del programa quedaría de la siguiente forma: Pascal PROGRAM Nombre. 4 . Estas palabras reservadas “Figura 1.Z. una constante. junto con algunos pocos símbolos especiales. No pueden existir dos identificadores con el mismo nombre.3 se muestran algunos identificadores válidos y otros no válidos.. como el guión bajo (_). entre otras cosas.

caracteres. el tipo de dato (data type en Inglés) especifica el rango de valores que puede contener una variable o una constante. etc. Los datos simples son elementos individuales(números. y se almacena esa información en la memoria de la computadora. no está compuesto de otras estructuras. Nota: Pascal no diferencia las minúsculas de las mayúsculas.5 Tipos de datos. AreaTriangulo ÁreaTriángulo ArregloN Array Figura 1. El Pascal puede adquirir muchos tipos diferentes de datos.Identificadores válidos: Identificadores no válidos: Programa_1 1_Programa Mi_Programa Mi Programa Suma Sum@ Tarea_2 2 Tarea Area Área Numeros_Primos #_Primos ParImpar Par o Impar Positivo_Negativo Positivo_Negativo. y que por tanto su representación sobre el ordenador es de forma directa. que puede valer Lógico Boolean TRUE (verdadero) o FALSE (falso). Ejemplo los identificadores NUMEROS y numeros son completamente iguales.) que se asocian a identificadores únicos en correspondencia uno a uno. estos últimos serán objeto de estudio en el “Capítulo 3 Estructuras de datos”. etc.3 Ejemplo de identificadores válidos (Izquierda) y no válidos (Derecha). Vamos a ver por ahora los datos simples “Figura 1. Lo que quiere decir que deben ser almacenados con un tipo de dato. Es una variable lógica. Cadena de caracteres. 1. Entre ellos están los datos simples y los datos estructurados. estos deben ser numéricos.4”. lógicos.. Pseudocódigo Borland Pascal 5 . empleado para Texto String almacenar y representar mensajes de más de una letra (hasta 255). cadenas de caracteres. Los dato de tipo simple.4 Tipos de datos estándar de Pascal. Descripción Número entero comprendido entre Enteros Integer -32768 hasta 32767. A la hora de guardar los datos en la computadora. Real Real Es un número real. que no sean los bits. Figura 1. En programación.

Especifica al ordenador qué tipo de valor va a almacenar la variable(números reales. cadenas de textos.Palabra clave para declarar variables.5 Estructura general para declarar variables.Aquí se pone el nombre de la variable a declarar. el nombre de una variable es un indentificador. tenemos que emplear la palabra clave var. fichas sobre personas o libros. evita los errores que puedan surgir al emplear variables incorrectas. 5. 1. Respuesta: Var Nombre: String.. números enteros. Edad: Integer. Una variable es una posición de memoria a la que nosotros asignamos un nombre y en la que podremos almacenar datos que pueden ser modificados a lo largo de todo el programa..). o sea. pero en la práctica ayuda a conseguir programas legibles y más fáciles de corregir o ampliar. etc. Los nombres de las variables siguen las reglas que ya habíamos mencionado para los identificadores en general. y del tipo de datos que va a almacenar esa variable.Los dos puntos es un separador e indica el tipo de dato que tendrá la variable a declarar.6 Variables y Constantes. 2.. En Pascal tenemos que declarar las variables que vamos a usar. etc. Para declarar una variable “Figura 1. Figura 1.Fin de la declaración.. Ejemplo: Se tienen las siguientes situaciones: • Tenemos necesidad de almacenar el nombre y la edad de una persona. Ahora nuestras variables podrán tener cualquier valor (no sólo un número: también podremos guardar textos.. 4.) y nombres más largos (y que expliquen mejor su contenido). que puede ser cualquier número.. luego escribimos el nombre que vamos a dar a la variable. Además.5”.1. 6 . Esto puede parecer incómodo. 3. Variables: Una variable equivale a la clásica incógnita "x" que todos hemos usado en las matemáticas.

B y C comienzan con 5. diciéndole que almacena la suma de las variables B y C. Respuesta: Var Prec: Integer. es decir 8 + 10. es decir 18 + 10.• Queremos almacenar el valor de las precipitaciones caída de un día. 7 .En la línea (B = A + C) se le asigna un nuevo valor a la variable “B”. quedando almacenado en A el número 18. quedando almacenado en B el número 46. . en B es 28 y en C es 46. Al que no le dio así que observe el análisis que les muestro a continuación: . B y C. Variable3: Integer. los valores que quedan almacenados son 18. En este caso tenemos tres variables que van a almacenar números enteros. 28 y 46 respectivamente.En las tres primeras líneas A.En la línea (C = A + B) se le asigna un nuevo valor a la variable “C”. el valor que queda almacenado en ella es el último que se le asigna. Variable2. diciéndole que almacena la suma de las variables A y B. . 8 y 10 respectivamente.En la línea (A = B + C) se le asigna un nuevo valor a la variable “A”. Respuesta: Var UJC: Boolean. Si deseas declarar varias variables de un mismo tipo puedes separarlas con una coma y luego decir el tipo de dato. diciéndole que almacena la suma de las variables A y C. Al no asignarle más ningún valor a las variables A. es decir 18 + 28. . Nota: En una variable. quedando almacenado en B el número 28. B y C diga qué valor queda almacenado en cada una de ellas: A=5 B=8 C = 10 A=B+C B=A+C C=A+B Respuesta: El valor que queda almacenado en A es 18. Para entender mejor esto analice el siguiente ejemplo: ♣ Dadas las variables A. Ejemplo: Var Variable1. • Almacenar si un estudiante es de la Unión de Jóvenes Comunista (UJC) o no lo es.

Una constante en programación es similar al valor de la constante Π que todos conocemos.Palabra reservada para definir constantes. nos podemos encontrar con que hay variables que realmente "no varían" a lo largo de la ejecución del programa. En Pascal hay una manera especial de definir las constantes “Figura 1.9” al igual que los operadores de lógicos “Figura 1.7 Operadores aritméticos .6”. 4. 2.Representa el fin de la definición de la constante.El valor que va a tener la constante... Respuesta: Const Pi = 3..14. Entonces podemos definir que una constante es una posición de memoria a la que nosotros asignamos un nombre y un valor que no puede ser modificado a lo largo de todo el programa. Los nombres de las constantes siguen las reglas que ya habíamos mencionado para los identificadores en general. 8 .Aquí se pone el nombre de la constante a definir.7 aparecen los operadores aritméticos que utiliza Pascal. cuyo valor no cambia en ningún momento. 1. Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. 5.10” también juegan un papel fundamental en la elaboración de un programa en Pascal. En la Figura 1.Operador (=) que indica asignación (Solo en estos casos). Los operadores relación “Figura 1. Ejemplo: Se tienen las siguientes situaciones: • Se quiere definir una constante que almacene el valor de Π. Respuesta: Const Descuento = 100.6 Estructura general para definir constantes.. Pascal tiene una serie de operadores que les permitirá desarrollar los cálculos necesarios un tu aplicación. 3.Constantes: Cuando desarrollamos un programa. Figura 1.. que es con la palabra reservada const. lógicos y de relación. 1. • Definir una constante que almacene el descuento de un trabajador que es de $100 mensuales. sino que su valor es constante.

Descripción Ejemplo Adición X:= Y + Z Sustracción X:= Y - Z Multiplicación X:= Y * Z División real X:= Y / Z División entera X:= Y div Z Resto de una mod X:= Y mod Z división Figura 1.7 Operadores aritméticos y ejemplo de su utilización.

Operador + * / div

Y 5 5 5 5 5 5

Z 2 2 2 2 2

X 7 3 10 2.5 2

2 1

Puedes observar que en la columna Ejemplo de la Figura 1.7 se utilizó el operador := que es el de asignación. En los primeros tres ejemplo espero que no tengan ningún tipo de duda ya que a la variable X se le asigna un valor, el de la Suma, la Resta y la Multiplicación de las variables Y y Z respectivamente. Los ejemplos 4 y 5 tienen una diferencia significativa y es que en el caso del / es una división real y por lo tanto el valor de la variable X tiene que ser Real, y el div realiza una división entera y con esto me refiero a que al dividir el toma el resultado de la división y elimina los lugares después de la coma, dejando así solo el valor entero del resultado, en este caso X tiene que ser declara como Integer. El operador mod devuelve el resto o residuo de una división de enteros. Analice el ejemplo que se muestra en la Figura 1.7 y observe la explicación en la Figura 1.8.

Figura 1.8 Ejemplo del valor devuelto al usar el operador mod. Operador Descripción = Igual a > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que <> Distinto de Figura 1.9 Operadores de relación en Pascal. Ejemplo del uso de operadores de relación: ♣ Dadas las variables A y B, diga cuando la expresión puede ser evaluada como verdadera y cuando como falsa. Ejemplifique. a) A = B b) A > B c) A < B d) A >= B e) A <= B f) A <> B

9

Repuestas: a) Verdadera si A y B son iguales, ejemplo A = 8 y B = 8. Falsa si A y B son diferentes, ejemplo A = 5 y B = 8. b) Verdadera si A es mayor que B, ejemplo A = 10 y B = 8. Falsa si A es menor o igual que B, ejemplo A = 3 y B = 5. c) Verdadera si A es menor que B, ejemplo A = 10 y B = 18. Falsa si A es mayor o igual que B, ejemplo A = 6 y B = 6. d) Verdadera si A es mayor o igual que B, ejemplo A = 10 y B = 10. Falsa si A es menor que B, ejemplo A = 1 y B = 6. e) Verdadera si A es menor o igual que B, ejemplo A = 10 y B = 10. Falsa si A es mayor que B, ejemplo A = 12 y B = 6. f) Verdadera si A es diferente a B, ejemplo A = 5 y B = 8. Falsa si A igual que B, ejemplo A = 1 y B = 1. En los operadores de relación espero que no halla ninguna duda, así que prestaré toda mi atención en los operadores lógicos. Significado La expresión es verdadera (True) si al menos un operando es verdadero y falsa (False) si todos or o los operando son falsos. La expresión es falsa si al menos un operando es falso y verdadera si todos los operando son and y verdaderos. La expresión es verdadera si solo un operando xor o exclusivo es verdadero y falsa en cualquier otro caso. Este operador se usa como prefijo para negar un not negación operando booleano. Figura 1.10 Operadores lógicos en Pascal. Or: En español significa “o”. Con este operador el valor de la expresión es verdadero si al menos una de las preguntas es verdadera de lo contrario es falsa, o como ya estudiaste en las primeras unidades cuando estamos ante una disyunción Figura 1.11 a. And: En español significa “y”. Con este operador el valor de la expresión es verdadero si todas las proposiciones son verdaderas, de lo contrario es falsa, o como se dice cuando estamos ante una conjunción Figura 1.11 b. Xor: En español significa “o exclusivo”, a diferencia del “or”, este solo es verdadero cuando existe un solo valor verdadero entre varias proposiciones o preguntas lógicas, como quieras llamarlas. Not: En español significa “no” o “negación”, y se utiliza para negar el valor de una expresión Figura 1.11 c. Operador Descripción

10

Figura 1.11 Tablas de la verdad. a)Disyunción. b) Conjunción. c) Negación. Nota: Para evitar ambigüedades en el orden de realización de las operaciones lógicas, los operandos boléanos deben ir encerrados entre paréntesis, aunque en ocasiones no necesariamente los lleve. Ejemplo de uso de los operadores lógicos: ♣ Dadas las variables A y B, diga si la expresión es evaluada como verdadera o como falsa si conocemos que A = -2 y B = 120. Explique. a) (A > 0) or (B > 100) b) (A <= 0) and (B > 100) c) (A = -2) xor (B = 120) d) not(A <> B) Respuestas: a) Verdadera. Porque el segundo operando es verdadero. b) Verdadera. Porque los dos operando son verdaderos. c) Falsa. Porque uno y solo de los operando tiene que ser verdadero. d) Falsa. Porque el valor del operando es verdadero pero el operador not niega su valor y por tanto el valor resultante es falso. 1.8 Funciones estándar de Pascal. Pascal al igual que todo lenguaje de programación cuenta con una serie de funciones que hacen posible un funcionamiento adecuado del mismo sin tener que crear nuevamente conjuntos de códigos para que realicen una determinada tarea. En la Figura 1.12 se muestran algunas de las funciones estándar, las que estudiarás su uso en otros capítulos. Función Efecto abs(x) Calcula el valor absoluto de x chr(x) Determina el carácter representado por x en el código ASCII. cos(x) Calcula el coseno de x en radianes. sen(x) Calcula el seno de x en radianes. odd(x) Determina si x es impar. round(x) Redondea el valor de x al entero más próximo. sqr(x) Calcula el cuadrado de x. sqrt(x) Calcula la raíz cuadrada de x (x>0). trunc(x) Trunca x (suprime la parte decimal). copy Retorna una subcadena de una cadena dada. pos Localiza una determinada cadena dentro de otra. lenght Devuelve el tamaño de una cadena. concat Une las cadenas pasadas como parámetro. Figura 1.12 Funciones estándar de Pascal. 11

el programa sólo se puede ejecutar después que este proceso se haya completado. Esto sin duda. presionando la combinación de teclas Ctrl. + F9. etc. En estos casos el programador debe hacer un chequeo de su programa sentencia a sentencia y que cada una de estas se correspondan con el algoritmo diseñado.10 Convertir expresiones y fórmulas matemáticas en expresiones Pascal. En BP7 la compilación se realiza cuando se ejecuta el mismo. y simultáneamente verifica la sintaxis y muestra mensajes de error o de advertencia. no se emiten mensajes de error ya que la estructura de programa y la implementación de la escritura está correcta. Un compilador traduce todo un programa a lenguaje de máquina. que traduce una línea a la vez e inmediatamente la ejecuta. una división por 0. Errores de ejecución: Este tipo de error se ocasionan cuando utilizas tipos de datos incompatibles en un argumentos de una función estándar usada. pero no ofrece el resultado esperado. ya que al compilarse el programa. El compilador es un programa que traduce un Lenguaje de Alto Nivel como C o Pascal a un programa de lenguaje de máquina.9 Tipos de errores. 1. entre otros que ya chocarás con ellos en el transcurso del aprendizaje. según sea apropiado. Errores sintácticos o gramaticales: Varios de los errores más usuales que surgen de la compilación suelen ser variables o constantes incorrectamente declaradas. Por tanto. en lo cual difiere con un intérprete. Teniendo la base de estas conversiones les ayudará a disminuir los errores de programación en la ejecución de sus programas. uso de variables cuyo tipo no corresponda con el tipo de dato que se le asigna. uso incorrecto de los puntos y comas.Existen otras funciones estándar que se mostrarán en su debido tiempo. 12 . favorecerá en gran medida a adelantar en los próximos capítulos cuando se empiece la programación. referencias a variables no declaradas. Este tema va a estar destinado a la adquisición de habilidades en la traducción de expresiones algebraicas y lógicas en expresiones del lenguaje de programación Pascal. Cuando terminas de escribir el código de tu programa este necesita ser compilado para poder visualizar tu creación y así ver si cumple con las expectativas deseadas. Error lógico: Este es error más difícil de divisar de todos. 1. intentar cambiar el valor a una constante. Mientras más horas se le dedique a la programación más habilidades se logran y disminuyen las posibilidades errores sintácticos y de ejecución al igual que los errores lógicos.

• Área del triángulo. • Una persona del sexo masculino y de edad menor que 25. R/: Area:= A * B / 2.x). Un programa en Pascal está dividido en tres partes o zonas: Cabecera. Antecesor:= Num – 1. R/: (Sexo = ‘M’) and (Edad < 25).11 Resumen. 13 . • Número positivo o que sea par. ó C:= Num * Num + 5. • y=a+b z–x R/: y:= (a + b) / (z .Aquí aparecerán una serie de ejemplos de conversión de expresiones matemáticas en expresiones Pascal. Representa las siguientes expresiones en una expresión Pascal: • Suma de tres números diferentes. Declaraciones y Sentencias. • x= 3y + 5 R/: x:= 3 * y + 5. 1. R/: Sucesor:= Num + 1. R/: Prom:= (Nota1 + Nota2 + Nota3 + Nota4) / 4. • Promedio de cuatro notas de un alumno. R/: C:= Sqr(Num) + 5. • Cuadrado de un número aumentado en 5. R/: (Num > 0) or (Num mod 2 = 0). La programación estructurada es un método disciplinado de escribir programas que resulten claros. Pascal fue diseñado para enseñar programación estructurada en contextos académicos. • Sucesor y antecesor de un número. De Pascal derivan diversos lenguajes de programación como Ada y Object Pascal. R/: Suma:= N1 + N2 + N3. demostrablemente correctos y fáciles de modificar.

Real Real Es un número real. No pueden existir dos identificadores con el mismo nombre. Descripción Número entero comprendido entre Enteros Integer -32768 hasta 32767. el valor que queda finalmente almacenado en ella es el último valor que se le asigna. Puede tener cualquier carácter alfabético A. y se almacena esa información en la memoria de la computadora. Una constante es una posición de memoria a la que nosotros asignamos un nombre y un valor que no puede ser modificado a lo largo de todo el programa. Una variable es una posición de memoria a la que nosotros asignamos un nombre y en la que podremos almacenar datos que pueden ser modificados a lo largo de todo el programa. Operadores de relación en Pascal. junto con algunos pocos símbolos especiales. No puede tener acentuación. empleado para almacenar y representar mensajes de Texto String más de una letra (hasta 255). Deben seguir las siguientes características: No podrán empezar con un número. Operadores aritméticos. Operador Descripción + Adición Sustracción * Multiplicación / División real div División entera mod Resto de una división El operador de asignación que utiliza Pascal es :=. que puede valer Lógico Boolean TRUE (verdadero) o FALSE (falso). sin Ñ ni acentos. No pueden ser palabras reservas del LP.4 Tipos de datos estándar de Pascal..Los identificadores son combinaciones de letras y/ o números. Figura 1. El tipo de dato (data type en Inglés) especifica el rango de valores que puede contener una variable o una constante. Es una variable lógica. No puede tener espacios intermedios. Cadena de caracteres.Z. Operador Descripción = Igual a > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que <> Distinto de Pseudocódigo Borland Pascal 14 . En una variable.

b) Se denominó Pascal en honor a _____________. matemático y filósofo francés del siglo XVII que creó la primera calculadora. y se utiliza para negar el valor de una expresión.• • • Or: En español significa “o”. El resultado final de una compilación es un ejecutable. Los tipos de errores son: Errores sintácticos o gramaticales. b) _____ Pueden tener espacios intermedios. Errores de ejecución. el programa sólo se puede ejecutar después que este proceso se haya completado.. como quieras llamarlas. Para evitar ambigüedades en el orden de realización de las operaciones lógicas. el cual convierte el código fuente de un programa de alto nivel (línea por línea) en enunciados del lenguaje de máquina. este solo es verdadero cuando existe un solo valor verdadero entre varias proposiciones o preguntas lógicas. Un compilador traduce todo un programa a lenguaje de máquina. __________ y ____________. La diferencia de un compilador y un intérprete radica en que compilador debe traducir el programa completo antes de que pueda comenzar la ejecución. c) Las partes de un programa en BP7 son ____________. Not: En español significa “no” o “negación”.1 Llene los espacios en blanco de cada una de los siguientes incisos: a) Pascal es un ____________________ de alto nivel. Un intérprete es un traductor incluido en un lenguaje de programación. Por tanto. Con este operador el valor de la expresión es verdadero si todas las proposiciones son verdaderas. d) _____ No pueden ser palabras reservadas del LP.Z. sin Ñ. 1. a diferencia del “or”. 15 . e) _____ Pueden existir dos identificadores con el mismo nombre. diseñado a principios de la década de 1970 por el profesor ____________. 1. de lo contrario es falsa.12 Ejercicios de autoevaluación. 1. según sea apropiado. un intérprete traduce y ejecuta cada línea a la vez. Errores lógicos. los operandos boléanos deben ir encerrados entre paréntesis. f) _____ Puede tener cualquier carácter alfabético A. And: En español significa “y”. Xor: En español significa “o exclusivo”. c) _____ Pueden tener tilde en algunos momentos. Con este operador el valor de la expresión es verdadero (True) si al menos una de las proposiciones es verdadera de lo contrario se evalúa como falsa (False).2 Coloque verdadero o falso en cada una de las siguientes proposiciones en correspondencia con las características que debe seguir un identificador: a) _____ Podrán empezar con un número. y simultáneamente verifica la sintaxis y muestra mensajes de error o de advertencia.

presionando la combinación de teclas _____________.3 Diga cuáles de los identificadores siguientes pueden son válidos y cuáles no.5 Los tipos de datos se clasifican en _______ y _____________. a) b) 1. 16 .7 Dadas las variables A.4 Son completamente iguales los identificadores “EJERCICIOS” y “ejercicios”. C y D diga qué valor queda almacenado en cada una de ellas al finalizar estas líneas: A=2 B = Sqr(A) C = 10 A=B+C B = A div 2 C=A+B D=A 1. Para los no válidos (si es que existe alguno)explique por qué no puede serlo: a) Programa_1 b) Begin c) @rea d) 1_Programa e) triángulo f) MOD g) CUADRADO 1. 1.8 Linealice las siguientes expresiones matemáticas en expresiones Pascal. B.1.9 En BP7 la compilación se realiza cuando se ejecuta el mismo. 1.6 Para declarar variables se utiliza la palabra reservada _______ y para definir una constante _______. 1.

Niklaus Wirth. No se puede dejar espacios intermedios. en un argumentos de una función determinada.Error lógico.1 a) Lenguaje de Programación. No puede comenzar con número. Declaraciones y Sentencias.8 a) x:= (a + b + c) / (a + b / c). Falso. Verdadero.5 Simples. ____ Cuando se hace referencias a variables no declaradas. c) No válido.7 A = 14.10 3.Error de ejecución. 1. 2. C = 21 y D = 14. 1. La compilación del programa no emite ningún mensaje de error pero no ofrece el resultado esperado. Begin es una palabra reservada de Pascal. Falso.6 Var. Const.. No pueden existir dos identificadores con nombres iguales. g) Válido. 1. ?. ____ Error más difícil de distinguir de todos. 1. + F9.1. ¿. b) Blaise Pascal. b) No válido. 1.10 Enlace la columna A con la B según corresponda: Columna A Columna B ____ Error que se produce cuando utilizas tipos de datos incompatibles 1. Mod es una palabra reservada de Pascal. 1. $.9 Ctrl. 1. 2. No se puede utilizar símbolos como @. No se pueden tildar en ningún momento.Error sintáctico o gramatical. 1. d) No válido. !. una división por 0.13 Respuestas de ejercicios de autoevaluación.2 a) b) c) d) e) f) 1. En ningún momento pueden tener tilde. 17 .c)) / (a / (b + c)). 3. etc.. 1. Verdadero. c) Cabecera. f) No válido. b) x:= a + b + c / d + (a / (b . Variables o constantes incorrectamente declaradas. e) No válido. 1. uso incorrecto de los puntos y comas. B = 7.3 a) Válido.4 Si. Estructurados. Falso. cuando se intenta cambiar el valor a una constante. Falso. entre otros. 1.. Nunca puede un identificador comenzar con número.

17 Los siguientes incisos deberán resolverse utilizando las reglas de la aritmética. g) Variable que determina si un número es par o no. c) Constante que muestre “El resultado final es: ”.12 Diga cuáles de los identificadores siguientes son válidos y cuáles no.1.13 A partir de la definición de variable cite ejemplos donde tengas que hacer uso de las mismas. d) Para almacenar la suma de dos números enteros.15 Declare las variables que serán necesarias para resolver las siguientes situaciones: a) Para almacenar el nombre de una persona.16 Definas las siguientes constantes: a) Representa el valor de . b y c? d) a 8 c) a 8 b 2 b 7 c 18 c 5 d 18 d 8 a a+b a a+b–c+d b a-b b a+b–c+d c a*b c a+b–c+d d a mod b d a+b–c+d a a-b a a+b–c+d b Sqr(a) + b b a+b–c+d c a-b c a+b–c+d d a + Sqr(b) d a+b–c+d ¿Qué valores quedan almacenados en las ¿Qué valores quedan almacenados en las variables a. 1. c y d? variables a. b) Diez es el valor máximo de una lista. 1. 1. y si un trabajador es del PCC o no. c) Para almacenar un número real. e) Variable que determina si un estudiante pertenece a la UJC o no. b c y d? 18 . 1. f) Promediar las estaturas de dos estudiantes. a) a = 10 b) a = 1 b = 20 b=2 c = 10 c=3 a = a + 15 a=a+2 b = b + 12 b=a+2+b c=a*c c=a+2+c ¿Qué valores quedan en las variables a.14 A partir de la definición de constante cite ejemplos donde tengas que hacer uso de estas para ganar en eficiencia y claridad en tu prorama. Para los no válidos (si es que existe alguno) proponga un válido sin que pierda su significado: Área IMAGENES Suma_$ Calle Martí Calculo Diccionario Triangulos= VALIDARDATOS EntrarNotas A_TrianG ProyectoSOFT Contar C A Array Juego 1. b. 1. la edad y el sexo de una persona. b y c? a=b/2 b = b div 2 c=c/2 ¿Qué valores quedan en las variables a.11 Elabore la estructura de un programa con nombre Calculadora. b) Almacenar el nombre. 1.16 Ejercicios propuestos.

22 Diga qué valor queda en A después de leer las siguientes expresiones por separadas. 1.18 Linealice las siguientes expresiones (no se olvide que linealizar significa escribir una expresión algebraica en una sola línea). A) D) B) E) C) F) 1.20 Diga el orden de precedencia de los operadores aritmético. En cada uno de los siguientes incisos escribir el orden en que el computador realizaría las operaciones.21 ¿Cuál es el operador de asignación que utiliza Pascal? 1. b) A:= 10 mod 2.19 Complete la siguiente tabla: Operadores Aritméticos Operador Descripción Adición Multiplicación / div Resto de una división 1. 1.1. a) A:= 12 + 40 div 2. c) A:= 100 – 60 / (25 + 5) * 40.23 Complete la tabla siguiente: Operadores de Relación Operador Descripción Igual a > Menor que Mayor o igual que <= Distinto de 19 .

21) Función que devuelve el tamaño de una cadena. 1. etc. 22) Operador aritmético utilizado para dividir número enteros y devuelve un entero. 9) Operador lógico que es verdadero cuando existe un solo valor verdadero entre varias expresiones. 2) Palabra reservada para definir una constante. 16) Programa que traduce todo un programa a lenguaje de máquina.1. 19) Función que devuelve una subcadena de una cadena dada. 7) Palabra reservada para indicar el fin de un bloque.24 Complete el siguiente crucigrama: 1) Operador lógico que la expresión es verdadera cuando todas las proposiciones son verdaderas. Número de carné de identidad distinto de otro. 6) Operador aritmético que devuelve el resto de una división. el nombre de una función o de un procedimiento. 12) Función que determina si un número es impar. una constante. 5) Función que redondea el valor de x al entero más próximo. Representar un número negativo. 14) (Horizontal) Función que haya el cuadrado de un número. 18) (Horizontal) Palabra reservada para declarar variables. (Vertical) Función que haya la raíz cuadrada de un número. 8) Función que localiza una determinada cadena dentro de otra. 10) Tipo de dato que almacena una cadena de caracteres. (Vertical) Identificador al que le asignamos un valor que puede ser modificado a lo largo de todo el programa. 20 . 17) Secuencia de instrucciones que puede ejecutar una computadora. al nombre del programa. 23) Se utiliza para referirnos a una variable.25 a) b) c) d) e) f) g) Escriba en una expresión pascal las siguientes expresiones: Un número menor o igual a otro número. 15) Identificador al que le asignamos un valor que no puede ser modificado a lo largo de todo el programa. Sinónimo de software. 3) Palabra reservada para indicar el inicio de un bloque. Representar un número impar. 13) Traductor incluido en un lenguaje de programación. 20) Tipo de dato para almacenar valores verdaderos o falsos. 4) Operador lógico que expresa negación. y simultáneamente verifica la sintaxis. Representar un número positivo. Representar un número par. Un texto cualquiera es igual al texto “FIDEL”. 11) Tipo de dato que almacena números enteros. el cual convierte el código fuente en enunciados del lenguaje de máquina.

26 a) b) c) d) Escriba en una expresión pascal las siguientes expresiones: Un número mayor que 10 y menor o igual que 50. e) Un número distinto de 0 y que sea menor o igual que 5. Un número N mayor que el sucesor de un número K o menor que el sucesor del propio número K. Número comprendido entre 100 y 200. Respuesta del crucigrama 21 . Un texto distinto de “NO” e igual a “SI”.1.

2. queridos. ◘ El mejor profeta del futuro es el pasado. • Utilizar instrucciones simples de entrada. doble y múltiples. • Generar números aleatorios. 2.2 Instrucciones de escritura. María Esther Erosa. Charles Dickens. 2.6 Generación de números aleatorios. 2.11 Respuestas de ejercicios de autoevaluación.8 Rastreo de programas.5 Solución de problemas condicionales.Capítulo 2 _____________________________________________________________ Estructuras básicas de control _____________________________________________________________ Objetivos • Escribir programas simples de computación en Pascal. • Rastrear programas. 2. lectura y asignación. 2. 2. ◘ La sabiduría es esa cualidad que nos refrena de meternos en situaciones donde es necesario actuar con sabiduría. While y Repeat. For. 2. 2.12 Ejercicios propuestos.9 Resumen. • Utilizar las estructuras iterativas For. Simple. Pensamientos ◘ Dominad vuestros apetitos. Lord Byron.4 Estructura de control condicional.7 Solución de problemas iterativos. 2. salida y asignación.10 Ejercicios de autoevaluación. 2. While y Repeat. Doug Larson. • Codificar enunciados donde se utilice los diferentes tipos de toma de decisiones. Sinopsis 2. ◘ Muchísimas personas sobrestiman lo que no son y subestiman lo que son. La forma como se hace el viaje es lo que le da sentido a la vida.3 Solución de problemas lineales. 2. 22 .1 Estructura de control lineal. y habréis conquistado la naturaleza humana. ◘ La meta en si no es lo importante. Malcom Forbes.6 Estructura de control iterativa.

Para la creación de un programa es necesario conocer cómo se introducen los datos. entre otros aspectos de vital importancia en el mundo de la programación. 23 . Pero también conocemos de estudios anteriores que existen diferentes estructuras de control (Lineal. Las cadenas de caracteres deben ir encerradas entre apóstrofo (‘’). la estructura de un programa general.2. Ejemplo del uso de WRITE: WRITE( ‘Hola Mundo. WRITE( ‘Mi nota en la prueba de LTP fue: ’ . . La filosofía de trabajo de esta es igual a la anterior y con la práctica vas a entender cuando es más factible utilizar una cuando otra.Instrucciones de lectura. los tipos de datos. La estructura de control lineal está compuesta solamente por: . Estos datos (que son datos de salida) pueden ser cadenas de caracteres. la forma de escribir las expresiones. Esto hace que la próxima instrucción que ejecute lo haga en la línea siguiente ya sea de escritura o de lectura. En esta sección se abordarán las de instrucciones de escritura.1 Estructura de control lineal.Se imprime en pantalla suponiendo que NOTA sea igual a 100: Mi nota en la prueba de LTP fue: 100 La instrucción WRITELN es muy parecida a WRITE. lectura y asignación. NOTA). números o variables. Es de gran importancia el conocimiento de cómo trabaja esta estructura ya que las demás estructuras también trabajan con esta. la diferencia es que escribe un indicador de fin de línea después del último dato. En este sección estudiarás en que consiste la estructura de control lineal y en la siguiente sección a cómo utilizarlas. 2. . cómo se operan estos y cómo se imprimen los resultados.Instrucciones de escritura.’). Confeccionaremos programas sencillos en el lenguaje de programación BP7 y se mostrarán algunas aplicaciones de ejemplos que les servirán para profundizar en cuanto a la estética del programa a elaborar.Instrucciones de asignación. En el capítulo anterior se dieron a conocer los elementos esenciales en Pascal como son: los identificadores.2 Instrucciones de escritura. Condicional y Cíclica). Instrucciones de escrituras (WRITE y WRITELN): La instrucción WRITE realiza una impresión de datos en la pantalla. Cuando se desea imprimir datos que son más de uno deben ir separados por comas. lectura y asignación.Se imprime en pantalla: Hola Mundo. . .

En ocasiones deseamos mostrar un número real de la manera que solo aparezcan dos lugares después de la coma. En la figura puedes apreciar cómo queda elaborado nuestro primer programa.” Write(‘Hola Mundo.'). En el programa aparece la instrucción Readln que se utiliza para que realice una espera. Algoritmo Hola Mundo Inicio BEGIN Mostrar “Hola Mundo. Este programa consiste en mostrar en pantalla el texto Hola Mundo. después de la coma la variable. BegIn BEGIN Writeln('Linea 1.2 se muestran dos ejemplos de programas para que puedas observar la diferencia que existe entre “Write” y “Writeln”. Ejemplo: Write( ‘El promedio de las notas del grupo es de: ’. END. recuerde que puedes ver el resultado de lo escrito compilando en programa presionando Ctrl. El :2 representa la cantidad de lugares decimales después del punto. + F9. Instrucciones de lectura (READ y READLN): La instrucción read lee un dato de entrada y luego se lo asigna a una variable. b. donde PROM es una variable real que almacena el valor 4. Las variables de tipo booleanas no pueden incluirse en la lista de variables de entrada. El :5 representa el ancho de separación entre el texto y la variable.').2 Diferencia entre Write y Writeln. Fin Readln.’). Writeln('Linea 2. Esto solo es posible si la variable es real. Aquí se muestra el texto. Si es más de un variable de entrada. Para ganar en organización siempre que vallas a realizar un programa cree una carpeta con el nombre del programa que vas a elaborar con el objetivo de guardar en esta nuestro programa. Write('Linea 1. estas van separadas por comas. PROM:5:2).c). END. simula una entrada de datos. PROGRAM Uso_Writeln. Write('Linea 2. PROGRAM Uso_Write. Para esto analice el siguiente ejemplo. Ejemplo de una sentencia read: read( a.1. Readln.1 Programa y Algoritmo Hola Mundo. Primer programa Nuestro primer programa es conocido Hola Mundo. Figura 2. Ejemplo: read (variable).'). 24 . END.89367929. PROGRAM Hola_Mundo. En figura 2. Readln. Figura 2.'). Figura 2.

Figura 2. Mostrar “Entre otro nombre: ” Write(‘Entre otro nombre: ‘). Mens. END. La diferencia está en que la instrucción Readln comienza leyendo los datos en una línea después. Fin Readln. Fin Readln.3 aparece un ejemplo de programa y su algoritmo que solicita al usuario su nombre y luego le da la bienvenida a Pascal. le pide al usuario que entre dos nombre y muestra un mensaje donde concatena cadenas. 1) Confeccione un programa que pida al usuario dos números y muestre su suma. Figura 2. Var Nom1. Solución 1: Algoritmo Suma PROGRAM Suma.S: Integer. Writeln(‘Bienvenido a Pascal ’. END. Nom2: Texto. Mostrar ”Bienvenido a Pascal “. END.Nom2). Inicio BEGIN Mostrar “Introduzca su nombre: ” Write(‘Introduzca su nombre: ’). 25 .Mens. Nom2 Writeln(Nom.N2. S). N2 Readln(N1. c respectivamente.3 Solución de problemas lineales.Esta sentencia hace que se lean 3 datos de entrada y sean asignados a las variables a. Leer Nom2 Readln(Nom2). Mostrar Nom1. Leer N1.4 Programa y algoritmo Concatenar. Leer Nombre Readln(Nombre). Var Nom1. Con el tiempo verás cuando utilizas Read y cuando Readln. S Writeln(‘La suma es: ’. Algoritmo Bienvenido PROGRAM Bienvenido.4). Const Mens = ‘ estudia con ’.3 Programa y algoritmo Bienvenido. S := N1 + N2 S:= N1 + N2. Leer Nom1 Readln(Nom1). También se mostrarán en algunas soluciones aspectos nuevos que te servirán para hacer un programa más eficiente. Var Nombre: Texto. En este epígrafe se mostrarán problemas resueltos mediante algoritmos y su paso al BP7. S: Entero. Var Nombre: String. 2. En el programa siguiente (Figura 2. En la Figura 2. Inicio BEGIN Mostrar “Entre dos números: ” Write(‘Entre dos números: ’). b.N2). Inicio BEGIN Mostrar “Entre un nombre: ” Write(‘Entre un nombre: ‘). Var N1. Algoritmo Concatenar PROGRAM Concatenar. N2. Mostrar “La suma es: ”. se usa para leer los datos de entrada y luego asignarlos a variables. Var N1. La instrucción Readln es parecida a la read.Nombre Fin Readln.Nombre). Nom2: String. Const Mens =” estudia con ”.

26 . el cuadrado del segundo y la raíz cuadrada del tercero. Todo el texto que se escriba entre llaves no será interpretado por el compilador. N2: Entero. Var N1. Para la utilización de estos "subprogramas" es necesaria su declaración.C. N2 Readln(N1. N1 + N2). La instrucción CLRSCR se utiliza para borrar la pantalla completa y sitúa el cursor en la esquina superior izquierda. esto reduce el código y no se necesita declarar ninguna variable para almacenar esta suma. A + D).N2). Solución PROGRAM Numero. Inicio BEGIN Mostrar “Entre dos números: ” Write(‘Entre dos números: ’). Readln(A. 2) Confeccione un programa que pida al usuario cuatro números y este muestre la suma del primero con el último. Mostrar “La suma es: ”. Var A. Las unidades son módulos independientes del programa que. END. { Limpia la pantalla } Write(‘Entre cuatro números: ’). siempre que se valla a utilizar esta instrucción debe ser declarada primeramente la unidad CRT.N2: Integer. aunque no son ejecutables por si mismos. Nota: Recuerde colocar un ponto y coma al final de cada línea. { Simula la entrada de datos } END. Primero. Nota: El algoritmo de este se los dejo a ustedes. Sqrt(C)). Uses CRT. Sqr(B)). De ahora en adelante siempre la usaremos para ganar en estética. En la segunda solución la suma de N1 y N2 se realiza en el momento en que se muestra. Las Llave “{” y “}” le indica al compilador que está en presencia de un comentario. N1 + N2 Writeln(‘La suma es: ’. En este programa aparecen aspectos que nunca han visto.B. BEGIN CLRSCR. Fin Readln. declara y habilita para su uso a la unidad CRT. esto se utiliza para ganar en claridad en cuanto al significado de cada línea de código. B. la línea Uses CRT. {Muestro el cuadrado de B } Writeln(‘Raíz cuadrada del tercero: ’.Otra forma de resolver este problema: Algoritmo Suma PROGRAM Suma. {Raíz cuadrada de C} Readln. pueden ser utilizados por el programa principal sin necesidad de reescribir el código que contienen. Var N1.{Muestro la suma de A y D} Writeln(‘Cuadrado de segundo: ’. Leer N1. C. La palabra reservada USES cumple el propósito de declarar las unidades. D). Explicación: En la primera solución se almacena la suma de los números N1 y N2 en la variable S para posteriormente mostrarla.D : Integer. { Almacena cuatro números } Writeln(‘Suma del primero y el último: ’.

{Calculamos el área} Writeln(‘El área de este rectángulo es: ’.’). area:=lado1* lado2. VAR lado1. Inicio Leer radio. Lado2. { Limpiamos la pantalla } {Este programa nos va a servir para calcular el área de un rectángulo} {Entran los valores necesarios} Writeln(‘Para calcular el Área de un Rectángulo. Algoritmo Área y Longitud de una Circunferencia Var radio.14. longitud. 4) Escribir un programa que calcule la longitud y el área de una circunferencia. USES CRT. Write(‘Entre el valor del lado1: ’). Readln(lado1). Area : Enteros. Inicio Leer Lado1. Area = 2* PI * radio Longitud = PI * radio * radio Mostrar Area. area). Solución: Para calcular el área de un rectángulo tenemos que conocer su fórmula: Área del rectángulo = lado1 * lado2 Algoritmo Área del rectángulo Var Lado1.Lado2 Area = Lado1 * Lado2 Mostrar Area Fin PROGRAM Area_Rectangulo. longitud Fin 27 . Readln(lado2). Solución: Para calcular la longitud de la circunferencia tenemos que: longitud de la circunferencia = 2 * PI * radio Para calcular el área de la circunferencia tenemos que: área de la circunferencia = PI * radio2 Sabemos que PI es una constante de valor 3. {Lo mostramos en pantalla} Readln. END. area: Real.3) Escribir un programa en Pascal que calcule el área de un rectángulo. Const PI = 3.14 por lo tanto solo necesitamos el valor del radio para resolver este problema.lado2.area: INTEGER. BEGIN ClrScr. Write(‘Entre el valor del lado2: ’).

Write(‘Entre el valor del radio: ’). WRITELN ('En ‘. Solución: . longitud:5:2). . Var horas. minutos y segundos que hay en N segundos.14. Write(‘Entre la cantidad de segundos: ’). END.' hora con '. horas:= n div 3600.’). segundos.minutos.} Writeln(‘Para calcular el número de horas.segundos. Readln(radio). 28 .1 hora tiene 3600 segundos. minutos.'). area:=PI*SQR(radio). minutos y segundos.' minutos y ’.area:REAL. longitud:=2*PI*radio. por lo tanto. minutos:= (n mod 3600) div 60. BEGIN ClrScr.’ segundos hay: '). segundos:= (n mod 3600) – minutos * 60.PROGRAM Area_y_Long_Circunf. por lo tanto. BEGIN ClrScr.n. Const PI = 3. USES CRT.’). Nota: El algoritmo se los dejo para que lo realicen. WRITE (horas. minutos y segundos que hay en N segundos. 5) Escribir un programa en Pascal que calcule el número de horas.1 minuto tiene 60 segundo. Readln(n). Writeln ('ÁREA DE LA CIRCUNFERENCIA: '. { Limpiamos la pantalla } {Calcula el número de horas. Readln. END.' segundos. { Limpiamos la pantalla } {Este programa nos calcula el área y la longitud de una circunferencia} {Entra el valor necesario} Writeln(‘Para calcular el área y la longitud de una circunferencia. VAR radio. PROGRAM Hora_Minutos. area:5:2).longitud. si dividimos la cantidad de segundos entre 3600 tendremos la cantidad de horas. Readln. si dividimos la cantidad de segundos entre 60 tendremos la cantidad de minutos. n: INTEGER. {Se muestran los resultados} Writeln ('LONGITUD DE LA CIRCUNFERENCIA: '. USES CRT.

En caso que se entre un 8 el programa imprime en la pantalla: El 8 es positivo.Programa Terminado.7.. 5).. Fin_Si AcciónN. Pascal Pseudocódigo Si Condición Entonces If Condición Then Acción1 begin Acción2 Acción1. end. Las sentencias compuestas se forman agrupando varias simples entre begin y end. que expresa bastante bien lo que podemos hacer con ella. Después de la palabra Then no se pone punto y coma. La primera construcción que trataremos es la estructura selectiva simple (Figura 2. Ahora pruebe usted con un número negativo y responda qué resultado imprime en pantalla y por qué. o sea. Aquí se lee un número y a continuación se pregunta si es mayor que cero. esto se resuelve mediante las estructuras de control condicional. La orden que está después del Then se ejecutará si y solo si la condición planteada entre el If y el Then es “Verdadera”. Esto se debe a que las "sentencias u órdenes" pueden ser simples o una compuestas.Programa Terminado. Figura 2. Ejemplo: Observe el programa de la figura 2.6). ya que la expresión continúa y este se coloca al final de la expresión.2... Condicional Simple: Existen tres tipos (Simples. se deben escribir entre las palabras reservadas begin y end. En diversas ocasiones tenemos que comparar datos para poder controlar nuestro programa. 29 . Pero en caso que se entre un 0 el programa imprime en pantalla: .5 Estructura de condicional simple.6 Estructura de condicional simple compuesta por varias órdenes verdaderas. En caso de que se deseen poner más de una orden después del Then..4 Estructura de control condicional. En este tema vamos a ver cómo podemos evaluar condiciones desde Pascal. AcciónN Acción2. Pascal If Condición Then Acción verdadera... Simple.(Figura 2. Pseudocódigo Si Condición Entonces Acción verdadera Fin_Si Figura 2. si se cumple lo que se pregunta. Dobles y Múltiples). doble y múltiples.. Su Cuadrado es: 64 .

Var num: Integer. Figura 2.sqr(num)).’). Acción_Verd N Acción_Verd 2. if num>0 then begin writeln(‘El ‘. End.8). más complejo y a la vez mucho menos eficiente.. end. En caso que se entre un 5 la expresión se evalúa como TRUE y el programa imprime en la pantalla: El 5 es positivo. writeln(‘Su Cuadrado es: ’. En esta tipo de estructura si la condición planteada no es verdadera no se ejecuta la o las acciones verdaderas y el programa continúa con las demás acciones....Programa Terminado.8 Estructura condicional doble.num.Programa Terminado. Pascal Pseudocódigo Si Condición Entonces If Condición Then Acción_Verd 1 begin Acción_Verd 2 Acción_Verd 1..Program Positivo. Condicional Doble: En la construcción de una estructura condicional doble (Figura 2. Acción_Falsa N. 30 . Con la simple es posible hacerlo. Su Cuadrado es: 25 . Ejemplo: Observe el programa de la figura 2. Figura 2. Aquí se lee un número y a continuación se pregunta si es mayor que cero. writeln(‘. pero se vuelve un programa muy largo.. Acción_Falsa 1 end Acción_Falsa 2 Else Acción_Falsa N begin Fin_Si Acción_Falsa 1. Acción_Falsa 2. podemos ver que si se cumple la condición se ejecutan un grupo acciones y si no las otro grupo.7 Ejemplo del uso de la estructura condicional simple.’) Readln.9..’ es positivo. Sino Acción_Verd N.. Begin readln(num). end. La estructura selectiva simple es muy fácil de usar y muy común pero en ocasiones tenemos necesidad de decirle al programa para si no se cumple una condición que nos realice una determinada tarea y si se cumple nos haga otra.

.then ... end.. writeln(‘Su Cuadrado es: ’.9 Ejemplo del uso de la estructura condicional doble. Ahora pruebe usted con el número cero y responda qué resultado imprime en pantalla y diga si este programa es completamente correcto.10 imprime “Excelente” para cuando la nota de un estudiante dado es 5.. Var num: Integer. Fíjense que en el programa no se coloca el punto y coma hasta que se termina la expresión. end else begin writeln(‘El ‘.num.11 aparece un ejemplo que resuelve el mismo problema de la figura 2.. debe ir encerrado entre begin y end. Then . of): Hay otro tipo de estructura múltiple llamada Case .12. else) dentro de las estructuras (If . writeln(‘. Figura 2. Program Positivo_Negativo.’ es negativo’). Condicional Múltiple: En determinados momentos una sola condición no permite al programador satisfacer sus necesidades.num*(-1)). Estructura (Case ..... “Suspenso” para cuando sea 2 y “Fuera de Rango” para cualquier valor que sea distinto a esto valores mencionados. colocando estructuras (If . es posible anidar las estructuras condicionales. writeln(‘Su Inverso es: ’.. Aquí se puede observar un programa más simple que el anterior... “Bien” para cuando sea 3.. Para estos casos.’) Readln.. of.sqr(num)). if num>0 then begin writeln(‘El ‘. End. En la figura 2. Su Inverso es: 9 .En caso que se entre un -9 la expresión se evalúa como FALSE y el programa imprime en pantalla: El -9 es negativo. Por ejemplo el programa de la figura 2..10 lo que se hace utilizando esta nueva estructura. Begin readln(num). 31 .. else).. Si se desea dar más de una orden para un valor verdadero. como aparece en la figura 2..’ es positivo’).Programa Terminado. pero tenga en cuenta que esta estructura se debe utilizar solo en caso necesarios ya que trabaja solo con valores enteros o lógicos. en BP7 al igual que mochos LP. “Muy Bien” para cuando sea 4.num.Programa Terminado.

Inicio Var Nota: Integer. End. Var Nota: Entero. Leer Nota Begin Si Nota = 5 Entonces Readln(Nota). 5: Mostrar “Excelente. Figura 2.. end.’).. Uses CRT.’).” If Nota = 5 Then Sino Nota = 4 Entonces Writeln(‘Excelente.” Case Nota of 4: Mostrar “Muy Bien. Mostrar “Excelente.Pascal Pseudocódigo Algoritmo Calificación 1 Program Calificación_1.” Else if Nota = 4 Then Sino Nota = 3 Entonces Writeln(‘Muy Bien.12 Estructura Case que ejecuta varias órdenes si la condición se evalúa como verdadera..11 Ejemplo del uso de la estructura condicional múltiple utilizando Case . Caso A of 3: begin Acción1.” 5: Writeln(‘Excelente.” 4: Writeln(‘Muy Bien. Acción2.” Else if Nota = 2 Then Sino Writeln(‘Suspenso.” Else Fin_Si Writeln(‘Fuera de Rango. Inicio Var Nota: Integer. Uses CRT.’). AcciónN.. Readln.. 32 .” 3: Writeln(‘Bien’). Figura 2. Sino 2: Writeln(‘Suspenso.’) Mostrar “Muy Bien.THEN . of.” Else Fin_Caso Writeln(‘Fuera de Rango. End.” Else if Nota = 3 Then Sino Nota = 2 Entonces Writeln(‘Bien’) Mostrar “Suspenso. Leer Nota Begin Caso Nota Readln(Nota). Mostrar “Fuera de Rango. 3: Mostrar “Bien.’).’). Figura 2. Fin end. Var Nota: Entero.10 Ejemplo del uso de la estructura condicional múltiple utilizando IF . Fin Readln.’) Mostrar “Bien. 2: Mostrar “Suspenso.’) Mostrar “Fuera de Rango. en este caso cuando A sea igual 3.ELSE. Pascal Pseudocódigo Algoritmo Calificación 2 Program Calificación_2.

End. y 140 lb. { Limpiamos la pantalla } {Clasifica un número en Par o Impar} Write(‘Para clasificar un número en ‘).” Mostrar “Número Par. Uses CRT. División .’).’) Else Writeln(‘Número IMPAR. Si esto es verdadero entonces Num es Par y si no es Impar.’). llegamos a la conclusión que PAR = Num mod 2 = 0. Write(‘Entre un número: ’).57 Kg.Escribir un programa que determine si un número introducido es par o es impar.5Kg Hasta 145 lb. Var Num: Integer.” Fin_Si Sino Fin Mostrar “Número Impar. Readln. se desea precisar si el atleta está en la división de los 57.2. Par:= Num mod 2 = 0. Leer Num Inicio Si Num mod 2 = 0 Then Leer Num Mostrar “Número Par. Var Num: Integer. 60 ó 63. Writeln(‘Par o Impar. División – 63. 2. Solución: Conociendo que todo número par es múltiplo de 2. 1.’) Else Writeln(‘Número IMPAR.5 Solución de problemas condicionales. If Num mod 2 = 0 Then Writeln(‘Número PAR. Algoritmo Par_Impar2 Algoritmo Par_Impar1 Var Var Num: Entero. Program Par_Impar2. End.’).60 Kg. Hasta 137 lb. If Par = True Then Writeln(‘Número PAR. Readln(Num). { Limpiamos la pantalla } {Clasifica un número en Par o Impar} Write(‘Para clasificar un número en ‘). Readln. Num: Entero. se sabe que oscila entre 124 lb. Inicio Par: Boolean. Uses CRT. Par: Boolean.” Par:= Num mod 2 = 0 Sino Si Par = True Then Mostrar “Número Impar.’). Nota: División . Begin ClrScr. Writeln(‘Par o Impar. Se conoce el peso en libras de un atleta de boxeo. Begin ClrScr. 33 . Write(‘Entre un número: ’). Readln(Num).Elabore el programa que resuelva el siguiente problema.. Desde 124 hasta 129 lb.” Fin_Si Fin Program Par_Impar1..5 Kg.

end. end Else If Peso <= 137 Then Begin TextColor(2). Writeln(‘DIVISIÓN 60 KG. end Else If Peso <= 140 Then Begin TextColor(3).13 aparece las constantes definidas en BP7 para los colores. Readln(Peso). En la figura 2. Writeln(‘DIVISIÓN 57 KG.’). Para hacer uso de esta instrucción se debe llamar primer a la unidad CRT. Var Peso: Real. Uses CRT. En el programa se encontraron con la instrucción TextColor. esta se usa para seleccionar el color del texto en la pantalla. Begin ClrScr.5 KG.’). { Limpiamos la pantalla } {División de un boxeador} Write(‘Para clasificar al boxeador ‘).Program Boxeadores1. Readln. End. Constante Valor Color Black Blue Green Cyan Red Magenta Brown Light Gray 0 1 2 3 4 5 6 7 Negro Azul Verde Cyan Rojo Magenta Marr n Gris claro Constante Dark gray Light Blue Light Green Light Cyan Light Red Light Magenta Yellow White Valor Color 8 9 10 11 12 13 14 15 Gris oscuro Azul claro Verde claro Cyan claro Rojo claro Magenta claro Amarillo Blanco Figura 2. Writeln(‘DIVISIÓN 63. Writeln(‘NO PUEDE BOXEAR’).13 Constantes de colores definidas en BP7. end Else Begin TextColor(60). If (Peso >= 124) and (Peso <= 129) Then Begin TextColor(1). Write(‘Entre su peso en libras: ’).’). 34 .

').95:Writeln('Muy bien.Bien 90. la suma de dos lados tiene que ser mayor que el tercero.'). Write('Entre su nota: '). Uses CRT.100:Writeln('Excelente.100----..Suspenso 60.. Readln(N).75:Writeln('Regular. Writeln(‘Nota no Válida.Regular 76.'). 3. Case N of 0. else TextColor(20). program Clasificar_Nota. Writeln('Suspenso.Conociendo la longitud de tres segmentos de rectas. determinar si con ellos se puede formar un triángulo.75------...Clasifique la nota final de matemática de un estudiante en cuanto a: 0.').89:Writeln('Bien... 90.89------.59 -------. 96. 4. Solución: Para dar respuesta a este problema se debe conocer la desigualdad triangular que plantea (entre otras palabras) que para poder formar un triángulo.95------.. 76. Var N: Integer.').. Nota: Mediante la instrucción TextBackGround selecciona el color del fondo de la pantalla. 35 . Readln.. {Clasifica la nota de un estudiante} Writeln(‘Para clasificar su nota en matemática‘).59: begin Textcolor(Red). Begin ClrScr. 60.'). end.Muy bien 96.Nota: Pruebe con valores numéricos mayores de 16 para que vea su función.Excelente Cualquier otra nota será una nota no válida. end... end. Los valores que puede utilizar son del 0 al 7. también es posible utilizar las constantes predefinidas para los colores..

Sino Begin Mostrar “No se puede formar. Writeln. Uses CRT. Para convertir de Grados a Radianes: VR=(Π*VG)/180 Para convertir de Radianes a Grados: VG=(180*VR)/Π 36 . L3 : Entero. Readln(L3)..’. Writeln(‘formar un triángulo. Write('Entre el valor del Lado3: '). L2 . L3: Integer. End. Readln(L2). y luego pida el valor necesario.” ClrScr. Inicio Leer L1. Write('Entre el valor del Lado2: ').‘). Program Formar_Triang. Write('Entre el valor del Lado1: ').Algoritmo Formar un triángulo Var L1. L2. L2.” No_Puede =‘No se puede formar un Triángulo. Fin_si {Para saber si se puede formar un Fin triángulo o no teniendo tres segmentos} Write(‘Para saber si se puede ‘). Readln(L1). Const 5. Readln. Mostrar “Se puede formar.Escriba un programa que pregunte al usuario en qué sentido se desea realizar la conversión de Radianes a Grados o de Grados a Radianes.L3 Si ((L1 + L2)> L3) y ((L2 + L3)> L1) y ((L1 + L3)> L2) Entonces Se_Puede = ‘Se puede formar un Triángulo.’. Var L1. If ((L1+L2)>L3) and ((L2+L3)>L1) and ((L1+L3)>L2) Then Writeln(Se_Puede) Else Writeln(No_Puede).

180 * VR / PI:5:2).Program Convertir. para convertir de Grados a Radianes. 37 . PI * VG / 180:5:2). {Espacio} If C = 1 Then begin Write(‘Entre el valor del Grado: ’). donde se tenga que hacer uso de dados. según la conversión: ’). Este elemento se ve mucho en juegos. Writeln(‘Entre 0. El valor de MAX debe ser un entero no mayor a 32767. Existe en la vida cotidiana un elemento llamado “suerte”. end Else Writeln(‘Conversión no válida. lanzar una moneda. Readln.‘). Const PI = 3.Readln(C). Un programa de juegos de dados. La función Random genera un número entero entre 0 y MAX –1. Writeln. a menudo son distintos de lo que requiere para una aplicación específica.’). Begin ClrScr. que simule la tirada de un dado de seis caras. El rango de valores producidos directamente por Random. que a todo tipo de persona le gustaría tener. VG: Real. C: Integer.’). para convertir de Radianes a Grados. Writeln(‘Valor en Grados: ’. Uses CRT. En un programa Pascal este elemento puede ser introducido mediante una función llamada RANDOM. escoger un carta al azar. Por ejemplo. Write(‘Entre 1 ó 2. end Else If C = 0 Then begin Write(‘Entre los Radianes: ’).’). End. que es el valor máximo de un entero.6 Generación de números aleatorios. Considere el siguiente enunciado: A:= Random(MAX). Write(‘Programa para convertir de Radianes a Grados o de Grados a Radianes. etcétera.Readln(VR).14. un programa que simule lanzar una moneda al aire pudiera requerir solo de 0 para “caras” y 1 para “escudo”. Writeln(‘Valor en Radianes: ’. Var VR. 2. entre muchas otras. requeriría de enteros aleatorios del rango de 1 a 6.Readln(VG). Writeln(‘Entre 1.

Este problema se resuelve mediante el procedimiento Randomize. Figura 2.Readln.Dado). Program Aleatorio. Randomize. Var Dado: Integer. Var Dado: Integer. Write(‘Presione Enter para lanzar otro dado. Uses CRT. Dado:= Random(6) + 1. Dado:= Random(6) + 1. simula la tirada de un dado dos veces.Dado). 38 . Writeln(‘Primer tiro: ’.’). End. Si nos limitamos a Random(6) solamente. Write(‘Presione Enter para lanzar un dado. se generan dos números aleatorios de 1 a 6 en líneas diferentes mediante (Dado:= Random(6) + 1. Readln. Siempre que se utilice la función Random es necesario colocar antes el procedimiento Randomize.’). Pero cuando ejecutamos este programa varias veces nos percatamos que siempre genera los mismos números. Begin ClrScr.Readln.El programa de la figura 2. Readln.15 reparamos este problema generado en el programa anterior. En el programa “Aleatorio”. En la figura 2.).’). Write(‘Presione Enter para lanzar otro dado. Dado:= Random(6) + 1.14. Write(‘Presione Enter para lanzar un dado.’).14 Utilización de la función Random. Writeln(‘Segundo tiro: ’. Writeln(‘Segundo tiro: ’.Dado). End. Writeln(‘Primer tiro: ’.15 Utilización de la Randomize y la función Random. por lo que con Random(6)+1 garantizamos que el resultado general sea un número comprendido entre 1 y 6 que son los números reales de cada cara de un dado. Program Aleatorio. Uses CRT. Figura 2. se generará un número aleatorio de 0 a 5.Readln. Dado:= Random(6) + 1. y realmente esto no es lo que se quiere.Dado).Readln. Begin ClrScr.

Readln. BP7 cuenta con tres tipos de Bucles (estructuras iterativas). Inicio Inicio Inicio I := 0 I := 1 Para I:=1 a 5 hacer Repetir Mientras I<=5 hacer Mostrar ("*****") Mostrar ("*****") Mostrar ("*****") Fin_Para I:= I + 1 I:= I + 1 Fin Hasta I = 5 Fin_Mientras Fin Fin Figura 2. Son las estructuras de iteración.. Figura 2. Begin ClrScr. Uses CRT. Una iteración consiste en una repetición de un bloque de sentencias un número determinando de veces o hasta que se cumpla una condición. .. Writeln(‘* * * * *’). End. veremos en la Figura 2.For. se les ocurría pedirnos que listáramos una lista de números del uno al millón. 39 .7 Estructura de control iterativa. Básicamente este programa cumple con el objetivo. Writeln(‘* * * * *’). Antes de entrar en los detalles de la implementación en BP7.16 Dibujo de un cuadrado de 5 x 5. Var I:Entero. También imagínense lo que tardaríamos en escribirlo. ¿No perciben que algo anda mal? Aquí se repitió cinco veces la misma instrucción.17 cómo podemos realizar el programa dibujo en pseudocódigo utilizando una estructura iterativa de tres formas: Algoritmo Dibujo3 Algoritmo Dibujo2 Algoritmo Dibujo1 Var I:Entero. ¿Qué sucedería si nos pidieran una figura más grande? Tendríamos que agregar más líneas de código.2. Sin embargo tenemos un recurso para acudir en cuanto surjan estos problemas. Writeln(‘* * * * *’). el código sería inmenso. Nuestro objetivo es mostrar un cuadrado de 5 filas por 5 columnas trazado con cualquier carácter. Var I:Entero. For. Writeln(‘* * * * *’). En la figura 2. .While. Supongamos que nos piden que realicemos un dibujo sencillo que se despliegue en la pantalla. While y Repeat. De esta forma el código puede simplificarse notablemente. Pero. Y si en vez de una figura .17 Diferentes algoritmos para elaborar el programa Dibujo. Program Dibujo. Writeln(‘* * * * *’).Repeat. Estos son: . 16 se muestra la solución de este programa utilizando los elementos de programación que ya conocemos.

I). Ejemplo del bucle "For": Conteo ascendente Program For_Ascendente. Elementos comunes de los ciclos. Begin For I:=0 to 9 do begin Write(' '. . Uses CRT. Explicación del conteo ascendente: Aquí le asignamos a la variable “I” el valor 0 que va a ser el valor inicial del ciclo.Una prueba de condición que determina cuando debe concluir el ciclo. Acciones o acción a repetir. 2. Var I: Integer. Puede contar en forma ascendente (To) y en forma descendente (Downto) Figura 2. . Nota: 1.. Readln. Lo que está entre “begin” y “end.Si el cuerpo contiene varias líneas. end.Un punto de terminación. o bien. va a mostrar el valor de “I” en cada iteración o repetición del bucle. Readln. end.”. end. End. Begin For I:=9 downto 0 do begin Write(' '. La palabra to indica que “I” se va a aumenta de uno en uno hasta llegar al valor final que en este caso es 9.Nota: Todo lenguaje de programación cuenta con estructuras de control repetitivas. Toma dos parámetros: los valores inicial y final. Var I: Integer. For: Este es el bucle más usado. end. Todo bucle tiene: ..Un cuerpo.I). estos tienen elementos que les son comunes. Aunque existan tres tipos de bucles. End. 40 . Figura 2.El punto de terminación del ciclo puede ser la palabra clave end (en el caso de los ciclos For y While).Un punto de inicio. Ciclo For Ascendente Ciclo For Descendente For valor_inicial to valor_final do For valor_inicial Downto valor_final do begin begin Acciones o acción a repetir. Conteo descendente Program For_Descendente. . Until (en caso del Repeat).18 Estructura general del bucle For. deberá estar bloqueado con instrucciones Begin y End (con la excepción del ciclo Repeat).18. Uses CRT. que contiene la o las acciones que se quieren repetir.

End. Ejemplo del bucle While: Program Bucle_While.21(A) aparece el programa Dibujo resuelto de una manera más eficiente utilizando el bucle FOR. se van repetir las acciones que están entre las palabras “begin” y “end. Begin I:=0. While I < 10 do Begin Write(' '.21(B) aparece el programa Dibujo resuelto de una manera más eficiente utilizando el bucle While. While < condición > do begin Acciones o acción a repetir. Uses CRT. el ciclo continúa operando. Referente a la línea “I:= I + 1”. Este programa hace lo mismo que el programa “For_Ascendente”. En la figura 2. Var I: Integer. En la figura 2. I:= I + 1. Al comenzar el ciclo hay una condición que mientras esta sea verdadera. 41 . iniciamos la variable “I” con valor 0.19. Figura 2. Figura 2. lo que hace es aumentar la variable “I” de uno en uno en cada iteración del ciclo. lo que en este caso lo realizamos con un ciclo While.”. While: Este ciclo difiere del For en que contiene una condición de prueba que se verifica al inicio de cada iteración.I).Aquí no era necesario las palabras begin y end porque se utiliza una solo línea de código a repetir. end. En tanto la condición de prueba sea verdadera (True). ya que este no lo hace por si solo como el For. Nota: Si no haces este incremento en cada repetición del ciclo. Recuerden que los ciclos tienen que ser finitos y siempre hay que buscar la manera de que la condición del ciclo sea falsa para que termine de operar. Fíjense. este será infinito y tendrás un programa bloqueado y hay que tener cuidado con esto. Readln. Explicación del conteo descendente: Aquí le asignamos a la variable “I” el valor 9 que va a ser el valor inicial del bucle.19 Estructura del bucle While. end. La palabra Downto indica que “I” se va a decrementar de uno en uno hasta llegar al valor final que en este caso es 0.

Ejemplo del ciclo "Repeat" : program Ciclo_Repeat. Figura 2. end. Var I: Integer. begin I:=0.20 Estructura del bucle Repeat. Until < condición >. I:=I+1. esto hace que las acciones que están en el cuerpo del bucle se ejecutan al menos una vez. Figura 2. el cuerpo de este se va a ejecutar al menos una vez. la expresión condicional se verifica al final del ciclo. Uses CRT.20. Readln. Repeat Acción o acciones a repetir. Este programa hace lo mismo que el programa “For_Ascendente”. lo que en este caso lo realizamos con un ciclo Repeat.21(C) aparece el programa Dibujo resuelto de una manera más eficiente utilizando el bucle Repeat. Until I=10. iniciamos la variable “I” con valor 0. Este ciclo se lee así “Repite (Repeat) estas acciones hasta (Until) que la condición sea verdadera”. Repeat Write(' '.Bueno con lo aprendido hasta ahora. En la figura 2. usted está en condiciones de elaborar un programa que realice la misma operación que el programa “For_Descendente” pero utilizando el ciclo While. Fíjense. Bueno con lo aprendido hasta ahora del bucle Repeat.I). Repeat: Este ciclo es casi idéntico al While. 42 . la condición del ciclo está al final. La diferencia es que en este. lo que quiere decir esto que cuando utilizamos este ciclo. usted está en condiciones de elaborar un programa que realice la misma operación que el programa “For_Descendente” pero utilizando el bucle Repeat.

Solución: 43 .22 Ejemplo del uso de las funciones INC y DEC. al igual que otros lenguajes de programación. Inc(I. End. La función INC. y me refiero a la línea “I:= I + 1. End. Var I: Integer. Dec(I). o sea. La función DEC.10). Hasta ahora hemos utilizado el incremento de variables en un valor constante. Dec(I. -----. Uses CRT.. Readln. Los problemas se pueden resolver de muchas formas. Uses CRT. Var I: Integer.22 (B). Readln. A B Inc(I).Igual que I:= I + 1. Funciones Inc y Dec.21 Programa Dibujo resuelto mediante los tres tipos de bucles. End.10). Ver la figura 2. Uses CRT.Igual que I:= I-10. aquí se muestra un vía que puede resultar fácil de entender. 1. ♠ Prueba cada una de estas funciones en los programas anteriores para que veas que es más cómodo de trabajar utilizando estas funciones. Until I = 5. Var I: Integer. Decrementa de una variable dada en un número específico.Igual que I:= I-1.8 Solución de problemas iterativos. Repeat While I <=5 do Writeln ("*****"). cuenta con funciones que nos permite hacer esto de una manera más fácil. Ver la figura 2. Begin Begin I := 0. I:= I + 1. -----. Mostrar ("*****").22 (A).-----.”.A Program Dibujo1.Escribir un programa que visualice en pantalla los números pares entre 1 y 25. Figura 2. incrementa una variable dada en un número específico. I := 1. que la variable “I” se iba aumentar de uno en uno en cada iteración de ciclo. En cada problema se utiliza un bucle para que usted elabore su propio programa utilizando cualquiera de los otros estudiados en este epígrafe. -----. Readln. Begin For I:=1 To 5 do Writeln ("*****").Igual que I:= I+10. Program Dibujo2. begin I:= I + 1. B C Program Dibujo3. Pascal. end. Figura 2. 2.

AT Readln(Aprt). Inicio AT:= 0 Begin Para I:= 1 a 10 hacer Clrscr. Aprt.. Writeln(‘Aporte del grupo: ’.I. Fin end. Readln. Readln.Program Pares_M25.’: ’). End. num:=2.I. AT:= AT + Aprt. Leer Aprt For I:= 1 to 10 do AT:= AT + Aprt begin Fin_Para Write (‘Entre el aporte ’. Mostrar “Aporte del grupo: ”. 3. Mostrar num num:= 5. num:= num + 5 While num <= 100 do Fin_Mientras begin writeln (num). num:= num + 2. AT: Real. Uses crt. Inicio num:= 5 Begin Mientras num <= 100 hacer Clrscr. end. Fin Inc(num. Algoritmo Pares Menores que 25 Var num: entero.Escribir un programa en Pascal que visualice en pantalla los números múltiplos de 5 comprendidos entre 1 y 100. 44 . Var I: Integer. Var num:integer. end. AT: Real.. Repeat Writeln (num). Aprt. Program Mult_25.AT:0:2). Until num= 26. Begin clrscr.5). Solución: Algoritmo Multíplos 25. Var num: Entero. Var I: Entero.Escriba un programa que calcule el aporte total de las MTT de un grupo de 10 estudiantes. Readln. Var num:integer. Solución: Algoritmo Aporte MTT Program Aporte_MTT. Uses crt. end. Inicio num:=2 Repetir Mostrar num num:= num + 2 Hasta num = 26 Fin 2. Mostrar “Entre el aporte “.”: ” AT:= 0. Uses crt.

{El sumador comienza con 0} Prom:= Sum / N For I:=1 to N do Mostrar “El promedio es: ”.17 son números primos. Uses crt. Para I:=1 a N hacer Write(‘Programa para promediar las Mostrar “Entre la nota “. luego pedimos las N notas mediante un bucle y las vamos sumando. Prom:= Sum / N. Sum.4. Writeln ('¿Desea continuar: s/n?').’: ’). Leer Respuesta Repeat Hasta Respuesta =”n” Writeln.Escribir un programa que realice la pregunta ¿Desea continuar S/N? y que no deje de hacerla hasta que el usuario teclee N. 45 . I.I. N: Entero. Writeln(‘El promedio es: ’.11.Nota: Real. Solución: Algoritmo Salida Program Salida.‘). N: Integer. End. Agréguele la posibilidad de promediar las notas del grupo. Writeln.. “: ” notas de un estudiante.Confeccione un programa para leer las notas de un grupo de N estudiantes. 9 no es número primo. Algoritmo Promedio Program Promedio. Sum:= Sum + Nota. Ejemplo: 2. 5. End.7. Var Respuesta: String. Fin Readln (Respuesta).Nota: Real. Sum:= Sum + Nota Readln(N). Until Respuesta = 'n'. I. Leer Nota Write(‘Entre la cantidad de notas: ’). Sum. Readln.4.. al final dividimos la suma entre N para obtener el promedio. Var Respuesta: Texto. CRT. Var Prom. 6.Prom:0:2). Fin Readln(Nota). 9.Escribir un programa que detecte si un número es primo o no. Solución: Un número es primo si sólo es divisible por sí mismo y por la unidad (1).. {Espacio} Fin_Para Sum:=0. Solución: Aquí necesitamos conocer la cantidad de estudiantes y almacenar este valor en la variable N. porque es divisible por 1.13. Prom begin Write(‘Entre la nota ’. Inicio Repetir Begin Mostrar “¿Desea continuar: s/n?” Clrscr. 3. Leer N Begin Sum:=0 ClrScr.3. Inicio Mostrar “Entre la cantidad de notas:” I. Var Uses Prom.{Almacena la suma} end.

excepto el 2. 46 . Writeln.El algoritmo para resolver este problema está en dividir sucesivamente el número estudiado por 2. En la figura 2. I:=2. P: Boolean. hasta el propio número. El rastreo consiste en realizar un recorrido por el programa paso a paso e ir anotando la operación que realiza cada línea que se ejecuta. ‘ no es un número primo.’).’). End.. Los números primos son enteros mayores que 1 sin divisores enteros positivos.’) else Writeln(N. Program Primo. Uses crt. etc.4. 2. If (P=True) and (N<>1) Then Writeln(N. Begin Clrscr. Writeln ('¿Desea continuar: s/n?'). While (I < N) and (P=True) do begin If N mod I = 0 Then P:=False. Inc(I). exceptuando el 1 y ellos mismos. Write(Entre un número: ).3. Respuesta: String. Writeln(‘Para determinar si un número es primo o no. Esto se hace dando como datos valores reales. Repeat P:=True. Var I. Esta operación se realiza para comprobar si su programa está correctamente elaborado. ‘ es un número primo. Readln(N). en caso de que no de cómo se esperaba entonces se busca en qué línea está el error lógico. N:Integer. Until Respuesta = 'n'.23 aparece el rastreo del programa Aporte_MTT. claro que si se siguen los pasos lógicos para resolver un problema mediante un lenguaje de programación esto se debe realizar en cuanto se desarrolle el algoritmo. end. para ver si se tienen los resultados esperados.9 Rastreo de programas. Todos los primos son impares. En BP7 se puede hacer esto presionando la tecla F8 o en el menú RUN escoger la opción Step Over. Readln (Respuesta).

NoSound y Delay. El intervalo válido es desde 0 hasta 65535. Delay(5000). Sound y NoSound: A partir de las estructuras cíclicas conocidas y con las instrucciones Sound. Para detener el sonido es necesario ejecutar la instrucción NoSound.25 presenta un programa donde se pone a disposición de ustedes ejemplos de sonidos combinando estas instrucciones con estructuras cíclicas. AT I Mostrar AT 100. Uses crt. ya que conociendo con claridad que sucederá cuando se ejecuta cada una de la órdenes siempre se obtendrán los resultados esperados.23 Rastreo del programa Aporte_MTT.40 37. 47 .95 8 0 50.50 5 2. podemos crear sonidos para darle un ambiente a nuestro programa más agradable.50 4 5 35.90 6 3. Este tiempo se da en milisegundos.95 10 30 100. Figura 2. Readln.05 40. Writeln('Fin del retardo. la precisión del retardo depende de la precisión del reloj interno de la computadora.95 11 Figura 2. La figura 2. Begin Writeln('Retardo de aproximadamente 5 segundos'). Delay: Detiene la ejecución del programa durante un tiempo determinado. End.50 3 20 30. Sound: Genera un sonido en la bocina de la computadora a una frecuencia determinada por el valor pasado como parámetro.95 7 10 50. estas antes de ser utilizadas se tiene que llamar la unidad CRT. En la figura 2. Al igual que la instrucción TextColor.95 9 20 70. Instrucciones Delay.I:=1 a 10 Leer Aprt AT:= AT + Aprt 0 1 0.50 0. Program Espera.95 Esta es una habilidad que debe dominar un programador de punta a cabo.50 2 10 10.24 hay un ejemplo donde el programa espera aproximadamente 5 segundos y luego ejecuta la próxima orden.'). Ahora solo cada de parte de usted la ejercitación de esta operación.24 Ejemplo de la instrucción Delay.

2. end.Readln.sound(200). sound(200).’).Program Sonidos. End. delay(150).delay(180).Readln. Begin CLRSCR. end. 48 . delay(150).J: Integer. delay(150).Instrucciones de escritura. Write(‘Presione Enter para escuchar un sonido. NoSound. De ahora en adelante puede crear sus propios sonidos para sus programas. NoSound. end. delay(500). NoSound. Uses CRT.sound(250).’). Write(‘Presione Enter para escuchar un sonido ganador. . La estructura de control lineal está compuesta solamente por: .Instrucciones de lectura. sound(300). delay(500).’). . sound(480). Condicionales y Cíclicas. nosound. Readln. sound(600).10 Resumen. sound(280). Write(‘Presione Enter para escuchar un sonido perdedor. nosound. Var I. Delay(200).Instrucciones de asignación. for i:=1 to 1 do begin for j:=1 to 3 do begin sound(200).delay(500). end. delay(150). nosound. sound(150). for i:=1 to 2 do begin sound(600).25 Ejemplo de sonidos. Figura 2.delay(200).Readln. Delay(200). for i:=1 to 2 do begin sound(500). Las estructuras de controles son Simples.

Acción_Verd N Acción_Verd 2. Las estructuras condicionales se clasifican en tres tipos: . . Estructura de condicional simple.Write: Realiza una impresión de datos en la pantalla y coloca el cursor al final de la línea. y se toman diferentes acciones. Recuerde poner punto y coma al final de cada orden. Pascal Pseudocódigo Si Condición Entonces If Condición Then Acción_Verd 1 begin Acción_Verd 2 Acción_Verd 1. Acción_Falsa N. La estructura Case.Las instrucciones de escrituras son: . . la diferencia está en que la instrucción Readln comienza leyendo los datos una línea después.Múltiples. . . Siempre que utilices la instrucción CLRSCR debe declarar primeramente la unidad CRT. esto garantiza la visualización de los resultados. maneja una serie de decisiones en las cuales una variable o expresión particular se prueba para cada uno de los valores que puede asumir. Acción_Falsa 2.Readln: Parecida a la read. Los comentarios se escriben entre llaves “{” y “}”. end.Of.. Pascal Pseudocódigo If Condición Then Si Condición Entonces Acción verdadera.Read: Lee un dato de entrada y luego se lo asigna a una variable. 49 . La palabra reservada USES tiene el propósito de declarar las unidades. La unidad CRT tiene un conjunto de instrucciones que facilitan el trabajo a la hora de programar y no tener que crear instrucciones que ya existen. Sino Acción_Verd N.Simples. Acción_Falsa 1 end Acción_Falsa 2 Else Acción_Falsa N begin Fin_Si Acción_Falsa 1.Dobles. La instrucción CLRSCR borra la pantalla completa y sitúa el cursor en la esquina superior izquierda.Writeln: Realiza una impresión de datos en la pantalla y coloca el cursor en la línea siguiente. Las instrucciones de lecturas son: . Antes de finalizar el programa se debe colocar la instrucción Readln para que el programa realice un espera. Acción verdadera Fin_Si Estructura condicional doble.

El punto de terminación del bucle puede ser la palabra clave end (en el caso de los bucles For y While). Rastreo: Consiste en realizar un recorrido por el programa paso a paso para comprobar si está correctamente elaborado En BP7 se puede hacer esto presionando la tecla F8 o en el menú RUN escoger la opción Step Over.Una prueba de condición que determina cuando debe concluir el ciclo. end. end. Sound: Genera un sonido en la bocina de la computadora a una frecuencia determinada. Un ciclo o bucle es una repetición de un bloque de sentencias un número determinando de veces o hasta que se cumpla una condición. Until (en caso del Repeat).TextColor: Instrucción que se usa para seleccionar el color del texto en la pantalla. Tipos de bucles de BP7: . Estructura del bucle Repeat: Repeat Acción o acciones a repetir. Elementos comunes de los bucles: .While.Un cuerpo. que contiene la o las acciones que se quieren repetir. TextBackGround: Instrucción que permite seleccionar el color del fondo de la pantalla. . Delay: Detiene la ejecución del programa durante un tiempo especificado en milisegundos. . . NoSound: Desactiva el sonido iniciado con la instrucción Sound. Acciones o acción a repetir.Repeat. Until < condición >.Un punto de terminación. Random: Instrucción que genera un número aleatorio de un rango numérico dado como parámetro. Randomize: Instrucción que prepara a Random para que la selección de los número no sean siempre la misma secuencia cada ves que se inicie el programa. end.For. deberá estar bloqueado con instrucciones Begin y End (con la excepción del ciclo Repeat). Si el cuerpo del bucle contiene varias líneas. . o bien. 50 . Estructura del bucle For: Ciclo For Ascendente Ciclo For Descendente For valor_inicial Downto valor_final do For valor_inicial to valor_final do begin begin Acciones o acción a repetir. Estructura del bucle While: While < condición > do begin Acciones o acción a repetir.Un punto de inicio. .

b) Write(‘Mi nombre es: ’). g) Realice una espera de cuatro segundos. Write(‘Rodiert. b) Realn A). 1. f) ________ se utiliza para generar un número aleatorio. d) Lea tres enteros y almacénelos en las variables X. h) Se llama ________ al recorrido que se hace por el programa paso a paso para ver la operación que realiza cada línea de código. Y y Z y asígnaselo a la variable P. Writeln(‘Reinier. c) Indíquele al usuario que escriba tres números. c) Writeln(‘Mi nombre es: ’). 1. c) If N = 10 Writeln(número igual a 10) d) Suma = N1 + N2. Y y Z. Z y P que sean de tipo entero. __________ y ___________. e) Calcule el promedio de las variables X. i) ___ se utiliza para comenzar un comentario y ___ para terminarlo.’). d) Writeln. b) Declare las variables X. b) La estructura de control lineal está compuesta solamente por instrucciones de _________ . 1. se usa para leer los datos de entrada y luego asignarlos a variables.11 Ejercicios de autoevaluación.1 Llene cada uno de los siguiente espacios vacíos: a) Las estructuras de control se clasifican en estructuras __________ .2. d) La instrucción _______ es parecida a la Read. f) Imprima en pantalla “El promedio es: ” seguido de la variable P. 1. Y. g) Para utilizar instrucciones como CLRSCR y TextColor hay que declarar la unidad _______ .4 Corrija los errores (si es que existe alguno) de cada uno de los siguientes enunciados: a) Write ‘Hola Mundo’. 51 . ____________ y ____________.’). e) La instrucción _________ se usa para seleccionar el color del texto en la pantalla y __________ para seleccionar el color del fondo de la pantalla.3 Escriba un enunciado para cumplir con cada uno de los siguientes incisos: a) Declare un programa con el nombre Promedio. c) La instrucción ________ realiza una impresión de datos en la pantalla y __________ realiza la misma acción pero coloca el cursor en la línea siguiente.2 Diga que imprimiría en pantalla las siguientes líneas de código: a) Write(‘** Estoy aprendiendo PASCAL **’).

Se produce la siguiente salida: @@@@@@ c) Suponiendo que Z =7 y Y =10. Se produce la siguiente salida: ###### $$$$$$ &&&&&& 52 . c) ___ Una prueba de condición que determina cuando debe concluir el ciclo. a) Suponiendo que Z =7 y Y =10. d) ___ Un cuerpo se repite infinitamente. que contiene la o las acciones que se quieren repetir. 1. No puedes hacer ningún cambio a excepción de inserción de begin y end. Pudiera ser posible que no se requiera de ninguna modificación. e) ___ Un punto de terminación. 1. If (Y = 10) and (Z = 7) Then Writeln(‘@@@@@@’) Else Writeln(‘######’). Se produce la siguiente salida: @@@@@@ &&&&&& d) Suponiendo que Z =7 y Y =7. Writeln(‘$$$$$$’).5 Diga cuáles de las siguientes afirmaciones pertenecen a los elementos comunes de los ciclos: a) ___ Un prueba lógica que se verifica siempre al inicio. b) ___ Un cuerpo. Writeln(‘&&&&&&’).6 Escriba un programa utilizando estructuras secuenciales que muestre en pantalla una figura de color rojo igual a la siguiente: ********** ********** ********** ********** 1.e) For I = 1 do 20 to f) While I<31 do I:= I+1.7 Escriba un programa utilizando el bucle For que muestre en pantalla una figura de color azul igual a la que sigue: * ** *** **** ***** ****** 1. Se produce la siguiente salida: @@@@@@ $$$$$$ &&&&&& b) Suponiendo que Z =7 y Y =10. g) ___ No poseen punto de terminación. f) ___ Un punto de inicio.8 Utilice las técnicas apropiadas para garantizar la salida para cada uno de los siguientes incisos.

Lineales o secuenciales. Begin X:= 1. End. Y. X). Y. Asignación y Lectura. Readln. Writeln(‘El valor final de X es: ’. Total: Integer. Write y Writeln. 2. Total:= 0. Var X. INC(X). end. CRT. Y. Rastreo. Readln. Z). P).1 a) b) c) d) e) f) g) h) i) 1.3 a) Program Promedio. Write(‘Entre tres números: ’). Begin b) c) d) e) f) End.9 ¿Qué es lo que escribe el siguiente programa? Program Ejercicio. Escritura. Z: Integer. “{ “ y “} “ 53 . d) Aparece la línea en blanco. P:= (X + Y + Z) DIV 3. Writeln(‘El promedio es: ’. Condicionales y Cíclicas. Total:= Total + Y.Total). TextColor y TextBackGround. Var X. 1. c) Mi nombre es: Reinier.1.2 a) ** Estoy aprendiendo PASCAL ** b) Mi nombre es: Rodiert. Writeln(‘El total es ’. 1. While X<= 10 do begin Y:= X * X. Readln(X. Random.12 Respuestas de ejercicios de autoevaluación.

Writeln(‘**********). Uses CRT. End. d) Suma := N1 + N2. Writeln(‘&&&&&&’). 1. 1. e) Si. end. Writeln(‘$$$$$$’). g) No.5 a) No. Readln.7 Program Figura2. 1. end. c)Si. Writeln(‘**********). Writeln. End. J: Integer. Writeln(‘**********).g) Delay(4000). Readln. b) Si. Writeln(‘$$$$$$’).8 a) No requiere modificación. Uses CRT. Writeln(‘**********). 54 . b) If (Y = 10) and (Z = 7) Then Writeln(‘@@@@@@’) Else begin Writeln(‘######’). Writeln(‘&&&&&&’).4 a) Write (‘Hola Mundo’). d) No. 1. c) If N = 10 Then Writeln(‘número igual a 10’). Var I. 1. e) For I:= 1 to 20 do f) No tiene errores. 1.9 El total es 385 El valor final de X es: 11 d) No requiere modificación. Begin TextColor(Red).6 Program Figura1. c) If (Y = 10) and (Z = 7) Then Writeln(‘@@@@@@’) Else begin Writeln(‘######’). Begin TextColor(Blue). For I:=1 to 6 do begin For J:=1 to I do Write(‘*). f) Si. b) Readln (A). end.

1.12 Elabore un programa que calcule la longitud y el área de una circunferencia. 1. . Confecciones un programa que calcule la cantidad de meses demorará en pagar el artículo. 55 ( ( ) ) . 1.13 Ejercicios propuestos. c) Si se han introducido desordenadamente.17 A un trabajador se le entrega un artículo electrodoméstico para pagarlo por descuento. 1. S = VT 1.14 Queremos construir un programa que pida los datos necesarios para calcular y mostrar por pantalla el volumen de una cisterna. d) Si son iguales.11 Elabore un programa que calcule el área de un rectángulo. .20 Escribir un programa que teniendo los datos necesarios evalúe la siguiente expresión: a) (a+7 *c) / (b+2-a)+2 *b b) (a + 5) * 3 / b – 1 c) − b + b 2 − 4 * a * c / (2 * a ) 1.El opuesto. Velocidad = espacio / tiempo 1.10 Realice un programa donde pida al usuario dos números y muestre la suma.El inverso.23 Dado tres números determinar el mayor y el menor o si son iguales.El sucesor.16 Confeccione un programa para calcular la distancia recorrida por un automóvil.2. resta.24 Dado tres números cualquiera determinar: a) Si se han introducido en orden creciente.22 Elaborar un programa que pida dos números y este devuelva cuál es el mayor y cuál el menor. 1. Si es cero mostrar un mensaje referente al caso.19 Escribir un programa que calcule la velocidad de un proyectil que recorre E kilómetros en T minutos. De ser iguales mostrar un mensaje referente al caso.El antecesor. . 1. Expresar el resultado en metros /segundo.El cuadrado. . 1. 1.La raíz cuadrada. si sabemos que mensualmente le descontarán el 15% de su salario.21 Escribir un programa que detecte si un número introducido desde le teclado es positivo o negativo. VC = πR2h 1. b) Si se han introducido en orden decreciente. 1.13 Elabore un programa que calcule el área de un triángulo. 1. multiplicación y división de los dos.15 Confeccione un programa para calcular el volumen de un cilindro circular recto. 1.18 Elabore un programa que pide al usuario un número y de este muestre: . .

45 * x + 2 si -1 <= x <0 F(x)= x * 1/3 + 6 si x>= 0 1. se sabe que oscila entre 124 lb. c) Si son diferentes los tres determinar cuál es el mayor y cuál el menor. se desea precisar si el atleta está en la división de los 57. Ejemplo: 0 10 20 30 40 50 60 70 80 90 100 1. 1. y luego pida el valor necesario. isósceles o escaleno.26 Dado un número entero cualquiera entrado por el usuario. 1.30 Dado tres números cualesquiera: a) Si los tres son iguales calcular su suma b) Si solo dos de ellos son iguales calcular la media de los tres.36 Elabore un `programa que muestre los números del 0 al 100 con saltos de 10.25 Crear un programa que pida dos números A y B y muestre si A es múltiplo de B o no.29 Conociendo la longitud de tres segmentos de rectas.27 Confeccione un programa que dado un número del 1 a 7 escriba el correspondiente nombre del día de la semana.36 para que muestre cada número en línea diferentes.34 Elabora un programa que pida el nombre de usuario y una contraseña. 1.31 Construir un programa para evaluar la función: F(x)= 0 si x< -1 F(x)= 0. · Importe bruto menor de 2 00 -> sin descuento · Importe bruto mayor o igual de 2 00 -> 15% de descuento 1.60 Kg.35 Elabore un programa que muestre los números sucesivos del 0 al 100 utilizando cualquiera de los tres tipos de bucles y la función INC. Nota: División .5 Kg. y 140 lb. Desde 124 hasta 129 lb. Para convertir de Grados a Radianes: VR =(π* VG)/180 Para convertir de Radianes a Grados: VG =(180* VR)/ π 1. División . impar o si es neutro.5Kg hasta 145 lb. 60 ó 63. Nota: El nombre del usuario es: batalla La contraseña es: ideas 1. División – 63. determinar si el mismo es par. Hasta 137 lb. Si esto es posible clasifíquelos en equiláteros. 56 .28 Escribir un programa que lea desde teclado el importe bruto de una factura y determine el importe neto según los siguientes criterios. determinar si con ellos se puede formar un triángulo. Si se entra cualquier otro número el programa emitirá un mensaje de error. 1.37 Modifique el programa del ejercicio 1. 1. 1.1. 1.57 Kg. Si el nombre de usuario y la contraseña coinciden el programa mostrará un mensaje de bienvenida y en caso contrario un mensaje de error.32 Se conoce el peso en libras de un atleta de boxeo.33 Escriba un programa que pregunte en que sentido se desea realizar la conversión de Radianes a Grados o de Grados a Radianes.

Modifique este programa para que cicle la escritura del nombre de usuario y su contraseña mientras esta sea incorrecta.41 Partiendo del ejercicio 1. 1.38 Modifique el programa del ejercicio 1. cuántos estudiantes han aportado más de $10. en caso afirmativo el programa se vuelve a ejecutar y si no se cierra. 1. El programa muestra la tabla del número introducido y pregunta si desea introducir otro número.00 y cuál fue el mayor aporte realizado.44 En un trabajo voluntario en la caña part6iciparon N brigadas. b) Cuántas brigadas limpiaron más de 10 caballerías.34. Si el usuario se equivoca cuatro veces entonces el programa emitirá un mensaje diciendo “Usted no puede entrar” y el programa se sierra automáticamente después de esperar unos tres segundos. Conociendo que la cantidad de precipitaciones caídas por días se encuentran expresadas en un dato cuyo final esta dado por -1.42 Hacer un programa que permita determinar la cantidad de días en los que las precipitaciones caídas estuvieron por encima de 44 milímetros.37 para que muestre el siguiente resultado mediante un conteo descendente con la función DEC: 100 90 80 70 60 50 40 30 20 10 0 1.1. Ejemplo: Entre un número: 6 0*6=0 1*6=6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 7 * 6 = 42 8 * 6 = 48 9 * 6 = 54 10 * 6 = 60 1. c) Si todas las brigadas limpiaron más de 10 caballerías clasificar el trabajo voluntario en “TRABAJO VOLUNTARIO PRODUCTIVO” 57 . 1. Se conoció la cantidad de caballerías que limpió cada brigada y se quiere hacer un programa que calcule: a) El total de caballerías que limpiaron en total.43 En una lista se tiene el aporte hecho por N estudiante a las MTT.39 para que cicle mientras que el usuario quiera seguir calculando. Calcular el aporte realizado por los estudiantes.40 Modifique el programa 1. 1.39 Cree un programa que pida al usuario un número entero y devuelva su tabla de multiplicación del 0 al 10.

El programa mostrará en pantalla la potencia que representa esos números. Capicúa: Un número que es igual leído de izquierda a derecha que de derecha a izquierda.51 Realice un programa que pida al usuario un número y este determine si es capicúa o no. Ejemplos de palabras palíndromo: reinier. mientras los mismos no excedan de 100. 1.54 Elabore un programa que pida al usuario un número entero positivo y devuelva su equivalente en el sistema numérico binario.53 Elabore un programa que pida al usuario un número entero positivo y devuelva su equivalente en el sistema numérico binario.Factorial de 3 = 24 (porque 1*2*3*4=24) . como 1331.1. octal y hexadecimal. 1.45 Dadas las edades de un grupo de N alumnos elabore un programa que determine la edad promedio del grupo. 1. ana. 1.etc. Entre un número entero positivo: 20 Decimal Binario Octal Hexadecimal 20 10100 24 14 58 . anilina. Por ejemplo: .48 Escribir un programa que calcule el factorial de un número. la mayor y la menor edad.333. oso. 121. 1.46 Calcule los múltiplos de un número A.49 Elabore un programa que muestre todos los números primos que hay entre NI y NF.183381. que de derecha a izquierda. 1. Palíndromo: Palabra o frase que se lee igual de izquierda a derecha.8 en este capítulo. Agregue la posibilidad de contar la cantidad que hay. sallas.52 En pascal mediante la función SQR podemos obtener el cuadrado de un número cualquiera.898. tome como base al primero y como exponente al segundo. pero ¿qué pasa si queremos calcular 45 ó 67? Elabore un programa que le pida al usuario dos números. El programa imprimirá la siguiente tabla: Número Cuadrado Cubo 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 1. Ejemplo de programa para el número 20.47 Utilizando las técnicas aprendidas en este capítulo. Para realizar este ejercicio puedes ver el ejercicio 6 del tema 2. escriba un programa que calcule los cuadrados y los cubos de los números del 1 al 10.Factorial de 6 = 720 (porque 1*2*3*4*5*6=720) 1. ala. 1.50 Realice un programa que pida al usuario una palabra y este determine si es palíndromo o no.

” . .Muy bien.56 Elabore un programa que simule el juego “Adivine el Número”. Intente una vez más .Incorrecto.¡OH! Sigue así. Su programa verifica la respuesta. Su programa escoge un número al azar en el rango del 1 al 1000. El programa deberá general dos números aleatorios de 0 a 10. Realice un programa que ayudaría a un alumno de una escuela primaria a ejercitar su habilidades a la hora de multiplicar.1.No. el programa debe ejecutarse nuevamente y si es no. imprimirá de manera aleatoria una de las respuestas incorrecta que aparecen al final y a continuación permitirá que el alumno vuelva a intentar responder la misma pregunta.No.No se rinda . Si es correcta. A continuación deberá escribir una pregunta que le indique al pionero que debe multiplicar los dos números y escribir la respuesta.Excelente. Si el jugador consume todos los intentos sin haber adivinado el número. 59 . Cuando termine el juego independientemente del resultado el programa debe preguntar si se desea adivinar otro número.” El jugador gana cuando adivine el número generado por el programa y aparecerán los dos números parpadeando en pantalla. el programa mostrará el número generado en pantalla parpadeando y un mensaje indicando que perdió. . El jugador tendrá 10 intentos para adivinar el número. Por favor intente de nuevo. hasta que al final conteste correctamente. imprime de manera aleatoria una de las respuestas correctas que aparecen al final y a continuación solicita otra multiplicación. saldrá de inmediato. Si la respuesta es si.En caso que el número generado sea menor que el número introducido: Respuesta: “El número a adivinar es menor.En caso que el número generado sea mayor que el número introducido: Respuesta: “El número a adivinar es mayor. ---------------------Respuestas correctas: .55 La computadora está jugando un papel creciente en la educación. siga intentando ---------------------1.Buen trabajo. . . Si la respuesta es incorrecta. Siempre que el jugador escribe un número incorrecto el programa responde de las siguientes formas: . ---------------------Respuestas incorrectas: .

Inserción. Proverbio Árabe. ◘ Un hombre es rico en proporción a las cosas que puede tener por sí mismo.8 Ejercicios propuestos. ◘ No podemos ayudar a otros a subir una montaña si acercarnos a la cima nosotros mismos.4 Arreglos de dos dimensiones.Capítulo 3 _____________________________________________________________ Estructuras de datos _____________________________________________________________ Objetivos • Caracterizar las estructuras de datos. Eliminación y Ordenamiento). Abigail Adams. ◘ “Errar es humano”. J.2 Arreglos de una dimensión. 3. Thoureau. sobre todo cuando uno es el que comete el error.7 Respuestas de ejercicios de autoevaluación. Búsqueda. 3. 60 . Sinopsis 3. 3. Pensamientos ◘ El saber no se obtiene por azar.5 Resumen. 3.6 Ejercicios de autoevaluación. Hay que buscarlo con afán y alimentarlo con diligencia. • Hacer referencia a los elementos de un arreglo. 3. • Realizar operaciones básicas con arreglos(Recorrido.1 Datos estructurados. • Declarar arreglos unidimensionales y bidimensionales. 3. Norman Schwarzkopf. Henry D.3 Operaciones con arreglos. ◘ Dos pueden lograr lo que resulta imposible para uno. 3. Soares.

1 Datos estructurados. (Vectores) . el tercero.3. Un arreglo llamado Notas que tenga espacio para almacenar cinco notas(5. todos boleanos. esto realmente no es conveniente por el gran trabajo que esto requiere. los Arreglos. 4) se pueden ver forma abstracta en la figura 3. los simples como se estudió en temas anteriores pueden almacenar un único valor en cada variable y los compuestos o estructurados están formados por tipos de datos simples. Ordenada: Se puede determinar cual es el primer elemento. Un arreglo (Array) se define como una colección finita. una columna) de datos del mismo tipo. homogénea y ordenada de elementos. (Matrices) . diferenciaremos los siguientes tipos de arreglos: . lo resolveríamos con las herramientas de programación que hasta ahora se han estudiado. Si tuviéramos la necesidad de hacer un programa que hallara el promedio alcanzado en una asignatura determinada de un grupo de N estudiantes. 3. Homogéneo: Todos los elementos de un Array son del mismo tipo( todos enteros. . El estudio de estas estructuras comprenden un análisis de cómo se combinan las estructuras simples para formar las compuestas.2 Arreglos de una dimensión. pero si además del promedio se necesitara obtener un listado ordenado con los nombres y las notas alcanzadas por los estudiantes para conformar un escalafón. en Pascal existe un tipo de dato que permite la facilidad del trabajo con listas de datos por lo que resolvería este problema de manera sencilla. que llamaremos rango..1. debe determinarse cual será el número.. Un arreglo unidimensional puede ser considerado como una lista(es decir. 2. Finita: Todo Array tiene un límite. definiendo el número de dimensiones o número de índices del mismo y los límites máximo y mínimo que cada uno de ellos puede tomar. En este tema se trabajará con una de las estructuras de datos más utilizadas a la hora de programar. pero nunca una combinación de distintos tipos. 5. Los datos pueden ser simples o estructurados.Bidimensionales. máximo de elementos que formarán parte del Array. 2. Según sea este número. es decir. etcétera). el segundo elemento. 61 . La cantidad de elementos del arreglo se específica cuando se crea éste.y el enésimo elemento. a los que colectivamente nos referiremos mediante un nombre. ya las cosas se enredarían porque se utilizarían un gran número de variables para la obtención de este fin. en la zona de declaraciones del programa.Multidimensionales.Unidimensionales.

.1 Ejemplo de arreglo de una dimensión expresado de forma abstracta.2.. Const LI=1.'Panamá'.2 Estructura general de un arreglo unidimensional. Figura 3. 'Hondura'). 1 2 3 4 5 6 7 8 9 10 Elementos. Var Paises: ARRAY [LI. Figura 3. la palabra reservada Array y dentro de corchetes el rango de elementos que tendrá dicho arreglo seguido del tipo de dato. Para acceder a un elemento cualquiera de un arreglo se hace mediante el nombre del arreglo y el número del elemento a través el subíndice del mismo.'Chile'. LS=8.10] of Integer. Var Grupo : Array [1.'Ecuador'.. Para declarar un arreglo de un dimensión Figura 3. Uses CRT. Begin CLRSCR. Var Nombre : Array [Valor_Inicial. Program Array_Paises.3 se declara un Arreglo llamado Paises y se asigna en el momento de su declaración los elementos que lo componen. Podemos imaginarnos el arreglo Grupo como una fila de diez elementos del tipo que hemos especificado (Integer).Notas 5 2 3 2 4 Figura 3. al igual que para declarar las variables se coloca Var.Valor_Final] of Tipo de dato.LS] of String =( 'Cuba'.'México' . 62 .'Bolivia'. End. { Muestra en pantalla Ecuador } Readln. El arreglo Grupo quedaría así: Grupo Número de orden. luego el nombre con que se identificará el arreglo. { Muestra en pantalla Cuba } Writeln (Paises[7]). El ejemplo que se pone a continuación define la variable Grupo como un arreglo que contiene 10 datos de tipo Integer. Writeln (Paises[1]). se realiza en la zona de declaraciones. Ejemplo: En el programa de la Figura 3.'Venezuela'.3 Ejemplo de cómo acceder a un elemento de un arreglo.

4 recorren el arreglo Paises y van mostrando cada uno de sus elementos. Combinar dos listas en una. los elementos que lo compone son todos de texto. Mezcla.4. Búsqueda de la posición ocupada por un elemento con un determinado valor. 3. Este arreglo cuenta con un límite inferior LI y un límite superior LS. Adición de un nuevo elemento a la lista. La variable I es la que va recorriendo el arreglo.4 Algoritmos recorrido del arreglo Paises. Eliminación de un elemento de la lista. Organizar los elementos de la lista de acuerdo con algún tipo de orden. Los algoritmos de la Figura 3. podemos hacerlo de la siguiente forma: Nombre[6] := ‘Antonio’.5 se presenta el programa que realiza el recorrido del arreglo Paises partiendo de los algoritmos de la Figura 3. Inserción.3 Operaciones con arreglos. Las operaciones que se suelen utilizar habitualmente sobre una estructura lineal son las siguientes: Recorrido.Para asignar un valor a un elemento de un arreglo. Vamos a ver cada una de estas operaciones: Recorrido: La operación de recorrido consiste en visitar todos los elementos del arreglo por lo menos una vez. Ahora en el elemento 6 del arreglo Nombre contiene el valor Antonio. Borrado. Pseudocódigo Inicio Para I:= LI hasta LS hacer Escribir Paises[I] Fin_Para Fin Diagrama de flujo Figura 3. 63 . En la Figura 3. Procesamiento de cada elemento de la lista. Ordenación. nos referimos a un arreglo de una dimensión o unidimensional. Búsqueda. Cuando se habla de lista en esta sección.

LS=8. Los algoritmos de la Figura 3. Program Rellena_Muestra. { Muestra en pantalla el contenido del elemento I } Readln. Búsqueda: En ciertas ocasiones es necesario saber si un elemento cualquiera está o no en un arreglo.LS] of String =( 'Cuba'. End. Estos algoritmos muestran la posición del elemento buscado las veces que esté.. For i:=1 to 10 do begin Arr_num[i]:=Random(100)+1. Begin Randomize. Var Paises: ARRAY [LI. Readln. para entender estos algoritmos debemos tener claro que Dato es el nombre del arreglo.Program Recorrido. N es la cantidad de elementos que lo componen.'México' . 'Hondura').. Var Arr_num: ARRAY [1. Figura 3. A continuación se muestra en la Figura 3.'Venezuela'.'Ecuador'.10] of INTEGER.'Bolivia'. Uses CRT. Uses CRT.'Panamá'.'Chile'. end. Begin CLRSCR. Const LI=1.5 Programa Recorrido. i es la variable que controla en ciclo y Elemento es el elemento buscado. Writeln(Arr_num[i]). I: Integer. For I:=LI to LS do Writeln (Paises[I]).6 un programa que rellena y muestra un arreglo de 10 elementos con números aleatorios comprendidos entre 1 y 100.7 realizan una búsqueda. 64 .6 Programa que rellena un arreglo con números aleatorios y los muestra. Figura 3. Var i: INTEGER. End.

90..33. N.8 se encarga de validar estos pequeños detalles que en el mundo de la programación se le conoce como tratamiento de errores. end. end.I. el algoritmo anterior no es eficiente ya que el programa no realiza ninguna acción si el elemento buscado no está en lista. Lug:=Lug+1.60.41.7 Algoritmos Búsqueda. Uses CRT.87. End. Var Dato: Array [1.Readln(Elemento). Readln. Lug:=1.8 Programa que realiza una búsqueda. Hay:Boolean. es decir.Lug).10). Figura 3.21. While Lug < 10 do begin If Dato[Lug]=Elemento Then begin Hay:=True. Elemento: INTEGER.74. Estos algoritmos se utilizan para saber la posición que ocupa un elemento determinado. donde asumimos que dicho elemento siempre aparece en el arreglo.Pseudocódigo Diagrama de flujo Inicio i=1 Mientras i <= N hacer Si Dato[i] = Elemento Entonces Escribir i Fin_Si i = i +1 Fin_Mientras Fin Figura 3. en el arreglo. 65 . Writeln('En la posición '. Program Buscar. Begin Hay:=False. El programa de la Figura 3. Write ('Entre el número a buscar: ').Lug.34. En la práctica nos percatamos que no siempre el elemento que se busca aparece en el arreglo.10] of Integer =(34. If Hay = False Then Writeln('El elemento buscado no esta en la lista').

{ Buscamos el menor } Menor := NUM[1]. Figura 3. Writeln ('Su posición es: '. CONST NUM: ARRAY [1. For i:=2 to 7 do begin If NUM[i] <= menor then begin Menor := NUM[i]. Por ejemplo.En la Figura 3. Readln.posi_mayor:3). Writeln ('El numero menor es: '.. end end. posi_mayor :=i. Program Mayor_Menor.99. 45. VAR i.4). Writeln ('').9 Programa que muestra el valor mayor y el menor de un arreglo de números.9 se muestra un programa que después de asignar los números (23. For i:=2 to 7 do begin If NUM[i] >= mayor then begin Mayor := NUM[i]. Uses CRT. posi_mayor. Inserción: A la hora de realizar una inserción de un elemento en un arreglo equivale a una simple asignación indicándole la posición en la que se quiere insertar.mayor:3). pero que además muestre cuáles son estos valores. 15 y 4) a al arreglo NUM. 99. 66 . además la posición de cada uno de ellos. si queremos insertar en un arreglo llamado Notas.menor:3). posi_menor: INTEGER. Writeln ('El número mayor es: '. el número 100 en la posición 5 se haría de la siguiente forma: Notas[5]:= 100. 10. determina las posiciones del en las que se encuentran el valor máximo y el valor mínimo. 68.posi_menor:3). end end.10.45. posi_menor := i.15. End. mayor. menor. Writeln ('Su posición es: '. Begin { Buscamos el mayor } Mayor := NUM[1].7] of INTEGER=(23.68.

La inserción se complica cuando tenemos un arreglo de 10 elementos (por citar un ejemplo), de ellos solo están ocupados 6 y queremos insertar el número 100 en la posición 3, de forma tal que los elementos que están en la posiciones 3, 4, 5 y 6 se trasladen una posición más arriba. Observe el ejemplo en la Figura 3.10. Arreglo Notas antes de la inserción 95 60 85 98 100 78
100

Arreglo Notas después de la inserción 95 60 100 85 98 100 78

Figura 3.10 Ejemplo de inserción en un arreglo. Como ves, luego de insertar el 100 en la posición Notas[3], los elementos se corrieron un elemento hacia la derecha. El algoritmo de la figura 3.11 les permite insertar un elemento en una posición determinada, donde Notas es el nombre del arreglo, N es la cantidad de elementos no vacíos que lo componen (6 en el ejemplo de la figura 3.10), K es la posición en la que queremos insertar el elemento, i es un controlador y Elemento es el nuevo dato que queremos insertar. Pseudocódigo Diagrama de flujo

Inicio I=N Mientras I >= K hacer Notas[I+1]=Notas[I] I =I-1 Fin_Mientras Notas[K]=Elemento N=N+1 Fin

Figura 3.11 Algoritmos Inserción. En el programa de la Figura 3.12 se muestra la operación de inserción mediante un arreglo conformado por nombres de personalidades de nuestra revolución. Cuando arranca el programa le asignamos siete nombres al arreglo Personalidades para que luego el usuario introduzca el nombre de alguna otra personalidad en la posición que desee. En el programa se explica que acción realiza cada operación.

67

Program Array_Insert; Uses CRT; var Personalidades: ARRAY [1..8] of String; N,I,K:Integer; Elemento: String; Begin Personalidades [1]:='Fidel Castro'; Personalidades [2]:='Raúl Castro'; Personalidades [3]:='Camilo Cienfuegos'; Personalidades [4]:='Ernesto Guevara'; Personalidades [5]:='Juan Almeida'; Personalidades [6]:='Celia Sánchez'; Personalidades [7]:='Magali Montané'; I:=1; N:=0; While Personalidades [I]<> '' do { Para tener la cantidad de } begin { elementos no vacíos del arreglo. } N:=N+1; I:=I+1; end; For I:=1 to n do {Para mostrar los elementos del arreglo.} Writeln(LA[I]); Writeln(''); Writeln('Para insertar un nombre de una personalidad al arreglo.'); Write('Entre el nombre de la personalidad: '); Readln(Elemento); {Almacena el nombre.} Writeln(''); Write('Entre la posición: ');Readln(K); {Almaceno la posición.} I:= N; While I >= K do {Mientras queden elementos por mover.} Begin {Traslado un elemento a la derecha.} Personalidades [I + 1]:= Personalidades [I]; I:=I-1; end; Personalidades [K]:=Elemento; { Asigno el nombre. } N:= N + 1; { Actualizo la cantidad de elementos.} For I:=1 to n do { Para mostrar los elementos del arreglo.} Writeln(Personalidades [I]); Readln; End. Figura 3.12 Programa inserción de un elemento.

68

Borrado: Al igual que en la inserción, a la hora de realizar el borrado de algún elemento en un arreglo implica que todos los elementos que le siguen a la derecha tienen que trasladarse un lugar a la izquierda. Esto que se explicó anteriormente hay que hacerlo por una de las características de los arreglos, me refiero al que son estructuras de datos secuenciales, o sea, que no pueden haber espacios intermedios en blanco. Observe la Figura 3.13. Arreglo Notas antes de la eliminación 95 60 100 85 98 100 78 Arreglo Notas después de la eliminación 95 100 85 98 100 78

Figura 3.13 Ejemplo de eliminación en un arreglo Como ves, luego de eliminar el 60 en la posición Notas[2], los elementos se corrieron una posición hacia la izquierda. El algoritmo de la Figura 3.14 les permite eliminar un elemento en una posición determinada. Donde Notas es el nombre del arreglo, N es la cantidad de elementos no vacíos que lo componen(7 en el ejemplo anterior), K es la posición del elemento que queremos eliminar, I es un controlador. Pseudocódigo Inicio Desde I := K hasta N hacer Notas[I]=Notas[I + 1] Fin_Desde Notas[N]:=0 N:= N - 1 Fin Figura 3.14 Algoritmo eliminación. El ejemplo de la Figura 3.15 utilizamos una lista de 7 nombres que están almacenados en un arreglo. Aquí se le muestra al usuario la lista y la opción de eliminar el elemento que desee mediante su posición. En este caso utilizamos un arreglo llamado LA que puede almacenar hasta 8 nombres. Mediante K eliminamos el elemento perteneciente a dicho valor. Diagrama de flujo

69

LA[I]). For I:=1 to n do Writeln(I.8] of String. While LA[I]<> '' do begin N:=N+1. Writeln('').16 B. A B 5 1 4 2 3 3 2 4 1 5 Figura 3.Program Array_Eliminar. La primera consiste en ordenar todos los elementos de menor a mayor Figura 3.K:Integer. Ordenación: Cuando trabajamos con lista. N.Readln(K). Readln.15 Programa eliminación. La ordenación puede ser de dos formas (Ascendente y Descendente).16 Formas de ordenar. Writeln('Para borrar un elemento de la lista'). LA[5]:='Juan'.. For I:=1 to n do Writeln(I. End.’..’. N:=N-1. LA[6]:='Yilian'. debemos conocer cómo ordenar dichas listas para cuando nos haga falta realizar esta operación tan utilizada en estos tipos de datos (estructurados). LA[3]:='Fernando'. LA[4]:='Lázaro'. B .LA[I]). Write('Posición del elemento a borrar: '). end. I:=1. A . mientras que la segunda ordena los elementos de mayor a menor Figura 3. Begin CLRSCR.’. N:=0. I:=I+1. Writeln(''). LA[1]:='Rodiert'. 70 . Uses CRT. var LA: ARRAY [1.’. Figura 3. LA[7]:='Bruno'.I.16 A. For I:=K to N do LA[I]:= LA[I + 1]. ya sea tanto de números como de textos. LA[2]:='Reinier'.Descendente..Ascendente.

Nombres[j +1]:=AuxStr. For i:=1 to 10 do begin J:=i+1. end. end. Writeln('*** Escalafón del grupo ***').'.. For i:=1 to 10 do {Almacena los nombre y las notas entradas} begin Write('Entre el nombre del alumno '. Program Ordenar. Notas[j +1]:= AuxInt. Figura 3. {fin del ordenamiento} {se muestran los resultados del ordenamiento} ClrScr. Nombres[j]:= Nombres[j +1].': '). Writeln. Writeln. 71 .': '). j. AuxInt:Integer. Readln(Nombres[i]). Gotoxy(20. Write(I. Gotoxy(3. Write('Entre la nota de '..17 realiza una ordenación de un arreglo para mostrarlo en forma de escalafón. Readln. Este programa pide al usuario 10 nombres con su nota en base a 100 y al final muestra un escalafón de ese grupo de estudiantes. {fin de la entrada de datos} For I:=1 to 10 do {comienzo a ordenar} begin For j:=1 to 10-I do begin If Notas[j]<Notas[j+1]Then begin {intercambio los valores} AuxInt:= Notas[j]. o sea.j*2). end.El programa de la figura 3.Nombres[i]). Readln(Notas[i]). AuxStr:= Nombres[j]. {fin del intercambio} end.10] of String. Write(Notas[i]). Notas[j]:=Notas[j +1].i. AuxStr:String.. de forma descendente. Uses CRT. Begin CLRSCR.j*2). End. end. Nombres[i]. i.10] of Integer.'. Var Notas : Array [1. Nombres: Array [1.17 Programa ordenación.

72 . garantizamos que quede el valor mínimo en el último elemento de los arreglos Nombres y Notas. coloca el cursor en las coordenadas especificadas por X y Y. Muchas veces tenemos una lista de números y queremos almacenar hacer otra lista donde aparezcan todos los números que cumplan con una determinada condición. Readln. A la hora de mostrar los resultados se utilizó la instrucción Gotoxy.18 Ejemplo del uso del Gotoxy.19 Ejemplo de programa que copia un arreglo en otro. Tenga en cuenta que la comparación se realiza a partir del arreglo Notas. For i:=5 to 10 do begin arr_num1[i]:=i. Figura 3. En la segunda iteración garantizamos que el valor mínimo de los restante elementos quede en el penúltimo y así sucesivamente hasta que todos los elementos de los arreglos queden ordenados de mayor a menor. arr_num2[i]:=arr_num1[i]. En la primera iteración del primer bucle For del ordenamiento. i: Integer. For i:=5 to 10 do Writeln (arr_num2[i]). uses crt. End.. Ver ejemplo de la Figura 3.Columna 20’).En este programa luego de haber introducido los datos necesarios se comienza el ordenamiento. Readln. Write('Fila 10. Write(‘Fila 20. Gotoxy(20. En la figura 3. End. Program Copia.arr_num2:array [5. 20). end.10] of integer.19 se presenta un programa que resuelve la siguiente situación problémica: “Escribir un programa en BP7 que rellene un arreglo con cinco números enteros consecutivos y haga una copia de ese arreglo en otro”. Begin Clrscr. Columna 10'). ya que lo que se quiere lograr es un escalafón. donde X representa la columna partiendo de izquierda a derecha y Y representa la fila partiendo de arriba hacia abajo. Begin ClrScr. Mezcla: Esta operación consiste en hacer una combinación entre dos a más arreglos teniendo en cuenta el objetivo que se quiera alcanzar. Figura 3.18. Gotoxy(10. Uses crt. var arr_num1.10). Program posicion.

Readln. CLREOL. Figura 3. var arr_num1. { fin del relleno} Writeln('ARREGLO 1 ARREGLO 2'). Gotoxy(2. write(arr_num1[i]).i+2). arr_num2:array [1. Program Mezcla. Readln(arr_num1[i]). For i:=1 to 10 do { Entran y se almacenan los números en arr_num1} begin Write('Entre un número: ').Cont: Integer. 73 . I.. clreol. for i:=1 to 10 do {contenido del arreglo 1} begin gotoxy(5.i+2). Este borra todos los caracteres de la línea actual desde la posición del cursor hasta el final de la línea. end. write(arr_num2[i]). Begin Clrscr.21. end. En este programa se utiliza una instrucción nueva.2). Inc(Cont). Cont:=1. Ver el programa de la figura 3. for i:=1 to cont-1 do {contenido del arreglo 2} begin gotoxy(24. end. { fin de la entrada} For i:=1 to 10 do begin { Rellenar arr_num2 con los números pares de arr_num1} If arr_num1[i] mod 2 = 0 Then begin arr_num2[Cont]:= arr_num1[i].20 cuenta con un programa ejemplo donde a partir de una lista de 10 números introducidos por el usuario.10] of Integer. no satisface mi necesidad con respecto a lo que se puede hacer con esta operación. Uses crt.Independientemente que en este ejemplo se muestra cómo es posible asignarle un elemento determinado de un arreglo a un elemento determinado de otro arreglo. estos se almacenan en un arreglo y luego almacenamos en otro los números que cumplan con la condición de ser pares. end. End. gotoxy(2.2). La figura 3.20 Programa que utiliza el contenido de un arreglo para formar otro. end.

un arreglo de estos es muy útil para describir un objeto que tenga físicamente dos dimensiones. cada una de las cuales vende 30 artículos.15). que son muy utilizados en aplicaciones de BP7. Partiendo del ejemplo de la figura 3. 74 . 1 2 3 4 5 6 7 8 9 10 1 2 ss jj 3 xx 4 5 yy 6 pp 7 8 zz 9 ii 10 qq Figura 3.22. Como pueden apreciar en este programa se rellena la pantalla con el símbolo de # y luego se borra la línea 15 a partir de la posición 15.22.. Figura 3. La concepción de arreglo no se restringe sólo a los arreglos de una dimensión. var x..y : integer. Begin for x := 1 to 24 do for y := 1 to 80 do write('#'). End. Por ejemplo. uses crt.10] of String.21 Ejemplo del uso de la instrucción CLREOL.1.Program Borrar_Linea. Readln. En este capítulo se observó que un arreglo unidimensional puede entenderse como una lista (que se mostraba como una columna de datos). gotoxy(15. Una matriz se pudiera imaginar como una tabla de datos.4 Arreglos de dos dimensiones. Un arreglo multidimensional (Matriz) tiene una filosofía de trabajo bastante parecida a la de los arreglos unidimensionales.22 Tabla de 10x10 que representa una matriz. 3. como se había planteado al principio del capítulo también pueden definirse arreglos multidimensionales. tal es el caso de un mapa. ver figura 3.10. un juego de damas o de ajedrez. Es útil para un programa para almacén de departamento que tenga 20 sucursales. clreol. la cual está compuesta por filas y columnas. podemos definir este arreglo de la siguiente forma: var Tabla : Array [1.

7] nos referiríamos al elemento marcado con "yy"..23 se muestra un programa que asigna en el momento de su declaración una serie de números a una matriz con datos fijos (declarada como una constante) y posteriormente la muestra haciendo un recorrido por cada uno de sus elementos.7. la primera dimensión ( el primer índice) podría referirse al número de la fila.0).23 Recorrido de una matriz. Uses CRT..1. Estos datos están organizados por tres filas y cuatro columnas. Ejemplo 1: Confeccione un programa que pida al usuario el nombre de tres estudiantes y sus notas en las asignaturas de Matemática.(1. Historia y Español y a continuación muestre el promedio de cada alumno de la siguiente forma: Nombre Nombre1 Nombre2 Nombre3 Solución: Como pueden apreciar aquí hay datos que son del mismo tipo.9.4. End.2. j]:3).7. Begin CLRSCR.Así. Matemática 100 80 70 Historia 90 80 100 Español 90 80 96 Promedio 93. const arr_num: array [1. con Tabla[3.0 88.2. Readln. En la figura 3.4] nos estaríamos refiriendo al elemento que he marcado con "xx" y con Tabla[5.6. Con los conocimientos alcanzados en este capítulo podemos hacer de manera sencilla un recorrido de este tipo de arreglo. var i. A continuación se resolverán dos problemas donde se tenga que aplicar por necesidad arreglos de dos dimensiones. end.6] of integer=( (3.3.8.0) ). for i:=1 to 2 do begin for j:=1 to 6 do write (arr_num[i. por lo que se puede utilizar una matriz para darle solución a este problema. Program Recorrido.3 80. Figura 3. De esta forma. Writeln. j: integer. la segunda dimensión (el segundo índice) al número de columnas. Writeln.6 75 .

4] of real. Write('Entre el nombre '. Notas[i.Readln(Notas[i.. 2: begin Write('Nota de Historia: '). End. j]). i. Nombres: array[1. end end. suma:= suma + Notas[i. j: integer.': '). for j:=1 to 3 do begin Writeln.4]:=suma / 3. Case j of 1: begin Write('Nota de Matemática: ').Program Promedio. Clrscr.3. var Notas: array [1.. j]:0:1). end. end. { Calcula el promedio } end. suma:=0.. Begin for i:=1 to 3 do begin CLRSCR. Writeln. 3: begin Write('Nota de Español: '). Promedio'). j]. j]).Readln(Notas[i. end. For j:=1 to 4 do begin gotoxy(j*13. { Variable sumadora } end. Uses CRT. end. Readln(Nombres[i]).i.i+2). suma:real.Readln(Notas[i. Write(Nombres[i]).i+2). j]). Write(Notas[I. Readln. Writeln('Nombre Matemática Historia Español For I:= 1 to 3 do begin gotoxy(1. 76 .3] of String. Writeln. Writeln.1.

end.1].Bidimensionales. (Vectores) . todos boleanos. end. Según la cantidad de dimensiones los arreglos se clasifican en: . el segundo elemento. pos_max_i:3. for i:=1 to 3 do begin for j:=1 to 3 do begin if arr_num[i. ' Posición: '. pos_max_j:3). Un arreglo se define como una colección finita.j. Writeln. (34..Ejemplo 2: Escribir un programa que determine la posición de la siguiente matriz en la que se encuentra el valor máximo. val_max:3. 3..45.val_max. Características de los arreglos: Finita: Tiene un límite. const arr_num:array[1. Ordenada: Se puede determinar cuál es el primer elemento.y el enésimo elemento. Writeln('Valor máximo: '. (Matrices) . máximo de elementos que formarán parte del arreglo. (25.Unidimensionales.68). el tercero.99. Readln.j]. val_max:=arr_num[1. End.Multidimensionales. var i.78.j] > val_max then begin val_max:=arr_num[i. pos_max_j:= j. uses crt. 23 45 68 34 99 12 25 78 89 Solución: Program Max_Valor. . Homogéneo: Todos los elementos de un arreglo son del mismo tipo (todos enteros. Begin Clrscr.3.89) )..5 Resumen.12).pos_max_j:integer. pero nunca una combinación de ellos. 77 . end.. eso indica que debe determinarse cual será el número.1.pos_max_i. etcétera).3] of integer=( (23. homogénea y ordenada de elementos. pos_max_i:= i.

1. ______________ y ________________ por la cantidad de dimensiones que cuentan. Ordenación. semejante y no ordenada de elementos. 1. Procesamiento de cada elemento de la lista. ejemplo: Const Arr_Const: array [1. Estructura para definir un arreglo de dos dimensiones: Segunda dimensión Var Nombre : Array [V_Ini. Var Nombre : Array [Valor_Inicial. Se puede definir un arreglo que almacene valores constantes.6. Operaciones con arreglos: Recorrido. Búsqueda. Borrado.7..V_F.- Estructura general de un arreglo unidimensional. Los arreglos se definen en la zona de declaraciones del programa. 78 .. Combinar dos listas en una. c) ___ Arreglo: Colección finita. esto es posible mediante la palabra reservada const.6 Ejercicios de autoevaluación. Eliminación de un elemento de la lista. Clreol: Borra todos los caracteres de la línea actual desde la posición del cursor hasta el final de la línea.. Mezcla. ordenado y __________ para poder definirse como tal. donde X representa la columna partiendo de izquierda a derecha y Y representa la fila partiendo de arriba hacia abajo.8 ).5] of integer= ( 3.1 Diga cuáles de las siguientes proposiciones cumplen la con definición de arreglo: a) ___ Arreglo: Conjunto de elementos entrelazados que permite almacenar datos de diferentes tipos. Adición de un nuevo elemento a la lista. homogénea y ordenada de elementos.Valor_Final] of Tipo de dato. Primera dimensión 3. Organizar los elementos de la lista de acuerdo con algún tipo de orden. b)___ Arreglo: Lista fija.. Para acceder a un elemento cualquiera de un arreglo se hace mediante el nombre del arreglo y el número del elemento a través el subíndice del mismo. Inserción. V_Ini. Búsqueda de la posición ocupada por un elemento con un determinado valor. b) Todo arreglo tiene que ser ________.2 Complete las oraciones siguientes: a) Los arreglos se clasifican en ______________ .V_F] of Tipo de dato. Gotoxy: Coloca el cursor en las coordenadas especificadas por X y Y.9.

31] of Real. máximo de elementos que formarán parte del arreglo. c) Los nacimientos ocurridos en los años de 1959 al 2000. 5.2 a) Unidimensionales o Vectores. ___ Combinar dos listas en una. ___ Procesamiento de cada elemento de la lista... c) Si..5 a) Var Nombres : Array[1.. 2. el segundo elemento.. d) Almacenar qué estudiante de los 25 de un grupo es o no de la UJC.6 Coloca el cursor en las coordenadas especificadas. elemento.. el tercero. ___ Adición de un nuevo elemento a la lista..25] of String.Ordenada. elemento con un determinado valor.4 El orden es 3. 1.Borrado..Ordenación.Búsqueda. d) Var UJC : Array[1. eso indica que debe 1.. 6. 1. Homogéneo. mismo tipo de dato. 1. 1. 3.Inserción.3 Enlace la columna A con la B según corresponda referente a las características de los arreglos: Columna A Columna B ___ Tiene un límite... .2000] of String. b) Las precipitaciones caídas en el mes de mayo. 1. 4. 2 y 4. c) Var Nacim : Array[1959.1 a) No. b) No. 1. 79 . 5.6 ¿Qué hace la instrucción GOTOXY? 1.Homogéneo. determinarse cual será el número. 1.. ___ Organizar los elementos de la lista de acuerdo con algún tipo de orden.. pero nunca una combinación de ellos.y el enésimo elemento. 6. ___ Todos los elementos de un arreglo son del 2.25] of Boolean.. 2 y 1.Finita. b) Var Mayo : Array[1.Mezcla..7 Respuestas de ejercicios de autoevaluación. 1.Recorrido. b) Finito. Bidimensionales o Matrices y Multidimensionales.1. 1. ___ Se puede determinar cuál es el primer 3.5 Declare un arreglo que reserve espacio para almacenar cada una de las siguientes situaciones: a) Los nombres de los estudiantes de un grupo de 25 alumnos.3 El orden es 3. 1.4 Enlace la columna A con la B según corresponda referente a las operaciones con arreglos: Columna A Columna B ___ Búsqueda de la posición ocupada por un 1.7 ¿Qué hace la instrucción CLREOL? 3. ___ Eliminación de un elemento de la lista.

8. 1.16 Escribir un programa en Pascal que tras entrar siete números y almacenarlos en un array.13 Escribir un programa que lea tres números y los guarde en un vector. 1.15 Escribir un programa Pascal que tras asignar los números. 10. Calcular el aporte realizado por los estudiantes. Confeccione un programa que pida diez números y muestre el modo de estos si es que lo tiene y en caso contrario muestre un mensaje. A continuación los ordenará y guardará los valores ordenados en otro vector.8 Ejercicios propuestos. la suma de los elementos positivos y negativos. 1. A continuación el programa debe imprimirla por pantalla.19 El modo de un arreglo de números es el número que más se repite en el arreglo. 1.00 y el nombre del estudiante del mayor aporte realizado.18 Escribir un programa que genera la inversa de una palabra. 1. determine las posiciones del array en las que se encuentran el máximo y el mínimo valor. los almacene en un arreglo y calcule el factorial a cada uno de los números leídos almacenándolos en otro arreglo y a continuación los muestre. 5. -9.11 Escribir un programa que lea diez números.17 Escribir un programa que almacene en un array los números primos comprendidos entre 1 y 100. 15 y –4 a un array calcule. 1. 1.14 Escribir un programa que solicite cinco números. 1. 1. los guarde en un arreglo y a continuación los imprima en pantalla en orden inverso. los guarde en un arreglo y almacene en la última posición la suma de los elementos que componen el arreglo. no existe modo al igual que si ningún número se repite. 1.7 Borra todos los caracteres de la línea actual desde la posición del cursor hasta el final de la línea.10 Escribir un programa que lea cinco números. Si varios números están repetidos con igual frecuencia máxima. La palabra original y la invertida deben almacenarse en array independientes. Finalmente sacará ambas listas de números por la pantalla.22 En una lista se tiene los nombres y el aporte hecho a las MTT por los 20 estudiantes de un grupo. independientemente. El programa ofrecerá el listado ordenado alfabéticamente del grupo. 1. los almacene en un array y luego calcule la media aritmética de esos números. La palabra debe tener como máximo 15 caracteres.12 Escribir un programa que lea diez números.21 Confeccione un programa que solicite los nombres y los dos apellidos de los estudiantes de un grupo con capacidad para veinte alumnos. 1. los guarde en un arreglo y a continuación los imprima en pantalla por su orden de entrada. los guarde en un arreglo y a continuación los ordene e imprima en de menor a mayor. 80 . a continuación los imprima en pantalla de la siguiente forma: 1 2 3 4 5 6 100 40 70 62 50 322 1. -2. mostrar los estudiantes que han aportado más de $10. 1.20 Realizar un programa que haga una lectura de 10 números enteros. 1. 1.9 Escribir un programa que lea diez números.1.23 Escribir un programa que llene una matriz de 5 por 5 de valores aleatorios.

15 55 67 31 89 13 28 74 99 1. Además la suma total de todos los elementos de la matriz se almacenará en el elemento de la esquina inferior derecha de la matriz: 1 7 0 5 6 0 6 4 0 7 3 0 1 0 0 81 . independientemente.25 Escribir un programa que determine la posición de la siguiente matriz en la que se encuentra el valor máximo y el valor mínimo.27 Escribir un programa que sume los elementos de cada una de las filas y de las columnas de la siguiente matriz. el resultado de cada suma se almacenará en la última posición de la fila o columna correspondiente.1.26 Escribir un programa que sume. Por ejemplo si el número fuera el 3 la tabla debería ser: + 0 1 2 3 0 0 1 2 3 1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 1.24 Escribir un programa que pida un número entre 1 y 20 e imprima por pantalla su tabla de sumar. los elementos positivos y negativos de la siguiente matriz: -12 23 32 45 -56 -10 25 78 89 1.

◘ Es mejor consultar las cosas con la almohada a tiempo que perder el sueño por su culpa después.2 Definición de tipos de registros.6 Operaciones con ficheros. 4.10 Ejercicios propuestos.5 Constructor del tipo de dato file. IlkA Chase. • Definir arreglos de registros. 4.7 Resumen. 4. 4.9 Respuestas de ejercicios de autoevaluación. referenciarlo e implementarlo en programas donde sea necesario su utilización. • Caracterizar datos estructurados de tipo fichero. Sinopsis 4.. Benjamín Spock.Capítulo 4 _____________________________________________________________ Registros y Ficheros _____________________________________________________________ Objetivos • Caracterizar datos estructurados de tipo registro.3 Arreglos de registros. • Utilizar operaciones con ficheros. Usted sabe más de lo que cree. procura ser un hombre de valores. definirlo. Baltasar Garcián. 4.4 Ficheros. 4.8 Ejercicios de autoevaluación. 4. 4. 4. sino porque se sabe emplearla. Pensamientos ◘ No trates de convertirte en un hombre de éxito. 82 . ◘ Confíe en sí mismo. ◘ La mejor inversión de una moneda es una llamada telefónica al hombre que se necesite en el momento justo. ◘ No se es superior porque se tenga inteligencia. referenciarlo e implementarlo en programas donde sea necesario su utilización. Marcela Farías H.1 Registros. definirlo. Albert Einstein.

1 Estructura para definir un registro. 83 . proporciona los datos tipo registro (records). TipoDato2 y TipoDatoN son la especificación del tipo de dato que se va a almacenar en cada uno de los campos. y especifica el tipo de dato que puede ocupar cada uno de los campos. Estatura: Real. hay casos en los que puede ser conveniente definir un tipo de variable para almacenar la información de una persona. TipoDato1. Type Nombre = Record NombreCampo1 : TipoDato1.2 Ejemplo de un registro llamado Persona. Apellidos : String[30]. En esta estructura el programador da nombre al nuevo tipo de dato y a cada uno de los campos que lo componen.2 hay una posible definición. luego de crear nuestro registro. Type Persona = Record Nombre : String[15]. En la figura 4. NombreCampo2 y NombreCampoN son los campos que conforman al registro. End. Figura 4. En la figura 4. Como se puede apreciar. Figura 4. tenemos que declarar una variable con el tipo que acabamos de establecer.1 aparece una declaración de este tipo de estructura. Sexo : String[1]. Ujc: Boolean. Para estos casos BP7. En la figura 4.4. NombreCampo2 : TipoDato2. Un registro es un tipo de dato definido por el programador en el que puede especificar su estructura interna. NombreCampoN : TipoDatoN. Peso: Real. NombreCampo1. Edad: Integer. 4. nombre es el identificador del registro.1 Registros. Esta especificación puede pertenecer a un tipo de dato estándar del BP7 o cualquiera que se halla definido en el programa. como otros lenguajes de programación actuales.1. Var Pers : Persona. Por ejemplo. los campos en los que se subdivide el dato no son todos del mismo tipo. End. el programador en muchas ocasiones suele encontrarse en situaciones en las que se quiere representar en un tipo de dato una información que posee estructura interna y son heterogénea.2 Definición de tipos de registros. Cuando se resuelven problemas mediante programas. es decir.

Campo2. Pers.4 Sintaxis de la estructura With.50. Además el BP7 cuenta con una estructura llamada With que permite acceder de manera más cómoda a los valores de los campos de los registros. Peso:=68. las instrucciones de la figura 4.3 muestra cómo podría continuar el ejemplo anterior asignándole datos a los campos del registro. Por ejemplo.50. Ujc:=True.Nombre:=’Rodiert’. Pers.Pers. Pers.Ujc:=True. La elección del uso de la estructura With se suele hacer en cada caso particular según la legibilidad que se requiera en el programa. solo se hace mediante las siguientes líneas: Writeln(‘Nombre: ’. La figura 4. end.Estatura:=1.3 Ejemplo para asignar valor a un registro.70. CampoN.70. En la figura 4. End. Pers. Pers.Nombre). Edad:=24.Sexo:=’M’. Figura 4.4 está la sintaxis de la estructura With. Apellidos:=’Zayas Alzamora’. With Nombre Do begin Campo1. Figura 4. 84 .Peso:=68. Sexo:=’M’. Si queremos mostrar los campos Nombre y Apellidos.Apellidos:=’Zayas Alzamora’. donde nombre es la especificación de la variable (o las variables separadas por comas) del tipo Record y a continuación se hace referencia al nombre de los campos a los que queremos acceder.Para referirnos a un campo de un registro se especifica mediante el nombre de la variable el nombre del campo unidos por un punto.Edad:=24. Estatura:=1. por citar un ejemplo. Writeln(‘Apellidos: ’.Apellidos). Pers. se podrán haber escrito del siguiente modo: With Pers Do Begin Nombre:=’Rodiert’. Pers.Pers.3.

ano). Type Fecha = Record { Registro para la fecha de nacimiento } mes : 1.nacimiento.3 Arreglos de registros. Write('Nota final del curso: '). dia : 1. Readln. Writeln('Fecha de nacimiento : '.6 y ya quedaría para un grupo de veinte alumnos.. Readln(Est. Writeln. nacimiento : Fecha.Est. 85 .apellidos).ano).nacimiento. se puede crear una estructura en forma de arreglo cuyos elementos sean los registros definidos para almacenar la información de los alumnos..nacimiento. Writeln('Nombre : '.nacimiento. ano : Integer . End. Var Est: Alumno. Write('Presione ENTER para ver los resultados almacenados'). Write('Año de nacimiento : ').Con lo que tenemos hasta ahora. pero existe la posibilidad de introducir una base de datos que contuviera información de los alumnos de un grupo. Figura 4. Readln(Est.apellidos). podemos hacer un programa ejemplo donde se aparezcan los datos generales o parciales de un estudiante con su nota final del curso. Write('Mes de nacimiento: '). Est. donde lo más lógico es ordenar los alumnos en una lista. Writeln('Apellidos : '. apellidos : String. 4.5 se puede aplicar para el caso de un solo alumno. Writeln('Nota final del curso: '. Est. Alumno = Record { Registro Alumno } nombre : String.'. Est.12.5 Programa ejemplo para el uso de registros.dia.dia).Est. Readln(Est. Uses CRT. Para ello.nacimiento.nacimiento.31. Write('Apellidos : '). End. { Damos los datos al campo } Write('Nombre : ') .5 se le puede modificar algunas líneas y quedaría como se ve en la figura 4. { Variable del tipo registro Alumno } Begin ClrScr.nota).mes.nombre). Program Ejemplo.Readln. Readln(Est. Readln(Est.'. Write('Día de nacimiento: '). Al programa de la figura 4. ' .5 aparece este programa. En el ejemplo de la figura 4. End. { Campo del tipo registro fecha } nota : Real. En la figura 4.Est. ' . Readln(Est.nombre).mes).nota:0:2).

Program Ejemplo; Uses CRT; Type Fecha = Record { Registro para la fecha de nacimiento } mes : 1..12; dia : 1..31; ano : Integer ; End; Alumno = Record { Registro Alumno } nombre : String; apellidos : String; nacimiento : Fecha; { Campo del tipo registro fecha } nota : Real; End; Var Listado: Array[1..20] of Alumno; { Arreglo de tipo registro } i: Integer; Begin ClrScr; { Damos los datos al campo } For i:=1 to 20 do begin Writeln; Write('Nombre ’,i,’: ') ; Readln(Listado[i].nombre); Write('Apellidos: '); Readln(Listado[i].apellidos); Write('Año de nacimiento: '); Readln(Listado[i].nacimiento.ano); Write('Mes de nacimiento: '); Readln(Listado[i].nacimiento.mes); Write('Día de nacimiento: '); Readln(Listado[i].nacimiento.dia); Write('Nota final del curso: '); Readln(Listado[i].nota); ClrScr; end; Writeln; Write('Presione ENTER para ver los resultados almacenados'); Readln; Writeln; For i:=1 to 20 do begin Writeln(i,' Nombre: ', Listado[i].nombre); Writeln('Apellidos: ', Listado[i].apellidos); Writeln('Fecha de nacimiento: ', Listado[i].nacimiento.dia, ' - ', Listado[i].nacimiento.mes, ' - ', Listado[i].nacimiento.ano); Writeln('Nota final del curso: ', Listado[i].nota:0:2); Writeln; end; Readln; End. Figura 4.6 Arreglo de registros.

86

Posteriormente de estudiar todos estos tipos de datos definidos por el usuario debe estar mucho más claro el sentido de los conceptos tipo de dato y variable. Mediante las estructuras de registros y los arreglos el BP7 ofrece la posibilidad de definir tipos de datos muy próximos a los utilizados en el lenguaje natural y que son una organización precisa de tipos de datos más sencillos, ya que se parecen más a la realidad. 4.4 Ficheros.

Un fichero al igual que un arreglo, es otro tipo de dato estructurado. Constituye una colección de datos todos del mismo tipo. La diferencia principal de este y un arreglo, es que en un fichero puede almacenarse en un dispositivo de almacenamiento masivo de información, es decir que nos permite almacenar información permanentemente y acceder a ella cuando sea necesario. Muchas aplicaciones requieren de esta importante estructura. Los tipos de almacenamientos que vimos hasta ahora, pierden su valor cuando se cierra la aplicación. En general hay dos tipos de ficheros que pueden ser generados: ficheros permanentes y ficheros temporales. Los permanentes son los que se mantienen en un dispositivo de almacenamiento de memoria auxiliar y por tanto se pueden guardar después de completar la ejecución del programa. El contenido de estos ficheros pueden ser recuperados o modificados en cualquier momento, bien por el programa que creó al fichero o por cualquier otro programa que haga referencia a este. Estos ficheros se denominan en BP7 ficheros externos. Los ficheros temporales, son los que hemos vistos en capítulos anteriores, ya que son almacenados en la memoria principal de la computadora y el valor que se almacena se pierde tan pronto como se termina la ejecución del programa que creó el mismo, por ende, estos ficheros son menos útiles y menos comunes, se denominan ficheros internos. 4.5 Constructor del tipo de dato file.

La definición de un fichero realiza en la zona para declarar una variable, solo hay que indicarle que es de tipo fichero. La forma general de esta declaración está expresada en la figura 4.7. Var Nombre : File of tipo; Figura 4.7 Estructura general para definir un fichero. Aquí Nombre es un identificador que representa el nombre del fichero y tipo se refiere al tipo de datos de los componentes individuales del un fichero. Estos componentes han de ser todos del mismo tipo: simples o estructurados, pero no pueden ser datos de tipo fichero. Por lo que un fichero no puede estar incluido dentro de otro fichero. Ejemplos de Definición de ficheros: -El ejemplo siguiente es una definición de fichero en la que cada componente es un dato de tipo Integer:

87

Var Puntuacion: FILE of Integer; -Definición de fichero en la que cada componente es un arreglo real de una dimensión: TYPE Temp=array [1..100] of real; Var datos: FILE of Temp; -Definición de fichero donde sus componentes son registros: TYPE Color = (Blanco, Amarillo, Azul, Rozado); Habitacion = RECORD Costo: Real; Largo: Integer; Ancho: integer; Color_Hab: Color; End; Var Casa :FILE of Habitacion; -Ahora se muestra un ejemplo de definición de fichero en el que dos ficheros distintos tienen los mismos componentes de tipo registro: TYPE estado =(soltero, casado, divorciado); Persona=RECORD Nombre: ARRAY¨[1..80] of char; Sexo: char; Edad: integer; Estadocivil: estado; End; Usuarios = File of persona; Var usuarioviejo, usuarionuevo: Usuarios; Observar que la longitud del fichero nunca se especifica dentro de la definición de fichero. Como regla general, la longitud máxima de un fichero está determinada sólo por la capacidad física del medio en que se está almacenando. 4.6 Operaciones con ficheros.

Las operaciones que podemos hacer con ficheros son las de escritura, lectura y recorrido. Con el tipo de dato File se pueden direccionar las entradas y salidas de los programas a impresoras, dispositivos auxiliares y también a archivos. El procedimiento Assign permite asignar a una variable del tipo File la dirección del dispositivo de entrada o salida que el programador pretende utilizar. Este procedimiento tiene dos argumentos. El primero es el nombre de la variable definida del tipo File y el segundo es un dato tipo String que contiene el nombre con el que el sistema operativo identifica el fichero que se quiere utilizar, ver figura 4.8. Assign(Nom_Fichero,Var_String); Figura 4.8 Estructura del procedimiento Assign.

88

{ Cerramos el canal de comunicación } Readln. { Escribimos en el TXT el valor de Texto } {5} Close(almacen). En el caso de archivos se ha de proceder a crear el archivo.9 se presenta un programa donde el usuario entra su nombre y este se almacena en un TXT con el nombre uno en el lugar donde está guardado el programa. Esta orden implica la realización de tareas que dependen del tipo de dispositivo al que nos estamos refiriendo. relacionados con las tareas que se realizan en un ordenador para transferir datos. Program Escritura. En el programa Escritura también aparecen dos instrucciones de tipo procedimiento: ReWrite y Close. En este se utiliza la instrucción Reset ya que el fichero existe y la operación que se va a realizar es de lectura. Nota: En todo programa que se realiza una entrada o salida de datos a un dispositivo que no es el estándar se han de incluir las ordenes correspondientes a la asignación de dispositivo.'uno. También se utiliza Reset para salida de datos a archivos que ya existen.9 Programa escritura de datos en un TXT. Como es de suponer este programa lo que hace es mostrar en pantalla el nombre introducido por el usuario en el programa anterior. { Lo almacenamos en Texto} {2} Assign(almacen.En la figura 4. Cuando el dispositivo se va a utilizar como entrada de datos. La lectura de los datos se realiza con la instrucción ya conocida por ustedes Read. { Preparamos al fichero para la escritura } {4} Write(almacen. en el programa de la figura 4.txt').Texto). Siempre que se acaba de transferir los datos del programa a un archivo hay que realizar esta tarea que va dirigida a liberar el archivo del control ejercido por el programa. Close: Cierra el canal de comunicación abierto anteriormente con el procedimiento Reset o Rewrite. { Declaramos la variable que queremos almacenar } Begin {1} Writeln('Entre su nombre: '). las inicializaciones necesarias se realizan con la instrucción Reset. Var almacen : File of string.10 se muestra cómo se usa esta instrucción haciendo referencia al TXT que creamos en el programa de la figura 4. Figura 4. { Creamos un TXT con el nombre uno } {3} Rewrite(almacen). 89 .9. inicialización y cierre. { Definimos el fichero } Texto : String. End. ReWrite: Especifica que el dispositivo identificado con almacen se va a utilizar para salida de datos. {Pedimos el nombre del usuario } Readln(Texto).

11.. el mantenimiento de dicha base de datos para que sea más eficiente podrá ser del modo que aparece en la figura 4. Por ejemplo. end. Type Fecha = Record mes: 1 . Var almacen : File of string.Texto). La función Eof es del tipo Boolean que devuelve el valor True si se a alcanzado el fin del fichero al que apunta su argumento. nacimiento : Fecha. I:Integer. Uses CRT. apellidos : String.'uno. en el problema esbozado en la sección anterior sobre una base de datos con información sobre los alumnos.. Program Base_Datos. nota : Real. ano: Integer. Listado: alumno. 31. Alumno = Record nombre : String. Reset(almacen). Close(almacen). Figura 4. end. Var alum: array[1.txt'). 12.20] of alumno. Begin Assign(almacen. Texto:String. Read(almacen. La función se utiliza en el programa Base_Datos para recorrer todo el archivo hasta el final y después añadir el nuevo registro. Clrscr. Aquí los datos introducidos no se pierden al cerrar el programa ya que estos son almacenados en fichero de texto llamado Archi. Writeln(Texto). End.. Readln. {Continúa} 90 . En este programa se utiliza la función Eof que tiene como argumento la variable del tipo File carpeta. Begin nomArchi:= 'Archi. nomArchi: String.txt. Carpeta: file of alumno.txt'.10 Programa Lectura que utiliza la instrucción Read.Program Lectura. dia: 1 .

alum[i]).'. with nacimiento do begin writeln ('Fecha de Nac.Readln. with listado do begin writeln ('Nombre y Apellidos: '. Write('Día de nacimiento: ').nacimiento. writeln ('Nota final: '. end. while not eof(Carpeta) do begin read(carpeta. Clrscr. Alum[i]. close(carpeta).' '. dia:= dia. Readln(ano). rewrite(carpeta). Figura 4.' . reset(Carpeta). with nacimiento do begin Write('Año de nacimiento: ').listado). Write('Nota final del curso: ').' . for i:=1 to 20 do write(carpeta. Readln(nota). Writeln. Write('Apellidos: ').apellidos). Clrscr. Writeln.mes. write('Presione Enter para ver los resultados '). 91 . end. Alum[i].ano:= ano. Alum[i]. Readln(mes).nota:0:2). Alum[i]. End. Alum[i]. end. Alum[i].i.nombre:= nombre. apellidos:= apellidos.': ') .nomArchi). Readln(nombre).: '. end. Write('Nombre '. readln.'.nombre. nacimiento.dia. end. end. Readln(dia). Write('Mes de nacimiento: ').mes:= mes.ano). writeln.for i:=1 to 20 do begin with Listado do begin writeln.11 Programa para almacenar datos en un fichero y luego mostrarlos en pantalla.nacimiento. close(carpeta). Assign(carpeta.nota:= nota. Readln(apellidos).

31.. Campo2. Ejemplo: Nombre_Registro. Sintaxis de la estructura With.Nombre_Campo With: Estructura que permite acceder de manera más cómoda a los valores de los campos de los registros. End..4.12. File: Estructura de datos que nos permite guardar un fichero de datos en disco para no perderlos después de ejecutar el programa. End. Ficheros permanentes: El contenido de estos ficheros pueden ser recuperados o modificados en cualquier momento. bien por el programa que creó al fichero o por cualquier otro programa que haga referencia a este.20] of Fecha. NombreCampoN : TipoDatoN.7 Resumen. Ejemplo: Type Fecha = Record mes : 1. With Nombre Do begin Campo1. Var Nacimiento: Array[1. { Arreglo de tipo registro } Fichero: Tipo de dato estructurado parecido a un arreglo. La definición de un registro se realiza en la zona de declaraciones del programa. CampoN. 92 . NombreCampo2 : TipoDato2. Type Nombre = Record NombreCampo1 : TipoDato1. ano : Integer .. Es una colección de datos todos del mismo tipo que permite almacenar información permanentemente y acceder a ella cuando sea necesario. end. Para crear un arreglo de registros primero se define el registro y luego se hace el arreglo y se especifica que el tipo de dato es el registro definido. Estructura para definir un registro. dia : 1. Los arreglos de registros son estructuras cuyos elementos del arreglo estén formados por registros definidos para almacenar información. Estos ficheros se denominan ficheros externos. Para referirnos a un campo de un registro se especifica mediante el nombre de la variable y el nombre del campo unidos por un punto. Un registro es una estructura de datos en la cual se puede almacenar una colección de datos cuyos tipos pueden ser distintos.

Eof: Función del tipo Boolean que devuelve el valor True si se a alcanzado el fin del fichero al que apunta su argumento. Sexo.1.Var_String).1 Defina un registro para cada una de las situaciones siguientes: a) Almacenar los resultados de los tres trabajos de control de la asignatura de matemática.8 Ejercicios de autoevaluación.2 realice una asignación con un valor válido para el campo Naranjas del inciso b y para el campo Sala del inciso c del ejercicio 1. También se utiliza Reset para salida de datos a archivos que ya existen. Apellidos. se denominan ficheros internos. 1. estos ficheros son menos útiles aunque no dejan de ser aprovechados. 1. Var Nombre : File of tipo. 1. Naranjas y Piñas que se guarda en un almacén de frutas. Estructura del procedimiento Assign. Sala y Número de Cama. 1. 4. Edad. Assign(Nom_Fichero. Estructura general para definir un fichero. ReWrite: Especifica que el dispositivo identificado como parámetro se va a utilizar para salida de datos. b) Almacenar la cantidad de Mango. estos son los ficheros ____________ y ficheros _____________. Assign: Procedimiento que permite asignar a una variable del tipo File la dirección del dispositivo de entrada o salida.6 Complete las siguientes oraciones relacionado con los ficheros: a) Se llama __________ a una colección de datos todos del mismo tipo que permite almacenar información permanentemente y acceder a ella cuando sea necesario. 93 . Toronjas. por ende. Este prepara al archivo para la escritura.Ficheros temporales: Son los datos que son almacenados en la memoria principal de la computadora y el valor que se almacena se pierde tan pronto como se termina la ejecución del programa que creó el mismo. b) Hay dos tipos de ficheros que pueden ser generados. Siempre que se acaba de transferir los datos del programa a un archivo hay que realizar esta tarea que va dirigida a liberar el archivo del control ejercido por el programa.3 Partiendo de las declaraciones hechas por usted en del ejercicio 1. Reset: Instrucción que se utiliza cuando se va a realizar un entrada de datos. 1.1.5 Defina un arreglo cuyos 10 elementos estén conformado por un registro llamado libros con los campos Título y Autor. En el caso de archivos se ha de proceder a crear el archivo.2 Declare una variable para cada uno de los registros definidos en el ejercicio anterior.4 Utilizando la estructura With realice una asignación a cada campo del inciso c del ejercicio 1. Close: Cierra el canal de comunicación abierto con el procedimiento Reset o Rewrite. 1. c) Los datos de un persona ingresada en un hospital cuyos datos son: Nombre.

8 Organice el programa siguiente teniendo en cuenta que tiene como objetivo el de almacenar en un TXT el texto REVOLUCIÓN: Program Escritura..9 Organice el programa siguiente teniendo en cuenta que tiene como objetivo leer dato de un TXT ya existente y mostrarlo en pantalla: 94 . Assign(DirAlm. Estos ficheros también se conocen como ficheros __________.Texto).'Dato.txt'). Var Begin Write(DirAlm.Assign identificado como parámetro se va a utilizar para salida de datos... DirAlm : File of String. También se conocen como ficheros __________.Close alcanzado el fin del fichero al que apunta su argumento.. Readln. ___ Procedimiento que permite asignar a una variable del tipo File la 3. 1. End.ReWrite abierto con el procedimiento Reset o Rewrite.7 Enlace según corresponda la columna A con la B: Columna A Columna B ___ Especifica que el dispositivo 1. ___ Cierra el canal de comunicación 2. 1.c) Los ficheros ____________ almacenan los datos en la memoria principal de la computadora y el valor almacenado se pierde tan pronto como se termina la ejecución del programa. 1. Rewrite(DirAlm). d) El contenido de los ficheros ____________pueden ser recuperados o modificados en cualquier momento. Texto:= ’REVOLUCIÓN’. ___ Función del tipo Boolean que devuelve el valor True si se a 4. Texto: String. ___ Instrucción que se utiliza cuando 5.Reset dirección del dispositivo de entrada o salida.Eof se va a realizar un entrada de datos.. Close(DirAlm).

Var CantLib: Array[] of Libros. Sexo: String[1].'Dato. a) Type Mat = Record PrimTCont : Real.7 Columna B: 2.9 1. c) Type Paciente = Record Nombre: String.4 With Paciente do begin Nombre:=’Reinier’.Naranjas:=77. Cama:= 5. 1. c) Temporales. end.T). d) Permanentes. Sala: String. Inciso b: Ingreso. Inciso c Var Ingreso: Paciente.1 Respuestas de ejercicios de autoevaluación. 5 y 3. End. Edad: Integer. Piñas: Integer. TercTCont : Real.6 a) Fichero.4.3 Inciso a: Frut. Autor: String. Cama: Integer. 95 . Close(Contenedor).5 Type Libros record Titulo: String. Toronjas: Integer. b) Permanentes. 1. Naranjas: Integer. Assign(Contenedor. Readln.Sala:= ‘3B’. Temporales. Contenedor: File of String. Reset(Contenedor). Edad:= 24. 1. b) Type Frutas = Record Mango: Integer.Program Lectura.T). Sexo:= ‘M’. SengTCont : Real. 1. Read(Contenedor. Internos.txt'). Begin Writeln(‘El texto encontrado es: ’. End. Sala:= ‘3B’. Var T:String. 1.2 Inciso a Var Asig: Mat. 1. Apellidos: String. Externos. 1. 4. end. Apellidos:= ‘Escobar Santiesteban’. Inciso b Var Frut: Frutas. End. End.

1. Begin Assign(Contenedor.10 Definir un dato Alumno de tipo registro que contenga: nombre. Readln. End. T:String.'Dato. End. 1. Writeln(‘El texto encontrado es: ’. 1. Texto: String. 96 .'Dato. 1.11 Realice un programa que permita entrar los siguientes datos de un grupo n de alumnos: nombre. • Obtenga el promedio del total a pagar con respecto a los trabajadores.T). Close(Contenedor). Readln. 1.Texto). Seguidamente de entrados los datos se desea obtener un listado ordenado por índice académico de forma descendente. apellidos e índice académico. Read(Contenedor. salario básico y la cantidad de ausencias en el mes. Assign(DirAlm. Begin Texto:= ’REVOLUCIÓN’. Reset(Contenedor). El programa pide los datos necesarios y a continuación muestra un listado de los estudiantes que tienen al menos un trabajo práctico suspenso. 1. edad y su promedio general. Close(DirAlm). Var DirAlm : File of String. apellidos. apellidos. 4. Write(DirAlm.txt').13 Elabore un programa que permita entrar los datos de 20 de trabajadores: nombre.T). apellidos y las notas de los cuatro trabajos prácticos en la asignatura de LTP. • Obtenga el total de dinero a pagar por la empresa.12 Realice un programa que permita entrar los siguientes datos de un grupo 15 de alumnos: nombre. • Mostrar cobro del mes trabajado con relación a la cantidad de ausencias en el mes (24 días laborables). • Obtenga el porcentaje de trabajadores cuyo salario supera el promedio.8 Program Escritura. Rewrite(DirAlm).txt'). Var Contenedor: File of String.9 Program Lectura.10 Ejercicios propuestos.

segundo apellido. Los datos que se necesitan son: nombre del equipo. Los datos que se necesitan son: nombre. b. el teléfono en caso que lo posean y además si son del PCC. Realice un grupo de instrucciones que lea los datos del fichero y devuelva la cantidad de trabajadores que no tienen teléfono particular.15 Realice un programa que guarde en memoria un listado que contenga la siguiente información de los 16 equipos de béisbol cubano. Nombre. se lleva un control estricto de cada uno de sus trabajadores. se desea obtener una sublista ordenada en forma descendente por el average de cada equipo. número de uniforme.1. Si se sabe la contraseña y logra entrar. el sexo. Fórmula para calcular el average: Ave = Cantidad de hit / veces al bate * 1000. Después de entrado estos datos. Almacene los anteriores datos en un fichero. apellidos. se conoce el nombre completo. Agregue la posibilidad de que el usuario pueda ver o no los datos almacenados. 1. 1. se desea obtener una sublista ordenada en forma descendente por el average de cada pelotero. c. juegos jugados y cantidad de juegos ganados. veces al bate y cantidad de hit conectados. Agregue la posibilidad de que el programa lea los datos del fichero y devuelva los datos de un trabajador dado identificado. 1. Al ejecutarse el programa se pide que se introduzca la contraseña para poder entrar a trabajar. Se dan cinco oportunidades para poner la contraseña correcta y si no se la sabe en estos intentos el programa se cerrará. d. Fórmula para calcular el average: Ave = Juegos ganados / Juegos jugados * 1000. carne de identidad y sexo. edad y sexo. Realice un grupo de instrucciones que lea los datos del fichero y muestre en pantalla los trabajadores que pertenecen a la UJC. el usuario tendrá la posibilidad de modificar la contraseña y esa nueva es la que quedará almacenada en el fichero. 1. edad. 97 .14 Se desea guardar en memoria un listado que contenga la información de los nueve bateadores regulares un equipo de béisbol. del la UJC o no pertenecen a ninguna de las dos.17 Elabore un programa que permita entrar los siguientes datos de un grupo de alumnos y guardarlos en un fichero. Después de entrado estos datos. apellidos. el número de identidad.19 Realice un programa donde el programa almacene en un fichero una contraseña.18 En la fábrica de refresco de la Isla de la Juventud. a. 1.16 Confeccione un programa que almacene en un arreglo de registro los datos personales de los 10 trabajadores de un departamento como son: nombre. primer apellido.

• Definir e Implementar funciones. ◘ Nunca se debe perder tiempo en vanos lamentos por el pasado ni en quejas por los cambios que nos incomodan. alcanzaríamos la excelencia. ◘ La juventud es el tiempo de estudiar la sabiduría. 5. 5. Clement Stone. así como la vejez es el tiempo de practicarla. Estructura de una función. sigo mi camino.8 Resumen. 5.5 Funciones. Pensamientos ◘ La precisión en el objetivo es el punto de partida para cualquier triunfo. 5. en lugar de pensar en alcanzar el cielo algún día.2 Procedimientos. Funciones recursivas. pues el cambio es la esencia de la vida. a través de procedimientos con vista a desarrollar buenos hábitos de la programación. Estructura de un procedimiento. Vince Lombarda.11 Respuestas de ejercicios de autoevaluación. importancia de su utilización. 5.1 Principios de modularidad. 5. J. Pero si la buscamos.12 Ejercicios propuestos. ◘ Así que. Sinopsis 5. 98 . 5. J.3 Paso de parámetro por valor y por referencia. Anatole France. Ventajas. • Definir e implementar módulos.4 Ejemplos de procedimientos creados por el programador.Capítulo 5 _____________________________________________________________ Modularidad _____________________________________________________________ Objetivos • Caracterizar el principio de la modularidad. • Comprender cómo escribir y utilizar funciones que se llamen a sí mismas (Recursividad). Rousseau. 5. día a día. • Pasar parámetros por valor y por referencia. ◘ La perfección no existe. 5.9 Ejercicios de autoevaluación. 5. Emily Dickinson.7 Recursividad.6 Ejemplos de funciones creadas por el programador.

Con las estructuras vistas hasta ahora del BP7 se pueden construir programas que realizan tareas muy complejas pero con escasa legibilidad por su tamaño en cuanto a líneas de código.Down: procedimientos (Procedure) y funciones (Function). Recuerden que para crear un procedimientos.1 Principios de modularidad. ClrEol ClrScr Sound TextColor Delay GotoXY NoSound TextBackground Figura 5. es muy común. Un subprograma es un conjunto de sentencias de un programa que realizan una determinada tarea y que pueden ser ejecutadas desde más de un punto del programa principal.1 se muestran algunos procedimientos predefinidos en BP7. Un procedimiento es una sección de código separada del programa principal que realiza una acción y no devuelve valor alguno. resolver problemas mediante la modularidad. A esta estrategia se lo conoce con el nombre “Divide y Vencerás”. 5.2 aparece la estructura general para definir un procedimiento. La sintaxis con la que se especifican estos procedimientos es similar a la estructura de un programa en BP7 pero se usa la palabra reservada Procedure para indicar que se trata de un procedimiento parcial. Ventajas.2 Procedimientos. Nosotros también podemos crear los nuestros. 99 . y además muy efectivo. BP7 brinda dos herramientas básicas para realizar programación descendente o Top . al igual que en otras ciencias. también se le conoce con el nombre de subrutina. en la figura 5. independientemente de los comentarios que se colocan en algunas líneas para hacer más claro el programa. BP7 agrega además el concepto de unidad (Unit). Generalmente se les conoce a estos como subprogramas. En la informática. estructuras básicas en la programación modular. que permite aprovechar módulos independientes ya compilados donde aparecen un conjunto de subprogramas que le facilitan al programador el no tener que hacer subprogramas que ya existen. Desde el punto de vista de la legibilidad es deseable que un programa de ordenador pueda estructurarse siguiendo lo más posible el esquema conceptual que se ha pensado utilizar para resolver el problema. Estructura de un procedimiento. Este proceso consiste en tomar un problema convertirlo en una serie de problemas más sencillos y resolver después cada uno de ellos. En este capítulo te dotarás de los conocimientos necesarios para la construcción de procedimientos y funciones. En algunas ocasiones usamos procedimientos que ya vienen con el lenguaje. en la figura 5. lo debemos hacer en la zona de declaraciones.5.1 Ejemplos de procedimientos predefinidos.

Palabra clave del procedimiento. {Llama al procedimiento} Readln. Uses Crt.Fin del procedimiento.. end.Cuerpo del procedimiento. El programa de la figura 5.3 Creación y llamada del procedimiento Titulo. PROCEDURE Titulo. Titulo.3 ilustra el uso o la llamada al procedimiento creado anteriormente Program Procedimientos. 6. El problema que les mostraremos a continuación será resuelto mediante la programación modular con el objetivo de que vean la organización que muestra esta forma de programar. Problema: Dado los nombres y las notas de un grupo de N estudiantes. BEGIN WriteLn (‘**Bienvenido a la Modularidad**’). END. 2. Begin Writeln ('Programa ejemplo del uso de procedimientos'). Figura 5.. Writeln. Ya cuando se a declarado el procedimiento es posible emplearlo como una instrucción de BP7.Partes 1. A continuación se vamos a crear un procedimiento que imprima en pantalla una “**Bienvenido a la Modularidad**”. 5. Figura 5.2 Partes de un procedimiento para su declaración. 3. Al uso de un procedimiento se le conoce como llamada al procedimiento. {Creación del procedimiento} begin Writeln (‘**BIENVENIDO A LA MODULARIDAD**’). End... 4. confecciones un programa que muestre en pantalla los nombres de los estudiantes que tengan más de 90 puntos.. Procedure titulo.. 100 .Nombre del procedimiento.Inicio del procedimiento.Lista de parámetros.

end.': '). end..Nota[i]:0:2).Nomb[i]).'.. Writeln('Resultados').Program Notas. Write('Buscando notas mayores que 90').'. Writeln. Uses CRT.. {Procedimiento para entrada de datos} begin CLRSCR. For i:= 1 to N do begin Write('Nombre '. CLRSCR. end.. Readln(Nomb[i]).100] of String.j+2). Procedure Entrada. end.Nomb[i]. Write('Nota de '. N. Readln.': ').'.. Delay(1000). j:=1. CLRSCR. Var Nomb: array[1. begin Writeln('Presione ENTER para ver los resultados. Readln(Nota[i]). Gotoxy(15. For i:=1 to 5 do begin Write(' . } End. Write('Entre la cantidad de estudiantes del grupo: '). j.'). CLRSCR. Nota:array[1. Begin Entrada. { las llamadas a los procedimientos. { Parte del programa donde se realizan } Salida. Readln. Writeln. '). 101 . i: Integer. end. Readln(N). For I:=1 to N do begin if nota[i] >90 Then begin Write(j.i. Writeln('Estudiantes con más de 90 puntos:').100] of Real.Write('. Procedure Salida. end. INC(j).

4 se realiza un procedimiento que calcula el área de un círculo. una fecha. mientras que el segundo es un parámetro por referencia (o dirección como también se le conoce) porque el contenido cambia.5. if (radiocirc > 0) then begin areacirculo(radiocirc. en fin. códigos que realicen la misma operación aunque con diferentes variable. writeln. Procedure areacirculo (radio:real. uno de los objetivos fundamentales de la programación modular es el de no repetir líneas de código. Un parámetro es una variable que puede ser un número. Begin clrscr. 102 . Como se ha explicado hasta ahora. Los parámetro puede ser pasados por valor o por referencia en esta sección se resolverán problemas donde se ejemplifique el uso de esto tipos de parámetros. writeln. donde se pasa como parámetros Radio y Area.resultado:8:2).'). readln(radiocirc). BP7 brinda la solución de estos problemas mediante la fabricación de procedimientos utilizando la lista de parámetros.5).4 Ejemplo de paso por valor y por referencia. resultado: real.var area: real). readln. {radiocirc se corresponde con radio y resultado con area} gotoxy(20. En el programa de la figura 5.3 Paso de parámetro por valor y por referencia. writeln('el área del círculo es: '. var radiocirc. end else write('no puede introducir un radio negativo. o mejor dicho. const pi = 3. o simplemente texto. cualquier cosa que personalice el funcionamiento de un programa. uses crt. Figura 5. Program area_circ. write('introduzca el radio del círculo: '). El primero es un parámetro por valor ya que este es utilizado solo para el cálculo pero su valor no cambia durante el proceso. End. resultado).14. end. begin area := pi * sqr(radio). un nombre de archivo.

Y). La variable Z de este procedimiento es local y por lo tanto solo se puede utilizar en este procedimiento. Writeln('Se intercambiaron los valores de X y Y. Writeln('Valor de X: '. Writeln('Valor de Y: '. Program Referencia. end.X). Salida. begin Writeln. Var X. B: Integer). Writeln('Entre el valor de Y: '). Y). si el parámetro se definió como un entero. Begin Entrada. Intercambio(X.Readln(X). Nota: La lista de parámetros que se le pasan a un procedimiento deben corresponder con el tipo de dato con el se definió el parámetro en su declaración. este debe ser inicializado con la palabra reservada var.Como pueden apreciar cuando el parámetro que se pasa al procedimiento no se indica con la palabra reservada Var este pasa por valor. Procedure Intercambio(Var A. Uses CRT. En el programa de la figura 5. Y: Integer. B:= Z. End. Var Z: Integer. Procedure Entrada. el 103 . Readln. en otras palabras. Este procedimiento que acabamos de ver (Intercambio) se puede aplicar cuando queremos organizar una lista de números como la que vimos en capítulos anteriores donde se mostraba un escalafón de un grupo de alumnos. estas si se pueden utilizar en cualquier parte del programa. A:= B.Readln(Y). begin ClrScr. Las variables X y Y son globales.'). begin Z:= A. Figura 5. Writeln('Entre el valor de X: ').4. end. end.5 aparece un ejemplo donde los dos parámetros que se pasan en el procedimiento Intercambio son por referencia. como aparece en la figura 5.5 Procedimiento Intercambio(Parámetros por referencia). Procedure Salida. Todo lo contrario ocurre cuando se quiere pasar un parámetro por referencia.

For i:=n downto 1 do begin if (n mod i)=0 then begin fin:=false. end. j:=j-1.dato permisible es un número entero. Repeat N2:= Random(P)+1. Writeln(N1. while (i>1) and (not fin) do begin if (i mod j)=0 then fin:=true. 104 . N1 y N2 son parámetros por referencia. Var N1. j:=i-1.n.N2). Procedure Factores(n:integer). end. El procedimiento hace que N1 y N2 nunca sean iguales utilizando un bucle.4 Ejemplos de procedimientos creados por el programador. N2: Integer). if j=1 then write(i:2). fin:boolean. begin Randomize.’ + ’.j:integer. de otra forma generará un error de ejecución. end. Esto les permitirá ejercitar el uso de los procedimiento en un programa. Los ejemplos que aparecen a continuación deben ser llevados a un programa. Procedure Generar(P: Integer. ya que aquí solo se plantea la situación problémica y la posible solución mediante procedimiento. end. Writeln. donde P es un parámetro por valor. Ejemplo 1: Procedimiento que genere dos números aleatorios entre 1 y P para ser sumados. 5. Until N1 <> N2. begin Writeln('Los factores primos de '. N1:= Random(P)+1. end.' son: '). Ejemplo 2: Procedimiento que obtiene los factores primos de un número positivo. var i.

otras funciones aparecen expuestas en la figura 5.Inicio de la función. Estructura de una función.7 Estructura de una función para su declaración. 5. Writeln( 'Cantidad de Pesos Convertibles: '. Aquí se utiliza la función GETDATE. esta devuelve el año.'-'. 1. end. minutos. A.D. donde el lunes(1) y así hasta el domingo(7). GetDate(A. Var PesosC: Real. has utilizado funciones predefinidas por el lenguaje.D. lo debemos hacer en la zona de declaraciones del programa. En este ejemplo solo se muestra el día.6.Tipo de devolución. día y el número de día de la semana. que es una de las herramienta de programación más utilizadas por los programadores. Siempre que se va a definir una función. Procedure convertir(Dolares: Integer). puede que le haga falta en algún programa. 5.Cuerpo de la función. ejemplo de estas son las recientes GETTIME y GETDATE.Fin de la función. Una función no son más que una sección de código separada del programa principal que realiza una acción y devuelve un valor. tienen que ser de tipo Word.M. begin PesosC:= Dolares .Palabra clave de la función. 7. 3. Figura 5.5 Funciones. D. 105 . Estos datos los almacena en las variables declaradas con ese objetivo. Recuerden que por cada dólar Norteamericanos se descuenta un 18 %.Nombre de la función. mes. Pruebe esta última función.Ejemplo 3: Procedimiento que realiza la conversión de moneda de dólares de Norteamericanos a pesos convertibles Cubanos y pida muestre la fecha para saber el día que se realizó el cambio.S).M. 6. ORD RNADOM RAUND SQR LENGTH COPY POS COS SQRT SIN UPCASE TRUNC Figura 5. Nota: Para usar estas funciones debe ser declarada la unidad DOS en la lista Uses. S: Word. 4. Writeln('Fecha de Cambio: '.'-'.PesosC:4:2 ). En la figura 5. el mes y el año porque es lo que se pide.6 Ejemplos de funciones predefinidas del BP7. M. La función GETTIME devuelve el tiempo en hora. En el transcurso de este libro.A).7 está expresada la estructura para definir una función. 2. En este epígrafe vamos a crear nuestras propias funciones.18 * Dolares.Lista de parámetros. segundos y centésimas.0.

N2)). Writeln. Figura 5. Program Funcion_Suma.8. Pero con UPCASE podemos convertir toda la cadena.Readln(N2). donde se le pasa como parámetros dos números enteros y devuelve un entero.Suma(N1. Var N1.9 muestra la continuación de la figura 5. end.Readln(N1). Function Suma(Numero1. Para invocar la función se procede de la misma forma que para un procedimiento. Esto lo podemos hacer con un ciclo que valla desde el primer carácter hasta el último.8 se muestra la función Suma.8 Ejemplo de función que devuelve la suma de dos números. Con todo esto podemos hacer un función que convierta una cadena de N caracteres. end. Function Suma(Numero1. Aquí se le asigna a la función el valor de la suma de los números entrados como parámetros.Numero2: Integer):Integer. Se escribe el nombre de la función a la que se quiere invocar y entre paréntesis se colocan los parámetros que exige esta función. Figura 5. pasando carácter por carácter de la cadena e ir convirtiéndolo en mayúscula. Write('Entre un número: ').Numero2: Integer):Integer. End. aquí no es posible. 5. Uses Crt.9 Programa que suma dos números mediante un función. Mediante la función LENGTH podemos saber cuál es la longitud de la cadena.Como se puede apreciar una función es muy parecida a un procedimiento. readln. En la figura 5. Solución: 106 .N2:Integer. begin Suma := Numero1 + Numero2. Ejemplo 1: BP7 cuenta con la función UPCASE que devuelve al carácter pasado como parámetro en mayúscula. Write('La Suma es: '. El programa de la figura 5. pero y si queremos convertir toda una cadena en mayúscula.6 Ejemplos de funciones creadas por el programador. En algunas versiones de Pascal esta asignación es posible hacerla mediante la palabra Result. Vamos a ver cómo quedaría un función que sume dos números cualquiera. la diferencia radica en que una función tiene que estar concebida para que siempre devuelva un resultado a partir del parámetro que se le pasa. Begin ClrScr. begin Suma := Numero1 + Numero2. ¿Qué función nos permite hacer esto? La respuesta es ninguna. Write('Entre otro número: ').

Readln(Texto). Uses Crt. Writeln('*** Introduce tres números enteros ***'). Solución: Program Funcion_Ordenados. Var n1. Begin ClrScr. Writeln(Mayuscula(Texto)).') Else Writeln('Los tres números NO están en orden'). End. 107 . Readln(n3). var i: integer. begin ordenados := (i <= j) end. Write(‘Entre una palabra: ’). n2. Writeln. n3: integer. pues eso fue lo que se hizo aquí a la hora de llamar a la función. j: Integer): Boolean. Readln. En este programa se realizó una función que devuelve TRUE si dos número se ha introducido en orden ascendente y FALSE en caso contrario. Claro que si el primero es menor o igual que el segundo y el segundo es menor o igual que el tercero esto tres números tienen un orden ascendente. { devuelve la palabra (T) en mayúscula} end. begin for i:= 1 to Length(T) do { Recorre la cadena hasta el final} T[I] := Upcase(T[I]). Readln. Write('Tercero: '). Function Ordenados(i. Readln(n1). Write('Primero: '). Writeln. End.n2) and Ordenados(n2. Write('Segundo: ').Readln(n2). Uses Crt. { Va convirtiendo el caracter (i) a mayúscula} Mayuscula := T. Begin ClrScr. Writeln(‘Conversión a mayúscula’).n3) Then Writeln('Los tres números están en orden. Ejemplo 2: El programa que verán a continuación lee tres números enteros e imprime si están o no en orden numérico ascendente. var Texto:string. Function Mayuscula(T: string): string.Program Funcion_Mayusc. If Ordenados(n1.

otto son palíndromo. reinier.').Ejemplo 3: Muchas veces hemos escuchado decir entre los programadores: “El usuario es el ser más entrometido que existe”. Readln. Por ejemplo las palabras ala. Aquí se utiliza un el tipo de dato CHAR que almacena un caracter cualquiera. Un palíndromo es una palabra que se lee igual adelante que hacia atrás. Esta operación se realiza mediante un conteo descendente caracter por carácter. El programador tiene que concebir su programa para validar esto posibles errores que en muchas ocasiones son escritos de manera inconsciente por el usuario.') Else Writeln('El caracter introducido no es numérico. y el usuario entra un texto. esto produce un error fatal. La función Length devuelve la cantidad de caracteres de la cadena pasada como parámetro. Begin Clrscr. Function verificar (caracter: char) : Boolean. en este caso Carac. carac:= Readkey. Writeln('Introduce un caracter para ver si es numérico. Uses crt. { Muestro el caracter entrado } If verificar (carac) then Writeln('El caracter introducido es numérico. El programa que se muestra a continuación cuenta con una función que verifica si un caracter introducido es un número o no. Var carac: Char. La función Pali devuelve True si la palabra pasada como parámetro es palíndromo y False en caso contrario. ReadKey realiza una lectura del caracter que se tecleó y lo almacena en la variable que se asigna. sayas. Ejemplo 4: Este ejemplo verifica si una palabra es palíndromo o no a través de una función. end. ana. begin verificar := (caracter >= '0') and (caracter <= '9'). Mediante el bucle For garantizamos invertir la palabra almacenada en la variable Texto y almacenar la palabra invertida en TextInv.'). { Almaceno en carac el caracter entrado } Writeln(carac). Esta afirmación se debe a que en ciertos momentos se piden datos en el programa que tienen que ser numéricos. 108 . End. por citar un ejemplo. Solución: Program escaracter.

Begin ClrScr. De esto se puede decir en otras palabras que el factorial de N es la multiplicación sucesiva de todos los números desde 1 hasta N.') Else Writeln(T. Function Pali(Texto:String):Boolean.'). para esto vamos a apoyarnos en la solución de un problema donde sea necesario el uso de este tipo de función para que sea más eficiente su solución. 109 . Hay que tener en cuenta que el factorial de 0 es igual a 1.' es palíndromo. Así planteada esta definición puede que sea un poco engorroso de entender. If Texto = TextInv Then Pali:= True Else Pali:= False. begin TextInv:=''. 5.7 Recursividad. Uses CRT. Funciones recursivas. If Pali(T) Then Writeln(T. Veamos el siguiente problema: Determine el factorial de un número entero positivo entrado por el teclado. Writeln('Entre una palabra para ver si es palíndromo o no. Esto no es para que cojan miedo. For i:=Length(texto) downto 1 do TextInv:=TextInv + Texto[i]. sino para que se ajusten en sus asientos y pongan todas sus neuronas a funcionar en esta sección. End. end. El de 5: 5! = 1 * 2 * 3 * 4 * 5 = 120. TextInv:string. La recursión es una herramienta de programación que suele ser una de las más difícil de entender por aquellos que son principiantes y la que más dolor de cabeza provoca a los estudiantes. Readln.' no es palíndromo. Readln(T). Una función recursiva es aquella que se llama así misma en el cuerpo de la función.'). var i: Integer. Solución: El factorial de 4 lo podemos expresar de la siguiente forma: 4! = 1 * 2 * 3 * 4 = 24. var T:string.Solución: Program Palindromo.

Observe el rastreo de esta función en la figura 5. 0! = 1 1! = 1 2! = 1 * 2 3! = 1 * 2 * 3 4! = 1 * 2 * 3 * 4 5! = 1 * 2 * 3 * 4 * 5 6! = 1 * 2 * 3 * 4 * 5 * 6 Figura 5. a esto es a lo que se le llama recursividad.10 Explicación del cálculo del factorial. en esta función se hace un llamado a la propia función dentro del cuerpo de la misma. 110 .En esta solución nos podemos dar cuenta que el N! es igual a N * (N . Figura 5. En el rastreo se puede ver que va cambiando el parámetro de entrada en cada llamada a la función. el factorial del número en cuestión y este se multiplica por el otro y así hasta tener un resultado único. encontramos que 4! = 4 * 3! Y así repitiendo este proceso hasta llegar al caso más sencillo que es 0! = 1.1)!. Según vimos anteriormente 5! es igual a 5 * 4! Por tanto antes de poder evaluar 5!.11 Función factorial. Como se puede apreciar. Ahora cómo podemos expresar en una fórmula esto que vimos anteriormente.10.1). Aquí se da en cada línea un resultado. Veamos cómo puede utilizarse la recursividad para evaluar el factorial de 5. end. es decir comenzando por la línea (6) donde el valor es directo. debemos evaluar 4! Utilizando la definición. El resultado final es 120 que es el factorial de 5. La función que aparece en la figura 5. teniendo en cuenta que N es un número entero positivo. si no entiendes lo que digo mira el ejemplo de la figura 5. begin If N = 0 Then Factorial:= 1 Else Factorial := N * Factorial(N . Function Factorial(N: Integer):Integer.12 donde se pasa como parámetro el número 5.11 es una función recursiva y calcula el factorial de N. Partiendo de esto tenemos que (1) 5! = 5 * 4! (2) 4! = 4 * 3! (3) 3! = 3 * 2! (4) 2! = 2 * 1! (5) 1! = 1 * 0! (6) 0! = 1 Este proceso es resuelto de atrás hacia delante.

La llamada a un procedimiento se hace a través de su nombre. cualquier cosa que personalice el funcionamiento de un programa.Fin del procedimiento. Nota: Hay que tener cuidado cuando intentamos hacer una función recursiva que no tenga un valor final que ponga fin a las llamadas de la función. 4.. Parámetro: Variable que puede ser un número. su valor no cambia durante el proceso.. un nombre de archivo.Palabra clave del procedimiento. en fin. Parámetro por valor: El valor de la variable es utilizado solo para el cálculo. Partes de un procedimiento para su declaración.. 5. 5. 111 .Inicio del procedimiento...Nombre del procedimiento. 3.N=5 Factorial =5*Factorial(4) N=4 Factorial=4 *Factorial(3) N=3 Factorial=3*Factorial(2) N=2 Factorial=2*Factorial(1) N=1 Factorial=1*Factorial(0) N=0 Factorial=1 1 2 6 24 120 Figura 5.Cuerpo del procedimiento.12 Rastreo de la función factorial con parámetro 5. Partes 1. Procedimiento: Sección de código separada del programa principal que realiza una acción y no devuelve valor alguno. o simplemente texto. una fecha.8 Resumen.Lista de parámetros. Recuerde que a la hora de declarar un parámetro por referencia debe declararlo con la palabra reservada VAR. 6. esto genera un programa que una ves que se llama la función esta no devuelve valor alguno y se bloquea el programa. Parámetro por referencia o dirección: A esta variable se le asigna un valor durante el proceso de ejecución del procedimiento. 2..

Lista de parámetros. 112 . Para invocar la función se escribe el nombre de la función a la que se quiere llamar y entre paréntesis se colocan los parámetros que exige esta función. 5. 2.La lista de parámetros que se le pasan a un procedimiento deben corresponder con el tipo de dato con el se definió el parámetro en su declaración.Inicio de la función. 6. Para utilizar las funciones GETTIME y GETDATE debe ser declarada la unidad DOS en la lista Uses. c) La función GetTime retorna el tiempo en _________.9 Ejercicios de autoevaluación.Nombre de la función. b) __________ es una función que devuelve la longitud de la cadena pasada como parámetro. GETDATE: Función que devuelve el año. donde el lunes(1) y así hasta el domingo(7).1 Complete las siguientes oraciones: a) Se llama _____________ a un subprograma que realiza una acción y devuelve un valor único y ________________ al subprograma que realiza una acción y no devuelve valor alguno. Estos datos los almacena en las variables declaradas con ese objetivo. minutos. Función: Sección de código separada del programa principal que realiza una acción y devuelve un valor único. día y el número de día de la semana. Toda función recursiva tiene que estar concebida de forma tal que tenga un límite de llamadas a ella misma para que ponga fin a la función. tienen que ser de tipo Word. __________ y ___________.Cuerpo de la función. GETTIME: Función que devuelve el tiempo en hora. 5. 4. segundos y centésimas. LENGTH: Función que devuelve la longitud de la cadena pasada como parámetro. Función recursiva: Es aquella que se llama así misma en el cuerpo de la función.Palabra clave de la función. _________. de otra forma generará un error de ejecución. Estructura de una función para su declaración. mes. 7.Tipo de devolución. 1. 1. 3. d) A la variable que se pasa como parámetro se le asigna un valor durante el proceso de ejecución del procedimiento se dice que este parámetro es pasado por ____________. UPCASE: Función que devuelve en mayúscula al carácter pasado como parámetro.Fin de la función.

Function AnteS(N):String.1.5 Escribir un programa que muestre en pantalla BP7 realizado por nosotros (usar un procedimiento para cada letra).4 Diga las partes para la declaración de una función según la numeración de la columna izquierda. begin AnteS = N . __ Fin del procedimiento. __ Cuerpo de la función. 1.1. S es un parámetro por referencia.2 Corrija los errores que existen (si es que existe alguno) en cada uno de los siguientes fragmento de programas. __ Nombre de la función. 113 . __ Lista de parámetros. end. El columna derecha aparecen las partes en forma desordenada. __ Inicio del procedimiento. 1. Procedur (N:Integer. __ Palabra clave de la función. __ Nombre del procedimiento. end. __ Fin de la función. a) El siguiente procedimiento le pasa al parámetro S el sucesor de N. If Num mor 2 = 2 Then Par:= True Else Par:= False. begin S:= N + 1. __ Lista de parámetros. __ Palabra clave del procedimiento. Procedure Espera() S: Integer. Function Par(Num):String. 1. begin Delay(S*1000). d) La función siguiente retorna verdadero si el número pasado como parámetro es par y falso si es impar. __ Tipo de devolución.S:Integer). __ Inicio de la función.3 Diga las partes para la declaración de un procedimiento según la numeración de la columna izquierda. c) Este procedimiento realiza una espera de S segundos. __ Cuerpo del procedimiento. teniendo en cuenta que S es una variable entera que es un parámetro del procedimiento. El columna derecha aparecen las partes en forma desordenada. end. b) La siguiente función retorna el antecesor de un número.

5.10 Respuestas de ejercicios de autoevaluación. _5_ Inicio de la función. _3_ Lista de parámetros. Function Par(Num: Integer):Boolean. Segundos y Centésimas. _5_ Cuerpo del procedimiento. Minutos. _4_ Inicio del procedimiento. 1. end. end.4 _4_ Tipo de devolución. _2_ Nombre de la función. _7_ Fin de la función. end. b) Length. If Num mod 2 = 0 Then end. 1. begin begin AnteS := N . _6_ Cuerpo de la función. _2_ Nombre del procedimiento.6 En el ejemplo 1 del epígrafe 5. _1_ Palabra clave del procedimiento.1. _6_ Fin del procedimiento. d) Referencia o Dirección. Par:= True Else Par:= False.1 a) Función. a) b) Procedure Suce(N:Integer. 1. _1_ Palabra clave de la función. 1.4 se creó un procedimiento que permite generar dos números de 1 a P y almacenarlos en N1 y N2. Var S:Integer).2 Los aspectos que están en negritas son los que fueron modificados o incorporados. S:= N + 1. c) d) Procedure Espera(S: Integer). Procedimiento. begin begin Delay(S*1000).3 _3_ Lista de parámetros. 114 . c) Hora.1. Confeccione un procedimiento parecido a este pero que genere el primer número y este sea múltiplo del segundo. Function AnteS(N: Integer):Integer.

writeln('P P '). writeln(' 7'). writeln('B B B '). end. writeln('B B B'). begin writeln(' 7 7 7'). writeln(' 7'). 1. writeln('P P P'). begin writeln('B B B'). writeln. begin writeln('P P P'). {mantenemos la pantalla viendo la solución hasta que se pulse una tecla} end. 115 . writeln('B B '). Begin {empezamos el programa principal} Clrscr. Repeat N2:= Random(P)+1. Var N1. writeln(' 7'). Procedure letra_P.6 Procedure Generar(P: Integer. letra_b. repeat until keypressed. num_7.5 Program BP7. N2: Integer). end. N1:= Random(P)+1.1. writeln('B B'). writeln. end. writeln('P'). Procedure num_7. Procedure letra_B. begin Randomize. Until N1 mod N2 = 0. uses crt. end. letra_p. writeln('P'). writeln(' 7').

59 1. devuelva el mínimo de ellos.16 Construir una función que reciba como parámetro un entero y retorne la cantidad de dígitos primos.5. devuelva el máximo de ellos. 1. 1.11 Ejercicios propuestos.18 Construir una función que reciba como parámetro un entero y un dígito y retorne 1 si dicho entero es múltiplo de dicho dígito y 0 si no es así. y muestre el resultado en pantalla de la siguiente forma: Primer número --.10 Confeccione un procedimiento que permita realizar la siguiente operación: El usuario escribe una palabra.7 Realice un procedimiento llamado Inicio que reciba como parámetro un nombre y le de la bienvenida. pero mientras este la está entrando se van cambiando los caracteres por *.8 Cree un procedimiento que realice una espera.Menor 220. Sin embargo.19 Construya una función que reciba como parámetros un texto y un caracter y retorne la cantidad de veces que está dicho caracter en el texto.4 donde el procedimiento devuelve los factores primos de un número.59 356. este número entra por el teclado. 1. 1. 1. 1. 1. b) Escriba una función que dados dos números reales. d) Escriba el programa principal que lea dos números reales.20 Construir una función que reciba como parámetro un entero positivo y devuelva su equivalente en el sistema binario. proceda como sigue: a) Escriba un procedimiento Leer que lea dos números reales. 1.85 356. Por ejemplo si el usuario escribe Gerardo. 1.11 Escriba un programa PASCAL que calcule el máximo y el mínimo de dos números.Mayor --.0 Presione ENTER para continuar.85 220.13 Construir una función que reciba como parámetro un entero y retorne sus dos últimos dígitos. obtenga el mayor y el menor de ellos.15 Construir una función que reciba como parámetro un entero y retorne si dicho entero es primo o no. cualquier otra tecla que se presione no responderá con ninguna acción.14 Construir una función que reciba como parámetro un entero y retorne la cantidad de dígitos pares.17 Construir una función que reciba como parámetro un entero y retorne el primer dígito de este entero.12 Construir una función que reciba como parámetro un entero y retorne su último dígito. c) Escriba una función que dados dos números reales. dicho programa debe apoyarse en la programación modular. de forma tal que si el usuario escribe Antonio el resultado en pantalla sería: Hola Antonio. Te damos la bienvenida a Borland Pascal 7. de forma tal que el programa no continúe hasta que no se presione la tecla ENTRE. 116 . Con tal fin. 1. 1.9 Confeccione el programa completo del ejemplo 2 del epígrafe 5.Segundo número --. lo que se ve es: * * * * * * * 1. 1.

Decimal a Octal.Binario a Decimal. 117 .31 La secuencia de Fibonacci consiste en la suma consecutiva de los número de 0 hasta el número que se quiere mostrar dicha secuencia. 21 y 34. 1. 1. Las conversiones serán de: .Octal a Decimal.Decimal a Hexadecimal.30 Construir una función recursiva que permita multiplicar A * B mediante una suma. . 1. . 1. construya un programa que permita realizar una conversión de un sistema numérico a otro. 13. 1. Por ejemplo la secuencia Fibonacci menores que 50 son: 0. . 1.25 Construir una función que reciba como parámetro un vector de 10 posiciones enteras y retorne la posición en la cual se encuentra el mayor de los datos del arreglo. La moda de un conjunto de datos es el dato que más se repite. 1. 1.29 Construir una función que reciba una matriz 5x5 y retorne el valor de su moda. 1.21 Construir una función que reciba como parámetro un entero positivo y devuelva su equivalente en el sistema octal. 2.32 Implemente en un programa la función factorial que se creo en este capítulo. 5.23 Construir una función que reciba como parámetro un número y retorne si este puede ser un número expresado en sistema binario o no.28 Construir una función que reciba como parámetro una matriz 4x4 entera y retorne la posición exacta en donde se encuentre almacenado el mayor número primo.24 Partiendo de los ejercicios anteriores. .26 Construir una función que reciba como parámetro un vector de 10 posiciones enteras y retorne el promedio entero del vector. 1. 1.Decimal a Binario.Hexadecimal a Decimal. 1. 8.22 Construir una función que reciba como parámetro un entero positivo y devuelva su equivalente en el sistema hexadecimal. 1. .27 Construir una función que reciba como parámetros una matriz 4x4 entera y un valor entero y retorne la cantidad de veces que se repite dicho valor en la matriz. 3.1.

Aprenda C/C++ Estructura de datos y otros objetos. Folleto “Curso básico de turbo pascal” Metodología de la programación._____________________________________________________________ Bibliografía Consultada _____________________________________________________________ Estructura de datos en Pascal. Programación en pascal. 118 . Pascal. Sánchez Victor. Introducción a la Programación. Folleto de Programación I para los Politécnicos de Informática. Vicente López.

Sign up to vote on this title
UsefulNot useful