You are on page 1of 32

Conceptos Básicos de Algoritmia

1.1 Algoritmo
1.2 Pseudocódigo
1.3 Variables
1.4 Literales
1.5 Instrucciones Algoritmicas Básicas
1.6 Expresiones Aritméticas
1.7 Expresiones Lógicas

1.1 Algoritmo
Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solución 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 matemático de
Euclides para la obtención del máximo común divisor de dos números.

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. Según 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 programación. Al algoritmo expresado en un
determinado lenguaje de programación, se denomina programa. Puesto de otra manera, podemos
decir que, un programa es la implementación o expresión de un algoritmo en un determinado
lenguaje de programación siguiendo las reglas establecidas por el lenguaje elegido. En la Figura
2.1 que sigue se muestra la relación entre problema, algoritmo y programa.

Figura 1.1 Problema, algoritmo y programa

Todo algoritmo debe tener las siguientes características:

 Debe ser preciso, es decir, cada instrucción debe indicar de forma inequívoca que se tiene
que hacer.

 Debe ser finito, es decir, debe tener un número 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 limón
- 4 cucharadas de ajo molido
- 2 cucharadas de ají amarillo molido
- sal y pimienta

Proceso :
- Cortar la carne de pescado en pequeños trozos.
- Mezclar la carne con el jugo de limón, 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 acompañando 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 centímetros y pulgadas una cantidad dada en metros.

Entrada:
La cantidad M de metros

Proceso:
Cálculo de centímetros : C = M*100
Cálculo de pulgadas : P = C/2.54

Salida :
La cantidad C de centímetros y la cantidad P de pulgadas

Este es un algoritmo computacional escrito en lenguaje natural, puede ser convertido en un
programa de computadora, pero también puede ser ejecutado manualmente por una persona.

1.2 El Pseudocódigo
El pseudocódigo es un lenguaje de pseudoprogramación utilizado para escribir algoritmos
computacionales. Como lenguaje de pseudoprogramación, el pseudocódigo es una imitación de
uno o más lenguajes de programación. De esta manera podemos encontrar pseudocódigos

orientados a lenguajes de programación como Pascal, Java, C, C++, etc. En el caso de este curso
orientaremos los pseudocódigos a los lenguajes Java, C y C++. El objetivo del pseudocódigo es
permitir que el programador se centre en los aspectos lógicos de la solución, evitando las reglas de
sintáxis de los lenguajes de programación. No siendo el pseudocódigo un lenguaje formal, los
pseudocódigos varían de un programador a otro, es decir, no hay un pseudocódigo estándar.

1.3 Variables
Una variable es una localización o casillero en la memoria principal que almacena un valor que
puede cambiar en el transcurso de la ejecución del programa. Cuando un programa necesita
almacenar un dato, necesita una variable. Toda variable tiene un nombre, 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:

Declaración de una variable:

tipo nombre

Declaración 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 número entero) , REAL (si la variable
almacenará un número decimal) , CARACTER (si la variable
almacenará un carácter), CADENA (si la variable almacenará un
conjunto de carácteres) o LOGICO (si la variable almacenará el
valor verdadero o el valor falso).

nombre1, nombre2, ..., Nombres de las variables . El nombre de una variable debe
nombren comenzar con una letra, un símbolo de subrayado o un símbolo
de dólar. Los demás caractéres del nombre puede ser letras,
símbolos de subrayado o símbolo de dólar. Debe considerarse
también que una letra mayúscula se considera diferente de una
letra minúscula.

Ejemplo 1.3:- Declaración de variables.

 La siguiente instrucción 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 creación, las variables están
indefinidas ( ? ).

edad ?
descuento ?

Literales lógicos verdadero. ENTERO nota1.5. 15.456. 20300. etc.'.4 Literales Se denominan literales a todos aquellos valores que figuran en el pseudocódigo y pueden ser: Literales enteros 12. Lieterales de cadena "Hola". y almacenarlo en una variable. 'B'. '+'. etc. nota2. las variables están indefinidas ( ? ). nota1 ? nota2 ? nota3 ? 1. todas de tipo ENTERO. la acción de ingresar un dato a una variable se expresa en el pseudocódigo mediante la palabra LEER. etc. En general. Luego de la creación. nota2 y nota3. nota3 Esto crea los casilleros de memoria nota1. '. 2345.5 Instrucciones Algorítmicas Básicas Existen tres instrucciones algorítmicas básicas que son las siguientes 1. Literales reales 3.1416. Literales de carácter 'a'. como el teclado. etc. "Algoritmos Computacionales". nota2 y nota3. de la siguiente forma: LEER variable Por ejemplo. la instrucción: . falso 1.  La siguiente instrucción declara las variables nota1.1 Entrada Consiste en obtener un dato de un dispositivo de entrada. '<'.

