Sie sind auf Seite 1von 53

Universidad Tecnolgica Nacional - U.

A Reconquista

Bienvenido al curso de Algoritmia. Este es un curso inicial que cubre nicamente los
aspectos bsicos de la algoritmia y por lo mismo esta pensado para personas que se inician en
la programacin de computadoras. Este curso est en constante mejora :
peridicamente reviso los contenidos, aado ms ejercicios, reformulo algunos ejercicios
existentes y quito los inadecuados.
Por ahora el curso es para leerse en lnea sin restricciones de ningn tipo y espero que para
seguir as me hagan llegar sus comentarios y sugerencias, para saber si el curso es de utilidad.
Captulo 1: Introduccin a los Sistemas de Cmputo
1.1
Definicin de Computadora
1.2
Hardware
1.2.1
Procesador o Unidad Central de Proceso
1.2.2
Memoria Principal
1.2.3
Dispositivos de Entrada/Salida
1.2.4
Memoria Auxiliar
1.3
Software
1.3.1
Software de Especfico o de Aplicacin
1.3.2
Software de Sistema
1.4
Lenguajes de Programacin
1.4.1
Lenguajes Mquina
1.4.2
Lenguajes de Bajo Nivel
1.4.3
Lenguajes de Alto Nivel
Captulo 2: Algoritmos, Programas y Conceptos Fundamentales
2.1
Algoritmo vs Programa
2.2
El Pseudocdigo
2.3
Conceptos Fundamentales
2.3.1
Identificadores
2.3.2
Tipos de Datos
2.3.3
Variables
2.3.4

Universidad Tecnolgica Nacional - U.A Reconquista

Constantes
2.3.5
Instrucciones Bsicas de Programacin
2.4
Expresiones Aritmticas
2.5
Expresiones Lgicas
2.6
Ejercicios 2.1 2.2
Captulo 3: Solucin de Problemas con la Computadora
3.1
Introduccon
3.2
Anlisis del Problema
3.3
Diseo del Algoritmo
3.4
Implementacin del Algoritmo en la Computadora
Captulo 4: Estructuras de Secuencia
4.1
Concepto
4.2
Ejercicios
Captulo 5: Estructuras de Seleccin
5.1
Introduccin
5.2
Estructura de Seleccin Simple SI
5.3
Estructura de Seleccin Doble SI-SINO
5.4
Estructura de Seleccin Mltiple EN CASO-SEA
5.5
Ejercicios

Universidad Tecnolgica Nacional - U.A Reconquista

CAPITULO 1
INTRODUCCIN A LOS SISTEMAS DE COMPUTO
1.1 Definicin de computadora
Una computadora es una mquina electrnica digital capaz de procesar informacin y
producir datos de salida para lo cual requiere de ciertos datos de entrada. El trmino digital
alude al hecho de que la informacin almacenada y procesada por la computadora esta
representada mediante cdigos numricos binarios formados por ceros y unos ( 0 y 1 )
conocidos como bits.
Lo sorprendente de las computadoras es que pueden realizar operaciones complejas
cuando sus circuitos electrnicos solo pueden comparar dos bits o cambiar un bit de 0 a 1.
Como es esto posible?, pues debido a las altas velocidades con que se ejecutan estas
operaciones sencillas.
Para los informticos hay una diferencia entre datos e informacin. Dato vendra a ser la
representacin de algn hecho, concepto o entidad real, es la materia prima de la informacin.
Informacin vendra a ser el resultado del procesamiento de los datos. Para este curso no
haremos distincin entre dato e informacin sino que hablaremos de datos de entrada y datos de
salida.
Un sistema de procesamiento de la informacin involucra tres componentes: datos de
entrada, procesador y datos de salida, como se muestra en la Fig.1.1. El procesador transforma
los datos de entrada en datos de salida ejecutando instrucciones precisas y detalladas que se
denominan programas.

Figura 1.1 Proceso de informacin en una computadora

Una computadora esta compuesta por dos elementos fundamentales: Hardware y Software.
El Hardware es la parte fsica de la computadora. Es aquello que podemos ver y tocar.
Esta formado por el monitor, el teclado, el mouse, la unidad del sistema, la impresora, etc.
El Software es la parte lgica de la computadora y esta formado por el conjunto de
programas que controlan el funcionamiento de la computadora.

Universidad Tecnolgica Nacional - U.A Reconquista

1.2 El hardware
Daremos aqu una breve descripcin de las partes fundamentales del hardware sin entrar
en detalles internos. Sin hacer distincin de tamaos, cualquier computadora, puede
descomponerse fsicamente en cuatro partes fundamentales:
Procesador (llamado tambin Unidad Central de Proceso o CPU, del ingls, Central
Processing Unit).
Memoria principal.
Dispositivos de entrada y salida E/S.
Memoria auxiliar.

1.2.1 Procesador o Unidad Central de Proceso


El procesador es el cerebro de la computadora, el responsable de mantener en
funcionamiento coordinado todas las partes de la computadora ejecutando instrucciones precisas
y detalladas que son los programas. El procesador esta compuesto de dos partes fundamentales
que son: La Unidad Aritmtica-Lgica y la Unidad de Control.
La Unidad Aritmtica-Lgica, es la responsable de efectuar operaciones aritmticas
(suma, resta, multiplicacin y divisin) y operaciones lgicas (comparaciones booleanas).
La Unidad de Control, es la responsable de la sincronizacin de todas las actividades de
la computadora. Decide cuando se obtendrn datos de los dispositivos de entrada para ser
llevados a la memoria, cuando se efectuarn clculos con los datos almacenados en la memoria
y cuando se llevarn datos de la memoria a los dispositivos de salida.

1.2.2 Memoria principal


La memoria principal es el espacio donde se almacenan los datos e instrucciones que se
requieren para la realizacin de un proceso. En caso que los datos e instrucciones no quepan
ntegramente en la memoria principal, entonces sern cargados hacia ella por etapas, pero en
todo caso, cualquier operacin se realiza en base al contenido actual de la memoria principal. A
la memoria principal se la conoce tambin como memoria RAM (Random Access Memory,
Memoria de Acceso Aleatorio).
Las caractersticas ms relevantes de la memoria principal son las siguientes:
La memoria principal es un espacio de almacenamiento temporal por lo que los datos no
guardados en un medio de almacenamiento permanente se pierden al apagar la computadora o al
salir un programa de la memoria.
Esta ntimamente ligada al procesador por lo que el acceso a la memoria principal es muy
rpido lo que le permite al procesador acceder a la memoria principal millones de veces por
segundo.
Es de tamao reducido en comparacin a la memoria secundaria

Universidad Tecnolgica Nacional - U.A Reconquista

La unidad ms pequea de memoria es el bit. Un bit puede almacenar un slo dgito


binario, 0 1. Le sigue a esto el byte, que esta compuesto de 8 bits. Un byte tiene la capacidad
de almacenar un carcter de informacin. En cambio para almacenar informacin numrica se
requiere de mayor memoria que puede ser 2, 4 e incluso 8 bytes consecutivos, dependiendo del
tipo de dato numrico.
Con cada byte de memoria se asocian dos cosas: direccin y contenido (la combinacin
de ceros y unos que puede almacenar). El procesador accede a una posicin de memoria en
base a su direccin.
Siempre que una nueva informacin se almacene en una posicin de memoria, se
destruye la informacin actual almacenada en esa posicin y no se puede recuperar.
La memoria principal puede subdividirse en: memoria ROM, EPROM, RAM, DRAM,
CMOS y CACHE. La memoria a que se hizo referencia en la descripcin anterior se denomina
memoria RAM (Random Access Memory, Memoria de Acceso Aleatorio). Para una descripcin
sobre los otros tipos de memoria puede recurrir a cualquier literatura tcnica al respecto.

1.2.3 Dispositivos de entrada/salida (E/S)


Tambin conocidos como perifricos de E/S. Estos dispositivos permiten comunicar la
computadora con el usuario permitiendo el ingreso de datos a la computadora (dispositivos de
entrada) y la salida de informacin de la computadora (dispositivos de salida). Es decir, los
dispositivos de E/S son una interfaz entre el usuario y la computadora.
Entre los dispositivos de entrada ms comunes se cuentan el teclado y el mouse. Existen
otros dispositivos de entrada como el scanner, el lpiz ptico, etc.
Entre los dispositivos de salida ms comunes tenemos: la pantalla y la impresora.
Existen otros dispositivos de salida como los trazadores de grficos, plotters, etc.

1.2.4 Memoria auxiliar


Son dispositivos en los que se puede almacenar datos y programas de forma
permanente. Entre los dispositivos ms comunes de este tipo tenemos: los discos duros y los
discos flexibles. Existen otros dispositivos de almacenamiento permanente como las unidades
de cinta magntica, los discos compactos, los discos pticos, etc.
Las caractersticas ms relevantes de la memoria secundaria son las siguientes:
Es un espacio de almacenamiento permanente.
Un disco duro tiene un espacio de almacenamiento muchsimo mas grande que el
proporcionado por la memoria principal. As un disco duro de 8 gigabytes es 250 veces la
capacidad de almacenamiento de la memoria principal (asumiendo una memoria principal
tpica de 32 megabytes de RAM).
El procesador no acta directamente con la memoria secundaria por lo que el acceso a la
memoria secundaria es lento.

Universidad Tecnolgica Nacional - U.A Reconquista

Figura 1.2 Organizacin fsica de una computadora

1.3 El software
El Software es el conjunto de datos y programas que usa la computadora y se guardan
en algn dispositivo del hardware como, por ejemplo, un disco duro. El software es intangible
(usted no lo puede tocar). Suponga que tiene un disco flexible conteniendo un programa, cuando
usted borra el programa los tomos y molculas del disco son los mismos que antes, pero ahora
el programa ya no est. Se ha removido algo intangible sin alterar el medio tangible en el que
estaba almacenado.
Un programa es un conjunto detallado de instrucciones que instruyen al procesador para
realizar determinados procesos. Los datos pueden ser cualquier informacin que necesite el
programa: carcteres, nmeros, imgenes, etc. Para efectos de la memoria de la computadora
(principal y secundaria) no hay ninguna distincin entre programas y datos.

1.3.1 Software especfico o de aplicacin


