Está en la página 1de 18

Conceptos Bsicos de Algoritmia

1.1 Algoritmo
Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solucin de un problema. En
la vida cotidiana ejecutamos constantamente algoritmos. Por ejemplo, al instalar un equipo de sonido
ejecutamos las instrucciones contenidas en el manual del equipo, este conjunto de instrucciones constituyen un
algoritmo. Otro caso de algoritmo es el algoritmo matemtico de Euclides para la obtencin del mximo
comn divisor de dos nmeros.
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. Segn esto, el algoritmo de Euclides es un
algoritmo computacional; pero el algoritmo para instalar el equipo de sonido es un algoritmo no
computacional. Para que un algoritmo pueda ser ejecutado por una computadora se necesita expresar el
algoritmo en instrucciones comprensibles por la computadora, para esto se requiere de un determinado
lenguaje de programacin. Al algoritmo expresado en un determinado lenguaje de programacin, se denomina
programa. Puesto de otra manera, podemos decir que, un programa es la implementacin o expresin de un
algoritmo en un determinado lenguaje de programacin siguiendo las reglas establecidas por el lenguaje
elegido. En la Figura 2.1 que sigue se muestra la relacin entre problema, algoritmo y programa.

Figura 1.1 Problema, algoritmo y programa


Todo algoritmo debe tener las siguientes caractersticas:

Debe ser preciso, es decir, cada instruccin debe indicar de forma inequvoca que se tiene que hacer.

Debe ser finito, es decir, debe tener un nmero limitado de pasos.

Debe ser definido, es decir, debe producir los mismos resultados para las mismas condiciones de
entrada.

Todo algoritmo puede ser descompuesto en tres partes:

Entrada de datos.

Proceso.

Salida de resultados.

Ejemplo 1.1:- Algoritmo para preparar ceviche de bonito para 6 personas.


Entradas :
- 1 kilo de bonito
- 3 camotes sancochados
- 3 cebollas cortadas a lo largo
- 1 rocoto en rodajas
- 3 ramas de apio picado
- 2 ramitas de culantro picado
- 4 vasos de jugo de limn
- 4 cucharadas de ajo molido
- 2 cucharadas de aj amarillo molido
- sal y pimienta
Proceso :
- Cortar la carne de pescado en pequeos trozos.

- Mezclar la carne con el jugo de limn, el ajo, la pimienta, el culantro, el aj amarillo y el apio.
- Dejar reposar 30 minutos.
- Agregar sal al gusto y echar las cebollas cortadas.
- Servir acompaando el cebiche con el camote sancochado y el rocoto en rodajas
Salida :
El ceviche
Evidentemente este es un algoritmo no computacional, no podr ser ejecutado por una computadora, pero s
por una persona. Por si acaso el ceviche es peruano.
Ejemplo 1.2:- Algoritmo para expresar en centmetros y pulgadas una cantidad dada en metros.
Entrada:
La cantidad M de metros
Proceso:
Clculo de centmetros : C = M*100
Clculo de pulgadas : P = C/2.54
Salida :
La cantidad C de centmetros y la cantidad P de pulgadas
Este es un algoritmo computacional escrito en lenguaje natural, puede ser convertido en un programa de
computadora, pero tambin puede ser ejecutado manualmente por una persona.
1.2 El Pseudocdigo
El pseudocdigo es un lenguaje de pseudoprogramacin utilizado para escribir algoritmos computacionales.
Como lenguaje de pseudoprogramacin, el pseudocdigo es una imitacin de uno o ms lenguajes de
programacin. De esta manera podemos encontrar pseudocdigos orientados a lenguajes de programacin
como Pascal, Java, C, C++, etc. En el caso de este curso orientaremos los pseudocdigos a los lenguajes Java,
C y C++. El objetivo del pseudocdigo es permitir que el programador se centre en los aspectos lgicos de la
solucin, evitando las reglas de sintxis de los lenguajes de programacin. No siendo el pseudocdigo un
lenguaje formal, los pseudocdigos varan de un programador a otro, es decir, no hay un pseudocdigo
estndar.
1.3 Variables
Una variable es una localizacin o casillero en la memoria principal que almacena un valor que puede cambiar
en el transcurso de la ejecucin del programa. Cuando un programa necesita almacenar un dato, necesita una
variable. Toda variable tiene un nombre, un tipo de dato y un valor. Antes de poder utilizar una variable es
necesario declararla especificando su nombre y su tipo de dato. Para declarar declarar variables usaremos los
siguientes formatos:
Declaracin de una variable:
tipo nombre
Declaracin de varias variables con el mismo tipo de dato:
tipo nombre1, nombre2, nombre3, ..., nombren
Donde:
Tipo

