1. UNIVERSIDAD AUTÓNOMA DE OCCIDENTE
FACULTAD DE INGENIERÍAS
DEPARTAMENTO DE OPERACIONES Y SISTEMAS
PROGRAMA DE INGENIERÍA INFORMÁTICA
INFORMÁTICA 1
(Algoritmos con Java)
MATERIAL RECOPILADO POR LOS PROFESORES
J. ANTONIO LEMOS B. Y EDUARDO VICTORIA Z.
SANTIAGO DE CALI, FEBRERO DE 2007
Informática 1. Versión 1.3 Enero de 2010
1
.
2. ASIGNATURA: INFORMÀTICA 1
CODIGO: 532219
CREDITOS: 3
PRERREQUISITOS: (Ninguno)
CARACTERÍSTICAS: HOMOLOGABLE, VALIDABLE
FACULTAD: INGENIERÍA
PROGRAMA: INGENIERÎA INFORMÁTICA, ELECTRICA,
MECANICA, ELECTRÓNICA,
MECATRÓNICA, BIOMÉDICA, INDUSTRIAL,
AMBIENTAL, MULTIMEDIA
DEPARTAMENTO QUE OFRECE: CIENCIAS DE LA INFORMACIÓN
AREA: INFORMÂTICA
PERIODO ACADÉMICO: 2007 – 1 ( Enero – Mayo )
I. OBJETIVO GENERAL
Capacitar al estudiante en el diseño e implementación de algoritmos computacionales,
utilizando los conceptos básicos de la algoritmia, e introduciéndolo en el estudio de la
programación orientada a objetos.
II. OBJETIVOS ESPECÍFICOS
• Identificar los sistemas básicos de numeración y sus operaciones fundamentales.
• Comprender las operaciones básicas de la lógica booleana.
• Modelar procesos mediante técnicas algorítmicas.
• Reconocer y aplicar correctamente las diferentes estructuras de decisión y de repetición
en programación de computadores.
• Conocer y apropiar el paradigma Orientado a Objetos y su aplicación en la programación.
III. CONTENIDO PROGRAMÁTICO
UNIDAD 1 – Algoritmos
1.1 Procedimiento
1.2 Ciclo de Diseño
1.3 Definición
1.4 Propiedades de los Algoritmos
1.5 Representación de los datos
1.6 Estructuras secuenciales
1.7 Estructuras condicionales
1.8 Estructuras de repetición
Informática 1. Versión 1.3 Enero de 2010
2
.
3. 1.9 Ejercicios resueltos
1.10 Ejercicios propuestos
UNIDAD 2 – Introducción a Java
2.1 Historia de Java
2.2 Características básicas de Java
2.2.1 Orientado a objetos puro
2.2.2 Simple
2.2.3 Distribuido
2.2.4 Robusto
2.2.5 Seguro
2.2.6 Arquitectura Neutral
2.2.7 Portable
2.2.8 Interpretado
2.2.9 Alto desempeño
2.2.10 Multihilos
2.2.11 Dinámico
2.3 La estructura de Java
2.4 Instalación de Java
2.5 Construcción básica de una aplicación
2.5.1 Edición
2.5.2 Compilación
2.5.3 Carga
2.5.4 Verificación
2.5.5 Ejecución
UNIDAD 3 - Tipos de datos, variables y Operadores (Java)
3.1 Variables
3.1.1 Nombres de Variables
3.2 Palabras reservadas
3.3 Tipos de datos
3.3.1 Tipos Primitivos de Datos
3.3.2 Tipos Referencia a Objeto
3.4 Declaración e inicialización de las variables
3.5 Promoción de datos (Casting)
3.5.1 Conversión automática de Java
3.5.2 Conversión de tipos incompatibles
3.6 Visibilidad y vida de las variables
3.7. Operadores de java
3.7.1 Operadores aritméticos
3.7.2 Operador módulo ( % )
3.7.3 Operadores de asignación
3.7.4 Operadores unarios
3.7.5 Operador instanceof
Informática 1. Versión 1.3 Enero de 2010
3
.
4. 3.7.6 Operador condicional ?:
3.7.8 Operadores de incremento y decremento
3.7.9 Operadores relacionales
3.7.10 Operadores lógicos boléanos
3.7.11 Operador de concatenación de cadenas de caracteres (+)
3.7.12 Operadores que actúan a nivel de bits
3.8 Precedencia y asociatividad de los operadores
UNIDAD 4 - Sentencias de control en Java
4.1 Estructura Secuencial
4.1.1 Salida de datos estándar
4.1.2 Entrada de datos estándar
4.2 Sentencias de decisión o selección
4.2.1 Selección simple ( if )
4.2.2 Selección doble ( if – else ; if – else - if )
4.2.3 Selección múltiple ( switch )
4.3 Sentencias de Repetición ( ciclos o bucles)
4.3.1 Ciclo para ( for )
4.3.2 Ciclo mientras ( while )
4.3.3 Ciclo haga mientras ( do – while )
UNIDAD 5 – Métodos
5.1 Definición de métodos
5.2 Paso de Parámetros
5.3 Llamado a Métodos
Apendice A – Algunos conceptos de la programación orientada a objetos (P.O.O)
IV. METODOLOGÍA
Durante el curso se emplearán las siguientes Métodos Pedagógicos:
• Clase: Mediante la cual el profesor da explicaciones sobre algunos temas, resuelve
interrogantes y aclara dudas. Los estudiantes, por su parte, escuchan las
exposiciones, toman notas, preguntan y participan opinando y aclarando dudas.
• Estudio Independiente: El estudiante de manera independiente realiza lecturas,
tareas, consulta libros, realiza composiciones escritas y ejercicios.
• Taller: En el cual se realizan ejercicios de práctica de los conceptos revisados en el
curso.
• Tutoría: Donde profesor y estudiante trabajan sobre el proceso, las dificultades y los
problemas que va teniendo el estudiante: le ayuda a interpretar lo que está
ocurriendo.
Trabajos de Consulta:
1. Sistemas de Numeración. Sistema Binario, Octal, Hexadecimal. Conversión entre
sistemas. Suma, Resta, Multiplicación y División en Sistema Binario.
Informática 1. Versión 1.3 Enero de 2010
4
.
5. 2. Sistemas lógicos. Tautología y contradicciones, equivalencia lógica, enunciados
condicional y bicondicional, y argumentos
3. Programación Orientada a Objetos. Historia, Características, Aspectos Básicos. Historia
de JAVA.
V. EVALUACIÓN
La evaluación del curso considerará los siguientes momentos evaluativos:
• Primer Examen Parcial
• Segundo Examen Parcial
• Examen Final (acumulativo)
• Talleres
• Prácticas
• Quices
• Trabajos de Consulta
VI. REFERENCIAS
BIBLIOGRÁFICAS
1. Área de Informática UAO, Módulo de Informática 1, Publicaciones UAO.
2. CEBALLOS, Francisco J., JAVA 2 Curso de Programación. Ed. Alfaomega. Ra–Ma.
2000.
3. Joyanes Aguilar Luis & Zahonero Martínez Ignacio, “Programación en Java 2 –
Algoritmos, Estructuras de Datos y Programación orientada a Objetos”, Ed.
McGrawHill, 2002.
4. DEITEL, H.M., DEITEL, P. J. How to program Java. 3ª Edición. Ed. Prentice Hall. 2000.
5. FROUFE, Augustín. JAVA2 Manual de Usuario y Tutorial. 2ª Edición Ed. Alfa Omega
2000.
6. WU, Thomas C. Introducción a la programación orientada a objetos con Java. Ed. Mc
Graw Hill. España. 2000.
7. ARNOW, David. WEISS, Gerald, Introducción a la programación con Java. Un enfoque
orientado a objetos. Ed. Addison Wesley. España.2001
ELECTRÓNICAS
1. Descargar el software – J2SE, del sitio web: ) http://java.sun.com/javase/downloads/index.jsp
2. Descargar el editor – NetBeans del sitio web:
http://www.netbeans.org/downloads/start.html?platform=windows&lang=en&option=all&versi
on=6.7.1
3. Documentación de JAVA (JDK 1.6) http://java.sun.com/javase/downloads/index.jsp
4. Tutorial de Java http://java.sun.com/docs/books/tutorial/
5. Free Electronic Books in Java and C++: http://www.ibiblio.org/pub/docs/books/eckel/
Informática 1. Versión 1.3 Enero de 2010
5
.
6. 6. Aprenda Java como si estuviera en primero
http://www.abcdatos.com/tutoriales/tutorial/l7041.html
7. Tutorial de Java (Augustin Froufe) http://www.cica.es/formacion/JavaTut/
8. Java en Castellano http://programacion.com/java/
FUENTES DE DONDE SE RECOPILÓ EL MATERIAL PARA LA ELABORACIÓN DE
ESTE MÓDULO DE INFORMÁTICA I.
- Universidad de Valencia, España, Depto. de Informática
http://informatica.uv.es/docencia/fguia/TI/Libro/PDFs/CAPI4.pdf
- Universidad de Oviedo,España, Depto. de Informática
Profesor Daniel Gayo.
http://di002.edv.uniovi.es/~dani/asignaturas/
- Aprenda Java como si estuviera en primero, Escuela Superior de Ingenieros Industriales de San
Sebastián.
http://mat21.etsii.upm.es/ayudainf/aprendainf/Java/Java2.pdf
- Matemáticas para Computación, Seymour Lipschutz, McGraw – Hill, 1992
Informática 1. Versión 1.3 Enero de 2010
6
.
7. UNIDAD 1. ALGORITMOS
1.1 Procedimiento de Datos
1.2 Ciclo de Diseño
• Requerimiento - Características que se desea que posea un sistema o un software.
• Diseño - proceso previo de configuración mental en la búsqueda de una solución en cualquier
campo.
• Especificación - documento técnico oficial que establece de forma clara todas las características,
los materiales y los servicios necesarios para producir componentes destinados a la obtención
de productos.
• Implementación – Traducir a un lenguaje de programación concreto un algoritmo.
• Formas y métodos para llevar a cabo algo.
Informática 1. Versión 1.3 Enero de 2010
7
.
8. 1.3 Concepto de Algoritmo
Definición de algoritmo. Etimología del término algoritmo
En general, un algoritmo es una secuencia de instrucciones o pasos que es llevada a cabo de forma
mecánica y sistemática por un actor que se desenvuelve en un ambiente o entorno dado, para resolver
un problema determinado en un tiempo finito.
Esa es una definición válida de algoritmo. Otras posibles definiciones son las siguientes:
Un algoritmo es un conjunto de instrucciones combinadas de forma adecuada para resolver un
determinado problema en una cantidad finita de tiempo. Cada instrucción es una indicación sencilla y
no ambigua.
Secuencia de instrucciones o pasos que es llevada a cabo de forma mecánica y sistemática por un
actor que se desenvuelve en un ambiente o entorno dado, para resolver un problema determinado en
un tiempo finito.
Despues de los siguientes ejemplos, el lector debería tener bastante claro qué es un algoritmo, en qué
consiste y dar ejemplos de algoritmos. Ahora, es probable que se esté preguntando de dónde procede
el mismo término, “ALGORITMO”, ¿por qué denominamos “algoritmos” a los algoritmos y no
“recetas” o “combinaciones de indicaciones sencillas y no ambiguas...”?
El término proviene de Mahommed ibn Musa al-Khowârizmî (Mahommed, hijo de Musa, natural de
Kharizm), matemático persa del siglo IX; las matemáticas le deben la introducción del sistema de
numeración actual y del álgebra.
En su libro De numero indiorum (Sobre los números hindúes) proporciona las reglas para realizar las
operaciones aritméticas (con los nuevos números, por supuesto), dichas reglas se denominaron “reglas
de al-Khowârizmî” y, por deformación “algoritmos”, haciéndose extensivo el término a cualquier
conjunto de reglas para resolver un problema determinado. Como nota curiosa, un esbozo del rostro
de al-Khowârizmî aparece en la portada del clásico libro de Álgebra del Profesor Cubano Aurelio
Baldor, muy conocido en la Literaura de las Matemáticas Hispanoparlantes.
Informática 1. Versión 1.3 Enero de 2010
8
.
9. 1.4 Propiedades de los Algoritmos
• Su lógica de construcción debe ser
• Independiente del lenguaje
• Simplicidad
• Definido: sin ambigüedades
• Preciso: orden específico de sentencias
• Finito: principio y fin
• Efectivo: Funciona y funciona de acuerdo a los requerimientos
Ejemplos de Algoritmos :
Ejemplo 1:
Elaborar el análisis general que responda a la pregunta: ¿Qué debo hacer para ver la película Avatar?.
1. Ir al cine donde proyectan Avatar.
2. Comprar una entrada.
3. Ver la película.
4. Regresar a casa.
Ejemplo 2:
Elaborar el análisis para obtener el área de un círculo y la longitud de su circunferencia.
1. Utilizar las fórmulas del área y la circunferencia en función del radio.
2. Las entradas de datos se reducen al dato correspondiente al radio del círculo.
3. Las salidas serán los datos solicitados: área y longitud de la circunferencia.
Ejemplo 3:
Instrucciones para subir una escalera
[...] Las escaleras se suben de frente, pues hacia atrás o de costado resultan particularmente
incómodas. La actitud natural consiste en mantenerse de pie, los brazos colgando sin esfuerzo, la
cabeza erguida aunque no tanto tal que los ojos puedan ver los peldaños inmediatamente superiores al
que se pisa, y respirando lenta y regularmente. Para subir una escalera se comienza por levantar esa
parte del cuerpo situada a la derecha abajo, envuelta casi siempre en cuero o gamuza, y que salvo
excepciones cabe exactamente en el escalón. Puesta en el primer peldaño dicha parte, que para
abreviar llamaremos pie, se recoge la parte equivalente de la izquierda (también llamada pie, pero que
no ha de confundirse con el pie antes citado), y llevándola a la altura del pie, se le hace seguir hasta
colocarla en el segundo peldaño, con lo cual en éste descansará el pie, y en el primero descansará el
pie. Los primeros peldaños son siempre los más difíciles, hasta adquirir la coordinación necesaria.
La coincidencia de nombre entre el pie y el pie hace difícil la explicación. Cuídese especialmente de
no levantar al mismo tiempo el pie y el pie.
Llegando en esta forma al segundo peldaño, basta repetir alternadamente los movimientos hasta
encontrarse con el final de la escalera. Se sale de ella fácilmente, con un ligero golpe de talón que la
fija en su sitio, del que no se moverá hasta el momento del descenso.
Informática 1. Versión 1.3 Enero de 2010
9
.
10. Ejemplo 4:
Elaborar Tortilla de patatas a la española (6 personas)
Ingredientes:
- 2 vasos (de los de agua) de aceite (1/2 litro)
- Sal
- 8 huevos
- 1 kg de patatas
Se pelan las patatas, se lavan y se secan con un paño; se parten en dos a lo largo y después se cortan
en láminas finitas. Se pone el aceite a calentar en la sartén y se fríen las patatas, moviéndolas de vez
en cuando y echándoles un poco de sal.
Una vez fritas (más o menos doradas, según gusten), se separan y se ponen a escurrir en un colador
grande. Se quita el aceite sobrante de la sartén.
Aparte se baten los huevos con tenedor y muy fuerte; se pone un poco de sal; en el mismo plato de los
huevos se echan las patatas y se mueven con un tenedor.
En una sartén grande (o en dos pequeñas) se ponen 3 cucharadas soperas de aceite para que sólo cubra
el fondo. Cuando está caliente se vierte la mezcla de huevos y patatas. Se mueve la sartén por el
mango para que no se pegue la tortilla. Cuando se vea que está bien despegada y dorada (esto depende
del gusto de cada cual), se pone una tapadera encima, se vuelca la sartén y se escurre suavemente la
tortilla otra vez en la sartén. Se vuelve a mover por el mango y cuando esté cuajada (a gusto) se pasa a
una fuente redonda y se sirve.
Ejemplo 5:
Algoritmo “infantil”: Multiplicación de números enteros
Para obtener el producto de dos números enteros utilizando lápiz y papel se debe escribir el primer
factor (multiplicando) y, justo debajo y alineado a la derecha, el segundo factor (multiplicador).
Se recorren todas las cifras del multiplicador de derecha a izquierda y se operan con cada una de las
cifras el multiplicando, también de derecha a izquierda, escribiendo los resultados intermedios en
líneas separadas; cada línea estará desplazada una posición a la izquierda respecto a la línea
inmediatamente superior.
Una vez se han obtenido todos los resultados intermedios se suman columna a columna
obteniéndose el resultado final.
Numerando cada uno de los pasos a seguir en cada uno de los algoritmos, formalizamos un poco
nuestro lenguaje cotidiano para escribir algoritmos, veamos:
Informática 1. Versión 1.3 Enero de 2010
10
.
11. Ejemplo 6:
Cambiar la rueda pinchada de un automóvil teniendo un gato mecánico en buen estado, una rueda de
reemplazo y una llave inglesa.
Los pasos del algoritmo son:
1. Inicio.
2. Aflojar los tornillos de la rueda pinchada con la llave inglesa.
3. Ubicar el gato mecánico en su sitio.
4. Levantar el gato hasta que la rueda pinchada pueda girar libremente.
5. Quitar los tornillos y la rueda pinchada.
6. Poner rueda de repuesto y los tornillos.
7. Bajar el gato hasta que se pueda liberar.
8. Sacar el gato de su sitio.
9. Apretar los tornillos con la llave inglesa.
10. Fin.
Podríamos modificar este algoritmo, bien sea escribiendo más líneas de detalle ó uniendo algunos
pasos, y aún así funcionaría para resolver nuestro problema. Esto quiere decir que podemos tener
algoritmos diferentes, con diferente diseño, que resuelven el mismo problema. ¿Cuál de ellos es más
eficiente, hablando desde el punto de vista computacional? Ese es tema de otro curso, por el
momento nos debemos concentrar en cuál algoritmo es más claro, cual es más fácil de entender.
Ejemplo 7:
Un cliente hace un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente,
si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario lo rechaza. Elabore el
algoritmo correspondiente.
Los pasos del algoritmo son:
1. Inicio.
2. Leer el pedido.
3. Examinar la ficha del cliente.
4. Si el cliente es solvente, aceptar pedido; en caso contrario, rechazarlo.
5. Fin.
Ejemplo 8:
Averiguar si un número entero positivo es primo o no, dado que conocemos la definición de número
primo: un número entero positivo, N, es primo si sólo puede dividirse por si mismo y por la unidad.
Un método que nos puede dar la solución sería dividir sucesivamente el número por 2, 3, 4...N, y,
según el resultado, podríamos resolver el problema. Un diseño del mismo sería:
1. Inicio.
2. Solicitar el valor del número entero positivo y guardarlo en la variable N
3. Poner X igual a 2 ( X = 2, donde X es una variable que representa a los posibles divisores
de N ).
4. Dividir N por X ( o sea, operar N / X )
5. Si el resultado de N / X es entero, entonces N no es primo ( pues esto indicaría que N es
divisible entre X ) y saltar al punto 10; en caso contrario continuar el proceso en el siguiente
punto, 6.
6. Incrementar el divisor X en una unidad ( X = X + 1 )
7. Si X es menor que N saltar al punto 4, en caso contrario continuar el proceso en el siguiente
punto, 8.
Informática 1. Versión 1.3 Enero de 2010
11
.
12. 8. Declarar que N es primo.
9. Saltar al Fin (punto 11).
10. Declarar que N no es primo.
11. Fin.
Como parte del diseño de un algoritmo está la selección de aquél que sea razonablemente aceptable,
entre todos los muchos posibles que resuelven el mismo problema (el ejemplo que acabamos de dar
es claramente mejorable, pues si N no era divisible por 2 no tiene mucho sentido volverse a
preguntar si lo es por 4).
Durante el diseño es posible y aconsejable, realizar comparaciones entre algoritmos que resuelven el
mismo problema. La bondad de un algoritmo puede medirse por dos factores:
• El tiempo que se necesita para ejecutarlo. Para tener una idea aproximada de ello, basta con
saber el número de instrucciones de cada tipo necesarias para resolver el problema.
• Los recursos que se necesitan para implementarlo.
Así, una vez diseñado un primer algoritmo, conviene realizar una evaluación del mismo, cuestión a
veces nada fácil. Si se decide que éste no es eficiente será necesario o bien diseñar uno nuevo o bien
optimizar el original. Optimizar un algoritmo consiste en introducir modificaciones en él, tendientes
a disminuir el tiempo que necesita para resolver el problema o a reducir los recursos que utiliza.
Por ejemplo, el algoritmo del número primo se optimiza si N se declara como primo cuando X
supera a N / 2 y no esperar hasta que X llegue a N.
Ejemplo 9:
Realizar la suma de todos los números pares entre 2 y 1000.
El problema consiste en sumar 2 + 4 + 6 + 8 + 10 + . . . + 998 + 1000.
Utilizaremos las palabras SUMA y NUMERO (que llamaremos más tarde variables) para
representar las sumas sucesivas (2 + 4), (2 + 4 + 6), (2 + 4 + 6 + 8), etc.
La solución se puede escribir con el siguiente algoritmo:
1. Inicio.
2. Establecer SUMA a 0.
3. Establecer NUMERO a 2.
4. Sumar NUMERO a SUMA. El resultado será el nuevo valor de la suma (SUMA).
5. Incrementar NUMERO en 2 unidades.
6. Si NUMERO <= 1000 bifurcar (ó, ir) al paso 4; en caso contrario, escribir el último valor
de SUMA y terminar el proceso.
7. Fin.
Si se estudia con atención cada uno de los algoritmos anteriores, descubriremos una serie de
características interesantes que definen la naturaleza de lo que es un algoritmo:
• Un algoritmo resuelve un problema específico: subir una escalera, obtener una tortilla de
patatas, hacer una multiplicación o determinar el máximo común divisor de dos números.
• Un algoritmo es llevado a cabo por una entidad que trabaja en un entorno dado: una
persona cuyo universo inmediato se reduce a su propio cuerpo y una escalera; un cocinero con
una sartén, huevos, patatas, aceite, sal y cebolla; o un estudiante con lápiz y papel.
Informática 1. Versión 1.3 Enero de 2010
12
.
13. • Un algoritmo consta de una serie de pasos que deben llevarse a cabo siguiendo una
secuencia marcada: algunos de los pasos, en uno de los algoritmos anteriores, serían: dar la
vuelta a la tortilla, batir los huevos, pelar las patatas o cascar los huevos; dichos pasos deben
aplicarse en un orden prefijado y no de cualquier manera.
• Un algoritmo se aplica de forma mecánica: un algoritmo no precisa decisiones subjetivas ni
creatividad en su ejecución, cualquiera con una receta adecuada para obtener tortilla de patatas
logrará una tortilla de patatas. Sin embargo, sí es necesario un acto creativo para desarrollar un
nuevo algoritmo.
• Un algoritmo termina en un tiempo finito: todos los algoritmos deben finalizar, pueden
tardar más o menos tiempo en lograr un resultado pero dicho tiempo debe ser finito.
Diseño Descendente (Top Down), ó, Modular
Los problemas complejos se pueden resolver más eficazmente cuando se descomponen en
subproblemas que sean más fáciles de resolver que el original. Este método se denomina divide y
vencerás (Divide and conquere) y consiste en convertir un problema complejo en otros más simples
que, una vez resueltos, en su conjunto nos solucionen el original. Al procedimiento de
descomposición de un problema en subproblemas más simples, llamados módulos, para, a
continuación, seguir dividiendo estos subproblemas en otros más simples (otros módulos), se le
denomina diseño descendente (top down, en inglés). Las ventajas más importantes de este tipo de
diseño son:
1. El problema se comprende más fácilmente al dividirse en módulos o partes más simples. Cuando
se realice la programación, utilizaremos esta idea constantemente, de forma que hablaremos
también de subprogramas ó métodos ( procedimientos y / o funciones ).
2. Las modificaciones en los módulos son más fáciles, pues estamos ante algoritmos más sencillos.
3. La comprobación del problema se puede realizar más fácilmente, al poder localizar los posibles
fallos con mayor precisión.
Refinamiento por pasos
Durante el diseño, entenderemos por refinamiento por pasos, la metodología por la que en un primer
esbozo del algoritmo nos limitamos a señalar o describir un reducido numero de pasos, que deberán
ser expresados con mayor detalle posteriormente. Tras esta primera descripción, éstos se especifican
con mayor minuciosidad, de forma más extensa y con más pasos específicos. En cada nivel de
refinamiento hay que considerar dos fases: ¿Qué hace el módulo? para, a continuación, responder a
¿Cómo lo hace? Como es natural, dependiendo de la complejidad del problema se necesitarán
diferentes y sucesivos niveles de refinamiento antes de que pueda obtenerse un algoritmo con
suficiente nivel de detalle. Así, en el ejemplo del cálculo de la longitud de una circunferencia y la
superficie de su círculo, a pesar de presentar en su diseño un bajo nivel de complejidad, se puede
descomponer en subproblemas más simples:
1. leer datos de entrada,
2. calcular superficie y longitud,
3. escribir resultados.
El ejemplo siguiente, nos muestra el diseño de un algoritmo para un problema de carácter no
numérico
Informática 1. Versión 1.3 Enero de 2010
13
.
14. Ejemplo:
Diseñar un algoritmo que responda a la pregunta: ¿Qué debo hacer para ver la película MatriX?.
Un primer análisis nos conduce a un esbozo de solución, descomponiéndolo en cuatro módulos
sucesivos:
1. Ir al cine donde proyectan MatriX
2. Comprar una entrada
3. Ver la película
4. Regresar a casa
Estos cuatro pasos se pueden refinar un poco más y así este problema lo podríamos descomponer de
la siguiente forma, usando el lenguaje natural:
INICIO ALGORITMO para ver la película MatriX
consultar la cartelera de cines
SI proyectan XYZ ENTONCES
ir al teatro correspondiente
SINO proyectan XYZ
declarar el fracaso del objetivo y terminar
SI hay cola ENTONCES
ponerse en ella
MIENTRAS haya personas delante en la cola HACER
esperar el instante para avanzar en la cola
preguntar si quedan entradas
SI hay entradas ENTONCES
comprar una entrada
SINO quedan entradas
declarar el fracaso del objetivo, regresar a casa y terminar
encontrar el asiento correspondiente
MIENTRAS proyectan la película HACER
ver la película
abandonar el cine
regresar a casa
FIN ALGORITMO para ver la película MatriX
Algunas de estas acciones son primitivas para nosotros; es decir, no es necesario descomponerlas
más, como el abandonar el cine. Sin embargo hay otras acciones que son susceptibles de mayor
descomposición. Este es el caso de la acción:
“encontrar el asiento correspondiente”
si los números de los asientos están impresos en la entrada, esta acción compuesta se resuelve con el
siguiente algoritmo:
INICIO ALGORITMO para encontrar el asiento del espectador
caminar hasta llegar a la primera fila de asientos
REPETIR
comparar número de fila con número impreso en la boleta
SI no son iguales, ENTONCES
pasar a la siguiente fila
HASTA_QUE se localice la fila correcta
Informática 1. Versión 1.3 Enero de 2010
14
.
15. MIENTRAS número de asiento no coincida con número impreso en la boleta
HACER avanzar a través de la fila a la siguiente butaca
sentarse en la butaca
FIN ALGORITMO para encontrar el asiento del espectador
De esta forma, podríamos seguir hasta la descomposición de las distintas acciones en instrucciones
susceptibles de ser interpretadas directamente por el computador.
Si un algoritmo puede ser ejecutado por una computadora, se dice que es un algoritmo
computacional; en caso contrario, se dice que es un algoritmo no computacional.
Los que se trabajaran en el curso de informática 1, serán los algoritmos computacionales.
Programación del Algoritmo
Una vez que el algoritmo está diseñado y representado, se debe pasar a la fase de resolución práctica
del problema con el computador. Esta fase se descompone a su vez en las siguientes subfases: (Ver
Figura 1.3)
1. Codificación del algoritmo en un programa.
2. Ejecución del programa
3. Comprobación del programa.
Programación
del algoritmo
Codificación en un Ejecución del Comprobación
programa programa del programa
Fig. 1.3 Programación del algoritmo
La fase de conversión de un algoritmo en instrucciones de un lenguaje de programación se denomina
codificación. El código deberá estar escrito de acuerdo con la sintaxis del lenguaje de programación,
ya que solamente las instrucciones sintácticamente correctas pueden ser interpretadas por el
computador.
Nótese que durante el proceso de programación, se debe separar el diseño del algoritmo de su
posterior implementación en un lenguaje de programación específico. Por ello distinguimos entre el
concepto más general de programación y el más particular de codificación, que depende del lenguaje
de programación utilizado. Al llegar a este punto, es posible que el lector conozca al menos uno de
estos lenguajes y éste es el momento en el que podría mostrar sus habilidades para efectuar una
codificación lo más correcta y eficiente posible.
Tras la codificación del programa, éste deberá ejecutarse en un computador. El resultado de esta
primera ejecución es incierto, ya que existe una alta probabilidad de que aparezcan errores, bien en la
codificación, bien en el propio algoritmo. Por tanto, el paso siguiente consiste en comprobar el
correcto funcionamiento del programa y en asegurarse, en la medida de lo posible, de la validez de
los resultados proporcionados por la máquina.
Informática 1. Versión 1.3 Enero de 2010
15
.
16. Formas de describir un algoritmo
Dado que los algoritmos permiten resolver problemas de forma mecánica, está claro que resulta muy
interesante compartir dicho algoritmo de tal manera que otras personas puedan conocerlo y aplicarlo;
así surge el problema de describir los algoritmos de forma tal que todas las características que los
definen se mantengan invariables.
Lenguaje natural. La primera y más sencilla forma de describir un algoritmo es empleando el lenguaje
natural; por ejemplo, el algoritmo para encontrar las raíces de una ecuación de segundo grado (ó,
ecuación cuadrática) del tipo aX 2 + bX + C = 0 ( a diferente de cero ), podría describirse así:
1. Definir (o, leer) los coeficientes de la ecuación de segundo grado: a, b y c , donde a no es cero.
2. Determinar el valor del discriminante: d = b 2 - 4ac.
3. Si el discriminante es cero, sólo hay una solución: -b / (2a).
4. Si el discriminante es positivo, hay dos soluciones: (-b ± d ) / (2a).
5. Si el discriminante es negativo, no hay soluciones reales.
La ventaja fundamental es la facilidad de comprensión, pues cualquier persona (hispanoparlante, por
supuesto) que lea dicho algoritmo podría entenderlo y aplicarlo; sin embargo, son varios los
problemas que plantea describir un algoritmo de esta forma:
• El lenguaje natural no es universal, este algoritmo sería completamente inútil para los no
hispanoparlantes.
• El lenguaje natural es ambiguo y, por tanto, susceptible de errores.
• El lenguaje natural es demasiado amplio, lo que para una persona puede ser una instrucción
sencilla, puede no serlo para otra y, desde luego, no lo será para un computador.
Por todo ello, se han buscado nuevas formas de describir los algoritmos que, cuando menos, sean más
universales, estén mejor delimitadas y no sean ambiguas; dos técnicas que logran esto son los
organigramas y las notaciones en pseudocódigo.
Diagramas de Flujo (Organigramas)
Los diagramas de flujo u organigramas permiten describir los algoritmos de forma gráfica; para ello
utilizan una serie de bloques que indican distintas circunstancias y flechas que muestran bajo qué
condiciones se pasa de un bloque a otro.
Algunos de los símbolos son los siguientes:
Informática 1. Versión 1.3 Enero de 2010
16
.
17. A continuación, se muestra un organigrama que describe el algoritmo anterior.
Informática 1. Versión 1.3 Enero de 2010
17
.
18. Los organigramas presentan varias ventajas frente al lenguaje natural:
• Los símbolos son universales.
• Son menos propensos a la ambigüedad.
• Por estar basados en un número pequeño de bloques y reglas para su empleo permiten
delimitar mejor los algoritmos.
• Se aproximan más a la forma en que trabaja el computador.
Sin embargo:
• El hecho de emplear símbolos supone que una persona que desconozca los símbolos puede
tener dificultades para comprender el algoritmo o no entenderlo en absoluto.
• Aunque los símbolos son universales, el texto que se coloca en su interior sigue siendo
lenguaje natural.
• La representación gráfica puede resultar bastante tediosa y, en el caso de algoritmos
complejos, extremadamente confusa.
• Un computador no es capaz de utilizar una representación visual como descripción de un
algoritmo.
Actualmente, los organigramas no son muy utilizados, aunque para mostrar el funcionamiento de
algoritmos sencillos continúan resultando prácticos.
1.5 Pseudocódigo
El pseudocódigo pretende juntar en un solo tipo de representación las ventajas del lenguaje natural y
de los organigramas sin ninguno de sus problemas; por tanto, el pseudocódigo:
• Es fácilmente comprensible para una persona que lo vea por vez primera.
• Está bien delimitado.
• Elimina las ambigüedades del lenguaje natural.
• Se representa de una forma compacta.
De esta forma, el pseudocódigo se suele ver como un subconjunto de un lenguaje natural que
proporciona un número limitado de operaciones para la construcción de algoritmos; la única finalidad
del pseudocódigo (como de los organigramas) es la comunicación entre seres humanos.
La ventajas del uso del pseudocódigo residen en:
• Su uso en la planificación de un programa; permitiendo que el programador se pueda
concentrar en la lógica y en las estructuras de control y no tenga que preocuparse, por
ahora, de detalles acerca de las reglas sintácticas y semánticas de un lenguaje específico.
• Consecuentemente, es más fácil de modificar en el caso de que se descubran errores o
anomalías en la lógica del algoritmo.
• Aunque el pseudocódigo es independiente del lenguaje de alto nivel que vaya a utilizarse, un
algoritmo expresado en pseudocódigo puede ser traducido más fácilmente a muchos de dichos
lenguajes.
Elementos de construcción de un algoritmo:
• Inicio del algoritmo
Informática 1. Versión 1.3 Enero de 2010
18
.
19. • Finalización del algoritmo
• Comentarios
• Declaración de variables
• Expresiones
• Instrucciones de Salida
• Instrucciones de Entrada
Inicio y finalización del algoritmo
- Inicio del algoritmo
algoritmo NombreAlgoritmo {
principal ( ) {
}
}
- Finalización del algoritmo
Ejemplos de iniciar y finalizar un algoritmo:
algoritmo Edad {
principal ( ) {
// Cuerpo del Algoritmo
……
}
}
Comentarios
Los comentarios son la documentación interna del algoritmo. Y se hacen de 2 formas, las cuales son:
Párrafo o bloque (más de una línea):
Inicia con /*
Termina con */
Una línea:
Inicia con //
Ejemplos de comentarios:
// Este es comentario de una línea
/* Este es un comentario de un bloque
de líneas. Este es un comentario de un
bloque de líneas.*/
Nota: Los comentarios se insertan en el cuerpo del algoritmo.
Informática 1. Versión 1.3 Enero de 2010
19
.
20. Variables
Una variable es una localización o casilla en la memoria principal que almacena un valor que puede
cambiar en el transcurso de la ejecución del programa. Cuando un programa necesita almacenar un
dato, necesita una variable. Toda variable tiene un nombre ó identificador, un tipo de dato, el valor
concreto que va a guardar y una dirección en la memoria del computador. Dicho de otra forma,
Son espacios de memoria reservados para guardar datos que pueden variar durante la aplicación de un
algoritmo. El tipo de la variable depende del tipo de dato que pueda guardar. Antes de poder utilizar
una variable es necesario declararla especificando su tipo de dato y su nombre. Para declarar variables
usaremos los siguientes formatos:
Declaración de una variable:
tipo_de_variable nombre_de_la_variable = valor_inicial;
Declaración de varias variables con el mismo tipo de dato:
tipo_de_variables nombre_de_la_variable1 = valor_inicial, nombre_de_la_variable2 = valor_inicial,
nombre_de_la_variable3 = valor_inicial, ... , nombre_de_la_variableN = valor_inicial ;
Donde:
tipo_de_variable Depende del tipo de dato que va a guardar la variable y se nombra
con dicho tipo. El tipo puede ser:
Primitivos:
entero (si la variable almacenará un número entero) , real (si la
variable almacenará un número con parte decimal) , caracter (si la
variable almacenará un caracter), booleana (si la variable
almacenará el valor verdadero o el valor falso, también conocida
como de tipo logico).
Objetos:
cadena (si la variable almacenará un conjunto de caracteres).
nombre_de_la_variable Nombres (ó identificadores) válidos de las variables. El nombre de
una variable debe comenzar con un carácter alfabetico o un símbolo
de subrayado ( _ ) . Los demás caracteres del nombre pueden ser
alfabéticos (a..z, A..Z), numéricos (0..9) y el carácter subrayado ( _).
Debe considerarse también que una letra mayúscula se considera
diferente de una letra minúscula. No tiene restricción en su longitud
No pueden contener ningún otro carácter (*, +, ?, =, (, ), /,
&, %, $, #, !, @, …). No se pueden utilizar las palabras clave
reservadas para el lenguaje, estas varían de acuerdo al lenguaje
utilizado. Deben ser auto-documentadas y Generalmente se
escribe en letras minúsculas
Nombres de variables no validas:
• edad_#01
• _coeficiente(4)
Informática 1. Versión 1.3 Enero de 2010
20
.
21. • 4_nombre_del_Trabajador
• v@lorTerminal
• nombre de programa
• número 1
• SUELDO-45
Ejemplos de declaración de variables:
La siguiente instrucción declara la variable edad de tipo ENTERA y la variable descuento de tipo
Real.
entero edad=0;
real descuento=0.0;
Esto crea las casillas de memoria edad y descuento. Luego de la creación, las variables están
inicializadas en cero ( 0 ).
edad 0
descuento 0
La siguiente instrucción declara las variables nota1, nota2 y nota3, todas de tipo REAL.
real nota1=0.0, nota2=0.0, nota3=0.0;
Esto crea los casilleros de memoria nota1, nota2 y nota3. Luego de la creación, las variables están
inicializadas en cero ( 0 ).
nota1 0
nota2 0
nota3 0
entero valor1= 0;
caracter respuesta = ‘s’;
real valor_2 = 3.14;
cadena nombre = “ ”;
booleano respuesta2 = verdadero;
Constantes
Son variables que después de habérseles asignado una valor, éste no cambia durante el proceso de
aplicación del algoritmo. El nombre de las constantes, generalmente, se escribe en letras mayúsculas.
Informática 1. Versión 1.3 Enero de 2010
21
.
22. Ejemplos de constantes:
real PI = 3.141592;
real porcentaje = 0.25;
Expresiones
Conjunto de valores, variables, constantes y operadores relacionados matemáticamente o
lógicamente, asignados a una variable.
Permite mover contenidos de memoria de una posición a otra
Su resultado es representado por las variables.
Asigna valores a una posición de memoria.
Ejemplos de Expresiones:
promedio = (n1 + n2 + n3)/3; // Donde n1=4, n2=3 y n3=1
suma = suma + numero;
num1 > num2
nombre_completo = nombre + apellido;
entero Resultado = numero_1 + numero_2;
cadena Nombre = “Jesús Antonio”;
real _Sueldo = 45.36 + 854687;
booleana Flag = true;
caracter Vocal = ‘X’;
booleana Opcion = 45 > 0 && true && (18+12)/2 > 0;
booleana Otra_Opcion = true && (false || true);
Instrucciones de Salida
Consiste en entregar resultados al usuario mediante el dispositivo estándar de salida, la pantalla. Ya
sea, mostrar el valor de una variable o alguna información que desee desplegar al usuario. En general,
la forma para realizar esta acción, se expresa en el pseudocódigo mediante la palabra imprimir de la
siguiente forma:
Sintaxis
imprimir (“El Texto que se va a imprimir”);
imprimir (nombre_de_variable);
imprimir (“El texto ”+ nombre_de_variable);
Nota: En este caso, el simbolo + es llamado operador de concatenacion y es utilizado para encadenar
dos elementos y formar un dato tipo cadena.
Informática 1. Versión 1.3 Enero de 2010
22
.
23. Ejemplos de Instrucciones de Salida:
• Si se desea desplegar una cadena Hola Mundo:
imprimir ( “Hola Mundo” ) ;
• Si se desea desplegar el valor almacenado en la variable importeCompra:
imprimir ( importeCompra ) ;
• Si se desea desplegar la cadena El Valor Del Area Es: seguida del valor almacenado en la
variable area:
imprimir ( “El Valor Del Area Es: ” +area) ;
Pero en el imprimir se puede tener muchas combinaciones entre variables y cadenas, como
por ejemplo:
Suponiendo que se han hecho las siguientes declaraciones:
real area=70.4;
entero valor = 21;
cadena nombre = “Carlos”;
• imprimir ( “El Valor Del Area Es: ” +area+“ Metros Cuadrados”) ;
entonces el anterior ejemplo nos desplegaría en pantalla:
El Valor Del Area Es: 70.4 Metros Cuadrados
• imprimir ( “El Terreno De : ” +area+“ Tiene Un Costo De: ” +valor+“ Pesos Por Metro
Cuadrado y vendido por”+nombre);
entonces el anterior ejemplo nos desplegaría en pantalla:
El Terreno De : 70.4 Tiene Un Costo De: 21 Pesos Por Metro Cuadrado
NOTA: Observe que en las cadenas se dejaron espacios para que en al momento de desplegarse en
pantalla, este espacio entre palabras sea conservado.
Instrucciones de Entrada
Consiste en obtener y almacenar en una variable, datos de entrada entregados por el usuario desde un
dispositivo de entrada estándar (como el teclado). En general, la acción de ingresar un dato desde un
dispositivo de entrada a una variable, se expresa en el pseudocódigo de la siguiente forma:
Sintaxis
variable = leer (“mensaje de captura “);
Ejemplos de Instrucciones de Entrada:
variable2 = leer (“Digite el segundo valor ”);
Suponiendo que se han hecho las siguientes declaraciones:
real area=0.0;
Informática 1. Versión 1.3 Enero de 2010
23
.
24. entero valor=0;
cadena nombre=“”;
• nombre = leer ( “Ingrese su nombre ”) ;
entonces la anterior instrucción nos almacenaría el nombre ingresado por el usuario en la
variable nombre.
• valor = leer( “Ingrese el valor de venta por metros cuadrados ”) ;
entonces la anterior instrucción nos almacenaría el valor por metro cuadrado ingresado
por el usuario en la variable valor.
• area = leer ( “Ingrese el area del terreno ”) ;
entonces la anterior instrucción nos almacenaría el area del terreno ingresado por el
usuario en la variable area.
Por ejemplo, la instrucción:
real estatura=0.0;
estatura = leer(“Digite la estatura: “ ) ;
solicita el ingreso de un valor, desde algún dispositivo de entrada (como el teclado), para la
variable estatura.
Operadores
Son símbolos que establecen una relación aritmética, lógica o relacional entre datos.
Tabla 1.1 Operadores aritméticos
Informática 1. Versión 1.3 Enero de 2010
24
.
25. Tabla 1.2 Operadores relacionales
Tabla 1.3 Operadores lógicos
Informática 1. Versión 1.3 Enero de 2010
25
.
26. Reglas de jerarquía de los operadores aritméticos
Cuando una expresión aritmética tiene más de un operador aritmético, el orden de aplicación de los
operadores sigue un orden preciso determinado por las reglas de jerarquía de los operadores
aritméticos, que se muestran en la siguiente tabla:
Tabla 1.4 Reglas de Jerarquía de los Operadores Aritméticos, Relacionales y Lógicos
Operadores Precedencia
posfijo expr++ expr--
unario ++expr --expr +expr -expr ~ !
multiplicativo */%
aditivo +-
cambio << >> >>>
relacionales < > <= >= instanceof
equivalencia == !=
AND bit a bit &
OR bit a bit exclusivo ^
OR bit a bit inclusivo |
AND logico &&
OR logico ||
ternario ?:
asignacion = += -= *= /= %= &= ^= |= <<= >>= >>>=
Si existen paréntesis anidados, se evalúa primero la expresión en el paréntesis más interno. Si
varios operadores o paréntesis tienen la misma jerarquía, la evaluación será de izquierda a
derecha.
Suponga que tenemos estos dos valores:
valor1=1, valor2=5;
Ejemplo 1:
resultado = 10 * ++ valor1;
resultado = 10 * 2; //Aumento primero la variable valor1 en uno, es decir su nuevo valor es 2
resultado = 20;
resultado = 10 * valor1++;
resultado = 10 * 1; //Primero realizo el producto y luego aumento la variable valor1 en uno, es decir su valor final es 2
resultado = 10;
Informática 1. Versión 1.3 Enero de 2010
26
.
27. Ejemplo 2:
valor1>0 && valor2++ <=5
V && (5<=5)
V && V
V
El valor final de valor2 es de 6, por tener el acumulador (++) como posfijo
Ejemplo 3:
valor1>0 && ++valor2 <=5
V&& (6<=5)
V&& F
F
Por haber un acumulador (++) como prefijo, primero se incrementa valor2,
obteniendo como nuevo valor 6 y luego realiza la operación lógica.
Ejemplo 4:
true && valor2 – 4 < valor1 || valor1-- < valor2 – 4
1 1
F F
F
F
Ejemplo: ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?
Solución
e = a/b/c;
Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a derecha:
Primero, se dividirá a entre b. Segundo, el resultado ya obtenido de a / b se dividirá entre c.
Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se requiere
ninguna pareja de paréntesis.
Ejemplo:- ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?
Informática 1. Versión 1.3 Enero de 2010
27
.
28. Solución
c = a*b*c/d/e;
Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a derecha:
Primero, se multiplicará a por b.
Segundo, el resultado ya obtenido de a * b se multiplicará por c.
Tercero, el resultado ya obtenido de a * b * c se dividirá entre d.
Cuarto, el resultado ya obtenido de a * b * c / d se divivirá entre e.
Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se requiere
ninguna pareja de paréntesis.
Ejercicio: ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?
Solución
e = 4 / ((a + b) / (c / d)) + v / (w / p) + 5 * m * n * q ;
Aplicando las reglas de jerarquía de los operadores aritméticos:
Primero, se sumará a más b.
Segundo, se dividirá c entre d.
Tercero, el resultado ya obtenido de a+b se dividirá entre el resultado ya obtenido de c/d.
Cuarto, se dividirá 4 entre el resultado ya obtenido de ( (a+b)/(c/d) )
Quinto, se dividirá w entre p.
Sexto, se dividirá v entre el resultado ya obtenido de (w/p).
Séptimo, se multiplicará 5 por m.
Octavo, se multiplicará el resultado ya obtenido de 5*m por n.
Noveno, se multiplicará el resultado ya obtenido de 5*m*n por q.
Décimo, se sumará el resultado ya obtenido de 4/( (a+b)/(c/d) ) más el resultado ya obtenido de
v/(w/p).
Undécimo, se sumará el resultado ya obtenido de 4/( (a+b)/(c/d) ) + v/(w/p) más el resultado ya
obtenido de 5*m*n*q.
Se ha utilizado la mínima cantidad posible de paréntesis. Pueden usarse paréntesis adicionales, lo que
no es un error. Por ejemplo, otra solución posible que arroja el mismo resultado final es:
e = (4/((a+b)/(c/d))) + (v/(w/p)) + (5*m*n*q) ;
Note que usando correctamente las reglas de jerarquía, es posible usar menos parejas de paréntesis.
Informática 1. Versión 1.3 Enero de 2010
28
.
29. FUNCIONES NATIVAS
• Existen cálculos que han sido, previamente organizados y definidos, mediante funciones, que
son expresiones automáticas dirigidas a resolver cierto tipo de cómputo numérico o lógico.
• Las funciones “devuelven” un valor representado por cierto tipo de dato, dependiendo de su
naturaleza de procesamiento.
• Por tanto es factible y significativo, asignar ese resultado a una variable que pueda
“contenerlo”.
• equivalente en español - Minúscula
Sintaxis
función (argumento1, argumento2, …);
Los argumentos, corresponden a los valores que evalúa la función.
Ejemplos de Funciones:
raiz (valor real) : calcula la raiz cuadrada de un número real o entero. Devuelve un valor real.
absoluto (valor real) : calcula el valor absoluto de un número real o entero. Devuelve un valor
real.
potencia(valor real, valor entero) : calcula la potencia de un valor real o entero (base) elevado a
una potencia entera. Devuelve un valor real.
seno (valor real) : calcula el seno de un valor dado en radianes. Devuelve un valor real.
ASIGNACIÓN A UNA VARIABLE
variable = función (argumentos);
1.6 Estructuras Secuenciales
La estructura secuencial es la más sencilla de todas, simplemente indica al
procesador que debe ejecutar de forma consecutiva una lista de acciones (que
pueden ser, a su vez, otras estructuras de control); para construir una secuencia de
acciones basta con escribir cada acción en una linea diferente. A continuación se
muestra una composición secuencial de acciones en notación algorítmica.
real a=0.0, b=0.0, c=0.0;
a=leer(“Digite a ” ) ;
b=leer( “Digite b ” ) ;
c = a+b;
imprimir ( “c tiene un valor de “ + c ) ;
Existe una forma alternativa de expresar una estructura secuencial escribiendo varias acciones en la
misma línea pero utilizando el punto y coma ( ; ) como separador. Sin embargo, esta última notación
es desaconsejable puesto que puede llegar a hacer el código bastante difícil de leer.
Informática 1. Versión 1.3 Enero de 2010
29
.
30. real a=0.0, b=0.0, c=0.0; a=leer(“Digite a ” ) ; b=leer( “Digite b ” ) ;
c = a + b ; imprimir ( “c tiene un valor de “ + c ) ;
Por último, es necesario señalar un aspecto importante de la composición secuencial y es que no
es conmutativa.
Para mostrar lo realizado hasta ahora tenemos este ejemplo:
Algoritmo para expresar en centímetros y en pulgadas una cantidad dada en metros. Esta es una
solución en pseudocódigo utilizando los conceptos computacionales descriptos en las paginas
anteriores. La solución considera que 1 metro = 100 centímetros y que 1 pulgada = 2.54 centímetros.
Datos de Entrada Proceso Información
(con tipos) (con tipos)
real cantidad_metros = leer(“Digite la longitud en metros: real
cantidad_metros ”) cantidad_centimetros
cantidad_pulgadas
cantidad_centimetros = cantidad_metros * 100
cantidad_pulgadas = cantidad_centimetros / 2.54
imprimir (cantidad_metros + “, en centímetros,
equivale a: ” + cantidad_centimetros )
imprimir (cantidad_metros + c, en pulgadas,
equivale a: ” + cantidad_pulgadas )
algoritmo Conversion{
principal(){
// Declara las variables m, c y p
real cantidad_metros=0.0, cantidad_centimetros=0.0 , cantidad_pulgadas=0.0;
// Lectura y asignación de las variables
cantidad_metros = leer(“Digite la longitud en metros: ”);
// Calcula la cantidad equivalente en centímetros y lo asigna a la variable c
cantidad_centimetros = cantidad_metros * 100 ;
// Calcula la cantidad equivalente en pulgadas y lo asigna a la variable p
cantidad_pulgadas = cantidad_centimetros / 2.54 ;
// Muestra los valores de las variables c y p:
imprimir(cantidad_metros + “, en centímetros, equivale a: “ + cantidad_centimetros );
imprimir(cantidad_metros + c, en pulgadas, equivale a: “ + cantidad_pulgadas ) ;
}
}
Informática 1. Versión 1.3 Enero de 2010
30
.
31. Datos de Entrada Proceso Información
(con tipos) (con tipos)
real radio = leer(“Digite el valor del radio: ”) real
radio PI = 3.1415926535 area
area = PI * potencia(radio,2)
imprimir (“El área del cículo de radio “+radio+”
es “+area)
algoritmo AreaCirculo {
principal () {
// Declaración de variables
real radio = 0.0;
real area = 0.0;
real PI = 3.1415926535;
// Captura de datos
radio = leer (“Digite el valor del radio: ”);
//Cálculos
area = PI * potencia(radio,2);
// Salida de datos
imprimir (“El área del cículo de radio “+radio+”
es “+area);
}
}
1.7 Estructura Condicionales
La estructura alternativa permite bifurcar el “flujo” del programa en función de una expresión lógica.
Disponemos de tres estructuras alternativas diferentes: alternativa simple, alternativa doble y
alternativa múltiple.
1.7.1 Estructura Condicional Simple
Esta estructura permite evaluar una expresión
lógica y en función de dicha evaluación ejecutar
una acción (o composición de acciones) o no
ejecutarla; también se la suele denominar si-
entonces.
A continuación se muestra la notación algorítmica
para la estructura alternativa simple.
si (<expresión lógica>) entonces
acciones si la expresión lógica es
verdadera
fin_si
Informática 1. Versión 1.3 Enero de 2010
31
.
32. En seudocódigo la instrucción si–simple se presenta así:
si( <condición> ) {
// Bloque de instrucciones que se ejecuta si la condición es verdadera.
} // Fin del bloque del si
En el siguiente ejemplo, se calcula la longitud de una circunferencia si el radio es positivo:
si ( radio > 0 ) {
longitud = 2 * 3.1416 * radio ;
}
Ejemplo: Dada la edad de una persona, imprimir un mensaje solo si ella cumple con la mayoría de
edad
Datos de Entrada Proceso Información
(con tipos) (con tipos)
entero edad=leer(“Digite la edad de la persona”) cadena
edad cumple
si edad >=18
cumple=“Cumple con la mayoría de edad”
imprimir (cumple)
Condiciones
Lenguaje natural:
La edad debe ser mayor o igual a 18 para poder votar
Expresion lógica:
edad >=18
algoritmo MayoriaDeEdad {
principal () {
entero edad=0;
cadena cumple=“”;
//Lectura de las variables
edad=leer(“Digite la edad de la persona”);
si (edad>=18){
cumple=“Cumple con la mayoría de edad”;
}
imprimir(cumple) ;
}
}
Informática 1. Versión 1.3 Enero de 2010
32
.
33. 1.7.2 Estructura Condicional Doble
La estructura alternativa doble es similar a la anterior, con la salvedad de que en este tipo de estructura
se indican acciones no sólo para la rama “verdadera” sino también para la “falsa”; es decir, en caso de
que la expresión lógica evaluada sea cierta, se ejecuta una acción o grupo de acciones y, en el caso de
que sea falsa, se ejecuta un grupo diferente de acciones. La sintáxis en la notación algorítmica es la
que se muestra a continuación:
si (<expresión lógica>) entonces
acciones si la expresión lógica es
verdadera
si no
acciones si la expresión lógica es
falsa
fin_si
En seudocódigo la instrucción si–entonces simple se presenta así:
si( <condición> ) {
// Bloque de instrucciones que se ejecuta si la condición es verdadera.
} // Fin del bloque del si
sino {
// Bloque de instrucciones que se ejecuta si la condición es falsa.
} // Fin del bloque del sino
En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es positivo y, en
caso contrario, se proporciona un mensaje de error:
si ( radio > 0 ) {
longitud = 2 * 3.1416 * radio ;
}
sino { //si radio <= 0
imprimir ( “Radio incorrecto” ) ;
}
Informática 1. Versión 1.3 Enero de 2010
33
.
34. Ejemplo: Dada la edad de una persona, imprimir un mensaje indicando si es mayor de edad o no
Datos de Entrada Proceso Información
(con tipos) (con tipos)
entero edad = leer (“Digite la edad de la persona”) cadena
edad cumple
si edad >=18
cumple=“Cumple con la mayoría de edad”
sino
cumple=“No Cumple con la mayoría de edad”
imprimir (cumple)
Condiciones
Lenguaje natural:
La edad debe ser mayor o igual a 18 para poder votar
Expresion lógica:
edad >=18
algoritmo MayoriaDeEdad {
principal () {
//Declaración de las variables
entero edad=0;
cadena cumple=“”;
//Lectura de las variables
edad = leer (“Digite la edad de la persona”);
si (edad>=18){
cumple=Cumple con la mayoría de edad”;
}sino{
cumple=“No Cumple con la mayoría de edad” ;
}
imprimir(cumple) ;
}
}
Informática 1. Versión 1.3 Enero de 2010
34
.
35. Ejemplo: Informar si un estudiante ha superado o no un determinado examen consistente en 20
preguntas de igual valor y calcular su nota en caso de aprobar.
Datos de Entrada Proceso Información
(con tipos) (con tipos)
entero num_correctas = leer (“Digite el numero de preguntas real
num_correctas contestadas correctamente”) nota
cadena
si num_correctas < 12 pasaExamen
pasaExamen=“No ha superado Vd. el examen”
sino
nota = num_correctas * 0.25
pasaExamen= “aprobó Vd. con un ” + nota
imprimir (pasaExamen);
Condiciones
Lenguaje natural:
El numero de preguntas correctas debe ser menor a 12 para perder examen
Expresion lógica:
num_correctas < 12
algoritmo AprobarExamen1{
principal () {
//Declaración de las variables
entero num_correctas=0;
real nota=0.0;
cadena pasaExamen=“”;
//Asignación y lectura de las variables
num_correctas = leer (“Digite el numero de preguntas contestadas correctamente”);
si (num_correctas<0 && num_correctas>20){
imprimir (“Error:el rango (posibles respuesta correctas)es de 0-20”); //valido la entrada
de
} //datos
si (num_correctas < 12) {
pasaExamen=“No ha superado Vd. el examen”;
}
sino { //si num_correctas >12
nota = num_correctas * 0.25;
pasaExamen = “aprobó Vd. con un ” + nota;
}
imprimir (pasaExamen);
}
}
Informática 1. Versión 1.3 Enero de 2010
35
.
36. Ejemplo:
Supongamos que tenemos un algoritmo para averiguar si un número es impar o par, que puede ser
descrito narrativamente de la siguiente forma: “Si el residuo de la división entera del número entre
dos ( 2 ) es igual a cero, entonces el número es par. En caso contrario; es decir, si el residuo es uno (
1 ), entonces el número digitado es impar. Existe un operador que permite determinar de manera
directa el residuo ( o resto ) de la división de dos números.
Definición: El residuo ( ó resto ) de la división de dos números a y b se denota como “a % b”, se
lee “a módulo b” y nos arroja el residuo de la división de a y b. Ejemplo: 83 % 5 = 4, pues el
cociente es 20 y el residuo es 3, que es la respuesta. Este algoritmo escrito en pseudocódigo queda
así:
Datos de Entrada Proceso Información
(con tipos) (con tipos)
entero n=leer(“Digite un número entero”) CADENA
n tipo
si n % 2 == 0
tipo = n + “ es par”
sino
tipo = n + “es impar”
imprimir (tipo);
Condiciones
Expresion lógica:
num_correctas < 12
algoritmo ImparPar1{
principal () {
//Declarcion de la variable
entero n=0 ;
cadena tipo=“”;
//Lectura de la variable
n=leer(“Digite un número entero”);
//Procesos de Calculos
si( n % 2 == 0 ) {
tipo= n + “ es par”;
}
sino{
tipo=n + “ es impar”;
}
imprimir (tipo);
}
}
Informática 1. Versión 1.3 Enero de 2010
36
.
37. 1.7.3 Estructura Condicional Multiple
Esta estructura evalúa una expresión que
puede tomar n valores (enteros o
caracteres, pero nunca reales ni cadenas) y
ejecuta una acción o grupo de acciones
diferente en función del valor tomado por
la expresión selectora.
La sintáxis en la notación algorítmica es
la que se muestra a continuación:
segun expresión
caso valor1:
acción 1
break;
caso valor2:
acción 2
break;
...
caso valorN:
acción n
break;
default:
acción
fin según
En seudocódigo orientado a Java, la instrucción según–casos se presenta así:
segun( <expresión entera o caracter> ) {
caso valor1:
// Bloque de instrucciones que se ejecuta si la expresión
// toma el valor valor1
break ;
caso valor2:
// Bloque de instrucciones que se ejecuta si la expresión
// toma el valor valor2
break;
// . . . . . .
caso valorN:
// Bloque de instrucciones que se ejecuta si la expresión
// toma el valor valorN
break;
default :
// Bloque de instrucciones que se ejecuta si la expresión
// NO toma ninguno de los valores arriba indicados
break; // Aquí está de sobra…
} // Llave de fin de la estructura de decisión múltiple
Informática 1. Versión 1.3 Enero de 2010
37
.
38. Notas:
1.- El otro caso o caso por defecto es opcional. Si no se implementa, entonces la estructura
no será ejecutada en aquel caso en el que la expresión nunca tome alguno de los valores
especificados en los casos.
2.- La instrucción break ; también es opcional. Si no se usa alguna de las instrucciones
break; entonces la ejecución continúa hasta encontrar la siguiente instrucción break ; o
la llave del fin de la estructura de decisión.
En el siguiente ejemplo se proporciona como salida el número de días de un mes dado:
segun ( mes ) { // Abre según caso
caso 1: caso 3: caso 5: caso 7: caso 8: caso 10: caso 12:
imprimir ( “31” ) ;
break;
caso 4: caso 6: caso 9: caso 11:
imprimir ( “30” ) ;
break;
caso 2:
imprimir ( “28” ) ;
break;
default:
imprimir ( “Mes incorrecto” ) ;
break; // Aquí está de sobra…
} // Termina la ejecución de la estructura de selección múltiple
Nota: Observar que es posible agrupar varios casos que conduzcan a la ejecución de un bloque común
a ellos.
1.5.4. Estructura condicional – SI anidados
si ( <condición 1> ) {
// Bloque de instrucciones que se ejecuta si la condición 1 es verdadera.
} // Fin del bloque del si para la condición 1
sino{
si( <condición 2> ) {
// Bloque de instrucciones que se ejecuta si la condición 2 es verdadera.
} // Fin del bloque del si para la condición 2
// . . .
sino {
si( <condición N> ) {
// Bloque de instrucciones que se ejecuta si la condición N es verdadera.
} // Fin del bloque del si para la condición N
sino {
// Bloque por defecto: instrucciones que se ejecutan si ninguna condición
// anterior es verdadera
} // Fin del bloque por defecto
} // Fin del bloque del sino
} // Llave de fin de la estructura si anidada
Informática 1. Versión 1.3 Enero de 2010
38
.
39. Nota: El último sino ( Bloque por defecto ) es opcional. Si no se implementa, entonces la
estructura no será ejecutada en aquel caso en el que todas las condiciones sean falsas.
Ejemplo:
Algoritmo para la ecuación cuadrática del tipo aX 2 + bX + C = 0 ( a diferente de cero ).
Datos de Entrada Proceso Información
(con tipos) (con tipos)
real solución=“” real
a, b, c discr, s1, s2
a = leer (“¿Cuánto vale A?”) cadena
b = leer (“¿Cuánto vale B?”) solucion
c = leer (“¿Cuánto vale C?”)
discr = ( b * b – 4 * a * c )
si discr == 0
s1 = -b / (2 * a)
solucion = “Existen dos soluciones iguales, cuyo
valor es: “ + s1
sino
si discr > 0
s1 = ( -b + raiz(discr) ) / (2 * a)
s2 = ( -b - raiz(discr) ) / ( 2 * a)
solucion = “Las soluciones son: ”+ s1 + “ y “+ s2
sino
solucion = “No hay soluciones en el conjunto de
los números reales.”
imprimir (solucion)
Condiciones
Expresiones lógicas:
discr == 0
discr > 0
algoritmo EcuacionCuadrática{
principal () {
//Declarcion de las variables
real a=0, b=0, c=0 ;// Declaración de tres variables del tipo número real ( los 3
coeficientes ).
real discr=0; // Declaración de la variable para el discriminante de la ecuación.
real s1=0, s2=0; // Declaración de dos variables para las soluciones ( ó raíces ) de la
ecuación.
cadena solución=“”;
imprimir(“Deme los coeficientes y resolveré una ecuación de 2º grado” );
Informática 1. Versión 1.3 Enero de 2010
39
.
40. // Lectura y Asignación de las variables:
a=leer(“¿Cuánto vale A?”);
b=leer (“¿Cuánto vale B?”);
c=leer (“¿Cuánto vale C?”);
// Cálculo del discriminante de la ecuación cuadrática:
discr = ( b * b – 4 * a * c ) ; // en discr asigne el valor de la expresión entre
paréntesis.
si( discr == 0 ){ // ‘ == ‘ significa ‘ igual a ‘
s1 = -b / (2 * a) ; // En s1 asigne el valor de la expresión del segundo miembro
solución = “Existen dos soluciones iguales, cuyo valor es: “ + s1;
}
sino{
si( discr > 0 ) {
s1 = ( -b + raiz(discr) ) / (2 * a) ;// En s1 asigne el valor de la expresión del
segundo //miembro
s2 = ( -b - raiz(discr) ) / ( 2 * a) ; // En s2 asigne el valor de la
expresión del segundo //miembro
solución = “Las soluciones son: ” + s1 + “ y “ + s2;
}sino {
solución = “No hay soluciones en el conjunto de los números reales.” ;
}
}
imprimir(solucion);
}
}
1.8 Estructuras de Repetición
La estructura repetitiva o iterativa permite, como su propio nombre lo indica, repetir una acción (o
grupo de acciones); dicha repetición puede llevarse a cabo un número prefijado de veces o depender
de la evaluación de una expresión lógica. Existen tres tipos de estructuras repetitivas: para(ó desde-
hasta), mientras y haga-mientras.
1.8.1 Estructura de Repetición para (ó desde-hasta)
Esta estructura permite repetir
la ejecución de una acción o de
un grupo de acciones un
número determinado de veces;
la sintáxis es la siguiente:
Informática 1. Versión 1.3 Enero de 2010
40
.
41. A continuación se muestran algunos ejemplos:
para (entero n=1; n < =10; n++){
imprimir (“n = ”+n );
} // Fin del para
El ciclo anterior imprime por pantalla los números del 1 al 10.
Ahora, preste atención al siguiente Pseudocódigo:
para (entero n=10; n < =0; n++){
imprimir (“n =”+n);
} //Fin del para
El bucle anterior no se ejecuta nunca puesto que, de entrada, la condición n <= 0 (con n inicializado
en 10) va a ser falsa, es decir arroja false. ¿Qué ocurriría si, en el ciclo anterior, se cambia de < por >
?
para (entero n=10; n >=0; n++){
imprimir (“n =”+n);
} //Fin del para
El bucle anterior es infinito puesto que la condición n >= 0 (con n inicializado en 10) siempre va a ser
verdadera, es decir me arroja true.
Si queremos hacer el ejemplo de n <= 0 (con n inicializado en 10), pero con paso – 2, el Pseudocódigo
se puede escribir así:
para (n=10; n < =0 ; n = n - 2){
imprimir (“n =”+ n);
} //Fin del para
Este bucle escribe los números pares de 10 a 0 en orden inverso.
Ejemplo:
Escriba un algoritmo que sume los “N” primeros números enteros.
Datos de Entrada Proceso Información
(con tipos) (con tipos)
REAL suma=0 REAL
n suma
n = leer(“Ingrese n”)
para entero contador = 1; contador <= n;contador++
suma += contador
imprimir(“La suma es: ” + suma);
Informática 1. Versión 1.3 Enero de 2010
41
.
42. Condiciones
Expresion lógica:
contador <= n
algoritmo Suma {
principal () {
entero suma=0, n=0;
n = leer(“Ingrese n”);
para (entero contador = 1; contador <= n ; contador++){
suma += contador;
}
imprimir(“La suma es: ” + suma);
}
}
Ejemplo:
Escriba un algoritmo que calcule el promedio del curso de informática 1, sabiendo que se tienen “N”
estudiantes.
Datos de Entrada Proceso Información
(con tipos) (con tipos)
REAL acumula=0 REAL
N, nota promedio,
n=leer(“Ingrese n”) acumula
para entero contador = 1; contador <= n ;contador++
nota = leer(“Ingrese nota: “ + contador + “ : “)
acumula += nota
promedio = acumula/n
imprimir (“Promedio es: ” + promedio)
Condiciones
Expresion lógica:
contador <= n
algoritmo Promedio {
principal () {
entera n=0;
Informática 1. Versión 1.3 Enero de 2010
42
.
43. real nota=0.0, promedio=0.0, acumula=0;
n=leer(“Ingrese n);
para (entero contador = 1; contador <= n ; contador++){
nota = leer(“Ingrese nota: “ + contador + “ : “);
acumula += nota;
}
promedio = acumula/n;
imprimir(“Promedio es: ” + promedio);
}
}
1.8.2 Estructura de Repetición mientras
Cuando usamos la estructura mientras:
• Cuando sea necesario ejecutar los mismos pasos varias veces y se conoce el número de veces
que desea repetirse.
• Cuando sea necesario ejecutar los mismos pasos varias veces y NO se conoce el número de
veces que desea
repetirse.
• Si la condición es
cierta el cuerpo del
ciclo se ejecuta, sino
la ejecución del
ciclo termina.
• Si la condición es
inicialmente falsa el
ciclo no se ejecuta
ni una sola vez.
Sintaxis General:
mientras ( <expresión lógica> )
acción
FIN mientras
Informática 1. Versión 1.3 Enero de 2010
43
.
44. A continuación se muestra un ejemplo que solicita al usuario el radio de una circunferencia mientras
el radio introducido sea incorrecto:
mientras (radio<=0) { //se ejecuta mientras el radio sea mayor que 0
radio = leer(Ingrese el radio);
imprimir (“Radio :” +radio);
} //Fin del mientras
Notar que mientras radio < = 0 el ciclo se ejecuta.
Ejemplo:
Escriba un algoritmo que lea e imprima todos los nombre de un grupo de estudiantes:
Datos de Entrada Proceso Información
(con tipos) (con tipos)
cadena seguir = ‘S’ cadena
nombre nombres=“” nombres
caracter
seguir mientras (seguir == ‘S’)
nombre=leer(“Ingrese Nombre”)
nombres+=nombre
seguir=leer(“Desea continuar”)
Condiciones
seguir == ‘S’
algoritmo Nombres {
principal () {
caracter seguir=‘S’;
cadena nombre=“”, nombres=“”;
mientras (seguir == ‘S’){
nombre = leer(“Ingrese Nombre”);
nombres+=nombre;
continuar = leer(“Desea continuar”);
}
imprimir(nombres);
}
}
Informática 1. Versión 1.3 Enero de 2010
44
.
45. Ejemplo:
Escriba un algoritmo que calcule el promedio del curso de informática I.
Datos de Entrada Proceso Información
(con tipos) (con tipos)
real seguir = ‘S’ ENTERA
nota cuenta=0 cuenta
caracter acumlua=0 REAL
seguir promedio,
mientras (seguir== “S) acumula
cuenta++
nota=leer(“Ingrese nota: “ + cuenta + “ : ”)
acumula += nota
nota=leer(“Desea Continuar”)
promedio = acumula/cuenta;
imprimir(“Promedio es: ” + promedio);
Condiciones
seguir == ‘S’
algoritmo Promedio {
principal () {
entero cuenta=0;
real nota, promedio, acumula;
caracter seguir = ‘S’;
seguir = leer(“Desea Continuar”);
mientras (seguir== ‘S’){
cuenta++;
nota=leer(“Ingrese nota: “ + cuenta + “ : “);
acumula += nota;
seguir=leer(“Desea Continuar”);
}
promedio = acumula/cuenta;
imprimir(“Promedio es: ” + promedio);
}
}
1.8.3 Estructura de Repetición haga-mientras
• Cuando sea necesario ejecutar los mismos pasos varias veces y se conoce el número de veces
que desea repetirse.
Informática 1. Versión 1.3 Enero de 2010
45
.
46. • Cuando sea necesario ejecutar los mismos pasos varias veces y NO se conoce el número de
veces que desea repetirse.
• Si la condición es cierta el cuerpo del ciclo se ejecuta, sino la ejecución del ciclo termina.
• Si la condición es inicialmente falsa el ciclo no se ejecuta ni una sola vez.
• Primero ejecuta y luego evalúa la condición de finalización
• Usada para validaciones
Informática 1. Versión 1.3 Enero de 2010
46
.
47. 1.9 EJERCICIOS RESUELTOS
NOTA: se realizara la abstracción SIN APLICAR validaciones con el ciclo haga mientras a
todos los ejercicios resueltos, pero UNICAMENTE al primer ejercicio se realizara la
abstracción con dicha validacion. Ademas en la parte de pseudocogo si se incluye para
TODOS los ejercicios las validaciones con el ciclo haga mientras.
Ejercicio 1:- Diseñe un pseudocódigo que halle el área y el perímetro de un rectángulo. Considere
que: area = base x altura, y, perimetro = 2 x (base+altura).
Sin validación con el ciclo haga mientras:
Datos de Entrada Proceso Información
(con tipos) (con tipos)
real base=leer (“Digite la medida de la base del rectangulo”) real
base, altura area, perimetro
altura=leer(“Digite la medida de la altura del rectangulo”)
area = base*altura
perímetro = 2*(base+altura)
imprimir (“Area :” +area)
imprimir (“Perimetro:” +perimetro)
Con validación con el ciclo haga mientras:
Datos de Entrada Proceso Información
(con tipos) (con tipos)
real haga real
base, altura base=imprimir (“Digite la medida de la base del area, perimetro
rectangulo”)
mientras(base<0)
haga
altura=imprimir (“Digite la medida de la altura del
rectangulo”)
mientras(altura<0)
area = base*altura
perímetro = 2*(base+altura)
imprimir (“Area :” +area)
imprimir (“Perimetro:” +perimetro)
Informática 1. Versión 1.3 Enero de 2010
47
.
48. Condiciones
altura<0
base<0
algoritmo Rectangulo {
principal () {
// Declaración de variables
real base=0.0, altura=0.0, area=0.0perímetro=0.0;
// Asignación o Lectura de Datos
haga{
base=leer (“Digite la medida de la base del rectangulo”);
} mientras(base<0); //Se valida el ingreso de datos para la base
haga{
altura=leer(“Digite la medida de la altura del rectangulo”);
} mientras(altura<0); //Se valida el ingreso de datos para la altura
// Proceso de cálculo
area = base*altura;
perímetro = 2*(base+altura);
// Salida de resultados
imprimir (“Area :” +area);
imprimir (“Perimetro:” +perimetro);
}
}
Ejercicio 2:- Diseñe un pseudocódigo para convertir una longitud dada en metros a sus equivalentes
en centímetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centímetros, 1 pulgada = 2.54
centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.
Informática 1. Versión 1.3 Enero de 2010
48
.
49. Datos de Entrada Proceso Información
(con tipos) (con tipos)
real cmetr =leer(“Digite longitud en metros”) real
cmetr ccent, cpulg,
ccent = cmetr * 100 cpies, cyard
cpulg = ccent / 2.54
cpies = cpulg / 12
cyard = cpies / 3
imprimir( "Cantidad equivalente en centimetros: " +
ccent + " cm" )
imprimir ( "Cantidad equivalente en pulgadas: " + cpulg
+ " pulgadas" )
imprimir ( "Cantidad equivalente en pies: " + cpies
+ " pies" )
imprimir ( "Cantidad equivalente en yardas: " + cyard
+ " yardas" )
Condiciones
cmetr<0
algoritmo Conversiones1{
principal () {
// Declaración de variables
real cmetr=0.0,ccent=0.0, cpies=0.0, cpulg=0.0, cyard=0.0;
// Asignación y lectura de variables
haga{
cmetr =leer(“Digite longitud en metros”);
} mientras(cmetr<0); //Se valida el ingreso de datos para la cmetr
// Proceso de cálculo
ccent = cmetr * 100;
cpulg = ccent / 2.54;
cpies = cpulg / 12;
cyard = cpies / 3;
// Salida de resultados
imprimir ( "Cantidad equivalente en centimetros: " + ccent + " cm" ) ;
imprimir ( "Cantidad equivalente en pulgadas: " + cpulg + " pulgadas" ) ;
imprimir ( "Cantidad equivalente en pies: " + cpies + " pies" ) ;
imprimir ( "Cantidad equivalente en yardas: " + cyard + " yardas" ) ;
}
}
Informática 1. Versión 1.3 Enero de 2010
49
.
50. Ejercicio 3:- Una institución benéfica europea ha recibido tres donaciones en soles, dolares y marcos.
La donación será repartida en tres rubros: 70% para la implementación de un centro de salud, 20%
para un comedor de niños y el resto para gastos administrativos. Diseñe un algoritmo que determine el
monto en euros que le corresponde a cada rubro. Considere que, en la fecha de redactar este ejercicio:
1 dólar = 3.52 soles, 1 dólar = 2.08 marcos, 1 dólar = 1.07 euros.
Datos de Entrada Proceso Información
(con tipos) (con tipos)
real csoles =leer(“Digite cantidad donada en soles”) real
csoles, ceuros ,rubro1,
cdolares, cdolares =leer(“Digite cantidad donada en dolares”) rubro2, rubro3
cmarcos
cmarcos =leer(“Digite cantidad donada en marcos”)
ceuros = (csoles / 3.52 + cdolares + cmarcos / 2.08 ) * 1.07
rubro1 = ceuros * 0.70
rubro2 = ceuros * 0.20
rubro3 = ceuros * 0.10
imprimir ("Rubro 1 para salud: $ " + rubro1
+ " euros")
imprimir ("Rubro 2 para comedor: $ " + rubro2
+ " euros")
imprimir ("Rubro 3 para gastos de admon: $ "
+ rubro3 + " euros")
Condiciones
csoles<0
cdolares<0
cmarcos<0
algoritmo Euros1{
principal () {
// Declaración de variables
real csoles=0.0, cdolares=0.0, cmarcos=0.0, ceuros=0.0, rubro1=0.0, rubro2=0.0;
real rubro3=0.0;
//Asignacion y lectura de las variables
haga{
csoles =leer(“Digite cantidad donada en soles”);
} mientras(csoles<0); //Se valida el ingreso de datos para la csoles
haga{
cdolares =leer(“Digite cantidad donada en dolares”);
} mientras(cdolares<0); //Se valida el ingreso de datos para la cdolares
haga{
Informática 1. Versión 1.3 Enero de 2010
50
.