Son programas que tienen una aplicacin especfica tales como la preparacin de
nminas, procesamiento de texto, procesamiento de imgenes, procesamiento de audio, etc.
Es decir, son programas que responden a una necesidad concreta y que ayudan a las
persona a realizar sus trabajos. El mercado del software esta lleno de software de aplicacin.
Algunos programas de aplicacin conocidos son: Microsoft Word, Microsoft Excel, Microsoft
Power Point, Adobe Photoshop, Corel Draw, WinZip, Internet Explorer, etc.

1.3.2 Software de sistema


Son programas indispensables para el funcionamiento de la computadora. Estos
programas son, bsicamente, el sistema operativo, los compiladores e intrpretes y los
programas de utilidad.

Universidad Tecnolgica Nacional - U.A Reconquista

El software de sistema ms importante es el sistema operativo. El sistema operativo es


una coleccin compleja de muchos programas y es el encargado de coordinar el funcionamiento
de los componentes hardware y software de un sistema de cmputo. El sistema operativo es
responsable de iniciar la ejecucin de otros programas proporcionando los recursos necesarios.
Cuando un programa esta en ejecucin, el sistema operativo maneja los detalles del hardware
para dicho programa. Por ejemplo, cuando desde un programa procesador de textos, como
Microsoft Word, usted decide guardar el documento que ha elaborado, es el sistema operativo el
encargado de almacenar el documento como un archivo en el disco duro o disco flexible, segn
haya elegido. As pues, entre muchas otras cosas, el sistema operativo se encarga del
almacenamiento y recuperacin de archivos. Los sistemas operativos pueden ser: monousuarios
(un slo usuario) y multiusuarios (diferentes usuarios), atendiendo al nmero de usuarios y
monocarga (una sla tarea) o multitarea (mltiples tareas), atendiendo al nmero de tareas
(procesos) que puede realizar simultneamente
Los sistemas operativos modernos normalmente vienen con una interfaz grfica de
usuario que permite a los usuarios interactuar fcilmente con el sistema operativo mediante
mens, conos, el mouse y el teclado. Como ejemplos de sistemas operativos tienen los
siguientes: Unix, Windows 98, Windows NT, Linux, Solaris y System7.
Los compiladores e intrpretes son programas traductores que traducen un programa escrito en
un determinado lenguaje de programacin al lenguaje mquina que es el lenguaje del
procesador. Cada lenguaje de programacin tiene su propio compilador o intrprete.

1.4 Los Lenguajes de Programacin


Los lenguajes de programacin, como el nombre lo indica, sirven para escribir
programas (instrucciones). Las instrucciones escritas en la mayora de los lenguajes
de programacin no son entendibles directamente por el procesador sino que
requieren de pasos intermedios de traduccin para convertir estas instrucciones al
lenguaje del procesador, conocido como lenguaje mquina. Este proceso de
traduccin puede hacerse mediante un compilador, un intrprete o con una
combinacin de los dos.
Existen cientos de lenguajes de programacin los cuales pueden dividirse en tres tipos
generales:

Lenguajes mquina.
Lenguajes de bajo nivel.
Lenguajes de alto nivel.
1.4.1 Lenguajes mquina
Los lenguajes mquina permiten escribir instrucciones directamente entendibles por el
procesador. Una instruccin mquina consiste en una secuencia de dgitos binarios (0 y 1) en la
memoria principal, que le indica al procesador que operacin mquina debe realizar. Una
coleccin de instrucciones mquina en la memoria principal se denomina programa en lenguaje
mquina o (ms comumemente) programa ejecutable. Un programa ejecutable tiene,
normalmente, millones de instrucciones mquina.
Por otro lado, cada tipo de procesador tiene su propio lenguaje mquina (su propio juego de
instrucciones). De manera que un programama ejecutable que corre en una computadora

Universidad Tecnolgica Nacional - U.A Reconquista

equipada con un procesador Pentium II no podra correr, por ejemplo, en una Apple Power
Macintosh.
Como ejemplo, observe la siguiente instruccin escrita en lenguaje mquina.
1001 1111 1011 1101

1.4.2 Lenguajes de bajo nivel


Los lenguajes de bajo nivel representan un paso hacia la humanizacin de los lenguajes
de programacin, son ms fciles que los lenguajes mquina pero al igual que ellos son
dependientes de la mquina. Los lenguajes de bajo nivel son lenguajes simblicos siendo el ms
importante el lenguaje ensamblador. En el lenguaje ensamblador las instrucciones se expresan
utilizando nemotcnicos. Por ejemplo, ADD para la suma, SUB para la resta, etc.
Como ejemplo, observe la siguientes instrucciones escritas en el lenguaje ensamblador:
MOV AX, A
ADD AX, B
MOV C, AX
Este conjunto de instrucciones se interpreta como "Sumar el contenido almacenado en
las posiciones de memoria A y B, y almacenar el resultado en la posicin de memoria C".
Un programa escrito en ensamblador es posteriormente traducido al lenguaje mquina
utilizando un programa denominado ensamblador simblico.

1.4.3 Lenguajes de alto nivel


Los lenguajes de alto nivel son lenguajes humanizados en los que las instrucciones se
escriben utilizando frases del ingls cotidiano (o una mezcla de ingls y otro idioma) y
contienen notaciones matemticas de uso comn, facilitando as el aprendizaje del lenguaje y la
escritura de programas. Cada instruccin en un lenguaje de alto nivel equivale a muchas
instrucciones en lenguaje mquina.
Por ejemplo, la instruccin:
C = A + B;
Es el equivalente, en Java, de las tres instrucciones escritas en ensamblador en el punto
1.3.2. Note la reduccin en el nmero de instrucciones y el parecido con una expresin
matemtica comn.
Existen muchos lenguajes de alto nivel entre los que podemos mencionar los siguientes:
C, C++, Java, Pascal, Eiffel, Clipper, Ada, Smalltalk, Visual Basic, etc.
Al programa escrito en un lenguaje de programacin de alto nivel se conoce como
cdigo fuente o programa fuente. Por ejemplo, aqu tiene el cdigo fuente completo de un
programa simple escrito en Java:

Universidad Tecnolgica Nacional - U.A Reconquista

Import java.io. *;
public class Bienvenida
{
public static void main( String args[] ) throws IOException
{
System.print.out( "Bienvenido a Java" );
}
}
El cdigo fuente de un programa no puede ser ejecutado por el procesador sino que se
requiere de un proceso previo de traduccin al lenguaje mquina. Este proceso de traduccin
puede llevarse a cabo de una de las siguientes formas enunciadas a continuacin, dependiendo
del lenguaje de programacin:
Traduciendo previamente todo el cdigo fuente a cdigo mquina obtenindose un
cdigo denominado cdigo ejecutable o programa ejecutable. Este programa ejecutable puede
cargarse a la memoria y ejecutarse sin requerir ya del cdigo fuente. Este proceso de traduccin
lo realiza un programa especializado denominado compilador, que es propio del lenguaje de
programacin que se est utilizando. As, existen compiladores para el lenguaje C, compiladores
para el lenguaje C++, compiladores para el lenguaje Pascal, compiladores para el lenguaje Ada,
etc. Desde el punto de vista de la forma de ejecucin, a este tipo de lenguajes se denominan
lenguajes compilados.
Leyendo el cdigo fuente instruccin por instruccin y convirtindolo a cdigo mquina
cada vez que se vaya a ejecutar el programa. Este proceso de traduccin lo realiza un programa
especializado denominado intrprete, que es propio del lenguaje de programacin que se est
utilizando. Un ejemplo de lenguaje interpretado es el lenguaje Basic. Desde el punto de vista de
la forma de ejecucin, aA este tipo de lenguajes se denominan lenguajes interpretados. Cuando
se usa un intrprete humano como intermediario la conversacin es ms lenta que cuando se
conversa directamente. El mismo es verdad para los programas intrpretes de computadora.
Esto contrasta con un programa ejecutable (en los lenguajes compilados) que pueden ser
ejecutados directamente sin necesidad de intermediarios.
Una tercera forma es una forma hbrida y usa tanto un compilador como un intrprete.
En esta, el cdigo fuente se compila generndose un cierto cdigo intermedio (p-code en Visual
Basic, bytecode en Java). Luego, el cdigo intermedio generado es ejecutado por el intrprete.
Desde el punto de vista de la forma de ejecucin, a este tipo de lenguajes se denominan
lenguajes hbridos.

Universidad Tecnolgica Nacional - U.A Reconquista

10

Universidad Tecnolgica Nacional - U.A Reconquista

CAPITULO 2
ALGORITMOS, PROGRAMAS Y CONCEPTOS
FUNDAMENTALES

2.1 Algoritmo vs Programas


Un Algoritmo es un conjunto ordenado y finito de pasos o instrucciones que conducen a
la solucin de un problema. La naturaleza de los problemas varan con el mbito o con el
contexto donde estn planteados; as, existen problemas
Matemticos, qumicos, filosficos, etc. Segn esto la naturaleza de los algoritmos tambin es
variada y no todos ellos pueden ser ejecutados por la computadora. En este curso consideramos
aquellos algoritmos que expresan soluciones usando reglas cuantitativas cuyas instrucciones
pueden ser introducidas en la computadora, a este tipo de algoritmos se denominan
Algoritmos Computacionales.
En la resolucin de un problema con la computadora la parte pensante esta en el
algoritmo. As pues la eficacia de un programador no esta en conocer la herramienta de
programacin, cosa necesaria, sino en saber resolver problemas con la computadora para lo cual
se requiere conocer un concepto conocido como metodologa de la programacin cuyo eje
central es el algoritmo.
Una vez que la solucin de un problema ha sido expresada mediante un algoritmo el paso
siguiente es convertirlo a programa para lo cual se elige un lenguaje de programacin. De modo
que un programa resulta ser la implementacin de un algoritmo en un determinado lenguaje de
programacin. Esto significa, por otro lado, que un algoritmo es independiente del lenguaje de
Programacin.

Figura 2.1 Problema, algoritmo y programa