La solución considera que 1 metro = 100 centímetros y que 1 pulgada = 2. C y P REAL M. desde algún dispositivo de entrada (como el teclado).3 Asignación Consiste en asignar a una variable el valor de una expresión. 1.2 utilizando conceptos computacionales de variable. En general. como la pantalla. literales y operadores.2 Salida Consiste en mostrar el valor de una variable en un dispositivo de salida. la instrucción: IMPRIMIR importeCompra Muestra. al asignar el valor ENTERO 25 a una variable REAL. entrada de datos y salida de resultados. La asignación se expresa en el pseudocódigo de la siguiente forma: variable = expresión Donde variable y el valor de expresión deben tener el mismo tipo de dato. Cuando se asigna un valor ENTERO a una variable REAL.0. INICIO // Declara las variables M. La expresión puede ser una simple variable. Ejemplo 1. se almacenará 25.54 centímetros. la acción de mostrar el valor de una variable se expresa en el pseudocódigo mediante la palabra IMPRIMIR de la siguiente forma: IMPRIMIR variable Por ejemplo.5.LEER estatura Solicita el ingreso de un valor. el valor de la variable importeCompra. entonces el valor ENTERO se convertirá en REAL antes de almacenarse. Esta es una solución en pseudocódigo del ejemplo 1.54 // Muestra los valores de las variables C y P .5. P // Solicita el ingreso de la cantidad en metros LEER M // Calcula la cantidad en centímetros 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. C. un simple literal o una combinación de variables. en algún dispositivo de salida (como la pantalla). Así.Algoritmo para expresar en centímetros y pulgadas una cantidad dada en metros. para la variable estatura. 1.4:.

el orden de aplicación de los operadores sigue un orden preciso determinado por las reglas de jerarquía de los operadores aritméticos. literales y operadores aritméticos. P FIN 1. Si en una operación con dos operandos.75.2 Reglas de jerarquía de los operadores aritméticos Operador Orden de evaluación () Se evalúan en primer lugar *.2 Reglas de jerarquía de los operadores aritméticos Cuando una expresión aritmética tiene más de un operador aritmético. IMPRIMIR C. 1. Ejemplo 1. /.1 Operadores aritméticos Operador Significado Ejemplo + Suma a+b .6 Expresiones Aritméticas Una expresión aritmética es una combinación de variables. la evaluación será de izquierda a derecha. .75. se evalúa primero la expresión en el par más interno. Resta a-b * Multiplicación a*b / División a/b % Residuo a%b Los operadores aritméticos pueden utilizarse con tipos enteros y reales. 15/4 es 3 y no 3. Se evalúan en tercer lugar Si existen paréntesis anidados. que se muestran en la siguiente tabla: Tabla 1.4:. ambos operandos son enteros. % Se evalúan en segundo lugar +. 1.6.6. Si varios operadores o paréntesis tienen la misma jerarquía.0/4 es 3. el resultado es real. el resultado es un entero.¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica? Solución . si alguno de ellos es real. Así. en cambio.1 Operadores Aritméticos En la tabla que sigue se muestran los operadores aritméticos que vamos a utilizar. Tabla 1. 15.

se dividirá 4 entre el resultado ya obtenido de ((a+b)/(c/d)) Quinto. Ejercicio 1. por lo que no se requiere ninguna pareja de paréntesis. el resultado ya obtenido de a*b*c se dividirá entre d.5:. Cuarto. se multiplicará a por b. se dividirá a entre b. Sexto. Séptimo.¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica? Solución e = a*b*c/d/e Como todos los operadores tienen la misma jerarquía. el resultado ya obtenido de a+b se dividirá entre el resultado ya obtenido de c/d. Cuarto. se dividirá v entre w. el resultado ya obtenido de a/b se dividirá entre c. Segundo. Octavo. se sumará a más b. se dividirá el resultado ya obtenido de v/w entre p. la evaluación será de izquierda a derecha: Primero. Note que el orden de ejecución esta de acuerdo con la expresión algebraica. Note que el orden de ejecución esta de acuerdo con la expresión algebraica. se dividirá c entre d. Tercero. por lo que no se requiere ninguna pareja de paréntesis. Ejemplo 1. se multiplicará el resultado ya obtenido de 5*m por n. Segundo. Segundo.¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica? Solución e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q Aplicando las reglas de jerarquía de los operadores aritméticos: Primero. el resultado ya obtenido de a*b se multiplicará por c. se multiplicará 5 por m.e = a/b/c Como todos los operadores tienen la misma jerarquía. el resultado ya obtenido de a*b*c/d se divivirá entre e. Tercero. . la evaluación será de izquierda a derecha: Primero.6:.

3 Operadores relacionales Operador Significado Ejemplo > mayor que a > b >= mayor o igual que a >= b < menor que a < b <= menor o igual que a <= b == igual a a == b != diferente de a != b Tabla 1. 06. es posible usar menos parejas de paréntesis. Los operadores relacionales y los operadores lógicos se muestran en las tablas 3. literales. Pueden usarse paréntesis adicionales. operadores aritméticos. 10. se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) + v/w/p más el resultado ya obtenido de 5*m*n*q. 12.1 Concepto 2. otra solución posible que arroja el mismo resultado final es: e = (4/((a+b)/(c/d))) + ((v/w)/p) + (5*m*n*q) Note que usando correctamente las reglas de jerarquía. Por ejemplo. 08. 02. lo que no es un error. 09.2 Ejercicios 01.2.1 y 3. se multiplicará el resultado ya obtenido de 5*m*n por q. operadores relacionales y operadores lógicos. 1.4 Operadores lógicos Operador Significado Ejemplo ! no !a && y a && b || ó a || b Estructuras de Secuencia 2. 05. 03. 11.Noveno. 07. se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) más el resultado ya obtenido de v/w/p. Décimo.7 Expresiones Lógicas Una expresión lógica combina variables. 04. Tabla 1. Se ha utilizado la mínima cantidad posible de paréntesis. Undécimo. 13 .