Es el tipo de dato de la variable que puede ser: ENTERO (si la variable


almacenar un nmero entero) , REAL (si la variable almacenar un
nmero decimal) , CARACTER (si la variable almacenar un carcter),
CADENA (si la variable almacenar un conjunto de carcteres) o

LOGICO (si la variable almacenar el valor verdadero o el valor falso).


nombre1, nombre2, ..., nombren

Nombres de las variables . El nombre de una variable debe comenzar con


una letra, un smbolo de subrayado o un smbolo de dlar. Los dems
caractres del nombre puede ser letras, smbolos de subrayado o smbolo
de dlar. Debe considerarse tambin que una letra mayscula se considera
diferente de una letra minscula.

Ejemplo 1.3:- Declaracin de variables.

La siguiente instruccin declara la variable edad de tipo ENTERO y la variable descuento de tipo
REAL..

ENTERO edad
REAL descuento
Esto crea los casilleros de memoria edad y descuento. Luego de la creacin, las variables estn indefinidas
( ? ).
edad
descuento

?
?

La siguiente instruccin declara las variables nota1, nota2 y nota3, todas de tipo ENTERO.

ENTERO nota1, nota2, nota3


Esto crea los casilleros de memoria nota1, nota2 y nota3. Luego de la creacin, las variables estn indefinidas
( ? ).
nota1
nota2
nota3

?
?
?

1.4 Literales
Se denominan literales a todos aquellos valores que figuran en el pseudocdigo y pueden ser:
Literales enteros
12, 20300, 15, etc.
Literales reales
3.1416, 2345.456, etc.
Literales de carcter
'a', 'B', ';', '<', '+', etc.
Lieterales de cadena
"Hola", "Algoritmos Computacionales", etc.
Literales lgicos
verdadero, falso

1.5 Instrucciones Algortmicas Bsicas


Existen tres instrucciones algortmicas bsicas que son las siguientes
1.5.1 Entrada
Consiste en obtener un dato de un dispositivo de entrada, como el teclado, y almacenarlo en una variable. En
general, la accin de ingresar un dato a una variable se expresa en el pseudocdigo mediante la palabra
LEER, de la siguiente forma:
LEER variable
Por ejemplo, la instruccin:
LEER estatura
Solicita el ingreso de un valor, desde algn dispositivo de entrada (como el teclado), para la variable estatura.
1.5.2 Salida
Consiste en mostrar el valor de una variable en un dispositivo de salida, como la pantalla. En general, la accin
de mostrar el valor de una variable se expresa en el pseudocdigo mediante la palabra IMPRIMIR de la
siguiente forma:
IMPRIMIR variable
Por ejemplo, la instruccin:
IMPRIMIR importeCompra
Muestra, en algn dispositivo de salida (como la pantalla), el valor de la variable importeCompra.
1.5.3 Asignacin
Consiste en asignar a una variable el valor de una expresin. La expresin puede ser una simple variable, un
simple literal o una combinacin de variables, literales y operadores. La asignacin se expresa en el
pseudocdigo de la siguiente forma:
variable = expresin
Donde variable y el valor de expresin deben tener el mismo tipo de dato.
Cuando se asigna un valor ENTERO a una variable REAL, entonces el valor ENTERO se convertir en
REAL antes de almacenarse. As, al asignar el valor ENTERO 25 a una variable REAL, se almacenar 25.0.
Ejemplo 1.4:- Algoritmo para expresar en centmetros y pulgadas una cantidad dada en metros.
Esta es una solucin en pseudocdigo del ejemplo 1.2 utilizando conceptos computacionales de variable,
entrada de datos y salida de resultados. La solucin considera que 1 metro = 100 centmetros y que 1 pulgada =
2.54 centmetros.
INICIO
// Declara las variables M, C y P
REAL M, C, P
// Solicita el ingreso de la cantidad en metros
LEER M
// Calcula la cantidad en centmetros y lo asigna a la variable C