2.2 El Pseudocdigo
El pseudocdigo es una herramienta algortmica que permite escribir pseudoprogramas
(una imitacin de un programa real) utilizando un lenguaje de pseudoprogramacin que es una
imitacin de los lenguajes de programacin de alto nivel. As, un pseudocdigo es una
combinacin de smbolos (+, -, *, /, %, >, >=, <, <=,!=, ==, y, o, no), trminos (Leer, Imprimir,
Abrir, Cerrar, Hacer... Mientras, Mientras... Hacer, Para... Mientras, etc.) y otras caractersticas
comnmente utilizadas en uno o ms lenguajes de alto nivel.
No existen reglas que determinen que es o no es un pseudocdigo, sino que vara de un
programador a otro. El objetivo del pseudocdigo es permitir al programador centrarse en los
aspectos lgicos de la solucin evitando las reglas de sintxis de un lenguaje de programacin.
Posteriormente el pseudocdigo debe ser traducido a programa usando un lenguaje de
programacin de alto nivel como Java, C++, C, etc.

11

Universidad Tecnolgica Nacional - U.A Reconquista

Ejemplo 2.1: - Disee un algoritmo para preparar una limonada.


INICIO
Llenar una jarra con un litro de agua
Echar el jugo de tres limones
Echar cuatro cucharadas de azucar
Remover el agua hasta disolver completamente el azucar
FIN
Ejemplo 2.2 :- Disee un algoritmo que permita hallar la suma y el promedio de tres nmeros.
INICIO
LEER numero1, numero2, numero3
suma = numero1 + numero2 + numero3
promedio = suma / 3
IMPRIMIR suma, promedio
FIN
Notas:El trmino LEER significa obtener un dato de algn dispositivo de entrada, como el
teclado, y almacenarlo en una variable.
Una variable es una localizacin en la memoria que tiene un nombre y cuyo contenido
puede cambiar a lo largo de la ejecucin de un programa. As numero1, numero2 y numero3 son
variables.
El trmino IMPRIMIR significa mostrar el valor de una variable en algn dispositivo de
salida, como la pantalla.
Para una explicacin ms detallada de estos conceptos vea Variables e Instrucciones
Bsicas de Programacin ms adelante en este mismo captulo.

2.3 Conceptos Fundamentales


El recurso fundamental utilizado por un programa es la memoria. Es en la memoria
donde un programa almacena sus datos e instrucciones. Los datos se almacenan en
localizaciones en la memoria denominadas variables. Cada variable puede almacenar un solo
tipo de dato (entero, real, carcter, booleano, etc) y requiere de un identificador para poder tener
acceso a su contenido. En esta parte del curso veremos este y otros aspectos fundamentales.

2.3.1 Identificadores
Un identificador es un nombre que puede darse a una variable, a una constante y en
general a cualquier elemento de un programa que necesite nombrarse.
Los lenguajes de programacin imponen ciertas reglas para la creacin de
identificadores. As, por ejemplo, en el lenguaje Java, existen dos reglas:
El primer carcter debe ser una letra, el smbolo de subrayado o el smbolo de dlar. Los
dems caracteres pueden ser letras, smbolos de subrayado, smbolos de dlar o dgitos.
No puede ser ninguna palabra reservada del lenguaje Java.

12

Universidad Tecnolgica Nacional - U.A Reconquista

As, por ejemplo, son vlidos los siguientes identificadores:


sueldoBruto
Sueldo bruto de un empleado
edad
Edad de una persona
numero_hijos
Nmero de hijos de un empleado
DIA
Nombre de un da de la semana

2.3.2 Tipos de Datos


Los datos son los objetos de informacin sobre los que acta un programa. Un dato
puede ser un simple carcter como 'a', un valor entero tal como 35, un nmero real tal como
2.345 o una cadena tal como "algoritmia".
A nivel mquina los datos se representan internamente como una secuencia de bits
(dgitos 0 y 1). Los lenguajes de alto nivel evitan estos manejos internos mediante el concepto
de tipo de dato. En la mayora de los lenguajes de programacin los tipos de datos simples o
primitivos se pueden clasificar como:
Enteros (dato numrico sin componente decimal y puede ser positivo o negativo).
Reales (dato numrico con componente decimal y puede ser positivo o negativo).
carcter (un slo carcter)
booleanos (verdadero o falso)
As, en el lenguaje Java, existen los siguientes tipos de datos:

Tabla 2.2 - Tipos de Datos Primitivos del Lenguaje Java


Clasificacin
Permitidos
Carcter
Entero

Real
Booleano

Nombre del Tipo


char
byte
Short
Int
Long

Rango

de

Valores

0 a 65535
-128 a 127
-32768 a 32767
2147483648 a 2147483647
-9223372036854775808 a
9223372036854775807
-3.4 x 1038 a 3.4 x 1038

float
Double
boolean

true, false

Tambin la mayora de los lenguajes de programacin permiten crear tipos compuestos


conocidos tambin como tipos abstractos de datos. Estos son tipos de datos creados por el
programador para responder a un problema especfico o general, usando para ello los tipos
simples u otros tipos abstractos.

13

Universidad Tecnolgica Nacional - U.A Reconquista

2.3.3 Variables
Una variable es una localizacin en la memoria principal que almacena un dato que
puede cambiar a lo largo de la ejecucin del programa.
Una variable tiene asociada dos cosas fundamentales: un identificador y un tipo de dato.
El nombre identifica de manera nica la localizacin de memoria donde se almacena el dato. El
tipo de dato especifica la naturaleza de dato que puede almacenar la variable. Segn el tipo de
dato de la variable podemos tener variables enteras, variables reales, variables de carcter,
variables booleanas, etc.
En el grfico siguiente se muestran dos variables con sus contenidos en memoria. La
variable llamada Edad (de tipo entero) cuyo contenido es 27 y la variable llamada Descuento
(de tipo real) cuyo contenido es 23.57.

Edad

Descuento

301

23.57

2.3.4 Constantes
Se denominan constantes a todos aquellos valores que no cambian durante la ejecucin
de un programa. Segn el tipo de dato podemos tener constantes enteras, constantes reales,
constantes de carcter y constantes de cadena.
Constantes enteras
12, 20300, 15, etc.
Constantes reales
3.1416, 2345.456, etc.
Constantes de carcter
'A', 'B', ';', '<', '+', etc.
Constantes de cadena
"Hola", "Algoritmos Computacionales", etc.
Constantes lgicas
verdadero, falso

14

Universidad Tecnolgica Nacional - U.A Reconquista

Normalmente los lenguajes de programacin permiten dar nombres a determinadas


constantes. Por ejemplo, el nmero de das de la semana (7) es un valor constante y puede
recibir el nombre NUMDIAS.

2.3.5 Instrucciones Bsicas de Programacin


Las principales instrucciones bsicas de programacin son las siguientes: asignacin, entrada y
salida.
Instruccin de asignacin: consiste en dar a una variable el valor de una expresin, el
valor de otra variable o el valor de una constante. La asignacin tiene efecto destructivo en el
sentido que destruye el valor previo de la variable que recibe la asignacin.
Instruccin de entrada: consiste en obtener un dato de un dispositivo de entrada, como
el teclado, y almacenarlo en una variable.
Instruccin de salida: consiste en mostrar el valor de una variable en un dispositivo de
salida como la pantalla.

Tabla 2.3 Instrucciones bsicas de programacin


Instruccin
LEER variable
variable = expresion
IMPRIMIR variable

Tipo de Instruccin
Entrada
Asignacin
Salida

Ejemplo 2.3:- Instrucciones de entrada y de salida

La siguiente instruccin de entrada, obtiene la edad de una persona desde un dispositivo


de entrada, como el teclado, y lo almacena en la variable llamada edad:
LEER edad
La siguiente instruccin de entrada, obtiene tres nmeros desde un dispositivo de
entrada, como el teclado, y los almacena en las variables num1, num2 y num3:
LEER num1, num2, num3
La siguiente instruccin de salida, muestra el contenido de la variable sueldoNeto en un
dispositivo de salida como la pantalla:
IMPRIMIR sueldoNeto
La siguiente instruccin de salida, muestra el contenido de las variables montoPag y
montoDes en un dispositivo de salida como la pantalla:
IMPRIMIR montoPag, montoDes

15

Universidad Tecnolgica Nacional - U.A Reconquista

Ejemplo 2.4:- Instruccin de asignacin.


La siguiente instruccin de asignacin, asigna el valor constante 25 a la variable kilometros:
kilometros = 25
Antes de la asignacin
Si asuminos que es la primera vez que la variable kilometros recibe una asignacin,
entonces su valor actual es desconocido:
kilometros

Despus de la asignacin:
Kilometros

25

La siguiente instruccin de asignacin, asigna a la variable vara el valor de la variable varb:


vara = varb
Luego de esto, ambas variables tienen el mismo valor.
Antes de la asignacin
Asumamos que vara y varb tienen actualmente los valores mostrados
Varb

12

Vara

15

Despus de la asignacin
Vara toma el valor de varb, luego de lo cual ambas variables tienen el mismo valor. Note
que el valor anterior de vara se destruye de forma irrecuperable.
Varb

12

Vara

12

16

Universidad Tecnolgica Nacional - U.A Reconquista

La siguiente instruccin de asignacin, calcula el valor de la expresin del lado derecho


y lo asigna a la variable montoPag:
montoPag = montoBru - montoDes
Antes de la asignacin
Asumamos que actualmente montoBru y montoDes tienen los valores mostrados y que
montoPag tiene un valor desconocido al no haber recibido ninguna asignacin anterior:
montoBru

1350

montoDes

150

montoPag

Despus de la asignacin
MontoBru

1350

MontoDes

150

MontoDes

1200

2.4 Expresiones Aritmticas


Una expresin aritmtica es un conjunto de variables y/o constantes unidas o
relacionadas por parntesis y operadores aritmticos.
Los operadores aritmticos son los siguientes:

Tabla 2.4 Operadores aritmticos


Operador

Significado

Suma

Resta

Multiplicacin

Divisin

Residuo de divisin entera

17

Universidad Tecnolgica Nacional - U.A Reconquista

