Академический Документы
Профессиональный Документы
Культура Документы
Introducción a la
Computación
MATERIAL DE ESTUDIO
SERGIO ALVAREZ GARCIA
I. Información General
Plan : 1997
Código : CO122
Semestre : III - IV
Precedencia : Matemática I
Co – Requisito : Ninguno
Créditos : 05
Horas Semestrales : 84
Frecuencia Semanal : 06
II. Objetivos
- Objetivos Generales:
- Objetivos Específicos:
V. Recomendaciones Metodológicas
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.
%
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
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.
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 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
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.
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.
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,
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.
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.
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)
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.
Página 14
Figura 20. Lenguaje de Alto Nivel.
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
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.
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.
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.
Los directorios son, dentro de las unidades, carpetas donde se guardan los ficheros.
El DOS tiene unos cien comandos, que para poder ser ejecutados necesitan tres ficheros:
2
Estructura General del Sistema MS−DOS
− La ROM−BIOS.− Programas de gestión de entrada y salida entre el Sistema Operativo y los dispositivos
básicos del ordenador.
− 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.
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.
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).
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.
− 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.
− 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.
Sirve para inicializar una serie de funciones no imprescindibles, introducir datos, activar controles del sistema
y cargar programas automáticamente.
No tiene limitación de tamaño y debe estar en el directorio desde el cual arranca el sistema.
− 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.
Directorios
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)
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.
Esto no se cumple para el directorio raíz ya que este no puede tener directorio padre
Ficheros
Debe tener:
− Especificador de 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 (^, $, !, #, %, &, {, }, (, ), −, _, ...).
5
− BAT: fichero de procesamiento por lotes.
− C: fichero en C.
Caracteres comodines
−*: 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.
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:
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.
Existen varios comandos relacionados con el manejo de directorios en MS−DOS, los más importantes son:
− DELTREE: Borra un directorio sin necesidad de que esté vacío. Es un comando externo.
− 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).
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:
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 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.
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).
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.
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.
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).
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
CREAR UN OBJETO VINCULADO O INCRUSTADO DE MICROSOFT EXCEL 11
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.
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 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.
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.
En esta vista la pantalla nos muestra cómo quedará el documento una vez pasado al papel.
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.
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.
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” .
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
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).
6
1.6. Dar formato a los párrafos
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 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”.
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.
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.
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.
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.
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.
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.
11
1.14. Ecuaciones.
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.
12
1.15. Diagramas de flujo.
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.
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.
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.
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.
5
Selecciona el área A4:D4 y formato celda Fijamos y seleccionamos
los bordes tal como aparece en la imagen.
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
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.
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.
#¡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!
#¡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.
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,
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
escribir en lugar de .
2. En la celda B7 escribimos la fórmula que construirá la sucesión de preimagenes para la
13
4. Para construir las imagenes correspondientes a la sucesión de preimagenes, procedemos
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
15
Figura 6: Gráficas de las funciones: y
Con lo cual, para trazar su gráfica lo único que debemos de hacer es construir una tabla de valores
16
primero debemos parametrizarla:
Y ahora generamos la tabla de valores de la misma manera en la que lo hemos estado haciendo:
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
La gráfica de una ecuación polar puede verse como un caso particular de una curva
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.
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.
19
Figura 8: Gráfica de la ecuación polar
Graficando superficies
región .
son y que las filas son y vamos a generar una partición para cada intervalo con un
incremento de :
20
En la celda B6 escribimos la fórmula =B5 + 0,1 que generará la partición del
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.
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”.
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
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.
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.
**
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
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
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)
3,5
2,5
2
altura (m)
1,5
0,5
0
0 50 100 150 200 250 300 3
Tiempo s
Temperatura - Altura
22,3
22,25
22,2
22,1
22,05
22
21,95
0 0,5 1 1,5 2 2,5 3
Altura (m)
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)
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
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)
23,6 23,6
23,4 23,4
23,2
23,2
23
23
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).
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
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.
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
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
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
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
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
***
También podría haberse utilizado, en este caso con ventaja, cualquier programa de cálculo, como
“Derive”
20
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)
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
5. ANEXO
π
2
dθ
I F (k ) = ∫
0 1 − k 2 sen 2θ
π
2
II E (k ) = ∫
0
1 − k 2 sen 2θ dθ
π
2
dθ
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
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
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.
Página 18
2.4.- ENTIDADES PRIMITIVAS
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.
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).
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.
Página 19
Reglas para formar un identificador
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
Por su contenido
Página 20
Por su uso
2.4.5.- Expresiones
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.
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
Ejemplos:
Expresión Resultado
7/2 3.5
12 mod 7 5
4+2*5 14
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
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.
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)
Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos
valores pueden ser resultado de una expresión relacional.
Ejemplo:
Para los siguientes ejemplos T significa verdadero y F falso.
Operador Not
Operando Resultado
T F
F T
Operador And
T AND T T
T F F
F T F
F F F
Página 23
Operador Or Operador Or
1. Not
2. And
3. Or
1. ()
2. ^
3. *, /, Mod, Not
4. +, -, And
5. >, <, > =, < =, < >, =, Or
Página 24
2.5.- TÉCNICAS DE DISEÑO
2.5.2.- Bottom Up
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
Símbolo Descripción
Página 26
Símbolo de decisión. Indica la
realización de una comparación de
valores.
Página 27
Líneas de flujo o dirección. Indican la
secuencia en que se realizan las
operaciones.
2.5.3.2.- Pseudocódigo
Página 28
2.5.3.3.- Diagramas estructurados (Nassi-Schneiderman)
Página 29
2.6.1.- Estructuras Secuenciales
Página 30
2.6.2.- Intrucciones de Asignación
Página 31
2.6.5.- Declaracion de Varibles y Constante.
Contador: ENTERO
Edad, I: ENTERO
Direccion : CADENA_DE_CARACTERES
Salario_Basico : REAL
Opcion : CARACTER
CONSTANTE Pi =3.14159
CONSTANTE Msg= “Presione una tecla y continue”
CONSTANTE ALTURA= 40
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.
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:
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:
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:
Página 34
2.6.4.- Múltiples (En caso de):
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.
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.
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.
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
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:
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:
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.
Página 39
Ejemplo 2: Usando una estructura Mientras, realizar un algoritmo que escriba los
números de uno en uno hasta 20
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.
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).
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.
Ejemplo:
Type
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.
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.
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:
Ejem.
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:
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.
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:
IF THEN ELSE.
Formato:
ELSE
Ejem.
IF n>O then
ELSE
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:
(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
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);
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
Readln (N);
Contador:=1;
While contador<=N do
Begin
Write (contador:5);
Contador:=contador+1;
End;
Writeln;
End.
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.
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:
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.
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.
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.
Ejemplo: PFl y PF2 se pasan por valor. PF3 se pasa por variable.
Program Uno;
Uses crt;
Var
Entero 1 ,entero2 : integer;
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).
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.
Type
Rango1 = tipoordinal1;
Rango2 = tipoordinal2;
...
rangon = tipoordinaln;
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
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);
La funcion concat realiza la misma funcion que el operador de concatenacion. La sintáxis es:
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';
Ejemplo: Longitud:=length(cad1);
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)
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
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
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
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
y2-y1
pendiente =
x2-x1
b c
factor = 1+ +
v v2
v2
fricción =
30s
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;
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.
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.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.
Días hábiles 10 2
Días festivos 15 3
Página 65
6. ARRAYS UNIDIMENSIONALES
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.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.
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.
7. ARREGLOS BIDIMENSIONALES
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:
Producto1
Producto2
Producto100
Total Mes
Producto
más vendido
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.
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.
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.
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.
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
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.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.
x = 10 y = 2
END.
Página 73
2.2. PROGRAM EJER2B;
USES CRT;
VAR x,y:REAL;
VAR suma,rest,mult:REAL;
VAR divi:REAL;
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;
lado1 = 3 lado2 = 4
área del rectángulo=lado1 * lado2
PROGRAM EJER03;
USES CRT;
VAR lado1,lado2:INTEGER;
VAR area:INTEGER;
BEGIN
lado1:=3;
lado2:=4;
{Damos valores para las variables}
ClrScr;
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;
area:=lado1*lado2;
END.
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;
longitud:=2*3.1416*radio;
area:=3.1416*radio*radio;
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;
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;
PROGRAM EJER7B;
USES CRT;
VAR radio:REAL;
VAR volumen:REAL;
BEGIN
{Este programa calcula el volumen de una esfera}
ClrScr;
volumen:=(4/3)*3.1416*(radio*radio*radio);
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.
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;
ClrScr;
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;
ClrScr;
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;
END.
Página 80
SERIE DE PROBLEMAS RESUELTOS 2
PROGRAM EJER11;
USES CRT;
VAR radio,altura:REAL;
VAR area,volumen:REAL;
BEGIN
radio:=3;
altura:=6;
ClrScr;
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
ClrScr;
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.
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;
ClrScr;
END.
PROGRAM EJER13B;
USES CRT;
VAR l1,l2,l3:REAL;
VAR area,volumen:REAL;
BEGIN
{Calcula el area y volumen de un prisma}
ClrScr;
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.
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}
END.
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.
PROGRAM EJER18;
USES CRT;
VAR a,b,c:REAL;
VAR x1,x2:REAL;
BEGIN
a:=6;
b:=6;
c:=1;
END.
Página 86
PROGRAM EJER18B;
USES CRT;
VAR a,b,c:REAL;
VAR resultado1,resultado2:REAL;
BEGIN
ClrScr;
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;
h:=sqrt(sqr(c1)+sqr(c2));
Página 88
SERIE DE PROBLEMAS RESUELTOS 3
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
Página 89
PROGRAM EJER21;
USES CRT;
VAR t_C,t_F:REAL;
BEGIN
ClrScr;
t_F:=((t_C*9)/5)+32;
ClrScr;
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;
ClrScr;
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;
intereses:=capital*(interes/100);
ClrScr;
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;
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}
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.
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.
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;
Página 97
SERIE DE PROBLEMAS RESUELTOS 4
PROGRAM EJER31;
USES CRT;
VAR pato_donald:CHAR;
BEGIN
ClrScr;
PROGRAM EJER34;
USES CRT;
VAR num:INTEGER;
BEGIN
ClrScr;
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;
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.
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;
PROGRAM EJER37;
USES CRT;
VAR num1,num2,temp:INTEGER;
BEGIN
ClrScr;
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;
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;
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;
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;
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;
Página 103
SERIE DE PROBLEMAS RESUELTOS 5
PROGRAM EJER41;
USES CRT;
PROGRAM EJER41;
USES CRT;
VAR pre_hor,hor_tra,hor_ext,sal_sem:REAL;
BEGIN
ClrScr;
pre_hor:=2000;
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;
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.
PROGRAM EJER43;
USES CRT;
VAR x:INTEGER;
BEGIN
x:=0;
ClrScr;
REPEAT
WRITELN (x);
x:=x+1;
UNTIL x=10;
END.
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.
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;
Página 106
Escribir un programa en Pascal que sume los números comprendidos
entre 1 y 10.
PROGRAM EJER47;
USES CRT;
num:=1;
x:=1;
PROGRAM EJER48;
USES CRT;
PROGRAM EJER48;
USES CRT;
VAR num,sem:INTEGER;
BEGIN
ClrScr;
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.
Página 108
SERIE DE PROBLEMAS RESUELTOS 6
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;
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;
WHILE num<=100 DO
BEGIN
WRITE('Introduzca un numero -> '); READLN(num);
END;
END.
PROGRAM EJER53;
USES CRT;
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.
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;
{Calculo de impuestos}
sal_net:=sal_bru-tas_imp;
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;
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;
PROGRAM EJER57;
USES CRT;
VAR val_ini,val_dep,tas_dep:REAL;
VAR i,anios:INTEGER;
BEGIN
ClrScr;
tas_dep:=val_ini/anios;;
val_dep:=val_ini-tas_dep;
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.
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
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.
PROGRAM EJER73;
USES CRT;
VAR numero, cuadrado:REAL;
BEGIN
ClrScr;
WRITE ('Escriba un numero para hacer su cuadrado: ');
READLN (numero);
WRITELN ('');
cuadrado:= sqr(numero);
PROGRAM EJER73;
USES CRT;
VAR numero:LONGINT;
BEGIN
ClrScr;
numero:=821;
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;
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;
BEGIN
i_neto:= i_bruto - (i_bruto * 0.05);
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;
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;
BEGIN
suma:= suma + (sqr(x));
END;
WRITE (suma);
END.
PROGRAM EJER77;
USES CRT;
VAR i:INTEGER;
VAR sumacuad:LONGINT;
BEGIN
ClrScr;
PROGRAM EJER78;
USES CRT;
m_mar:=m/1852;
m_terr:=m/1609;
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.
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;
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);
Página 125
SERIE DE PROBLEMAS RESUELTOS 8
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.
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.
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;
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.
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.
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;
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.
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;
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.
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;
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.
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.
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;
WRITELN;
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;
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.
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.
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.
Página 148