C = M*100
// Calcula la cantidad en pulgadas y lo asigna a la variable P
P = C/2.54
// Muestra los valores de las variables C y P
IMPRIMIR C, P
FIN
1.6 Expresiones Aritmticas
Una expresin aritmtica es una combinacin de variables, literales y operadores aritmticos.
1.6.1 Operadores Aritmticos
En la tabla que sigue se muestran los operadores aritmticos que vamos a utilizar.
Tabla 1.1 Operadores aritmticos
Operador
+
*
/
%

Significado
Suma
Resta
Multiplicacin
Divisin
Residuo

Ejemplo
a+b
a-b
a*b
a/b
a%b

Los operadores aritmticos pueden utilizarse con tipos enteros y reales. Si en una operacin con dos operandos,
ambos operandos son enteros, el resultado es un entero; si alguno de ellos es real, el resultado es real. As, 15/4
es 3 y no 3.75; en cambio, 15.0/4 es 3.75.
1.6.2 Reglas de jerarqua de los operadores aritmticos
Cuando una expresin aritmtica tiene ms de un operador aritmtico, el orden de aplicacin de los operadores
sigue un orden preciso determinado por las reglas de jerarqua de los operadores aritmticos, que se
muestran en la siguiente tabla:
Tabla 1.2 Reglas de jerarqua de los operadores aritmticos
Operador
()
*, /, %
+, -

Orden de evaluacin
Se evalan en primer lugar
Se evalan en segundo lugar
Se evalan en tercer lugar

Si existen parntesis anidados, se evala primero la expresin en el par ms interno. Si varios operadores o
parntesis tienen la misma jerarqua, la evaluacin ser de izquierda a derecha.
Ejemplo 1.4:- Cul es el equivalente en pseudocdigo de la siguiente expresin algebraica?

Solucin
e = a/b/c
Como todos los operadores tienen la misma jerarqua, la evaluacin 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 ejecucin esta de acuerdo con la expresin algebraica, por lo que no se requiere ninguna
pareja de parntesis.

Ejemplo 1.5:- Cul es el equivalente en pseudocdigo de la siguiente expresin algebraica?

Solucin
e = a*b*c/d/e
Como todos los operadores tienen la misma jerarqua, la evaluacin 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 ejecucin esta de acuerdo con la expresin algebraica, por lo que no se requiere ninguna
pareja de parntesis.
Ejercicio 1.6:- Cul es el equivalente en pseudocdigo de la siguiente expresin algebraica?

Solucin
e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q
Aplicando las reglas de jerarqua de los operadores aritmticos:
Primero, se sumar a ms 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 v entre w.
Sexto, se dividir el resultado ya obtenido de v/w entre p.
Sptimo, 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.
Dcimo, se sumar el resultado ya obtenido de 4/((a+b)/(c/d)) ms el resultado ya obtenido de v/w/p.
Undcimo, se sumar el resultado ya obtenido de 4/((a+b)/(c/d)) + v/w/p ms el resultado ya obtenido de
5*m*n*q.
Se ha utilizado la mnima cantidad posible de parntesis. Pueden usarse parntesis adicionales, lo que no es un
error. Por ejemplo, otra solucin 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 jerarqua, es posible usar menos parejas de parntesis.
1.7 Expresiones Lgicas
Una expresin lgica combina variables, literales, operadores aritmticos, operadores relacionales y operadores
lgicos. Los operadores relacionales y los operadores lgicos se muestran en las tablas 3.1 y 3.2.

Tabla 1.3 Operadores relacionales


Operador
>
>=
<
<=
==
!=

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

Ejemplo
a>b
a >= b
a<b
a <= b
a == b
a != b

Tabla 1.4 Operadores lgicos


Operador
!
&&
||

Significado
no
y

Ejemplo
!a
a && b
a || b