En todos los lenguajes existen los operadores +, -. * y /, mientras que el operador % es propio
de C, C++ y Java.
Notas
1.Si en una operacin ambos operandos son enteros, entonces el resultado de la operacin es
un entero.
2.Si en una operacin uno o ambos operandos son reales, entonces el resultado de la operacin
es un real.
3.El operador / produce un cociente entero si los dos operandos son enteros. Esto significa
que se pierde la parte decimal si la divisin no es exacta. Esta es una consecuencia de la nota 1.
4.El operador / produce un cociente real si uno o los dos operandos son reales. Esta es una
consecuencia de la nota 2.
Por ejemplo
7 / 2 es igual a 3 y no 3.5 como lo es matemticamente. Esto debido a que 7 y 2 son enteros y al
dividir dos enteros se pierde la parte fraccionaria, no se redondea.
En cambio:
7.0 / 2 es igual a 3.5 ya que si uno o los dos operandos son reales, entonces el resultado es real.
En este caso 7.0 es real.
Ejemplo 2.5:- Expresiones aritmticas.
sueldoBru = sueldoBas + 0.15*montoVen
numero = centenas*100 + decenas*10 + unidades
e = a*b*b / 3 + (a*a + b) / (b + c)
Ejemplo 2.6:- Disee un algoritmo que determine el cociente y el residuo de una divisin entera.
VARIABLES
ENTERO m, m
INICIO
LEER m, n
cociente = m/n
residuo = m%n
IMPRIMIR residuo, cociente
FIN
Nota:- Observe que m/n es entero debido a que amnbas variables son enteras.

2.5 Expresiones Lgicas


Una expresin lgica o booleana es un conjunto de variables y/o constantes unidas
mediante operadores lgicos y operadores relacionales.
Una expresin lgica solo puede tomar uno de dos valores: verdadero o falso. Las
expresiones lgicas son ampliamente utilizadas en las estructuras selectivas y las estructuras
repetitivas.

18

Universidad Tecnolgica Nacional - U.A Reconquista

En la tabla 2.4 se muestran los operadores relacionales y en la tabla 2.5 se muestran los
operadores lgicos:

Tabla 2.4 Operadores relacionales


Operador
>
>=
<
<=
==
!=

Significado
mayor
mayor o igual que
menor
menor o igual que
igual a
diferente de

Tabla 2.5 Operadores lgicos


Operador
no (not)
y (and)
o (or)

Significado
negacin
conjuncin
disyuncin

Ejemplo 2.7:- Expresar las siguientes condiciones como expresiones lgicas:

a. B es mayor que 2.
b. M es menor igual que 5 pero mayor que 25.
c. P es igual a 6 mayor que Q.
d. N es par menor que 50.
e. M es mayor que A, B y C.
f. Z esta en el intervalo de 4 a 100.
g. T es igual a 2, 3 4.
a. B > 2
b. ( M <= 5 ) y ( M > 25 )
c. ( P == 6 ) o ( P > Q )
d. ( ( N % 2 ) == 0 ) y ( N < 50 )
e. (M > A ) y ( M > B ) y ( M > C )
f. (Z >= 4 ) y ( Z <= 100 )
g. (T == 2 ) o ( T == 3 ) o ( T== 4 )

2.6 Ejercicios
Ejercicio 2.1:-Considere dos variables A y B, cuyos valores se muestran en el grfico, determine
que valores tendrn A y B luego de las siguientes instrucciones de asignacin:
A
12
B
13

19

Universidad Tecnolgica Nacional - U.A Reconquista

A=B+A
B=B+A
Solucin:
A=B+A
A
25
B
13

B=B+A
A
25
B
38

Ejercicio 2.2:- Cules son los valores de A y B luego de las siguientes instrucciones?
A=3
B=4
C = 2*A*B
A = A+2
B = C-A
Solucin:
A=3
asigna a A el valor 3
B=4
asigna a B el valor 4
C = 2*A*B
asigna a C el valor 24 (resultado de calcular 2*3*4)
A = A+2
asigna a A el valor 5 (resultado de calcular 3+2), esto borra el valor 3 que tena
anteriormente
B = C-A
asigna a B el valor 19 (resultado de calcular 24-5), esto borra el valor 4 que tena
anteriormente

20

Universidad Tecnolgica Nacional - U.A Reconquista

CAPITULO 3
SOLUCION DE PROBLEMAS CON LA COMPUTADORA
3.1 Introduccin
Etimolgicamente, la palabra problema deriva del griego proballein y significa algo
lanzado hacia delante. Un problema es un asunto o un conjunto de cuestiones que se plantean
para ser resueltas. La naturaleza de los problemas vara con el mbito o con el contexto donde
estn planteados; as, existen problemas matemticos, qumicos, filosficos, etc. Consideramos
aqu slo aquellos problemas cuya solucin se puede calcular utilizando una serie de reglas
introducidas en la computadora.
No existe un mtodo universal que permita resolver cualquier problema. En general, la
resolucin de problemas es un proceso creativo donde el conocimiento, la habilidad y la
experiencia tienen un papel importante. El proceder de manera sistemtica (sobre todo si se trata
de problemas complejos) puede ayudar en la solucin.
En general, la solucin de problemas con la computadora se puede dividir en tres etapas:
Anlisis del problema
Diseo del algoritmo
Implementacin del algoritmo en la computadora

3.2 Anlisis del Problema


El anlisis del problema es la primera fase en la resolucin de un problema con la
computadora. El objetivo del anlisis es comprender y definir claramente la naturaleza del
problema. En esta etapa es fundamental establecer con claridad que har el programa que se
pretende construir. No se puede abordar una solucin mientras no se sepa a donde se quiere
llegar.
Para poder definir el problema con precisin se requiere especificar con detalle cuales
sern los datos de entrada y cuales los datos de salida. La forma como se procesar la
informacin de entrada para producir los datos de salida es tarea de la etapa del diseo del
algoritmo; pero, en esta etapa puede establecerse un esbozo de la solucin.
As pues, el anlisis del problema comprende los siguientes aspectos:
Definicin del problema.
Especificaciones de entrada.
Especificaciones de salida.

3.3 Diseo del Algoritmo


En esta etapa se construye un algoritmo que resuelva el problema analizado utilizando
una herramienta algortmica como el pseudocdigo. Aqu se decide como har el algoritmo para
producir los datos de salida sobre la base de los datos de entrada.
Esto puede requerir de acciones secuenciales, tomas de decisiones y repeticiones de procesos.

21

Universidad Tecnolgica Nacional - U.A Reconquista

Para un diseo eficiente del algoritmo es importante abordar la solucin mediante una
metodologa de diseo. Una estrategia popular consiste en aplicar el dicho romano "divide y
vencers". Este mtodo consiste en dividir el problema en subproblemas ms simples, para
facilitar la comprensin y solucin del problema. Si algn subproblema todava es complejo
puede a su vez subdivirse en otros subproblemas. Este proceso de subdivisin puede continuar
hasta obetener subproblemas simples de resolver. A esta metodologa de diseo se conoce como
el mtodo del diseo modular descendente, debido a que cada subproblema puede resolverse
mediante un mdulo de programa.

Figura 2.1 Diseo descendente

3.4 Implementacin del Algoritmo en la Computadora


Esta etapa es relativamente mecnica y consiste en codificar el algoritmo siguiendo las
reglas sintcticas y semnticas de un determinado lenguaje de programacin. Al resultado de la
codificacin se denomina cdigo fuente o programa fuente. Luego de ello el programa fuente
debe ser ejecutado y probado para verificar si los resultados obtenidos son los esperados.
La verificacin del programa se efecta con una amplia variedad de datos de entrada,
llamados datos de test o datos de prueba, que determinarn si el programa tiene errores ("bugs").
Los datos de prueba comprenden: valores normales de entrada, valores extremos de entrada que
comprueben los lmites del programa y valores de entrada que comprueben aspectos especiales
del programa. Si los resultados obtenidos no son los esperados se procede a depurar el
programa. La depuracin consiste en encontrar los errores del programa para efectuar las
correcciones pertinentes.
As pues, la implementacin de un algoritmo en la computadora comprende los siguientes
aspectos:
Codificacin del algoritmo.
Verificacin y depuracin de la solucin.
Ejemplo 3.1:- Se desea un programa para calcular el monto bruto, el monto del impuesto y el
monto a pagar por la compra de cierta cantidad de unidades de un mismo tipo de producto cuyo
costo por unidad (libre de impuestos) es de S/.25.45. La
compra esta sujeta a un impuesto del 18%.
Anlisis del problema
De la lectura del problema encontramos los siguientes datos de entrada y datos de salida:

22

Universidad Tecnolgica Nacional - U.A Reconquista

Datos de entrada
Nmero de unidades adquiridas: unidades
Costo del producto: S/. 25.45
Impuesto: 18%
Datos de salida
Monto bruto: montobruto
Monto del impuesto: montoimpuesto
Monto a pagar: montopagar
Observe que el costo del producto y el porcentaje del impuesto ya tienen valores
preestablecidos. Segn esto, estos datos no requerirn ser ingresados.
Diseo del algoritmo
Primer diseo descendente
En un primer momento el problema puede descomponerse de manera bastante general. En este
caso se ha descompuesto en tres pasos.
Inicio
1. Leer unidades
2. Clculo de montos
3. Imprimir montoBruto, montoImpuesto, montoPagar
Fin
Primer refinamiento
Luego de un refinamiento en el subproblema Clculo de montos llegamos al siguiente diseo:
Inicio
1. Leer unidades
2. Clculo de montos
2.1 Calcular el monto bruto
2.2 Calcular el monto del impuesto
2.3 Calcular el monto a pagar
3. Imprimir montoBruto, montoImpuesto, montoPagar
Fin
Segundo refinamiento
Finalmente llegamos al algoritmo definitvo:
Inicio
// Ingreso de datos
Leer unidades
// Clculo de montos
montobruto = unidades * 25.45
montoimpuesto = montobruto * 0.18
montopagar = montobruto + montoimpuesto
// Salida de resultados

23

Universidad Tecnolgica Nacional - U.A Reconquista

Imprimir montoimpuesto, montobruto, montopagar