Diagrama de Flujo Pseudocódigo Inicio .Diseñe un pseudocódigo que halle el área y el perímetro de un rectángulo. La estructura secuencial tiene una entrada y una salida. Considere que: area = base x altura y perimetro = 2 x (base+altura). Algoritmo INICIO // Declaración de variables REAL base. Fin Figura 2. altura. . acción 1 acción 2 acción 3 .1 Estructura Secuencial: Diagrama de Flujo y Pseudocódigo 2.2 Ejercicios Ejercicio 1:.2.1 se muestra el diagrama de flujo y el pseudocódigo de una estructura secuencial. sin cambios de ruta. . perimetro // Entrada de datos LEER base. perimetro FIN . En la Figura 4. area. altura // Proceso de cálculo area = base*altura perimetro = 2*(base+altura) // Salida de resultados IMPRIMIR area.1 Concepto Una estructura secuencial es aquella en la que las instrucciones estan una a continuación de la otra siguiendo una secuencia única.

1 pie = 12 pulgadas. cpulg. Considere que: 1 dólar = 3. cyard FIN Ejercicio 3:. 1 segundo = 100 centésimas de segundo.Diseñe un pseudocódigo para convertir una longitud dada en metros a sus equivalentes en centímetros.52 + cdolares + cmarcos/2. rubro2. cpies. 1 dólar = 1. segundos y centésimas de segundo y.Una institución benéfica europea ha recibido tres donaciones en soles. rubro3 // Entrada de datos LEER csoles. Diseñe un algoritmo para determinar la velocidad promedio de un atleta en km/hr.ccent. cpies. c marcos. 1 kilómetro = 1000 metros. Algoritmo . dolares y marcos. Considere que: 1 hora = 60 minutos. rubro3 FIN Ejercicio 4:. 1 pulgada = 2. Diseñe un algoritmo que determine el monto en euros que le corresponde a cada rubro. ceuros. rubro1. pulgadas y yardas. 1 yarda = 3 pies.52 soles. el espacio recorrido se mide en metros.07 rubro1 = ceuros*0. cmarcos // Proceso de cálculo ceuros = (csoles/3. pies.08)*1. 40% para un comedor de niños y el resto para gastos administrativos.20 // Salida de resultados IMPRIMIR rubro1.40 rubro3 = ceuros*0. rubro2. cdolares. Algoritmo INICIO // Declaración de variables REAL cmetr.60 rubro2 = ceuros*0. 1 minuto = 60 segundos. La donación será repartida en tres rubros: 60% para la implementación de un centro de salud. Algoritmo INICIO // Declaración de variables REAL c soles. 1 dólar = 2.54 centimetros. Considere que: 1 metro = 100 centímetros.En una competencia atlética de velocidad el tiempo se mide en minutos. cdolares.08 marcos. cyard // Entrada de datos LEER cmetr // Proceso de cálculo ccent = cmetr*100 cpulg = ccent/2.Ejemplo 2:.07 euros.54 cpies = cpulg/12 cyard = cpies/3 // Salida de resultados IMPRIMIR cpulg.

espmt // Cálculo del tiempo total empleado en horas thor = tmin/60 + tseg/3600 + tcen/360000 // Cálculo del espacio recorrido en kilómetros espkm = espmt/1000 // Cálculo de la velocidad en km/hr velkmhr = espkm/thor // Salida de resultados IMPRIMIR velkmhr FIN Ejercicio 5:. unidades . tseg. Algoritmo INICIO // Declaración de variables ENTERO numero. Observe para ello las siguientes divisiones: 3245 10 5 324 768 10 8 76 9 10 9 0 Podemos concluir entonces que: unidades = numero % 10 Siendo % el operador residuo. tseg. espmt. Solución 1 Análisis Puede comprobarse que la cifra de las unidades de un número es igual al resto de la división del número entre 10. Este operador permite obtener el residuo de una división. tcen. así como / permite obtener el cociente. tcen REAL thor.Diseñe un algoritmo que determine la cifra de las unidades de un número natural. espkm // Entrada de datos LEER tmin.INICIO // Declaración de variables ENTERO tmin. velkmhr.

aunque matemáticamente sea 324. de la siguiente forma: unidades = numero . Solución 1 Análisis Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10.(numero / 10) * 10 observe para esto que en la división (numero/10) los operandos son enteros por lo que el cociente será un entero. si numero es igual a 3245.(numero/10)*10 // Salida de resultados IMPRIMIR unidades FIN Ejercicio 6:.Diseñe un algoritmo que determine la suma de las cifras de un número entero positivo de 4 cifras.5. la división (numero/10) produce 324. es decir. Para el efecto. considere el caso de un número N igual a 3245: 3245 10 5 324 . unidades // Entrada de datos LEER numero // Proceso de cálculo unidades = numero . Algoritmo INICIO // Declaración de variables ENTERO numero. se descarta la parte decimal. // Entrada de datos LEER numero // Proceso de cálculo unidades = numero % 10 // Salida de resultados IMPRIMIR unidades FIN Solución 2 Análisis El residuo de una división entera puede obtenerse también sin recurrir al operador %. Así por ejemplo.