Estructuras de Secuencia
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 4.1 se muestra el diagrama de flujo y el pseudocdigo de una estructura secuencial.
Diagrama de Flujo

Pseudocdigo
Inicio
.
.
accin 1
accin 2
accin 3
.
.
Fin

Figura 2.1 Estructura Secuencial: Diagrama de Flujo y Pseudocdigo


2.2 Ejercicios
Ejercicio 1:- Disee un pseudocdigo que halle el rea y el permetro de un rectngulo. Considere que: area =
base x altura y perimetro = 2 x (base+altura).

Algoritmo
INICIO
// Declaracin de variables
REAL base, altura, area, perimetro
// Entrada de datos
LEER base, altura
// Proceso de clculo
area = base*altura
perimetro = 2*(base+altura)
// Salida de resultados
IMPRIMIR area, perimetro
FIN
Ejemplo 2:- Disee un pseudocdigo para convertir una longitud dada en metros a sus equivalentes en
centmetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centmetros, 1 pulgada = 2.54 centimetros,
1 pie = 12 pulgadas, 1 yarda = 3 pies.
Algoritmo
INICIO
// Declaracin de variables
REAL cmetr,ccent, cpies, cpulg, cyard
// Entrada de datos
LEER cmetr
// Proceso de clculo
ccent = cmetr*100
cpulg = ccent/2.54
cpies = cpulg/12
cyard = cpies/3
// Salida de resultados
IMPRIMIR cpulg, cpies, cyard
FIN
Ejercicio 3:- Una institucin benfica europea ha recibido tres donaciones en soles, dolares y marcos. La
donacin ser repartida en tres rubros: 60% para la implementacin de un centro de salud, 40% para un
comedor de nios y el resto para gastos administrativos. Disee un algoritmo que determine el monto en euros
que le corresponde a cada rubro. Considere que: 1 dlar = 3.52 soles, 1 dlar = 2.08 marcos, 1 dlar = 1.07
euros.
Algoritmo
INICIO
// Declaracin de variables
REAL c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3
// Entrada de datos
LEER csoles, cdolares, cmarcos
// Proceso de clculo
ceuros = (csoles/3.52 + cdolares + cmarcos/2.08)*1.07
rubro1 = ceuros*0.60
rubro2 = ceuros*0.40
rubro3 = ceuros*0.20
// Salida de resultados

IMPRIMIR rubro1, rubro2, rubro3


FIN
Ejercicio 4:- En una competencia atltica de velocidad el tiempo se mide en minutos, segundos y centsimas
de segundo y, el espacio recorrido se mide en metros. Disee un algoritmo para determinar la velocidad
promedio de un atleta en km/hr. Considere que: 1 hora = 60 minutos, 1 minuto = 60 segundos, 1 segundo = 100
centsimas de segundo, 1 kilmetro = 1000 metros.

Algoritmo
INICIO
// Declaracin de variables
ENTERO tmin, tseg, tcen
REAL thor, velkmhr, espmt, espkm
// Entrada de datos
LEER tmin, tseg, tcen, espmt
// Clculo del tiempo total empleado en horas
thor = tmin/60 + tseg/3600 + tcen/360000
// Clculo del espacio recorrido en kilmetros
espkm = espmt/1000
// Clculo de la velocidad en km/hr
velkmhr = espkm/thor
// Salida de resultados
IMPRIMIR velkmhr
FIN
Ejercicio 5:- Disee un algoritmo que determine la cifra de las unidades de un nmero natural.
Solucin 1
Anlisis
Puede comprobarse que la cifra de las unidades de un nmero es igual al resto de la divisin del nmero entre
10. Observe para ello las siguientes divisiones:
3245
5

10
324

768
8

10
76

9
9

10
0

Podemos concluir entonces que:


unidades = numero % 10