Fin
Codificacin del algoritmo
A continuacin se muestra la codificacin del algoritmo en el lenguaje de programacin Java.
package Secuencia;
import java.applet.*;
import java.awt.*;
public class Tienda extends Applet
{
private Button BtnCalcular;
private Label LblUnidades;
private TextArea TxtRes;
private TextField TxtUnidades;
public boolean action( Event evento, Object objeto )
{
// Declaracin de variables
int unidades;
double montoBruto, montoImpuesto, montoPagar;
// Declaracin de constantes
final double PRECIO = 25.45;
final double IGV = 0.18;
// Ingreso de datos
unidades = Integer.valueOf(TxtUnidades.getText()).intValue();
// Clculo de montos
montoBruto = unidades * PRECIO;
montoImpuesto = montoBruto * IGV;
montoPagar = montoBruto + montoImpuesto;
// Salida de resultados
TxtRes.setText("");
TxtRes.append("Monto bruto
: S/." + montoBruto + "\n");
TxtRes.append("Monto del impuesto : S/." + montoImpuesto + "\n");
TxtRes.append("Monto a pagar : S/." + montoPagar);
return false;
}
public void init()
{
setLayout(null);
setSize(382, 215);
LblUnidades = new Label("Unidades");
LblUnidades.setBounds(22, 28, 55, 27);
TxtUnidades = new TextField();

24

Universidad Tecnolgica Nacional - U.A Reconquista

TxtUnidades.setBounds(88, 26, 125, 30);


BtnCalcular = new Button("Calcular");
BtnCalcular.setBounds(232, 26, 125, 30);
TxtRes = new TextArea();
TxtRes.setFont(new Font("courier", 0, 12));
TxtRes.setBounds(22, 70, 335, 124);
add(LblUnidades);
add(TxtUnidades);
add(BtnCalcular);
add(TxtRes);
}
}

As los valores finales de A y B son 5 y 19, respectivamente.

25

Universidad Tecnolgica Nacional - U.A Reconquista

26

Universidad Tecnolgica Nacional - U.A Reconquista

CAPITULO 4
ESTRUCTURAS DE SECUENCIAS
4.1 Concepto
Una estructura secuencial es aquella en la que las instrucciones estan una a continuacin
de la otra siguiendo una secuencia nica, sin cambios de ruta. La estructura secuencial tiene una
entrada y una salida.
En la Figura 3.1 se muestra el pseudocdigo de una estructura secuencial.

inicio
accin 1
accin 2
accin 3
.
.
.
fin
Figura 3.1 Pseudocdigo de una estructura secuencial

4.2 Ejercicios
Ejercicio 4.1:- Disee un pseudocdigo que halle el rea y el permetro de un rectngulo.
Considere las siguientes frmulas:
area = base x altura, perimetro = 2 x (base+altura).
Anlisis
Datos de entrada
Base del rectngulo ( base )
Altura del rectngulo ( altura )
Datos de salida
Area del rectngulo ( area )
Permetro del rectngulo ( perimetro )
Algoritmo
VARIABLES
REAL base, altura, area, perimetro

27

Universidad Tecnolgica Nacional - U.A Reconquista

INICIO
LEER base, altura
area = base*altura
perimetro = 2*(base+altura)
IMPRIMIR area, perimetro
FIN
Ejercicio 4.2:- Disee un pseudocdigo para convertir una longitud dada en centmetros a pies.
Considere que:
1 pie = 30.48 centmetros.
Anlisis
Datos de entrada
Cantidad en centmetros ( cantCent)
Datos de salida
Cantidad en pies ( cantPies )

Consideraciones
Para convertir cantPies a cantCent debemos buscar una frmula que relacione estas dos
variables, para esto podemos
recurrir a la regla de tres simple como se muestra a continuacin:
pies
1
cantPies

centmetros
30.48
cantCent

Obtenemos: 1 x cantCent = 30.48 x cantPies ===> cantPies = cantCent/30.48


Algoritmo
VARIABLES
REAL cantPies, cantCent
INICIO
LEER cantCent
cantPies = cantCent/30.48
IMPRIMIR cantPies
FIN
Ejercicio 4.3:- Disee un pseudocdigo para convertir una longitud dada en pies a centmetros.
Considere que:
1 pie = 30.48 centmetros.
Anlisis
Datos de entrada

28

Universidad Tecnolgica Nacional - U.A Reconquista

Cantidad en centmetros ( cantCent )


Datos de salida
Cantidad en pies ( cantPies )
Consideraciones
De la regla de tres simple del problema anterior encontramos que: cantCent = 30.48 x cantPies
Algoritmo
VARIABLES
REAL cantPies, cantCent
INICIO
LEER cantPies
cantCent = cantPies*30.48
IMPRIMIR cantCent
FIN
Ejercicio 4.4:- Disee un algoritmo para determinar el rea de un terreno rectangular en metros
cuadrados y en hectreas
considerando que las dimensiones del terreno se dan en metros. Considere que: 1 Hectrea =
10000 m y que: area = largo x
ancho.
Anlisis
Datos de entrada
Largo del terreno en metros ( largo )
Ancho del terreno en metros (ancho )
Datos de salida
Area en hectreas ( areahect )
Area en metros cuadrados ( areametc )
Algoritmo
VARIABLES
REAL largo, ancho, areahect, areametc
INICIO
LEER largo, ancho
areametc = largo x ancho
areahect = areametc/10000
IMPRIMIR areahect
FIN
Ejercicio 4.5:- En una competencia de velocidad el espacio recorrido se mide en metros, el
tiempo en segundos; pero, la velocidad se da en km/hr. Disee un algoritmo para determinar la
velocidad promedio de un atleta. Considere que: velocidad promedio = espacio / tiempo, 1 km =
1000 m, 1hr = 3600 seg.

29

Universidad Tecnolgica Nacional - U.A Reconquista

Anlisis
Datos de entrada
Espacio recorrido en metros ( espacioMet )
Tiempo empleado en segundos ( tiempoSeg )
Datos de salida
Velocidad en km/hr ( velocidadKmHr )
Consideraciones
De la frmula de la velocidad obtenemos:
velocidadKmHr = espacio en kilmetros / tiempo en horas
Tomando en cuenta las variables del problema:
velocidadKmHr = (espacioMet/1000) / (tiempoSeg/3600)
Simplificando:
velocidadKmHr = (espacioMet*18)/(tiempoHr*5)
Algoritmo
VARIABLES
REAL espacioMet, tiempoSeg, velocidadKmHr
INICIO
LEER espacioMet, tiempoSeg
velocidadKmHr = (espacioMet*18)/(tiempoHr*5)
IMPRIMIR velocidadKmHr
FIN
Ejercicio 4.6:- En una competencia atltica el tiempo se mide en minutos, segundos y
centsimas de segundo. Disee un algoritmo para determinar el tiempo total empleado por un
atleta, en segundos.
Anlisis
Datos de entrada
Cantidad de minutos ( cantMin )
Cantidad de segundos ( cantSeg )
Cantidad de centsimas de segundo ( cantCen )
Datos de salida
Cantidad total de segundos
Consideraciones

30

Universidad Tecnolgica Nacional - U.A Reconquista

Para obtener la cantidad total de segundos efectuamos la siguiente suma:


canTotSeg = segundos de cantMin + cantSeg + segundos de cantCen
Que equivale a:
cantTotSeg = cantMin*60 + cantSeg + cantCen/100
Algoritmo
VARIABLES
ENTERO cantMin, cantSeg, cantCen
REAL cantTotSeg
INICIO
LEER cantMin, cantSeg, cantCen
cantTotSeg = catMin*60 + cantSeg + cantCen/100
IMPRIMIR cantTotSeg
FIN
Ejercicio 4.7:- Disee un algoritmo que lea un nmero y determine la suma de sus cifras. Asuma
que el nmero es entero y que tiene 4 cifras.
Anlisis
Datos de entrada
El nmero de cuatro cifras ( N )
Datos de salida
Suma de las cifras del nmero ( suma )
Datos auxilires
Cifras del nmero ( unidades, decenas, centenas, millares )
Residuos obtenidos en la descomposicin del nmero ( R )
Consideraciones
Para comprender el proceso de descomposicin de un nmero en sus cifras tomemos, por
ejemplo, el caso de un nmero N igual a 3245:
3245
1000
245
3
245
100
45
2
45
10
5
4

31

Universidad Tecnolgica Nacional - U.A Reconquista

Observe que para la segunda y tercera divisin se requiere el residuo de la divisin anterior, el
que almacenaremos en la variable R. As, el proceso puede expresarse como:
millares = cociente de N 1000
R = residuo de N 1000
centenas = cociente de R 100
R = residuo de R 100
decenas = cociente de R 10
R = residuo de R 10
unidades = R
Para obtener el cociente de una divisin entera simplemente aplicamos el operador cociente /
puesto que el cociente de dos cantidades enteras es un valor entero ( lo que en divisin entera se
conoce simplemente como el cociente ). As:
millares = cociente de N 1000
Se expresa como:
millares = N/1000
Ya que tanto N como 1000 son valores enteros.
Para calcular el residuo de una divisin entera usamos el operador porcentaje %. As:
R = residuo de N 1000
Se expresa como:
R = N % 1000
Algoritmo
VARIABLES
ENTERO N, suma, millares, centenas, decenas, unidades, R
INICIO
LEER N
millares = N/1000
R
= N%1000
centenas = R/100
R
= R%100
decenas = R/10
R
= R%10
unidades = R
suma
= unidades + decenas + centenas + millares
IMPRIMIR suma
FIN
Ejercicio 4.8:- Disee un algoritmo para cifrar claves numricas para una empresa. Cada clave
es un nmero entero de 4 dgitos. El proceso de cifrado es el siguiente: a cada dgito de la clave
normal se suma 7 y se obtiene el residuo de dividir la suma entre 10, el resultado es el dgito
correspondiente de la clave cifrada.

32

Universidad Tecnolgica Nacional - U.A Reconquista

Anlisis
Datos de entrada
Clave normal ( clavenorm )
Datos de salida
Clave cifrada ( clavecifr )
Datos auxiliares
Cifras de la clave normal y luego de la clave cifrada ( unidades, decenas, centenas, millares )
Residuos obtenidos en la descomposicin de la clave normal ( resto )
Consideraciones
De acuerdo a la lectura del problema, el cifrado cumple la siguiente relacin:
digitocifrado = (digitonormal+7)%10
Algoritmo
VARIABLES
ENTERO clavenorm, clavecifr, millares, centenas, decenas, unidades, resto
INICIO
LEER clavenorm
// Descomposicin de la clave normal en dgitos
millares = clavenorm/1000
resto = clavenorm%1000
centenas = resto/100
resto = resto%100
decenas = resto/10
unidades = resto%10
// Determinacin de las cifras de la clave cifrada
millares = (millares+7)%10
centenas = (centenas+7)%10
decenas = (decenas+7)%10
unidades = (unidades+7)%10
// Formacin de la clave cifrada
clavecifr = millares*1000 + centenas*100 + decenas*10 + unidades
IMPRIMIR clavecifr
FIN
Ejercicio 4.9:- Se cuenta con tres cantidades de dinero en soles, dlares y marcos. Disee un
algoritmo que determine el monto total del dinero en euros. Considere los siguientes tipos de
cambio: 1 dlar = 3.48 soles, 1 dlar = 1.07 euros, 1 dlar = 2.08 marcos.
Anlisis
Datos de entrada

33

Universidad Tecnolgica Nacional - U.A Reconquista

Cantidad de dinero en soles ( soles )


Cantidad de dinero en dlares ( dolares )
Cantdad de dinero en marcos ( marcos )
Datos de salida
Cantidad total de dinero en euros ( totalEuros )
Datos auxiliares
Cantidad en soles expresada en euros ( euros1 )
Cantidad en dlares expresada en euros ( euros2 )
Cantidad en marcos expresada en euros ( euros3 )
Algoritmo
VARIABLES
REAL soles, dolares, marcos, euros1, euros2, euros3, totalEuros
INICIO
LEER soles, dolares, marcos
euros1 = soles*1.07/3.48
euros2 = dolares*1.07
euros3 = marcos*1.07/2.08
totalEuros = euros1 + euros2 + euros3
IMPRIMIR totalEuros
FIN
Ejercicio 4.10:- Disee un algoritmo que lea la hora actual del da HH:MM:SS y determine
cuantas horas, minutos y segundos restan para culminar el da.
Anlisis
Datos de entrada
Hora actual del da ( hor1, min1, seg1 )
Datos de salida
Tiempo que resta para culminar el da ( hor2, min2, seg2 )
Datos auxiliares
Cantidad de segundos que restan para culminar el da ( segres )
Residuo ( resto )

Algoritmo
VARIABLES
ENTERO hor1, min1, seg1, hor2, min2, seg2, segres, resto
INICIO

34

Universidad Tecnolgica Nacional - U.A Reconquista

LEER hor1, min1, seg1


// Determina la cantidad de segundos que restan para culminar el da
segres = 86400 - (hor1*3600 + min1*60 + seg1)
// Determina cuantas horas, minutos y segundos restan para culminar el da
hor2 = segres/3600
resto = segres%3600
min2 = resto/60
seg2 = resto%60
IMPRIMIR hor2, min2, seg2
FIN
Ejercicio 4.11:- Disee un algoritmo para sumar dos tiempos dados en horas, minutos y
segundos.
Anlisis
Datos de entrada
Primer tiempo ( hor1, min2, seg2 )
Segundo tiempo ( hor2, min2, seg2 )
Datos de salida
Tiempo total en horas, minutos y segundos ( hor3, min3, seg3 )
Datos auxiliares
Tiempo total en segundos ( totseg )
Residuo ( resto )
Algoritmo
VARIABLES
ENTERO hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3, totseg, resto
INICIO
LEER hor1, min1, seg1, hor2, min2, seg2
// Determina la cantidad total de segundos entre los dos tiempos
totseg = (hor1+hor2)*3600 + (min1+min2)*60 + (seg1+seg2)
// Convierte totseg a horas, minutos y segundos
hor3 = totseg/3600
resto = totseg%3600
min3 = resto/60
seg3 = resto%60
IMPRIMIR hor3, min3, seg3
FIN

35

Universidad Tecnolgica Nacional - U.A Reconquista

CAPITULO 5

36

Universidad Tecnolgica Nacional - U.A Reconquista

ESTRUCTURAS DE SELECCION
5.1 Introduccin
En el desarrollo de un algoritmo es frecuente la necesidad de tomar una decisin antes
de efectuar una accin o un conjunto de acciones. Estas tomas de decisiones dependen de ciertas
condiciones que hacen variar el flujo de control del programa, que debe seleccionar entre dos o
ms rutas posibles.
Para seleccionar una ruta posible, en el flujo de control de un programa, se requieren de
estructuras de seleccin. En una estructura de seleccin se evala una condicin y en funcin
del resultado (verdadero falso) se elige una ruta u otra. Las condiciones se especifican usando
expresiones lgicas.
Las estructuras selectivas o de seleccin se clasifican en:
Estructura de seleccin simple (SI).
Estructura de seleccin doble (SI - SINO).
Estructura de seleccin mltiple (EN CASO - SEA)

5.2 Estructura de Seleccin Simple SI


La estructura de seleccin simple SI evala una condicin lgica y:
Si la condicin es verdadera ejecuta la accin A1. La accin A1 puede ser una accin simple
(una sola accin) o una accin compuesta (un conjunto de acciones).
Si la condicin es falsa, no hace nada.
En la Figura 5.1 se muestra el pseudocdigo de la estructura de seleccin simple.
SI( condicin )
accin A1
FIN_SI

Figura 5.1 Estructura de seleccin simple: pseudocdigo

Ejemplo 5.1:- Disee un algoritmo que determine si una persona es mayor o menor de edad. Se
consideran personas mayores de edad a partir de 18 aos.
Vea el ejemplo 5.4 para una solucin ms eficiente usando seleccin doble.
Algoritmo 1
VARIABLES
ENTERO edad // Edad de la persona
CADENA mensaje // Mensaje de salida
INICIO
37

Universidad Tecnolgica Nacional - U.A Reconquista

LEER edad
// Asumimos que la persona es menor de edad
mensaje = "menor de edad"
// Pero si la persona es mayor de edad, cambiamos el mensaje
SI( edad >= 18 )
mensaje = "mayor de edad"
FIN_SI
IMPRIMIR mensaje
FIN
Algoritmo 2
VARIABLES
ENTERO edad // Edad de la persona
CADENA mensaje // Mensaje de salida
INICIO
LEER edad
// Si es menor de edad
SI( edad < 18 )
mensaje = "menor de edad"
FIN_SI
// Si es mayor de edad
SI( edad >= 18 )
mensaje = "mayor de edad"
FIN_SI
IMPRIMIR mensaje
FIN
Ejemplo 5.2:- Disee un algoritmo que determine el mayor de tres nmeros. Considere que los
tres nmeros son diferentes entre si.
Algoritmo
VARIABLES
REAL a, b, c, mayor // Los tres nmeros y el mayor
INICIO
LEER a, b, c
// Asumimos que el primero es el mayor
mayor = a
// Pero si b supera al mayor, b pasa a ser el mayor
SI( b > mayor )
mayor = b
FIN_SI
// Pero si c supera al mayor, c pasa a ser el mayor

38

Universidad Tecnolgica Nacional - U.A Reconquista

SI( c > mayor )


mayor = c
FIN_SI
IMPRIMIR mayor
FIN
Ejemplo 5.3:- Disee un algoritmo que determine si un nmero es negativo, positivo o cero.
Vea el Ejemplo 5.6 para una solucin ms eficiente usando seleccin doble.
Algoritmo
VARIABLES
REAL n
// El nmero a analizar
CADENA mensaje // Mensaje de salida
INICIO
LEER n
// Si el nmero es positivo
SI( n > 0 )
mensaje = "Positivo"
FIN_SI
// Si el nmero es negativo
SI( n < 0 )
mensaje = "Negativo"
FIN_SI
// Si el nmero es 0
SI( n == 0 )
mensaje = "Cero"
FIN_SI
IMPRIMIR mensaje
FIN

5.3 Estructura de Seleccin Doble SI - SINO


La estructura de seleccin doble SI - SINO evala una condicin lgica y:
Si la condicin es verdadera, ejecuta la accin A1
Si la condicin es falsa, ejecuta la accin A2.
Tanto la accin A1 como A2 pueden ser acciones simples (una sla accin) o acciones
compuestas (un conjunto de acciones).
En la Figura 5.2 se muestra el pseudocdigo de la estructura de seleccin doble.
SI(condicin)
accin A1
SINO
39

Universidad Tecnolgica Nacional - U.A Reconquista

accin A2
FIN_SI
Figura 5.2 Estructura de seleccin doble: pseudocdigo

Ejemplo 5.4:- Resuelva el ejemplo 5.1 usando seleccin doble.


Vea el ejemplo 5.1 para una solucin usando seleccin simple.
Consideraciones
La ventaja de esta solucin, comparndola con la solucin dada en el ejemplo 5.1, es
que es ms eficiente dado que slo se requiere evaluar una condicin (edad < 18). En cambio en
la solucin con seleccin simple del ejemplo 5.1 se requieren evaluar necesariamente dos
condiciones (edad<18 y edad>=18).
Algoritmo
VARIABLES
ENTERO edad // Edad de la persona
CADENA mensaje // Mensaje de salida
INICIO
LEER edad
SI( edad < 18 ) // Si es menor de edad
mensaje = "menor de edad"
SINO
// Aqu queda implcito que es mayor de edad
mensaje = "mayor de edad"
FIN_SI
IMPRIMIR mensaje
FIN
Ejemplo 5.5:- Una tienda ha pueso en oferta la venta al por mayor de cierto producto,
ofreciendo un descuento del 15% por la compra de un mnimo de tres docenas. El costo del
producto es de S/.25 por docena. Disee un algoritmo que determine el monto de la compra, el
monto del descuento y el monto a pagar por la compra de cierta cantidad de docenas del
producto.
Los precios ya incluyen el impuesto del IGV.
Algoritmo
VARIABLES
REAL montopag, // Monto a pagar
montocom, // Monto de la compra
montodes // Monto del descuento
ENTERO docenas // Nmero de docenas adquiridas
INICIO
LEER docenas
// Clculo del monto de la compra
montocom = docenas*25

40

Universidad Tecnolgica Nacional - U.A Reconquista

// Clculo del monto del descuento


SI( docenas >= 3 )
montodes = 0.15*montocom
SINO
montodes = 0
FIN_SI
// Clculo del monto a pagar
montopag = montocom - montodes
IMPRIMIR montocom, montodes, montopag
FIN

5.3.1 Seleccin Doble en Cascada


Se dice que varias estructuras de seleccin doble estn en cascada cuando la instruccin
que sigue a un SINO es otro SI a excepcin del ltimo SINO. No hay lmite en cuanto al
nmero de estructuras de seleccin doble que pueden ponerse en cascada.
En las figuras 5.3 y 5.4 se muestran dos formas de seleccin doble en cascada.
Funcionamiento
Las condiciones se evalan en orden descendente pasando de una a otra si la anterior
resulta falsa. En el momento que se encuentra una condicin verdadera, se efecta la accin
correspondiente a dicha condicin y se corta el resto de la estructura.
Si todas las condiciones resultan falsas se efecta la accin correspondiente al ltimo sino.

SI( condicin C1 )
accin A1
SINO
SI( condicin C2 )
accin A2
SINO
SI( condicin C3 )
accin A3
.
.
.
SINO
accin An
FIN_SI
FIN_SI
FIN_SI
Figura 5.3 Seleccin doble en cascada: Forma 1

SI( condicin C1 )
accin A1
41

Universidad Tecnolgica Nacional - U.A Reconquista

SINO SI( condicin C2 )


accin A2
SINO SI( condicin C3 )
accin A3
.
.
.
SINO
accin An
FIN_SI
Figura 5.4 Seleccin doble en cascada: Forma 2

Ejemplo 5.6:- Resuelva el problema 5.3 usando seleccin doble.


Vea el Ejemplo 5.3 para una solucin usando seleccin simple.
Consideraciones
La ventaja de esta solucin, a comparacin con la solucin dada en el ejemplo 5.1, es
que es ms eficiente dado que en el peor de los casos se requerirn evaluar dos condiciones ( n >
0 y n < 0 ); pero, en el mejor de los casos slo una ( n > 0 ). En cambio en la solucin del
ejemplo 5.1 se requieren evaluar necesariamente tres condiciones ( n > 0, n < 0 y n == 0 ).
Algoritmo 1
VARIABLES
REAL n
// El nmero a analizar
CADENA mensaje // Mensaje de salida
INICIO
LEER n
SI( n > 0 )
mensaje = "Positivo"
SINO
SI( n < 0 )
mensaje = "Negativo"
SINO
mensaje = "Cero"
FIN_SI
FIN_SI
IMPRIMIR mensaje
FIN
Algoritmo 2
VARIABLES
REAL n
// El nmero a analizar
CADENA mensaje // Mensaje de salida

42

Universidad Tecnolgica Nacional - U.A Reconquista

INICIO
LEER n
SI( n > 0 )
mensaje = "Positivo"
SINO SI( n < 0 )
mensaje = "Negativo"
SINO
mensaje = "Cero"
FIN_SI
IMPRIMIR mensaje
FIN
Ejemplo 5.7:- Disee un algoritmo que lea un nmero entero en el intervalo de 1 a 7 e imprima
el nombre del da correspondiente. Considere 1 para domingo, 2 para lunes, 3 para martes, etc.
Vea el Ejemplo 5.8 para una solucin usando seleccin mltiple.
Algoritmo
VARIABLES
ENTERO dia // Nmero del da de la semana
CADENA mensaje // Nombre del da de la semana
INICIO
LEER dia
SI( dia == 1 )
mensaje = "Domingo"
SINO SI( dia == 2 )
mensaje = "Lunes"
SINO SI( dia == 3 )
mensaje = "Martes"
SINO SI ( dia == 4 )
mensaje = "Mircoles"
SINO SI( dia == 5 )
mensaje = "Jueves"
SINO SI ( dia == 6 )
mensaje = "Viernes"
SINO
mensaje = "Sbado"
FIN_SI
IMPRIMIR mensaje
FIN

5.4 Estructura de Seleccin Mltiple EN CASO-SEA


La estructura de seleccin mltiple EN CASO - SEA permite elegir una ruta de entre
varias rutas posibles, usando para ello una variable denominada selector. El selector se compara
con una lista de constantes enteras o de carcter C1, C2, ..., Cn para cada una de las cuales hay
una accin A1, A2, ..., An y:

43

Universidad Tecnolgica Nacional - U.A Reconquista

Si el selector coincide con una constante de la lista, se ejecuta la accin correspondiente


a dicha constante.
Si el selector no coincide con ninguna constante de la lista, se ejecuta la accin Df, si es
que existe.
Las acciones A1, A2, A3, ..., An pueden ser acciones simples( una sola accin) o
acciones compuestas (un conjunto de acciones).
En la Figura 5.3 se muestra el pseudocdigo de la estructura de seleccin mltiple.
EN CASO selector SEA
C1 : accin A1
C2 : accin A2
C3 : accin A3
.
.
.
Cn : accin An
SINO : accin Df
FIN_CASO
Figura 5.3 Estructura de seleccin mltiple: pseudocdigo

Ejemplo 5.8:- Resuelva el ejemplo 5.7 usando seleccin mltiple.


Vea el Ejemplo 5.7 para una solucin usando seleccin doble.
Algoritmo
VARIABLES
ENTERO dia // Nmero del da de la semana
CADENA mensaje // Nombre del da de la semana
INICIO
LEER dia
EN CASO dia SEA
1 : mensaje = "Domingo"
2 : mensaje = "Lunes"
3 : mensaje = "Martes"
4 : mensaje = "Mircoles"
5 : mensaje = "Jueves"
6 : mensaje = "Viernes"
SINO : mensaje = "Sbado"
FIN_CASO
IMPRIMIR mensaje
FIN

5.5 Estructuras de Seleccin Anidadas

44

Universidad Tecnolgica Nacional - U.A Reconquista

Se dice que una estructura SI ( o SI-SINO ) esta anidada cuando esta contenida dentro
de otra estructura SI o dentro de otra estructura SI-SINO. No existe lmite en cuanto al nivel de
anidamiento.
Por ejemplo, una estructura SI con tres niveles de anidamiento tendra el siguiente formato:
SI( condicin C1 )
accin A1
SI( condicin C2 )
accin A2
SI( condicin C3 )
accin A3
FIN_SI
FIN_SI
FIN_SI
En general, el anidamiento podra evitarse usando el operador lgico "y". As, la anterior
seleccin SI anidada puede descomponerse en tres estructuras de seleccin simple no anidadas,
como se muestra a continuacin.
SI( condicin C1 )
accin A1
FIN_SI
SI( condicin C1 y condicin C2 )
accin A2
FIN_SI
SI( condicin C1 y condicin C2 y condicin C3 )
accin A3
FIN_SI
La estructura de seleccin doble en cascada es un caso especial de la estructura SI anidada.
Ejemplo 5.9:- Para ingresar a un cierto espectculo se requiere ser varn mayor de 18 aos.
Disee un algoritmo que decida si una persona puede o no ingresar al espectculo.
Algoritmo 1 : Sin usar el operador lgico "y"
VARIABLES
ENTERO edad // Edad de la persona
CADENA mensaje // Mensaje de salida
CARACTER sexo // Sexo de la persona
INICIO
LEER edad, sexo
SI( edad > 18 )
SI( sexo == 'm' )
mensaje = "Puede ingresar"
SINO
mensaje = "No puede ingresar"
FIN_SI
SINO
mensaje = "No puede ingresar"

45

Universidad Tecnolgica Nacional - U.A Reconquista

FIN_SI
IMPRIMIR mensaje
FIN
Algoritmo 2 : Usando el operador lgico "y"
VARIABLES
ENTERO edad // Edad de la persona
CADENA mensaje // Mensaje de salida
CARACTER sexo // Sexo de la persona
INICIO
LEER edad, sexo
SI( edad > 18 y sexo == 'm' )
mensaje = "Puede ingresar"
SINO
mensaje = "No puede ingresar"
FIN_SI
IMPRIMIR mensaje
FIN
Ejemplo 5.10:- Una empresa ha decidido clasificar a sus empleados en cuatro grupos:
Grupo 1: Solteros con menos de 25 aos.
Grupo 2: Solteros con 25 aos a mas.
Grupo 3: Casados con menos de 34 aos.
Grupo 4: Casados con 34 aos a mas.
Disee un algoritmo que determine el grupo que le corresponde a un empleado.
Algoritmo 1 : Sin usar el operador lgico "y"
VARIABLES
ENTERO edad
// Edad de la persona
CARACTER estcivil // Estado civil del empleado ('s'=soltero, 'c'=casado)
CADENA mensaje // Mensaje de salida
INICIO
LEER edad, estcivil
SI( estcivil == 's' )
SI( edad < 25 )
mensaje = "Grupo 1"
SINO
mensaje = "Grupo 2"
FIN_SI
SINO
SI( edad < 34 )
mensaje = "Grupo 3"
SINO
mensaje = "Grupo 4"
FIN_SI

46

Universidad Tecnolgica Nacional - U.A Reconquista

FIN_SI
IMPRIMIR mensaje
FIN
Algoritmo 2 : Usando el operador lgico "y"
VARIABLES
ENTERO edad
// Edad de la persona
CARACTER estcivil // Estado civil del empleado ('s'=soltero, 'c'=casado)
CADENA mensaje // Mensaje de salida
INICIO
LEER edad, estcivil
SI( estcivil == 's' y edad < 25 )
mensaje = "Grupo 1"
SINO SI( estcivil == 's' y edad >= 25 )
mensaje = "Grupo 2"
SINO SI( estcivil == 'c' y edad < 34 )
mensaje = "Grupo 3"
SINO
mensaje = "Grupo 4"
FIN_SI
IMPRIMIR mensaje
FIN

5.4 Ejercicios
Ejercicio 5.1:- Disee un algoritmo que determine el nmero de elementos que forman parte de
la interseccin de dos conjuntos de nmeros enteros consecutivos. As, el nmero de elementos
de la interseccin de los conjuntos: A = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11} y B = {8, 9, 10, 11, 12, 13,
14, 15, 16, 17 } es 4.
Algoritmo 1 : Sin usar el operador lgico "y"
VARIABLES
ENTERO mina, maxa, // Elementos mnimo y mximo del conjunto A
minb, maxb, // Elementos mnimo y mximo del conjunto B
numelem // Nmero de elementos de la interseccin
INICIO
LEER mina, maxa, minb, maxb
SI( minb <= maxa)
SI( maxa <= maxb )
numelem = maxa-minb+1;
SINO
numelem = maxb-minb+1;
FIN_SI
SINO SI( mina <= maxb )
SI( maxb <= maxa )
numelem = maxb-mina+1;
SINO
numelem = maxa-mina+1
47