considere el caso de un número N igual a 3245: 3245 1000 245 3 millares = N/1000 resto = N%1000 245 100 . las cifras también pueden ser obtenidas mediante divisiones sucesivas entre 1000. centenas.unidades = N%10 cociente = N/10 324 10 4 32 decenas = cociente%10 cociente = cociente/10 32 10 2 3 centenas = cociente%10 millares = cociente/10 Algoritmo INICIO // Declaración de variables ENTERO N. decenas. resto // Entrada de datos LEER N // Proceso de cálculo 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 Solución 2 Análisis 2 Considerando que el número tiene 4 cifras. unidades. millares. 100 y 10. suma. Para el efecto.

millares.45 2 centenas = resto/100 resto = resto%100 45 10 3 4 decenas = resto/10 unidades = resto%10 Algoritmo INICIO // Declaración de variables ENTERO N. Algoritmo INICIO // Declaración de variables ENTERO hor1. seg2. resto // Entrada de datos LEER hor1. min1. min1.Diseñe un algoritmo que lea la hora actual del día HH:MM:SS y determine cuantas horas. centenas. minutos y segundos restan para culminar el día. unidades. seg1. hor2. resto // Entrada de datos LEER N // Proceso de cálculo 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:. decenas. minutos y segundos hor2 = segres/3600 resto = segres%3600 min2 = resto/60 seg2 = resto%60 . suma. min2. seg1 // Cálculo de la cantidad de segundos que restan para culminar el día segres = 86400 .(hor1*3600 + min1*60 + seg1) // Descomposición de segres en horas. segres.

Diseñe un algoritmo para sumar dos tiempos dados en horas. Algoritmo INICIO // Declaración de variables ENTERO hor1. min1. min2. seg3 FIN Ejercicio 9:. ventatot. seg2 // Determina la cantidad total de segundos entre los dos tiempos totseg = (hor1+hor2)*3600 + (min1+min2)*60 + (seg1+seg2) // Descompone totseg en horas. resto // Entrada de datos LEER hor1. hor3. totseg.12*ventatot sueldoneto = 250 + comision // Salida de resultados IMPRIMIR sueldoneto FIN Ejercicio 10:. hor2. min3. min1. min2. minutos y segundos. // Salida de resultados IMPRIMIR hor2. seg3. Diseñe un algoritmo que determine el sueldo neto de un vendedor sabiendo que hizo tres ventas en el mes. sueldoneto // Entrada de datos LEER venta1. venta3 // Proceso de cálculo ventatot = venta1 + venta2 + venta3 comision = 0. min3. seg2 FIN Ejercicio 8:. venta2. hor2. Algoritmo . Algoritmo INICIO // Declaración de variables REAL venta1.250 más el 12% del monto total vendido.El sueldo neto de un vendedor se calcula como la suma de un sueldo básico de S/. seg2. seg1. min2.Diseñe un algoritmo que determine el porcentaje de varones y de mujeres que hay en un salón de clases. minutos y segundos hor3 = totseg/3600 resto = totseg%3600 min3 = resto/60 seg3 = resto%60 // Salida de resultados IMPRIMIR hor3. seg1. venta3. venta2. comision.

Algoritmo INICIO // Declaración de variables REAL cgigabyte.Diseñe un algoritmo que exprese la capacidad de un disco duro en megabytes. cplgs // Proceso de cálculo estmt = (cpies*12 + cplgs)*2. kilobytes y bytes.0/total porcmuj = mujeres*100. Considere que: 1 kilobyte = 1024 bytes. conociendo la capacidad del disco en gigabytes. Diseñe un algoritmo que determine la estatura de una persona en metros. conociendo su estatura en el formato inglés.54 cm. Así. cmegabyte. 1 gigabyte = 1024 megabytes. 1 megabyte = 1024 kilobyte. mujeres // Proceso de cálculo total = varones + mujeres porcvar = varones*100.INICIO // Declaración de variables REAL porcvar. porcmuj FIN Ejercicio 11:. la estatura de una persona podría ser 3' 2" ( 3 pies 2 pulgadas ). cbyte // Entrada de datos LEER cgigabyte // Proceso de cálculo cmegabyte = cgigabyte*1024 . porcmuj ENTERO varones. total // Entrada de datos LEER varones. mujeres. cplgs // Entrada de datos LEER cpies. Algoritmo INICIO // Declaración de variables REAL estmt ENTERO cpies. ckilobyte. Considere que: 1 pie = 12 plg.En países de habla inglesa es común dar la estatura de una persona como la suma de una cantidad entera de pies más una cantidad entera de pulgadas.54/100 // Salida de resultados IMPRIMIR estmt FIN Ejercicio 12:. 1 m = 100 cm. 1 plg = 2.0/total // Salida de resultados IMPRIMIR porcvar.