Siendo % el operador residuo. Este operador permite obtener el residuo de una divisin, as como / permite
obtener el cociente.
Algoritmo
INICIO
// Declaracin de variables
ENTERO numero, unidades
// Entrada de datos
LEER numero
// Proceso de clculo
unidades = numero % 10
// Salida de resultados
IMPRIMIR unidades
FIN
Solucin 2
Anlisis
El residuo de una divisin entera puede obtenerse tambin sin recurrir al operador %, de la siguiente forma:
unidades = numero - (numero / 10) * 10
observe para esto que en la divisin (numero/10) los operandos son enteros por lo que el cociente ser un
entero. As por ejemplo, si numero es igual a 3245, la divisin (numero/10) produce 324, aunque
matemticamente sea 324.5; es decir, se descarta la parte decimal.
Algoritmo
INICIO
// Declaracin de variables
ENTERO numero, unidades
// Entrada de datos
LEER numero
// Proceso de clculo
unidades = numero - (numero/10)*10
// Salida de resultados
IMPRIMIR unidades
FIN
Ejercicio 6:- Disee un algoritmo que determine la suma de las cifras de un nmero entero positivo de 4 cifras.
Solucin 1
Anlisis
Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto, considere el caso de un
nmero N igual a 3245:
3245
5

10
324

10

unidades = N%10
cociente = N/10
324
4

10
32

decenas = cociente%10
cociente = cociente/10
32
2

10
3

centenas = cociente%10
millares = cociente/10

Algoritmo
INICIO
// Declaracin de variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
LEER N
// Proceso de clculo
unidades = N%10
cociente = N/10
decenas = cociente%10
cociente = cociente/10
centenas = cociente%10
millares = cociente/10
suma = unidades + decenas + centenas + millares
// Salida de resultados
IMPRIMIR suma
FIN
Solucin 2
Anlisis 2
Considerando que el nmero tiene 4 cifras, las cifras tambin pueden ser obtenidas mediante divisiones
sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un nmero N igual a 3245:
3245
245

1000
3

millares = N/1000
resto = N%1000
245
45

100
2

centenas = resto/100
resto = resto%100
45
3

10
4

11

decenas = resto/10
unidades = resto%10
Algoritmo
INICIO
// Declaracin de variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
LEER N
// Proceso de clculo
millares = N/1000
resto = N%1000
centenas = resto/100
resto = resto%100
decenas = resto/10
unidades = resto%10
suma = unidades + decenas + centenas + millares
// Salida de resultados
IMPRIMIR suma
FIN
Ejercicio 7:- 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.
Algoritmo
INICIO
// Declaracin de variables
ENTERO hor1, min1, seg1, hor2, min2, seg2, segres, resto
// Entrada de datos
LEER hor1, min1, seg1
// Clculo de la cantidad de segundos que restan para culminar el da
segres = 86400 - (hor1*3600 + min1*60 + seg1)
// Descomposicin de segres en horas, minutos y segundos
hor2 = segres/3600
resto = segres%3600
min2 = resto/60
seg2 = resto%60
// Salida de resultados
IMPRIMIR hor2, min2, seg2
FIN
Ejercicio 8:- Disee un algoritmo para sumar dos tiempos dados en horas, minutos y segundos.
Algoritmo
INICIO
// Declaracin de variables
ENTERO hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3, totseg, resto
// Entrada de datos
LEER hor1, min1, seg1, hor2, min2, seg2
// Determina la cantidad total de segundos entre los dos tiempos

12

totseg = (hor1+hor2)*3600 + (min1+min2)*60 + (seg1+seg2)


// Descompone totseg en horas, minutos y segundos
hor3 = totseg/3600
resto = totseg%3600
min3 = resto/60
seg3 = resto%60
// Salida de resultados
IMPRIMIR hor3, min3, seg3
FIN
Ejercicio 9:- El sueldo neto de un vendedor se calcula como la suma de un sueldo bsico de S/.250 ms el 12%
del monto total vendido. Disee un algoritmo que determine el sueldo neto de un vendedor sabiendo que hizo
tres ventas en el mes.