Universidad Tecnolgica Nacional - U.A Reconquista

FIN_SI
SINO
numelem = 0
FIN_SI
FIN
Algoritmo 2 : Usando el operador lgico "y"
VARIABLES
ENTERO mina, maxa, // Elementos mnimo y mximo del conjunto A
minb, maxb, // Elementos mnimo y mximo del conjunto B
numelem // Nmero de elementos de la interseccin
INICIO
LEER mina, maxa, minb, maxb
SI( minb <= maxa y maxa <= maxb )
numelem = maxa-minb+1;
SINO SI( minb <= maxa y maxa > maxb )
numelem = maxb-minb+1;
SINO SI( mina <= maxb y maxb <= maxa )
numelem = maxb-mina+1;
SINO SI( mina <= maxb y maxb > maxa )
numelem = maxa-mina+1
SINO
numelem = 0
FIN_SI
FIN
Ejercicio 5.2:- Una compaa dedicada al alquiler de automoviles cobra $30 hasta un mximo
de 300 km de distancia recorrida. Para ms de 300 km y hasta 1000 km, cobra $30 ms un
monto adicional de $ 0.15 por cada kilmetro en exceso sobre 300. Para ms de 1000 km cobra
$30 ms un monto adicional de $ 0.10 por cada kilmetro en exceso sobre 1000.
Los precios ya incluyen el 18% del impuesto general a las ventas, IGV. Disee un algoritmo que
determine el monto a pagar por el alquiler de un vehculo y el monto includo del impuesto.
Algoritmo
CONSTANTES
REAL IGV = 0.18 // Porcentaje del impuesto general a las ventas
VARIABLES
REAL kilomIni, // Lectura inicial del contador de kilmetros
kilomFin, // Lectura final del contador de kilmetros
kilomRec, // Kilmetros recorridos
montoFijo,// Monto fijo
montoAdic,// Monto adicional
montoPag, // Monto a pagar
montoIgv // Monto del impuesto general a las ventas, IGV
INICIO
LEER kilomIni, kilomFin
kilomRec = kilomIni - kilomFin
// Cculo el monto fijo, por el total de kilmetros recorridos

