Вы находитесь на странице: 1из 234

2012

Introducción a la
Computación
MATERIAL DE ESTUDIO
SERGIO ALVAREZ GARCIA

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA QUIMICA
DEPARTAMENTO DE OPERACIONES UNITARIAS
15 /05/2012
Página 1
PROGRAMA DE INTRODUCCIÓN A LA COMPUTACIÓN

I. Información General

Universidad : Universidad Nacional de Ingeniería

Facultad : Ingeniería Química

Carrera : Ingeniería Química

Plan : 1997

Disciplina : Ciencias de la Computación

Asignatura : Introducción a la computación

Tipo de Asignatura : Básica específica

Código : CO122

Año : 2do – 2do

Semestre : III - IV

Pre – Requisito : Ninguno

Precedencia : Matemática I

Co – Requisito : Ninguno

Créditos : 05

Horas Semestrales : 84

Frecuencia Semanal : 06
II. Objetivos

- Objetivos Generales:

Introducir al estudiante a la informática con una visión general pero consistente.

Conocer el funcionamiento de una computadora en la énfasis, hardware-software.

Proporcionar al estudiante herramientas de software, para su aplicación posterior en su


desarrollo integral como ingeniero.

- Objetivos Específicos:

Definir los conceptos básicos de la computación. (I unidad)

Introducir al estudiante a los sistemas operativos MS –DOS y Windows. (II unidad)

Introducir al estudiante al manejo de herramientas de software. (II y IV unidad)

Desarrollar la lógica programacional del estudiante. (III unidad)

Brindar al estudiante las herramientas básicas para elaborar programas en lenguaje


pascal orientados en aplicaciones en la ingeniería química. (IV unidad)

III. Plan Temático

UNIDAD TEMA C LAB. CP TOTAL


I Elementos básicos de computación 6 2 - 8
II Sistemas operativos MS – DOS, 10 14 2 26
Windows y manejo de software
III Algoritmos 10 ‘ 10 20
IV Lenguaje de programación Pascal 10 14 6 30
36 30 18 84

IV. Descripción de contenidos por unidad

Unidad I: Elementos básicos de la computación

1.1 Reseña histórica de la computación.


1.2 Conceptos básicos de informática
1.3 Componentes de una computadora
Laboratorio instructivo de los componentes de una computadora

Unidad II: Sistema operativo MS – DOS y manejo de software

2.1 Definición y descripción general de del sistema operativo.


2.2 Comandos internos del MS-DOS
2.3 Laboratorio instructivo del uso de los comandos internos del MS-DOS
2.4 Comandos externos del MS-DOS
2.5 Laboratorio instructivo del uso de los comandos externos del MS-DOS
2.6 Definición y descripción General de Windows
2.7 Funciones operativas de Windows
2.8 Laboratorios instructivos del uso funciones operativas de Windows
2.9 Definición y descripción general de la hoja de cálculo Excel.
2.10 Diseño de una hoja de cálculo Excel
2.11 Funciones operativas en una hoja de cálculo Excel
2.12 Laboratorios instructivos de diseño de una hoja de cálculo Excel
2.13 Aplicación de funciones en Excel
2.14 Laboratorio instructivo aplicación de funciones en Excel
2.15 Gráficos en Excel
2.16 Laboratorio de aplicación de gráficos Excel

Unidad II: Algoritmos

3.1 Definición y descripción general de algoritmo


3.2 Diagramas de flujo estructurados
3.3 Técnicas de diseño de un algoritmo
3.4 Resolución de problemas algorítmicamente.

Unidad IV: Programación en lenguaje pascal

4.1 Definición y descripción general del lenguaje Pascal


4.2 Laboratorio instructivo del uso del turbo Pascal
4.3 Palabras Reservadas en Pascal
4.4 Tipos de datos validos en Pascal
4.5 Operadores utilizados en Pascal
4.6 Instrucción de asignación
4.7 Instrucciones de acción de entrada y salida
4.8 Sentencias de control
4.9 Laboratorio instructivo de los temas 4.2 a 4.8
4.10 Arreglos
4.11 Laboratorio Instructivo del uso de arreglos
4.12 Procedimientos
4.13 Laboratorio Instructivo del uso de procedimientos
4.14 Funciones
4.15 Laboratorio instructivo del uso de funciones

V. Recomendaciones Metodológicas

En la En la unidad número uno debe introducir al estudiante a conceptos básicos de lo


que es la informática, haciendo énfasis en los tópicos claves para agilizar el aprendizaje
por que el tema informática es demasiado amplio. Es recomendable en esta unidad que
el estudiante tenga la oportunidad de conocer cada una de las piezas que conforman una
computadora en un laboratorio instructivo.
En la unidad número dos es imperativo que el estudiante utilice el sistema operativo
MS-DOS y Windows para que sea más comprensible para él interpretar la relación
Hardware-Software en el funcionamiento de una computadora.

En esta unidad también se le debe enseñar, al estudiante lo básico para que utilice la
hoja de cálculo Excel, para que se introduzca al manejo de software, antes de que se
entre a la parte de implementación de programas para que esta herramienta como parte
del desarrollo integral de este en la informática.

En la unidad número tres se enseñará al estudiante a desarrollar su lógica sobre la


programación, con la resolución de problemas computacionales mediante algoritmos
con diagramas de flujos estructurados. En esta unidad se recomienda que primero se
resuelvan problemas sencillos, para que el estudiante se le facilite el aprendizaje

En la unidad número tres se enseñará al estudiante a desarrollar su lógica sobre la


programación, con la resolución de problemas computacionales mediante algoritmos
con diagramas de flujos estructurados. En esta unidad se recomienda que primero se
resuelvan problemas sencillos, para que el estudiante se le facilite el aprendizaje.

VI. Sistema de evaluación.

%
E. parcial 35
E. Final 35
Sistemáticos 30
Total 100

Primera Convocatoria %
Examen Final 70
Sistemáticos 30
Total 100

Segunda Convocatoria %
Examen Final 100

VII. Bibliografía.

Textos básicos :
Pascal Programación Estructurada por Herbert Schildt
Pascal Programación Estructurada por William G. Mcakthur
Turbo Pascal 5.1-6.0 por Stephen O’Brien
Pascal Introductorio por Gottgried, Byron S.
Word Perfect 5.1 Manual de Referencia.
VIII`. Relaciones de autores.
Este programa fue elaborado por:
Este programa fue aprobado por el Consejo Facultativo de la FIQ a propuesta de la
Comisión de transformación Curricular de la UNI.
Tabla de Contenido

Pagina
I.- Elementos basicos de la computacion. 7

II.- Sistemas Operativos MS-DOS, Windows y Manejo de Software. 22

III.- Algoritmos 101

IV. Lenguaje de Programacion Pascal 126

Página 2
Unidad I: Elementos básicos de la computación
1.1 Reseña histórica de la computación.
1.2 Conceptos básicos de informática
1.3 Componentes de una computadora
Laboratorio instructivo de los componentes de una
computadora
I.- ELEMENTOS BASICOS DE LA COMPUTACION.
1.1 HISTORIA DE LA COMPUTACIÓN
Esta sección se encuentra dividida en 2 partes: Antecedentes, en donde se presenta un
resumen histórico la evolución de los computadores y Fabricacion en serie, en la cual se
exponen las principales características de las generaciones de computadores
1.1.1 ANTECEDENTES
El ábaco es considerado como el primer instrumento elaborado por el hombre para
realizar operaciones aritméticas de manera más eficiente. El ábaco no realiza cálculos
de manera autónoma (por si solo), simplemente le permite al hombre realizarlos de
manera más eficiente. La primera máquina que realizaba cálculos de manera autónoma
fue inventada en 1642 por el gran matemático y filósofo francés Blas Pascal. La
máquina de Pascal (en honor a su inventor), era movida mediante una serie de ruedas
dentadas, numeradas del cero al nueve, alrededor de sus circunferencias y era capaz de
sumar y restar.

Figura 1. Máquina de Pascal (1642)


En 1671 Gottfried Wilhelm Leibniz le adicionó a la máquina de Pascal un cilindro
diseñado especialmente para que fuera capaz de multiplicar y dividir de manera directa.
A principios del siglo XIX el ingeniero Joseph Marie Jacquard perfeccionó el concepto
de tarjeta perforada, con el cual se podían “programar” las máquinas de tejer para que
siguieran un patrón o diseño. Este concepto fue posteriormente utilizado en las
máquinas de cómputo para decirles que debían calcular.
Pero ninguno de estos avances fue antecesor directo de las computadoras electrónicas de
hoy. La verdadera precursora de la computadora fue la máquina llamada “motor de
diferencias”, construida en 1822 por Charles Babbage para calcular algoritmos y tablas
astronómicas.
A partir de su trabajo en el motor de diferencias, Babbage diseñó un poderoso
instrumento para el cálculo automático. Tal como lo concibió Babbage, este “motor
analítico” estaría impulsado por vapor, y trabajaría basado en un programa de

Página 3
planeación almacenado en tarjetas perforadas. Concibió una memoria, un procesador
aritmético, los medios de ingresar datos y/o instrucciones, así como una sección de
producción que escribiría los resultados de las computaciones.
Todos estos son los elementos de las computadoras modernas y no se hicieron realidad
sino varias generaciones después de ser propuestos por Babagge. Charles Babbage no
pudo implementar el motor analítico y murió sin saber que realmente funcionaba.

Figura 2. Máquina Diferencial de Charles Babbage


Durante los cien años siguientes, las máquinas activadas por tarjetas perforadas se
modificaron, se mejoraron e hicieron más rápidas, pero aún no podían mantener el ritmo
de las crecientes necesidades humanas de procesamiento de listas de pagos, cuentas,
facturas, análisis de ventas y otros problemas.
En 1937, Howard H. Aiken, un candidato al doctorado en física de Harvard, trabajó en
una máquina que podría resolver automáticamente ecuaciones diferenciales. La I.B.M.
(International Business Machines), hoy una de las más grandes empresas de esta fase de
la industria norteamericana, ayudo al inventor a crear la “Calculadora Controlada de
Secuencia Automática” conocida como el “Mark I”.

Figura 3. Mark I

Página 4
El Mark I era un monstruo de cuatro y media toneladas métricas, con 78 aparatos
independientes vinculados por unos 800 kilómetros de cable. En tres décimas de
segundo podía efectuar sumas y restas de 23 dígitos y en cerca de 6 segundos podía
multiplicar números de 23 dígitos. Fue retirado en 1959.
Tanto el Mark I como la Segunda Guerra Mundial desempeñaron un papel clave en el
desarrollo de las computadoras. El Mark I aportó los ingredientes tecnológicos básicos
mientras que la segunda guerra mundial con sus inmensas demandas de mano de obra y
máquinas, creó la necesidad. El resultado fue el Integrador y Calculador Numérico
Electrónico, más conocido como el “ENIAC”.

Figura 4. ENIAC
Terminado en 1946, el ENIAC fue creado para el ejército norteamericano en la escuela
Moore de Ingeniería Eléctrica, de la Universidad de Pennsylvania. Sus creadores fueron
un estudiante graduado, J. Presper Eckert, y un físico, el Dr. John W. Mauchly. Juntos
eliminaron la necesidad de las partes que se movían mecánicamente en la computadora
central. En su lugar, adaptaron circuitos eléctricos de gatillo “flip-flop” y “pulsaciones”
electrónicas para conectar o desconectar tubos al vacío, como interruptores.
Como las interrupciones de este tipo podían hacerse miles de veces más rápido que los
aparatos electro-mecánicos, el ENIAC constituyó un gran inicio hacia el desarrollo de
las computadoras modernas.
El último paso para completar el concepto de la computadora de hoy, fue el desarrollo
del concepto de máquina almacenadora de programas. Este paso se dio a fines de los
cuarenta, después de que el célebre matemático hungaro-norteamericano Dr. John Von
Neumann sugirió que las instrucciones de operación, así como los datos, se almacenaran
de la misma manera en la “memoria” de la computadora. Además, aportó la idea de
haga que la computadora modificara sus propias instrucciones de acuerdo con un
control programado. Desde entonces, se ha tratado de modificar, mejorar y apresurar
estos conceptos, en fin, de haga computadoras cada vez más eficientes.
Página 5
Figura 5. Computador electrónico – IBM 360

1.1.2 LA FABRICACION EN SERIE (GENERACIONES DE


COMPUTADORES)
Se suelen considerar cinco generaciones:.
Generación Cero: En la cuál el hombre construyó máquinas, usando dispositivos
mecánicos tales como ruedas dentadas y piñones, para realizar básicamente operaciones
aritméticas como suma, resta, multiplicaciones y divisiones. Estas máquinas se conocen
con el nombre de Máquinas Aritméticas.

Figura 6. Folleto promocional de una máquina aritmética

Página 6
Primera Generación: En la cuál el hombre construyó máquinas de cálculo para tareas
muy específicas como investigación y militares, usando dispositivos electro-mecánicos
como relés y tubos de vacío (los cuales le dieron paso a los elementos transistorizados).
Las máquinas de computo de esta generación tenían pocas facilidades de programación.
Segunda Generación: En la cuál el hombre construyó computadores (máquinas de
cálculo), basados en el transistor.
Los computadores de esta generación tienen propósito general, no son usados
únicamente para la investigación y el aspecto militar, ya son usados en el arte, la
economía y la industria. Adicionalmente, aparecen los primeros lenguajes de
programación.

Figura 7. Dibujo esquemático de un transistor


Tercera Generación: En la cual el hombre construye diferentes tipos de computadores,
basados en el desarrollo de los circuitos integrados. En esta generación se desarrollan
los primeros programas de software de tipo específico.

Figura 8. Computador Electrónico -VAX


Cuarta Generación: En la cual el hombre construye computadores de tamaño pequeño
pero de gran capacidad, llamados microcomputadores, los cuales están basados en el
microprocesador. La aparición del microprocesador se debe a los desarrollos hechos en

Página 7
la tecnología VLSI (Integración de Gran Escala). En esta generación se hacen
aplicaciones de software orientadas al usuario final.

Figura 9. El Apple-II, Primer Computador Personal


Quinta Generación: En la cual el hombre construye computadores con más de un
procesador, cada uno con una tarea específica como procesamiento de imagen y
procesamiento de sonido, y/o con una tarea en común. Adicionalmente se construyen
computadores capaces de auto-configurarse, auto-programarse, etc. En esta generación
se desarrolla software tanto genérico como específico.

Figura 10. Computador con múltiples procesadores.

Página 8
1.2 ESTRUCTURA DE UN COMPUTADOR
Un COMPUTADOR es una máquina que permite y realiza cálculos de manera
automática. Se divide fundamentalmente en dos partes: el hardware y el software.
El HARDWARE es la parte física de un computador, es decir, la parte que realiza los
cálculos; El SOFTWARE es la parte lógica del computador, es decir, la parte que le
dice al hardware que haga . Usando una metáfora se puede decir que:
“Un computador es como un ser humano: el hardware es el cuerpo y el software es la
mente”
1.2.1 ARQUITECTURA DE HARDWARE
Un computador desde la perspectiva del hardware, esta constituido por una serie de
dispositivos cada uno con un conjunto de tareas definidas. Los dispositivos de un
computador se dividen según la tarea que realizan en: dispositivos de entrada, salida,

Figura 11. Arquitectura de Hardware


Dispositivos de entrada: Son aquellos que permiten el ingreso de datos a un
computador. Entre estos se cuentan, los teclados, ratones, scaners, micrófonos, cámaras
fotográficas, cámaras de video, game pads y guantes de realidad virtual.

Figura 12. Dispositivos de Entrada

Página 9
Dispositivos de salida. Son aquellos que permiten mostrar información procesada por
el computador. Entre otros están, las pantallas de video, impresoras, audífonos, plotters,
guantes de realidad virtual, gafas y cascos virtuales.

Figura 13. Dispositivos de Salida


Dispositivos de almacenamiento. Son aquellos de los cuales el computador puede
guardar información nueva y/o obtener información previamente almacenada. Entre
otros están los discos flexibles, discos duros, unidades de cinta, CD-ROM, CD-ROM de
re-escritura y DVD.

Figura 14. Dispositivos de Almacenamiento.


Dispositivos de comunicación: Son aquellos que le permiten a un computador
comunicarse con otros. Entre estos se cuentan los modems, tarjetas de red y enrutadores.

Figura 15. Modem

Página 10
Dispositivo de computo: Es la parte del computador que le permite realizar todos los
cálculos y tener el control sobre los demas dispositivos. Esta formado por tres
elementos fundamentales, la unidad central de proceso, la memoria y el bus de datos y
direcciones.

Figura 16. Diagrama esquemático del dispositivo de computo

La unidad central de proceso (UCP)[1]: es el ‘cerebro’ del computador, esta


encargada de realizar todos los cálculos, utilizando para ello la información almacenada
en la memoria y de controlar los demás dispositivos, procesando las entradas y salidas
provenientes y/o enviadas a los mismos. Mediante el bus de datos y direcciones, la UCP
se comunica con los diferentes dispositivos enviando y obteniendo tales entradas y
salidas.

Figura 17. Unidad Central de Proceso.

Para realizar su tarea la unidad central de proceso dispone de una unidad aritmético
lógica, una unidad de control, un grupo de registros y opcionalmente una memoria
cache para datos y direcciones.
La unidad aritmético lógica (UAL)[2] es la encargada de realizar las operaciones
aritméticas y lógicas requeridas por el programa en ejecución, la unidad de control es la

Página 11
encargada de determinar las operaciones e instrucciones que se deben realizar, el grupo
de registros es donde se almacenan tanto datos como direcciones necesarias para
realizar las operaciones requeridas por el programa en ejecución y la memoria cache se
encarga de mantener direcciones y datos intensamente usados por el programa en
ejecución.
La memoria esta encargada de almacenar toda la información que el computador esta
usando, es decir, la información que es accedida (almacenada y/o recuperada) por la
UCP y por los dispositivos. Existen diferentes tipos de memoria, entre las cuales se
encuentran las siguientes:
RAM (Random Access Memory): Memoria de escritura y lectura, es la memoria
principal del computador. Solo se mantiene mientras el computador está encendido.
ROM (Read Only Memory): Memoria de solo lectura, es permanente y no se afecta
por el encendido o apagado del computador. Generalmente almacena las instrucciones
que le permite al computador iniciarse y cargar (poner en memoria RAM) el sistema
operativo.
Cache: Memoria de acceso muy rápido, usada como puente entre la UCP y la
memoria RAM, para evitar las demoras en la consulta de la memoria RAM.
El bus de datos y direcciones permite la comunicación entre los elementos del
computador. Por el bus de datos viajan tanto las instrucciones como los datos de un
programa y por el bus de direcciones viajan tanto las direcciones de las posiciones de
memoria donde están instrucciones y datos, como las direcciones lógicas asignadas a los
dispositivos.
[1] La unidad central de proceso es más conocida como CPU por sus siglas en inglés
Central Process Unit.
[2] La unidad aritmético lógica es más conocida como ALU por sus siglas en inglés
Arithmetic Logic Unit.
1.2.2 ARQUITECTURA DE SOFTWARE
Un computador desde la perspectiva del software, esta :
Un sistema operativo.
Un conjunto de lenguajes a diferente nivel con los cuales se comunica con
el usuario y con sus dispositivos. Entre estos están los lenguajes de
máquina, los ensambladores y los de alto nivel.
Un conjunto de aplicaciones de software.
Un conjunto de herramientas de software.

Página 12
1.2.2.1 Definiciones Básicas
Software: El hardware por si solo no puede haga nada, pues es necesario que exista el
software, que es un conjunto de instrucciones que le dicen al hardware que haga .
Lenguaje de programación: Es un conjunto de reglas y estándares que es utilizado
para escribir programas de computadoras que puedan ser entendidos por ellas. .
Programa: Es la representación de algún algoritmo en un lenguaje de programación
específico.
1.2.2.2 Lenguaje de Máquina
Es el único lenguaje que entiende el hardware (máquina) y usa exclusivamente el
sistema binario. Este lenguaje es específico para cada hardware (procesador,
dispositivos, etc.)[1].
El programa es almacenado en memoria y es tanto códigos de instrucción como
datos. La estructura de una instrucción en lenguaje máquina es la siguiente:
CODIGO ARGUMENTO(S)

Figura 18. Lenguaje de máquina


1.2.2.3 Lenguaje Ensamblador
Es un lenguaje que usa mnemónicos (palabras cortas escritas con caracteres
alfanuméricos), para codificar las operaciones. Los datos y/o direcciones son
codificados generalmente como números en un sistema hexadecimal. Generalmente es
específico (aunque no único) para cada lenguaje de máquina.
La estructura de una instrucción en este lenguaje es la siguiente:

Página 13
MNEMONICO ARGUMENTO(S)
Un ENSAMBLADOR es un software, generalmente escrito en lenguaje de máquina,
que es capaz de traducir de lenguaje ensamblador a lenguaje de máquina, mientras que
un CARGADOR es un software que almacena en memoria el programa en lenguaje de
máquina generado por el ensamblador.

Figura 19. Lenguaje Ensamblador.


1.2.2.4 Lenguaje de Alto Nivel
Lenguaje basado en una estructura gramatical que permite el anidamiento de
instrucciones (instrucciones dentro de instrucciones). Cuenta con un conjunto de
palabras reservadas (escritas en lenguaje natural), para codificar estructuras de control
y/o instrucciones. Estos lenguajes permiten el uso de símbolos aritméticos y/o
relacionales para describir cálculos matemáticos, y generalmente representan las
cantidades numéricas mediante sistema decimal.
Gracias a su estructura gramatical, estos lenguajes permiten al programador olvidar el
direccionamiento de memoria (donde cargar datos y/o instrucciones en la memoria), ya
que este se realiza mediante el uso de conceptos como el de variable; De esta manera,
permiten la realización de programas independiente del Hardware.
Los COMPILADORES e INTERPRETES son software capaz de traducir de un
lenguaje de alto nivel al lenguaje ensamblador específico de una máquina. Los primeros
toman todo el programa en lenguaje de alto nivel, lo pasan a lenguaje ensamblador y
luego lo ejecutan. Los últimos toman instrucción por instrucción, la traducen y la van
ejecutando.

Página 14
Figura 20. Lenguaje de Alto Nivel.

1.2.2.5 Sistema Operativo


Es el software encargado de administrar los recursos del sistema, para esto ofrece un
conjunto de primitivas (funciones y procedimientos) a otro software, que le permiten a
este ultimo ser tan independiente de la arquitectura de hardware como le sea posible. Se
dice que un software es para el sistema operativo <nombre>, si utiliza las primitivas
que el sistema operativo <nombre> proporciona. Adicionalmente, un sistema operativo
ofrece un conjunto de comandos a los humanos sean o no programadores, para
interactuar con la máquina.
Los sistemas operativos pueden ser escritos en lenguaje de alto nivel, como UNIX que
fue escrito en C, en lenguaje ensamblador y/o en lenguaje máquina. Algunos de los
sistemas operativos más conocidos son UNIX, LINUX, Microsoft Windows.

1.2.2.6 Aplicaciones y Herramientas


Una APLICACION es un software construido para que el computador realice una tarea
específica y con el cual no se puede construir otro software. Ejemplos de aplicaciones
son los procesadores de texto como Microsoft Word y Word Perfect y las hojas
electrónicas de cálculo como Microsoft Excel y Lottus.
Una HERRAMIENTA es un software construido especialmente para el desarrollo de
nuevo software, (tanto de aplicaciones como de herramientas). Ejemplos de
herramientas son los compiladores como Turbo C y Turbo Pascal, las herramientas
CASES y los ambientes integrados de desarrollo.

Página 15
Figura 21. Arquitectura de Software Completa.

Página 16
Unidad II: Sistema operativo MS – DOS y manejo
de software
2.1 Definición y descripción general de del sistema
operativo.
2.2 Comandos internos del MS-DOS
2.3 Laboratorio instructivo del uso de los comandos
internos del MS-DOS
2.4 Comandos externos del MS-DOS
2.5 Laboratorio instructivo del uso de los comandos
externos del MS-DOS
2.6 Definición y descripción General de Windows
2.7 Funciones operativas de Windows
2.8 Laboratorios instructivos del uso funciones
operativas de Windows
2.9 Definición y descripción general de la hoja de
cálculo Excel.
2.10 Diseño de una hoja de cálculo Excel
2.11 Funciones operativas en una hoja de cálculo
Excel
2.12 Laboratorios instructivos de diseño de una hoja
de cálculo Excel
2.13 Aplicación de funciones en Excel
2.14 Laboratorio instructivo aplicación de funciones
en Excel
2.15 Gráficos en Excel
2.16 Laboratorio de aplicación de gráficos Excel
II.- SISTEMAS OPERATIVOS MS-DOS, WINDOWS Y MANEJO DE SOFTWARE.
PARTE I: SISTEMAS OPERATIVO MS-DOS.

Acabando el año 1980, IBM se puso en contacto con Microsoft, de Bill Gates, y le expuso que estaba
desarrollando su propio ordenador personal de 8 bits, al estilo del Apple ][. IBM deseaba que Microsoft
portara su Basic y se incluyera en la ROM de su nuevo ordenador.

B. Gates estaba convencido, y convenció a IBM, de que el futuro de los ordenadores personales estaba en los
16 bits. Nadie sabía de que hubiera un sistema operativo de 16 bit. Unicamente un ingeniero de Seattle
Computer Products, Tim Patterson, había desarrollado una tarjeta basada en un nuevo procesador de Intel, el
8086 de 16 bits, y requería un nuevo soft que Patterson desarrolló.

Introducción al MS−DOS

BREVE INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Antes de comenzar a hablar del sistema operativo MS−DOS es conveniente hacer un repaso sobre todos los
términos y conceptos que nos puedan ayudar a la comprensión global del universo de la informática.

Según ISO (Organización Internacional de Normalización), se define un sistema informático como el sistema
compuesto de equipos y de personal pertinente, que realiza funciones de entrada, proceso, almacenamiento,
salida y control con el fin de llevar a cabo una secuencia de operaciones con datos.

Las funciones del sistema operativo son básicamente cinco:

− Gestión de recursos del ordenador.

− Control de lo que hace el ordenador y de cómo lo hace.

− Permitir el uso de paquetes o programas software por el usuario.

− Organizar los datos y los programas.

− Permitir la comunicación usuario−máquina.

MS−DOS es una sigla, que significa Sistema operativo en disco (micro soft disk operating system). Esto
quiere decir que para instalarlo en un computador es necesario contar con los diskettes de instalación de este
Sistema Operativo.

El DOS es un sistema operativo Mono usuario, y de mono tarea, es decir, lo puede usar una sola persona, y
esta puede realizar una sola tarea a la vez (secuencial).

El DOS es un sistema operativo estándar, ya que se puede instalar en cualquier computador personal, y se
maneja por intermedio de comandos y programas previamente definidos y que además son universales.

VERSIONES

A MS−DOS le acompañan unos números que indican la versión. Si la diferencia entre dos versiones es la
última cifra representa pequeñas variaciones. Sin embargo, si es en la primera cifra representa cambios
fundamentales. Las versiones comenzaron a numerar por 1.0 en agosto de 1981. Esta versión mejora el
sistema de lectura de disco, que permitia cargar mucho más rápido tanto en aperturas secuenciales como
directas (fue mejorado respecto de los sistemas operativos que le precedieron).

En mayo de 1982 se lanzó la versión 1.1 con soporte de disquetes de dos caras.

La versión 2.0 se creó en marzo de 1983, siendo su principal novedad el soporte de estructura de directorios y
subdirectorios.

En agosto de 1984 (Aparecen los computadores del tipo AT, 80−286) MS−DOS evolucionó hacia la versión
3.0; esta versión podía ser instalada en ordenadores más antiguos, pero no se podía realizar la operación a la
inversa y tenían soporte de disquetes de 5 y cuarto de alta densidad (HD 1,2 Mb).

La versión 3.2 se lanzó en diciembre de 1985, para admitir unidades de disquete de 3 1/2 (DD 720 Kb y HD
1,44 Mb).

La versión 3.3 se lanzó en abril de 1987 con posibilidades de crear múltiples particiones en discos duro.

La versión 4.0 apareció en noviembre de 1988 y gestiona discos duros de particiones de más de 32 MB (hasta
512 MB). Además dispone de una nueva interface gráfica y soporte de memoria expandida.

La versión 5.0 se lanzó en junio de 1991, y proporciona drivers para gestionar ampliaciones de memoria y se
incorpora un editor de pantalla y un shell bastante potente, además de poder instalarse independientemente de
la versión anterior de sistema operativo.

La versión 6.0 se lanzó en abril de 1993 y como contenía abundantes errores fue sustituida el mismo año por
la versión 6.2. Las mejoras de la versión 6.0 incluyen: herramientas de compresión de discos, antivirus,
programas de copias de seguridad por menú, desfragmentador de disco y otras utilidades, como por ejemplo
un administrador de memoria ampliada

A finales de 1993 se lanzó la versión 6.2 con mejoras en el duplicador de espacio en disco y la posibilidad de
borrar un directorio independientemente de su contenido entre otras ventajas.

Estructura Básica del MS−DOS

El sistema operativo MS−DOS tiene una estructura arborescente donde existen unidades, dentro de ellas
directorios y a su vez dentro de ellos tenemos los ficheros.

Las unidades son las disqueteras y los discos duros.

Los directorios son, dentro de las unidades, carpetas donde se guardan los ficheros.

Los ficheros son conjuntos de datos y programas.

El DOS tiene unos cien comandos, que para poder ser ejecutados necesitan tres ficheros:

− IBMBIOS.COM Es el encargado de las comunicaciones de Entrada y Salida

− IBMDOS.COM Este es el centro de servicios del computador (núcleo)

− COMMAND.COM Carga y permite ejecutar todos los comandos.

2
Estructura General del Sistema MS−DOS

El MS−DOS contiene cinco elementos fundamentales:

− La ROM−BIOS.− Programas de gestión de entrada y salida entre el Sistema Operativo y los dispositivos
básicos del ordenador.

− La IO.SYS.− Son un conjunto de instrucciones para la transferencia de entrada/salida desde periféricos a


memoria. Prepara el sistema en el arranque y contiene drivers de dispositivo residentes.

− MSDOS.SYS.− Es el kernel de MS−DOS, en que figuran instrucciones para control de los disquetes. Es un
programa que gestiona los archivos, directorios, memoria y entornos.

− DBLSPACE.BIN.− Es el controlador del Kernel del compresor del disco duro que sirve para aumentar la
capacidad de almacenamiento del disco, disponible a partir de la versión 6 del MS−DOS. Este controlador se
ocupa de toda la compresión y descompresión de ficheros y se puede trasladar desde la memoria convencional
a la memoria superior.

− COMMAND.COM.− Es el intérprete de comandos, mediante los cuales el usuario se comunica con el


ordenador, a través del prompt \>. Interpreta los comandos tecleados y contiene los comandos internos de
MS−DOS que no se visualizan en el directorio del sistema.

Los ficheros IO.SYS, MSDOS.SYS y DBLSPACE.BIN son ocultos, es decir, no se ven al listar el directorio,
y se cargan desde el disco a la memoria del ordenador al arrancar éste.

Archivos Indispensables para la Ejecución del MS−DOS

En el proceso de arranque intervienen distintos archivos cada uno con una misión específica.

− Módulo BIOS (Basic Input Output System).− Se encarga de controlar las diversas unidades hardware de
entrada y salida, como el teclado, y su presentación, impresoras, reloj, etc. Durante la inicialización del
sistema el BIOS se lee y se guarda en la RAM cargando el fichero IO.SYS. Este fichero no se ve al hacer un
dir, ya que tiene el atributo de oculto 'hidden' y el de sistema 'system' que indica al sistema que no es un
archivo normal y no se puede modificar, editar, etc.

− El IO.SYS es el Kernel o núcleo del sistema y realiza funciones como la gestión de ficheros, de los registros
de memoria, generación de otros programas, etc. Es independiente del hardware y contiene una serie de
servicios del sistema.

COMMAND.COM.

Es un interface entre el usuario y el aparato mediante un conjunto de prompts y mensajes de respuesta a los
comandos del usuario.

Es el responsable del análisis gramatical y gestiona las órdenes del usuario (es el procesador de las órdenes).

El COMMAND.COM también es el encargado de gestionar las interrupciones; el sistema de interrupciones


dispone de una jerarquía sencilla de prioridades para tratar las interrrupciones ocasionadas por los periféricos,
cuando el tratamiento de una interrupción termina, se devuelve el control al programa que se estaba
ejecutando cuando sucedió la interrupción.

Se ocupa también de tratar los errores que hayan podido producirse durante la ejecución de un programa,
devolviendo el control al programa en que se produjo el error si ello es posible, y si no al MSDOS.

3
Gestiona los comandos internos, que dependen directamente de él.

No es obligatorio emplear este, se puede colocar otro creado por el usuario (aunque se tendría que indicar en
el CONFIG.SYS.

Está dividido en tres partes:

− Residente: se carga en la parte baja de la memoria, por encima del kernel y la BIOS. Controla los errores
críticos, el empleo de Ctrl+Break, Ctrl+C, ...

− Sección de inicialización: Se carga por encima de la parte residente y se encarga de procesar el archivo
AUTOEXEC.BAT, después se borra de la memoria RAM.

− Módulo transitorio: Se carga en la parte alta de la memoria y su finalidad es preparar el prompt o símbolo
del sistema necesario para poder introducir instrucciones y ejecutarlas. Sólo se carga cuando se necesita y,
después de ejecutar la orden, se descarga.

El Command.com primero mira si la orden recibida es:

− Interna.

− Externa.

− Si es .COM

− Si es .EXE

− Si es .BAT

CONFIG.SYS.− Es un fichero de sistema. El DOS lo ejecuta antes del autoexec.bat y contiene comandos de
configuración del equipo. Depende de las tareas puede que necesitemos una configuración distinta. Sin este
archivo o sin algún comando de él el sistema no funciona. Se carga el país (country), carga los dispositivos
(device), establece el máximo de archivos a abrir a la vez (files), las zonas temporales de memoria (buffers),
etc.

AUTOEXEC.BAT.

Es un archivo de procesamiento por lotes.

Sirve para inicializar una serie de funciones no imprescindibles, introducir datos, activar controles del sistema
y cargar programas automáticamente.

El sistema operativo lo ejecuta automáticamente si existe.

No tiene limitación de tamaño y debe estar en el directorio desde el cual arranca el sistema.

Hay varios comandos que están incluidos usualmente:

− Keybsp: Actualiza el teclado a español.

− Path: Busca un programa en cualquier carpeta que se le haya indicado en este comando.

4
− Set: Incluye variables de entorno y su valor correspondiente.

que reconocerá el sistema.

Directorios

Es una zona o división lógica de almacenamiento o otros subdirectorios.

Los directorios constituyen una estructura jerárquica en forma de árbol.

En cualquier momento el usuario está en un determinado directorio y, a menos que se indique otra cosa, todos
los ficheros se buscan o se crean en este directorio.

Al igual que para los ficheros, la nomenclatura consta de un nombre de 1 a 8 caracteres y una extensión de
cero a tres caracteres (aunque se recomienda no emplearla).

En toda unidad de disco existe el directorio raíz, representado por una barra (\).

Una ruta está formada por una unidad y uno o varios directorios (C:\DOS)

La unidad activa es la unidad en la que se está trabajando.

Una ruta activa es la ruta en la que se está en un momento determinado, cuando se arranca el ordenador la ruta
activa es el directorio raíz del disco.

Al crear un directorio automáticamente contiene otros dos subdirectorios:

− El directorio . que hace referencia al directorio en si.

− El directorio .. que referencia al directorio padre.

Esto no se cumple para el directorio raíz ya que este no puede tener directorio padre

Ficheros

Es un conjunto de datos o programas almacenados bajo un nombre en común.

Debe tener:

− Especificador de fichero.

− Tamaño del fichero.

− Fecha y hora de creación o última modificación del fichero.

− Atributos.

El especificador de fichero es el nombre seguido de una extensión y separados por un punto; el nombre puede
tener de uno a ocho caracteres y la extensión de cero a tres (el DOS admite desde la A hasta la Z, del 0 al 9 y
caracteres especiales (^, $, !, #, %, &, {, }, (, ), −, _, ...).

Extensiones standard de fichero en DOS:

5
− BAT: fichero de procesamiento por lotes.

− BAK: fichero de copia de seguridad.

− COM: fichero ejecutable de comandos.

− EXE: fichero ejecutable.

− DOC: fichero de documentos.

− TXT: fichero de texto.

− DBF: base de datos.

− HLP: fichero de ayuda.

− SYS: fichero de sistema operativo.

− TMP: fichero temporal creado por otro programa o por un comando.

− BAS: fichero BASIC.

− ASM: fichero en ENSAMBLADOR.

− CBL: fichero en COBOL.

− C: fichero en C.

− PAS: fichero en PASCAL.

− OBJ: fichero objeto de un programa compilado.

− LST: errores que generan otros programas.

Caracteres comodines

Son unos caracteres que permiten representar a varios nombres a la vez.

Existen dos comodines: ? y *.

− ?: Representa cualquier caracter válido en el nombre o la extensión de un fichero. Representa sólo un


caracter. Se pueden poner tantos interrogantes como se desee y cada uno representará un caracter, excepto el
último que puede representar cero o uno.

−*: Representa uno o más caracteres válidos del nombre o la extensión. Anula los siguientes caracteres que le
siguen en el nombre o la extensión.

Visualización y modificación de atributos

Para visualizar ficheros con atributos se usa la orden ATTRIB, que permite visionar los ficheros con atributos
del directorio actual, con el parámetro /S permitirá visualizar los archivos de todos los subdirectorios.

6
Para cambiar atributos se usa la orden ATTRIB seguida del nombre del fichero y el tipo de cambio que se
desee:

+/− A: cambia el atributo de modificado.

+/− H: modifica el atributo de oculto.

+/− R: cambia el atributo de sólo lectura.

+/− S: modifica el atributo de sistema.

Otra forma de visualizar los ficheros con atributos es mediante la orden DIR con el parámetro /A y seguido de
la inicial del atributo del que se desee el listado.

Comandos para el manejo de ficheros y directorios

Comandos para directorios:

Existen varios comandos relacionados con el manejo de directorios en MS−DOS, los más importantes son:

− MD nombre: Sirve para crear un directorio indicando el nombre. Es un comando interno.

− RD nombre: Borra un directorio, que debe estar vacío. Es un comando interno.

− DELTREE: Borra un directorio sin necesidad de que esté vacío. Es un comando externo.

− DIR: Comando que permite visualizar el contenido de un directorio.

− CD: Comando que permite cambiar el directorio activo. Es un comando interno.

− TREE: Comando externo que presenta de forma gráfica la estructura de directorios de una ruta de acceso;
tiene dos parámetros(/F presenta los nombres de los archivos que cada directorio comprende y /A indica que
utilice caracteres de texto en lugar de caracteres gráficos).

− MOVE: Comando que renombra directorios, excepto el directorio activo.

Gestión de archivos:

Los comandos más usuales para la gestión de archivos son los que siguen:

− TYPE: Es un comando interno cuya función es mostrar el contenido de un archivo de texto, no permite el
uso de caracteres comodines.

− PRINT: Es un comando externo que imprime un archivo de texto por impresora. Tiene cuatro parámetros
(/T borra la cola de impresión y coloca un archivo en impresora; /D permite indicar el puerto en el que está
situada la impresora; /Q permite indicar el tamaño de la cola; /U indica el valor del tiempo a esperar si la
impresora no está preparada).

− COPY: Es un comando interno que permite copiar archivos de un lugar a otro. Tiene un sólo parámetro que
es /V y sirve para controlar que la copia del fichero se hace correctamente.

− MOVE: Permite copiar un fichero de un directorio a otro, borrándolo del primero. Es un comando externo y

7
tiene como único parámetro de importancia /Y que indica que si el directorio destino no existe debe crearlo.

− RENAME: Es un comando interno que cambie el nombre de uno o varios archivos, aunque no permite
cambiar a otro directorio.

− DEL, ERASE: Comando interno que elimina los archivos especificados. Su parámetro más importante es el
/P que significa que debe pedir confirmación antes de borrar un archivo.

− FC: Comando externo que permite comparar de dos formas distintas: con el parámetro /B realiza una
comparación binaria y con el parámetro /L realiza una comparación línea a línea.

− UNDELETE: Permite recuperar ficheros previamente borrados con la orden DEL. Es un comando externo y
tiene tres parámetros interesantes (/LIST presenta una lista de archivos recuperables, /ALL recupera todos los
archivos sin pedir confirmación y /DOS crea una lista de archivos eliminados por el DOS y otra de archivos
eliminados por otro motivo).

− XCOPY: Comando externo que permite copiar archivos y directorios. Tiene seis parámetros importantes: /A
copia archivos de origen que tengan atributo de modificado; /M copia archivos de origen con atributo de
modificado y lo desactiva; /D:FECHA copia los archivos modificados en o después de la fecha indicada; /P
pide confirmación antes de realizar una copia; /S permite la copia de subdirectorios a menos que estén vacíos
y /E copia también directorios vacíos.

− VERIFY (ON/OFF): Comando interno que le indica al sistema si debe comprobar que los ficheros son
escritos correctamente en el disco.

− DOSKEY: Comando externo residente en memoria que permite visualizar comandos de MS−DOS
introducidos anteriormente.

Ventajas y desventajas del MS−DOS

Ventajas:

Una ventaja del MS−DOS, es que fue capaz de ir actualizándose cada año desde su aparición, cada vez con
mejoras en su rendimiento funcional ya que se pudo ir incorporando nuevos programas y archivos según sus
actualizaciones.

Otra de sus ventajas es que fue capaz de soportar a otro sistema operativo como es el caso de windows 95, sin
perder ninguna de sus cualidades como sistema operativo.

Desventajas:

Las desventajas del MS−DOS quedan en evidencia al intentar realizar más de una tarea al mismo tiempo,
debido a que este sistema operativo es MONOTAREA.

Otra desventaja es que solo lo puede ocupar un usuario a la vez debido a que es un sistema MONOUSUARIO.

No tenia una interfaz amigable, es decir, no contaba con ventanas, colores etc, que hicieran mas grato el
trabajo o la comunicación entre el computador y el usuario.

Se puede concluir que el MS−DOS fue uno de los primero (si no el único) Sistema Operativo capaz de

8
soportar a otro sistema operativo (Windows).

Microsoft ha dado termino a la vida útil del MS−DOS, cuando a finales del año 1995, presento el muy
esperado Windows'95, pese a dar por muerto al DOS, windows sigue dependiendo de él para arrancar y para
sorpresa de muchos el MS−DOS en su versión 7.0 sigue vivo.

9
SISTEMAS OPERATIVOS PARTE II

FAMILIA WINDOWS.

Windows es una familia de sistemas operativos desarrollados y comercializados por


Microsoft, cuyo propietario es el conocido Bill Gates. Existen versiones para hogares,
empresas, servidores y dispositivos móviles, como computadores de bolsillo y teléfonos
inteligentes. Hay variantes para procesadores de 16, 32 y 64 bits.
Todo comenzó con el MS-DOS, en 1981,que si bien no poseía entorno gráfico, es el primer
sistema operativo comercializado por Microsoft. El DOS, se sigue utilizando aún en las
mas nuevas versiones de Windows, y se fue mejorando a lo largo de los años a medida que
evolucionaba Windows.

Windows 1.0 : En 1985 Microsoft publicó la primera versión de Windows, una interfaz
gráfica de usuario (GUI) para su propio sistema operativo (MS-DOS) que había sido
incluido en el IBM PC y ordenadores compatibles desde 1981. La primera versión de
Microsoft Windows Premium nunca fue demasiado potente ni tampoco se hizo popular.
Estaba severamente limitada debido a los recursos legales de Apple, que no permitía
imitaciones de sus interfaces de usuario. Por ejemplo, las ventanas sólo podían disponerse
en mosaico sobre la pantalla; esto es, nunca podían solaparse u ocultarse unas a otras.
Tampoco había papelera de reciclaje debido a que Apple creía que ellos tenían la patente de
este paradigma o concepto. Ambas limitaciones fueron eliminadas cuando el recurso de
Apple fue rechazado en los tribunales. Por otro lado, los programas incluidos en la primera
versión eran aplicaciones de juguete con poco atractivo para los usuarios profesionales.

10
Windows 2.0 : Apareció en 1987, y fue un poco más popular que la versión inicial. Gran
parte de esta popularidad la obtuvo de la inclusión en forma de versión run-time de nuevas
aplicaciones gráficas de Microsoft, Microsoft Excel y Microsoft Word para Windows.
Éstas podían cargarse desde MS-DOS, ejecutando Windows a la vez que el programa, y
cerrando Windows al salir de ellas. Windows 2 todavía usaba el modelo de memoria 8088
y por ello estaba limitado a 1 megabyte de memoria; sin embargo, mucha gente consiguió
hacerlo funcionar bajo sistemas multitareas como DesqView.

Windows 3.0 : La primera versión realmente popular de Windows fue la versión 3.0,
publicada en 1990. Ésta se benefició de las mejoradas capacidades gráficas para PC de esta
época, y también del microprocesador 80386, que permitía mejoras en las capacidades
multitarea de las aplicaciones Windows. Esto permitiría ejecutar en modo multitarea viejas
aplicaciones basadas en MS-DOS. Windows 3 convirtió al IBM PC en un serio competidor
para el Apple Macintosh.

11
OS/2
Es un sistema operativo de IBM que intentó suceder a DOS como sistema operativo de los
PC. Se desarrolló inicialmente de manera conjunta entre Microsoft e IBM, hasta que la
primera decidió seguir su camino con su Windows 3.0 e IBM se ocupó en solitario de
OS/2.

OS/2.1
Durante la segunda mitad de los 80, Microsoft e IBM habían estado desarrollando
conjuntamente OS/2 como sucesor del DOS, para sacar el máximo provecho a las
capacidades del procesador Intel 80286. OS/2 utilizaba el direccionamiento hardware de
memoria disponible en el Intel 80286 para poder utilizar hasta 16 MB de memoria. La
mayoría de los programas de DOS estaban por el contrario limitados a 640 KB de
memoria. OS/2 1.x también soportaba memoria virtual y multitarea.

OS/2.2.0
IBM publicó OS/2 versión 2.0 en 1992. Esta versión suponía un gran avance frente a OS/2
1.3. Incorporaba un nuevo sistema de ventanas orientado a objetos llamado Workplace
Shell como sustituto del Presentation Manager, un nuevo sistema de ficheros, HPFS, para
reemplazar al sistema de ficheros FAT de DOS usado también en Windows y aprovechaba
todas las ventajas de las capacidades de 32 bit del procesador Intel 80386. También podía
ejecutar programas DOS y Windows, ya que IBM había retenido los derechos para usar el
código de DOS y Windows como resultado de la ruptura.

OS/2 3.0 y 4.0

IBM continuó vendiendo OS/2, produciendo versiones posteriores como OS/2 3.0 (también
llamado Warp) y 4.0 (Merlin). Pero con la llegada de Windows 95, OS/2 comenzó a perder
cuota de mercado. Aunque OS/2 seguía corriendo aplicaciones de Windows 3.0, carecía de
soporte para las nuevas aplicaciones que requerían Windows 95. Al contrario que con
Windows 3.0, IBM no tenía acceso al código fuente de Windows 95; y tampoco tenía el
tiempo ni los recursos necesarios para emular el trabajo de los programadores de Microsoft

12
con Windows 95; no obstante, OS/2 3.0 (Warp) apareció en el mercado antes que Windows
95 (que se retrasaba respecto a la fecha inicial de lanzamiento); como mejoras incorporaba
una reducción en los requisitos de hardware (pasaba de pedir 8 Mb de memoria RAM de su
antedecesor OS/2 2.1 a pedir sólo 4 Mb), y como gran añadido, incorporaba el llamado
BonusPack, un conjunto de aplicaciones de oficina, comunicaciones, etc que ahorraban el
tener que comprar software adicional como en el caso de Windows. Todo esto unido a una
gran campaña publicitaria y a un muy reducido precio (el equivalente a unos 59.40 € frente
a los 100 € de Windows) provocaron que mucha gente se animase a probarlo en lugar de
esperar la llegada de Windows 95. Lamentablemente, el posterior abandono por parte de
IBM hizo que fuese quedando relegado (aunque sigue siendo utilizado -cada vez menos- en
sectores bancarios por su alta estabilidad).

Windows 3.1 y Windows 3.11


En respuesta a la aparición de OS/2 2.0 , Microsoft desarrolló Windows 3.1, que incluía
diversas pequeñas mejoras a Windows 3.0 (como las fuentes escalables TrueType), pero
que consistía principalmente en soporte multimedia. Más tarde Microsoft publicó el
Windows 3.11 (denominado Windows para trabajo en grupo), que incluía controladores y
protocolos mejorados para las comunicaciones en red y soporte para redes punto a punto.

13
Windows NT : Mientras tanto Microsoft continuó desarrollando Windows NT. Para ello
reclutaron a Dave Cutler, uno de los jefes analistas de VMS en Digital Equipment
Corporation (hoy parte de Compaq, que en 2005 fue comprada por HP) para convertir NT
en un sistema más competitivo. Cutler había estado desarrollando un sucesor del VMS en
DEC (Digital Equipment Corporation) llamado Mica, y cuando DEC abandonó el proyecto
se llevó sus conocimientos y algunos ingenieros a Microsoft. DEC también creyó que se
llevaba el código de Mica a Microsoft y entabló una demanda. Microsoft finalmente pagó
150 millones de dólares y acordó dar soporte al microprocesador Alpha de DEC en NT.
Siendo un sistema operativo completamente nuevo, Windows NT sufrió problemas de
compatibilidad con el hardware y el software existentes. También necesitaba gran cantidad
de recursos y éstos estaban solamente disponibles en equipos grandes y caros. Debido a
esto muchos usuarios no pudieron pasarse a Windows NT. La interfaz gráfica de NT
todavía estaba basada en la de Windows 3.1 que era inferior a la Workplace Shell de OS/2.

Windows NT 3.1: Windows NT 3.1 (la estrategia de marketing de Microsoft era que
Windows NT pareciera una continuación de Windows 3.1) apareció en su versión beta para
desarrolladores en la Conferencia de Desarrolladores Profesionales de julio de 1992 en San
Francisco. Microsoft anunció en la conferencia su intención de desarrollar un sucesor para
Windows NT y Chicago (que aún no había sido lanzada). Este sucesor habría de unificar
ambos sistemas en uno sólo y su nombre clave era Cairo. (Visto en retrospectiva Cairo fue
un proyecto más difícil de lo que Microsoft había previsto y como resultado NT y Chicago
no sería unificados hasta la aparición de Windows XP). Las versiones antiguas de
Windows NT se distribuían en disquettes y requerían unos elevados recursos de hardware
(además de soportar relativamente poco hardware) por lo que no se difundieron demasiado
hasta llegar a Windows NT 4.0 y sobre todo a Windows 2000. Por primera vez daba
soporte para el sistema de ficheros NTFS.

14
Windows NT 3.5/3.51 : Cabe destacar que la interfaz gráfica de Windows NT 3.5 y
Windows 3.51 era la misma que la de sus predecesores, Windows NT 3.1 y Windows 3.1,
con el Administrador de Programas. Por otra parte, Microsoft distribuyó un añadido
llamado NewShell, cuyo nombre completo es Shell Technology Preview Update, que no
era otra cosa más que una versión Beta de la nueva interfaz gráfica de Windows 95 y NT
4.0, con el botón y menú inicio, pero para Windows NT 3.5x. Su función principal era que
los usuarios de Windows evaluaran el nuevo interfaz gráfico, que iba a ser presentado en
Windows 95 y NT 4.0, pero como daño colateral le daba a Windows NT 3.5x la nueva
interfaz gráfica.

Windows NT 4.0: Windows NT 4.0 presentaba varios componentes tecnológicos de


vanguardia y soporte para diferentes plataformas como MIPS, ALPHA, Intel, etc. Las
diferentes versiones como Workstation, Server, Terminal server, Advancer server,
permitían poder adaptarlo a varias necesidades. El uso de componentes como tarjetas de
sonido, módems, etc, tenían que ser diseñados específicamente para este sistema operativo.

Windows 95 : Microsoft adoptó Windows 95 como nombre de producto para Chicago


cuando fue publicado en agosto de 1995. Chicago iba encaminado a incorporar una nueva
interfaz gráfica que compitiera con la de OS/2. Aunque compartía mucho código con
Windows 3.x e incluso con MS-DOS, también se pretendía introducir arquitectura de 32
bits y dar soporte a multitarea preemptiva, como OS/2 o el mismo Windows NT. Sin
embargo sólo una parte de Chicago comenzó a utilizar arquitectura de 32 bits, la mayor
parte siguió usando una arquitectura de 16 bits, Microsoft argumentaba que una conversión
completa retrasaría demasiado la publicación de Chicago y sería demasiado costosa.
Microsoft desarrolló una nueva API para remplazar la API de Windows de 16 bits. Esta
API fue denominada Win32, desde entonces Microsoft denominó a la antigua API de 16
bits como Win16. Esta API fue desarrollada en tres versiones: una para Windows NT, otra
para Chicago y otra llamada Win32s, que era un subconjunto de Win32 que podía ser
utilizado en sistemas con Windows 3.1.; de este modo Microsoft intentó asegurar algún

15
grado de compatibilidad entre Chicago y Windows NT, aunque los dos sistemas tenían
arquitecturas radicalmente diferentes . Windows 95 tenía dos grandes ventajas para el
consumidor medio. Primero, aunque su interfaz todavía corría sobre MS-DOS, tenía una
instalación integrada que le hacía aparecer como un solo sistema operativo (ya no se
necesitaba comprar MS-DOS e instalar Windows encima). Segundo, introducía un
subsistema en modo protegido que estaba especialmente escrito a procesadores 80386 o
superiores, lo cual impediría que las nuevas aplicaciones
Win32 dañaran el área de memoria de otras aplicaciones Win32.

Windows 98 : El 25 de junio de 1998 llegó Windows 98. Incluía nuevos controladores de


hardware y el sistema de ficheros FAT32 (también soportado por Windows 95 OSR 2 y
OSR 2.5) que soportaba particiones mayores a los 2 GB permitidos por Windows 95. Dio
soporte también a las nuevas tecnologías como DVD, FireWire, USB o AGP. Era novedosa
también la integración del explorador de Internet en todos los ámbitos del sistema. Pero la
principal diferencia de Windows 98 sobre Windows 95 era que su núcleo había sido
odificado para permitir el uso de controladores de Windows NT en Windows 9x y
viceversa. Esto se consiguió con la migración de parte del núcleo de Windows NT a
Windows 98, aunque éste siguiera manteniendo su arquitectura MS-DOS/Windows GUI.
Esto permitió la reducción de costes de producción, dado que Windows NT y Windows 98
ahora podían utilizar casi idénticos controladores.

Windows 98 Second Edition (SE) : A principios de 1998 se desarrolló este sistema


operativo, saliendo al mercado a finales de 1998, cuando Microsoft sacó al mercado
Windows 98 Second Edition, cuya característica más notable era la capacidad de compartir
entre varios equipos una conexión a Internet a través de una sola línea telefónica. También
eliminaba gran parte de los errores producidos por Internet Explorer en el sistema. Esta
versión es la más estable de todas las de esta serie, y aún se sigue utilizando en muchos
equipos, mejorando en sí dos cosas importantes:
1) El grave error de solicitud de licencia que simplemente se puede dejar pasar por
alto en la instalación cuando se copian los archivos con extensión .CAB (sin
comillas) a la unidad de disco duro de la computadora (CPU u ordenador) en la
primera versión de este sistema operativo
2) Se corrigen las extensiones de archivo y aplicaciones para una optimización y
mejor administración de memoria virtual, reduciendo así los famosos mensajes
de error en pantalla azul.

16
Windows Millenium Edition (ME) : En 2000 Microsoft introdujo Windows ME que era
una copia de Windows 98 con más aplicaciones añadidas. Windows ME fue un proyecto
rápido de un año para rellenar el hueco entre Windows 98 y el nuevo Windows XP, y eso
se notó mucho en la poca estabilidad de esta versión. En teoría, Windows 2000 iba a ser la
unificación entre las dos familias de Windows, la empresarial y la de hogar, pero por
retrasos se lanzó este pequeño avance. En esta versión se aceleraba el inicio del sistema y
oficialmente ya no se podía distinguir entre el MS-DOS y el entorno gráfico (aunque
aparecieron parches que permitían volver a separarlo como se hacía en versiones
anteriores). Esta versión no traía unidad de proceso de 16 bits y se centró únicamente en la
compatibilidad con nuevo hardware de 32 bits. Como consecuencia, sólo funcionaba
correctamente con los equipos nuevos que lo tenían instalado, ya que si se instalaba sobre
un equipo antiguo (mediante una actualización de software) el hardware de 16 bits era más
complejo de configurar, o bien no funcionaba en absoluto.
Cabe destacar que este sistema operativo fue muy poco popular por sus continuos errores y
muchas desventajas de uso. Estos inconvenientes hicieron que, salvo en contadas
ocasiones, sus usuarios retornaran rápidamente al uso de Windows 98, o bien que dieran el
salto a Windows 2000.

17
Windows 2000: En este mismo año vio la luz Windows 2000, una nueva versión de
Windows NT muy útil para los administradores de sistemas y con una gran cantidad de
servicios de red y lo más importante: admitía dispositivos Pluglay que venían siendo un
problema con Windows NT. La familia de Windows 2000 estaba formada por varias
versiones del sistema: una para las estaciones de trabajo (Windows 2000 Professional) y
varias para servidores (Windows 2000 Server, Advanced Server, Datacenter Server).

Windows 2000 incorporaba importantes innovaciones tecnológicas para entornos


Microsoft, tanto en nuevos servicios como en la mejora de los existentes. Algunas de las
características que posee son:
Almacenamiento:

* Soporte para FAT16, FAT32 y NTFS.


* Cifrado de ficheros (EFS).
* Servicio de indexación.
* Sistema de archivos distribuido (DFS).
* Nuevo sistema de backup (ASR).
* Sistema de tolerancia a fallos (RAID) con discos dinámicos (software).

Comunicaciones:
* Servicios de acceso remoto (RAS, VPN, RADIUS y Enrutamiento).
* Nueva versión de IIS con soporte para HTTP/1.1.
* Active Directory.
* Balanceo de carga (clustering)
* Servicios de instalación desatendida por red (RIS).
* Servicios nativos de Terminal Server

18
Windows XP :La unión de Windows NT/2000 y la familia de Windows 9.x se alcanzó con
Windows XP puesto en venta en 2001 en su versión Home y Professional. Windows XP
usa el núcleo de Windows NT. Incorpora una nueva interfaz y hace alarde de mayores
capacidades multimedia. Además dispone de otras novedades como la multitarea
mejorada, soporte para redes inalámbricas y asistencia remota. Se puede agregar que
inmediatamente después de haber lanzado el último Service Pack (SP2), Microsoft diseñó
un sistema orientado a empresas y corporaciones, llamado Microsoft Windows XP
Corporate Edition, algo similar al Windows XP Profesional, solo que diseñado
especialmente para empresas. En el apartado multimedia, XP da un avance con la versión
Media Center(2002-2005). Esta versión ofrece una interfaz de acceso fácil con todo lo
relacionado con multimedia (TV, fotos, reproductor DVD, Internet...)
Windows Server 2003 : Sucesor de la familia de servidores de Microsoft a Windows 2000
Server. Es la versión de Windows para servidores lanzada por Microsoft en el año 2003.
Está basada en el núcleo de Windows XP, al que se le han añadido una serie de servicios, y
se le han bloqueado algunas de sus características (para mejorar el rendimiento, o
simplemente porque no serán usadas).
Windows Vista: Windows Vista apareció en el mercado el 30 de enero de 2007. Cabe
destacar los continuos retrasos en las fechas de entrega del sistema operativo. Inicialmente
se anunció su salida al mercado a inicios-mediados de 2006; posteriormente y debido a
problemas durante el proceso de desarrollo, se retrasó su salida hasta finales de 2006. El
último retraso trasladó la fecha hasta finales de enero de 2007. Estos continuos retrasos
han llevado a Microsoft a tomar diversas medidas para minimizar los gastos extras
derivados de los retrasos. Por ejemplo, en Argentina, se podrá comprar Windows Vista con
un ticket que la persona adquiere al momento de comprar un nuevo PC que no tiene
instalado todavía Windows Vista. Podrán canjear el ticket por una copia original de
Windows Vista y así actualizar su sistema. También cabe destacar que Windows Vista trae
una nueva interfaz gráfica llamada Aero, que es una evolución de la interfaz gráfica
denominada Luna de Windows XP.

19
Windows 7 : Es la versión más reciente de Microsoft Windows, un sistema operativo
producido por Microsoft para uso en PCs, incluyendo equipos de escritorio en hogares y
oficinas, equipos portátiles, tablet PC, netbooks y equipos media center. El desarrollo de
Windows 7 se completó el 22 de julio de 2009, siendo entonces confirmada su fecha de
venta oficial para el 22 de octubre de 2009 junto a su equivalente para servidores
A diferencia del gran salto arquitectónico y de características que sufrió su antecesor
Windows Vista con respecto a Windows XP, Windows 7 fue concebido como una
actualización incremental y focalizada de Vista y su núcleo NT 6.0, lo que permitió el
mantener cierto grado de compatibilidad con aplicaciones y hardware en los que éste ya
era compatible. Sin embargo, entre las metas de desarrollo para Windows 7 se dio
importancia en mejorar su interfaz para volverla más accesible al usuario e incluir nuevas
características que permitieran hacer tareas de una manera más fácil y rápida, al mismo
tiempo en que se realizarían esfuerzos para lograr un sistema más ligero, estable y rápido.
Diversas presentaciones dadas por la compañía en el 2008 se enfocaron en demostrar
capacidades multitáctiles, una interfaz rediseñada junto con una nueva barra de tareas y un
sistema de redes domésticas fácil de usar denominado Grupo en el Hogar, además de
grandes mejoras en el rendimiento general del equipo.

20
Introducción a MS Word.

Herramientas Informáticas
para la elaboración de
informes técnicos
INICIO DE WORD  3 

DISTINTAS FORMAS DE VISUALIZAR EL DOCUMENTO  3 

COMANDOS MÁS UTILIZADOS.  4 

1.1.  ABRIR/ GUARDAR/ GUARDAR COMO  4 

1.2.  CORTAR, COPIAR, PEGAR, COPIAR FORMATO  4 

1.3.  DESHACER/ REHACER  5 

1.4.  BUSCAR/ REEMPLAZAR  5 

APLICACIÓN DE FORMATOS  6 

1.5.  DAR FORMATO AL DOCUMENTO Y A LAS SECCIONES  6 

1.6.  DAR FORMATO A LOS PÁRRAFOS  7 

1.7.  DAR FORMATO A LOS CARACTERES  7 

1.8.  PREPARACIÓN DE ENCABEZADOS Y PIES DE PÁGINA  7 

1.9.  INSERTAR NOTAS AL PIE DE PÁGINA  8 

1.10.  LISTAS NUMERADAS Y VIÑETAS.  8 

1.11.  APLICAR FORMATO AL TEXTO UTILIZANDO “ESTILOS”  9 

INSERCIÓN DE OBJETOS.  10 

1.12.  TABLAS.  10 

1.13.  GRÁFICOS.  11 

CREAR UN OBJETO VINCULADO O INCRUSTADO DE  MICROSOFT EXCEL  11 

1.14.  ECUACIONES.  12 

1.15.  DIAGRAMAS DE FLUJO.  13 

1.16.  ORGANIGRAMAS.  13 

2
Inicio de Word

La forma más directa de arrancar Word es utilizar el menú Inicio, por medio del comando
Inicio/Programas/…../Microsoft Word. Sea cual sea el sistema que se utilice para arrancar la aplicación,
haciendo doble clic sobre un archivo creado con Word (extensión *.doc por defecto), arrancará el
programa y se abrirá el archivo correspondiente.

1
2

3
4

Se abre el programa mostrando una serie de barras y una zona en blanco donde podemos escribir.

Se observan de arriba hacia abajo las siguientes barras:

La barra de títulos (1) en la que aparece el nombre de la aplicación y el nombre del archivo que está
abierto.

La barra de menús (2), desde la que es posible abrir los menús que dan acceso a los comandos más
importantes del programa.

La barra de herramientas estándar (3).

La barra de herramientas formato (4).

La regla (5), justo encima del texto, con la que se pueden controlar la sangría, las tabulaciones, y en
general lo que tiene que ver con las medidas de la página.

En la parte inferior de la ventana de Word, aparece la barra de estado, en la que aparece información
general: numero de página, idioma, sección, columna, etc.

En el lateral de la pantalla se muestra la barra de desplazamiento que facilita movernos por las páginas.

Distintas formas de visualizar el documento

Hay diferentes formas de visualizar un documento, a las que se


accede presionando Ver en la barra de menú y cualquiera de las
opciones visualizadas en la figura siguiente:

En la vista normal el documento se muestra de una forma continua.


El cambio de página se muestra como una línea de puntos. En este

3
modo no se ven adecuadamente los elementos gráficos. Es una vista útil cuando tenemos un ordenador
lento.

Word nos permite crear ficheros en Html que podemos colocar directamente en Internet. Por tanto con
este programa podemos crear páginas Web y en la vista Diseño Web comprobamos como se visualizará
en Internet la página que estamos creando.

La opción Diseño de Impresión muestra las páginas claramente diferenciadas y una imagen muy
aproximada de como va a quedar la página al imprimirla.

Cuando tenemos un texto largo que recorrer puede ser interesante revisarlo mediante la Vista Esquema
que nos muestra solamente los títulos de los distintos apartados. Desde esta vista podemos cambiar
fácilmente el orden de las diferentes secciones. Para que esta vista sea efectiva los títulos deben
introducirse utilizando la instrucción Insertar/ Título.

Otra vista
interesante para
documentos largos
es el Mapa del
documento.
Pulsando sobre
esta opción la
pantalla aparece
dividida en dos
columnas. La
columna de la
izquierda muestra
el índice del
documento.
Pulsando sobre un
apartado del índice nos movemos rápidamente a ese lugar del documento.

Otra opción de visualización es la que se muestra pulsando Archivo/ Vista preliminar.

En esta vista la pantalla nos muestra cómo quedará el documento una vez pasado al papel.

Comandos más utilizados.

1.1. Abrir/ guardar/ guardar como

Las opciones se presentan en el menú archivo. En la barra de herramientas estándar aparecen los íconos
correspondientes a crear un nuevo documento, abrir un documento existente y guardar el documento

activo.

Es posible, abrir un documento existente (abrir), guardar un documento existente (guardar) y guardar un
documento con un nuevo nombre (guardar como).

Cuando se va a guardar un documento por primera vez, o cuando se usa la opción guardar como, se abre
un cuadro de diálogo en el que hay que elegir la unidad de disco, el directorio y el nombre del archivo
donde se quiere guardar el documento.

1.2. Cortar, copiar, pegar, copiar formato

Estas son las operaciones más frecuentes cuando se redacta, corrige o modifica un documento.

4
Cuando, estando un texto seleccionado, se activan los comandos cortar o copiar (desde el
menú Edición, desde los botones de la barra estándar o mediante las combinaciones ctrl.+x ó ctrl.+c), el
texto correspondiente se introduce en una zona especial de la memoria: “el portapapeles”. Luego, al
activar el comando Pegar (ctrl.+v), el texto seleccionado y almacenado se introduce en la posición
donde está el cursor. Esta introducción o pegado de texto puede hacerse tantas veces como se quiera, pues
el texto no desaparece del portapapeles hasta que no se borra explícitamente del mismo o es sustituido por
otro texto.

La diferencia entre los comandos cortar y copiar reside en el hecho de que Cortar elimina el contenido
seleccionado de su posición original, mientras que Copiar lo mantiene.

Otra opción interesante es la de “copiar formato” . Este comando copia el formato del texto
seleccionado o sobre el que está el cursor, y lo aplica en la selección posteriormente elegida (Observe que
el cursor adquiere una forma diferente). Este botón tiene dos posibilidades: puede ser aplicado a una sola
selección (haciendo un solo clic sobre el icono), o puede ser aplicado en diferentes selecciones (haciendo
dos clic sobre el icono). En el último caso, para volver el cursor al modo normal hay que volver a clickear
sobre el botón.

1.3. Deshacer/ Rehacer

Para deshacer el último cambio, se hace clic en el botón . Si se desean deshacer varios cambios se
hace clic en la flecha que está contigua a la flecha deshacer, de esta manera aparece una lista de las

acciones que pueden ser canceladas. De la misma manera se realiza la acción “ Rehacer” .

1.4. Buscar/ Reemplazar

El comando “Buscar” y el comando “Reemplazar” se encuentran en el menú “Edición”.

La utilidad del comando “buscar” consiste en encontrar un determinado texto en un documento.

El comando “Reemplazar” es análogo a “Buscar”, con la diferencia de que permite opcionalmente


sustituir el texto encontrado por un texto alternativo. Este comando permite que el usuario decida cada
vez que encuentra el texto buscado, si quiere realizar la sustitución. También permite realizar todas las
sustituciones directamente sin pedir la confirmación del usuario.

En ambos casos, existen opciones para considerar diferentes o no las letras mayúsculas y minúsculas, así
como para considerar palabras completas o también partes de una palabra. Existen también otras opciones
y la mejor manera de aprender a utilizarlas es hacer pruebas con ellas.

5
Aplicación de formatos

1.5. Dar formato al documento y a las secciones

El formato de página nos permite definir las características de las páginas enteras. Para definir algunas de
las opciones hace clic en Archivo/ Configurar página. Aparece entonces un cuadro de diálogo
(“Configurar página”) con cuatro pestañas que dan acceso a los distintos formatos que afectan a una
página (márgenes, papel y diseño).

Un documento puede estar


dividido en secciones. Una
sección es una parte del un
documento con sus propias
características de formato.

El formato se puede aplicar a


una sección determinada, a un
texto seleccionado o bien a
todo el documento. Esto se
selecciona desde la lista
“Aplicar a” (Ver cuadro de
texto “Configurar página”).

Para introducir un cambio de


sección o un salto de página,
hay que colocar el cursor en el
punto donde se quiere empezar
la nueva sección o página, que
deberá ser justo antes o después
de un párrafo. Luego se deberá
elegir el comando Salto del
menú Insertar. En el cuadro de
diálogo que se abre (“Salto”) se puede elegir entre introducir un salto de página, introducir un cambio de
columna (para textos con dos o más columnas por página), forzar a que el texto continúe en la siguiente
línea o introducir un cambio de sección.

Para el cambio de sección existen cuatro posibilidades,


según se desee que la nueva sección que comienza después
del cambio continúe en una nueva página, continúe sin más,
continúe en una nueva página par, o continúe en una nueva
página impar. Al hacer clic en Aceptar se vuelve al texto
original.

Los saltos de página no representan de por sí ningún cambio


de formato. Los cambios de sección sí pueden representar
ese cambio, aunque cuando se crea una nueva sección
introduciendo un Salto de Sección, la nueva sección hereda
los formatos de aquélla de la que ha surgido por división.
Esos formatos pueden ser modificados por el usuario cuando
lo desee de la misma manera que cuando configura una
página, pero seleccionando la opción: aplicar a salto de
página, según se indicó en párrafos anteriores.

6
1.6. Dar formato a los párrafos

Para dar formato a cada párrafo


seleccionamos párrafo del menú formato,
aparece el cuadro de mensaje “Párrafo”.

Un texto puede estar alineado a la izquierda, a


la derecha, centrado o justificado. Los íconos

que le corresponden son .


También se puede seleccionar la alineación
de la lista “Alineación” del cuadro de diálogo
mencionado.

Las sangrías de párrafo permiten que la


primera y/ o todas las líneas de un párrafo
comiencen a una determinada distancia del
margen izquierdo. Se pueden cambiar
directamente con las “reglas”, o mediante el
menú.

Para crear espacio entre párrafos se puede


utilizar la tecla “intro” sin embargo, ésta
opción no es conveniente. Se efectúa
ingresando el valor del espaciado anterior y posterior, y tipo de interlineado desde “Espaciado” en el
cuadro de mensajes “Párrafo”, habiendo seleccionado previamente el texto.

1.7. Dar formato a los caracteres

Cada conjunto de caracteres que forma parte de un párrafo puede tener su propio formato. Los formatos
típicos de los caracteres son el tipo y tamaño
de letra (Fuente), el estilo (negrita, cursiva,
subrayada, tachada, versales, etc.), la altura
sobre la línea (subíndice o superíndice), el
color de los caracteres, etc.

Para dar formato al texto es necesario


seleccionarlo y luego aplicarle las opciones
que se deseen. Esto se puede hacer
presionando el botón secundario del mouse y
seleccionando la opción formato. Otras
posibilidades surgen al utilizar directamente
los íconos que pertenecen a la barra de
herramientas formato o haciendo clic en
formato/ fuente.

La pestaña “Fuente” permite seleccionar las


opciones más comunes.

1.8. Preparación de encabezados y pies de página

Para poder crear un encabezado en el documento actual hay que activar la opción Encabezado y pie de
página del menú Ver. La ventana principal del documento tiene la forma indicada en la figura que se

7
muestra a continuación, se activa la zona de encabezado y el texto del documento se desactiva. Aparece
una barra de herramientas que le permite entre otras opciones, ingresar la numeración de página, la
cantidad de páginas del documento, la fecha y la hora actuales, configurar el formato del número y de la
página e intercambiar entre el encabezado y el pie de página.

Esta función es característica de una sección, por lo que puede ser diferente de una sección a otra del
mismo documento, también puede ser diferente entre páginas pares o impares o ser diferente en la
primera página únicamente. Estas opciones se encuentran en la pestaña Diseño del cuadro de mensaje
“Configurar página”.

Otra manera de insertar números de página es seleccionando “Números de página” del menú “Insertar”.

1.9. Insertar notas al pie de página

Colocar el cursor en el punto del texto donde se quiere que


aparezca el número de la nota, seleccionar insertar/ referencia/
nota al pie.

En el cuadro de diálogo que se abre (“Notas al pie y notas al


final”) se puede elegir entre introducir una nota al pie de página
actual o al final del documento. Con la opción Formato puede
numerar las notas consecutivamente de modo automático. Cuando
acepte la operación, se tiene acceso al pie de la página para
escribir el texto de la nota. Para borrar una nota a pie de página
basta borrar el número de que aparece en la llamada. Para
modificar el texto clickee directamente en la nota al pie o en el
número de referencia.

1.10. Listas numeradas y viñetas.

Se puede crear automáticamente listas con viñetas y listas numeradas mientras escribe, o puede agregar
rápidamente viñetas o números a líneas de texto existentes.

Para agregar viñetas o números una lista seleccione los elementos a los que desee agregar viñetas o la
numeración, seleccione Formato/ Numeración y Viñetas (Ver Cuadro “Numeración y viñetas”) o bien, en
la barra de herramientas Formato, haga clic en Viñetas o Numeración.

Una lista de esquema numerada muestra los elementos de la lista con varios niveles en lugar de
mostrarlos con sangría y un solo nivel.

En el menú Formato, haga clic en Numeración y viñetas y, a continuación, haga clic en la ficha Esquema
numerado.

8
Haga clic en un formato de lista que desee y, a continuación, haga clic en Aceptar.

El primer número de la lista aparece en


el documento.

Escriba el texto de la lista y presione


ENTRAR después de cada elemento.

Los siguientes números se insertan


automáticamente al principio de cada
línea en el mismo nivel de numeración.

Para cualquiera de las opciones


seleccionadas, es posible modificar el
estilo y la forma de la numeración,
continuar la numeración de los párrafos
previamente introducidos o comenzar
una numeración nueva partiendo del
número que se desee.

1.11. Aplicar formato al texto utilizando “Estilos”

Un estilo es un conjunto de características de formato que se puede aplicar a texto, tablas y listas de un
documento para cambiar su aspecto rápidamente. Cuando se aplica un estilo, se aplica un grupo completo
de formatos en un solo proceso.

Por ejemplo, en lugar de realizar tres pasos distintos para aplicar a un título el formato de fuente Arial de
16 puntos y alineación centrada, puede obtener el mismo resultado en un solo paso, aplicando el estilo
Título.

Un estilo de párrafo controla totalmente la apariencia de un párrafo, como la alineación del


texto, las tabulaciones, el interlineado y los bordes, y puede incluir formato de caracteres.
Un estilo de carácter afecta sólo al texto seleccionado en un párrafo (fuente, tamaño del texto, y
cursiva).
Un estilo de tabla proporciona un estilo coherente a bordes, sombreado, alineación y fuentes en
las tablas.
Un estilo de lista aplica una alineación, numeración o viñetas y fuentes similares a las listas.

Puede crear, ver y volver a aplicar estilos desde el panel de tareas “Estilos y formato”. El formato que
aplique directamente también se guarda en este panel, para que pueda volver a aplicarlo rápidamente.

Cuando desee cambiar el estilo del texto, puede aplicar un estilo existente, también denominado estilo
integrado. Si no encuentra un estilo con las características que desea, puede crear uno nuevo y aplicarlo
después.

Para modificar rápidamente todo el texto al que se le ha aplicado un estilo específico, puede volver a
definir el estilo aplicado. Por ejemplo, si el estilo de los títulos principales es fuente Arial 14 ptos,
alineación a la izquierda y en negrita y, posteriormente, decide que sea fuente Arial Narrow 16 pto y
centrado, no es necesario volver a dar formato a todos los títulos principales del documento. Simplemente
tendrá que cambiar las propiedades de dicho estilo.

9
Tenga en cuenta que al modificar un
elemento de formato del estilo base
de un documento, el cambio también
afectará a todos los estilos basados en
el estilo base de ese documento.

Para acceder al cuadro de tareas


“estilos y formato”, seleccione
Formato/ Estilos y formato (fig. 10).

Para aplicar un estilo, seleccione el


texto o tabla y haga clic en el estilo
que quiera aplicar.

Para modificar un estilo, seleccione el


texto que tenga el estilo a modificar,
clickee en el estilo y con el botón
secundario del mouse haga clic en
modicar. En el cuadro “Modificar
estilo” podrá realizar todas las
variaciones que desee.

Inserción de objetos.

1.12. Tablas.

Haga clic en el lugar en que desee crear una tabla. Aparecerá un cuadro que le permitirá definir el tamaño
de la tabla (número de filas y columnas), el ancho de las columnas, o aplicar si lo desea un formato
predeterminado a la tabla.

Para modificar una tabla ya creada, hay una serie de


comandos de edición, que se enumeran a continuación:

1. Seleccionar/ agregar o eliminar una celda/ fila o


columna a la tabla.
2. Combinar o dividir celdas/ tablas.
3. Convertir texto en tabla o tabla en texto.
4. Utilizar algunas funciones (suma, promedio, valor
absoluto, máximo, etc.), formatos de números (fecha, hora,
etc) predefinidas o ingresar alguna función personalizada
en las celdas seleccionando fórmula en el menú tabla.
5. Definir bordes y sombreados. (Se hace clic en el
botón que aparece en la pantalla o se accede desde
formato/ bordes y sombreado), la alineación de la tabla
con respecto al texto, la forma de ajuste del texto del
documento alrededor de la tabla, el alto de fila, el ancho de
columna, el tipo de alineación vertical del texto en cada
celda o en toda la tabla.

10
6. Decidir si se desea que al pasar a una nueva página la tabla se divida y/ o que se repitan los
encabezados de la misma.

Las opciones 5 y 6 se determinan seleccionando las distintas pestañas del cuadro “Propiedades de tabla”,
que se activa desde el menú tabla.

1.13. Gráficos.

Crear un objeto vinculado o incrustado de Microsoft Excel

 Abra el documento de Microsoft Word y la hoja de cálculo de Microsoft Excel que contengan los
datos a partir de los que desee crear un
objeto vinculado o incrustado.
 Pase a Microsoft Excel y, a
continuación, seleccione toda la hoja de
cálculo, un rango de celdas o el gráfico que
desee
 Haga clic en Copiar.

Pase al documento de Word y, a


continuación, haga clic en el lugar donde
desee que aparezca la información.

 Para vincular o incrustar el objeto,


vaya al menú edición y seleccione pegar
(para incrustar) o pegado especial (para
vincular) según sea el caso.

Las principales diferencias


entre los objetos vinculados y
los objetos incrustados son la
ubicación donde se almacenan
los datos y cómo se actualiza el
objeto una vez colocado en el
archivo de destino: los objetos
incrustados se almacenan en el
libro donde se insertan y no se
actualizan (aunque pueden
modificarse como un gráfico
de Excel si se desea), en
cambio, los objetos vinculados
siguen siendo archivos
independientes y se actualizan
automáticamente al cambiar los datos en el archivo de origen.

11
1.14. Ecuaciones.

Una de las características más


importantes para el ingeniero es la
de poder introducir ecuaciones en el
texto. Esto se realiza por medio de
un módulo especial llamado Editor
de Ecuaciones. Este complemento
puede ser utilizado en Word, Excel y
Power Point. Permite crear una
ecuación y editarla de manera
sencilla siguiendo los siguientes
pasos:

Haga clic donde desee insertar la


ecuación.

En el menú Insertar, haga clic en


Objeto y, a continuación, haga clic en la ficha Crear nuevo.

En el cuadro Tipo de objeto, haga clic en Microsoft Editor de ecuaciones 3.0. (Si no está disponible el
Editor de ecuaciones de Microsoft, es posible que necesite instalarlo).

Haga clic en Aceptar. El editor de ecuaciones abre un recuadro en el que se debe escribir la ecuación. Este
módulo tiene su propio menú, y una caja de menús gráficos desplegables en los que se pueden encontrar
todo tipo de signos necesarios para escribir las expresiones matemáticas más complicadas.

Para crear la ecuación,


seleccione los símbolos de la
barra de herramientas
Ecuación y escriba las
variables y los números
necesarios. En la fila superior
de la barra de herramientas
Ecuación, puede elegir entre
más de 150 símbolos
matemáticos. En la fila
inferior, puede elegir entre un
gran número de plantillas o
modelos que contienen
símbolos, como por ejemplo, fracciones, integrales y sumatorias.

Para regresar a Microsoft Word, haga clic en el documento de Word.

12
1.15. Diagramas de flujo.

En la barra de herramientas Dibujo,


haga clic en Autoformas, elija
Diagrama de flujo y, a continuación,
haga clic en la forma que desee.

Haga clic en el lugar que desee dibujar


la forma del diagrama de flujo.

Si desea agregar formas adicionales al


diagrama de flujo, repita los pasos 1 y 2
y, a continuación, organícelos en el
orden que desee.

Agregue conectores entre cada forma:


en la barra de herramientas Dibujo,
haga clic en Autoformas, elija

Conectores y, a continuación, haga clic en el conector


que desee, elija dónde desea bloquear el conector (los
sitios de conexión aparecen como círculos azules al
pasar el puntero por la forma), haga clic en el primer
sitio de conexión, elija la otra forma y, a continuación,
haga clic en el segundo sitio de conexión. Puede
agregar texto a las formas haciendo clic con el botón
secundario del mouse en una forma, y
seleccionando “agregar texto”, esto lo habilita a
escribir.

En la figura siguiente se muestra a modo de ejemplo


un diagrama de flujo parcial.

La edición de color y tipo de líneas, rellenos de las autoformas, etc. se realiza utilizando las propiedades
de la barra de herramientas Dibujo.

1.16. Organigramas.

Puede utilizar la herramienta de diagramas de la barra de herramientas Dibujo para crear un organigrama
que ilustre relaciones jerárquicas, como los jefes de departamento y los empleados de una organización.

En la barra de herramientas Dibujo, haga clic en Diagrama.

Haga clic en el diagrama Organigrama y, a continuación, haga clic en Aceptar.

Aparecerá una barra de herramientas como la mostrada en el gráfico que le permitirá realizar el
organigrama. Además, aparecerá una disposición por defecto que podrá utilizar como base para iniciar su
proyecto.

13
Si desea agregar una forma, seleccione la forma bajo la que o junto a la que desea agregar la forma nueva,
haga clic en la flecha del botón Insertar forma en la barra de herramientas Organigrama y, a continuación,
haga clic en uno o varios de los elementos siguientes:

Compañero de trabajo: para colocar la forma en el mismo nivel que la forma seleccionada y conectarla
con la forma del nivel superior de la que depende la primera.

Subordinado: para colocar la forma nueva en el nivel inmediatamente inferior y conectarla a la forma
seleccionada.

Ayudante: para colocar la forma nueva bajo la forma seleccionada con un conector angular.

Haga clic fuera del dibujo cuando haya finalizado.

14
Introducción a MS Excel

Herramientas Informáticas
aplicada a la

Ingeniería Química.
Microsoft Excel es una aplicación para manejar hojas de cálculo. Este programa es desarrollado y
distribuido por Microsoft, y es utilizado normalmente en tareas financieras y contables.
La lista de versiones de Microsoft Excel que han sido lanzadas al mercado para Microsoft Windows
son:
En el año 1987 Excel 2.0.
En el año 1990 Excel 3.0.
En el año 1992 Excel 4.0.
En el año 1993 Excel 5.0 (Office 4.2 & 4.3).
En el año 1995 Excel 7.0 (Office ‘95).
En el año 1997 Excel 8.0 (Office ‘97).
En el año 1999 Excel 9.0 (Office 2000).
En el año 2001 Excel 10.0 (Office XP).
En el año 2003 Excel 11.0 (Office 2003).
En el año 2007 Excel 12.0 (Office 2007).
En el año 2010 Excel 14.0 (Office 2010).

Excel ofrece una interfaz de usuario ajustada a las principales características de las hojas de
cálculo, en esencia manteniendo ciertas premisas que pueden encontrarse en la hoja de cálculo
original, VisiCalc: el programa muestra las celdas organizadas en filas y columnas, y cada celda
contiene datos o una fórmula, con referencias relativas ,absolutas o mixtas a otras celdas.
Excel fue la primera hoja de cálculo que permite al usuario definir la apariencia (las fuentes,
atributos de carácter y celdas). También introdujo recomputación inteligente de celdas, donde
celdas dependientes de otra celda que han sido modificadas, se actualizan al instante (programas
de hoja de cálculo anterior recalculaban la totalidad de los datos todo el tiempo o esperaban para
un comando específico del usuario). Excel tiene una amplia capacidad gráfica, y permite a los
usuarios realizar, entre otras muchas aplicaciones, listados usados en combinación de
correspondencia.

Las características, especificaciones y límites de Excel han variado considerablemente de versión


en versión, exhibiendo cambios en su interfaz operativa y capacidades desde el lanzamiento de su
versión 12.0 mejor conocida como Excel 2007. Se puede destacar que mejoró su límite de
columnas ampliando la cantidad máxima de columnas por hoja de cálculo de 256 a 16.384
columnas. De la misma forma fue ampliado el límite máximo de filas por hoja de cálculo de 65.536
a 1.048.576 filas por hoja. Otras características también fueron ampliadas, tales como el número
máximo de hojas de cálculo que es posible crear por libro que pasó de 256 a 1.024 o la cantidad de
memoria del PC que es posible emplear que creció de 1 GB a 2 GB soportando además la
posibilidad de usar procesadores de varios núcleos.

La Hoja de Cálculo
Las hojas de cálculo son aplicaciones informáticas que se suelen incluir con frecuencia dentro de
conjuntos de programas más amplios destinados normalmente a la gestión de oficinas. Su
capacidad para realizar de forma sencilla cálculos repetitivos y útiles presentaciones de resultados,
las hace muy adecuadas para usos de tipo técnico. La hoja de cálculo es uno de los programas que
toman parte en el proceso de diseño de cualquier proyecto. Cuando se dispone de un conjunto de
datos y se desconoce la relación entre ellos, es posible intentar adaptarles una función de tipo
conocido, en la que es necesario calcular los parámetros a partir de la serie de datos. Para
funciones sencillas, la hoja de cálculo es la herramienta más simple y adecuada.

2
El trabajo del usuario de una hoja de cálculo es precisamente: conseguir que la hoja refleje lo que
el usuario quiere calcular, y analizar los resultados. Los cálculos ya los hace el programa, mejor y
más rápido que el operador humano.

La apariencia general de Microsoft Excel, es una estructura cuadricular a la que se denomina hoja
de cálculo, la cual se puede apreciar en la siguiente figura.

Cuando la hoja de cálculo no contiene ningún dato, es posible activar cualquier celda de la hoja
siguiendo estos pasos:
1. Abrir el menú Edición y seleccionar la opción Ir a. También es posible activar esta misma
ventana con solo pulsar F5.
2. Introducir la dirección de la celda en Referencia:
3. Por último hacer clic en Aceptar del cuadro de diálogo.

Cuando un formato debe aplicarse de forma repetitiva a celdas o áreas separadas entre sí, es más
operativo definir un Estilo que ir fijando las características de formato por separado. El estilo de
celda memoriza todas las características bajo un nombre de estilo, y puede aplicarse a las celdas
seleccionadas con Formato? Estilo aparece el cuadro de diálogo en el que pueden usarse estilos de
la lista desplegable o definir un estilo nuevo escribiendo un nuevo nombre en esta lista.
Al pulsar Modificar aparece el cuadro de características de formato, en el que se eligen las
deseadas, y después basta Agregar para que el nuevo estilo se incluya en la lista y pueda utilizarse.

3
El estilo es el controlador principal del formato. Al seleccionar una celda, se aplican por defecto las
características del estilo que esté fijado para esa celda. Por ejemplo, el tipo y tamaño de letra
activos pasan a ser los que estén definidos en el estilo de la celda.
Fijar el formato de una hoja para que adopte un aspecto determinado, por ejemplo este:
Selecciona el área A1:D3 y Formato de celdas.
En la ficha bordes, usando los botones configura el contorno y las líneas interiores así:

4
Nota: es conveniente que el texto no sea más ancho que la celda, aunque puede seguirse
escribiendo en ella cuando se ha traspasado su límite.

En la ficha tramas (Relleno), selecciona el color y acepta.

5
Selecciona el área A4:D4 y formato celda Fijamos y seleccionamos
los bordes tal como aparece en la imagen.

En la pestaña Relleno, elegimos la trama y aceptamos. (Atenuado al 25%).


Repetimos lo mismo para el área A5:D18. Elegimos bordes y color…

Podemos elegir el color de muestra o cualquier otro tono suave, como los tonos pastel, por
ejemplo.
Ensanchamos la columna F al doble de su tamaño.

6
Seleccionamos el área E1:G18 y pulsamos Autoformato (o Estilos de celda -> celda vinculada).
Buscamos dentro de “estilos de celda” el tipo de celda vinculada. Si por el contrario hemos optado
por autoformato, seleccionaremos la opción “Efectos 3D1

Textos y números
Una celda puede contener básicamente tres tipos de datos:
- Cadenas de texto: Conjuntos de caracteres, que se describen en el tipo de letra activo. No varían
por efecto de las operaciones de la hoja. En el estilo normal, su ajuste es a la izquierda de la celda.
El formato de los caracteres se controla de forma similar a la de un procesador de texto, aplicando
un Estilo o modificadores del mismo, en este caso con la barra de herramientas Formato.
- Números constantes: Valores numéricos, escritos en el tipo de letra activo, que no varían por
efecto de las operaciones de la hoja. Normalmente son datos para estas operaciones. El estilo
normal los ajusta a la derecha de la celda. El carácter separador de decimales es la coma. Son
características propias de los números, que se llaman Categorías de Formato

Estructura de una función


La estructura de una función comienza por el signo igual (=), seguido por el nombre de la función, un
paréntesis de apertura, los argumentos de la función separados por comas y un paréntesis de cierre.
Nombre de función. Para obtener una lista de funciones disponibles, haga clic en una celda y presione
MAYÚS+F3.
Argumentos. Los argumentos pueden ser números, texto, valores lógicos como VERDADERO o FALSO,
matrices (matriz: utilizada para crear fórmulas sencillas que producen varios resultados o que funcionan
en un grupo de argumentos que se organizan en filas y columnas. Un rango de matriz comparte una
fórmula común; una constante de matriz es un grupo de constantes utilizadas como un argumento.),
valores de error como #N/A o referencias de celda (referencia de celda: conjunto de coordenadas que
ocupa una celda en una hoja de cálculo. Por ejemplo, la referencia de la celda que aparece en la
intersección de la columna B y la fila 3 es B3.). El argumento que se designe deberá generar un valor
válido para el mismo. Los argumentos pueden ser también constantes (constante: valor que no ha sido
calculado y que, por tanto, no varía. Por ejemplo, el número 210 y el texto "Ingresos trimestrales" son
constantes. Las expresiones, o los valores resultantes de ellas, no son constantes.), fórmulas u otras
funciones.
Información sobre herramientas de argumentos. Cuando se escribe la función, aparece una información

7
sobre herramientas con su sintaxis y sus argumentos. Por ejemplo, escriba =REDONDEAR( y aparecerá la
información. La información sobre herramientas sólo aparece para las funciones integradas.

Escribir fórmulas
Cuando cree una fórmula que contenga una función, el cuadro de diálogo Insertar función le ayudará a
introducir las funciones de la hoja de cálculo. A medida que se introduzca una función en la fórmula, el
cuadro de diálogo Insertar función irá mostrando el nombre de la función, cada uno de sus argumentos,
una descripción de la función y de cada argumento, el resultado actual de la función y el resultado actual
de toda la fórmula.
Funciones anidadas
En algunos casos, puede que deba utilizar una función como uno de los argumentos (argumento: valores
que utiliza una función para llevar a cabo operaciones o cálculos. El tipo de argumento que utiliza una
función es específico de esa función. Los argumentos más comunes que se utilizan en las funciones son
números, texto, referencias de celda y nombres.) de otra función. Por ejemplo, la siguiente fórmula
utiliza una función anidada PROMEDIO y compara el resultado con el valor 50.

Resultados válidos
Cuando se utiliza una función anidada como argumento, deberá devolver el mismo tipo de valor que el
que utilice el argumento. Por ejemplo, si el argumento devuelve un valor VERDADERO o FALSO, la
función anidada deberá devolver VERDADERO o FALSO. Si éste no es el caso, Microsoft Excel mostrará el
valor de error #¡VALOR!
Límites del nivel de anidamiento:

Una fórmula puede contener como máximo siete niveles de funciones anidadas. Si la Función B se utiliza
como argumento de la Función A, la Función B es una función de segundo nivel. Por ejemplo, la función
PROMEDIO y la función SUMA son ambas funciones de segundo nivel porque son argumentos de la
función SI. Una función anidada dentro de la función PROMEDIO será una función de tercer nivel, etc.
Referencias en las fórmulas
Una referencia identifica una celda o un rango de celdas en una hoja de cálculo e indica a Microsoft Excel
en qué celdas debe buscar los valores o los datos que desea utilizar en una fórmula. En las referencias se
puede utilizar datos de distintas partes de una hoja de cálculo en una fórmula, o bien utilizar el valor de
una celda en varias fórmulas. También puede hacerse referencia a las celdas de otras hojas en el mismo
libro y a otros libros. Las referencias a celdas de otros libros se denominan vínculos.
Estilo de referencia A1
De forma predeterminada, Microsoft Excel utiliza el estilo de referencia A1, que se refiere a columnas
con letras (de A a IV, para un total de 256 columnas) y a las filas con números (del 1 al 65536). Estas
letras y números se denominan títulos de fila y de columna. Para hacer referencia a una celda, escriba la
letra de la columna seguida del número de fila. Por ejemplo, B2 hace referencia a la celda en la
intersección de la columna B y la fila 2.

Para hacer referencia a Utilice


La celda de la columna A y la fila 10 A10
El rango de celdas de la columna A y de las filas de la 10 a la 20. A10:A20
El rango de celdas de la fila 15 y de las columnas B a E. B15:E15

8
Todas las celdas de la fila 5 5:5
Todas las celdas de las filas 5 a 10. 5:10
Todas las celdas de la columna H H:H
Todas las celdas desde la columna H hasta la J H:J
El rango de celdas de las columnas A a E y de las filas 10 a 20. A10:E20

Tipos de datos.

Valores Constantes.

Es un dato que se introduce directamente en una celda. Puede ser un número, una fecha u hora,
o un texto.
NÚMEROS
Para introducir números puede incluir los caracteres 0,1,2,3,4,5,6,7,8,9 y los signos especiales + -
( ) / % E e . Pts.
Los signos (+) delante de los números se ignoran, y para escribir un número negativo éste tiene
que ir precedido por el signo (-).
Al escribir un número entre paréntesis, Excel lo interpreta como un número negativo, lo cual es
típico en contabilidad.
El carácter E o e es interpretado como notación científica. Por ejemplo, 3E5 equivale a 300000 (3
por 10 elevado a 5).
Se pueden incluir los puntos de miles en los números introducidos como constantes.
Cuando un número tiene una sola coma se trata como una coma decimal.
Si al finalizar un número se escribe Pts, Excel asigna formato Moneda al número y así se verá en
la celda, pero en la barra de fórmulas desaparecerá dicho símbolo.
Si introducimos el símbolo % al final de un número, Excel lo considera como símbolo de
porcentaje.
Si introduces fracciones tales como 1/4, 6/89, debes escribir primero un cero para que no se
confundan con números de fecha.
Si un número no cabe en su celda como primera medida se pasa automáticamente a anotación
científica.
Por defecto los números aparecen alineados a la derecha en la celda.
FECHA U HORA
Para introducir una fecha u hora, no tienes más que escribirla de la forma en que deseas que
aparezca.

9
Al igual que los números (ya que realmente lo son), las fechas y las horas también aparecen
alineados a la derecha en la celda.
Cuando introduzcas una fecha comprendida entre los años 1929 y 2029, sólo será necesario
introducir los dos últimos dígitos del año, sin embargo para aquellas fechas que no estén
comprendidas entre dicho rango, necesariamente deberemos introducir el año completo.
TEXTO
Para introducir texto como una constante, selecciona una celda y escribe el texto. El texto puede
contener letras, dígitos y otros caracteres especiales que se puedan reproducir en la impresora.
Una celda puede contener hasta 16.000 caracteres de texto.
Si un texto no cabe en la celda puedes utilizar todas las adyacentes que están en blanco a su
derecha para visualizarlo, no obstante el texto se almacena únicamente en la primera celda.
El texto aparece, por defecto, alineado a la izquierda en la celda.

Fórmulas.

Es una secuencia formada por: valores constantes, referencias a otras celdas, nombres,
funciones, u operadores.
Una fórmula es una técnica básica para el análisis de datos. Se pueden realizar diversas
operaciones con los datos de las hojas de cálculo como *,+,-,Sen,Cos,etc...
En una fórmula se pueden mezclar constantes, nombres, referencias a otras celdas, operadores y
funciones. La fórmula se escribe en la barra de fórmulas y debe empezar siempre por el signo =.
Los distintos tipos de operadores son :
ARITMÉTICOS se emplean para producir resultados numéricos. Ejemplo: + - * / % ^
TEXTO se emplea para concatenar celdas que contengan texto. Ejemplo:
RELACIONALES para comparar valores y proporcionar un valor lógico (verdadero o falso) como
resultado de la comparación. Ejemplo: < > = <= >= <>
REFERENCIA indica que el valor producido en la celda referenciada debe ser utilizado en la
fórmula. En Excel pueden ser:
Operador de rango indicado por dos puntos (:), se emplea para indicar un rango de celdas.
Ejemplo: A1:G5
Operador de unión indicado por una coma (,), une los valores de dos o más celdas. Ejemplo:
A1,G5
FUNCIONES
Una función es una fórmula especial escrita con anticipación y que acepta un valor o valores,
realiza unos cálculos y devuelve un resultado.
Todas las funciones tienen que seguir una sintaxis y si ésta no se respeta Excel nos mostrará un
mensaje de error.

10
1) Si la función va al comienzo de una fórmula debe empezar por el signo =.
2) Los argumentos o valores de entrada van siempre entre paréntesis. No dejes espacios
antes o después de cada paréntesis.
3) Los argumentos pueden ser valores constantes (número o texto), fórmulas o funciones.
4) Los argumentos deben de separarse por ";".
Ejemplo:
=SUMA(A1:B3) esta función equivale a =A1+A2+A3+B1+B2+B3
Tipos de errores
Al estar depurando alguna fórmula, es posible que obtengamos un resultado de error, es decir, un
valor que comienza con un signo #. Esto no siempre es malo (de hecho, puede ser un resultado
correcto). Si sabemos interpretar el error, podremos corregirlo fácilmente. Téngase en cuenta que
para deshacerse del error puede ser necesario modificar ya sea la fórmula misma, o bien alguna de
las celdas a las que hace referencia la fórmula.

En Excel existen siete resultados de error:

#¡N/A!
#¡REF!
#¡NUM!
#¿NOMBRE?
#¡DIV/0!
#¡VALOR!
#¡NULO!

Veamos que significa cada uno de ellos. De esta manera, podremos depurarlo y corregirlo
fácilmente.

#¡N/A!

Este error se produce cuando una fórmula de búsqueda o referencia no encuentra ninguna
coincidencia exacta en la correspondiente matriz de búsqueda. Significa que el valor buscado no
existe en la matriz de búsqueda.

#¡REF!

Este tipo de error surge cuando tenemos una referencia de celda inválida en la fórmula. Por
ejemplo, en la fórmula: =BUSCARV("mi_string",A2:B8,3,FALSO), obtenemos #¡REF! ya que no
podemos buscar en la tercera columna de una matriz que solo tiene dos columnas. En esta otra:
=DESREF(Hoja1!A1, -1,0,1,1)

también obtenemos #¡REF! ya que no hay ninguna fila encima de la celda A1. Siguiendo con esta
fórmula, si eliminamos la primera fila de la hoja "Hoja1", o si eliminamos la Hoja1, la fórmula
mostrará #¡REF!, ya que se ha"perdido" la referencia a la celda Hoja1!A1.

11
#¡NUMERO!

Este se produce cuando ingresamos algún valor no numérico como un argumento de función que
Excel espera que sea argumento numérico (o una referencia a un valor numérico). Otra posibilidad
es ingresar un número inválido, como uno negativo cuando se espera uno positivo, o un 2 cuando
el argumento solo admite 0 ó 1. La fórmula =COINCIDIR(123, B1:B10,3) devuelve #NUM!, ya que el
último argumento de COINCIDIR solo puede ser -1, 0 ó 1.

#¡NOMBRE!

Este error lo obtenemos cuando escribimos mal el nombre de alguna función. También puede
surgir cuando utilizamos alguna función personalizada y tenemos deshabilitadas las macros o el
complemento correspondiente. Otra situación que dispara este error es el escribir mal el nombre
de algún rango nombrado. La fórmula =SUMARSI(A2:A10,"criterio",C2:C10) devuelve #¡NOMBRE!
porque la función SUMARSI no existe (más bien está mal escrita. Lo correcto es SUMAR.SI).
Finalmente puede suceder también que no utilizamos comillas al ingresar un argumento de texto.

#¡DIV/0!

Este es fácil. Se produce al hacer una división por cero, o bién, por una referencia a un cero.
(¿Cómo corregirlo?)

#¡VALOR!

Similar a #¡NUMERO!, lo obtenemos cuando el tipo de argumento solicitado por la función, es


distinto al ingresado por el usuario. Por ejemplo, al ingresar un argumento lógico cuando la
función requiere un rango, o un número cuando la función espera texto.

#¡NULO!

Este es muy poco frecuente. Una fórmula devolverá #¡NULO! cuando la celda de intersección de
dos rangos, no existe. En Excel, el operador de intersección es un espacio en blanco. Por tanto, la
fórmula =A2:D2 J1:J10, devuelve #¡NULO! ya que los rangos A2:D2 y J1:J10 no se intersectan en
ningún punto. En cambio, =A2:D2 C1:C10 devuelve C2, celda común a ambos rangos.

A menudo sucede que una celda de error está correctamente escrita pero, al hacer referencia a un
resultado de error, refleja este resultado. Para saber cuál es la celda exacta que está generando el
error, podemos ejecutar (previa selección de la celda con error) Herramientas - Auditoría de
fórmulas - Rastrear error. Excel señalará con una línea roja la celda que está produciendo el error.

Otro error común es cuando la celda aparece llena de símbolos #. Esto se debe a que la celda no es
lo suficientemente ancha para mostrar el resultado o bien, cuando contiene una fecha inválida.

Graficas para representar datos.

12
Graficando funciones

Las gráficas tienen una gran riqueza conceptual, pues, permiten revelar relaciones entre los datos
que a simple vista puede ser difíciles de notar y como dice el conocido refrán un dibujo dice más
que mil palabras. Partimos del hecho de que una gráfica es la representación visual de un conjunto
de datos contenidos en la hoja de cálculo. Excel ofrece la posibilidad de crear muchos tipos
diferentes de gráficas: bidimensionales y hasta tridimensionales.

Existen dos categorías de gráficas que pueden ser generados con Excel: las incluidas y las
separadas. Las gráficas incluidas se construyen como parte de la hoja de trabajo, mientras que las
separadas se construyen en su propia ventana.

Dentro de los tipos de gráficas bidimensionales están: áreas, barras, columnas, líneas, circular,

anillos, radial, , cilíndricas, cónicas y piramidales. Y dentro los tipos de gráficas


tridimensionales tenemos: áreas, barras, columnas, líneas, anillos y de superficie.

Trabajaremos con gráficas incluidas de tipo y de superfice, por ser las que se usan
comúnmente en un curso de matemática. Claro esta, que las gráficas de barras, anillo, circular,
líneas, ect. pueden ser de mucha útilidad para un curso de estadística, pero de esto hay bastante
literatura que se puede consultar.

Ahora sí, veamos lo sencillo que resulta construir gráficas con Excel, primero comenzaremos

construyendo la gráfica de funciones de la forma . Para esto, basta construir una tabla

de valores para la función . Veamos como: si queremos construir la gráfica de la

función en el intervalo , procedemos de la siguiente forma:

1. En la celda B6 escribimos el extremo izquierdo del intervalo, en nuestro caso .


Tenga presente cual es el separador de miles que está usando, podría tener que

escribir en lugar de .
2. En la celda B7 escribimos la fórmula que construirá la sucesión de preimagenes para la

función , en nuestro caso escribimos: =B6 + 0,1.Note que el incremento es de ,


esto es suficiente para obtener gráficas calidad.Recuerde que en Excel las fórmulas inician
con un igual (=).
3. Para construir dicha sucesión de preimagenes, basta con seleccionar la celda B6 y
manteniendo presionado el botón izquierdo del ratón arrastramos verticalmente hasta

alcanzar el extremo derecho del intervalo, en nuestro caso .

13
4. Para construir las imagenes correspondientes a la sucesión de preimagenes, procedemos

de forma análoga. En la celda C6 escribimos la fórmula correspondiente a la función


, aquí es la celda B6, es decir, escribimos: =potencia(B6;3) - 3*B6 - 1. La función
predefinida potencia(x,y), nos permite calcular .
5. De forma análoga generamos las imagenes, seleccionamos la celda C6 y manteniendo
presionado el botón izquierdo del ratón nos desplazamos verticalmente hasta completar
la tabla de valores
6. Una vez generada la tabla de valores la construcción de la gráfica es muy sencilla.
Seleccionemos la tabla de valores y activamos el asistente para la construcción de gráficas
por medio de: insertar -> Gráfico... o directamente dando click sobre el icón <>. En este

punto elegimos el tipo de gráfica y el subtipo: dispersión con líneas suavizadas y sin
marcadores de datos. Lo que sigue es decidir las características de los ejes, líneas de
división, etc. Por último, damos finalizar y de esta forma hemos construido la gráfica que
queriamos (figura 5).

Los características (color, grosor, estilo, etc.) de cada uno de los objetos del gráfico (serie de datos,
ejes, área del trazado, área del gráfico, título de gráfico, etc.) pueden ser modificadas
seleccionando el objeto y dando click al botón derecho del ratón para elegir la opción adecuada.
Además podemos usar las herramientas de dibujo para trazar flechas, rectángulos, círculo, etc.
dentro de la gráfica.

14
Figura 5: Gráfica de la función:

También podemos construir la gráfica de varias funciones a la vez. Por ejemplo, para trazar la

gráfica de las funciones y en el intervalo y en


un mismo sistema de coordenadas procedemos de la siguiente forma:

1. En la celda B6 escribimos el extremo izquierdo del intervalo, en este caso .


2. En la celda B7 escribimos la fórmula que construirá la sucesión de preimagenes, es
decir, =B6 + 0,1.
3. Construimos la sucesión de preimagenes seleccionando la celda y arrastrando
verticalmente.

4. En la celda C6 escribimos la fórmula para la función : =potencia(B6;3)+B6-1 y


construimos las correspondientes imagenes.

5. En la celda D6 escribimos la fórmula para la función : =1-4*potencia(B6;2) y


construimos las correspondientes imagenes.
6. Ahora seleccionamos la tabla de valores y construimos el gráfico con la ayuda del
asistente.

La gráfica de cada una de las funciones y se muestran en la siguiente figura 6.

15
Figura 6: Gráficas de las funciones: y

Graficando curvas paramétricas en 2D

En general una curva paramétrica se expresa de la siguiente form

Con lo cual, para trazar su gráfica lo único que debemos de hacer es construir una tabla de valores

para e haciendo variar desde hasta .

Por ejemplo, si queremos construir la gráfica de la curva (astroide):

16
primero debemos parametrizarla:

Y ahora generamos la tabla de valores de la misma manera en la que lo hemos estado haciendo:

1. En la celda B5 escribimos el extremo izquierdo del intervalo, es decir, .


2. En la celda B6 escribimos la fórmula que construirá la sucesión de coordenadas : =b5 +
0,1. Y de igual forma las generamos hasta alcanzar , aproximadamente.
3. En la celda C5 escribimos la fórmula para la coordenada , es
decir, =raiz(8)*potencia(Cos(b5);3) y las generamos. Aquí hemos usado la función

predefinida que calcula la raíz cuadrada de .

4. En la celda D5 escribimos la fórmula para generar las coordenadas , es


decir, =raiz(8)*potencia(Cos(b5);3) y las generamos.
5. De nuevo, selecionamos la tabla de valores (ojo solo las columnas correspondientes a las

coordenadas e !) y usamos el asistente para trazar la gráfica (figura 7).

17
Figura 7: Gráfica de una curva paramétrica

Observe que la gráfica de una funcíon puede construirse como si se tratara de una

curva paramétrca, pues la función se puede reescribir como

Graficando curvas polares

La gráfica de una ecuación polar puede verse como un caso particular de una curva

paramétrica en cual el parámetro , , y , es


decir

18
Habiendo observado esto, el problema de trazar la gráfica de una ecuación polar se resuelve con el
mismo procedimiento que hemos estado utilizando.

Como ejemplo, para trazar la gráfica de la ecuación procedemos de la siguiente


forma:

1. En la celda B6 escribimos 0.
2. En la celda B7 escribimos =B6 + 0,1 y generamos los valores del paramétro hasta ,
aproximadamente.
3. En la celda C6 escribimos la fórmula para las coordenadas : =Cos(5*B6)Cos(b6) y las
generamos.

4. En la celda D6 escribimos la fórmula para las coordenadas : =Cos(5*B6)Sen(b6) y las


generamos.
5. Y con la ayuda del asistente trazamos el gráfico (figura 8). Recuerde que el gráfico es de

tipo de dispersión con líneas suavizadas y sin marcadores de datos.

19
Figura 8: Gráfica de la ecuación polar

Graficando superficies

Para construir la gráfica de una superficie con debemos generar una


malla para la región , y luego usar el asistente para trazar la gráfica. Veamos un ejemplo:

construyamos la gráfica del paraboloide sobre la

región .

Para la construir la malla de la región vamos a suponer que las columnas

son y que las filas son y vamos a generar una partición para cada intervalo con un

incremento de :

En la celda B5 escribimos el extremos izquierdo del intervalo en eje .

20
En la celda B6 escribimos la fórmula =B5 + 0,1 que generará la partición del

intervalo en eje . Seleccionamos y arrastramos dicha celda hasta alcanzar el

extremo del intervalo en eje .


En la celda C6 escribimos la fórmula =B5 + 0,1 que generará la partición del

intervalo en eje . Seleccionamos y arrastramos dicha celda hasta alcanzar el

extremo del intervalo en eje .


Ahora estamos listos para generar la malla, para esto seleccionamos la celda C6 y
escribimos la fórmula =B6*B6 + $C$5 * $C$5 que generará la columna C. Observe que en
la generación de dicha columna C5 permanece fijo, esto se indica por $C$5. Este proceso
debemos repetirlo para generar cada una de las columnas hasta completar la malla.
Por último, para trazar la gráfica seleccionamos la malla (sin incluir las particiones

generadas para los ejes e ) y usamos el asistente gráfico (Insertar -> Gráfico... ),
seleccionamos el tipo de gráfica de superficie y el subtipo: trama de superficie 3D. Gráfico
de superficie 3D sin color o si queremos colores: superficie 3D. Muestra tendencias de los
valores en dos dimensiones a lo largo de una curva plana.

La gráfica de la superfice se muestra en la figura 9.

Figura 9: Gráfica del parabolide

21
Al igual que antes podemos ajustar los atributos (color, grosor, etc.) de cada uno de los objetos del
gráfico (área de trazado, plano inferior, planos laterales, etc.), con sólo seleccionar el objeto y dar
click en el botón derecho del ratón y elegir la opción adecuada. Una característica interesante de
las gráficas de superficie es que podemos girarlas hacia la derecha o izquierda. Para esto:
seleccione el área de trazado, presione el botón derecho del ratón y seleccione vista 3D.

La generación de cada columna para construir la malla es tediosa, pero podemos mejorarla usando
un macro, esta es una herramiente muy útil y simple de usar que tal vez tratemos más adelante.
Por ahora es todo, espero en próximas entregas mostrar lo útil que puede resultar Excel en un
curso de métodos numérico.

22
Excel aplicado a la
Ingeniería Química

1
2

1. INTRODUCCIÓN
El estudio de la Ingeniería Química, aunque fundamentado en sólidas leyes generales
físico químicas requiere la aplicación de estas leyes a situaciones reales donde mu-
chas de las simplificaciones de la teoría física llevan a resultados no coherentes con la
realidad física del problema, véase casos de aproximaciones al comportamiento ideal
de los gases o la aplicación de la ecuación de Bernoulli al flujo de fluidos. Además,
muchas de las ecuaciones y modelos matemáticos de gran belleza formal conducen a
situaciones en las cuales el cálculo es imposible. Entonces hay que recurrir al cálculo
gráfico o a efectuar aproximaciones.
El problema se hace patente, por ejemplo, en aplicaciones a estados no estacionarios
(tanto en la transmisión de calor, materia o momento, como en la dinámica de fluidos)
donde la aparición de ecuaciones diferenciales de difícil o imposible integración simbó-
lica, integrales elípticas[4] y de otro tipo crean dificultades añadidas al aprendizaje con-
ceptual de la materia.
Afortunadamente, desde que se ha generalizado el uso de la herramienta informática
como instrumento de cálculo existen programas matemáticos de gran potencia, valga
como ejemplo Maple o Mathematica, que pueden resolver muchos de estos problemas.
No obstante, su disponibilidad e incluso adquisición de la destreza en su manejo, no
son sencillas, razón por la que aquí se propone el uso de programas tan accesibles
como son las hojas de cálculo, concretamente la Excel de Microsoft, dada su amplia di-
fusión y posibilidad de ser usada tanto sobre P.C. como sobre Mackintosh.
Una digresión sobre el tema es que a corto o medio plazo los profesores deberán
cuestionarse el sistema tradicional de prueba de examen, basado en preguntas o pro-
blemas académicos que el estudiante resuelve sin más apoyo que su calculadora elec-
trónica y a lo sumo, información escrita, y pensar que las pruebas se realicen frente al
ordenador, liberando en parte al alumno del cálculo mecánico, lo que permitirá una
evaluación más profunda del nivel conceptual alcanzado.

2. APLICACIONES
La hoja de cálculo puede aplicarse ventajosamente, entre otras, a tres clases de situa-
ciones:
1. - Manejo de fórmulas y correlaciones empíricas de expresión comple-
ja.
2. - Resolución de problemas que requieran procesos de integración difíci-
les o imposibles en modo simbólico.
3. Resolución de problemas que requieran métodos de aproximaciones suce-
sivas, “Métodos de tanteo”.

También es de gran utilidad su potencialidad, por el método de la matriz inver-


sa, de resolver sistemas de ecuaciones lineales, en aplicaciones como balan-
ces de energía o materia, así como sus funciones económicas y de optimiza-
ción de programas aplicable en cuestiones de economía de la empresa quí-
mica, pero estas cuestiones no se analizan en este trabajo.
3

2.1. Calculo de propiedades mediante correlaciones complejas


Por tales se entiende expresiones matemáticas ya sea basadas en teorías físicas, ya
en medidas experimentales, que incluyen abundantes constantes universales o no, re-
lacionadas a través de operadores matemáticos complejos. Su tratamiento con calcu-
ladora de bolsillo significa alta posibilidad de error tanto en la introducción de los datos
como en la formalización de las operaciones.
En general, al tratarse de secuencias de números sin constancia escrita, es imposible
repasar el proceso y detectar el error. Este aspecto incluye también la comprobación
de unidades, tan importante.
La repetición de cálculos en problemas semejantes se eterniza y la fatiga aumenta la
probabilidad de error.
La hoja de cálculo sin embargo permite minimizar estos riesgos. Para ello un método
cómodo consiste en crear una hoja maestra en la cual se establezca en forma de casi-
llas de entrada la ubicación de los datos empíricos precisos. Las principales ventajas
son:
- Las constantes se introducen de una sola vez.
- Pueden almacenarse tablas de constantes en algún lugar de la hoja y recurrir
a ellas cuando sea preciso, normalmente con un simple golpe de ratón.
- Al definir las ecuaciones y correlaciones en función de las celdas de entrada
de datos, cambiar una aplicación se reduce a cambiar el dato en el lugar co-
rrespondiente.
- El repaso de la fórmula se hace cuando se prepara la hoja, a partir de aquí la
hoja es “segura”.
- Al estar todos los datos a la vista el repaso y comprobación de los mismos
son inmediatos.
- Los resultados de una hoja se pueden copiar a otra o a otro documento
con un simple clic de ratón. No hay errores de transferencia.

Ejemplo: Calculo del coeficiente de difusión molecular gas-gas en la aproximación de


gas ideal, con la ecuación de Chapman-Enskog [2,6]
El coeficiente de difusión molecular, Dm, se calcula a partir de la teoría cinética de los
gases, considerando los gases como ideales según la siguiente ecuación

2 ρ M kT  1 1  2 R0T  1 1 
Dm ( AB ) = 
3 
+  = 2  + 
3d AB n π  2mA 2mB  3d AB N Av
2
π  2M A 2M B 
3 

Donde
Dm(AB) es el coeficiente de difusión
ρM es la densidad molar
dAB es el diámetro medio de las moléculas gaseosas
mA y mB la masa respectiva de las moléculas
MA y MB sus masas moleculares
Nav la constante de Avogadro
k la constante de Boltzmann
n el número de moléculas por m3
R0 la constante de los gases
Cuando el comportamiento de los gases se separa del ideal se han propuesto distintas
correlaciones, una de las más usadas es la de Chapmann-Enskog
4

0,00815  1 1 
Dm = T  −  kmol m −1 hr −1
rAB • Ω
2
M
 A M B 

Ω es la función de colisión que depende de εAB k/T


εAB energía de interacción molecular, igual a la media geométrica de las respec-
tivas de cada gas.
Introduciendo los valores de los radios en Å se obtiene el resultado en las unidades in-
dicadas.
Los valores de εA y εA se encuentran en tablas. Si no se dispone de ellas existen corre-
laciones aproximadas.
Las tablas de radios atómicos y energías de interacción se han llevado a la hoja de cál-
culo.
La programación de las fórmulas es sencilla dejando fuera de ellas los datos variables,
de modo que cuando posteriormente se escriben o leen sobre las propias tablas, el re-
sultado es inmediato.
En el ejemplo resuelto, el coeficiente de difusión del dióxido de carbono en aire se cal-
cula según ambos modelos.
Cambiar de gas significa simplemente cambiar la casilla en que se deben leer los da-
tos empíricos, que se adjuntan en forma de tabla.

Tabla 1. - Aspecto de la hoja de calculo, cuando se calcula el coeficiente de difusión molecular


por la ecuación de Chapmann-Enskog.

Este esquema de trabajo se puede utilizar por ejemplo para simplificar el cálculo de ba-
lances entálpicos o de materia en estado estacionario siempre en la búsqueda de la
sencillez y la posibilidad de resolver casi simultáneamente problemas análogos.
El uso de la herramienta “solver” permite resolver problemas inversos imponiendo la
variación de casilla o casillas dato en función de la solución.

2.2. Resolución de problemas que requieren integraciones complejas


En este terreno es donde más se aprecia la utilidad de la hoja de cálculo. Mientras que
en el ejemplo del apartado 2.1 se ganaba tiempo y evitaban errores, ahora se podrán
5

resolver problemas que de modo tradicional serían insolubles o su solución comporta-


ría un grado casi inabordable de dificultad matemática.
La idea general es la del proceso de integración numérica[1, 3,7], simplificado al máximo,
puesto que la hoja de cálculo permite trabajar a gran velocidad con un elevado número
de valores.
Sea t la variable independiente, los ∆t correspondientes se pueden hacer muy peque-
ños, prácticamente infinitesimales, por lo cual utilizando la fórmula de los rectángulos,
o a lo sumo, la de los trapecios, se obtienen unos resultados más que satisfactorios.
Así con la primera es:
b n
2k + 1 b−a
∫ Ψ (t )dt ≈ ∑ Ψ (a +
a 0 2
∆t ) × ∆t ∆t =
n

y mediante la fórmula de los trapecios cada uno de los términos del sumatorio sería:
∆t(Ψ(a+kt)+Ψ(a+(k+1)t)/2,
donde k es un número natural 0≤ k≤n
Es importante estimar el error en cada paso. Se puede demostrar que para la primera
fórmula el error debe evaluarse en cada intervalo i, j como
εij ≤ max(i, j)| Ψ“(t)|( ∆t 3/24)
mientras que con la fórmula de los trapecios
εij ≤ max(i, j)| Ψ“(t)|( ∆t 3/12)
Por otra parte, si en lugar de calcular Ψ(t) para el punto medio del intervalo se toma el
extremo, entonces
εij ≤ max(i,j)| Ψ‘(t)|( ∆t 2/4).

A B D E
Figura 1: Distintas aproximaciones numéricas para calcular una integral : A Rectángulos a
punto mínimo. B: Rectángulos a punto medio. D: Rectángulos a punto máximo.
E.- Trapecios

La evaluación exacta del error cometido en cada caso no es fácil, aunque existen mé-
todos muy potentes para conocerlo, como los de Romberg o Gregory. Al tomar interva-
los muy pequeños los errores de truncamiento tienden a cero, siendo el error de re-
[1, 7]
dondeo la principal fuente de error .
De hecho los métodos aproximados de integración aproximan la función buscada a un
polinomio, en todos y cada uno de los intervalos. Se llama error de truncamiento en un
j


intervalo i, j a ( Ψ (t ) − p (t ))dt donde p(t), es el polinomio al que se aproxima.
i

Una forma práctica de operar es realizar el cálculo con intervalos, pasos, diferentes y
comparar los resultados.
6

Un último detalle a tener en cuenta es que en este error influye y no poco la máquina
usada, de manera que una vez más aparece o puede aparecer un caos determinista,
en forma de efecto mariposa. Seguir en esta línea llevaría muy lejos y no es el objetivo
propuesto aquí.
A modo de resumen, en general deberá trabajarse con pasos de integración muy pe-
queños, así queda garantizado que el error de truncamiento no afecte al resultado.
En la práctica no existe una diferencia significativa entre cualquiera de las tres fórmu-
las, rectángulos a punto medio, a extremo o trapecios.

2.2.1. Casos en que aparecen ecuaciones diferenciales


Las ecuaciones en derivadas totales con una sola variable se abordan a continuación
por ser uno de los ejemplos más representativos**.
El método de resolución más recomendable es el clásico de Euler que se aplica del si-
guiente modo:
Sea la ecuación que se desea integrar
y’ = f(y,t) ; dy = dt f(y, t)
se debe iterar las veces que sea necesario, siendo k un número natural
yk+1= yk + h f (tk, yk) donde h = tk+1-tk
El principal inconveniente del método, la lentitud en alcanzar la convergencia, lo solu-
ciona ordenador “per se”, gracias a su rapidez de cálculo. Eliminado este problema, la
sencillez y obviedad del procedimiento lo hacen el más adecuado.
Su aplicación práctica consiste en fijar unas condiciones iniciales, establecer un paso
h suficientemente pequeño y programar la serie de iteraciones hasta que se alcanza el
resultado.
Los comentarios hechos para el caso anterior al tratar el tema de los errores, deben
repetirse aquí.

Ejemplo: Balance en estado no estacionario: Evolución de la temperatura del líquido de


un deposito mal aislado, alimentado de forma continua.

Se resuelve planteando un balance entálpico durante un tiempo infinitesimal dt


cuando la temperatura del depósito es T
Cálculo del calor cedido por el agua caliente en un tiempo muy pequeño.
dQ1=dm ce (Ta-T) = 5 kg/s 1 kcal/kg ºC (80-T) ºC dt s=(400-5T)dt kcal (1)
Calor evacuado: Puesto que la chapa es muy delgada no son precisas correc-
ciones del radio ni distinguir entre radio interno y externo y dadas las aproxima-
ciones
dQ2 =U (T-22) dt S = 360 (T- 22)ºC. π y /3600 =0,314y(T-22)dt kcal (2)
Calor acumulado por el sistema
dQ3= m ce dT =V.ρ ce dT =785,4y dT kcal. (3)
Estableciendo el correspondiente balance
dQ1-dQ2=dQ3
(4)

**
El método más común es el de Runge –Kutta, que se suele presentar como librería en la mayoría de
programas de tratamiento matemático, Matlab, Mathematica etc. Este método presenta, como es sabi-
do, un adecuado balance de compensación de ambos errores. No obstante se insiste en que el objeto
de este trabajo es facilitar el cálculo al alumno medio, no experto, tal vez ni siquiera interesado, en la
informática. Con Excel también es posible el uso de este método pero es excesivamente complicado
7

se llega a
(400-5T –0,314y(T-22))dt=785,4y dT
(5)
Además
y = (y0 +5.10-3 t/π)= (1+5.10-3 t/π) ; (6)
la ecuación que resulta se puede resolver de modo más cómodo en función de
y que de t
dy = 1,59.10-3dt
(7)
dt= 638,22dy

325,04-4,06T-0,255 yT+5,613y =y T’ (8)


donde T’ representa derivación respecto a y

yT’ +T(4,06T+0,255y)= 325,04 +5,613y (9)


T’ +T(4,06T+0,255y)/y= 325,04/y +5,613 (10)

2.2.1.2. Solución informática:


La ecuación (10) que resulta no es de integración inmediata por lo que resulta
más cómoda la operación numérica con la hoja Excel: Se presentarán dos mé-
todos, el primero es el sencillo método de Euler.

Tabla2.- Evolución de los cálculos en la hoja Excel para obtener la integral, ob-
servese que para facilitar la lectura se ha copiado el valor de la celda solución
( K2)
8

Se utiliza directamente el balance inicial por lo que no son precisas las ulterio-
res manipulaciones algebraicas

Si se despeja en (5) se tiene, en modo simbólico


(q(Ten − T ) − UπDy(T − Tex ))dt
dT =
D 2π
ρ y
4
(11)

Esta ecuación es la que se programa : Obsérvese que en la tabla se deja fuera


los parámetros y datos para tener el problema resuelto de la forma más general
posible y hacer uso de la facilidad que da la hoja de cambiar alguno de estos y
obtener de modo inmediato los resultados.

Las columnas representan tiempo, altura, temperatura del tanque y variación


de la temperatura, así como la masa contenida en el tanque.
La columna de programación más compleja es precisamente
dT=($E$2*($B$2-C4)-$A$2*(C4-$C$2)*PI()*$F$2*B4)*$D$2/($G$2*1000*B4)
m =1000*G2*H2
T =C4+D4
y =E4/($G$2*1000)

Una vez programada la hoja y extendido el cálculo hasta un número suficiente


de puntos, en este caso 8000, se utiliza la herramienta solver para imponer que
el último punto corresponda a la altura máxima deseada. La temperatura cuan-
do se llega a los tres metros es de 22,085 ºC
9

Figura 2. Pantalla interactiva de la herramienta “Solver”


Otra ventaja añadida es la facilidad para conseguir gráficos de la evolución del
sistema, altamente informativos
Temperatura tiempo

22,3

22,25

22,2
Temparatura (ºC)

22,15

22,1

22,05

22

21,95
0 50 100 150 200 250 300
Tiempo (s)

Figura 3 Evolución de la temperatura de la mezcla con el tiempo


Altura tiempo

3,5

2,5

2
altura (m)

1,5

0,5

0
0 50 100 150 200 250 300 3
Tiempo s

Figura 4. Llenado del reactor en función del tiempo


10

Temperatura - Altura

22,3

22,25

22,2

Temperatura interna (ºC)


22,15

22,1

22,05

22

21,95
0 0,5 1 1,5 2 2,5 3
Altura (m)

Figura 4b. Evolución de la temperatura de la mezcla con la altura alcan-


zada
Temperatura -Altura

22,3

22,25

22,2
Temperatura (ºC)

22,15

22,1

22,05

22

21,95
0 0,5 1 1,5 2 2,5 3
Altura ( m)

Figura 4c. El mismo problema utilizando un método Runge -Kutta

Utilizando un método Runge – Kutta en este caso de cuatro pasos los resulta-
dos son prácticamente idénticos, sin embargo, la programación de la hoja es
bastante más compleja.
El comentario de los resultados queda para el lector. Es muy interesante variar
por ejemplo el coeficiente U y ver como cambian las gráficas de modo inmedia-
to. También es de respuesta inmediata en las condiciones de ambiente o ali-
mentación. Un cambio en el caudal requerirá un nuevo uso de Solver.
11

En el ejemplo los datos de entrada se copian automáticamente en la hoja en


que se programó un Runge – Kutta, por lo que sólo es necesario introducirlos
una vez.

Tabla 3. El mismo problema resuelto por un método de Ruge Kutta de cuatro


pasos. Compárese el resultado de la celda K2 con el mostrado en la Tabla 1

Fórmulas para el método ( T corresponde a una fila más)


K1 =($E$2*($B$2-C4)-$A$2*(C4-$C$2)*PI()*$F$2*B4)*$D$2/($G$2*1000*B4)
K2=($E$2*($B$2-(C4+0,5*D4))-$A$2*(C4+D4*0,5-
$C$2)*PI()*$F$2*(B4+0,5*$J$2))*$D$2/($G$2*1000*(B4+$J$2))
K3==($E$2*($B$2-($C4+0,5*E4))-$A$2*($C4+E4*0,5-
$C$2)*PI()*$F$2*($B4+0,5*$J$2))*$D$2/($G$2*1000*($B4+$J$2))
K4=($E$2*($B$2-($C4+0,5*F4))-$A$2*($C4+F4*0,5-
$C$2)*PI()*$F$2*($B4+0,5*$J$2))*$D$2/($G$2*1000*($B4+$J$2))
T=C4+1/6*(D4+2*E4+2*F4+G4)

Temperatura tiempo Temperatura -Altura

22,8
22,8

22,7
22,7

22,6
22,6

22,5
22,5
Temperatura (ºC)

22,4
Temparatura (ºC)

22,4
22,3

22,3
22,2

22,2
22,1

22,1 22

22 21,9
0 0,5 1 1,5 2 2,5 3
Altura ( m)
21,9
0 50 100 150 200 250 300
Tiempo (s)

U = 120 kcal m-2h-1ºC-1


12

Temperatura - Altura Temperatura -Altura

23,6 23,6

23,4 23,4

23,2
23,2

23
23

Temperatura interna (ºC)

Temperatura (ºC)
22,8
22,8

22,6
22,6

22,4
22,4

22,2
22,2

22
22

21,8
21,8 0 0,5 1 1,5 2 2,5 3
0 0,5 1 1,5 2 2,5 3 Altura ( m)
Altura (m)

U = 60 kcal m-2h-1ºC-1
Temperatura - Altura Temperatura -Altura

30
30

25
25

20
Temperatura interna (ºC)

20

Temperatura (ºC)
15

15

10

10

0
0 0,5 1 1,5 2 2,5 3
Altura (m)
0
0 0,5 1 1,5 2 2,5 3
Altura ( m)

-2 -1 -1
U = 10 kcal m h ºC
Figura 5. Gráficas temperatura tiempo según los valores del coeficiente U por
el método de Euler ( izquierda) y por Runge Kutta de cuatro pasos( derecha).

2.2.2. Casos en que aparecen integrales elípticas[4 ]

Ejemplo: Variación del nivel del líquido en un depósito esférico en proceso de drenaje.
Las integrales elípticas así como las funciones de Bessel aparecen en muchos proble-
mas de Ingeniería Química que involucran dinámica de fluidos o transferencias de ca-
lor. Su operación no es fácil, no obstante con la hoja de cálculo es sencillo resolver
problemas en los que intervienen obviando sus dificultades, entre ellos se encuentran
los drenajes de recipientes cónicos, esféricos o cilíndricos en posición horizontal.
Valga como ejemplo el drenaje de un depósito esférico de 1m de radio por un orificio
en su polo inferior de 5 cm de radio efectivo. Esta parcialmente lleno con agua hasta
una altura de 1,5 m respecto al polo inferior, donde se encuentra el desagüe. Se su-
pondrá:
1. - En el depósito se ha practicado una abertura a la atmósfera en su polo superior de
manera que la presión en su superficie es igual a la exterior.
2. - Los efectos de fricción con las paredes son despreciables.
3. - Las pérdidas por evaporación son despreciables.
No representaría, sin embargo, mayor dificultad incluir todos o alguno de estos efectos
así como un coeficiente de descarga.
13

2R2

Figura 6. Esquema del depósito y sus variable geométricas

Solución clásica:
Puesto que la presión en el nivel superior del fluido y en la salida es la atmosférica,
puede escribirse la ecuación de Bernoulli como
2 2
zg+½v =½u (1)
por otra parte, de la ecuación de continuidad se tiene que Sv = su siendo v la veloci-
dad instantánea del fluido en el depósito, u la velocidad del desagüe, S y s las seccio-
nes en el depósito y desagüe. Si r es el radio instantáneo de la sección del depósito y
R2 la del desagüe, constante, se llega a u= (r/R2)2 v lo que conduce, sustituyendo en
(1) a
v2((r/R2)4 -1)=2zg (2)

dz 2 gz
v= = 4
(3)
dt  r 
  − 1
 R2 
La integración de esta ecuación podría atacarse por el cambio
z = R + R sen α; dz = R cos α dα; r= R cos α
lo que llevado a (3) supondría
R cos α dα=(2R(1+ senα)g/(( R cosα/ R2)4-1) 1/2dt (4)
Aunque la separación de variables es fácil, aparecen integrales del tipo
Kcos2 α -1 cuya integración tampoco es inmediata. Veamos como se puede resolver
de un modo más sencillo.

Solución informática:
Para ello se partirá de (3) escrita como
2 gz
dz = 4
dt (5)
 r  −1
 R 
 2 
14

que será la función básica del algoritmo informático con el que se irá obteniendo cada
valor sucesivo de z como
zi = zi-1 - dz
Si además se desean evaluar las correspondientes velocidades “instantáneas” será su-
ficiente con utilizar (2) y (3).
No es necesario un gran número de pasos. Aunque aquí se han tomado hasta 6000,
la solución converge muy rápidamente como muestran los resultados obtenidos.

Paso 1 0,1 0,08 0,07 0,06 0,05 0,04 0,03 0,02 0,01
(dt)/s
t/s 122 121,7 121,76 121,73 121,74 121,76 121,74 121,72 121,72 121,72

Otra ventaja es la posibilidad de obtener muy fácilmente una representación gráfica del
proceso.

Tabla 5- Aspecto de la hoja de calculo cuando se calcula el nivel de un líquido que se está dre-
nando.
15

Drenado

1,6

1,4
Altura
Radio superficie
1,2
Altura o radio del depósito (m)

0,8

0,6

0,4

0,2

0
0 200 400 600 800 1000 1200 1400
tiempo ( s)

Figura 7. Variación de las altura y radio instantáneo del contenido con el tiempo.

En el facsímile se han mantenido las cifras decimales presentadas por la hoja a fin de
mostrar la convergencia y estabilidad de los resultados. Como es preceptivo, la solu-
ción final deberá dejarse en sus cifras significativas.

2.2.3. Casos en que aparecen son precisos cálculos complejos repetitivos[4 ] e integra-
les numéricas.

Ejemplo: Absorción de gases.

p* (mm de Con objeto de reducir la concentración de SO2 del 16% al 1% en


C Hg) volumen de una mezcla SO2 – aire, se trata en contracorriente
10,00 567,0 con agua en una torre de absorción de relleno. Se desea tratar 300
7,50 419,0 m3/h a 15ºC y 3,5 ata con un caudal másico de aire G’= 800 kg de
5,00 270,0 aire. m-2 h-1 y con una cantidad de agua 30 % superior a la mínima.
2,50 127,0 En estas condiciones es razonable suponer que la resistencia al
1,50 71,0
transporte de materia está controlada por la fase gaseosa, siendo
1,00 44,0 -3 -1
KG a =16 kmol m h . Calcúlese
0,70 28,0
a) Diámetro de la columna.
0,50 19,3
0,30 10,0 b) Número de elementos de transmisión.
0,20 5,7 c) Altura de relleno.
0,15 3,8Los datos de equilibrio pare este sistema a 15ºC expresados en C
0,10 2,2= gramos de SO2 por 100 g de agua frente a p*, presión parcial de
0,05 0,8SO 2 se muestran en la tabla adjunta.
0,02 0,3Solución:
0,00 0,0 a) Esta parte se resuelve sin mayores problemas de mo-
do clásico. Se calcula para la parte inferior de la torre donde la velocidad másica
del gas es mayor.
Calculando un valor medio de la masa molecular del gas M = 29*0,84+ 64*0,16=34,60
Se puede estimar la densidad del gas de entrada ρ =MP/RT= 5,127 kg m-3

De ahí la masa de gas a tratar por hora m = 300*5,127= 1528 kg h -1


16

Y la velocidad másica G = G’ /(1-y) =800/(1-0,16) =952,4 kg m-2 h-1


Haciendo un balance de materia se tiene que m = S. G y en consecuencia S = 1.615
m2 y por simples consideraciones geométricas de S = π D2/4 ⇒ D = 1,47 m

b)
Se empieza por dibujar el diagrama de equilibrio del proceso. En este caso se utiliza-
rán, como por otra parte es habitual las relaciones molares, indicadas por X e Y
1 / 64
De la propia definición de X, y combinando los datos del enjunciado X = C ×
100 / 18
*
p SO
Por otra parte Y = 2

ptotal − p SO
*
2

Es suficiente pues introducir las fórmulas en sendas columnas de la hoja y dibujar el


diagrama
º

Digrama de equilibrio

0,35

0,3

0,25
Realación molar Y

0,2

0,15

0,1

0,05

0
0,000000 0,005000 0,010000 0,015000 0,020000 0,025000 0,030000
Relación molar X

Figura 8.- Diagrama de equilibrio y rectas de operación.

Para el cálculo de la cantidad mínima de agua basta determinar los valores de Y a la


entrada Y1 y salida Y2 de la columna
Y1= 0,19/(1-0,16)=0,1905
Y2 =,01/(1-0,01) = 0,0101. Para tener la mínima cantidad de absorbente, es necesa-
rio que el equilibrio se encuentre en la base, entrada. Como se trabaja con agua pura,
el punto representativo de la cúspide es pues (0; 0,0101) ye punto de la base corres-
ponderá a Y= 0,1995 situado sobre la curva de equilibrio, es decir X= 0,0215, lo que da
 L' 
una pendiente para la recta de operación a cantidad mínima   = 8,425 y en
 G '  min
consecuencia L’min = 6740 kg de agua /h.
Como se usará un 30% más que esta cantidad, L’ = 1,3*6740 =8762 kg de agua /h. la
pendiente de la recta real de operación (L’/G’) = 8762 / 800 =10,95. El trazado de esta
recta es inmediato en Excel
17

Tabla 4.- Cálculos e integración numérica del problema de absorción

El número de elementos se puede calcular según


Y1
dY 1 1 + Y2
N OG = ∫ Y − Y * + 2 ln 1 + Y
Y2 1

La integral se calcula por el método de los trapecios. Para ello se escribe las Y e Y* en-
tre los punto de integración. Se calcula Y –Y* y su inversa. La integral se calcula por el
método de los trapecios cuya formula es
=(K7+K6)/2*(-I7+I6).
18

Número de elementos

120

100

80
!/(Y-Y*)

60

40

20

0
0 0,02 0,04 0,06 0,08 0,1 0,12 0,14 0,16 0,18 0,2
Y

Figura 9.- Integración gráfica

La fórmula se extiende hasta el penúltimo valor ( Muy importante)


El sumando no integral se calcula a continuación lo que da un número de elementos de
transmisión de 5,56, como se observa en el facsímile de la hoja.
c) La altura de un elemento de transmisión se calcula según
G
H OG = = 1,91m en consecuencia z = H0G* NOG ≅ 10 m
K y a (1 − Y ) log

2.3.-Problemas en los que debe recurrirse a métodos de ensayo y error o


aproximaciones sucesivas, o en general a tanteos.
En este tipo de problemas la hoja muestra su eficacia, especialmente si se hace uso
de la utilidad “solver”, por ejemplo.

Ejemplo cálculo de la temperatura de una llama.


Calcúlese la temperatura teórica de llama producida al quemar completamente una
mezcla de gases cuya composición en volumen es 20% de CO, 40% de H2 y 4=% de
N2 con un 50 % de exceso de aire. Inicialmente combustible y comburente se encuen-
tra a 25ºC.
Los calores específicos en kcal ( kmol K) se obtienen según
cp = a+bT+ cT2

a b·102 c·105
H2 6,424 0,1039 -0,7804
CO 6,480 0,1566 -2,387
N2 6,529 0,1488 -2,2271
O2 6,732 0,1505 -1,791
H2O (v) 6,970 0,3464 -4,833
19

Para el CO2 cp =18,036-4,474·10-5T-158,08 T-0,5

Y los calores normales de combustión


De H2 a H2O (v) ∆H0 = -57,8·103 kcal/kmol
De CO ∆ H0=-67,63·103 kcal/kmol

La solución de modo clásico significa establecer Una base de cálculo, por ejemplo 100
kmol de combustible, efectuar el correspondiente balance de materia, establecer una
temperatura de referencia y efectuar el balance entálpico, sabiendo que por definición
la temperatura de llama se calcula para un proceso adiabático. Por no alargar se omi-
ten los cálculos que conducen a la solución siguiente
El Gas de combustión contiene
Componente Kmol
CO 20
H2O(v) 40
O2 15
N2 169,3

El balance entálpico Hs – He + Σ∆Hr = 0, siendo Hs entalpía de salida, He id. De en-


trada y Σ∆Hr entalpía de reacción, conduce (s.e.u. o.) a la ecuación
-2,016·10-5 T3 + 0,2061 T2 + 1845,8 T – 6330 T0,5 –41,233·105 = 0 su solución es real-
mente compleja sin embargo la aplicación de la utilidad “Solver” da una respuesta rápi-
***
da obteniéndose el resultado 2021,89658 K.
Es suficiente con introducir un valor cualquiera en una casilla, escribir la ecuación en
función de esta casilla e imponer que la casilla ocupada por la fórmula tome el valor ce-
ro.
Puede evitarse la integración programando el balance entálpico instantáneo desarro-
llando este e imponiendo que al cabo de un determinado número de pasos, este sea
nulo.

***
También podría haberse utilizado, en este caso con ventaja, cualquier programa de cálculo, como
“Derive”
20

Obsérvese la concordancia entre ambos resultados


La fórmula informática básica es H=B12+($F$7*(18,036-0,00004474*A13-
158,08*A13^( 0,5)) + $F$6*($B$6 +$C$6*A13 +$D$6*A13*A13) +$F$5*($B$5
+$C$5*A13 +$D$5*A13*A13)+$F$4*($B$4+$C$4*A13+$D$4*A13*A13))*$B$10
Véase también como las constantes así como las cantidades de reactivos y productos
se han dejado como encabezamiento de la tabla, a fin de facilitar un posible cambio en
las mismas, sin modificación sustancial del problema.
Balance Entalpico

5000000

4000000

3000000

Hs
2000000
He

Q
1000000
Entalpías (kcal)

0
0 500 1000 1500 2000 2500

-1000000

-2000000

-3000000

-4000000

-5000000
Temperatura (K)

Figura 10. Esquema gráfico del balance entálpico del problema.


21

3. CONCLUSIONES
Se han mostrado el fundamento y algunos ejemplos de aplicación de la hoja de cálculo
en la enseñanza de la Ingeniería Química.
Con esta herramienta tan ampliamente difundida:
• Se pueden obtener soluciones a problemas que implican emplear matemáticas de
nivel medio con suficiente aproximación, evitando complicaciones innecesarias y en
un tiempo muy reducido.
• No es preciso utilizar métodos complejos de cálculo numérico, puesto que nada
impide elegir pasos de integración suficientemente pequeños, y comprobar la con-
vergencia de los resultados.
• No obstante su sencillez de uso, su empleo a la hora de facilitar el estudio de pro-
blemas de ingeniería es grande puesto que libera en alto grado gran parte del cál-
culo matemático mecánico y permite centrar el esfuerzo en la comprensión física
del problema.
• Minimiza errores de cálculo.
• Permite la solución de modo sencillo de problemas y supuestos que en otro caso
serian prácticamente insolubles.
• Proporciona de modo inmediato un seguimiento gráfico del problema.
• Una vez resuelto un problema, si se toma la precaución de dejar fuera de la tabla de
cálculo propiamente dicha, los parámetros y datos del problema, se tiene resuelto
cualquier problema semejante.
• Abundando en lo anterior, y como principal valora añadido desde el punto de vista
del aprendizaje, se puede variar los valores numéricos de los parámetros físicos o
geométricos y obtener respuesta inmediata, tanto numérica como gráfica, lo que
facilita la determinación de la influencia de tale parámetros en el problema.

4. BIBLIOGRAFÍA
1. Backalov N (1980) Métodos numéricos. Paranifo Madrid
2. Badger W.L. Banchero J.T.(1972) Introducción a la ingeniería química.
Castillo Madrid
3. Demidovich B.P.(1980) Métodos numéricos de Análisis. Paraninfo Madrid
4. Hart P.W , Sommerfeld J.T.(1996) ChE applications of elliptic integrals.
Che Summer
5. Hildebrand F.B. (1965)Métodos de cálculo para ingenieros.Aguilar Madrid
6. Kranoschiokov E.A. Sukomiel A.S.(1975) Problemas de termotransferen-
cia. Mir . Moscú
7. Mac Cabe W.I Smith J.C(1981). Operaciones básicas en ingeniería quí-
mica. Reverté. Barcelona
8. Martínez Pons, J.A. (1998) La hoja de cálculo como auxiliar en la ense-
ñanza de la Física. CPR Arganda. Madrid
9. Martínez Pons, J.A. (2002) El drenado de depósitos, un ejemplo de apli-
cación de la hoja de cálculo a la resolución de problemas en ingeniería
química”Revista Anales de la Real Sociedad Española de Química
98-3-2002 Págs. 42 a 46
10.Morris, Max y Brown, Orley (1960) Ecuaciones diferenciales. Aguilar. Ma-
drid
11. Ocón García, J. Y Tojo Barreiro, G. (1967) Problemas de ingeniería quí-
mica. Tomos 1 y 2. Aguilar. Madrid.
22

12.Piskunov N. (1977) Cálculo diferencial e integral. Mir Moscú


13.Shield F. B. Análisis numérico. 1968 Schaum series. Mc Graw Hill México
1968
14.Volkov E.A. Métodos Numéricos. Mir. Moscú 1990

5. ANEXO

5.1. Integrales elípticas4,5


Una integral4 del tipo IA∫ R(x,√f(x)) donde R denota cualquier función racional y f(x) es
una función de tercer o cuarto grado en x, puede expresarse como suma finita de inte-
grales elementales e integrales elípticas de tres tipos básicos.
Una integral elíptica surge de la medida de la longitud de una elipse
x2/a2+y2/b2 = 1, con el cambio a coordenadas polares x = r cos θ, y = r senθ

ds = ( dx ) 2 + ( dy ) 2 = a 2 cos2 θ + b 2 sen 2 θ dθ = a 1 − e 2 sen 2 θ dθ;


a 2 − b2
e=
a
e es la excentricidad de la elipse
La integral entre 0 y π/2 de esta expresión corresponde a la longitud de un cuarto de
elipse y por razones de simetría la longitud total del perímetro es cuatro veces la ante-
rior.
Existen tres tipos fundamentales de integrales elípticas, son las mostradas en el re-
cuadro

π
2

I F (k ) = ∫
0 1 − k 2 sen 2θ
π
2

II E (k ) = ∫
0
1 − k 2 sen 2θ dθ
π
2

III Π (k ) = ∫ (1 + nsen θ )
0
2
1 − k 2 sen 2θ

Tal como se han formulado se llaman completas, sustituyendo el límite superior por un
valor cualquiera φ se llaman incompletas.
El término k es el módulo de la integral.
El término φ se llama amplitud.
El término n es el parámetro de integral de tercer orden.
Estas funciones aunque integrables no pueden, salvo en el caso trivial de k=1, expre-
sarse como combinación finita de funciones elementales como ocurre con otras mu-
chas9 como ∫ e-x2 dx; ∫(sen x) dx/x ∫dx/ ln x, etc., no obstante su frecuente uso en la Fí-
sica y en la Matemática aplicadas.
Tablas con sus valores suelen encontrarse en muchos manuales.
Unidad III: Algoritmos
3.1 Definición y descripción general de algoritmo
3.2 Diagramas de flujo estructurados
3.3 Técnicas de diseño de un algoritmo
3.4 Resolución de problemas algorítmicamente.
III.- ALGORITMOS

INTRODUCCION

El desarrollo de algoritmos es un tema fundamental en el diseño de programas o


soluciones. Por lo cual, el alumno debe tener buenas bases que le sirvan para poder
crear de manera fácil y rápida sus programas.
Esta documentación sirve de apoyo a tutores o profesores, en su labor cotidiana de
enseñanza y al estudiante, facilitarle el desarrollo de su capacidad analítica y creadora,
para de esta manera mejorar su destreza en la elaboración de algoritmos que sirven
como base para la codificación de los diferentes programas que tendrá que desarrollar a
lo largo de su carrera.
2.1.- ¿QUÉ ES ALGORITMO?

La palabra algoritmo se deriva de la traducción al latín de la palabra árabe


alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado
sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe
seguir, para dar solución a un problema específico.
Las características de un buen algoritmo son:
 Debe tener un punto particular de inicio.
 Debe ser definido, no debe permitir dobles interpretaciones.
 Debe ser general, es decir, soportar la mayoría de las variantes que se puedan
presentar en la definición del problema.
 Debe ser finito en tamaño y tiempo de ejecución.

2.2.- TIPOS DE ALGORITMOS

Existen dos tipos y son llamados así por su naturaleza:


 Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
 Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para
definir los pasos del proceso.
2.2.1.- Lenguajes Algorítmicos
Un Lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir
de manera explícita un proceso.
2.2.2.- Tipos de Lenguajes Algorítmicos
 Gráficos: Es la representación gráfica de las operaciones que realiza un
algoritmo (diagrama de flujo).

 No Gráficos: Representa en forma descriptiva las operaciones que debe realizar


un algoritmo

Página 17
PSEUDOCÓDIGO.

INICIO
1.- Area,Base,Altura:Real
2.-ESCRIBA “ Introduzca la base y altura del triangulo”
3.-Lea Base,Alltura
4.-Area = Base*Altura
5.- Escriba ”El Area del Triangulo := “, Area; “m²”
6.- SI (Continuara calculando otros casos)
ENTONCES Ir al paso
FIN

2.3.- METODOLOGÍA PARA RESOLVER PROBLEMAS USANDO LA


COMPUTADORA.

El computador es una máquina que por sí sola no puede hacer nada, necesita ser
programada, es decir, introducirle instrucciones u órdenes que le digan lo que tiene que
hacer. Un programa es la solución a un problema inicial, así que todo comienza allí: en
el Problema. El proceso de programación es el siguiente: Dado un determinado
problema el programador debe idear una solución y expresarla usando un algoritmo
(aquí es donde entra a jugar); luego de esto, debe codificarlo en un determinado
lenguaje de programación y por último ejecutar el programa en el computador el cual
refleja una solución al problema inicial. Esto es a grandes rasgos lo que hace el
programador de computadores.

2.3.1.- DEFINICIÓN DEL PROBLEMA : Esta fase está dada por el enunciado del
problema, el cual requiere una definición clara y precisa. Es importante que se conozca
lo que se desea que realice la computadora; mientras esto no se conozca del todo no
tiene mucho caso continuar con la siguiente etapa.

2.3.2.- ANÁLISIS DEL PROBLEMA : Una vez que se ha comprendido lo que se


desea de la computadora, es necesario definir:
 Los datos de entrada.
 Cuál es la información que se desea producir (salida)
 Los métodos y fórmulas que se necesitan para procesar los datos.

2.3.3.- DISEÑO DEL ALGORITMO :

Prueba de escritorio o Depuración : Se denomina prueba de escritorio a la


comprobación que se hace de un algoritmo para saber si está bien hecho. Esta prueba
consiste en tomar datos específicos como entrada y seguir la secuencia indicada en el
algoritmo hasta obtener un resultado, el análisis de estos resultados indicará si el
algoritmo está correcto o si por el contrario hay necesidad de corregirlo o hacerle
ajustes.

Página 18
2.4.- ENTIDADES PRIMITIVAS

Para el proceso de Algoritmos es necesario aprender a desarrollar un conjunto de


elementos. Todo estos elementos con los cuales se construyen dichos algoritmos se
basan en una disciplina llamada: Programación Estructurada.
En esta sección se presentan las reglas para cambiar fórmulas matemáticas a
expresiones válidas para la computadora, además de diferenciar constantes e
identificadores y tipos de datos simples.

2.4.1.-Tipos De Datos

Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter,
tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del
conjunto de valores que puede tomar una variable.

2.4.1.1.- Tipos de Datos Simples

Datos Numéricos: Permiten representar valores escalares de forma numérica, esto


incluye a los números enteros y los reales. Este tipo de datos permiten realizar
operaciones aritméticas comunes.

Datos lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que
representan el resultado de una comparación entre otros datos (numéricos o
alfanuméricos).

Datos alfanuméricos (string): Es una secuencia de caracteres alfanuméricos que


permiten representar valores identificables de forma descriptiva, esto incluye nombres
de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero
estos pierden su propiedad matemática, es decir no es posible hacer operaciones con
ellos. Este tipo de datos se representan encerrados entre comillas.

2.4.2.- Identificadores
Los identificadores representan los datos de un programa (constantes, variables, tipos de
datos). Un identificador es una secuencia de caracteres que sirve para identificar una
posición en la memoria de la computadora, que permite acceder a su contenido.

Ejemplo: Nombre , Num_hrs, Calif2.

Página 19
Reglas para formar un identificador

 Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben


contener espacios en blanco.
 Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del
primer carácter.
 La longitud de identificadores puede ser de varios caracteres. Pero es
recomendable una longitud promedio de 8 caracteres.
 El nombre del identificador debe dar una idea del valor que contiene.

2.4.3.- Constantes
Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución
del programa. Ejemplo: pi = 3.1416

2.4.4.- Variable

Es un espacio en la memoria de la computadora que permite almacenar temporalmente


un dato durante la ejecución de un proceso, su contenido puede cambiar durante la
ejecución del programa. Para poder reconocer una variable en la memoria de la
computadora, es necesario darle un nombre con el cual podamos identificarla dentro de
un algoritmo.

Ejemplo: area = pi * radio ^ 2 . Las variables son : el radio, el area y la constate es pi

2.4.4.1.- Clasificación de las Variables

Por su contenido

 Variables Numéricas: Son aquellas en las cuales se almacenan valores


numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos
(+ y -) y el punto decimal.
Ejemplo: iva = 0.15 pi = 3.1416 costo = 2500
 Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o
falso) estos representan el resultado de una comparación entre otros datos.
 Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras,
números y caracteres especiales).
Ejemplo: letra = ’a’ apellido = ’lopez’ direccion = ’Av. Libertad #190’

Página 20
Por su uso

 Variables de Trabajo: Variables que reciben el resultado de una operación


matemática completa y que se usan normalmente dentro de un programa.
Ejemplo:
Suma = a + b /c
 Contadores: Se utilizan para llevar el control del numero de ocasiones en que se
realiza una operación o se cumple una condición. Con los incrementos
generalmente de uno en uno.
 Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando
progresivamente.

2.4.5.- Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de operación,


paréntesis y nombres de funciones especiales.

Por ejemplo: a + (b + 3) / c

Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas.

Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:

 Aritméticas
 Relacionales
 Lógicas

2.4.5.- Operadores

Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o
constantes. Es decir, los operadores nos permiten manipular valores.

2.4.5.1.- Operadores Aritméticos

Los operadores aritméticos permiten la realización de operaciones matemáticas con los


valores (variables y constantes).

Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si
ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

Página 21
2.4.5.2.- Operadores Aritméticos

+ (Suma); - (Resta), * (Multiplicación), / (División) , ^ ( Exponenciacion )


Mod – conocido como Modulo y es presenta el residuo en la división entera.

Ejemplos:
Expresión Resultado
7/2 3.5
12 mod 7 5
4+2*5 14

Prioridad de los Operadores Aritméticos


Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se evalúa
primero. Dentro de una misma expresión los operadores se evalúan en el siguiente
orden:

1. ^ Exponenciación
2. *, /, mod Multiplicación, división, modulo.
3. +, - Suma y resta.

Los operadores en una misma expresión con igual nivel de prioridad se evalúan de
izquierda a derecha.

Ejemplos:

4 + 2 * 5 = 14 23 * 2 / 5 = 9.2

3 + 5 * (10 - (2 + 4)) = 23 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98

2.4.5.3.- Operadores Relacionales

Se utilizan para establecer una relación entre dos valores. Luego compara estos valores
entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o
falso).
Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas).
Estos tienen el mismo nivel de prioridad en su evaluación.
Los operadores relaciónales tiene menor prioridad que los aritméticos.

Tipos de operadores Relacionales


 > Mayor que
 < Menor que
 > = Mayor o igual que
 < = Menor o igual que
 < > Diferente
 = Igual

Página 22
Ejemplos:
Si a = 10, b = 20, c = 30
a+b>c Falso
a-b<c Verdadero
a-b=c Falso
a * b < > c Verdadero

Ejemplos no lógicos:
a<b<c
10 < 20 < 30
T > 5 < 30
(no es lógico porque tiene diferentes operandos)

2.4.5.4.- Operadores Lógicos

Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos
valores pueden ser resultado de una expresión relacional.

Tipos de operadores Lógicos


 And Y
 Or O
 Not Negación

Ejemplo:
Para los siguientes ejemplos T significa verdadero y F falso.

Operador Not

Operando Resultado

T F
F T

Operador And

Operando1 Operador Operando2 Resultado

T AND T T
T F F
F T F
F F F

Página 23
Operador Or Operador Or

Operando1 Operador Operando2 Resultado


T Or T T
T F T
F T T
F F F

Prioridad de los Operadores Lógicos

1. Not
2. And
3. Or

Prioridad de los Operadores en General

1. ()
2. ^
3. *, /, Mod, Not
4. +, -, And
5. >, <, > =, < =, < >, =, Or

Ejemplos: Sea: a = 10 b = 12 c = 13 d =10

Página 24
2.5.- TÉCNICAS DE DISEÑO

Existen dos principales técnicas de diseño de algoritmos de programación, el Top Down


y el Bottom Up.

2.5.1.- Top Down

También conocida como de arriba-abajo y consiste en establecer una serie de niveles de


mayor a menor complejidad (arriba-abajo) que den solución al problema. Consiste en
efectuar una relación entre las etapas de la estructuración de forma que una etapa
jerárquica y su inmediato inferior se relacionen mediante entradas y salidas de
información. Este diseño consiste en una serie de descomposiciones sucesivas del
problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones
que van a formar parte del programa.

La utilización de la técnica de diseño Top-Down tiene los siguientes objetivos básicos:


 Simplificación del problema y de los subprogramas de cada descomposición.
 Las diferentes partes del problema pueden ser programadas de modo
independiente e incluso por diferentes personas.
 El programa final queda estructurado en forma de bloque o módulos lo que hace
mas sencilla su lectura y mantenimiento.

2.5.2.- Bottom Up

El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan


computarizarse con forme vayan apareciendo, su análisis como sistema y su
codificación, o bien, la adquisición de paquetes de software para satisfacer el problema
inmediato.

Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es


difícil llegar a integrar los subsistemas al grado tal de que el desempeño global, sea
fluido. Los problemas de integración entre los subsistemas son sumamente costosos y
muchos de ellos no se solucionan hasta que la programación alcanza la fecha limite para
la integración total del sistema. En esta fecha, ya se cuenta con muy poco tiempo,
presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas
interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo
que se requiere, cuando se contempla al sistema como una entidad global, adolece de
ciertas limitaciones por haber tomado un enfoque ascendente.
Uno de ellos es la duplicación de esfuerzos para acceder el software y más aún al
introducir los datos. Otro es, que se introducen al sistema muchos datos carentes de
valor.

Un tercero y tal vez el más serio inconveniente del enfoque ascendente, es que los
objetivos globales de la organización no fueron considerados y en consecuencia no se
satisfacen. La diferencia entre estas dos técnicas de programación se fundamenta en el
resultado que presentan frente a un problema dado. La creación de algoritmos es basado
sobre la técnica descendente, la cual brinda el diseño ideal para la solución de un
problema.

Página 25
2.5.3.- Herramientas para el Diseño de Algoritmos

Una de las dos herramientas más comunes en el diseño de algoritmos es el diagrama de


flujo.

2.5.3.1.- Diagrama de Flujo

Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede


decir que es la representación detallada en forma gráfica de como deben realizarse los
pasos en la computadora para producir resultados.

Esta representación gráfica se da cuando varios símbolos (que indican diferentes


procesos en la computadora), se relacionan entre si mediante líneas que indican el orden
en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados
por el instituto norteamericano de normalización (ANSI):

Símbolo Descripción

Indica el inicio y el final de nuestro


diagrama de flujo.

Indica la entrada y salida de datos.

Símbolo de proceso y nos indica la


asignación de un valor en la memoria
y/o la ejecución de una operación
aritmética.

Indica la salida de información por


impresora.

Conector dentro de página. Representa


la continuidad del diagrama dentro de la
misma página.

Conector fuera de pagina. Representa la


continuidad del diagrama en otra pagina.

Indica la salida de información en la


pantalla o monitor.

Página 26
Símbolo de decisión. Indica la
realización de una comparación de
valores.

Símbolo de Selección Múltiple. Dada


una expresión permite escoger una
opción de muchas.

Símbolo del Mientras. Dada una


expresión al principio de la iteración
esta es evaluada; si la condición es
verdadera realizará el ciclo, si es falsa la
repetición cesará.

Símbolo del Para. Esta estructura de


control repetitiva se usa generalmente
cuando se conoce de antemano el
numero de iteraciones.

Símbolo Repita Hasta. funciona igual


que la estructura Mientras, con la
diferencia que al menos una vez hará el
grupo de instrucciones y luego evaluará
una condición. Si la condición evaluada
es falsa continua dentro del ciclo y si es
verdadera termina la iteración.

Página 27
Líneas de flujo o dirección. Indican la
secuencia en que se realizan las
operaciones.

Recomendaciones para el diseño de Diagramas de Flujo

 Se deben usar solamente líneas de flujo horizontales y/o verticales.


 Se debe evitar el cruce de líneas utilizando los conectores.
 Se deben usar conectores sólo cuando sea necesario.
 No deben quedar líneas de flujo sin conectar.
 Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo
y de izquierda a derecha.
 Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando
el uso de muchas palabras.

2.5.3.2.- Pseudocódigo

Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se


emplea, dentro de la programación estructurada, para realizar el diseño de un programa.
En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de
algoritmos.

En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de


algoritmos.
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar
solución a un problema determinado. El Pseudocódigo utiliza palabras que indican el
proceso a realizar.

Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo

 Ocupa menos espacio en una hoja de papel


 Permite representar en forma fácil operaciones repetitivas complejas
 Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de
programación.
 Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación.

Página 28
2.5.3.3.- Diagramas estructurados (Nassi-Schneiderman)

El diagrama estructurado N-S también conocido como diagrama de chapin es como un


diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las
acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de
flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en
la siguiente forma:

2.6.- ESTRUCTURAS ALGORÍTMICAS

Las estructuras de operación de programas son un grupo de formas de trabajo, que


permiten, mediante la manipulación de variables, realizar ciertos procesos específicos
que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con
su complejidad en:

Página 29
2.6.1.- Estructuras Secuenciales

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en


secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el fin del proceso.

En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:

Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos


representados en Pseudocódigo y en diagramas de flujos:

• Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo.

Página 30
2.6.2.- Intrucciones de Asignación

La asignación consiste, en el paso de valores o resultados a una zona de la memoria.


Dicha zona será reconocida con el nombre de la variable que recibe el valor. La
asignación se puede clasificar de la siguiente forma:

 Simples: Consiste en pasar un valor constante a una variable (a 15)


 Contador: Consiste en usarla como un verificador del numero de veces que se
realiza un proceso (a a + 1)
 Acumulador: Consiste en usarla como un sumador en un proceso (a a + b)
 De trabajo: Donde puede recibir el resultado de una operación matemática que
involucre muchas variables (a c + b*2/4).

En general el formato a utilizar es el siguiente:

< Variable > <valor o expresión >

El símbolo debe leerse “asigne”.

2.6.3.- Escritura o salida de datos

Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado


o mensaje. Esta instrucción presenta en pantalla el mensaje escrito entre comillas o el
contenido de la variable. Este proceso se representa así como sigue:

2.6.4.- Lectura o entrada de datos

La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el


teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a
continuación de la instrucción. Esta operación se representa así:

Página 31
2.6.5.- Declaracion de Varibles y Constante.

La declaración de variables es un proceso que consiste en listar al principio del


algoritmo todas las variables que se usarán, además de colocar el nombre de la variable
se debe decir qué tipo de variable es.

Contador: ENTERO
Edad, I: ENTERO
Direccion : CADENA_DE_CARACTERES
Salario_Basico : REAL
Opcion : CARACTER

En la anterior declaración de variables Contador, Edad e I son declaradas de tipo entero;


Salario_Basico es una variable de tipo real, Opcion es de tipo carácter y la variable
Direccion está declarada como una variable alfanumérica de cadena de caracteres.

En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo


valor.

CONSTANTE Pi =3.14159
CONSTANTE Msg= “Presione una tecla y continue”
CONSTANTE ALTURA= 40

Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las


variables ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa
de fuerza declarar las variables. Sin embargo en este curso lo haremos para todos los
algoritmos que realicemos, con esto logramos hacerlos más entendibles y organizados y
de paso permite acostumbrarnos a declararlas ya que la mayoría de los lenguajes de
programación (entre ellos el C++) requieren que necesariamente se declaren las
variables que se van a usar en los programas.

Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como
resultado la suma de estos. Use Pseudocódigo y diagrama de flujos.

Página 32
Ejemplo 2: Escriba un algoritmo que permita conocer el área de un triángulo a partir de
la base y la altura. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.

2.6.6.- Estructuras Condicionales

Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que
en base al resultado de esta comparación, se siga un curso de acción dentro del
programa. Cabe mencionar que la comparación se puede hacer contra otra variable o
contra una constante, según se necesite. Existen tres tipos básicos, las simples, las
dobles y las múltiples.

2.6.6.1.- Simples:
Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas
tomas de decisión tienen la siguiente forma:

Pseudocódigo: Diagrama de flujo:

Página 33
2.6.6.2.- Dobles:
Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas
posibles en función del cumplimiento o no de una determinada condición. Se representa
de la siguiente forma:

Pseudocódigo: Diagrama de flujo:

Donde:
Si:Indica el comando de comparación
Condición : Indica la condición a evaluar
Entonces : Precede a las acciones a realizar cuando se cumple la condición
Instrucción(es):Son las acciones a realizar cuando se cumple o no la condición
si no :Precede a las acciones a realizar cuando no se cumple la condición
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más
acciones.

2.6.6.3.- Múltiples:
Las estructuras de comparación múltiples, son tomas de decisión especializadas que
permiten comparar una variable contra distintos posibles resultados, ejecutando para
cada caso una serie de instrucciones especificas. La forma común es la siguiente:

Pseudocódigo: Diagrama de flujo:

Página 34
2.6.4.- Múltiples (En caso de):

Las estructuras de comparación múltiples, es una toma de decisión especializada que


permiten evaluar una variable con distintos posibles resultados, ejecutando para cada
caso una serie de instrucciones especificas. La forma es la siguiente:

Pseudocódigo: Diagrama de flujo:

Ejemplos :
1.- Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe
aparecer un mensaje indicándolo. Expresarlo en Pseudocódigo y Diagrama de flujos.

Pseudocódigo: Diagrama de flujo:

Página 35
2.- Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar
un mensaje donde diga si el alumno aprobó o reprobó el curso. Exprese el algoritmo
usando Pseudocódigo y diagrama de flujos.

Pseudocódigo Diagrama de Flujo

INICIO
Not1, Not2, Not 3 :REAL
Def: REAL
LEA Nota1, Nota2, Nota3
Def ß (Not1 + Not2 + Not3)
/3
Si Def < 3 entonces
Escriba “Reprobó el curso”
Sino
Escriba “Aprobó el curso”
Fin-Si
FIN

3.- Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor
o igual a 150 cm envíe el mensaje: “Persona de altura baja”; si la altura está entre 151 y
170 escriba el mensaje: “Persona de altura media” y si la altura es mayor al 171 escriba
el mensaje: “Persona alta”. Exprese el algoritmo usando Pseudocódigo y diagrama de
flujos.

Pseudocódigo: Diagrama de Flujo


INICIO
Altura: ENTERO
ESCRIBA “Cuál es tu altura? ”
LEA Altura
Si Altura <=150 entonces
ESCRIBA “persona de altura baja”
Sino
Si Altura <=170 entonces
ESCRIBA “persona de altura
media”
Sino
Si Altura>170 ENTONCES
ESCRIBA “persona alta”
Fin-Si
Fin-Si
Fin-Si
FIN

Página 36
4. Dado un numero entre 1 y 7 escriba su correspondiente día de la semana así:
1- Lunes 2- Martes 3- Miércoles 4- Jueves 5- Viernes 6- Sábado 7- Domingo
Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.

Pseudocódigo
INICIO
Dia: ENTERO
ESCRIBA “Diga un número para escribir su día”
LEA Dia
En-caso-de Dia haga
Caso 1: ESCRIBA “Lunes”
Caso 2: ESCRIBA “Martes”
Caso 3: ESCRIBA “Miércoles”
Caso 4: ESCRIBA “Jueves”
Caso 5: ESCRIBA “Viernes”
Caso 6: ESCRIBA “Sábado”
Caso 7: ESCRIBA “Domingo”
SINO: ESCRIBA “Escribió un numero fuera del rango 1-7”
Fin-Caso
FIN

Diagrama de flujo:

Página 37
2.6.5.- Estructuras Cíclicas

Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario


utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad específica
de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o
puede ser variable (estar en función de algún dato dentro del programa). Los ciclos se
clasifican en:

2.6.5.1.- Ciclos con un Numero Determinado de Iteraciones


(Para): Son aquellos en que el número de iteraciones se conoce antes de ejecutarse el
ciclo. La forma de esta estructura es la siguiente:
Pseudocódigo Diagrama de Flujos

Dado un valor inicial exp1 asignado a la variable esta se irá aumentando o


disminuyendo de acuerdo a la exp3 hasta llegar a la exp2; si se omite el paso, significa
que la variable aumentará de uno en uno.

2.6.5.2.- Ciclos con un Número Indeterminado de Iteraciones


Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que esta
dado en función de un dato dentro del programa.

2.6.5.2.1.- Mientras Que: Esta es una estructura que repetirá un proceso durante “N”
veces, donde “N” puede ser fijo o variable. Para esto, la instrucción se vale de una
condición que es la que debe cumplirse para que se siga ejecutando. Cuando la
condición ya no se cumple, entonces ya no se ejecuta el proceso. La forma de esta
estructura es la siguiente:

Pseudocódigo Diagrama de Flujos

Página 38
2.6.5.2.2.- Repita-Hasta: Esta es una estructura similar en algunas características, a la
anterior. Repite un proceso una cantidad de veces, pero a diferencia del Mientras Que,
el Repita-Hasta lo hace hasta que la condición se cumple y no mientras, como en el
Mientras Que. Por otra parte, esta estructura permite realizar el proceso cuando menos
una vez, ya que la condición se evalúa al final del proceso, mientras que en el Mientras
Que puede ser que nunca llegue a entrar si la condición no se cumple desde un
principio. La forma de esta estructura es la siguiente:

Pseudocódigo Diagrama de Flujos

Ejemplo 1:

Realizar un algoritmo que muestre los números de uno en uno hasta diez usando una
estructura Para. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.

Pseudocódigo Diagrama de Flujos

Página 39
Ejemplo 2: Usando una estructura Mientras, realizar un algoritmo que escriba los
números de uno en uno hasta 20

Pseudocódigo Diagrama de Flujos

Ejemplo 3: Realizar un algoritmo que pregunte al usuario un número comprendido en


el rango de 1 a 5. El algoritmo deberá validar el número, de manera que no continúe la
ejecución del programa mientras no se escriba un número correcto.

Pseudocódigo Diagrama de Flujos

Página 40
Unidad IV: Programación en lenguaje pascal
4.1 Definición y descripción general del lenguaje
Pascal
4.2 Laboratorio instructivo del uso del turbo Pascal
4.3 Palabras Reservadas en Pascal
4.4 Tipos de datos validos en Pascal
4.5 Operadores utilizados en Pascal
4.6 Instrucción de asignación
4.7 Instrucciones de acción de entrada y salida
4.8 Sentencias de control
4.9 Laboratorio instructivo de los temas 4.2 a 4.8
4.10 Arreglos
4.11 Laboratorio Instructivo del uso de arreglos
4.12 Procedimientos
4.13 Laboratorio Instructivo del uso de procedimientos
4.14 Funciones
4.15 Laboratorio instructivo del uso de funciones
IV.- PROGRAMACION
DE
COMPUTADORAS
EN
LENGUAJE
PASCAL.

Página 41
HISTORIA Y DESARROLLO DEL TURBO PASCAL

La versión original de Turbo Pascal fue escrita en 1982 por un joven danés llamado Anders
Heilsberg y vendida en Europa como Kompass Pascal. Philipe Kahn la llevo a Estados Unidos y
creó la empresa Borland International con la filosofía de venta directa del compilador a los
usuarios y a un precio módico.

El primer compilador comercializado incorporaba un editor y un compilador integrado, lo cual


supuso una novedad en el campo de los compiladores, ya que normalmente se comercializaban
ambos programas por separado. Esta primera versión(1.0) estaba disponible para máquinas que
corrían bajo CP/M y MS-DOS.

Posteriormente, las versiones 2.0 y 3.0 que se comercializaron en 1984 y 1985 respectivamente;
incrementaron las características del compilador, permitiendo 64k para código, datos y pila. La
versión 3.0 (1985) incluyó soporte de solapamientos, gráficos, rutinas de configuración de
pantallas y cajas de herramientas; esta versión supuso el auge de Pascal.

En 1987 apareció la versión 4.0, que supuso la aparición del concepto de unidades. Cada unidad
tenía su propio segmento de código, hasta 64k, y una vez que una unidad era compilada, otros
programas o unidades podían utilizarla sin recompilación.
El resultado fue que los programas Turbo Pascal (ahora archivos .EXE en lugar de .COM)
estaban limitados en tamaño solo por la memoria disponible. Con la versión 4.0 llegó el entorno
integrado de desarrollo, EID (Integrated Development Environment, IDE).

La versión 5.0 llegó en 1988 y aportó esencialmente herramientas de depuración. El depurador


integrador incorporado a TP 5.0 permitía seguimiento (traza) del código, establecer puntos de
ruptura y observar a modificar variables, todo ello sin dejar el EID. Otras características fueron
la emulación de coprocesadores matemáticos y la incorporación del Turbo Debbugger.

En el año 1989 supuso la introducción de los conceptos de programación orientada a objetos


(POO), en un compilador potente y económico: La versión 5.5. El Turbo Debbugger fue
mejorado para manejar objetos.

Por fin, la profesionalización de la POO llegó en 1990 con la incorporación al programa de


Turbo Vision (Una librería de objetos y la nueva versión 6.0). Otras propiedades específicas
son: nuevo EID con soporte ratón, ensamblador incoprporado(BASM), campos privados y
métodos para objetos y compilador en la línea de órdenes con modo protegido.

En el año 1992 Borland presentó la que sería última versión de Turbo Pascal 7.0, compatible
con todas la anteriores y que ha introducido mejoras significativas, tanto el entorno integrado de
desarrollo como el propio lenguaje Pascal y bibliotecas en tiempo de ejecución, así como
nuevas directivas y unidades.

Página 42
TIPOS DEFINIDOS POR EL USUARIO.

Existen dos diferentes tipos de datos simples definidos por el usuario: enumerados y subrago.

Tipos enumerados. Los tipos enumerados se componen de una lista de identificadores


encerrados entre paréntesis y separados por comas.

Ejemplo:

Type

Estaciones = (primavera, verano, otoño, invierno);

Colores (rojo, amarillo, verde, azul, violeta);

Los tipos enumerados son ordinales ya que llevan asociado cada uno un número entero,
empezando por el primero, al que se le asigna el O, al segundo un 1, y así sucesivamente, por lo
que no es independiente el orden de declaración. Un valor de tipo enumerado no puede
pertenecer a dos declaraciones de tipo distintas y no pueden leerse desde teclado, ni escribirse
en pantalla.

Tipos subrango.

Es un subconjunto de un tipo ordinal (enteros, boolean, carácter y enumerado) que se especifica


indicando el primero y el último elemento del conjunto.

Ejem. 1

Type

Identificador=primerelemento..ultimoelemento;

Ejem. 2

Type

Fecha= 1..31;

Var

Dia: Fecha;

Los tipos enteros, carácter, booleanos, enumerados y subrango se denominan tipos ordinales.
Un tipo ordinal representa una secuencia ordenada de valores individuales, a los que se puede
aplicar los conceptos de predecesor y sucesor. En cada tipo de datos ordinales hay un primer
valor y un último valor.

Página 43
OPERACIONES DE ENTRADA/SALIDA.

Sentencias de salida o escritura.

Write o Writeln (NombreArchivo, Nomvarl ,Nomvar2...):

Realizan conversión de tipos de datos antes de que la salida llegue al archivo de salida. Las
variables o argumentos de esta sentencia pueden ser: expresiones. constantes o variables
numéricas, de carácter, de cadena o booleanas.

Formatos:

Write o Writeln (argumento)


Write o Writeln (argumcnto:m)
Write o Writeln (argumento:m:n)

Donde m es el número de caracteres que ocupará la salida ajustando la información a la derecha,


y n sólo se emplea cuando el argumento es numérico real indica el número de caracteres que
ocupará en la salida la parte decimal.

Ejem.

Mostrar la salida formateada para números decimales.

Program formato;
Var
N:Real;
Begin
N:= 113;
Writeln ('Formato por defecto',n);
Writeln ('Anchura 8:1', n:8:1);
Writeln ('Anchura 8:3', n:8:3)
End.

Ejecución:

Formato por defecto _____ 3.33333333335E-01


Anchura 8:1 ____________ 0.3
Anchura 8:3 ____________ 0.333

Sentencia de entrada o lectura.

Read o Readln (NombreArchivo,Nomvarl ,Nomvar2..);

Página 44
OPERADORES ARITMÉTICOS.

Operador Función
- Operador unario. Invierte el signo.
+ operador binario suma.
- operador binario resta.
* operador binario producto.
/ operador binario división real.
div operador binario división entera.
mod operador binario resto entero.

FUNCIONES PREDEFINIDAS.

Instrucción Función
Abs(x) Proporciona el valor absoluto de una variable numerica x.
ArcTan(x) El arco cuya tangente es x.
Chr(x) Devuelve el carácter ASCII de un entero entre O y 255.
Cos(x) Proporciona el valor del coseno de x.
Exp(x) La exponencial de x(eX).
Frac(x) Parte decimal de x.
Int(x) Parte entera de x.
Ln(x) Logaritmo neperiano de x.
Odd(x) True si x es impar, y false si es par.
Ord(x) Ordinal de una variable tipo ordinal x.
Pred(x) Ordinal anterior a la variable ordinal x.
Round(x) Entero más próximo al valor x.
Succ(x) Ordinal siguiente a la variable ordinal x.
Sin(x) Seno de x.
Sqr(x) Cuadrado de x.
Sqrt(x) Raiz cuadrada de x, para x>=O.
Trunc(x) Parte entera de x.

Página 45
ESTRUCTURAS DE CONTROL.

Se denominan estructuras de control a aquellas que determinan qué instrucciones deben


ejecutarse y qué número de veces. Existen dos tipos de estructuras de control: alternativas o de
selección y repetitivas o de iteración.

ESTRUCTURAS ALTERNATIVAS.

Son aquellas que bifurcan o dirigen la ejecución de un programa hacia un grupo de sentencias u
otro dependiendo del resultado de una condición. Las dos sentencias alternativas de Turbo
Pascal son:

Sentencia alternativa simple IF-THEN-ELSE


Sentencia alternativa múltiple CASE-OF.

IF THEN ELSE.

Formato:

IF (expresión lógica o booleana) THEN

Sentencias (simple o compuesta)

ELSE

Sentencia2 (simple o compuesta);

Ejem.

IF n>O then Writeln (`Número positivo');

IF n>O then

Writeln (`Número positivo')

ELSE

Writeln (`Negativo o cero');

No puede existir un punto y coma inmediatamente antes de una palabra ELSE ya que sería
interpretado como final de IF.

Página 46
CASE OF

Formato:

CASE (expresión o variable) OF

(lista de constantes1):(sentencia1);

(lista de conslantes2):(sentencia2);

(lista de constantes3):(senteneia3);

...

(lista de constantesN):(sentenciaN);

ELSE (SENTENCIA)

...

END;

Ejem
plo

Program menu;
Var
Numerodia: integer;
Begin
Write('introduzca el ordinal de un día laborable de la semana:')
Readín (numerodia);
Write (`Hoy es ');
Case numerodia Of
1:Writeln ('Lunes');
2:Writeln ('Martes');
3:Writeln ('Miercoles');
4:Writeln ('Jueves');
5:Writeln ('Viernes');
6:Writeln ('Sábado')
Else
Writeln ('¡¡¡Domingo!!! No es día laborable');
End.

Página 47
ESTRUCTURAS REPETITIVAS

Son aquellas que crean un bucle (repetición continua de un conjunto de instrucciones) en la


ejecución de un programa respecto de un grupo de sentencias en función de una condición.
Las tres sentencias repetitivas de Turbo Pascal son:

 SENTENCIA WHILE
 SENTENCIA REPEAT-UNTIL
 SENTENCIA FOR
 CUÁNDO SE USA CADA UNO

SENTENCIA WHILE

Indica al ordenador que se ejecuten una o más sentencias mientras se cumpla una determinada
condición. La condición viene determinada por una variable o expresión booleana.

Formato:

WHILE condición DO

BEGIN

(sentencia1);

...

(sentenciaN);

END;

WHILE condición DO

(sentencia);

Esta sentencia comprueba inicialmente si la condición es verdadera. Si la condición es


verdadera se ejecutan las sentencias mientras la condición de su enunciado sea verdadera y
finaliza cuando la condición es falsa. Dado que la condición puede ser falsa inicialmente, es
decir antes de comenzar el bucle, habrá casos en que el bucle no se ejecute.

Características del bucle WHIILE:

Se ejecuta mientras la condición sea verdadera, y dentro del bucle debe existir, por lo menos,
una sentencia que modifique el valor de la variable o expresión, de lo contrario se puede
producir una situación de bucle infinito. Si la expresión lógica es falsa al comenzar el bucle, éste
no se realizará.

Página 48
Ejemplo.

Escribir los N primeros números naturales, donde N es un valor introducido por el usuario.

Program escribeenteros;

Var

N,contador: integer;

Begin

Write ('Introduzca numero maximo de enteros: ');

Readln (N);

Contador:=1;

While contador<=N do

Begin

Write (contador:5);

Contador:=contador+1;

End;

Writeln;

Writeln ('Fin de programa. Contador = ',contador);

End.

SENTENCIA REPEAT UNTIL

Ejecuta las sentencias comprendidas entre las palabras reservadas REPEAT y UNTIL hasta que
la expresión o variable sea verdadera.

Formato:

REPEAT
begin
(Sentencia);
(Sentencia);
...
end;
UNTIL condición;

Página 49
CARACTERÍSTICAS DEL BUCLE REPEAT:

Se ejecutan siempre una vez, por lo menos, y la terminación del bucle se produce cuando el
valor de la expresión lógica o condición de salida es verdadera. Se ejecuta hasta que la
expresión es verdadera, es decir, se ejecuta mientras la expresión sea falsa.

Ejemplo.

El mismo que con la sentencia WHILE.

Program escribeenteros;
Var
N,contador:integer;
Begin
Write ('Introduzca número máximo de enteros: ');
Readin (N);
Contador:= O;
Repeat
Contador:=contador+1;
Write (contador:5)
Until contador = N;
Writeln ('Fin de programa. Contador = ',contador)
End.

SENTENCIA FOR

Repite la ejecución de una o varias sentencias un número fijo de veces. previamente establecido.
Necesita una variable de control del bucle que es necesariamente de tipo ordinal, ya que el bucle
se ejecuta mientras la variable de control toma una serie consecutiva de valores de tipo ordinal,
comprendidos entre dos valores extremos (inferior y superior).

Formato ascendente:

FOR variablecontrol:=valorinicial TO valorfinal DO


(sentencia);
Formato descendente:
FOR variablecontrol:=valorincial DOWNTO valorfinal DO
(sentencia);
donde (sentencia) puede ser una sentencia simple o compuesta.
Ejemplo: El mismo que con la sentencia WHILE.

Program escribeenteros;
Mar
N,contador: integer;
Begin
Write ('Introduzca numero maximo de enteros: ');
Readln (N);
For contador:=1 to n do
Write (contador:5);
Writeln
End.

Página 50
CARACTERÍSTICAS DEL BUCLE FOR:

Aunque a primera vista pueda resultar más atractivo FOR, existen limitaciones en su aplicación
ya que en el bucle FOR siempre se incrementa o decrementa (de uno en uno) los valores de la
variable de control de bucle y no de dos en dos o de tres en tres, o con valores fraccionarios.
El número de iteraciones de un bucle FOR siempre es fijo y se conoce de antemano:
Valor final - Valor inicial +1.

CUÁNDO UTILIZAR WHILE/REPEAT/FOR?


 Utilizar la sentencia o estructura FOR cuando se conozca el número de iteraciones, y
siempre que la variable de control de bucle sea de tipo ordinal.
 Utilizar la estructura REPEAT-UNTIL cuando el bucle se realice por lo menos una vez.
 En todos los demás casos utilizar la sentencia WHILE.

PROCEDIMIENTOS Y FUNCIONES.

Pascal ofrece dos herramientas básicas para realizar programación descendente: los
procedimientos (procedure) y las funciones (function), a los que nos referiremos genéricamente
con el término de subprogramas. Turbo pascal incorpora además el concepto de unidad (unit),
que permite aprovechar módulos independientes ya compilados.

Los parámetros

Los parámetros son canales de comunicación para pasar datos ente programas y subprogramas
en ambos sentidos. Los parámetros van asociados a variables. constantes, expresiones, etc., y
por tanto, se indican mediante los correspondientes identificadores o expresiones. Los
parámetros que se utilizan en la llamada o invocación al subprograma se denominan parámetros
actuales, reales o argumentos, y son los que entregan la información al subprograma. Los
parámetros que la reciben en el subprograma se denominan parámetros formales o ficticios y se
declaran en la cabecera del subprograma.

En una llamada a un subprograma tiene que verificarse que:


1. El número de parámetros formales debe ser igual al de actuales.
2. Los parámetros que ocupen el mismo orden en cada una de las Listas deben ser
compatibles en tipo.

Estructura, declaración y empleo de un procedimiento


Se declaran inmediatamente después de las variables del programa principal, teniendo la
precaución de que si un subprograma referencia o llama a otro, el referenciado debe declararse
primero.

Declaración de procedimientos.
Cabecera procedure nombreproced (lista de parámetros);
Declaraciones const
Locales
Type...
Var...
<declaración de="" otros="" procedimientos="" y="" funciones="">
Cuerpo begin
end; (*obseiwar; final de proeedimiento*)
</declaración>

Página 51
DECLARACIÓN DE PARÁMETROS FORMALES.

Se declaran encerrados entre paréntesis, indicando el identificador y el tipo correspondiente


asociado a cada uno, separados por ':', y terminando en ';'. La palabra reservada VAR
precediendo a un identificador de parámetro formal indica al compilador que el paso del
parámetro es pro VARiable. Su ausencia u omisión indica que el paso de parámetro se realiza
por VALOR.

Ejemplo: PFl y PF2 se pasan por valor. PF3 se pasa por variable.

Llamada a un procedimiento: Se realiza desde el programa principal indicando el identificador


del procedimiento seguido de la lista de parámetros actuales encerrados entre paréntesis y
separados por comas. Ejemplo: Identificador (PAl ,PA2,PA3)

Ejemplo: Procedimiento para intercambiar los valores de dos variables.

Procedure intercambio (var pfl ,p12:integer);


Var
Aux:integer; (variable local uso exclusivo en procedimiento}
Begin
Aux:=pfl;
Pfl:pf2;
Pfl: aux
End;

{La llamada a este procedimiento se haría ...}


{... por ejemplo desde el siguiente programa:}

Program Uno;
Uses crt;
Var
Entero 1 ,entero2 : integer;

Procedure intercambio (var pfl ,p12:integer);


...
begin
clrscr; {*borrado de pantalla*}
Write ('introduzca 2 variables enteras: ');
Readln(entero1,entero2);
Writeln ('valores de las variables antes de la llamada');
Writeln ('Entero 1 = ',enterol,'entero 2 = ',entero2);
intercambio (enterol,entero2); {llamada al procedimiento}
Writeln ('Valor de las variables después de la llamada');
Writeln ('entero 1 = ',enterol,'entero 2 = ',entero2);
end;

Funciones o procedimientos?

Deben utilizarse funciones cuando solo tenga que devolverse un solo valor simple al programa
llamador. En todos los demás casos utilizaremos: procedimietos.

Página 52
LISTAS Y TABLAS (Arrays).

Concepto y clasificación de estructuras

Las estructuras se clasifican de acuerdo a varios criterios.

 Respecto al número de componentes, las estructuras se clasifican en estáticas (el


número de componentes es fijo) y dinámicas (el número de componentes varía durante
la ejecución del programa ya que se pueden crear y destruir las variables durante el
desarrollo del mismo.
 Respecto al tipo de componentes las estructuras suelen formarse o bien por
combinación de datos de distinto tipo (registros) o bien por la repetición de datos del
mismo tipo (arrays,conjuntos archivos, listas, árboles, etc.). Dentro de éstas el acceso
puede hacerse por posicion, ya sea de forma secuencial o bien directa, o bien por
contenido o clave.

La estructura Array.

Es una estructura homogénea de datos de tamaño constante accediendo a cada uno de sus
elementos mediante un identificador comun y uno o varios índices.

 Todos los elementos del array son del mismo tipo.


 El número de ellos no varía durante la ejecución del programa.
 Accedemos a un elemento de la estructura mediante un identificador común, el nombre
del array, y con el valor que toman uno o varios indices. Al número de indices
necesarios para designar un elemento del array se le denomina dimensión del array.
 El número máximo de valores posibles que puede tomar cada indice se denomina rango
de esa dimensión o indice. Los valores han de ser consecutivos, por lo que el indice ha
de ser de un tipo ordinaL

Declaración de tipos y variables array

La declaración más general de un array es la siguiente:

Type

Rango1 = tipoordinal1;

Rango2 = tipoordinal2;

...

rangon = tipoordinaln;

tipobase = (*cualquier predefinido o definido por el usuario*)

tipoarray = array [rango1,rango2,...,rangon] of tipobase,

Página 53
Ejemplo: Array para almacenar las notas correspondiente a todos los alumnos de un colegio.
Suponiendo lo siguiente:

Numero de cursos 5
Grupos por curso 3
Numero de evaluaciones 3
Numero de asignaturas 6
Numero de alumnos por curso 20

Const

Numcurso=5;

Numasig=6;

Numalum=20;

Type

Cursos=1.. nurneurso;

Grupos='A'..'C';

Eval=(primera,segunda,tercera);

Asign=1.. numasin;

Alum=1. .numalum;

Tiponotas=array[cursos,grupos,eval,asign,alum] of real;

Var

Notas:tiponotas;

Curso:cursos;

Grupo:grupos;

Evaluacion:eval;

Materia:asign;

Alumno:alum;

Con los elementos de un array podemos realizar las mismas operaciones que el tipo base al que
pertenecen.

Página 54
STRING: Cadenas de caracteres

Las cadenas de caracteres son arrays especiales.


Una cadena de caracteres (string) consiste en una serie o secuencia de caracteres cuyo número
(longitud) puede estar entre 0 y 255.
Se puede definir la longitud de la cadena poniendo string [n] donde n está entre 0 y 255

Longitud fisica: corresponde al maximo numero de caracteres que puede almacenar.


Longitud lógica: corresponde al numero de caracteres que tiene en un instante determinado.

OPERACIONES Y TRATAMIENTO DE CADENAS

Operaciones con cadenas.

Las dos operaciones basicas son comparación y concatenación.

Operador de concatenación (+) : Se utiliza para reunir varias cadenas en una sola

Ejemplo

Cad1:='esto es un ejemplo';
Cad2:='de concatenacion de cadenas';
Cadr:=cad1+cad2;
Write (cadr);

Se visualizaría esto es un ejemplo de concatenacion de cadenas

La funcion concat realiza la misma funcion que el operador de concatenacion. La sintáxis es:

Function concat (cad1,cad2,...:string): string;

La cadena vacia o nula se representa con dos caracteres apóstrofes seguidos ' '. El acceso a los
elementos de una cadena individualmente se hace como si fuera un array.

Ejemplo.

Cad1:='ejemplo';

Para referirnos al primer elemento pondriamos cad1[1] que seria la letra e.

La funcion Length proporciona la longitud logica de una cadena de caracteres.

Ejemplo: Longitud:=length(cad1);

La variable longitud tomaria el valor 7.

Página 55
Funciones de tratamiento de cadenas.

Instrucción Función
Extrae una subcadena de caracteres de otra cadena de caracteres

Copy (cadl,po,num)
COPY
Po: primera posición del caracter a extraer.
Num: número de caracteres que se extraen.
Po y Num deben ser enteros
Determina si una cadena es subcadena de otra, en caso afirmativo
devuelve la posición donde comienza la subcadena, en caso negativo
POS devolvería cero.

Pos (subcadena,cadena)
Suprime el numero de caracteres que le digamos de una cadena a partir
de la posición que le indiquemos
DELETE

Delete (Cad,Po,Num)
Inserta una cadena de caracteres en otra a partir de una posicion dada.

Insert (subcadena,destino,posicion)
INSERT
Subcadena: Cadena a insertar
Destino: Cadena donde se va a insertar
Posicion: Lugar a partir del cual se va a insertar
Devuelve el caracter mayúscula

UPCASE Upcase(x)

Donde x es una variable de tipo char.


Convierte un valor numerico a la correspondiente cadena de caracteres
que lo representa.
STR

Str(valor,cad)
Procedimiento inverso a Str, es decir, devuelve el valor numerico de una
cadena.

VAL
Val(cad,variable,codigo) Cad: la cadena a convertir en valor numerico.
Variable: el numero que se obtenga. Codigo: cero si se ha podido
convertir.

Página 56
4.1- HOME WORK
DE
PROGRAMACION
EN
LENGUAJE
PASCAL.

Página 57
CONCEPTOS BÁSICOS

1.1. ¿Cuál de los siguientes datos son válidos para procesar por una computadora?
3.141592 2.234E2 12.5E.3

0.0014 12E +6 123E4

12345.0 1.1E-3 5A4.14

15.E-04 -15E-0.4 A1.E04

1.2. (D.M. Etter) Decir si los siguientes pares de literales reales representan el mismo
número. Si no, explicar por qué
2300.0;2.3e+04 0.000007;0.7e+04

1.0;1.00 110.0;11.01e+01

-34.7;-0.34e+02 -0.76; 7,60e-01

1.3. ¿Cuáles de los siguientes identificadores de variables son válidos en un programa en


Pascal?
Renta Dos Pulgadas 4A2D2

#Alquiler C3P0 13Nombre

Constante Bienvenido#5 Nombre Apellidos

Nombre-Apellidos Nombre_Apellidos Var 1

Var_1 Sumar Numeros Sumar-Numeros

Tom's elemento SumarNumeros

area perímetro perimetro

density densidad longitud

length pay-rate temp-a

g(t) 2time time2

abs

Página 58
1.4. Si a=6, b=2 y c = 3, determinar el resultado de las siguientes expresiones aritméticas:

a -b +c a * b mod c

a * b div c a + b mod c

a div b + c a div b div c

1.5. Determinar el resultado de las siguientes expresiones lógicas:

(7>=5) AND (27 = 8) ((4+2) < 8) AND ((24 +1 ) = 25) OR FALSE


(45 <= 7) OR (NOT (5 >= 7)) ((2*7) > 5) OR (NOT ((7 DIV 2) = 3) AND (7 >
25)) AND TRUE
(8 > 8) OR (7 = 7) AND (NOT (5 <5))

1.6. Determinar si las siguientes expresiones lógicas son ciertas o falsas, suponiendo que
las variables que contienen almacenan los siguientes valores:
a = 5.5 b = 1.5 i = -3 hecho = false

a < 10.0 (a + b ) > = 6.5

i <> 0 (b -1.0) > a

not (a < (3.0 * b)) -i <= (i +6)

(a<10.0) and (a > 5.0) (abs(i) > 3) or hecho

1.7. Convertir las siguientes ecuaciones en sentencias de asignación en Pascal.


1.7.1. Pendiente de una línea entre dos puntos

y2-y1
pendiente =
x2-x1

1.7.2. Factor de corrección en el cálculo de la presión:

b c
factor = 1+ +
v v2

1.7.3. Coeficiente de fricción

v2
fricción =
30s

1.7.4. Distancia del centro de gravedad desde un plano de referencia, en un sector


cilíndrico:

38.1972(r3 - s3) sen (a)


centro =
(r2 - s2) a

Página 59
1.7.5. Pérdida de presión de la fricción en una tubería:

l v2
perdida = f  p  
d 2
1.7.6. Resistencia equivalente de un circuito paralelo
1
req = 1 1 1 1
+ + +
x1 x2 x3 x4
1.8. Convertir la siguientes sentencias de asignación en Pascal, a su forma algebraica
1.8.1. movto := sqrt(vi*vi + 2.0*a*x)
1.8.2. freq := 1.0/sqrt((2.0*3.141593)*(1.0/xl*c))
1.8.3. rango := 2.0*vi*vi*sin(b)*cos(b)/g
1.8.4. long := li*sqrt(1.0 - (v/c)*(v/c))
1.8.5. c:= 2.99e10;
energia := 1.6747e-24*c*c;

1.8.6. pi:=3.141593
volumen := 2.0*pi*x*x*((1.0 - pi/4.0)*y - (0.8333 -pi/4.0)*x)

1.9. ¿Qué valor almacenan las variables a y b después de la ejecución de las siguientes
sentencias?
a := 5;
b := a + 6;
a := a + 1;
b := a -5;
1.10. ¿Qué valor almacenan las variables a, b y c después de la ejecución de las
siguientes sentencias?
a := 3;
b := 20;
c := a + b;
b := a + b;
a := b;
1.11. ¿Qué valor almacenan las variables a y b después de la ejecución de las
siguientes sentencias?
a:= 10;
b := 5;
a := b;
b := a;
1.12. Escribir un programa en Pascal que intercambie los valores de tres variables, a,
b y c, de la siguiente manera:
b toma el valor de a
c toma el valor de b
a toma el valor de c

1.13. Deducir los valores finales de las variables en el siguiente programa, tras su
ejecución
Program ejercicio_2_11;
var
x,y,z:integer;
begin
x := 15;
y := 30;
z := y -x
end.

Página 60
1.14. Determinar el valor de la variable VALOR después de la ejecución de cada uno
de los siguientes grupos de operaciones
1.14.1. VALOR := 4.0 * 5
1.14.2. x := 3.0;
y := 2.0;

VALOR := x * y - y;

1.14.3. VALOR:= 5;
x := 3;

VALOR := VALOR * x;

1.15. Determinar los valores de a, b, c y d después de la ejecución del siguiente


programa:
Program ejercicio_2_13;

var

a,b,c,d: integer;

begin

a := 1; b:=4;
c := a + b;
d := a - b;
a := c + 2 * b;
b := c + b;
c := a * b;
d := b + d;
a := d + c;
end.

1.16. Escribir un programa que calcule y escriba en pantalla el cuadrado de 821.

1.17. Escribir diferentes métodos para determinar si una variable o expresión


numérica es par.

2. LECTURA ESCRITURA

2.1. Escribir un algoritmo que lea un valor entero, lo doble, se multiplique por 25 y
visualice el resultado
2.2. Diseñar un algoritmo que lea cuatro variables y calcule y visualice su producto, su
suma y su media aritmética.
2.3. Diseñar un programa que lea el peso de una persona en libras y devuelva el peso en
kilogramos y gramos (una libra = 0.453592 kilogramos).

Página 61
3. ESTRUCTURAS CONDICIONALES

3.1. Escribir un programa en Pascal que permita leer 5 valores numéricos enteros A, B, C,
D, E y decir si su media es mayor o igual a 10.
3.2. Escribir un programa en Pascal que permita leer 3 valores numéricos reales A, B, C, y
decir si su media es mayor o igual a 10.
3.3. Escribir un programa que permita leer un carácter y deducir si está situado antes o
depués de la letra 'm' en orden alfabético.
3.4. Escribir un programa que permita leer dos caracteres y determinar si están en orden
alfabético.
3.5. Escribir un programa que permita leer un carácter y deducir si se encuentra ente las
letras 'I' y 'M'.
3.6. Escribir un programa que permita emitir una factura correspondiente a una compra de
un artículo determinado, del que se adquieren una o más unidades. El IVA a aplicar es
del 16%. Si el precio total es mayor de 300 € , se aplicará un descuento del 5%.
3.7. Realizar el mismo programa del ejercicio anterior, pero preguntando al usuario si desea
obtener el precio en pesetas y, en caso afirmativo, mostrar el precio de la operación en
pesetas y euros.
3.8. Un capital C está situado a un tipo de interés R. Escribir un programa que permita
deducir si el capital se doblará al término de dos años. La fórmula de interés compuesto
es :
CF = C(1 + R)2.

4. ESTRUCTURAS CONDICIONALES ANIDADAS.

4.1. Realizar un programa tal que, dados tres números enteros, deduzca cuál es el central
4.2. Realizar un programa que determine si un año dado es o no bisiesto.
4.3. Calcular la raíz cuadrada de un número y escribir su resultado. Asegurar que no haya
error en la operación.
4.4. Escribir un programa en Pascal que permita leer 3 valores numéricos reales a, b, c,
coeficientes de una ecuación de segundo grado, y escribir en pantalla las soluciones
reales X1 y X2. Si la operación dentro de la raíz diera como resultado un valor
negativo, imprimir un mensaje en pantalla que diga “Las soluciones son dos números
complejos”.
4.5. Escribir un Programa en Pascal que proceda igual que en el ejercicio anterior, pero
ahora, si la operación dentro de la raíz diera como resultado un valor negativo,
imprimir el resultado como “m + n i; m - n i ”. Por ejemplo, si las soluciones fueran,
X1= -3+SQRT(-5) y X2= -3 –SQRT(-5), la salida del programa sería “-3 + sqrt(5)i; -3
– sqrt(5)i”.

Página 62
4.6. Determinar el precio de un billete de ida y vuelta en ferrocarril, conociendo la distancia
a recorrer y sabiendo que si el número de días de estancia es superior a siete y la
distancia superior a 800 kilómetros, el billete tiene una reducción del 30%. El precio
por kilómetro es de 0.15 €.
4.7. Realizar el mismo programa del ejercicio anterior, pero preguntando al usuario si desea
obtener el precio en pesetas y, en caso afirmativo, mostrar el precio de la operación en
pesetas y euros.
4.8. Hacer un programa en Pascal que permita leer un número entero de 1 a 7 e imprima en
pantalla el correspondiente día de la semana ( Ej: 1  Lunes; 2  Martes; ...). Si se
introduce un valor que no esté comprendido entre 1 y 7 deberá imprimir un mensaje
que diga “ERROR ... valor fuera de rango”.
4.9. Hacer un programa que permita leer dos números reales y el símbolo de una operación
(‘+’, ‘-‘,’*’ ó ‘/’) y devuelva el correspondiente resultado. Si el símbolo no es correcto,
deberá imprimir un mensaje que indique “Error en símbolo”
4.10. Diseñar un programa con el que, a partir de una fecha introducida por teclado con el
formato DÍA, MES, AÑO, se obtenga la fecha del día siguiente.

5. ESTRUCTURAS ITERATIVAS

5.1. Realizar un programa que calcule la suma de los enteros entre 1 y 10, es decir 1 + 2 +
... + 10.
5.2. Construir un programa que calcule independientemente la suma de los números pares e
impares comprendidos entre 1 y 200.
5.3. Se desea leer desde teclado una serie de números hasta que
 aparezca alguno menor que 1000.
 aparezca alguno en el intervalo [100, 1000]
 aparezca alguno en el intervalo [100, 1000], o que sea negativo
Construir un programa para cada uno de estos casos.

5.4. Construir un programa que permita leer una serie de números enteros positivos
distintos de 0 (el último número de la serie debe ser el -99) y obtener el máximo.
5.5. Calcular y visualizar la suma y el producto de los números pares comprendidos entre
20 y 40, ambos inclusive.
5.6. Realizar un programa que calcule y visualice las potencias de 2 entre 0 y 10.
5.7. Leer 500 números enteros y obtener cuántos son positivos.
5.8. Calcular la suma de los cuadrados de los 100 primeros números naturales.
5.9. Sumar los números pares del 2 al 100 e imprimir su valor.
5.10. Sumar 10 números introducidos por teclado
5.11. Calcular la media de 50 números introducidos por teclado y visualizar el
resultado
5.12. Visualizar los múltiplos de 4 comprendidos entre 4 y N, donde N es un número
introducido por teclado.
5.13. Dados 10 números enteros introducidos por teclado, visualizar la suma de los
números pares, calcular cuántos números pares existen y calcular su media
aritmética.

Página 63
5.14. Se desea realizar una estadística de los pesos de los alumnos de un colegio de
acuerdo a la siguiente tabla:
 Alumnos de menos de 40 kg.
 Alumnos entre 40 y 50 kg.
 Alumnos de más de 50 y menos de 60 kg.
 Alumnos con un peso igual o mayor de 60 kg.
Escribir un programa que lea el peso de un conjunto de alumnos y visualice esta
estadística.

5.15. Escribir tres programas (usando los bucles for, while y repeat) que permitan
realizar la suma de T números introducidos por teclado.
5.16. Calcular la nota media por alumno de una clase de N alumnos. Cada alumno
podrá tener un número M de notas.
5.17. Escribir un programa en Pascal para leer una lista de 10 valores enteros y cuya
salida sea la siguiente:
 La suma de los valores positivos.
 El producto de los valores negativos (Ignorar los valores nulos).
5.18. Escribir un programa en Pascal que lea 5 grupos de cuatro valores cada uno y
que, para cada grupo, calcule la media y la escriba en pantalla.
5.19. Escribir un programa en Pascal que lea N grupos de cuatro valores cada uno y
que, para cada grupo, calcule la media y la escriba en pantalla. El proceso
finaliza al encontrarse un grupo cuyo primer valor es 0.
5.20. Escribir un programa en Pascal que lea dos números enteros positivos y calcular
el producto de los mismos por sumas sucesivas.
5.21. Escribir un programa en Pascal cuya entrada sea una lista de números positivos
que finaliza en 0 y la salida consista en imprimir el valor mínimo de la lista.
5.22. Escribir un programa en Pascal cuya entrada sea una lista de números positivos
que finaliza en 0 y la salida consista en imprimir el valor máximo de la lista.
5.23. Escribir un programa en Pascal que proceda a la vez como los del ejercicio 5) y
6) y que imprima, además, la ubicación del máximo dentro de la lista. (Suponer
un único máximo).
5.24. Escribir un programa en Pascal cuya entrada sean 4 grupos de N valores enteros
cada uno, donde N se determine al comienzo de cada grupo, y cuya salida
consista en imprimir el valor máximo de cada grupo. (Suponer un único
máximo ).
5.25. Dada una lista de valores numéricos positivos, finalizada en 0, realizar un
programa en Pascal para indicar si está ordenada en forma ascendente.
5.26. Se considera la serie definida por: a1 = 0, a2 = 1, an = 3 * an-1+2 * an-2 (para
n>=3). Se desea obtener el valor y el rango del primer término que sea mayor o
igual que 1000.
5.27. Escribir un programa que permita calcular xn, donde:
 x puede ser cualquier real distinto de 0
 n puede ser cualquier entero (positivo, negatio o nulo).
5.28. Escribir un programa que determine si un número leído por teclado es primo.
5.29. Escribir un programa que encuentre los n primeros números primos.
5.30. Esribir un programa que muestre en pantalla la representación en sistema
binario de un número entero decimal
 código de vendedor: 3 dígitos
 importe de ventas del mes: real
5.31. Escribir un programa en Pascal que calcule el importe máximo de ventas del
mes y cuántos vendedores alcanzaron dicho importe.

Página 64
5.32. Una empresa contiene la siguiente información de un mes de ventas, para cada
uno de sus 20 vendedores:
 código de vendedor: 3 dígitos
 importe de ventas del mes: real
Escribir un programa en Pascal que calcule el importe máximo de ventas del mes y
cuántos vendedores alcanzaron dicho importe.

5.33. En una Central Telefónica se procesan los llamados realizados en la siguiente


forma:
Por cada llamada se registra:
 código de llamada : 3 dígitos (0 al finalizar el proceso)
 tipo de día : “1” hábil, “2” festivo
 duración de la llamada : entero > 0.
Siendo los importes

Primeros 3’ Minuto Adicional

Días hábiles 10 2

Días festivos 15 3

Escribir un programa en Pascal que permita introducir la información sobre un conjunto


indefinido de llamadas (finalizando el proceso cuando el código de llamada sea 0) y que
imprima por pantalla:

a) El importe a abonar por cada llamada (código - importe).

b) La cantidad de llamadas que superen los 3’

c) El % de llamados que superan los 3’ (sobre el total de llamadas informadas).

5.34. Escribir un programa en Pascal para leer 30 valores enteros (comprendidos


entre 5 y 40), que representan la temperatura máxima de cada uno de los días de un
mes. Se pide hallar e informar sobre:
 La temperatura máxima del mes y el día que se produjo. (Se supone única)
 Cuántos días la temperatura supero los 25º C.
 El promedio de las temperaturas máxima del mes.

5.35. Escribir un programa en Pascal para leer los resultados de la evaluación de un


curso de Programación, de manera que por cada alumno se registre:
número de matricula : 4 dígitos (1-9999)
asistencia : 1, presentado; 0, no presentado
calificación : 2 dígitos (0-10).
A partir de esta información se debe calcular e informar:
a) Cantidad y % de alumnos presentes.
b) Media de calificaciones de alumnos presentados.
c) % de alumnos aprobados (sobre el total de alumnos presentados).
d) Numero de matricula del alumno de mayor calificación. (Si hay varios alumnos
con esa calificación: numero de matricula y cantidad de alumnos en esa situación).
5.36. Escribir un programa que reciba una fecha por teclado, en el formato dd, mm,
aaaa, así como el día de la semana que fue el primero de enero de dicho año, y
muestre por pantalla el día de la semana que corresponde a la fecha que le
hemos dado. En su resolución deben considerarse los años bisiestos.

Página 65
6. ARRAYS UNIDIMENSIONALES

6.1. Determinar los valores de los vectores N y M después de la ejecución de las


instrucciones siguientes:
var M,N: array [1..3} of integer;

1. M[1] := 1;
2. M[2] := 2;
3. M[3] := 3;
4. N[1] := M[1] + M[2];
5. N[2] := M[1] - M[3];
6. N[3] := M[2] + M[3];
7. M[2] := 2*N[1] - N[2];
8. M[1] := M[2] - M[1];

6.2. Leer un vector V.y mostrar su contenido.


6.3. Escribir un programa que permita calcular el cuadrado de los 100 primeros números
enteros y, a continuación, escriba una tabla que contenga dichos cuadrados.
6.4. Escribir un programa que pida 100 números enteros cualesquiera y, a continuación,
escriba una tabla que contenga los cuadrados de los números introducidos.
6.5. Se tienen N temperaturas almacenadas en un array. Se desea calcular su media y
obrener el número de temperaturas mayores o iguales que la media.
6.6. Calcular la suma de todos los elementos de un vector de 100 elementos, así como su
media aritmética.
6.7. Calcular el número de elementos negativos, positivos y nulos de un vector de N
elementos.
6.8. Diseñar un algoritmo que calcule el mayor valor de una lista L de N elementos.
6.9. Dada un a lista L de N elementos, diseñar un algoritmo que calcule de forma
independiente la suma de los números pares y la suma de los impares.
6.10. Rellenar un vector A de N elementos consecutivos de forma que cada elemento
cumpla que A[i] = i.
6.11. Hacer diferentes listados de una lista de 10 números según el siguiente criterio
si un número está en el intervalo [0, 50), ponerlo en la lista 1

si un número está en el intervalo [50, 100), ponerlo en la lista 2

si un número está en el intervalo [100, 150), ponerlo en la lista 3

6.12. Escribir un programa para introducir una serie de números desde el teclado.
Utilizar un valor centinela (-1E5) para terminar la serie. El programa deberá
almacenar en un array los valores introducidos y, en otro array, la desviación de
la media de cada uno de los valores introducidos. Deberá de visualizar también
la suma, la media de los valores y todos los valores junto con su desviación.
6.13. Dado un vector de 15 valores, hacer un programa que pueda obtener, y sacar por
pantalla
 el mayor de los valores
 el menor de los valores
 el más próximo a la media

Suponiendo que los valores del problema anterior fueran mediciones, modificarlo de
forma tal que sin uso de vectores auxiliares, se pueda calcular la desviación media y la
desviación estándar

Página 66
n n

 Xj  X
j 1
(X  X )
j 1
j
2

MD  S
N N

Donde Xj, es cada uno de los valores X es la media de los valores, y N la cantidad
de valores.
6.14. Escribir un programa en Pascal que lea una palabra carácter a carácter. El
último carácter que se introduce es la barra de dividir (‘/’), que indica que la
palabra ha finalizado. Escribir un programa que imprima la palabra en el orden
en que se introdujo y en sentido inverso (por ejemplo: ‘pera’ ‘arep’). La
palabra podrá tener hasta 20 caracteres.
6.15. Escribir un programa en Pascal que visualice los elementos de un vector en el
orden inverso en que fueron introducidos.
6.16. Escribir un programa en Pascal que permita obtener un vector V2 como el
resultado de invertir el orden de los elementos de otro vector V1.
6.17. Escribir un programa en Pascal que permita invertir el contenido de un vector,
sin necesidad de usar un vector auxiliar. Por ejemplo:
Vector original: 28 35 12 43 56 77
Vector invertido: 77 56 43 12 35 28
6.18. Escribir un programa en Pascal que permita realizar la suma y el producto de
dos vectores.
 El usuario puede elegir el tamaño del vector (entre 2 y 10 valores)
 El usuario elige la operación a realizar.
6.19. Disponemos de un array unidimensional de MaxLista elementos de tipo entero.
Se desea diseñar un programa que lea los elementos del array y los inserte de forma
que todos los elementos del array permanezcan ordenados.
6.20. Disponemos de un array unidimensional de MaxLista elementos de tipo entero.
Se desea diseñar un programa que elimine un elemento del array situado en una
posición determinada, conservando el array en el mismo orden.
6.21. Dado un vector de 20 posiciones (números enteros), escribir un programa en Pascal
que muestre 3 opciones al usuario:
 Si el usuario introduce el carácter ‘1’, se deberá Introducir un elemento en el
final de la cola (primera posición libre del vector), comprobando antes que
existe una posición libre, sino mostrar un mensaje de aviso.
 Si el usuario introduce el carácter ‘2’, se deberá Sacar el elemento que se
encuentra en la primera posición (si hay, sino mostrar un mensaje de aviso),
desplazando luego los demás en la cola una posición hacia la izquierda.
 Si el usuario introduce el carácter ‘3’, se deberá Listar el contenido de la cola
del primero al último.

6.22. Dado un vector de 20 posiciones (números enteros), generar un programa en


Pascal con un funcionamiento similar al anterior, pero con las siguientes operaciones:

 Introducir un elemento en la última posición de la pila (primera posición libre


del vector). Comprobando antes que existe una posición libre, sino mostrar un
mensaje de aviso.

Página 67
 Sacar el elemento que se encuentra en la última posición (si hay, sino mostrar un
mensaje de aviso).
 Listar el contenido de la pila del primero al último.

6.23. Dado un vector de 20 posiciones (números enteros) generar un programa en


Pascal con un funcionamiento similar al anterior, pero con las siguientes operaciones:

o Introducir un elemento en la posición que le corresponda de la lista, de manera


que la misma se mantenga en orden creciente. (para lo cual desplaza los demás
elementos una posición hacia la derecha). Comprobando antes que existe una
posición libre, sino colocar un mensaje de aviso.
o Sacar de la lista el elemento que indica el usuario (si se encuentra, sino colocar
un mensaje de aviso).
o Listar en cualquier momento el contenido de la cola del primero al último.

7. ARREGLOS BIDIMENSIONALES

7.1. Rellenar una matriz identidad de 4 x 4 elementos.


7.2. Escribir el código que permita escribir el contenido de una tabla de dos dimensiones.
7.3. Leer y escribir una matriz de 3 x 3.
7.4. Escribir un programa que permita obtener el mayor valor almacenado en una tabla de
dos dimensiones.
7.5. Escribir un programa que permita obtener la suma de todos los valores almacenados en
una tabla de dos dimensiones.
7.6. Escribir un programa que permita sumar el número de elementos positivos y el de
negativos de una tabla de n filas x m columnas.
7.7. Supongamos que existen N ciudades en la red ferroviaria de un país, y que sus nombres
están almacenados en un vector llamado CIUDAD. Diseñar un programa que
permita visualizar, dado el nombre de una ciudad, los nombres de las ciudades
con lo que está enlazada.
7.8. Determinar si una matriz de tres filas y tres columnas es un cuadrado mágico. Se
considera un cuadrado mágico aquél en el cual las filas, columnas y diagonales
suman lo mismo.
7.9. Generar y visualizar la matriz traspuesta de una matriz de n filas x m columnas.
7.10. Diseñar un programa con el que, dadas dos matrices, se pueda comprobar si son
idénticas.
7.11. Diseñar un programa que obtenga la matriz suma de dos matrices.
7.12. Diseñar un programa que obtenga la matriz producto de dos matrices.
7.13. Una matriz A de m filas y n columnas es simétrica si
 m =n, y
 Ai,j = Aj,i, para 1 < i < m y 1 < j < n
Escribir un programa que determine si una matriz m x n es simétrica.

7.14. Una empresa de venta de productos por correo desea realizar una estadística de
las ventas realizadas de cada uno de los productos a lo largo del año. Distribuye un
total de 100 productos. Se desea conocer:
 El total de ventas de cada uno de los productos
 El total de ventas de cada mes
 El producto más vendido en cada mes
 El nombre, el mes y la cantidad del producto más vendido.

Página 68
Como resultado final, se desea realizar un listado con el siguiente formato:

Producto Enero Febrero Diciembre Total


Producto

Producto1

Producto2

Producto100

Total Mes

Producto
más vendido

Nombre del producto y mes del producto más vendido en cualquier


mes

7.15. Una fábrica de muebles tiene 16 representantes que viajan por todo el estado
ofreciendo sus productos. Para teras administrativas el estado está dividido en cinco
zonas: Norte, Sur, Este, Oeste y Centro. Mensualmente almacena sus datos y obtiene
distintas estadísticas sobre el comportamiento de sus representantes en cada zona. Se
desea hacer un programa que lea los datos de todos los representantes con sus ventas
en cada zona y calcule el total de ventas de una zona introducida por teclado, el total de
ventas de un vendedor introducido por teclado en cada una de las zonas y el total de
ventas de un día y para cada uno de los vendedores.

7.16. Diseñar un programa para triangular una matriz cuadrada y calcular su


deteminante. En las matrices cuadradas el valor del determinante coincide con el
producto de los elementos de la diagonal de la matriz cuadrada, multiplicando por -1
tantas veces como hayamos intercambiado filas al triangular la matriz.

8. FUNCIONES Y PROCEDIMIENTOS

1. Realizar una función que permita obtener el término n-ésimo de la serie de Fibonacci.
Cada término de la serie de Fibonacci se define como la suma de los dos anteriores
términos, para n> 1 y 1 para n = 1.

2. Implementar una función que permita devolver un valor entero, leído desde teclado,
comprendido entre dos límites que introduciremos como parámetro.

3. Diseñar una función que permita obtener el valor absoluto de un número.

Página 69
4. Realizar un procedimiento que obtenga la división entera y el resto de la misa,
utilizando sólo los operadores suma y resta.

5. Diseñar un procedimiento que permita convertir coordenadas polares (radio, ángulo) en


cartesianas (x, y). (x = radio*cos(ángulo), y = radio*sen(ángulo)).

6. Diseñar una función que permita obtener el factorial de un número entero positivo.

7. Diseñar una función que permita obtener el máximo común divisor de dos números
mediante el algoritmo de Euclides.

8. Realizar una función que determine si una fecha es válida.

9. Implementar una función que permita hallar xy donde x es un número real e y un


número entero.

10. Realizar un subprograma que calcule la suma de los divisores de n distintos de n.

11. Dos números son amigos si cada uno de ellos es igual a la suma de los divisores del
otro. Por ejemplo, 220 y 284 son amigos, pues
Suma divisores de 284 : 1+2+4+71+142 = 220

Suma divisores de 220: 1+2+4+5+10+11+20+22+44+55+110 = 284

Diseñar un procedimiento que muestre todas las parejas de números amigos menores o
iguales que un m dado.

12. Diseñar una función que permita calcular el número de combinaciones de m elementos
tomados de n en n.
13. Implementar una función que devuelva un número real a redondeado a b decimales.
14. Diseñar un procedimiento que obtenga la matriz suma de dos matrices.
15. Diseñar un procedimiento que obtenga la matriz producto de dos matrices.
16. Diseñar un subprograma que transforme un número entero introducido por teclado en
decimal a base 2 (el número en base 2 puede almacenarse en un array o un string).
17. Diseñar un programa que transforma un número introducido por teclado en notación
decimal a romana. El número será entero positivo y no excederá 3000.
18. Suponga que en Pascal sólo están implementadas las funciones de cadena copy, pos y
length; diseñar funciones que permitan:
a. Extraer los n primeros caracteres de una cadena
b. Extraer los n úlitmos caracteres de una cadena
c. Eliminar los espacios en blanco que haya al final de la cadena
d. Eliminar los espacios en blanco que haya al comienzo de la cadena

Página 70
e. Eliminar de una cadena los n caracteres que aparecen a partir de la posición p
f. Eliminar la primera aparición de una cadena dentro de otra
g. Insertar una cadena dentro de otra a partir de la posición p
h. Sustituir una cadena por otra
i. Contar el número de veces que aparece una cadena dentro de otra
j. Borrar todas las apariciones de una cadena dentro de otra
k. Sustituir todas las apariciones de una cadena dentro de otra, por una tercera.
19. Diseñar un programa que mediante una función permita cambiar un número n en base
10 a la base b, siendo b un número entre 2 y 20.
20. Diseñar una función que informe si una cadena es un palíndromo, es decir, si se lee
igual de izquierda a derecha que de derecha a izquierda
21. Implementar una función que convierta una cadena en mayúsculas y otra que convierta
una cadena en minúsculas.
22. Escribir una función para realizar una captura perfecta de un valor numérico entero
por teclado. Por captura perfecta se entiende que la función no debe permitir que el
usuario introduzca ningún otro carácter distinto de 0..9 (con la excepción del signo
negativo ‘-’, como primer carácter). (Usar las funciones, ya definidas en Pascal,
readkey y val(cadena,numero,error).)

Página 71
4.2.- PROBLEMAS
RESUELTOS
EN
PASCAL.

Página 72
SERIE DE PROBLEMAS RESUELTOS 1

1.- Escribir un programa en Pascal que sume dos números:


a = 4b = 3

1.1.- PROGRAM EJER01;


var a,b,c:INTEGER;
BEGIN
{Empezamos con lo básico, un programa que escribe la suma de 2
numeros en pantalla}
a:=4;
b:=3; {Se asigna un valor a las variables "a" y "b"}
c:=a+b;
WRITE (c); {Muestra en pantalla el valor de la suma}
END.

1.2.-PROGRAM EJER1B;
USES CRT;
VAR a,b,c:INTEGER;
BEGIN
ClrScr;
WRITELN ('Este programa suma dos numeros:');
WRITELN (' ');
WRITE ('Introduzca un numero: '); READLN (a);
WRITE ('Introduzca otro numero: ' ); READLN (b);
WRITELN (' ');
c:=a+b;
WRITE ('EL RESULTADO ES: ');
WRITE (c);
END.

2.- Escribir un programa en Pascal que sume, reste, multiplique y


divida dos números:

x = 10 y = 2

2.1 PROGRAM EJER02;


USES CRT; {Nos va a permitir limpiar la pantalla junto con
ClrScr}
VAR x,y:INTEGER;
VAR suma,rest,mult,divi:INTEGER;
BEGIN
x:=10;
y:=2;
suma:=x + y;
rest:=x - y;
mult:=x * y;
divi:=x div y;
ClrScr; {Limpia la pantalla}
WRITE ('SUMA:'); WRITELN (suma);
WRITE ('RESTA:'); WRITELN (rest);
WRITE ('MULTIPLICACION:'); WRITELN (mult);
WRITE ('DIVISION:'); WRITE (divi);

END.

Página 73
2.2. PROGRAM EJER2B;
USES CRT;
VAR x,y:REAL;
VAR suma,rest,mult:REAL;
VAR divi:REAL;

{suma, resta, multiplica y divide 2 numeros reales}

BEGIN
WRITELN ('Este programa suma,resta,multiplica y divide:');
WRITELN ('Escriba dos numeros reales');
WRITELN (' ');

READ (x);
READ (y);

suma:=x + y;
rest:=x - y;
mult:=x * y;
divi:=x / y;

ClrScr;

WRITE ('SUMA:'); WRITELN (suma:3:0);


WRITE ('RESTA:'); WRITELN (rest:3:0);
WRITE ('MULTIPLICACION:'); WRITELN (mult:3:0);
WRITE ('DIVISION:'); WRITE (divi:5:2);
END.
3.- Escribir un programa en Pascal que calcule el área de un
rectángulo:

lado1 = 3 lado2 = 4
área del rectángulo=lado1 * lado2

PROGRAM EJER03;
USES CRT;
VAR lado1,lado2:INTEGER;
VAR area:INTEGER;

BEGIN

{Este programa nos va a servir para calcular el area de un


rectángulo}

lado1:=3;
lado2:=4;
{Damos valores para las variables}

area:=lado1*lado2; {Calculamos el area}

ClrScr;

WRITE ('AREA DEL RECTANGULO: '); WRITE (area); {Lo


mostramos
en pantalla}

END.

Página 74
PROGRAM EJER3B;
USES CRT;
VAR lado1,lado2:REAL;
VAR area:REAL;

BEGIN
{Este programa calcula el area de un rectangulo}

ClrScr;

WRITELN ('Escriba los lados del rectangulo');


READ (lado1);
READ (lado2);
WRITELN (' ');

area:=lado1*lado2;

WRITE ('AREA DEL RECTANGULO:'); WRITE (area:5:2);

END.

4.- Escribir un programa en Pascal que calcule el área de un


triángulo: base = 7 altura = 4.

PROGRAM EJER04;
USES CRT;
VAR base,altura:REAL;
VAR area:REAL;
BEGIN
base:=7;
altura:=4;

area:=(base * altura) / 2;

ClrScr;
WRITE ('AREA DEL TRIANGULO: '); WRITE (area:5:2);
{:5:2 sirve para dar el formato de salida al numero, 5
posiciones y 2 decimales}
END.

PROGRAM EJER4B;
USES CRT;
VAR base,altura:REAL;
VAR area:REAL;
BEGIN
{Este programa sirve para calcular el area de un triangulo}

ClrScr;
WRITELN ('PARA CALCULAR EL AREA DE UN TRIANGULO:');
WRITELN (' ');
WRITE ('ESCRIBE LA BASE: '); READLN (base);
WRITE ('ESCRIBE LA ALTURA: '); READLN (altura);
WRITELN (' ');

area:=(base * altura) / 2;
WRITE ('EL AREA DEL TRIANGULO ES: '); WRITE (area:5:2);
END.

Página 75
5.-Escribir un programa que calcule la longitud y el área de una
circunferencia: radio = 4.

PROGRAM EJER05;
USES CRT;
VAR radio:REAL;
VAR longitud,area:REAL;
BEGIN
radio:=4;
longitud:=2*3.1416*radio;
area:=3.1416*radio*radio;
ClrScr;
WRITE ('LONGITUD DE LA CIRCUNFERENCIA:'); WRITELN
(longitud:5:2);
WRITE ('AREA DE LA CIRCUNFERENCIA:'); WRITE
(area:5:2);

END.

PROGRAM EJER5B;
USES CRT;
VAR radio:REAL;
VAR longitud,area:REAL;

BEGIN
{Este programa calcula la longitud y el area de una
circunferencia}

ClrScr;

WRITELN ('LONGITUD Y AREA DE UNA CIRCUNFERENCIA');


WRITELN (' ');
WRITE ('Escriba el radio: '); READLN (radio);
WRITELN (' ');

longitud:=2*3.1416*radio;

area:=3.1416*radio*radio;

WRITE ('LONGITUD DE LA CIRCUNFERENCIA: '); WRITELN


(longitud:5:2);
WRITE ('AREA DE LA CIRCUNFERENCIA: '); WRITE
(area:5:2);

END.

Página 76
6.-Escribir un programa en Pascal que calcule la velocidad de un
proyectil que recorre 2 Km en 5 minutos. Expresar el resultado en
metros/segundo. Velocidad = espacio/tiempo

PROGRAM EJER06;
USES CRT;
VAR espacio,tiempo:REAL;
VAR velocidad:REAL;

BEGIN
espacio:=2;
tiempo:=5;

velocidad:=(espacio*1000)/(tiempo*60);

ClrScr;

WRITE ('VELOCIDAD DEL PROYECTIL:');


WRITE (velocidad:5:2); WRITE ('m/s');
END.

PROGRAM EJER6B;
USES CRT;
VAR espacio,tiempo,espacio2,tiempo2:REAL;
VAR velocidad,velocidad2:REAL;
BEGIN {Este programa calcula la velocidad de un cuerpo}

ClrScr;
WRITE ('Para calcular la velocidad debe escribirlo en
unidades ');
WRITE ('del sistema internacional');
WRITELN (' ');
WRITE ('Escriba el espacio recorrido: '); READLN
(espacio);
WRITE ('Escriba el tiempo transcurrido: '); READLN
(tiempo);
WRITELN (' ');
velocidad:=(espacio)/(tiempo);
WRITE ('VELOCIDAD DEL PROYECTIL: ');
WRITE (velocidad:5:2); WRITELN (' m/s');
WRITELN (' ');
WRITELN ('Si lo desea en Km/h introduzca los datos: ');
WRITELN (' ');
WRITE ('Escriba el espacio recorrido: '); READLN
(espacio2);
WRITE ('Escriba el tiempo transcurrido: '); READLN
(tiempo2);
WRITELN (' ');
velocidad2:=(espacio2)/(tiempo2);
WRITE (velocidad2:5:2); WRITE (' Km/h ');
END.

Página 77
7.-Escribir un programa en Pascal que calcule el volumen de una
esfera:radio = 3 volumen de la esfera = 4/3 * PI * radio3

PROGRAM EJER07;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
radio:=3;
volumen:=(4/3)*3.1416*(radio*radio*radio);

ClrScr;

WRITE ('VOLUMEN DE LA ESFERA:'); WRITE(volumen);


END.

PROGRAM EJER7B;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
{Este programa calcula el volumen de una esfera}

ClrScr;

WRITELN ('PARA CALCULAR EL VOLUMEN DE LA ESFERA ESCRIBA EL


RADIO: ');
READLN (radio);

volumen:=(4/3)*3.1416*(radio*radio*radio);

WRITE ('VOLUMEN DE LA ESFERA: ');


WRITE(volumen:5:2);
END.

8.-Escribir un programa en Pascal que evalúe la siguiente


expresión: (a+7*c)/(b+2-a)+2*b a = 3,b = 6,c = 4

PROGRAM EJER08;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
a:=3;
b:=6;
c:=4;
resultado:=(a+7*c)/(b+2-a)+2*b;
ClrScr;
WRITE ('RESULTADO:'); WRITE (resultado:5);
END.

Página 78
PROGRAM EJER8B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;
BEGIN
{Este programa calcula una expresion algebraica}
ClrScr;
WRITELN ('Este programa sirve para calcular la siguiente
expresion:');
WRITELN ('(a+7*c)/(b+2-a)+2*b');
WRITELN (' ');
WRITE ('Introduzca a: '); READLN (a);
WRITE ('Introduzca b: '); READLN (b);
WRITE ('Introduzca c: '); READLN (c);
resultado:=(a+7*c)/(b+2-a)+2*b;
WRITELN (' ');
WRITE ('RESULTADO: '); WRITE (resultado:5:2);

END.

9.- Escribir un programa en Pascal que evalúe la siguiente


expresión: (a+5) * 3 / 2 * b - b a = 3,b = 6

PROGRAM EJER09;
USES CRT;
VAR a,b:REAL;
VAR resultado:REAL;

BEGIN
a:=3;
b:=6;
resultado:=((a+5)*3) / (2*b-b);

ClrScr;
WRITE ('RESULTADO: '); WRITE(resultado:5:2);
END.

PROGRAM EJER9B;
USES CRT;
VAR a,b:REAL;
VAR resultado:REAL;

BEGIN {Este programa calcula el resultado de una expresion


algebraica}

ClrScr;

WRITE ('PARA CALCULAR LA SIGUIENTE EXPRESION: ');


WRITELN ('((a+5)*3) / (2*b-b)');
WRITELN (' ');
WRITE ('Escriba a: '); READ (a);
WRITE ('Escriba b: '); READ (b);
WRITELN (' ');
resultado:=((a+5)*3) / (2*b-b);
WRITE ('RESULTADO: '); WRITE(resultado:5:2);

END.

Página 79
10.- Escribir un programa en Pascal que evalúe la siguiente
expresión: (-b + raízcuadrada(b2-4*a*c)/(2*a);es la solución
positiva de una ecuación de 2º grado.

PROGRAM EJER10;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;

BEGIN
a:=6;
b:=6;
c:=1;

resultado:=(-b+sqrt(sqr (b) - 4*a*c))/(2*a);

ClrScr;

WRITE ('RESULTADO:'); WRITE(resultado:5:2);

END.

PROGRAM EJER10B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado:REAL;

BEGIN
{Calcula la incognita positiva de una ecuacion de 2º grado}

ClrScr;

WRITE ('Para calcular la incognita positiva de una


ecuacion');
WRITE (' de segundo grado escriba todas las variables:');
WRITELN (' ');
WRITELN (' ');

WRITE ('Escriba a: '); READLN (a);


WRITE ('Escriba b; '); READLN (b);
WRITE ('Escriba c; '); READLN (c);
WRITELN (' ');

resultado:=(-b +sqrt(sqr (b) - 4*a*c))/(2*a);

WRITE ('RESULTADO: '); WRITE(resultado:5:2);

END.

Página 80
SERIE DE PROBLEMAS RESUELTOS 2

1.-Escribir un programa en Pascal que calcule el área y el volumen


de un cilindro:
A = (2 * (PI * r2)) + ((2 * PI * r) * h)
V = (PI * r2) * h

PROGRAM EJER11;
USES CRT;
VAR radio,altura:REAL;
VAR area,volumen:REAL;

BEGIN
radio:=3;
altura:=6;

area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *


radio) * altura);
volumen:= (3.1416 * radio * radio) * altura;

{podriamos cambiar "radio*radio" por "sqr(radio)" para hacer el


cuadrado del radio}

ClrScr;

WRITE ('AREA DEL CILINDRO:'); WRITE (area); WRITELN ('


m2');
WRITE ('VOLUMEN DEL CILINDRO:'); WRITE (volumen); WRITE ('
m3');

END.

PROGRAM EJER11B;
USES CRT;
VAR radio,altura:REAL;
VAR area,volumen:REAL;
BEGIN
{Calcula el area y el volumen de un cilindro}

ClrScr;
WRITELN ('CALCULA EL AREA Y VOLUMEN DE UN CILINDRO');
WRITELN (' ');
WRITE ('Escriba el radio: '); READLN (radio);
WRITE ('Escriba la altura: '); READLN (altura);
WRITELN (' ');
area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *
radio) * altura);
volumen:= (3.1416 * radio * radio) * altura;
WRITE ('AREA DEL CILINDRO: '); WRITE (area:5:2);
WRITELN
(' m2');
WRITE ('VOLUMEN DEL CILINDRO: '); WRITE (volumen:5:2);
WRITE
(' m3');
END.

Página 81
PROGRAM EJER11;
USES CRT;
VAR r,h:REAL;
VAR a,v:REAL;
BEGIN

{AREA Y VOLUMEN DE UN CILINDRO}

ClrScr;

WRITE('RADIO DEL CILINDRO: '); READLN(r);


WRITE('ALTURA DEL CILINDRO: '); READLN(h);

a:=(2*(3.1416*sqr(r))) + ((2*3.1416*r)*h);
v:=(3.1416*sqr(2))*h;
ClrScr;
WRITE('AREA DEL CILINDRO: '); WRITELN(a:5:2);
WRITE('VOLUMEN DEL CILINDRO: '); WRITELN(v:5:2);
END.

2.- Escribir un programa en Pascal que calcule el área y el volumen


de un hexaedro. A = (l*l) * 6 ; V = l3

PROGRAM EJER12;
USES CRT;
VAR lado:REAL;
VAR area,volumen:REAL;
BEGIN
lado:=4;
area:= (lado * lado) * 6;
volumen:= sqr(lado) * lado;
ClrScr;
WRITE ('AREA DEL HEXAEDRO:'); WRITE (area); WRITELN
(' m2');
WRITE ('VOLUMEN DEL HEXAEDRO:'); WRITE (volumen); WRITE ('
m3');
END.

PROGRAM EJER12B;
USES CRT;
VAR lado:REAL;
VAR area,volumen:REAL;
BEGIN
ClrScr;
WRITE ('INTRODUCE EL LADO DEL HEXAEDRO: ');
READLN (lado);
WRITELN (' ');
area:= (lado * lado) * 6;
volumen:= sqr(lado) * lado;
WRITE ('AREA DEL HEXAEDRO: '); WRITE (area:5:2);
WRITELN (' m2');
WRITE ('VOLUMEN DEL HEXAEDRO: '); WRITE (volumen:5:2);
WRITE
(' m3');
END.

Página 82
3.- Escribir un programa en Pascal que calcule el área y el volumen
de un prisma
A = (2 *(l1 * l2)) + (2 * (l1 * l3)) + (2*(l2 * l3))
V = l1 * l2 * l3

PROGRAM EJER13;
USES CRT;
VAR l1,l2,l3:REAL;
VAR area,volumen:REAL;

BEGIN
l1:=3;
l2:=6;
l3:=4;

area:=2 * (l1 * l2)+(2 * (l1 * l3)) + (2* (l2 * l3));


volumen:= l1 * l2 * l3;

ClrScr;

WRITE ('AREA DEL PRISMA:'); WRITELN(area);


WRITE ('VOLUMEN DEL PRISMA:'); WRITE (volumen);

END.

PROGRAM EJER13B;
USES CRT;
VAR l1,l2,l3:REAL;
VAR area,volumen:REAL;

BEGIN
{Calcula el area y volumen de un prisma}

ClrScr;

WRITELN ('PARA CALCULAR EL AREA Y EL VOLUMEN DEL PRISMA,


ESCRIBA: ');
WRITELN (' ');
WRITE ('Lado1: '); READLN (l1);
WRITE ('Lado2: '); READLN (l2);
WRITE ('Lado3: '); READLN (l3);
WRITELN (' ');

area:=2 * (l1 * l2)+(2 * (l1 * l3)) + (2* (l2 * l3));


volumen:= l1 * l2 * l3;

WRITE ('AREA DEL PRISMA: '); WRITELN (area:5:2);


WRITE ('VOLUMEN DEL PRISMA: '); WRITE (volumen:5:2);

END.

Página 83
4.- Escribir un programa en Pascal que calcule el área y el volumen
de un tetraedro
A = a2 * raízcuadrada(3)
V = (a3/12) * raízcuadrada (2)

PROGRAM EJER14;
USES CRT;
VAR arista:REAL;
VAR area, volumen:REAL;
BEGIN
arista:=5;
area:= sqr(arista) * sqrt(3);
volumen:= ((sqr(arista) * arista) / 12) * sqrt(2);
WRITE ('AREA DEL TETRAEDRO: '); WRITELN (area);
WRITE ('VOLUMEN DEL TETRAEDRO: '); WRITE (volumen);
END.

PROGRAM EJER14B;
USES CRT;
VAR arista:REAL;
VAR area, volumen:REAL;
BEGIN
{Calcula el area y el volumen de un octaedro}
WRITELN ('SI DESEA CALCULAR EL AREA Y EL VOLUMEN DE UN
TETRAEDRO: ');
WRITELN (' ');
WRITE ('INTRODUZCA EL VALOR DE SU ARISTA: '); READLN
(arista);
WRITELN (' ');
area:= sqr(arista) * sqrt(3);
volumen:= ((sqr(arista) * arista) / 12) * sqrt(2);
WRITE ('AREA DEL TETRAEDRO: '); WRITELN (area:5:2);
WRITE ('VOLUMEN DEL TETRAEDRO: '); WRITE (volumen:5:2);
END.

5.- Escribir un programa en Pascal que calcule el área y el volumen


de un octaedro: A = 2 * a2 * raízcuadrada(3);
V=(a3/3)*raízcuadrada(2)

PROGRAM EJER15;
USES CRT;
VAR arista:REAL;
VAR area, volumen:REAL;

BEGIN
arista:=4;
area:= 2 * sqr(arista) * sqrt(3);
volumen:= ((sqr(arista) * arista) / 3) * sqrt(2);
WRITE ('AREA DEL OCTAEDRO: '); WRITELN(area);
WRITE ('VOLUMEN DEL OCTAEDRO: '); WRITE(volumen);

END.

Página 84
PROGRAM EJER15B;
USES CRT;
VAR arista:REAL;
VAR area, volumen:REAL;

BEGIN
{Sirve para calcular el area y el volumen de un tetraedro}

WRITELN ('PARA CALCULAR EL AREA Y VOLUMEN DE UN TETRAEDRO:


');
WRITE ('ESCRIBA EL VALOR DE LA ARISTA: '); READLN
(arista);
WRITELN (' ');

area:= 2 * sqr(arista) * sqrt(3);


volumen:= ((sqr(arista) * arista) / 3) * sqrt(2);

WRITE ('AREA DEL OCTAEDRO: '); WRITELN (area:5:2);


WRITE ('VOLUMEN DEL OCTAEDRO: '); WRITE (volumen:5:2);

END.

6.- Escribir un programa en Pascal que calcule el área y el volumen


de un cono A = (PI * r * l)+ (PI * r2); V = (PI * r2 * h)/3

PROGRAM EJER16;
USES CRT;
VAR radio,lado,altura:REAL;
VAR area,volumen:REAL;
BEGIN
radio:=6; lado:=3; altura:=8;
area:= (3.1416 * radio * lado) + (3.1416 * sqr(radio));
volumen:= (3.1416 * sqr(radio) * altura) / 3;
WRITE ('AREA DEL CONO: '); WRITELN (area);
WRITE ('VOLUMEN DEL CONO: '); WRITE (volumen);
END.

PROGRAM EJER16B;
USES CRT;
VAR radio,lado,altura:REAL;
VAR area,volumen:REAL;
BEGIN
{Se utiliza para calcular el area y volumen de un cono}
WRITELN ('Para calcular el area y volumen de un cono: ');
WRITELN (' ');
WRITE ('Escriba el valor del radio: ');READLN (radio);
WRITE ('Escriba el valor del lado: ');READLN (lado);
WRITE ('Escriba el valor de la altura: ');READLN (altura);
WRITELN (' ');
area:= (3.1416 * radio * lado) + (3.1416 * sqr(radio));
volumen:= (3.1416 * sqr(radio) * altura) / 3;
WRITE ('AREA DEL CONO: ');WRITELN (area:5:2);
WRITE ('VOLUMEN DEL CONO: ');WRITE (volumen:5:2);

END.

Página 85
7.- Escribir un programa en Pascal que calcule el volumen de un
elipsoide: V = (4/3) * PI * a * b *c

PROGRAM EJER17;
USES CRT;
VAR a,b,c:REAL;
VAR volumen:REAL;
BEGIN
a:=3;b:=5;c:=4;
volumen:= (4/3) * 3.1416 * a * b * c;
WRITE ('VOLUMEN DEL ELIPSOIDE:'); WRITE (volumen);
END.

PROGRAM EJER17B;
USES CRT;
VAR a,b,c:REAL;
VAR volumen:REAL;
BEGIN {Calcula el volumen de un elipsoide}
ClrScr;
WRITELN('PARA CALCULAR EL VOLUMEN DEL ELIPSOIDE ESCRIBA:');
WRITELN (' ');
WRITE ('A: '); READLN (a);
WRITE ('B: '); READLN (b);
WRITE ('C: '); READLN (c);
volumen:= (4/3) * 3.1416 * a * b * c;
WRITE ('VOLUMEN DEL ELIPSOIDE: ');WRITE (volumen:5:2);

END.

8.- Escribir un programa en Pascal que calcule las raíces de una


ecuación de 2º grado

PROGRAM EJER18;
USES CRT;
VAR a,b,c:REAL;
VAR x1,x2:REAL;

BEGIN

a:=6;
b:=6;
c:=1;

x1:= (-b + sqrt(sqr(b) - (4 * a * c))) / 2 * a;


x2:= (-b - sqrt(sqr(b) - (4 * a * c))) / 2 * a;

WRITE ('SOLUCION 1:'); WRITELN (x1);


WRITE ('SOLUCION 2:'); WRITE (x2);

END.

Página 86
PROGRAM EJER18B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado1,resultado2:REAL;

BEGIN

{Calcula ecuaciones de segundo grado}

ClrScr;

WRITE ('ESTE PROGRAMA SIRVE PARA CALCULAR ECUACIONES ');


WRITELN ('DE SEGUNDO GRADO');
WRITELN (' ');
WRITELN ('Introduzca: a, b y c: ');
WRITELN (' ');
READLN (a);
READLN (b);
READLN (c);
resultado1:=(-b + sqrt(sqr(b) - 4*a*c)) / (2*a);
resultado2:=(-b - sqrt(sqr(b) - 4*a*c)) / (2*a);
WRITELN ('RESULTADO DE LA EXPRESION: ');
WRITE ('VALOR 1: '); WRITELN (resultado1:5:2);
WRITE ('VALOR 2; '); WRITE (resultado2:5:2);
END.

9.- Escribir un programa en Pascal que calcule el área y el volumen


de un cilindro: radio = 3; altura = 4.

PROGRAM EJER19;
USES CRT;
VAR radio, altura:REAL;
VAR area, volumen:REAL;
BEGIN
radio:=3;altura:=4;
area:= 2 * (3.1416 * sqr(radio)) + ((2 * 3.1416 * radio)
* altura);
volumen:= (3.1416 * sqr(radio)) * altura;
ClrScr;
WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2);
WRITE ('EL VOLUMEN ES: '); WRITE (volumen:6:2);
END.

PROGRAM EJER19B;
USES CRT;
VAR radio, altura:REAL;
VAR area, volumen,pi:REAL;
BEGIN
ClrScr;pi:=3.1416;
WRITELN ('PARA CALCULAR EL AREA Y VOLUMEN DE UN CILINDRO: ');
WRITELN (' '); WRITE ('ESCRIBA EL RADIO- ');
READLN (radio);WRITE ('ESCRIBA LA ALTURA- ');
READLN (altura);WRITELN (' ');
area:= 2*(pi*sqr(radio))+((2*3.1416*radio)* altura);
volumen:= (pi* sqr(radio))*altura;
WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2);
WRITE ('EL VOLUMEN ES: ');WRITE (volumen:6:2);
END.

Página 87
10.- Escribir un programa en Pascal que calcule la hipotenusa de un
triángulo rectángulo : cateto 1 = 5; cateto 2 = 5

PROGRAM EJER20;
USES CRT;

VAR cateto1,cateto2:REAL;
VAR hipotenusa:REAL;
BEGIN
cateto1:=5; cateto2:=5;
hipotenusa:= sqrt(sqr(cateto1) + sqr(cateto2));
ClrScr;
WRITE ('HIPOTENUSA DEL TRIANGULO: ');
WRITE (hipotenusa:5:2); WRITE (' cm');
END.

PROGRAM EJER20B;
USES CRT;
VAR cateto1,cateto2:REAL;
VAR hipotenusa:REAL;
BEGIN
ClrScr;
WRITE ('PARA CALCULAR LA HIPOTENUSA DEL TRIANGULO ');
WRITELN ('ESCRIBA LOS CATETOS: ');
WRITELN (' ');
WRITE ('Cateto1: '); READLN (cateto1);
WRITE ('Cateto2: '); READLN (cateto2);
WRITELN (' ');
hipotenusa:= sqrt(sqr(cateto1) + sqr(cateto2));
WRITE ('HIPOTENUSA DEL TRIANGULO: ');
WRITE (hipotenusa:5:2);
END.

PROGRAM EJER20;
USES CRT;
VAR c1,c2,h:REAL;

BEGIN
ClrScr;

WRITE('Introduzca cateto_1: '); READLN (c1);


WRITE('Introduzca cateto_2: '); READLN (c2);

h:=sqrt(sqr(c1)+sqr(c2));

WRITE('Cateto_1 ------> '); WRITELN (c1:5:2);


WRITE('Cateto_2 ------> '); WRITELN (c2:5:2);
WRITE('Hipotenusa ----> '); WRITELN (h:5:2);
END.

Página 88
SERIE DE PROBLEMAS RESUELTOS 3

Escribir un programa en Pascal que calcula el equivalente en grados


Fahrenheit o Celsius de las siguientes temperaturas.
Temperatura 1 = 32º Fahrenheit; Temperatura 2 = 10 º Celsius
{Regla de 3: Celsius / 5 = (Fahrenheit – 32) / 9}

PROGRAM EJER21;
USES CRT;
VAR T1,T2:REAL;
VAR T1C,T2F:REAL;
BEGIN
T1:=32;T2:=10;T1C:=T1 - 32;T2F:=T2 + 32;
ClrScr;
WRITE ('TEMPERATURA EQUIVALENTE: ');
WRITE (T1:3:0); WRITE ('º Fahrenheit - ');
WRITE (T1C:3:0); WRITELN ('º Celsius');
WRITE ('TEMPERATURA EQUIVALENTE: ');
WRITE (T2:3:0); WRITE ('º Celsius - ');
WRITE (T2F:3:0); WRITE ('º Fahrenheit');
END.

PROGRAM EJER21B;
USES CRT;
VAR Fahrenheit, Celsius:REAL;
VAR T1C,T2F:REAL;
VAR respuesta:CHAR;
BEGIN
ClrScr;
REPEAT
BEGIN
WRITE ('¨DESEA PASARLO A FAHRENHEIT O CELSIUS? F/C: ');
READLN (respuesta); WRITELN ('');
END;
UNTIL (respuesta='C') OR (respuesta='F') OR
(respuesta='c') OR (respuesta='f');
IF UPCASE(respuesta)='F' THEN
BEGIN
WRITELN ('Introduzca los grados para pasar a Fahrenheit: ');
WRITE ('Celsius: '); READLN (Celsius);
Fahrenheit:= ((9 * Celsius) / 5) + 32;
WRITE (Fahrenheit:5:2,' grados Fahrenheit.');
WRITELN (' ');
END

ELSE IF UPCASE (respuesta)='C' THEN


BEGIN
WRITELN ('Introduzca los grados para pasar a Celsius: ');
WRITE ('Fahrenheit: '); READLN (Fahrenheit);
Celsius:= ((Fahrenheit - 32) / 9) * 5;
WRITE (Celsius:5:2,' grados Celsius.');
END;
END.

Página 89
PROGRAM EJER21;
USES CRT;
VAR t_C,t_F:REAL;
BEGIN

ClrScr;

WRITE('Introduzca temperatura: (ºCelsius): ');


READLN(t_C);

t_F:=((t_C*9)/5)+32;

ClrScr;

WRITE(t_C:5:2); WRITE(' ºCelsius equivalen a ');


WRITE(t_F:5:2); WRITE(' ºFahrenheit');
END.

Escribir un programa en Pascal que calcule el número de


horas, minutos y segundos que hay en 3700 segundos.

PROGRAM EJER22;
USES CRT;
VAR horas, minutos, segundos:INTEGER;
BEGIN
horas:= 3700 div 3600;
minutos:= (3700 mod 3600) div 60;
segundos:= (3700 mod 3600) - (minutos * 60);
ClrScr;
WRITELN ('EN 3700 SEGUNDOS HAY: ');
WRITE (horas,' hora',' y ',minutos,' minutos ', segundos,
' segundos');
END.

PROGRAM EJER22B;
USES CRT;
VAR horas, minutos, segundos:INTEGER;
VAR cantidad:INTEGER;
BEGIN
ClrScr;
WRITE ('Escriba los segundos para transformarlo a horas,');
WRITELN('minutos y segundos');READLN (cantidad);WRITELN;
horas:= cantidad div 3600;
minutos:= (cantidad mod 3600) div 60;
segundos:= (cantidad mod 3600) - (minutos * 60);
WRITELN ('EN ' ,cantidad, ' SEGUNDOS HAY: ');
WRITE (horas,' horas ',minutos,' minutos ',segundos,'
segundos');

END.

Página 90
PROGRAM EJER22;
USES CRT;
VAR h,m,s1,s2:INTEGER;
BEGIN

ClrScr;

WRITE('Introduzca segundos: '); READLN(s1);

h:=s1 div 3600;


s2:=s1 mod 3600;

m:=s2 div 60;


s2:=s2 mod 60;

ClrScr;

WRITE(s1); WRITE(' segundos son -----> ');


WRITE(h); WRITE(' horas ');
WRITE(m); WRITE(' minutos ');
WRITE(s2); WRITE( 'segundos ');
END.

Escribir un programa en Pascal que calcule el capital producido por


un capital de 1.000.000 de cordobas, al cabo de un año depositado a
un interés del 2%.

PROGRAM EJER23;
USES CRT;7

VAR capital,tiempo,interes:REAL;
VAR capitalproducido:REAL;
BEGIN
capital:=1000000;tiempo:=1;interes:=2;
capitalproducido:= capital * 0.02;
ClrScr;
WRITE ('En un año se producira un capital de ');
WRITE (capitalproducido:5:2); WRITE (' cordobas');
END.

PROGRAM EJER23B;
USES CRT;
VAR capital,tiempo,interes:REAL;
VAR capitalproducido:REAL;
BEGIN
ClrScr;
WRITELN ('PARA CALCULAR EL CAPITAL PRODUCIDO INTRODUZCA ');
WRITELN ('');
WRITE ('Capital: '); READLN (capital);
WRITE ('Tiempo: '); READLN (tiempo);
WRITE ('Interes:'); READLN (interes);
WRITELN ('');
capitalproducido:= (capital * (interes/100) * tiempo);
WRITE ('En estos años se producira un capital de ');
WRITE (capitalproducido:5:2); WRITE (' cordobas.');
END.

Página 91
PROGRAM EJER23;
USES CRT;
VAR capital,interes,intereses:REAL;
BEGIN

ClrScr;

WRITE('Capital: '); READLN(capital);


WRITE('Intefes: '); READLN(interes);

intereses:=capital*(interes/100);

ClrScr;

WRITE('Capital: '); WRITELN(capital:5:2);


WRITE('Interes: '); WRITELN(interes:5:2);
WRITE('Intereses: '); WRITELN(intereses:5:2);
END.

Escribir un programa en Pascal para calcular:


f(x)=(sen x * cos x)/(tan x)
si x = 90º, de previo este valor debe convertirse en radianes..

PROGRAM EJER24B;
USES CRT;
VAR resultado, resultado2, x:REAL;
BEGIN
WRITE('PARA CALCULAR f(x):= (sin(x)*cos(x))/tan(x)');
WRITELN (' INTRODUZCA EL VALOR DE X EN RADIANES: ');
READLN (x);WRITELN ('');
resultado:=(sin(x) * cos(x)) / (sin(x) / cos(x));
WRITE ('f(x):=(sinx * cosx /tgx) es igual a: ');
WRITE (resultado:5:2);
END.

PROGRAM EJER24;
USES CRT;
VAR angulo:REAL;
VAR val_exp:REAL;
BEGIN
ClrScr;
WRITE('introduzca el valor del x(grados): ');
READLN (angulo);
angulo:=angulo*(6.28/360);
WRITE ('f(x):=(sinx * cosx /tgx) es igual a:=',
(sin(angulo)*cos(angulo) )/( (sin(angulo)/cos(angulo))):5:2);
END.

Página 92
Escribir un programa en Pascal que calcule el equivalente en pies
de una longitud de 10 metros.
1 metro ------------- 39.27 pulgadas
12 pulgadas -------- 1 pie

PROGRAM EJER25;
USES CRT;

VAR metros,pulgadas,pies:REAL;
BEGIN
metros:=10;
pulgadas:=metros * 39.27;
pies:=((1 * metros) * pulgadas) / (12 * metros);
ClrScr;
WRITE ('El equivalente en pies de 10 m es : ');
WRITE (pies:3:2); WRITE (' pies');
END.

PROGRAM EJER25B;
USES CRT;
VAR metros,pies:REAL;
BEGIN
{Para calcular la equivalencia entre pies y metros}
ClrScr;
WRITELN ('INTRODUZCA LOS METROS PARA PASARLOS A PIES: ');
WRITELN (' ');
WRITE ('Metros: '); READLN (metros);
pies:= metros / (12/39.27);
{ 1 pie = 0.3048 metros}
{ 1 pulgada = 25.4 mm}
WRITE ('El equivalente en pies es de: ');
WRITE (pies:3:2); WRITE (' pies');

END.

PROGRAM EJER25;
USES CRT;
VAR longitud:REAL;
BEGIN

ClrScr;

WRITE('Longitud (metros): '); READLN(longitud);

WRITE((longitud*39.27)/12:5:2); WRITE( 'pies');


END.

Página 93
Escribir un programa en Pascal que calcule el área de un rectángulo
a partir de sus coordenadas:
x1 = 10 x2 = 20
y1 = 10 y2 = 20

PROGRAM EJER26;
USES CRT;
VAR lado1,lado2:REAL;
VAR area:REAL;
BEGIN
lado1:=10;lado2:=10;
area:= lado1 * lado2;
ClrScr;
WRITE ('El area del rectangulo es de: '); WRITE (area:5:2);
END.

PROGRAM EJER26B;
USES CRT;

VAR x1,x2,y1,y2:REAL;
VAR area:REAL;

BEGIN
{Sirve para calcular el area de un rectangulo a partir de
coordenadas}

WRITELN ('Para calcular el area del rectangulo ');


WRITELN ('introduzca el valor de las coordenadas');
WRITELN (' ');
WRITE ('x1: '); READLN (x1);
WRITE ('y1: '); READLN (y1);
WRITE ('x2: '); READLN (x2);
WRITE ('y2: '); READLN (y2);
WRITELN (' ');

area:= (x2 - x1) * (y2 - y1);


{Se restan las coordenadas de X e Y para sacar los lados y
luego se multiplican}

WRITE ('El area del rectangulo es de: '); WRITE (area:5:2);

END.

PROGRAM EJER26;
USES CRT;
VAR x1,y1,x2,y2:REAL;
BEGIN
ClrScr;
WRITE('Introduaca coordenada x1: '); READLN(x1);
WRITE('Introduzca coordenada y1: '); READLN(y1);
WRITE('Introduzca coordenada x2: '); READLN(x2);
WRITE('Introduzca coordenada y2: '); READLN(y2);
WRITE('Area del resctangulo: '); WRITE((x2-x1)*(y2-y1):5:2);
END.

Página 94
Un automóvil se mueve, partiendo del reposo, con una aceleración
constante de 8 m/s2. Escribir un programa en Pascal que calcule:
a) La velocidad instantánea al cabo de 5 segundos.
b) La velocidad media durante los primeros 5 segundos del recorrido.
velocidad instantánea = velocidad inicial + aceleración*tiempo;
velocidad media = (velocidad inicial + velocidad final)/2;

PROGRAM EJER27;
USES CRT;

VAR velocidad0,aceleracion,tiempo:REAL;
VAR velocidad5,velocmedia5:REAL;
BEGIN
velocidad0:=0;
aceleracion:=8;
tiempo:=5;
velocidad5:=velocidad0 + (aceleracion * tiempo);
velocmedia5:= (velocidad0 + velocidad5) / 2;
ClrScr;
WRITE ('LA VELOCIDAD AL CABO DE 5 s ES DE: ');
WRITE (velocidad5:2:0);
WRITELN (' m/s');

END.

PROGRAM EJER27B;
USES CRT;
VAR velocidad0,aceleracion,tiempo,velocidadfinal:REAL;
VAR vinstantanea,vmedia:REAL;
BEGIN
ClrScr;
WRITE ('ESCRIBA EL VALOR DE LA Vo,t,A en unidadel del SI');
WRITE (' PARA CALCULAR LA VELOCIDAD INSTANTANEA');
WRITELN (' '); WRITELN (' ');
WRITE ('Velocidad inicial: '); READLN (velocidad0);
WRITE ('Aceleracion: '); READLN (aceleracion);
WRITE ('Tiempo: '); READLN (tiempo);
WRITELN ('');
vinstantanea:=velocidad0 + (aceleracion * tiempo);
IF vinstantanea >0 THEN WRITE('LA VELOCIDAD INSTANTANEA ES:',
vinstantanea:5:2,' m/s')
ELSE WRITE ('EL AUTOMOVIL ESTA PARADO.');
WRITELN ('');
IF vinstantanea <0 THEN WRITE ('Vehiculo esta parado');
IF vinstantanea > 0 THEN
WRITE ('Si desea saber la velocidad media introduzca la
velocidad final: ');
READLN (velocidadfinal); WRITE ('');
WRITELN ('');
vmedia:= (velocidad0 + velocidadfinal) / 2;
WRITE ('LA VELOCIDAD MEDIA ES DE: ',vmedia:5:2);
WRITELN (' m/s');
END.

Página 95
PROGRAM EJE27;
USES CRT;
VAR v,a,t:REAL;
BEGIN
ClrScr;
WRITE('Velocidad inicial (m/s) -> '); READLN(v);
WRITE('Aceleracion (m/s2) ------> '); READLN(a);
WRITE('Tiempo (s) --------------> '); READLN(t);
WRITE('Velocidad instantanea: '); WRITELN(v+a*t:5:2);
WRITE('Velocidad media: ');WRITELN (v+(v+a*t))/2:5:2);
END.

Un cohete se lanza verticalmente con una velocidad de 500 m/s calcular


la velocidad al cabo de 40 segundos mediante un programa en Pascal
velocidad instantánea =(velocidad inicial)–(aceleración de la gravedad*
tiempo).

PROGRAM EJER28;
USES CRT;
CONST gravedad = 9.81;
VAR velocidad0, tiempo, velocidadfinal:REAL;
BEGIN
velocidad0:=500; tiempo:=40;
velocidadfinal:=velocidad0 - (gravedad * 40);ClrScr;
WRITE ('La velocidad a los 40 s es de: ');
WRITE (velocidadfinal:4:2,' m/s');
END.

PROGRAM EJER28B;
USES CRT;
CONST gravedad = 9.81;
VAR velocidad0, tiempo, velocidadfinal:REAL;
BEGIN
ClrScr;
WRITE ('PARA CALCULAR LA VELOCIDAD DE UN COHETE EN UN
INSTANTE, ');
WRITELN ('INTRODUZCA LOS DATOS:');WRITELN (' ');
WRITE ('INTRODUZCA LA VELOCIDAD INICIAL: ');
READLN (velocidad0);
WRITE ('INTRODUZCA EL TIEMPO:');READLN (tiempo);
WRITELN (' ');
velocidadfinal:=velocidad0 - (gravedad * tiempo);
IF velocidadfinal <=0 THEN WRITE ('El cohete esta parado');
IF velocidadfinal > 0 THEN WRITE ('Velocidad final es:');
IF velocidadfinal > 0 THEN WRITE (velocidadfinal:4:2);
IF velocidadfinal > 0 THEN WRITE (' m/s.');
END.

PROGRAM EJER28;
USES CRT;
VAR v,g,t:REAL;
BEGIN
ClrScr;
g:=9.8;
WRITE('Velocidad inicial (m/s) -> '); READLN(v);
WRITE('Tiempo (s) --------------> '); READLN(t);
WRITE('Velocidad instantanea: '); WRITELN(v-(g*t):5:2);
END.

Página 96
Escribir un programa en Pascal que detecte si un número introducido
desde le teclado es positivo o negativo.

PROGRAM EJER29;
USES CRT;
VAR num:INTEGER;
BEGIN
ClrScr;
WRITE ('Introduzca un numero entero: ');READLN (num);
IF num > 0 THEN
WRITE ('El numero es positivo')
ELSE IF num < 0 THEN
WRITE ('El numero es negativo')
ELSE
WRITE ('El numero no es positivo ni negativo, es 0');
END.

Escribir un programa en Pascal que detecte si se han introducido en


orden creciente tres números introducidos por el usuario.

PROGRAM EJER30;
USES CRT;
VAR num1,num2,num3:INTEGER;
BEGIN
ClrScr;
WRITE ('Introduzca un numero (1) : '); READLN (num1);
WRITE ('Introduzca un numero (2) : '); READLN (num2);
WRITE ('Introduzca un numero (3) : '); READLN (num3);
IF ((num1 < num2) AND (num2 < num3)) THEN
WRITE ('Los numeros se han introducido en orden creciente')
ELSE
WRITE ('Los numeros no se han introducido en orden
creciente');
END.

PROGRAM EJER30;
USES CRT;
VAR num1,num2,num3:INTEGER;
BEGIN

ClrScr;

WRITE('Introduzca un numero (1) : '); READLN(num1);


WRITE('Introduzca un numero (2) : '); READLN(num2);
WRITE('Introduzca un numero (3) : '); READLN(num3);

IF ((num1 < num2) AND (num2 < num3)) THEN


WRITE('Los numeros se han introducido en orden creciente')
ELSE
WRITE('Los numeros no se han introducido en orden
creciente');
END.

Página 97
SERIE DE PROBLEMAS RESUELTOS 4

Escribir un programa en Pascal que identifique el carácter


introducido por el usuario.

PROGRAM EJER31;
USES CRT;
VAR pato_donald:CHAR;

BEGIN

ClrScr;

WRITE ('Introduzca un caracter alfanumerico: '); READLN


(pato_donald);
WRITE ('El caracter introducido es -----> ' + pato_donald)
END.

Escribir un programa en Pascal que determine si un número


leído desde el teclado es par o impar

PROGRAM EJER34;
USES CRT;

VAR num:INTEGER;

BEGIN
ClrScr;

WRITE ('Introduzca un numero entero: '); READLN


(num);

IF num = 0 THEN
WRITE ('El numero introducido no es par ni impar, es 0')
ELSE IF ((num mod 2 = 0)) THEN
WRITE ('El numero introducido es par')
ELSE
WRITE ('El numero introducido es impar')

END.

PROGRAM EJER34;
USES CRT;
VAR num:INTEGER;
BEGIN

ClrScr;

WRITE('Introduzca un numero: ');


READLN(num);

IF (num mod 2 = 0) THEN


WRITE('NUMERO PAR')
ELSE
WRITE('NUMERO IMPAR');
END.

Página 98
Escribir un programa que decida si un numero es < o > 100.
PROGRAM EJER35;
USES CRT;
VAR num:INTEGER;
BEGIN
WRITE ('Escriba un numero entero:');READLN (num);
WRITELN ('');IF num < 100 THEN
WRITE ('El numero que ha escrito es menor de 100')
ELSE IF num > 100 THEN
WRITE ('El numero que ha escrito es mayor de 100')
ELSE WRITE ('El numero es 100')
END.

PROGRAM EJER35;
USES CRT;
VAR num:REAL;
BEGIN
ClrScr; WRITE('Introduzca un numero : '); READLN(num);
IF (num <= 100) THEN WRITE('NUMERO MENOR O IGUAL A 100 ')
ELSE WRITE('NUMERO MAYOR DE 100')END.

Escribir un programa en Pascal que dado un número del 1 a 7 escriba


el correspondiente nombre del día de la semana.

PROGRAM EJER36;
USES CRT;
VAR num:INTEGER;
BEGIN
ClrScr;
WRITE ('Escriba un numero y detrminara el dia de la semana:');
READLN (num);
IF num=1 THEN WRITE ('Lunes');
IF num=2 THEN WRITE ('Martes');
IF num=3 THEN WRITE ('Miercoles');
IF num=4 THEN WRITE ('Jueves');
IF num=5 THEN WRITE ('Viernes');
IF num=6 THEN WRITE ('Sabado');
IF num=7 THEN WRITE ('Domingo');
END.

PROGRAM EJER36;
USES CRT;
VAR num_dia_sem:INTEGER;
BEGIN
ClrScr;
WRITE('Dia de la semana (numero) -> ');READLN(num_dia_sem);
CASE num_dia_sem OF
1: WRITELN('Lunes');
2: WRITELN('Martes');
3: WRITELN('Miercoles');
4: WRITELN('Jueves');
5: WRITELN('Viernes');
6: WRITELN('Sabado');
7: WRITELN('Domingo');
ELSE
WRITELN('No es un dia de la semana');
END; END.

Página 99
Escribir un programa en Pascal que lea dos números desde el teclado
y si el primero es mayor que el segundo intercambie sus valores.

PROGRAM EJER37;
USES CRT;

VAR num1,num2:INTEGER;
BEGIN
ClrScr;

WRITELN ('Escriba dos numeros: ');


READLN (num1); WRITE (''); READLN (num2);
WRITELN ('');

IF num1 > num2 THEN


BEGIN
WRITE(num2,' ',num1,'. El primer numero es mayor.');
WRITE(' Se cambia el orden.');
END
ELSE
BEGIN
WRITE(num1,' ',num2,'El segundo numero es mayor.');
WRITE(' No se cambia el orden.');
END;
END.

PROGRAM EJER37;
USES CRT;
VAR num1,num2,temp:INTEGER;
BEGIN
ClrScr;

WRITE('Numero 1: '); READLN(num1);


WRITE('Numero 2: '); READLN(num2);

IF (num1 > num2) THEN


BEGIN
temp:=num1;
num1:=num2;
num2:=temp;
WRITELN('Numero intercambiados');
WRITE('Numero 1: '); WRITELN(num1);
WRITE('Numero 2: '); WRITELN(num2);
END
ELSE
BEGIN
WRITELN('Numeros sin intercambiar');
WRITE('Numero 1: '); WRITELN(num1);
WRITE('Numero 2: '); WRITELN(num2);
END;
END.

Página 100
Escribir un programa en Pascal que dada una calificación en valor
alfabético (A,B,C,D ó E) indique su equivalente en valor numérico
(100,90,80,70,60, fuera de este rango se considera reprobado).

PROGRAM EJER38;
USES CRT;

VAR valor:CHAR;
BEGIN
ClrScr;

WRITE ('Escriba una calificacion entre a y e: ');


READLN (valor);
WRITELN ('');

CASE UPCASE(valor) OF
'A': WRITE ('El valor correspondiente es: 100');
'B': WRITE ('El valor correspondiente es: 90');
'C': WRITE ('El valor correspondiente es: 80');
'D': WRITE ('El valor correspondiente es: 70');
'E': WRITE ('El valor correspondiente es: 60')
ELSE
WRITE ('La calificacion es de REPROBADO');
END;
END.

PROGRAM EJER38;
USES CRT;
VAR cal:CHAR;
BEGIN
ClrScr;

WRITE('Introduzca una calificacion (A-E):');


READLN(cal);

CASE cal OF
'A': WriteLn('Calificacion numerica --> 100');
'B': WriteLn('Calificacion numerica --> 90');
'C': WriteLn('Calificacion numerica --> 80');
'D': WriteLn('Calificacion numerica --> 70');
'E': WriteLn('Calificacion numerica --> 60');
ELSE
WriteLn('Calificacion de REPROBADO');
END;
END.

Página 101
Escribir un programa en Pascal que lea desde teclado el importe
bruto de una factura y determine el importe neto según los
siguientes criterios:
· Importe bruto menor de 20.000 -> sin descuento
· Importe bruto mayor de 20.000 -> 15% de descuento

PROGRAM EJER39;
USES CRT;

VAR importe_bruto:REAL;
VAR descuento, total:REAL;

BEGIN
ClrScr;

WRITE ('Indique el importe de su factura para ver ');


WRITELN ('si le "descontamos" algo');
WRITELN ('');
READLN (importe_bruto);
WRITELN ('');

{calcula el importe bruto con descuento del 15%}


descuento:=importe_bruto * 0.15;

IF importe_bruto > 20000 THEN

BEGIN
WRITELN ('SE MERECE UN DESCUENTO DE: ',descuento:5:2,
' PTS');
total:=importe_bruto - descuento;
WRITELN ('El total es de la factura es de:
',total:5:2,
' pts')
END

ELSE
WRITE ('CON ESE DINERO NO SE MERECE UN DESCUENTO')

END.

PROGRAM EJER39;
USES CRT;
VAR imp_bru,imp_net:REAL;
BEGIN
ClrScr;

WRITE('Importe Bruto -> '); READLN(imp_bru);

IF imp_bru <= 20000 THEN


imp_net:=imp_bru
ELSE
imp_net:=imp_bru-(0.15*imp_bru);

WRITE('Importe a pagar: '); WRITE(imp_net:5:2)


END.

Página 102
Escribir un programa en Pascal que una vez leída una hora en
formato (horas, minutos, segundos) indique cual será el tiempo
dentro de un segundo.

PROGRAM EJER40;
USES CRT;
{Las variables son: horas, minutos y segundos}
{Son las horas, minutos y segundos introducidos por el
usuario}
VAR h, m, s:INTEGER;
VAR h2,m2,s2:INTEGER;
{Son las horas, minutos y seguntos a los que se les sumara}
BEGIN
ClrScr;
WRITE ('Escriba en formato horas, minutos y segundos');
WRITELN ('');
WRITE ('Horas '); READLN (h);
WRITE ('Minutos '); READLN (m);
WRITE ('Segundos '); READLN (s);
WRITELN ('');
WRITELN ('Se le sumara un segundo a la hora actual.');
WRITELN ('');
s:= s + 1;
IF s = 60 THEN s2 := 0
ELSE s2 := s;
m:= ((m * 60) + s) div 60;
IF m = 60 THEN m2 := 0
ELSE m2 := m;
h2:=((h * 60) + m) div 60;
IF h2 = 24 THEN h2 := 0;
WRITELN (h2,':',m2,':',s2);
END.

PROGRAM EJER40;
USES CRT;
VAR h1,m1,s1:INTEGER;
VAR h2,m2,s2:INTEGER;
BEGIN
Clrscr;
WRITE('Horas ------> '); READLN(h1);
WRITE('Minutos ----> '); READLN(m1);
WRITE('Segundos ---> '); READLN(s1);
s2:=s1+1;
IF s2=60 THEN
BEGIN s2:=0;m2:=m1+1; END;
IF m2=60 THEN BEGIN m2:=0;h2:=h1+1; END;
IF h2=24 THEN BEGIN s2:=0;m2:=0; h2:=0;END;

WRITE(h1); WRITE(' hh '); WRITE(m1); WRITE(' mm ');


WRITE(s1); WRITE(' ss '); WRITE(' + 1 segundo son: ');
WRITE(h2); WRITE(' hh '); WRITE(m2); WRITE(' mm ');
WRITE(s2); WRITE(' ss ');
END.

Página 103
SERIE DE PROBLEMAS RESUELTOS 5

Escribir un programa en Pascal que calcule el salario semanal de un


trabajador en base a las horas trabajadas y el pago por hora
trabajada.
* Horas ordinarias (40 primeras horas de trabajo) – 2.000 C$/hora
* 1.5 veces precio hora ordinaria

PROGRAM EJER41;
USES CRT;

VAR htrab, cordobash:REAL; {Horas trabajadas y pts hora}


VAR nhextra, hextra:REAL; {Numero de horas extra y horas
extra}
VAR salario_semanal:REAL;
BEGIN
ClrScr;

WRITE ('Introduzca las horas trabajadas y las C$/hora que se


cobran ');
WRITELN ('para calcular el salario semanal.');
WRITELN ('');

WRITE ('Horas trabajadas: '); READLN (htrab);


WRITE ('C$/hora: '); READLN (cordobah);
WRITE ('Horas extra: '); READLN (nhextra);
WRITELN ('');

hextra:=nhextra * (ptsh * 1.5);


Salario_semanal:= (htrab) * (cordobash) + hextra;

WRITE ('El salario semanal son ',salario_semanal:5:0,' pts.');


END.

PROGRAM EJER41;
USES CRT;
VAR pre_hor,hor_tra,hor_ext,sal_sem:REAL;
BEGIN
ClrScr;

pre_hor:=2000;

WRITE('Horas trabajadas '); READLN(hor_tra);

IF hor_tra<=40 THEN
sal_sem:=hor_tra*pre_hor
ELSE
BEGIN
hor_ext:=hor_tra-40;
sal_sem:=(40*pre_hor)+(hor_ext*(pre_hor*1.5));
END;

WRITE('Salario semanal: '); WRITELN(sal_sem:5:2);


END.

Página 104
Escribir un programa en Pascal que realice un bucle con While y
muestre en pantalla del 1 al 10.

PROGRAM EJER42;
USES CRT;
VAR x:INTEGER;
BEGIN
x:=0;

ClrScr;

WHILE X <= 10 DO
BEGIN
WRITELN (x);
x:=x+1;

END;
END.

Escribir un programa en Pascal que realice un bucle con Repeat y


muestre en pantalla del 1 al 10.

PROGRAM EJER43;
USES CRT;
VAR x:INTEGER;
BEGIN
x:=0;

ClrScr;

REPEAT
WRITELN (x);
x:=x+1;
UNTIL x=10;
END.

Escribir un programa en Pascal que realice un bucle con For y


muestre en pantalla del 1 al 10.

PROGRAM EJER44;
USES CRT;

VAR x:INTEGER;
BEGIN

ClrScr;

FOR x:=0 TO 10 DO
WRITELN (x);

END.

Página 105
Escribir un programa en Pascal que visualice en pantalla los
números pares entre 1 y 25.

PROGRAM EJER45;
USES CRT;
VAR num:INTEGER;
BEGIN
num:=2;
ClrScr;
REPEAT
WRITELN (num);
num:= num + 2;
UNTIL num= 26;
END.

PROGRAM EJER45;
USES CRT;
VAR sem:INTEGER;
BEGIN
ClrScr;
sem:=1;
WHILE sem <= 25 DO
BEGIN
IF sem mod 2=0 THEN
WRITELN(sem);
sem:=sem + 1;
END;
END.

Escribir un programa en Pascal que visualice en pantalla los


números múltiplos de 5 comprendidos entre 1 y 100.

PROGRAM EJER46;
USES CRT;

VAR num:INTEGER;
BEGIN
num:= 5;
ClrScr;
WHILE num <= 100 DO
BEGIN WRITELN (num);num:= num + 5; END;
END.

PROGRAM EJER46;
USES CRT;
VAR sem:INTEGER;
BEGIN
ClrScr;

FOR sem:= 1 TO 100 DO


BEGIN
IF sem mod 5=0 THEN
WRITELN(sem);
END;
END.

Página 106
Escribir un programa en Pascal que sume los números comprendidos
entre 1 y 10.

PROGRAM EJER47;
USES CRT;

VAR num, x:INTEGER;


BEGIN
ClrScr;

num:=1;
x:=1;

WHILE num <= 10 DO


BEGIN
WRITELN (x);
num:= num + 1;
x:= x + num;
END;
END.

Escribir un programa en Pascal que genere la tabla de multiplicar


de un número introducido por el teclado.

PROGRAM EJER48;
USES CRT;

VAR tabla, x, num:INTEGER;


BEGIN
ClrScr;

WRITE ('Introduzca un numero para elaborar su tabla de


multiplicar:'); READLN (num); WRITELN ('');
REPEAT
WRITELN (tabla);
x:= x + 1;
tabla:= num * x;
UNTIL x=11;
END.

PROGRAM EJER48;
USES CRT;
VAR num,sem:INTEGER;
BEGIN
ClrScr;

WRITE('Introduzca un numero entero: '); READLN(num);

FOR sem:=1 TO 10 DO
BEGIN
WRITE(num); WRITE(' * '); WRITE(sem); WRITE(' = ');
WRITELN(num*sem);
END;
END.

Página 107
Escribir un programa en Pascal que realice la pregunta ¿Desea
continuar S/N? y que se detenga hasta que el usuario teclee N.
PROGRAM EJER49;
USES CRT;
VAR respuesta:CHAR;
BEGIN
ClrScr;
REPEAT WRITELN ('DESEA CONTINUAR: S/N '); READLN (respuesta);
UNTIL respuesta='N';
END.

PROGRAM EJER49B;
USES CRT;
VAR respuesta:STRING;
BEGIN
ClrScr;
REPEAT WRITELN ('DESEA CONTINUAR: SI/NO ');READLN (respuesta);
UNTIL respuesta='NO';
END.

PROGRAM EJER49;
USES CRT;
VAR resp:CHAR;
BEGIN
ClrScr;
resp:='S';
WHILE UPCASE(resp)='S' DO
BEGIN
WRITE('Desea continuar? '); READLN(resp);
END;
END.

Escribir un programa en Pascal que calcule cuantos años tarda en


duplicarse un capital depositado al 5% de interés anual.

Página 108
SERIE DE PROBLEMAS RESUELTOS 6

Escribir un programa que calcule la suma de los números hasta un


número dado (introducido por el usuario).

PROGRAM EJER51;
USES CRT;
VAR x, y, num:INTEGER;
BEGIN
ClrScr;
WRITE ('Este programa calcula la suma de los numeros');
WRITE (' hasta uno introducido por el usuario: ');
READLN (num); WRITELN ('');
x:=0;
WHILE num >= 0 DO
BEGIN WRITELN (x); x:= x + num; num:=num - 1; END;
END.

PROGRAM EJER51;
USES CRT;
VAR i,num:INTEGER;
VAR suma:LONGINT;
BEGIN
ClrScr;

WRITE('Introduzca un numero -> '); READLN(num);


FOR i:=0 TO num DO
suma:=suma+ i;
WRITE('Suma '); WRITE('0-'); WRITE(num);
WRITE('---->'); WRITE(suma);
END.

Escribir un programa que pida un número y si el que se introduce


por el teclado es menor de 100 que vuelva a solicitarlo.
PROGRAM EJER52;
USES CRT;

VAR num:INTEGER;
BEGIN
{Este programa no finaliza hasta que se escribe un numero mayor a
100}

ClrScr;

REPEAT
WRITELN ('Introduzca un numero: ');
READLN (num);
UNTIL num > 100;
END.

Página 109
PROGRAM EJER52;
USES CRT;
VAR num:INTEGER;
BEGIN
ClrScr;

WRITE('Introduzca un numero -> '); READLN(num);

WHILE num<=100 DO
BEGIN
WRITE('Introduzca un numero -> '); READLN(num);
END;
END.

Escribir un programa en Pascal que calcule el factorial de un


número.

PROGRAM EJER53;
USES CRT;

VAR factorial, x, num, y:REAL;


BEGIN
{Este programa hace el factorial de un numero}

ClrScr;
WRITE ('Introduzca un numero para hacer su factorial: ');
READLN (num); WRITELN ('');
x:=1;
WHILE num > 1 DO
BEGIN
x:=x * num;
num:=num - 1;
WRITELN (x);
END;
END.

PROGRAM EJER53;
USES CRT;
VAR temp,num,fac:LONGINT;
BEGIN
ClrScr;
fac:=1;
temp:=num;
WRITE('Introduzca un numero -> '); READLN(num);
temp:=num;
WHILE num>=1 DO
BEGIN
fac:=fac*num;
num:=num-1;
END;
WRITE('El factorial de '); WRITE(temp); WRITE(' es ');
WRITE(fac);
END.

Página 110
Escribir un programa en Pascal que calcule la media de 5 números
introducidos por el teclado.

PROGRAM EJER54;
USES CRT;
VAR n1, n2, n3, n4, n5:REAL;
VAR resultado:REAL;
BEGIN
ClrScr;
WRITELN ('Introduzca 5 numeros para hacer su media');
WRITELN ('');
WRITE ('Nø 1: '); READLN (n1);
WRITE ('Nø 2: '); READLN (n2);
WRITE ('Nø 3: '); READLN (n3);
WRITE ('Nø 4: '); READLN (n4);
WRITE ('Nø 5: '); READLN (n5);
WRITELN ('');
resultado:= (n1 + n2 + n3 + n4 + n5) / 2;
WRITE (resultado:5:2);
END.

PROGRAM EJER54;
USES CRT;
VAR i:INTEGER;
VAR num,suma:REAL;
BEGIN
ClrScr; i:=0;
REPEAT
WRITE('Introduzca un numero: '); READLN(num);
suma:=suma+num;
i:=i+1;
UNTIL i=5;
WRITE('La media es: '); WRITELN(suma/i:5:2);
END.

Escribir un programa en Pascal que calcule el salario neto semanal


de un trabajador en función del número de horas trabajadas
y la tasa de impuestos de acuerdo a las siguientes hipótesis.
· Las primeras 35 horas se pagan a tarifa normal
· Las horas que pasen de 35 se pagan 1.5 veces la tarifa normal
· Las tasas de impuestos son:
a: Los primeros 50 dólares son libres de impuestos
b: Los siguientes 40 dólares tienen un 25% de impuestos
c: Los restantes de 45% de impuestos

PROGRAM EJER55;
USES CRT;
VAR sns:REAL; {salario neto semanal}
VAR h_trabajadas, h_extra:REAL;
VAR precio_h, precio_h_extra:REAL;
VAR total:REAL;
VAR impuestos0,impuestos25,impuestos45:REAL;
{Impuestos con cada % correspondiente}
BEGIN
ClrScr;
WRITELN ('INTRODUZCA LOS DATOS PARA CALCULAR EL SALARIO
NETO SEMANAL');WRITELN ('');

Página 111
WRITE ('Las horas trabajadas semanales son 35, ');
WRITELN ('el exceso, son horas extra. Escriba U$');
WRITELN ('');
WRITE ('Horas trabajadas: '); READLN (h_trabajadas);
WRITE ('Horas extra: '); READLN (h_extra);
WRITE ('Precio por cada hora: '); READLN (precio_h);
WRITELN ('');
precio_h_extra:=precio_h * 1.5;
sns:=(h_trabajadas * precio_h) + (h_extra * precio_h_extra);
impuestos0:=0;
impuestos25:=sns - ((sns - 50) * 0.25);
impuestos45:=sns - ((sns - 90) * 0.45);
IF sns <= 50 THEN
WRITELN ('El salario neto semanal es: ',sns:5:2)
ELSE IF sns < 90 THEN
WRITELN ('El salario neto semanal es: ',impuestos25:5:2)
ELSE IF sns > 90 THEN
WRITELN ('El salario neto semanal es: ',impuestos45:5:2);
END.

PROGRAM EJER55;
USES CRT;
VAR hor_tra,sal_bru,tas_imp,sal_net:real;
CONST tar_hor=2;
CONST tasa_imp1=0.25;
CONST tasa_imp2=0.45;
BEGIN
ClrScr;

WRITE('Numero de horas trabajadas: '); READLN(hor_tra);

{Calculo del salario bruto}

IF hor_tra <= 35 THEN


sal_bru:=hor_tra*tar_hor
ELSE
sal_bru:=(35*tar_hor)+((hor_tra-35)*(1.5*tar_hor));

{Calculo de impuestos}

IF sal_bru <= 50 THEN


tas_imp:=0
ELSE IF sal_bru <= 90 THEN
tas_imp:=(sal_bru-50)*tasa_imp1
ELSE
tas_imp:=(40*tasa_imp1)+((sal_bru-90)*tasa_imp2);

{Calculo salario neto}

sal_net:=sal_bru-tas_imp;

WRITE('Horas trabajadas -------> '); WRITELN(hor_tra:5:2);


WRITE('Salario bruto-----------> '); WRITELN(sal_bru:5:2);
WRITE('Impuestos---------------> '); WRITELN(tas_imp:5:2);
WRITE('Salario neto------------> '); WRITELN(sal_net:5:2);
END.

Página 112
Escribir un programa en Pascal que detecte si un número es primo o
no. Un número es primo si sólo es divisible por sí mismo y por la
unidad.
Ejemplo: 2,3,4,7,11,17,19 son números primos. 9 no es número
primo, es divisible por 1, 9, 3. El algoritmo para resolver este
problema pasa por dividir sucesivamente el número estudiado por
2,3,4, etc., hasta el propio número. {Se puede hacer únicamente
dividiento por 2,3 y 5.

PROGRAM EJER56;
USES CRT;
VAR num, x:INTEGER;
VAR primo:INTEGER;
BEGIN
ClrScr;
WRITELN ('Introduzca un numero para comprobar si es primo.');
WRITELN ('');
x:=1;
WRITE ('Introduzca el numero: '); READLN (num);
WRITELN ('');
REPEAT
x:= x + 1;
primo:= num mod x;
WRITELN (primo);
UNTIL x = 5; WRITELN ('');
WRITELN ('Si ninguno de los resultados es 0, el numero es
primo.');
WRITELN ('Si alguno es 0, el numero no es primo.');
END.

PROGRAM EJER56;
USES CRT;
VAR i,num,flag:INTEGER;
BEGIN
ClrScr;
flag:=0;

WRITE('Introduzca un numero -> '); READLN(num);

FOR i:=2 TO (num-1) DO


BEGIN
IF (num mod i)=0 THEN
flag:=1;
END;

IF flag=1 THEN
BEGIN
WRITE(num); WRITE(' no es un numero primo');
END
ELSE
BEGIN
WRITE(num); WRITE(' es un numero primo');
END;
END.

Página 113
Escribir un programa en Pascal que calcule la depreciación de un
objeto según el métodode la línea recta. Calcular el número de años
que tarda en hacerse 0. En este método el valor original del objeto
se divide por su vida (número de años).El cociente resultanteserá
la cantidad en la que el objeto se deprecia anualmente. Por
ejemplo, si un objeto se deprecia 8000 dólares en diez años,
entonces la depreciaciónanual será 8000/10=800 dólares. Por tanto,
el valor del objeto habrá disminuido en 800 dólares cada año.Nótese
que la depreciación anual es la misma cada año cuando se utiliza
este método.

PROGRAM EJER57;
USES CRT;

VAR annos, valor:REAL;


VAR depreciacionanno:REAL;
VAR x:INTEGER;
BEGIN
ClrScr;
WRITELN ('Escriba datos para calcular depreciacion anual');
WRITELN ('');
WRITE ('Valor original: '); READLN (valor);
WRITE ('Numero de años: '); READLN (annos);
WRITELN ('');
depreciacionanno:= valor / annos;
x:=0;
WHILE valor > 0.1 DO
BEGIN
valor:=valor - depreciacionanno;
x:= x + 1;
WRITELN ('AÑO ',x:2,': ',valor:8:0,' pts.');
END;
END.

PROGRAM EJER57;
USES CRT;

VAR val_ini,val_dep,tas_dep:REAL;
VAR i,anios:INTEGER;
BEGIN
ClrScr;

WRITE('Valor inicial -----> '); READLN(val_ini);


WRITE('Numero de años ----> '); READLN(anios);

tas_dep:=val_ini/anios;;
val_dep:=val_ini-tas_dep;

FOR I:=1 TO anios DO


BEGIN
WRITE('A¤o ');
WRITE(i:3);
WRITE(' ------ ');
WRITELN(val_dep:10:2);
val_dep:=val_dep-tas_dep;
END;
END.

Página 114
Escribir un programa en Pascal que calcule la depreciación de un
objeto según el método del balance doblemente declinante. En este
método, el valor del objeto disminuye cada año en un porcentaje
constante.Por tanto, la verdadera cantidad depreciada, en dólares,
variara de un año al siguiente. Para obtener el factor de
depreciación, dividimos por dos la vida del objeto. Este factor se
multiplica por el valor del objeto al comienzo de cada año (y no el
valor del original del objeto) para obtener la depreciación anual.
Supongamos, por ejemplo que deseamos depreciar un objeto de 8000
dólares por diez años; el factor de depreciación será 2/10=0.2.Por
tanto, la depreciación el primer año será 0,2 X 8000 = 1600
dólares, la depreciación del segundo año será 0,2 X 6400=1280
dólares; la depreciación del tercer año será 0,2 X 5120 = 1024
dólares, y así sucesivamente.

PROGRAM EJER58;
USES CRT;
VAR fdd:REAL; {Factor de depreciacion}
VAR vidaobj:REAL; {Vida del objeto = años}
VAR depreciacionanno:REAL;
VAR valorobj:REAL; {Valor del objeto}
VAR x:INTEGER;
BEGIN
ClrScr;
WRITE ('PARA CALCULAR LA DEPRECIACION POR EL METODO DEL
BALANCE ');
WRITELN ('DOBLEMENTE DECLINANTE ESCRIBA LOS DATOS:');
WRITELN ('');WRITE ('VALOR DEL OBJETO: ');READLN (valorobj);
WRITE ('AñOS:');READLN (vidaobj);
WRITELN ('');
fdd:= 2 / vidaobj;x:=1;
REPEAT
depreciacionanno:= fdd * valorobj;
valorobj:=valorobj - depreciacionanno;
WRITELN ('AñO ',x:2,': ',valorobj:8:2,' pts.');x:= x + 1;
UNTIL x > vidaobj; WRITELN ('');
x:= x - 1; WRITELN('EL VALOR A LOS ',x,' AñOS SERA DE: ',
valorobj:6:2,' pts.');
END.

PROGRAM EJER58;
USES CRT;
VAR val_ini,val_dep,coe_dep,tas_dep:REAL;
VAR i,anios:INTEGER;
BEGIN
ClrScr;
WRITE('Valor inicial ----->'); READLN(val_ini);
WRITE('Numero de años ----> '); READLN(anios);
coe_dep:=2/anios;
tas_dep:=val_ini*coe_dep;
val_dep:=val_ini-tas_dep;
FOR i:=1 TO anios DO
BEGIN
WRITE('A¤o ');WRITE(i:3);WRITE(' ------ ');
WRITELN(val_dep:10:2);val_dep:=val_dep-(val_dep*coe_dep);
END;
END.

Página 115
Escribir un programa que calcule las raíces de la ecuación
ax2 + bx + c = 0) teniendo en cuenta los siguientes casos:
a. Si a es igual a 0 y b es igual a 0, imprimiremos un mensaje
diciendo que la ecuación es degenerada.
b. Si a es igual a 0 y b no es igual a 0, existe una raíz
única con valor –c/b.
c. En los demás casos, utilizaremos la fórmula siguiente:
xi = (-b ± raizcuadrada(b2 – 4ac))/(2a)
La expresión d = b2 – 4ac se denomina discriminante.
· Si d es mayor o igual que 0 entonces hay dos raíces reales
· Si d es menor que 0 entonces hay dos raíces complejas de la
forma: x+yi,x-yi. Siendo x el valor –b/2a e y el valor absoluto de
raizcuadrada(b2-4ac)/(2ª.)

PROGRAM EJER59;
USES CRT;
VAR a, b ,c:REAL;
VAR sp, sn:REAL; {Solucion positiva y negativa}
VAR d:REAL; {Discriminante}
BEGIN
ClrScr;
WRITELN ('Introduzca los valores para calcular la ecuacion de
2º grado');WRITELN (''); WRITE ('a: '); READLN (a);
WRITE ('b: '); READLN (b); WRITE ('c: ');READLN (c);
WRITELN ('');
IF (a=0) and (b=0) THEN
WRITELN ('La ecuacion es degenerada.')
ELSE IF (a=0) and (b<>0) THEN
WRITELN ('Existe una raiz con valor -c/b: ',-c/b:5:2)
ELSE
BEGIN
sp:=(-b + sqrt(sqr(b) - (4 * a * c))) / 2 * a;
sn:=(-b - sqrt(sqr(b) - (4 * a * c))) / 2 * a;
d:=sqr(b) - (4 * a * c);
WRITE ('La solucion positiva es: '); WRITELN (sp:5:2);
WRITE ('La solucion negativa es: '); WRITELN (sn:5:2);
END;
END.

PROGRAM EJER59;
USES CRT;
VAR a,b,c,d,r1,r2,x,y:REAL;
BEGIN
ClrScr;
WRITE('Coeficiente a -> '); READLN(a);
WRITE('Coeficiente b -> '); READLN(b);
WRITE('Coeficiente c -> '); READLN(c);
IF (a=0) AND (b=0) THEN
BEGIN
WRITE('La ecuacion es degenerada');
EXIT;
END
ELSE IF (a=0) AND (b<>0) THEN
BEGIN
r1:=c/b;
WRITE('r1 = '); WRITELN(r1:5:2);
EXIT; END

Página 116
ELSE
BEGIN
d:=sqr(b)-4*a*c;
IF (d>=0) THEN
BEGIN
r1:=(-b+sqrt(sqr(b)-4*a*c))/(2*a);
r2:=(-b-sqrt(sqr(b)-4*a*c))/(2*a);
WRITE('r1 = '); WRITELN(r1:5:2);
WRITE('r2 = '); WRITELN(r2:5:2);
END
ELSE
BEGIN
x:=-b/(2*a);
y:=-b-sqrt(abs(sqr(b)-4*a*c));
WRITE('r1 = '); WRITE(x:5:2); WRITE(' + ');
WRITE(y:5:2);WRITELN('i');
WRITE('r2 = '); WRITE(x:5:2); WRITE(' - ');
WRITE(y:5:2);
WRITELN('i');
END;
END;
END.

Escribir un programa en Pascal que sume dos cadenas. (los datos


vienen en el cuerpo del ejercicio).

PROGRAM EJER60;
USES CRT;
VAR tit_pel1:STRING;
VAR tit_pel2:STRING;
VAR tit_pel3:STRING;
BEGIN
tit_pel1:='Alien';
tit_pel2:='Blade ';
tit_pel3:='Runner';
ClrScr;
WRITELN ('TITULOS DE PELICULAS');
WRITELN (tit_pel1);
WRITELN (tit_pel2 + tit_pel3);

END.

PROGRAM EJER60;
USES CRT;
VAR tit_pel1:STRING;
VAR tit_pel2:STRING;
VAR tit_pel3:STRING;
BEGIN
tit_pel1:='Alien';
tit_pel2:='Blade';
tit_pel3:='Runner';
ClrScr;
WRITELN('TITULOS DE PELICULAS');
WRITELN(tit_pel1);
WRITELN(tit_pel2 + tit_pel3);
END.

Página 117
SERIE DE PROBLEMAS RESUELTOS 7

Escribir un programa en Pascal que lea 4 numeros, calcule y


visualice en pantalla su producto, suma y media aritmética.

PROGRAM EJER71;
USES CRT;
VAR a,b,c,d:REAL;
VAR producto,suma,media:REAL;
BEGIN
ClrScr;
WRITELN('Introduzca 4 numeros para calcular las
soluciones:');
WRITELN ('');
WRITE ('a: '); READLN (a);
WRITE ('b: '); READLN (b);
WRITE ('c: '); READLN (c);
WRITE ('d: '); READLN (d);
WRITELN ('');
producto:= a * b * c * d;
suma:= a + b + c + d;
media:= suma / 2;
WRITELN ('El valor del producto de los numeros es: ',
producto:10:2);
WRITELN ('El valor de la suma de los numeros es: ',
suma:10:2);
WRITELN ('El valor de la media de los numero ses: ',
media:10:2);
END.

PROGRAM EJER71;
USES CRT;
VAR i:INTEGER;
VAR dato,producto,suma,media:REAL;
BEGIN
ClrScr;
producto:=1;
suma:=0;
FOR i:=1 TO 4 DO
BEGIN
WRITE('Dato '); WRITE(i); WRITE('-> ');
READLN(dato);
producto:=producto*dato;
suma:=suma+dato;
END;
media:=suma/i;
WRITE('Producto: '); WRITELN(producto:5:2);
WRITE('Suma: '); WRITELN(suma:5:2);
WRITE('Media: '); WRITELN(media:5:2);
END.

Página 118
Escribir un programa en Pascal que lea un peso en libras y a
continuación visualice su equivalente en kilos y en gramos.
1 libra = 0.45 Kg

PROGRAM EJER72;
USES CRT;
VAR libras,kilos,gramos:REAL;
BEGIN
ClrScr;
WRITE ('Introduzca el numero de libras para pasarlo a kilos y
gramos: ');
READLN (libras);
WRITELN ('');
kilos:= libras * 0.45;
gramos:= kilos * 1000;
WRITELN ('Son ',kilos:5:2,' kilos y ',gramos:5:2,' gramos.');
END.

PROGRAM EJER72;
USES CRT;
VAR libras:REAL;
BEGIN
ClrScr;
WRITE('Libras -> '); READLN(libras);
WRITE('Kilogramos -> '); WRITELN(libras*0.45:7:2);
WRITE('Gramos -> '); WRITELN((libras*0.45)/1000:7:4);
END.

Escribir un programa en Pascal que calcule y escriba el cuadrado de


821.

PROGRAM EJER73;
USES CRT;
VAR numero, cuadrado:REAL;
BEGIN
ClrScr;
WRITE ('Escriba un numero para hacer su cuadrado: ');
READLN (numero);
WRITELN ('');

cuadrado:= sqr(numero);

WRITELN ('El cuadrado es: ',cuadrado:5:2)


END.

PROGRAM EJER73;
USES CRT;
VAR numero:LONGINT;
BEGIN
ClrScr;

numero:=821;

WRITE('Cuadrado de 821: '); WRITE(sqr(numero));


END.

Página 119
Escribir un programa en Pascal que escriba los números comprendidos
entre 1 y 1000. El programa escribirá en la pantalla los números en
grupos de 20, solicitando al usuario si quiere o no continuar
visualizando el siguiente grupo de números.

PROGRAM EJER74;
USES CRT;

VAR num, flag, x:INTEGER;


VAR resp:CHAR;
BEGIN
ClrScr;
num:=0;
x:=1;

FOR num:=1 TO 100 DO


BEGIN
IF (num mod 20)= 0 THEN
flag := x;
WRITELN (num);
IF flag = x THEN
BEGIN
WRITE('DESEA CONTINUAR: S/N --> '); READLN(resp);
IF UPCASE (resp)<>'S' THEN
BEGIN
WRITE ('Este programa ha finalizado'); EXIT
END;
END;
x:= x + 20;
END;
END.

PROGRAM EJER74;
USES CRT;
VAR fila,i:INTEGER;
VAR resp:CHAR;
BEGIN
fila:=1; ClrScr;
FOR i:=1 TO 1000 DO
BEGIN
WRITELN(i);
fila:=fila+1;
IF fila = 21 THEN
BEGIN
WRITE('Desea continuar (S/N)?');
READLN(resp);
IF UPCASE(resp)='S' THEN
BEGIN
ClrScr;
fila:=0;
CONTINUE;
END
ELSE
EXIT;
END;
END;
END.

Página 120
Escribir un programa en Pascal que calcule, independientemente,la
suma y la media de los números pares e impares comprendidos entre 1
y 200.

PROGRAM EJER75;
USES CRT;
VAR media_p, media_i:REAL;
VAR suma_p, suma_i:LONGINT;
VAR i, total_p, total_i:LONGINT;
BEGIN
ClrScr;
FOR i:=1 TO 200 DO
BEGIN
IF (i mod 2)=0 THEN
BEGIN
suma_p:=suma_p + i;
total_p:=total_p + 1;
END
ELSE
BEGIN
suma_i:=suma_i + i;
total_i:=total_i + 1;
END;
END;
media_i:= suma_i / total_i;
media_p:= suma_p / total_p;
WRITELN ('La suma de los impares es: ',suma_i);
WRITELN ('La suma de los pares es : ',suma_p);
WRITELN ('La media de los impares es: ',media_i:5:2);
WRITELN ('La media de los pares es: ',media_p:5:2);
END.

PROGRAM EJER75;
USES CRT;
VAR i,conpar,conimp,sumapar,sumaimp:INTEGER;
BEGIN
ClrScr;
sumapar:=0; sumaimp:=0; conpar:=0; conimp:=0;
FOR i:=1 TO 200 DO
BEGIN
IF (i mod 2) = 0 THEN
BEGIN
sumapar:=sumapar+i;
conpar:=conpar+1;
END
ELSE
BEGIN
sumaimp:=sumaimp+i;
conimp:=conimp+1;
END;
END;
WRITE('Suma pares: '); WRITELN(sumapar:7);
WRITE('Media pares: '); WRITELN(sumapar div conpar:7);
WRITE('Suma impares: '); WRITELN(sumaimp:7);
WRITE('Media impares: '); WRITELN(sumaimp div conimp:7);
END.

Página 121
Escribir un programa en Pascal que calcule el importe de una
factura sabiendo que el IVA a aplicar es del 12% y que si el
importe bruto de la factura es superior a C$ 50.000 se debe
realizar un descuento del 5%.

PROGRAM EJER76;
USES CRT;

VAR i_bruto, i_neto, importe:REAL;


CONST IVA=0.12;
BEGIN
ClrScr;

WRITE ('Escriba el importe bruto: '); READLN (i_bruto);


WRITELN ('');

i_bruto:= i_bruto + (IVA * i_bruto);

IF i_bruto > 50000 THEN

BEGIN
i_neto:= i_bruto - (i_bruto * 0.05);

WRITE ('El importe neto con descuento del 5% es de: ',


i_neto:5:2,' cordobas')
END

ELSE

BEGIN
i_neto:= i_bruto;
WRITE ('El importe bruto sin descuento es de: ',i_neto:5:2,
' cordobas.');
END;
END.

PROGRAM EJER76;
USES CRT;
VAR imp_bruto:REAL;
BEGIN
ClrScr;

WRITE('Importe bruto -> '); READLN(imp_bruto);

IF imp_bruto <= 50000 THEN


BEGIN
WRITE('Importe neto: ');
WRITELN(imp_bruto+(imp_bruto*0.12):9:2);
END
ELSE
BEGIN
WRITE('Importe neto -> ');
imp_bruto:=imp_bruto-(imp_bruto*0.05);
WRITELN(imp_bruto+(imp_bruto*0.12):9:2);
END;
END.

Página 122
Escribir un programa en Pascal que calcule la suma de los cuadrados
de los 100 primeros números enteros.

PROGRAM EJER77;
USES CRT;

VAR x:INTEGER;
VAR suma:REAL;
BEGIN
ClrScr;

FOR x:=1 TO 100 DO

BEGIN
suma:= suma + (sqr(x));
END;

WRITE (suma);
END.

PROGRAM EJER77;
USES CRT;
VAR i:INTEGER;
VAR sumacuad:LONGINT;
BEGIN
ClrScr;

FOR i:=1 TO 100 DO


sumacuad:=sumacuad+sqr(i);

WRITE('Suma de Cuadrados (1-100) ---> '); WRITE(sumacuad);


END.

Escribir un programa en Pascal que visualice una tabla de


conversión de kilómetros a millas marinas y millas terrestres:
1 milla marina = 1852 metros
1 milla terrestre = 1609 metros

PROGRAM EJER78;
USES CRT;

VAR m, m_mar, m_terr:REAL; {metros, millas marinas y


terrestres}
BEGIN
ClrScr;

WRITE ('Introduzca el numero de metros: '); READLN (m);


WRITELN ('');

m_mar:=m/1852;
m_terr:=m/1609;

WRITE (m:5:2,' metros son: ',m_mar:5:2,' millas marinas y ');


WRITE (m_terr:5:2,' millas terrestres');
END.

Página 123
PROGRAM EJER78;
USES CRT;
VAR milla_marina:REAL;
VAR milla_terrestre:REAL;
VAR kilometros:INTEGER;
BEGIN
ClrScr;
WRITELN('Kilometros' + ' ---- ' + 'Millas M.' + ' ---- '
+ 'Millas T.');
FOR kilometros:=1 TO 10 DO
BEGIN
WRITE(kilometros:6);
WRITE(kilometros/1.852:15:2);
WRITELN(kilometros/1.609:15:2);
END;
END.

Escribir un programa en Pascal que lea 10 datos desde el teclado y


sume sólo aquellos que sean negativos.

PROGRAM EJER79;
USES CRT;
VAR y, suma:REAL;
VAR x:INTEGER;
BEGIN
ClrScr;
WRITELN ('Debe introducir 10 datos, se sumaran solo los
negativos:');
WRITELN ('');
FOR x:=1 TO 10 DO
BEGIN
WRITE('Introduzca el dato ',x:2,': '); READLN (y);
IF y < 0 THEN suma := suma + y;
END;
WRITELN ('');
WRITE ('La suma de los numeros negativos es: ');
WRITELN (suma:5:2);
END.

PROGRAM EJER79;
USES CRT;
VAR i:INTEGER;
VAR num,sumaneg:REAL;
BEGIN
ClrScr;
sumaneg:=0;
FOR i:=1 TO 10 DO
BEGIN
WRITE('Numero '); WRITE(i); WRITE(' -> '); READLN(num);
IF num < 0 THEN
sumaneg:=sumaneg+num;
END;

WRITE('Suma de negativos: '); WRITE(sumaneg);


END.

Página 124
Escribir un programa en Pascal que calcule el sueldo semanal de un
trabajador a partir del número de horas trabajadas por día y las
siguientes tarifas:
600 C$/hora Turno de mañana
800 C$/hora Turno de noche
1000 C$/hora Turno de días festivos

PROGRAM EJER80;
USES CRT;
VAR t_mannana, t_noche, t_festivos:INTEGER;
VAR total:LONGINT;
BEGIN
ClrScr;
WRITE ('Introduzca las horas trabajadas por dia,');
WRITELN (' en cada turno, para calcular el sueldo semanal.');
WRITELN (''); WRITE ('Horas del turno de ma¤ana:);
READLN (t_mannana);
WRITE ('Horas del turno de noche:');READLN (t_noche);
WRITE ('Horas del turno de dias festivos:');
READLN (t_festivos);WRITELN ('');
total:=(600*t_mannana)+(800*t_noche)+(1000*t_festivos);
WRITE ('El sueldo semanal es de: ',total);
END.

PROGRAM EJER80;
USES CRT;
VAR turno,resp:CHAR;
VAR numhoras:REAL;
BEGIN
ClrScr; resp:='S';
WRITE('Turno ? (M/N/F) ---> '); READLN(turno);
WRITE('Numero de horas (dia) ---> '); READLN(numhoras);
WHILE UPCASE(resp) = 'S' DO
BEGIN
IF UPCASE(turno) = 'M' THEN
BEGIN WRITE('Salario neto:');WRITELN(numhoras*5*600:7:2);END
ELSE IF UPCASE(turno) = 'N' THEN
BEGIN WRITE('Salario neto:');WRITELN(numhoras*5*800:7:2);END
ELSE IF UPCASE (turno) = 'F' THEN
BEGIN
WRITE('Salario neto: '); WRITELN(numhoras*5*1000:7:2);
END
ELSE
WRITELN('Turno incorrecto');
WRITE('¨Desea continuar (S/N)? ---> ');
READLN(resp);

IF UPCASE(resp) = 'S' THEN


BEGIN
ClrScr;
WRITE('Turno ? (M/N/F) --->'); READLN(turno);
WRITE('Numero de horas (dia) --->'); READLN(numhoras);
END
ELSE
EXIT;
END;
END.

Página 125
SERIE DE PROBLEMAS RESUELTOS 8

Escribir un programa en Pascal que rellene un array con los números


enteros comprendidos entre 4 y 14.

PROGRAM EJER81;
USES CRT;
VAR arr_num:ARRAY [4..14] of INTEGER;
VAR i:INTEGER;
BEGIN
ClrScr;

FOR i:=4 TO 14 DO
arr_num[i]:=i;

FOR i:=4 TO 14 DO
BEGIN
WRITELN('Numero: ',arr_num[i]);
END;
END.

PROGRAM EJER81;
USES CRT;
VAR arr_num:ARRAY[1..11] of INTEGER;
VAR i,num:INTEGER;
BEGIN
ClrScr;

num:=4;

FOR i:=1 TO 11 DO
BEGIN
arr_num[i]:=num;
num:=num+1;
END;
FOR i:=1 TO 11 DO
BEGIN
WRITE('Posici¢n ',i:2, ': '); WRITELN(arr_num[i]:5);
END;
END.

Escribir un programa en Pascal que rellene un array con los números


pares comprendidos entre 1 y 10.

PROGRAM EJER82;
USES CRT;
VAR arr_num:ARRAY [1..10] of INTEGER;
VAR i, b:INTEGER;
BEGIN
ClrScr; i:=1;
WHILE i <= 10 DO
BEGIN
arr_num[i]:=i;
IF (i mod 2)=0 THEN BEGIN WRITELN(arr_num[i]);END;
i:= i + 1;END;
END.

Página 126
PROGRAM EJER82;
USES CRT;
VAR arr_num:ARRAY[1..10] of INTEGER;
VAR i,num:INTEGER;
BEGIN
ClrScr;
i:=1;num:=1;
WHILE num<=10 DO
BEGIN
IF num mod 2 = 0 THEN
BEGIN
arr_num[i]:=num;i:=i+1;
END;
num:=num+1;
END;
arr_num[i]:=3;i:=1;
WHILE arr_num[i] <> 3 DO
BEGIN
WRITE('Posicion ',i:2,' : '); WRITELN(arr_num[i]:5);
i:=i+1;
END;
END.

Escribir un programa en Pascal que rellene un array con los números


comprendidos entre 25 y 35 divididos por 3.

PROGRAM EJER83;
USES CRT;
VAR arr_num:ARRAY [1..11] of REAL;
VAR i:INTEGER;
BEGIN
ClrScr;

FOR i:=25 TO 35 DO
arr_num[i]:=i;

FOR i:=25 TO 35 DO
WRITELN(arr_num[i] / 3:5:2);
END.

PROGRAM EJER83;
USES CRT;
VAR arr_num:ARRAY[1..11] of REAL;
VAR i,num:INTEGER;
BEGIN
ClrScr;
i:=1;num:=025;
FOR i:=1 TO 10 DO
BEGIN
arr_num[i]:=num/3;num:=num+1;
END;
i:=1;
WHILE i <= 10 DO
BEGIN
WRITE('Posicion ',i:2, ': '); WRITELN(arr_num[i]:5);
i:=i+1;
END;
END.

Página 127
Escribir un programa en Pascal que rellene un array con cinco
números enteros consecutivos y haga una copia de ese array en otro.

PROGRAM EJER84;
USES CRT;
VAR arr_num1,arr_num2:ARRAY [5..10] of INTEGER;
VAR i:INTEGER;
BEGIN
ClrScr;

FOR i:=5 TO 10 DO
BEGIN
arr_num1[i]:=i;
arr_num2[i]:=arr_num1[i];
END;

FOR i:=5 TO 10 DO
WRITELN (arr_num2[i]);

END.

PROGRAM EJER84;
USES CRT;
VAR arr_num1,arr_num2:ARRAY[1..5] of INTEGER;
VAR i,num:INTEGER;
BEGIN
ClrScr;

i:=1;
num:=100;

FOR i:=1 TO 5 DO
BEGIN
arr_num1[i]:=num;
num:=num+1;
END;

FOR i:=1 TO 5 DO
arr_num2[i]:=arr_num1[i];

i:=1;

WRITELN('ARRAY 1 ARRAY 2':30);

WHILE i <= 5 DO
BEGIN
WRITE('Posicion ',i:2, ': ');
WRITE(arr_num1[i]:5);
WRITELN(arr_num2[i]:10);
i:=i+1;
END;
END.

Página 128
Escribir un programa en Pascal que rellene un array de 10 elementos
con los números comprendidos entre 23 y 32 y copie en otro array
esos números multiplicados por 0.35.

PROGRAM EJER85;
USES CRT;
VAR arr_num1, arr_num2:ARRAY [23..32] of REAL;
VAR i:INTEGER;
BEGIN
ClrScr;
FOR i:=23 TO 32 DO
BEGIN
arr_num1[i]:=i;arr_num2[i]:=(arr_num1[i] * 0.35);
END;
FOR i:=23 TO 32 DO WRITELN(arr_num2[i]:5:2);
END.

PROGRAM EJER85;
USES CRT;
VAR arr_num1,arr_num2:ARRAY[1..10] of REAL;
VAR i,num:INTEGER;
BEGIN
ClrScr;
i:=1; num:=23;
FOR i:=1 TO 10 DO
BEGIN arr_num1[i]:=num; num:=num+1; END;
FOR i:=1 TO 10 DO
arr_num2[i]:=arr_num1[i]*0.35;
i:=1;
WRITELN('ARRAY 1 ARRAY 2':30);
WHILE i <= 10 DO
BEGIN
WRITE('Posicion ',i:2, ': ');WRITE(arr_num1[i]:5:2);
WRITELN(arr_num2[i]:10:2);i:=i+1;
END;
END.

Escribir un programa en Pascal que rellene un array con los veinte


primeros números pares y calcule su suma.

PROGRAM EJER86;
USES CRT;
VAR arr_pares:ARRAY [1..40] of INTEGER;
VAR i, suma:INTEGER;
BEGIN
ClrScr;
i:=1;
FOR i:= 1 TO 40 DO
BEGIN
IF (i mod 2) = 0 THEN
BEGIN
arr_pares[i]:=i;
suma:= suma + i;
END;
END;
WRITELN('La suma de los 20 primeros numeros pares es: ',suma);
END.

Página 129
PROGRAM EJER86;
USES CRT;
VAR arr_num:ARRAY[1..25] of INTEGER;
VAR i,num,suma_par:INTEGER;
BEGIN
ClrScr;
i:=1;
num:=1;
suma_par:=0;

WHILE i<=20 DO
BEGIN
IF num mod 2 = 0 THEN
BEGIN
arr_num[i]:=num;
i:=i+1;
suma_par:=suma_par+num;
END;
num:=num+1;
END;
i:=1;
WHILE i <= 20 DO
BEGIN
WRITE('Posici¢n ',i:2, ': ');
WRITELN(arr_num[i]:5);
i:=i+1;
END;
WRITE('SUMA: ', suma_par:12);
END.

Escribir un programa en Pascal que solicite cinco números, los


almacene en un array y luego calcule la media aritmética de esos
números.

PROGRAM EJER87;
USES CRT;
VAR arr_num:ARRAY [1..5] of REAL;
VAR i, num:INTEGER;
VAR media:REAL;
BEGIN
ClrScr;
WRITELN ('Escriba 5 numeros y calcule su media aritmetica: ');
FOR i := 1 TO 5 DO
BEGIN
READLN(num);
arr_num[i]:=num;
END;
FOR i:=1 TO 5 DO
media:= media + arr_num[i];

media:= media / i;

WRITELN ('La media aritmetica es: ',media:5:2);


END.

Página 130
PROGRAM EJER87;
USES CRT;
VAR arr_num:ARRAY[1..10] of REAL;
VAR num,suma,media:REAL;
VAR i:INTEGER;
BEGIN
ClrScr;
i:=0;suma:=0;media:=0;
WHILE i<5 DO
BEGIN
WRITE('Numero ',i+1,'--->'); READLN(num);
arr_num[i]:=num;suma:=suma+num;i:=i+1;
END;
media:=(suma/i);
WRITE('Media: ', media:5:2);
END.

Escribir un programa en Pascal que tras asignar los números,23, 45,


68, 99, 10, 15 y 4 a un array, determine la posición del array en
la que se encuentra el máximo valor.

PROGRAM EJER88;
USES CRT;
CONST arr_num:ARRAY [1..7] of
INTEGER=(23,45,68,99,10,15,4);
VAR i:INTEGER;
BEGIN
ClrScr;

FOR i:=1 TO 7 DO
BEGIN

IF arr_num[i]=99 THEN
WRITE ('La posicion del mayor numero (',arr_num[i],') es:
',i);
END;
END.

PROGRAM EJER88;
USES CRT;
CONST arr_num:ARRAY[1..7] of INTEGER=(23,45,68,99,10,15,4);
VAR i,posi_max,val_max:INTEGER;
BEGIN
ClrScr;

FOR i:=1 TO 7 DO
BEGIN
IF arr_num[i] > val_max THEN
BEGIN
val_max:=arr_num[i];
posi_max:=i;
END;
END;

WRITE('VALOR MAXIMO: ', val_max, ' POSICION: ', posi_max);


END.

Página 131
Escribir un programa en Pascal que tras asignar los números,-2, 5,
8, -9, 10, 15 y -4 a un array calcule, independientemente, la suma
de los elementos positivos y negativos.

PROGRAM EJER89;
USES CRT;
CONST arr_num:ARRAY [1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
VAR i:INTEGER;
VAR suma_p, suma_i:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 7 DO
BEGIN
IF arr_num[i] >= 0 THEN
suma_p:= suma_p + arr_num[i]
ELSE IF arr_num[i] < 0 THEN
suma_i:= suma_i + arr_num[i];
END;
WRITELN ('La suma de los numeros pares es: ',suma_p);
WRITELN ('La suma de los numeros impares es: ',suma_i);
END.

PROGRAM EJER89;
USES CRT;
CONST arr_num:ARRAY[1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
VAR i,suma_pos,suma_neg:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 7 DO
BEGIN
IF arr_num[i] > 0 THEN
suma_pos:=suma_pos+arr_num[i]
ELSE
suma_neg:=suma_neg+arr_num[i];
END;
WRITELN('SUMA POSITIVOS: ', suma_pos);
WRITELN('SUMA NEGATIVOS: ', suma_neg);
END.

Página 132
Escribir un programa en Pascal que tras asignar los números,23, 45,
68, 99, 10, 15 y 4 a un array, determine las posiciones del array
en las que se encuentran el máximo y el mínimo valor.

PROGRAM EJER90;
USES CRT;
CONST arr: ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
VAR i, mayor, menor,posi_mayor,posi_menor:INTEGER;
BEGIN
ClrScr;
mayor:= arr[1];menor:= arr[1];
FOR i:=2 TO 7 DO
BEGIN
IF arr[i] >= mayor THEN
BEGIN
mayor:= arr[i];posi_mayor:=i;
END
ELSE
CONTINUE;
END;
WRITELN ('El numero mayor es: ',mayor:3);
WRITELN ('Su posicion es: ',posi_mayor:3);
WRITELN ('');
FOR i:=2 TO 7 DO
BEGIN
IF arr[i] <= menor THEN
BEGIN
menor:= arr[i];
posi_menor:=i;
END
ELSE
CONTINUE;
END;
WRITELN ('El numero menor es: ',menor:3);
WRITELN ('Su posicion es: ',posi_menor:3);
END.

PROGRAM EJER90;
USES CRT;
CONST arr_num:ARRAY[1..7] of INTEGER=(23,45,68,99,10,15,4);
VAR i,val_max,val_min,pos_max,pos_min:INTEGER;
BEGIN
ClrScr;
val_min:=arr_num[1];val_max:=arr_num[1];
FOR i:=1 TO 7 DO
BEGIN
IF arr_num[i] > val_max THEN
BEGIN
val_max:=arr_num[i];pos_max:=i;
END;
IF arr_num[i] < val_min THEN
BEGIN
val_min:=arr_num[i]; pos_min:=i;
END;
END;
WRITELN('VALOR MAXIMO:', val_max:3, ' POSICIàN: ', pos_max:3);
WRITELN('VALOR MINIMO:', val_min:3, ' POSICIàN: ', pos_min:3);
END.

Página 133
SERIE DE PROBLEMAS RESUELTOS 9
Escribir un programa en Pascal que determine la posición de la
siguiente matriz en la que se encuentra el valor máximo.

23 45 68
34 99 12
25 78 89

PROGRAM EJER91B;
USES CRT;
CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (23,45,68),
(34,99,12),25,78,89) );
VAR i,j,val_max,pos_max_i,pos_max_j:INTEGER;
BEGIN
ClrScr;
val_max:=arr_num[1,1];
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
BEGIN
IF arr_num[i,j] > val_max THEN
BEGIN
val_max:=arr_num[i,j];pos_max_i:=i;
pos_max_j:=j;
END;
END;
END;
WRITELN( 'VALOR MAXIMO: ', val_max:3,
' POSICION: ', pos_max_i:3,pos_max_i:3);
END.

Escribir un programa en Pascal que sume, independientemente, los


elementos positivos y negativos de la siguiente matriz:
-12 23 32
45 -56 -10
25 78 89

PROGRAM EJER92;
USES CRT;
CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (-12,23,-32),
(45,-56,-10),
(25,78,89) );
VAR i,j,suma_p,suma_i:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 3 DO
BEGIN
FOR j:= 1 TO 3 DO
BEGIN
IF arr_num[i,j] >=0 THEN suma_p:= suma_p+arr_num[i,j]
ELSE suma_i:= suma_i + arr_num[i,j];
END;
END;
WRITELN ('La suma de los numeros pares es: ',suma_p);
WRITELN ('La suma de los numeros impares es: ',suma_i);
END.

Página 134
PROGRAM EJER92;
USES CRT;
CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (-12,23,-32),
(45,-56,-10),
(25,78,89));
VAR i,j,suma_pos,suma_neg:INTEGER;
BEGIN
suma_pos:=0;
suma_neg:=0;
ClrScr;

FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
BEGIN
IF arr_num[i,j] < 0 THEN
suma_neg:=suma_neg+arr_num[i,j]
ELSE
suma_pos:=suma_pos+arr_num[i,j]
END;
END;

WRITELN('SUMA POSITIVOS: ', suma_pos:5);


WRITELN('SUMA NEGATIVOS: ', suma_neg:5);
END.

Escribir un programa en Pascal que multiplique por dos los


elementos de la siguiente matriz:
4 7 8
6 9 1
5 0 3

PROGRAM EJER93;
USES CRT;
CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (4,7,8),
(6,9,1),
(5,0,3));
VAR mult,i,j:INTEGER;
BEGIN
ClrScr;

FOR i:= 1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
BEGIN
mult:=arr_num[i,j] * 2;
WRITELN('Elemento (',i,',',j,') multiplicado por 2:
',mult:3);
END;
END;
END.

Página 135
PROGRAM EJER93;
USES CRT;
CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (4,7,8),
(6,9,1),
(5,0,3));
VAR i,j:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 3 DO
FOR j:=1 TO 3 DO
arr_num[i,j]:=arr_num[i,j]*2;
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
WRITE(arr_num[i,j]:3);
WRITELN (' ');
END;
END.

Escribir un programa en Pascal que almacene en la segunda fila


de la siguiente matriz los cuadrados de los datos de la primera
fila:
3 6 7 8 9
0 0 0 0 0

PROGRAM EJER94;
USES CRT;
CONST arr_num:ARRAY [1..2,1..5] of INTEGER=( (3,6,7,8,9),
(0,0,0,0,0));
VAR i,j,cuad:INTEGER;
BEGIN
ClrScr;i:=1;
FOR j:=1 TO 5 DO
BEGIN
FOR i:=1 TO 1 DO
BEGIN
cuad:=sqr(arr_num[i,j]); arr_num[2,j]:= cuad;
WRITELN (arr_num[2,j]);
END;
END;
END.

PROGRAM EJER94;
USES CRT;
CONST arr_num:ARRAY[1..2,1..5] of INTEGER=( (3,6,7,8,9),
(0,0,0,0,0));
VAR i,j:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 1 DO
FOR j:=1 TO 5 DO
arr_num[i+1,j]:=sqr(arr_num[i,j]);
FOR i:=1 TO 2 DO
BEGIN
FOR j:=1 TO 5 DO WRITE(arr_num[i,j]:3);
WRITELN(' ');
END;
END.

Página 136
Escribir un programa en Pascal que sume los datos de cada una de
las filas de la siguiente matriz; el resultado se almacenará en la
última posición de cada fila:
3 6 7 8 9 0
1 4 3 2 7 0

PROGRAM EJER95;
USES CRT;
CONST arr_num:ARRAY [1..2,1..6] of INTEGER=( (3,6,9,7,8,0),

(1,4,3,2,7,0));
VAR i,j,suma1, suma2:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 2 DO
BEGIN
FOR j:=1 TO 6 DO
BEGIN
IF i=1 THEN suma1:= suma1 + arr_num[1,j];
IF i=2 THEN suma2:= suma2 + arr_num[2,j];
END;
END;
WRITELN ('La suma de la fila 1 es: ',suma1);
WRITELN ('La suma de la fila 2 es: ',suma2);
END.

PROGRAM EJER95;
USES CRT;
CONST arr_num:ARRAY[1..2,1..6] of INTEGER=( (3,6,9,7,8,0),
(1,4,3,2,7,0));
VAR suma_fila,i,j:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 2 DO
BEGIN
suma_fila:=0;
FOR j:=1 TO 6 DO
suma_fila:=suma_fila+arr_num[i,j];
arr_num[i,j]:=suma_fila;
END;
FOR i:=1 TO 2 DO
BEGIN
FOR j:=1 TO 6 DO
WRITE(arr_num[i,j]:3);
WRITELN(' ');
END;
END.

Página 137
Escribir un programa en Pascal que sume los datos de cada una de
las columnas de la siguiente matriz; el resultado se almacenará
en la última posición de cada columna:
3 2
4 6
8 9
0 0

PROGRAM EJER96;
USES CRT;
CONST arr_num:ARRAY [1..4,1..2] of INTEGER=( (3,2),(4,6),
(8,9),(0,0));
VAR i,j,suma1,suma2:INTEGER;
BEGIN
ClrScr;
FOR j:=1 TO 2 DO
BEGIN
FOR i:=1 TO 4 DO
BEGIN
IF j=1 THEN suma1:= suma1 + arr_num[i,j];
IF j=2 THEN suma2:= suma2 + arr_num[i,j];
END;
END;
WRITELN ('El resultado de la suma 1 es: ',suma1);
WRITELN ('El resultado de la suma 2 es: ',suma2);
END.

Escribir un programa en Pascal 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. Además la suma total de todos los
elementos de la matriz se almacenará en elelemento de la esquina
inferior derecha de la matriz:
1 7 0
5 6 0
6 4 0
7 3 0
0 0 0

PROGRAM EJER97;
USES CRT;
CONST arr_num:ARRAY [1..5,1..3] of INTEGER=( (1,7,0),(5,6,0),
(6,4,0),(7,3,0),(0,0,0) );
VAR i,j,total:INTEGER;
VAR suma_h,suma_v:INTEGER; {Es la suma horizontal y vertical}

BEGIN
ClrScr;
FOR i:=1 TO 5 DO
BEGIN
FOR j:=1 TO 3 DO
BEGIN
suma_h:= suma_h + arr_num[i,j];
END;
WRITELN ('La suma de la fila ',i,' es: ',suma_h:3);
total:=total + suma_h;
suma_h:=0;
END; WRITELN ('');

Página 138
FOR j:=1 TO 2 DO
BEGIN
FOR i:=1 TO 5 DO
BEGIN
suma_v:= suma_v + arr_num[i,j];
END;
WRITELN ('La suma de la columna ',j,' es: ',suma_v:3);
suma_v:=0;
total:=total + suma_v;
END; WRITELN ('');
WRITELN ('La suma total es: ',total);
END.

PROGRAM EJER97;
USES CRT;
CONST arr_num:ARRAY[1..5,1..3] of INTEGER=( (1,7,0),
(5,6,0),(6,4,0),(7,3,0),
(0,0,0) );
VAR suma_fila,suma_colu,suma_tota,i,j:INTEGER;
BEGIN

ClrScr;

FOR i:=1 TO 4 DO
BEGIN
suma_fila:=0;
FOR j:=1 TO 2 DO
BEGIN
suma_fila:=suma_fila+arr_num[i,j];
suma_tota:=suma_tota+arr_num[i,j];
END;
arr_num[i,j+1]:=suma_fila;
END;
arr_num[i+1,j+1]:=suma_tota;

FOR j:=1 TO 2 DO
BEGIN
suma_colu:=0;
FOR i:=1 TO 4 DO
BEGIN
suma_colu:=suma_colu+arr_num[i,j];
END;
arr_num[i+1,j]:=suma_colu;
END;

FOR i:=1 TO 5 DO
BEGIN
FOR j:=1 TO 3 DO
WRITE(arr_num[i,j]:3);
WRITELN(' ');
END;
END.

Página 139
Escribir un programa en Pascal que divida todos los elementos de
una matriz M (3,4) por el elemento situado en la posición 2,2.

PROGRAM EJER98;
USES CRT;
CONST arr_num:ARRAY[1..3,1..4] of INTEGER=( (23,45,-68,99),
(45,65,-76,34),
(56,-
75,34,98));
VAR i,j:INTEGER;
VAR divi:REAL;
BEGIN
ClrScr;

FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
BEGIN
divi:= arr_num[i,j] / arr_num[2,2];
WRITE ('Dividido ',arr_num[i,j]:3,' por el numero
');
WRITELN (arr_num[2,2]:3,': ',divi:5:2);
END;
END;
END.

PROGRAM EJER98;
USES CRT;
CONST matriz_m:ARRAY[1..3,1..4] OF REAL = ((2,3,4,12),
(7,9,8,11),
(5,6,1,19));
VAR i,j:INTEGER;
VAR ele_22:REAL;
BEGIN
ele_22:=matriz_m[2,2];
ClrScr;

FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(matriz_m[i,j]:5:2,' ');
WRITELN(' ');
END;

FOR i:=1 TO 3 DO
FOR j:=1 TO 4 DO
matriz_m[i,j]:=matriz_m[i,j]/ele_22;

WRITELN(' ');

FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(matriz_m[i,j]:5:2,' ');
WRITELN(' ');
END;
END.

Página 140
Escribir un programa en Pascal que almacene en un array los números
primos comprendidos entre 1 y 100.

PROGRAM EJER99;
USES CRT;
VAR arr_num:ARRAY [1..100] of INTEGER;
VAR flag:INTEGER;
VAR i,num:INTEGER;
BEGIN
ClrScr;
num:=1;
WHILE num < 100 DO
BEGIN
FOR i:=2 TO (num-1) DO
BEGIN
IF (num mod i)=0 THEN
flag:=1;
END;
IF flag<>1 THEN
WRITELN (num:3,' es un n£mero primo.');
num:= num + 1;
flag:=0;
END;
END.

PROGRAM EJER99;
USES CRT;
VAR arra_prim:ARRAY[1..100] OF INTEGER;
VAR i,divisor:INTEGER;
VAR flag,num:INTEGER;
BEGIN
i:=1;
FOR num:=2 TO 100 DO
BEGIN
flag:=1;
FOR divisor:=2 TO num-1 DO
BEGIN
IF num MOD divisor = 0 THEN
flag:=0;
END;
IF flag=1 THEN
BEGIN
arra_prim[i]:=num;
i:=i+1;
END;
END;
arra_prim[i]:=0;
i:=1;
WHILE(arra_prim[i]<>0) DO
BEGIN
WRITE(arra_prim[i],' ');
i:=i+1;
END;
END.

Página 141
Escribir un programa en Pascal que genera la matriz transpuesta de
una matriz de 3 filas y 4 columnas. La matriz transpuesta de una
matriz M(m,n) se obtiene intercambiando filas por columnas y
viceversa; el resultado se tiene que almacenar en una nueva matriz
M_TRANS(n,m).

PROGRAM EJERC100;
USES CRT;
CONST matriz:ARRAY [1..3,1..4] of INTEGER=( (12,67,-23,-45),
(45,-34,23,-12),(-34,22,88,-10));
VAR m_tra:ARRAY [1..4,1..3] of INTEGER;
VAR f,c:INTEGER;
BEGIN
ClrScr;
FOR c:=1 TO 3 DO
BEGIN
FOR f:=1 TO 4 DO
BEGIN
m_tra[f,c]:=matriz[c,f];
WRITE ('(',f,',',c,') ');
WRITELN (m_tra[f,c]:3);
END;
END;
END.

PROGRAM EJERC100;
USES CRT;
CONST m_orig:ARRAY[1..3,1..4] OF REAL = ((2,3,4,12),
(7,9,8,11),
(5,6,1,19));
VAR m_tran:ARRAY[1..4,1..3] OF REAL;
VAR i,j:INTEGER;
BEGIN
ClrScr;

FOR i:=1 TO 3 DO
FOR j:=1 TO 4 DO
m_tran[j,i]:=m_orig[i,j];

FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(m_orig[i,j]:5:2,' ');
WRITELN(' ');
END;

WRITELN(' ');

FOR i:=1 TO 4 DO
BEGIN
FOR j:=1 TO 3 DO
WRITE(m_tran[i,j]:5:2,' ');
WRITELN(' ');
END;
END.

Página 142
SERIE DE PROBLEMAS RESUELTOS 10
Escribir un programa en Pascal que sume dos matrices
bidimensionales.Las matrices para que puedan sumarse deben tener
las mismas dimensiones.

PROGRAM EJERC102;
USES CRT;
CONST m1:ARRAY [1..2,1..2] of INTEGER=( (3,1),(4,5) );
CONST m2:ARRAY [1..2,1..2] of INTEGER=( (1,3),(4,2) );
VAR m3: ARRAY [1..2,1..2] of INTEGER;
VAR f, c:INTEGER;
BEGIN
ClrScr;
FOR f:=1 TO 2 DO
FOR c:=1 TO 2 DO
BEGIN
m3[f,c]:=(m1[f,c] + m2[f,c]);WRITE ('(',f,',',c,')');
WRITELN (m3[f,c]);
END;
END.

PROGRAM EJERC102;
USES CRT;
CONST m_1:ARRAY[1..3,1..4] OF REAL= ( (12,13,14,10),
(15,16,17,10),(18,19,20,10) );
CONST m_2:ARRAY[1..3,1..4] OF REAL= ( (1,1,1,1),
(1,1,1,1),(1,1,1,1) );
VAR m_suma:ARRAY[1..3,1..4] OF REAL;
VAR i,j:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 3 DO
FOR j:=1 TO 4 DO
m_suma[i,j]:=m_1[i,j]+m_2[i,j];
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(m_1[i,j]:5:2,' ');
WRITELN(' ');
END;
WRITELN(' ');
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(m_2[i,j]:5:2,' ');
WRITELN(' ');
END;
WRITELN(' ');
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(m_suma[i,j]:5:2,' ');
WRITELN(' ');
END;
END.

Página 143
Escribir un programa que lea tres números enteros e indique si
están o no, en orden numérico ascendente o descendente.

PROGRAM EJER_001;
Uses Crt;
var num1,num2,num3:Integer;

Begin
ClrScr;

WRITELN('Introduzca tres numeros:');


WRITE('Numero 1: '); READLN(num1);
WRITE('Numero 2: '); READLN(num2);
WRITE('Numero 3: '); READLN(num3);

WRITELN;
WRITELN;

If (num1 > num2) and (num2 > num3) then


WRITELN('Ha introducido los numeros en orden decreciente.')
Else if (num1 < num2) and (num2 < num3) then
WRITELN('Ha introducido los numeros en orden creciente.')
Else
WRITELN('No ha introducido los numeros en orden.');
End.

Escribir un programa que lea 5 valores de temperatura, y escriba el


número de veces que estuvo bajo 0º.

PROGRAM EJER_002;
Uses Crt;
var temp,i,cont:Integer;
Begin
WRITELN ('Introduzca 5 valores de temperatura:');
WRITELN;
cont := 0;
For i := 0 to 4 do
Begin
WRITE('Valor ',i + 1,' : '); {i + 1 mostrará valores
del 1 al 5}
Readln(temp);
If temp < 0 Then
inc(cont); {cont = cont + 1}
End;
WRITELN;
WRITE('La temperatura ha estado ',cont);
If cont = 1 then
WRITE (' vez bajo 0')
Else
WRITE (' veces bajo 0');
End.

Página 144
Se realiza un examen, se piden las notas del número de alumnos
introducidos por el usuario, las cuales pueden ser únicamente
enteras entre 0 y 100. Debe decirse cuantos <60, entre 60 y 100 han
aparecido.

PROGRAM EJER_003;
Uses Crt;
var cero, sesenta, cien: Integer;
var nota, i, alumnos: Integer;
var notas_no: Array [1..30] of Integer;
Begin
ClrScr;

WRITE('Introduzca el numero de alumnos: '); READLN(alumnos);


WRITELN;
WRITELN('Introduzca las calificaciones:');
WRITELN;
For i := 1 to alumnos do
Begin
WRITE('Alumno: '); READLN(nota);
If nota = 0 then inc(cero)
else if nota = 5 then inc(cinco)
else if nota = 10 then inc(diez)
else
notas_no[i] := nota;
End;
WRITELN;
WRITE('Ha habido ',cero);
If cero = 1 then WRITELN(' cero.') else WRITELN
(' ceros.');
WRITE('Ha habido ',cinco);
If cinco = 1 then WRITELN(' cinco.') else WRITELN
(' cincos.');
WRITE('Ha habido ',diez);
If diez = 1 then WRITELN(' diez.') else WRITELN
(' dieces.');
WRITELN;
WRITELN('Las notas aparecidas que no son 0, 5 o 10 son: ');
For i := 1 to i DO
IF notas_no[i] <> 0 then WRITE(notas_no[i],', ');
END.

Página 145
Escribir un programa en Pascal que sume los valores que hay por
encimade la diagonal principal. Los valores se pueden asignar como
una constante.

PROGRAM EJER008;
Uses Crt;
Const N = 4; {Numero de filas y columnas de la matriz}
Const matriz: Array [1..N,1..N] of Integer = ((1, 2, 3, 4),
( 5, 6, 7, 8),( 9,10,11,12),(13,14,15,16));
{Declaramos la matriz}
var i, j, suma: Integer;
{i se corresponde con las filas y j con las columnas}
Begin
ClrScr; {limpiamos la pantalla}
{los valores de la diagonal principal son (1,1) (2,2) (3,3) (4,4).
Como este ejercicio consiste en sumar los valores que hay encima de
la diagonal principal, sumares: 2 + 3 + 4 + 7 + 8 + 12}
{Escribimos la matriz original y coloreamos los valores que
necesitamos}
For i := 1 to N Do
Begin
For j := 1 to N Do
Begin
If j > i then
Textcolor(9) {Cambiando el numero
elegiremos el color}
Else
TextColor(7);
WRITE(matriz[i,j]:3);
End;
WRITELN(' ');
End;
WRITELN;{Suma de los valores de la primera fila de la matriz}
i := 1;
FOR j := 2 to N do
Begin
suma := suma + matriz[i,j];
WRITELN(suma); {Lo escribimos para chequear los
valores,
podriamos escribir un write al final y seria suficiente}
End;
{Suma de los valores de la segunda fila}
i := 2;
FOR j := 3 to N do
Begin
suma := suma + matriz[i,j];
WRITELN(suma);
End;
WRITELN;{Suma de los valores de la tercera fila}
i := 3;
FOR j := 4 to N do {N ya vale 4, por lo que solo se realiza
1 vez el bucle}
Begin
suma := suma + matriz[i,j];
WRITELN('El resultado final es: ',suma);
End;
End.

Página 146
Escribir un programa que muestre en pantalla VS2, usando procedure.

PROGRAM VS2 (INPUT, OUTPUT);


Uses Crt;

PROCEDURE letra_V;
BEGIN WRITELN('V V');
WRITELN(' V V ');
WRITELN(' V V ');
WRITELN(' V V ');
WRITELN(' V ');
END;
PROCEDURE letra_S;
BEGIN
WRITELN('SSSSSSS');
WRITELN('S ');
WRITELN('SSSSSSS');
WRITELN(' S');
WRITELN('SSSSSSS');
END;
PROCEDURE num_2;
BEGIN
WRITELN('2222222');
WRITELN(' 2');
WRITELN('2222222');
WRITELN('2 ');
WRITELN('2222222');
END;
BEGIN {empezamos el programa principal}
ClrScr;
letra_V; WRITELN;
letra_S; WRITELN;
num_2;
REPEAT Until Keypressed; {mantenemos la pantalla viendo la
solución hasta que se pulse una tecla}
END.

Hacer un programa que incremente un número usando un PROCEDURE.

PROGRAM incrementar (INPUT, OUTPUT);


Uses Crt;
VAR num: INTEGER;
PROCEDURE incremento;
BEGIN
num := num + 1;
END;
BEGIN
ClrScr;
WRITE('Introduzca un numero para incrementarle: ');
READLN(num);
WRITELN;
incremento;
WRITE('El numero, incrementado en una unidad, es: ',num);
REPEAT Until Keypressed;
END.

Página 147
Escribir un programa que, utilizando procedimientos con parámetros,
lea desde el teclado las unidades y el precio que quiere comprar, y
en funcion de las unidades introducidas le haga un descuento o no.
PROGRAM productos (INPUT, OUTPUT);
Uses Crt;
CONST
Desc = 15; {le haremos un 15% de descuento}
VAR
Unidades, precio: INTEGER;
Total, cantDesc: REAL;
PROCEDURE descuento (VAR cantidad, descuento: REAL; porciento:
INTEGER);
BEGIN
Descuento := cantidad * porciento/100;
Cantidad := cantidad - descuento;
END;
BEGIN
ClrScr;
WRITE('Introduzca el numero de unidades: ');
READLN(unidades);
WRITELN;
WRITE('Introduzca el precio: ');
READLN(precio);
WRITELN;
Total := precio * unidades; {Calculamos el total}
IF (unidades > 5) THEN descuento (total, cantDesc, desc)
ELSE cantDesc := 0;
WRITELN('Total: ',total:5:2,' Descuento: ',cantdesc:5:2);
REPEAT Until Keypressed;
END.

Hacer un programa que calcule el area de un círculo,usando PROCEDURE.

PROGRAM area (INPUT, OUTPUT);


Uses Crt;
VAR radiocirc, resultado: REAL;
PROCEDURE areacirculo (radio: REAL; VAR area: REAL);
CONST pi = 3.1415926535;
BEGIN
area := pi * SQR(radio);
END;
BEGIN
ClrScr;
WRITE('Introduzca el radio del circulo: ');READLN radiocirc);
WRITELN;
IF (radiocirc > 0) THEN
BEGIN
areacirculo(radiocirc, resultado);
GOTOXY(20,5);
WRITELN('El area del circulo es: ',resultado:8:2);
END
ELSE
WRITE('No puede introducir un radio negativo.');
REPEAT Until Keypressed;
END.

Página 148

Вам также может понравиться