Algoritmo
INICIO
// Declaracin de variables
REAL venta1, venta2, venta3, ventatot, comision, sueldoneto
// Entrada de datos
LEER venta1, venta2, venta3
// Proceso de clculo
ventatot = venta1 + venta2 + venta3
comision = 0.12*ventatot
sueldoneto = 250 + comision
// Salida de resultados
IMPRIMIR sueldoneto
FIN
Ejercicio 10:- Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay en un saln
de clases.
Algoritmo
INICIO
// Declaracin de variables
REAL porcvar, porcmuj
ENTERO varones, mujeres, total
// Entrada de datos
LEER varones, mujeres
// Proceso de clculo
total = varones + mujeres
porcvar = varones*100.0/total
porcmuj = mujeres*100.0/total
// Salida de resultados
IMPRIMIR porcvar, porcmuj
FIN
Ejercicio 11:- En pases de habla inglesa es comn dar la estatura de una persona como la suma de una
cantidad entera de pies ms una cantidad entera de pulgadas. As, la estatura de una persona podra ser 3' 2" ( 3
pies 2 pulgadas ). Disee un algoritmo que determine la estatura de una persona en metros, conociendo su
estatura en el formato ingls. Considere que: 1 pie = 12 plg, 1 plg = 2.54 cm, 1 m = 100 cm.

13

Algoritmo
INICIO
// Declaracin de variables
REAL estmt
ENTERO cpies, cplgs
// Entrada de datos
LEER cpies, cplgs
// Proceso de clculo
estmt = (cpies*12 + cplgs)*2.54/100
// Salida de resultados
IMPRIMIR estmt
FIN
Ejercicio 12:- Disee un algoritmo que exprese la capacidad de un disco duro en megabytes, kilobytes y bytes,
conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte = 1024 bytes, 1 megabyte = 1024
kilobyte, 1 gigabyte = 1024 megabytes.
Estructuras de Seleccin
Introduccin
Las estructuras de seleccin son estructuras de control utilizadas para la toma decisiones dentro de un
programa. A estas estructuras se conocen tambin como estructuras selectivas o estructuras de decisin y
son las siguientes:

La estructura de seleccin simple (SI).

La estructura de seleccin doble (SI-SINO).

La estructura de seleccin mltiple (SEGUN)

3.2 Estructura de Seleccin Simple SI


La estructura de seleccin simple permite ejecutar una accin o un grupo de acciones slo si se cumple una
determinada condicin. As, en el grfico 3.1, si la condicin es verdadera se ejecuta la accin acciona; en caso
contrario, no se hace nada.
Diagrama de Flujo

Pseudocdigo (accin simple)


SI( condicion )
acciona

Pseudocdigo (accin compuesta)


SI( condicion ){
acciona1
acciona2
.
.
.
accionan
}

Figura 3.1 Estructura de Seleccin Simple

14

Por ejemplo, si se desea cambiar el signo de un nmero nicamente en caso que sea negativo, podemos
escribir:
SI( numero < 0 )
numero = -1 * numero
Si el nmero no es negativo, simplemente esta estructura se pasara por alto y se continuara en la siguiente
instruccin despus del SI.
3.3 Estructura de Seleccin Doble SI - SINO
La estructura de seleccin doble permite seleccionar una ruta de dos rutas posibles en base a la verdad o
falsedad de una condicin. As, en la Figura 3.2, si la condicin es verdadera, se ejecuta la accin A; en caso
contrario, se ejecuta la accin B.
En la Figura 3.2 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin doble.
Diagrama de Flujo

Pseudocdigo (accin simple)


SI( condicion )
acciona
SINO
accionb

Pseudocdigo (accin compuesta)


SI( condicion ){
acciona1
acciona2
.
.
.
accionan
}
SINO{
accionb1
accionb2
.
.
.
accionbn
}

Figura 3.2 Estructura de Seleccin Doble


Por ejemplo, la siguiente estructura de seleccin doble determina si una persona es mayor o menor de edad:
SI( edad >= 18 )
estado = "Mayor de edad"
SINO
estado = "Menor de edad"
Esto imprime "Mayor de edad" si la persona tiene 18 aos ms e imprime "Menor de edad" si la persona
tiene menos de 18 aos. En cualquiera de los casos, despus de efectuar la impresin, se ejecutar la primera
instruccin que sigue a la estructura SI...SINO.
3.4 Estructura de Seleccin Doble en Cascada SI-SINO-SI

15