48

Universidad Tecnolgica Nacional - U.A Reconquista

montoFijo = 30*kilomRec
// Clculo del monto adicional, por los kilmetros excedidos
SI( kilomRec <= 300 )
montoAdic = 0
SINO SI( kilomRec <= 1000 )
montoAdic = 0.15*(kilomRec-300)
SINO
montoAdic = 0.15*700 + 0.10*(kilomRec-1000)
FIN_SI
// Clculo del monto a pagar y del monto del impuesto
montoPag = montoFijo + montoAdic
montoIgv = IGV*montoPag /(1+IGV)
IMPRIMIR montoPag, montoIgv
FIN
Ejercicio 5.3:- Disee un algoritmo que determine quien tiene la mayor edad entre Juan, Mario
y Pedro. Considere que dos pueden tener la mayor edad o ser contemporneos los tres.
Algoritmo
VARIABLES
ENTERO edjuan, // Edad de Juan
edmario, // Edad de Mario
edpedro // Edad de Pedro
CADENA mensaje // Mensaje de salida
INICIO
LEER edjuan, edmario, edpedro
SI( edjuan > edmario y edjuan > edpedro )
mensaje = "Juan es el mayor"
SINO SI( edmario > edjuan y edmario > edpedro )
mensaje = "Mario es el mayor"
SINO SI( edpedro > edjuan y edpedro > edmario )
mensaje = "Pedro es el mayor"
SINO SI( edjuan == edmario y edmario > edpedro )
mensaje = "Juan y Mario son los mayores"
SINO SI( edjuan == edpedro y edpedro > edmario )
mensaje = "Juan y Pedro son los mayores"
SINO SI( edmario == edpedro y edpedro > edjuan )
mensaje = "Mario y Pedro son los mayores"
SINO
mensaje = "Los tres son contemporneos"
FIN_SI
IMPRIMIR mensaje
FIN
Ejercicio 5.4:- En una playa de estacionamiento de vehculos se cobra S/. 2.5 por hora o
fraccin. La medicin del tiempo se efecta anotando la hora de entrada y la hora de la salida,
ambas en el formato HH:MM, segn un reloj de 24 horas. Disee un algoritmo para determinar