14. unidades1.unidades2 + unidades1 // Salida de resultados IMPRIMIR n1. 05. cbyte FIN Ejercicio 13:. ckilobyte.  La estructura de selección doble (SI-SINO).6 Ejercicios 01. Algoritmo INICIO // Declaración de variables ENTERO numero1. 02.Diseñe un algoritmo que intercambie las cifras de las unidades de dos números naturales. unidades2 // Entrada de datos LEER numero1. numero2. n2 FIN Estructuras de Selección 3. 09.1 Introducción Las estructuras de selección son estructuras de control utilizadas para la toma decisiones dentro de un programa.4 Estructura de Selección Doble en Cascada SI-SINO-SI 3.1 Concepto 3.3 Estructura de Selección Doble SI-SINO 3.5 Estructura de Selección Múltiple SEGUN 3. 12. . ckilobyte = cmegabyte*1024 cbyte = ckilobyte*1024 // Salida de resultados IMPRIMIR cmegabyte. 03. 08. 06.2 Estructura de Selección Simple SI 3. A estas estructuras se conocen también como estructuras selectivas o estructuras de decisión y son las siguientes:  La estructura de selección simple (SI). 15 3. 13. 10. 04.unidades1 + unidades2 numero2 = numero2 . numero2 // Determina las cifras de las unidades unidades1 = n1%10 unidades2 = n2%10 // Intercambia las cifras de las unidades numero1 = numero1 . 11. 07.

se ejecuta la acción A.2 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección doble. En la Figura 3.  La estructura de selección múltiple (SEGUN) 3.3 Estructura de Selección Doble SI .1 Estructura de Selección Simple Por ejemplo. en el gráfico 3.SINO La estructura de selección doble permite seleccionar una ruta de dos rutas posibles en base a la verdad o falsedad de una condición. no se hace nada. si la condición es verdadera se ejecuta la acción acciona. si la condición es verdadera.2 Estructura de Selección Simple SI La estructura de selección simple permite ejecutar una acción o un grupo de acciones sólo si se cumple una determinada condición. . podemos escribir: SI( numero < 0 ) numero = -1 * numero Si el número no es negativo. 3. en caso contrario. . se ejecuta la acción B. Así.1. en caso contrario. simplemente esta estructura se pasaría por alto y se continuaría en la siguiente instrucción después del SI.2. si se desea cambiar el signo de un número únicamente en caso que sea negativo. Diagrama de Flujo Pseudocódigo (acción simple) SI( condicion ) acciona SINO . Así. Diagrama de Flujo Pseudocódigo (acción simple) SI( condicion ) acciona Pseudocódigo (acción compuesta) SI( condicion ){ acciona1 acciona2 . accionan } Figura 3. en la Figura 3.