La estructura de seleccin doble en cascada esta formada por varias estructuras de seleccin doble SI-SINO
puestas una a continuacin de otra de forma que a un SI-SINO le sigue otro SI-SINO.
En la estructura de seleccin doble en cascada, las condiciones se evalan en orden descendente, pasando de
una condicin a otra si la condicin 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, que se considera como la
accin por defecto.
En la Figura 3.3 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin doble en
cascada.
Diagrama de Flujo

Pseudocdigo ( Forma 1 )
SI( condicion1 )
accion1
SINO
SI( condicion2 )
accion2
SINO
SI( condicion3 )
accion3
.
.
.
SINO
acciondefecto
Pseudocdigo ( Forma 2 )
SI( condicion1 )
accion1
SINO SI( condicion2 )
accion2
SINO SI( condicion3 )
accion3
.
.
.
SINO
acciondefecto

Figura 3.3 Estructura de Seleccin Doble en Cascada


Por ejemplo, la siguiente estructura de seleccin doble en cascada determina el signo de un nmero entre
positivo, negativo o cero:
SI( n > 0 )
signo = "Positivo"
SINO
SI( n < 0 )
signo = "Negativo"
SINO
signo = "Cero"
Usando el otro formato tendramos:
SI( n > 0 )
signo = "Positivo"
SINO SI( n < 0 )

16

signo = "Negativo"
SINO
signo = "Cero"
3.5 Estructura de Seleccin Mltiple SEGUN
La estructura de seleccin mltiple SEGUN permite elegir una ruta de entre varias rutas posibles, en base al
valor de una variable que acta como selector. La estructura compara el valor del selector con las constantes
c1, c2, ..., cn en orden descendente. En el momento en que se encuentre una coincidencia, se ejecuta la accin
correspondiente a dicha constante y se abandona la estructura.
En la Figura 3.4 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin mltiple.
Diagrama de Flujo

Pseudocdigo
SEGUN( selector ){
CASO c1 : accion1
CASO c2 : accion2
CASO c3 : accion3
.
.
.
CASO cn : accionn
DEFECTO : acciondefecto
}

Figura 3.4 Estructura de Seleccin Mltiple


Por ejemplo, la siguiente estructura de seleccin mltiple determina el nombre de la estacin del ao
conociendo el nmero de la estacin (1 para Primavera, 2 para Verano, 3 para Otoo y 4 para Invierno) :
SEGUN(numeroEstacion){
CASO 1 : nombreEstacion = "Primavera"
CASO 2 : nombreEstacion = "Verano"
CASO 3 : nombreEstacion = "Otoo"
DEFECTO : nombreEstacion = "Invierno"
}
3.6 Ejercicios
Ejercicio 1:- En una playa de estacionamiento cobran S/. 2.5 por hora o fraccin. Disee un algoritmo que
determine cuanto debe pagar un cliente por el estacionamiento de su vehculo, conociendo el tiempo de
estacionamiento en horas y minutos.
Algoritmo 1

17

INICIO
// Declaracin de variables
ENTERO horas, minutos
REAL pago
// Entrada de datos
LEER horas, minutos
// Si hay alguna fraccin de hora, incrementa las horas a pagar en una unidad
SI( minutos > 0 )
horas = horas + 1
// Determina el importe a pagar
pago = horas * 2.5
// Salida de resultados
IMPRIMIR pago
FIN
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO horas, minutos, horasPagar
REAL pago
// Entrada de datos
LEER horas, minutos
// Determina el nmero de horas a pagar
SI( minutos > 0 )
horasPagar = horas + 1
SINO
horasPagar = horas
// Determina el importe a pagar
pago = horasPagar * 2.5
// Salida de resultados
IMPRIMIR pago
FIN
Ejercicio 2:- Disee un algoritmo que determine si n nmero es o no es, par positivo.
Algoritmo
INICIO
// Declaracin de variables
REAL numero
CADENA tipoNumero
// Entrada de datos
LEER numero
// Determina si el nmero es o no es, par positivo
SI( (numero%2==0) && (numero>0) )
tipoNumero = "El nmero es par positivo"
SINO
tipoNumero = "El nmero no es par positivo"
// Salida de resultados
IMPRIMIR tipoNumero
FIN

18

También podría gustarte