49

Universidad Tecnolgica Nacional - U.A Reconquista

el monto que debe pagar un cliente por el estacionamiento de su vehculo. Considere que tanto
la
hora de entrada como de salida corresponden al mismo da.
Algoritmo
VARIABLES
ENTERO hore, mine, // Hora y minutos de entrada
hors, mins, // Hora y minutos de salida
tiempoMin // Tiempo de estacionamiento en minutos
horPag, // Horas a pagar
resMin // Residuo en minutos de tiempoMin entre 60
REAL montoPag, // Monto a pagar
INICIO
LEER hore, mine, hors, mins
// Determina el tiempo empleado en minutos
tiempoMin = (hors-hore)*60 + (mins-mine)
// Determina la cantidad entera de horas a pagar
// Si sobran minutos, entonces se cobra como una hora adicional
horPag = tiempoMin/60 // Cantidad entera de horas
resMin = tiempoMin%60 // Minutos de sobra
SI( residuo != 0 ) // Si sobran minutos
horPag = horPag + 1
FIN
// Determina el monto a pagar
montoPag = 2.5*horPag
IMPRIMIR montoPag
FIN
Ejercicio 5.5:- El promedio de prcticas de un curso se calcula en base a cuatro prcticas
calificadas de las cuales se promedian las tres notas ms altas eliminndose la nota menor.
Disee un algoritmo que determine el promedio de prcticas de un estudiante y la nota de
prctica eliminada.
Algoritmo
VARIABLES
ENTERO pc1, pc2, pc3, pc4 // Prcticas calificadas
notaMenor // Nota de prctica eliminada
REAL promPrac // Promedio de prcticas
INICIO
LEER pc1, pc2, pc3, pc4
// Determina la nota menor
notaMenor = pc1
SI( pc2 < notaMenor )
notaMenor = pc2
FIN_SI
SI( pc3 < notaMenor )

50

Universidad Tecnolgica Nacional - U.A Reconquista

notaMenor = pc3
FIN_SI
SI( pc4 < notaMenor )
notaMenor = pc4
FIN_SI
// Determina el promedio de prcticas
promPrac = (pc1 + pc2 + pc3 + pc4 - notaMenor )/3.0
IMPRIMIR promPrac, notaMenor
FIN
Ejercicio 5.6:- Disee un algoritmo que lea tres longitudes y determine si forman o no un
tringulo. Si es un tringulo determine de que tipo de tringulo se trata entre: equiltero (si tiene
tres lados iguales), issceles (si tiene dos lados iguales) o escaleno (si tiene tres lados
desiguales). Considere que para formar un tringulo se requiere que: "el lado mayor sea menor
que la suma de los otros dos".
Algoritmo 1 : usando operadores lgicos
VARIABLES
REAL L1, L2, L3 // Las tres longitudes
CADENA mensaje // Mensaje de salida
INICIO
LEER L1, L2, L3
// Determina la mayor longitud
mayor = L1
SI( L2 > mayor )
mayor = L2
FIN_SI
SI( L3 > mayor )
mayor = L3
FIN_SI
// Determina la suma de los otros dos lados
suma = L1 + L2 + L3 - mayor
// Determina si las longitudes forman o no un tringulo
SI( mayor < suma )
SI( ( L1 == L2 ) y ( L2 == L3 ) )
mensaje = "Tringulo equiltero"
SINO SI( ( L1 == L2 ) o ( L1 == L3 ) o ( L2 == L3 ) )
mensaje = "Tringulo issceles"
SINO
mensaje = "Tringulo escaleno"
FIN_SI
SINO
mensaje = "No es un tringulo"
FIN_SI
IMPRIMIR mensaje
FIN

51

Universidad Tecnolgica Nacional - U.A Reconquista

Algoritmo 2: sin usar operadores lgicos


VARIABLES
REAL L1, L2, L3 // Las tres longitudes
CADENA mensaje // Mensaje indicando si se trata o no de un tringulo
INICIO
LEER L1, L2, L3
// Determina la mayor longitud
mayor = L1
SI( L2 > mayor )
mayor = L2
FIN_SI
SI( L3 > mayor )
mayor = L3
FIN_SI
// Determina la suma de los otros dos lados
suma = L1 + L2 + L3 - mayor
// Determina si las longitudes forman o no un tringulo
SI( mayor < suma )
SI( L1 == L2 )
SI( L2 == L3 )
mensaje = "Tringulo equiltero"
SINO
mensaje = "Tringulo issceles"
FIN_SI
SINO SI( L2 == L3 )
mensaje = "Tringulo issceles"
SINO SI( L1 == L3 )
mensaje = "Tringulo issceles"
SINO
mensaje = "Tringulo escaleno"
FIN_SI
SINO
mensaje = "No es un tringulo"
FIN_SI
IMPRIMIR mensaje
FIN
Ejercicio 5.7:- Disee un algoritmo que lea tres nmeros enteros y determine el menor valor
positivo. Si los nmeros positivos son iguales, dar como menor a cualquiera de ellos.
VARIABLES
ENTERO a, b, c // Los tres nmeros enteros
CADENA mensaje // Mensaje de salida
INICIO
LEER a, b, c
mensaje = "El menor positivo es : ";
SI( a > 0 )

52

Universidad Tecnolgica Nacional - U.A Reconquista

menor = a
SI( b > 0 y b < menor )
menor = b
FIN_SI
SI( c > 0 y c < menor )
menor = c
FIN_SI
mensaje = mensaje + menor
SINO SI( b > 0 )
menor = b
SI( a > 0 y a < menor )
menor = a
FIN_SI
SI( c > 0 y c < menor )
menor = c
FIN_SI
mensaje = mensaje + menor
SINO SI( c > 0 )
menor = c
SI( a > 0 y a < menor )
menor = a
FIN_SI
SI( b > 0 y b < menor )
menor = b
FIN_SI
mensaje = mensaje + menor
SINO
mensaje = "No hay ningn nmero positivo"
FIN_SI
IMPRIMIR mensaje
FIN

53

Das könnte Ihnen auch gefallen