accionb Pseudocódigo (acción compuesta) SI( condicion ){ acciona1 acciona2 . se efectúa la acción correspondiente al último SINO.2 Estructura de Selección Doble Por ejemplo. accionbn } Figura 3. se ejecutará la primera instrucción que sigue a la estructura SI. . las condiciones se evalúan en orden descendente.3 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección doble en cascada. la siguiente estructura de selección 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 años ó más e imprime "Menor de edad" si la persona tiene menos de 18 años. . 3. En la estructura de selección doble en cascada. pasando de una condición a otra si la condición anterior resulta falsa. ...4 Estructura de Selección Doble en Cascada SI-SINO-SI La estructura de selección doble en cascada esta formada por varias estructuras de selección doble SI-SINO puestas una a continuación de otra de forma que a un SI-SINO le sigue otro SI- SINO. después de efectuar la impresión. Si todas las condiciones resultan falsas. accionan } SINO{ accionb1 accionb2 . . . que se considera como la acción por defecto. En el momento que se encuentra una condición verdadera. En la Figura 3. En cualquiera de los casos.SINO. se efectúa la acción correspondiente a dicha condición y se corta el resto de la estructura.

5 Estructura de Selección Múltiple SEGUN .3 Estructura de Selección Doble en Cascada Por ejemplo. negativo o cero: SI( n > 0 ) signo = "Positivo" SINO SI( n < 0 ) signo = "Negativo" SINO signo = "Cero" Usando el otro formato tendríamos: SI( n > 0 ) signo = "Positivo" SINO SI( n < 0 ) signo = "Negativo" SINO signo = "Cero" 3. . SINO acciondefecto Pseudocódigo ( Forma 2 ) SI( condicion1 ) accion1 SINO SI( condicion2 ) accion2 SINO SI( condicion3 ) accion3 . . Diagrama de Flujo Pseudocódigo ( Forma 1 ) SI( condicion1 ) accion1 SINO SI( condicion2 ) accion2 SINO SI( condicion3 ) accion3 . SINO acciondefecto Figura 3. la siguiente estructura de selección doble en cascada determina el signo de un número entre positivo. . .

5 por hora o fracción.4 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección múltiple.6 Ejercicios Ejercicio 1:.. .. En el momento en que se encuentre una coincidencia. se ejecuta la acción correspondiente a dicha constante y se abandona la estructura. . CASO cn : accionn DEFECTO : acciondefecto } Figura 3.4 Estructura de Selección Múltiple Por ejemplo. 2 para Verano. conociendo el tiempo de estacionamiento en horas y minutos.En una playa de estacionamiento cobran S/. cn en orden descendente.La estructura de selección múltiple SEGUN permite elegir una ruta de entre varias rutas posibles. La estructura compara el valor del selector con las constantes c1.. Diseñe un algoritmo que determine cuanto debe pagar un cliente por el estacionamiento de su vehículo. . 3 para Otoño y 4 para Invierno) : SEGUN(numeroEstacion){ CASO 1 : nombreEstacion = "Primavera" CASO 2 : nombreEstacion = "Verano" CASO 3 : nombreEstacion = "Otoño" DEFECTO : nombreEstacion = "Invierno" } 3. . En la Figura 3. c2. Diagrama de Flujo Pseudocódigo SEGUN( selector ){ CASO c1 : accion1 CASO c2 : accion2 CASO c3 : accion3 . 2. la siguiente estructura de selección múltiple determina el nombre de la estación del año conociendo el número de la estación (1 para Primavera. en base al valor de una variable que actúa como selector.

par positivo.5 // Salida de resultados IMPRIMIR pago FIN Ejercicio 2:. minutos // Determina el número de horas a pagar SI( minutos > 0 ) horasPagar = horas + 1 SINO horasPagar = horas // Determina el importe a pagar pago = horasPagar * 2.Diseñe un algoritmo que determine si ún número es o no es. minutos // Si hay alguna fracción de hora.5 // Salida de resultados IMPRIMIR pago FIN Algoritmo 2 INICIO // Declaración de variables ENTERO horas. minutos REAL pago // Entrada de datos LEER horas. horasPagar REAL pago // Entrada de datos LEER horas. Algoritmo INICIO // Declaración de variables REAL numero CADENA tipoNumero // Entrada de datos .Algoritmo 1 INICIO // Declaración de variables ENTERO horas. incrementa las horas a pagar en una unidad SI( minutos > 0 ) horas = horas + 1 // Determina el importe a pagar pago = horas * 2. minutos.

Una tienda ha puesto en oferta la venta al por mayor de cierto producto. precio // Determina el monto de la compra montocom = docenas*precio // Determina el monto del descuento y el obsequio . LEER numero // Determina si el número es o no es. numero3 // Determina el mayor numeroMayor = numero1 SI( numero2 > numeroMayor ) numeroMayor = numero2 SI( numero3 > numeroMayor ) numeroMayor = numero3 // Salida de resultados IMPRIMIR mayor FIN Ejercicio 4:. obsequio // Entrada de datos LEER docenas. el monto del descuento. numero2. numero3. par positivo SI( (numero%2==0) && (numero>0) ) tipoNumero = "El número es par positivo" SINO tipoNumero = "El número no es par positivo" // Salida de resultados IMPRIMIR tipoNumero FIN Ejercicio 3:. precio ENTERO docenas. montocom. montodes. numeroMayor // Entrada de datos LEER numero1. Algoritmo INICIO // Declaración de variables REAL numero1. Además por la compra de más de 3 docenas se obsequia una unidad del producto por cada docena en exceso sobre 3.Diseñe un algoritmo que lea tres números y determine el número mayor. Diseñe un algoritmo que determine el monto de la compra. el monto a pagar y el número de unidades de obsequio por la compra de cierta cantidad de docenas del producto. Algoritmo INICIO // Declaración de variables REAL montopag. ofreciendo un descuento del 15% por la compra de más de 3 docenas y 10% en caso contrario. numero2.

montopag. para ser capicúa basta con que la cifra de las unidades sea igual a la cifra de las centenas. Por ejemplo: 353. Un número es capicúa si es igual al revés del número. obsequio FIN Ejercicio 5:. montodes. 878. unidades...Diseñe un algoritmo que lea un número de tres cifras y determine si es o no capicúa.montodes // Salida de resultados IMPRIMIR montocom. SI(numero >= 100 && numero <= 999 ){ // Determina la cifra de las unidades y la cifra de las centenas unidades = numero%10 centenas = numero/100 // Determina el tipo de número entre capicúa o no capicúa SI( unidades == centenas ) tipoNumero = "El número es capicúa" SINO tipoNumero = "El número no es capicúa" // Muestra el tipo de número IMPRIMIR tipoNumero } SINO IMPRIMIR "Ingrese un número de tres cifras" FIN . Algoritmo INICIO // Salida de resultados ENTERO numero.10*montocom obsequio = 0 } // Determina el monto a pagar montopag = montocom . SI( docenas > 3 ){ montodes = 0. etc.15*montocom obsequio = docenas-3 } SINO{ montodes = 0. centenas CADENA tipoNumero // Entrada de datos LEER numero // Si el número tiene tres cifras. Observación Como el número tiene tres cifras.

dado3 // Determina la calificación SI( dado1 + dado2 + dado3 == 18 ) calificacion = "Excelente" SINO SI( dado1+dado2 == 12 || dado1+dado3 == 12 || dado2+dado3 == 12 ) calificacion = "Muy bién" SINO SI( dado1 == 6 || dado2 == 6 || dado3 == 6 ) calificacion = "Regular" SINO calificacion = "Pésimo" // Salida de resultados IMPRIMIR calificacion FIN Ejercicio 7:. Algoritmo INICIO // Declaración de variables REAL kilomrec. Para más de 300 km y hasta 1000 km.10*(kilomrec-1000) // Determina el monto del impuesto montoigv = igv*montopag /(1+igv) . IGV. montofijo = 30. Diseñe un algoritmo que determine el monto a pagar por el alquiler de un vehículo y el monto incluído del impuesto. cobra un monto adicional de $ 0. dado2. montoigv. pésimo.Ejercicio 6:. Algoritmo INICIO // Declaración de variables ENTERO dado1. montopag. Para más de 1000 km cobra un monto adicional de $ 0. Los precios ya incluyen el 18% del impuesto general a las ventas.10 por cada kilómetro en exceso sobre 1000. excelente. muy bien.Diseñe un algoritmo que califique el puntaje obtenido en el lanzamiento de tres dados en base a la cantidad seis obtenidos. de acuerdo a lo siguiente: tres seis. dado2.15*(kilomrec-300) SINO montopag = montofijo + 0. igv = 0. dado3 CADENA calificacion // Entrada de datos LEER dado1.Una compañía dedicada al alquiler de automoviles cobra un monto fijo de $30 para los primeros 300 km de recorrido.18 // Entrada de datos LEER kilomrec // Determina el monto a pagar SI( kilomrec <= 300 ) montopag = montofijo SINO SI( kilomrec <= 1000 ) montopag = montofijo + 0.15 por cada kilómetro en exceso sobre 300. dos seis. regular. ningún seis. un seis.15*700 + 0.

El promedio de prácticas de un curso se calcula en base a cuatro prácticas calificadas de las cuales se elimina la nota menor y se promedian las tres notas más altas. promedio // Entrada de datos LEER pc1. // Salida de resultados IMPRIMIR montopag. montoigv FIN Ejercicio 8:. Algoritmo INICIO // Declaración de variables ENTERO juan. pc2. pc3. pc2. Diseñe un algoritmo que determine la nota eliminada y el promedio de prácticas de un estudiante. pc4 // Determina la nota menor pcmenor = pc1 SI( pc2 < pcmenor ) pcmenor = pc2 SI( pc3 < pcmenor ) pcmenor = pc3 SI( pc4 < pcmenor ) . pc4. Mario y Pedro. mario. pedro CADENA contemporaneos // Entrada de datos LEER juan.Diseñe un algoritmo que determine quienes son contemporáneos entre Juan. Algoritmo INICIO // Declaración de variables REAL pc1. pedro // Determina quienes son contemporáneos SI( juan == mario && mario == pedro ) contemporaneos = "Los tres son contemporáneos" SINO SI( juan == mario ) contemporaneos = "Juan y Mario son contemporáneos" SINO SI( juan == pedro ) contemporaneos = "Juan y Pedro son contemporáneos" SINO SI( mario == pedro ) contemporaneos = "Mario y Pedro son contemporáneos" SINO contemporaneos = "No hay contemporáneos" // Salida de resultados IMPRIMIR contemporaneos FIN Ejercicio 9:. mario. pc3. pcmenor.

Si es un triángulo determine de que tipo de triángulo se trata entre: equilátero (si tiene tres lados iguales).Diseñe un algoritmo que lea tres números enteros y determine el menor valor positivo.mayor // Determina de que tipo de triángulo se trata SI( mayor < suma ){ SI( ( L1 == L2 ) && ( L2 == L3 ) ) tipoRectangulo = "Triángulo equilátero" SINO SI( ( L1 == L2 ) || ( L1 == L3 ) || ( L2 == L3 ) ) tipoRectangulo = "Triángulo isósceles" SINO tipoRectangulo = "Triángulo escaleno" } SINO tipoRectangulo = "No es un triángulo" // Salida de resultados IMPRIMIR tipoRectangulo FIN Ejercicio 11:. isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales). L3< // Determina el lado mayor mayor = L1 SI( L2 > mayor ) mayor = L2 SI( L3 > mayor ) mayor = L3 // Determina la suma de los lados a excepción del lado mayor suma = L1 + L2 + L3 . suma CADENA tipoRectangulo // Entrada de datos LEER L1. L2. Algoritmo INICIO // Declaración de variables REAL L1. L3. pcmenor = pc4 // Determina el promedio promedio = (pc1 + pc2 + pc3 + pc4 .Diseñe un algoritmo que lea tres longitudes y determine si forman o no un triángulo. Algoritmo . dar como menor a cualquiera de ellos. L2. Si los números positivos son iguales. Considere que para formar un triángulo se requiere que: "el lado mayor sea menor que la suma de los otros dos lados". pcmenor FIN Ejercicio 10:.pcmenor )/3 // Salida de resultados IMPRIMIR promedio.

n3 // Determina el menor menor = n1 SI( n2 < menor ) menor = n2 SI( n3 < menor ) menor = n3 . Algoritmo INICIO // Declaración de variables REAL n1.INICIO // Declaración de variables ENTERO a. n2. b y c podrían ser positivos SI( a > 0 ){ menor = a SI( b > 0 && b < menor ) menor = b SI( c > 0 && c < menor ) menor = c } // Aquí sólo b y c podrían ser positivos SINO SI( b > 0 ){ menor = b SI( c > 0 && c < menor ) menor = c } // Aquí sólo c podrían ser positivos SINO SI( c > 0 ){ menor = c } // Guardamos el indicador -1 para saber que no hay positivos SINO menor = -1 // Salida de resultados SI( menor != -1 ) IMPRIMIR menor SINO IMPRIMIR "No se ingresó ningún número positivo" FIN Ejercicio 12:. c. b. menor. c // Determina el menor // Aquí a. n2. n3.Diseñe un algoritmo que lea tres números y los imprima de mayor a menor y de menor a mayor. mayor. b. menor // Entrada de datos LEER a. medio // Entrada de datos LEER n1.

grado 8. tordef // Determina el grado de eficiencia SI( tordef < 200 ){ SI( torpro > 10000 ) grado = 8 SINO grado = 6 } SINO{ SI( torpro > 10000 ) . . grado 6. de acuerdo a las siguientes condiciones. grado 5. tordef.Menos de 200 tornillos defectuosos.Si cumple las dos condiciones. grado 7. . que se le imponen para un período de prueba: . // Determina el mayor mayor = n1 SI( n2 > mayor ) mayor = n2 SI( n3 > mayor ) mayor = n3 // Determina el medio medio = n1+n2+n3-mayor-menor // Imprime en orden ascendente IMPRIMIR menor. . . menor FIN Ejercicio 13:.Más de 10000 tornillos producidos.Diseñe un algoritmo para obtener el grado de eficiencia de un operario de una fábrica de tornillos. medio. El grado de eficiencia se determina de la siguiente manera: . Las condiciones impuestas por la fábrica son: torpro < 200 siendo torpro el número de tornillos producidos tordef > 10000 siendo tordef el número de tornillos defectuosos Algoritmo 1 INICIO // Declaración de variables ENTERO torpro. mayor // Imprime en orden descendente IMPRIMIR mayor.Si no cumple niguna de las condiciones. medio.Si sólo cumple la primera condición. grado // Entrada de datos LEER torpro.Si sólo cumple la segunda condición.

Van a la segunda vuelta los dos candidatos que obtengan la más alta votación. tordef. Algoritmo INICIO // Declaración de variables ENTERO vjuan. vmingan CADENA resultado // Entrada de datos LEER vjuan. vpedro. Pedro y Maria en una elección democrática a la presidencia de un club. grado // Entrada de datos LEER torpro. Diseñe un algoritmo que determine el resultado de la elección.Se cuenta con los votos obtenidos por Juan. Para ganar la elección se debe obtener como mínimo el 50% de los votos más 1. vmaria. grado = 7 SINO grado = 5 } // Salida de resultados IMPRIMIR grado FIN Algoritmo 2 INICIO // Declaración de variables ENTERO torpro. Se anula la elección en caso de producirse un empate doble por el segundo lugar o un empate triple. vpedro. tordef // Determina el grado de eficiencia SI( tordef < 200 && torpro > 10000 ) grado = 8 SINO SI( tordef < 200 ) grado = 6 SINO SI( torpro > 10000 ) grado = 7 SINO grado = 5 // Salida de resultados IMPRIMIR grado FIN Ejercicio 14:. vmaria // Determina la votación mínima para ganar vmingan = (vjuan + vpedro + vmaria)/2 + 1 // Determina el resultado de la elección SI( vjuan >= vmingan ) . En caso que no haya un ganador se repite la elección en una segunda vuelta.

El número formado debe tener el mismo signo que el número ingresado. num2. numaux.. Algoritmo INICIO // Declaración de variables ENTERO num1. cen. uni. mayor. SI( ( num1 >= 100 && num1 <= 999 ) && ( num1 >= -999 && num1 <= -100 ) ){ // Guarda el número en una variable auxiliar para preservar el signo numaux = num1 // Cambia el signo de num1 en caso de ser negativo SI( num1 < 0 ) num1 = -num1 // Determina las cifras del número cen = num1/100 dec = (num1%100)/10 uni = (num1%100)%10 // Determina la cifra menor menor = cen SI( dec < menor ) menor = dec SI( uni < menor ) menor = uni .Diseñe un algoritmo que lea un número entero de 3 cifras. resultado = "Gana Juan " SINO SI( vpedro >= vmingan ) resultado = "Gana Pedro" SINO SI( vmaria >= vmingan ) resultado = "Gana María" SINO SI( vpedro > vjuan && vmaria > vjuan ) resultado = "Pasan a la segunda vuelta Pedro y María" SINO SI( vpedro > vmaria && vjuan > vmaria ) resultado = "Pasan a la segunda vuelta Pedro y Juan" SINO SI( vmaria > vpedro && vjuan > vpedro ) resultado = "Pasan a la segunda vuelta María y Juan " SINO resultado = "Elección anulada" // Salida de resultados IMPRIMIR resultado FIN Ejercicio 15:.medio // Entrada de datos LEER num1 // Si el número tiene tres cifras.. dec. menor. y forme el mayor número posible con las cifras del número ingresado.

// Determina la cifra mayor mayor = cen SI( dec > mayor ) mayor = dec SI( uni > mayor ) mayor = uni // Determina la cifra del medio medio = cen+dec+uni-mayor-menor // Forma el nuevo número SI( numaux > 0 ) num2 = mayor*100 + medio*10 + menor SINO num2 = -1*(menor*100 + medio*10 + mayor) // Imprime el nuevo número IMPRIMIR num2 } SINO IMPRIMIR "El número no tiene tres cifras" FIN .