Conceptos Básicos de Algoritmia Imprimir

23
Conceptos Básicos de Algoritmia 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 1

description

juhoio

Transcript of Conceptos Básicos de Algoritmia Imprimir

Page 1: Conceptos Básicos de Algoritmia Imprimir

Conceptos Básicos de Algoritmia

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

1

Page 2: Conceptos Básicos de Algoritmia Imprimir

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, ..., nombren Nombres de las variables . El nombre de una variable debe 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.

2

Page 3: Conceptos Básicos de Algoritmia Imprimir

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 edadREAL descuento

Esto crea los casilleros de memoria edad y descuento. Luego de la creación, las variables están indefinidas ( ? ).

edad ?descuento ?

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

nota1 ?nota2 ?nota3 ?

1.4 Literales

Se denominan literales a todos aquellos valores que figuran en el pseudocódigo y pueden ser:

Literales enteros

12, 20300, 15, etc.

Literales reales

3.1416, 2345.456, etc.

Literales de carácter

'a', 'B', ';', '<', '+', etc.

Lieterales de cadena

"Hola", "Algoritmos Computacionales", etc.

Literales lógicos

verdadero, falso  

1.5 Instrucciones Algorítmicas Básicas

Existen tres instrucciones algorítmicas básicas 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 acción de ingresar un dato a una variable se expresa en el pseudocódigo mediante la palabra LEER, de la siguiente forma:

3

Page 4: Conceptos Básicos de Algoritmia Imprimir

LEER variable

Por ejemplo, la instrucción:

LEER estatura

Solicita el ingreso de un valor, desde algún 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 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, la instrucción:

IMPRIMIR importeCompra

Muestra, en algún dispositivo de salida (como la pantalla), el valor de la variable importeCompra.

1.5.3 Asignación

Consiste en asignar a una variable el valor de una expresión. La expresión puede ser una simple variable, un simple literal o una combinación de variables, literales y operadores. 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, 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 centímetros y pulgadas una cantidad dada en metros.

Esta es una solución en pseudocódigo del ejemplo 1.2 utilizando conceptos computacionales de variable, entrada de datos y salida de resultados. La solución considera que 1 metro = 100 centímetros y que 1 pulgada = 2.54 centímetros.

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 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.54

   // Muestra los valores de las variables C y P   IMPRIMIR C, PFIN

1.6 Expresiones Aritméticas

4

Page 5: Conceptos Básicos de Algoritmia Imprimir

Una expresión aritmética es una combinación de variables, literales y operadores aritméticos.

1.6.1 Operadores Aritméticos

En la tabla que sigue se muestran los operadores aritméticos que vamos a utilizar.

Tabla 1.1 Operadores aritméticos

Operador Significado Ejemplo+ Suma a+b- 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. Si en una operación 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 jerarquía de los operadores aritméticos

Cuando una expresión aritmética tiene más de un operador aritmético, el orden de aplicación de los operadores sigue un orden preciso determinado por las reglas de jerarquía de los operadores aritméticos, que se muestran en la siguiente tabla:

Tabla 1.2 Reglas de jerarquía de los operadores aritméticos

Operador Orden de evaluación () Se evalúan en primer lugar

*, /, % Se evalúan en segundo lugar+, - Se evalúan en tercer lugar

Si existen paréntesis anidados, se evalúa primero la expresión en el par más interno. Si varios operadores o paréntesis tienen la misma jerarquía, la evaluación será de izquierda a derecha.

Ejemplo 1.4:- ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?

Solución

e = a/b/c

Como todos los operadores tienen la misma jerarquía, la evaluación será de izquierda a derecha:

Primero, se dividirá a entre b. Segundo, el resultado ya obtenido de a/b se dividirá entre c.

Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se requiere ninguna pareja de paréntesis.

5

Page 6: Conceptos Básicos de Algoritmia Imprimir

Ejemplo 1.5:- ¿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, la evaluación será de izquierda a derecha:

Primero, se multiplicará a por b. Segundo, el resultado ya obtenido de a*b se multiplicará por c. Tercero, el resultado ya obtenido de a*b*c se dividirá entre d.Cuarto, el resultado ya obtenido de a*b*c/d se divivirá entre e.

Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo que no se requiere ninguna pareja de paréntesis.

Ejercicio 1.6:- ¿Cuál es el equivalente en pseudocódigo de la siguiente expresión algebraica?

Solución

e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q

Aplicando las reglas de jerarquía de los operadores aritméticos:

Primero, se sumará a más b. Segundo, se dividirá c entre d.Tercero, el resultado ya obtenido de a+b se dividirá entre el resultado ya obtenido de c/d.Cuarto, se dividirá 4 entre el resultado ya obtenido de ((a+b)/(c/d)) Quinto, se dividirá v entre w.Sexto, se dividirá el resultado ya obtenido de v/w entre p.Séptimo, se multiplicará 5 por m.Octavo, se multiplicará el resultado ya obtenido de 5*m por n.Noveno, se multiplicará el resultado ya obtenido de 5*m*n por q.Décimo, se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) más el resultado ya obtenido de v/w/p.Undécimo, se sumará el resultado ya obtenido de 4/((a+b)/(c/d)) + v/w/p más el resultado ya obtenido de 5*m*n*q.

Se ha utilizado la mínima cantidad posible de paréntesis. Pueden usarse paréntesis adicionales, lo que no es un error. Por ejemplo, otra solución posible que arroja el mismo resultado final es:

e = (4/((a+b)/(c/d))) + ((v/w)/p) + (5*m*n*q)

Note que usando correctamente las reglas de jerarquía, es posible usar menos parejas de paréntesis.

1.7 Expresiones Lógicas

Una expresión lógica combina variables, literales, operadores aritméticos, operadores relacionales y operadores lógicos. Los operadores relacionales y los operadores lógicos se muestran en las tablas 3.1 y 3.2.

6

Page 7: Conceptos Básicos de Algoritmia Imprimir

Tabla 1.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.4 Operadores lógicos

Operador Significado Ejemplo! no !a

&& y a && b|| ó a || b

Estructuras de Secuencia

Concepto

Una estructura secuencial es aquella en la que las instrucciones estan una a continuación 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 pseudocódigo de una estructura secuencial.

Diagrama de Flujo Pseudocódigo

Inicio    .    .        acción 1    acción 2    acción 3    .    .    Fin

Figura 2.1 Estructura Secuencial: Diagrama de Flujo y Pseudocódigo

2.2 Ejercicios

Ejercicio 1:- Diseñe un pseudocódigo que halle el área y el perímetro de un rectángulo. Considere que: area = base x altura y perimetro = 2 x (base+altura).

Algoritmo

INICIO    // Declaración de variables     REAL base, altura, area, perimetro

    // Entrada de datos     LEER base, altura 

7

Page 8: Conceptos Básicos de Algoritmia Imprimir

    // Proceso de cálculo     area = base*altura    perimetro = 2*(base+altura)

    // Salida de resultados     IMPRIMIR area, perimetroFIN    

Ejemplo 2:- Diseñe un pseudocódigo para convertir una longitud dada en metros a sus equivalentes en centímetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centímetros, 1 pulgada = 2.54 centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.

Algoritmo

INICIO     // Declaración de variables      REAL cmetr,ccent, cpies, cpulg, cyard

    // Entrada de datos     LEER cmetr  

    // Proceso de cálculo     ccent = cmetr*100     cpulg = ccent/2.54    cpies = cpulg/12    cyard = cpies/3

    // Salida de resultados     IMPRIMIR cpulg, cpies, cyard FIN

Ejercicio 3:- Una institución benéfica europea ha recibido tres donaciones en soles, dolares y marcos. La donación será repartida en tres rubros: 60% para la implementación de un centro de salud, 40% para un comedor de niños y el resto para gastos administrativos. Diseñe un algoritmo que determine el monto en euros que le corresponde a cada rubro. Considere que: 1 dólar = 3.52 soles, 1 dólar = 2.08 marcos, 1 dólar = 1.07 euros.

Algoritmo

INICIO    // Declaración de variables     REAL c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3

    // Entrada de datos     LEER csoles, cdolares, cmarcos

    // Proceso de cálculo     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, rubro3FIN

Ejercicio 4:- En una competencia atlética de velocidad el tiempo se mide en minutos, segundos y centésimas de segundo y, el espacio recorrido se mide en metros. Diseñe 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 centésimas de segundo, 1 kilómetro = 1000 metros.

8

Page 9: Conceptos Básicos de Algoritmia Imprimir

Algoritmo

INICIO     // Declaración de variables     ENTERO tmin, tseg, tcen    REAL thor, velkmhr, espmt, espkm

    // Entrada de datos     LEER tmin, tseg, tcen, 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 velkmhrFIN

Ejercicio 5:- Diseñe un algoritmo que determine la cifra de las unidades de un número natural.

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. Observe para ello las siguientes divisiones:

3245 105 324

768 108 76

9 109 0

Podemos concluir entonces que:

unidades = numero % 10

Siendo % el operador residuo. Este operador permite obtener el residuo de una división, así como / permite obtener el cociente.

Algoritmo

INICIO     // Declaración de variables     ENTERO numero, unidades

    // Entrada de datos     LEER numero

9

Page 10: Conceptos Básicos de Algoritmia Imprimir

    // Proceso de cálculo     unidades = numero % 10

    // Salida de resultados     IMPRIMIR unidadesFIN

Solución 2

Análisis

El residuo de una división entera puede obtenerse también sin recurrir al operador %, de la siguiente forma:

unidades = numero - (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. Así por ejemplo, si numero es igual a 3245, la división (numero/10) produce 324, aunque matemáticamente sea 324.5; es decir, se descarta la parte decimal.

Algoritmo

INICIO     // Declaración de variables     ENTERO numero, unidades

    // Entrada de datos     LEER numero

    // Proceso de cálculo     unidades = numero - (numero/10)*10

    // Salida de resultados     IMPRIMIR unidadesFIN

Ejercicio 6:- Diseñe un algoritmo que determine la suma de las cifras de un número entero positivo de 4 cifras.

Solución 1

Análisis

Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto, considere el caso de un número N igual a 3245:

3245 105 324

unidades = N%10cociente = N/10

324 104 32

decenas  = cociente%10cociente = cociente/10

32 102 3

10

Page 11: Conceptos Básicos de Algoritmia Imprimir

centenas = cociente%10millares = cociente/10

Algoritmo

INICIO     // Declaración de variables     ENTERO N, suma, millares, centenas, decenas, unidades, 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, las cifras también pueden ser obtenidas mediante divisiones sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un número N igual a 3245:

3245 1000245 3

millares = N/1000resto    = N%1000

245 10045 2

centenas = resto/100resto    = resto%100

45 103 4

decenas  = resto/10unidades = resto%10

Algoritmo

INICIO     // Declaración de variables    ENTERO N, suma, millares, centenas, decenas, unidades, resto

    // Entrada de datos    LEER N

11

Page 12: Conceptos Básicos de Algoritmia Imprimir

    // 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 sumaFIN

Ejercicio 7:- Diseñe un algoritmo que lea la hora actual del día HH:MM:SS y determine cuantas horas, minutos y segundos restan para culminar el día.

Algoritmo

INICIO     // Declaración de variables     ENTERO hor1, min1, seg1, hor2, min2, seg2, segres, resto

    // Entrada de datos     LEER hor1, min1, 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, minutos y segundos     hor2  = segres/3600    resto = segres%3600    min2  = resto/60    seg2  = resto%60

    // Salida de resultados     IMPRIMIR hor2, min2, seg2FIN

Ejercicio 8:- Diseñe un algoritmo para sumar dos tiempos dados en horas, minutos y segundos.

Algoritmo

INICIO     // Declaración 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    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, seg3FIN

12

Page 13: Conceptos Básicos de Algoritmia Imprimir

Ejercicio 9:- El sueldo neto de un vendedor se calcula como la suma de un sueldo básico de S/.250 más el 12% del monto total vendido. Diseñe un algoritmo que determine el sueldo neto de un vendedor sabiendo que hizo tres ventas en el mes.

Algoritmo

INICIO    // Declaración de variables     REAL venta1, venta2, venta3, ventatot, comision, sueldoneto

    // Entrada de datos     LEER venta1, venta2, venta3

    // Proceso de cálculo    ventatot = venta1 + venta2 + venta3    comision = 0.12*ventatot    sueldoneto = 250 + comision

    // Salida de resultados     IMPRIMIR sueldonetoFIN

Ejercicio 10:- Diseñe un algoritmo que determine el porcentaje de varones y de mujeres que hay en un salón de clases.

Algoritmo

INICIO    // Declaración de variables     REAL porcvar, porcmuj    ENTERO varones, mujeres, total

    // Entrada de datos     LEER varones, mujeres

    // Proceso de cálculo    total = varones + mujeres    porcvar = varones*100.0/total    porcmuj = mujeres*100.0/total

    // Salida de resultados     IMPRIMIR porcvar, porcmujFIN

Ejercicio 11:- 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. Así, la estatura de una persona podría ser 3' 2" ( 3 pies 2 pulgadas ). Diseñe un algoritmo que determine la estatura de una persona en metros, conociendo su estatura en el formato inglés. Considere que: 1 pie = 12 plg, 1 plg = 2.54 cm, 1 m = 100 cm.

Algoritmo

INICIO    // Declaración de variables     REAL estmt    ENTERO cpies, cplgs 

    // Entrada de datos     LEER cpies, cplgs

13

Page 14: Conceptos Básicos de Algoritmia Imprimir

    // Proceso de cálculo     estmt = (cpies*12 + cplgs)*2.54/100

    // Salida de resultados     IMPRIMIR estmtFIN

Ejercicio 12:- Diseñe 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 Selección

Introducción

Las estructuras de selección son estructuras de control utilizadas para la toma decisiones dentro de un programa. 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). La estructura de selección doble (SI-SINO). La estructura de selección múltiple (SEGUN)

3.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. Así, en el gráfico 3.1, si la condición es verdadera se ejecuta la acción acciona; en caso contrario, no se hace nada.

      Diagrama de Flujo Pseudocódigo (acción simple)

SI( condicion )   acciona

Pseudocódigo (acción compuesta)

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

Figura 3.1 Estructura de Selección Simple

Por ejemplo, si se desea cambiar el signo de un número únicamente en caso que sea negativo, podemos escribir:

SI( numero < 0 )    numero = -1 * numero

Si el número no es negativo, simplemente esta estructura se pasaría por alto y se continuaría en la siguiente instrucción después del SI.

3.3 Estructura de Selección Doble SI - SINO

14

Page 15: Conceptos Básicos de Algoritmia Imprimir

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. Así, en la Figura 3.2, si la condición es verdadera, se ejecuta la acción A; en caso contrario, se ejecuta la acción B.

En la Figura 3.2 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección doble.

                             Diagrama de Flujo Pseudocódigo (acción simple)

SI( condicion )   accionaSINO   accionb

Pseudocódigo (acción compuesta)

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

Figura 3.2 Estructura de Selección Doble

Por ejemplo, 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. En cualquiera de los casos, después de efectuar la impresión, se ejecutará la primera instrucción que sigue a la estructura SI...SINO. 

3.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.

En la estructura de selección doble en cascada, las condiciones se evalúan en orden descendente, pasando de una condición a otra si la condición anterior resulta falsa. En el momento que se encuentra una condición verdadera, se efectúa la acción correspondiente a dicha condición y se corta el resto de la estructura. Si todas las condiciones resultan falsas, se efectúa la acción correspondiente al último SINO, que se considera como la acción por defecto.

En la Figura 3.3 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección doble en cascada.

                    Diagrama de Flujo Pseudocódigo ( Forma 1 )

15

Page 16: Conceptos Básicos de Algoritmia Imprimir

SI( condicion1 )    accion1SINO    SI( condicion2 )        accion2    SINO         SI( condicion3 )            accion3        .        .                  .        SINO            acciondefecto

Pseudocódigo ( Forma 2 )

SI( condicion1 )    accion1SINO SI( condicion2 )    accion2SINO SI( condicion3 )    accion3    .    .              .SINO    acciondefecto

Figura 3.3 Estructura de Selección Doble en Cascada

Por ejemplo, la siguiente estructura de selección doble en cascada determina el signo de un número entre positivo, 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.5 Estructura de Selección Múltiple SEGUN

La estructura de selección múltiple SEGUN permite elegir una ruta de entre varias rutas posibles, en base al valor de una variable que actúa 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 acción correspondiente a dicha constante y se abandona la estructura.

En la Figura 3.4 se muestra el diagrama de flujo y el pseudocódigo de la estructura de selección múltiple.

                              Diagrama de Flujo Pseudocódigo

16

Page 17: Conceptos Básicos de Algoritmia Imprimir

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

Figura 3.4 Estructura de Selección Múltiple

Por ejemplo, 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, 2 para Verano, 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.6 Ejercicios

Ejercicio 1:- En una playa de estacionamiento cobran S/. 2.5 por hora o fracción. Diseñe un algoritmo que determine cuanto debe pagar un cliente por el estacionamiento de su vehículo, conociendo el tiempo de estacionamiento en horas y minutos.

Algoritmo 1

INICIO    // Declaración de variables       ENTERO horas, minutos    REAL pago    

    // Entrada de datos    LEER horas, minutos

    // Si hay alguna fracción 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

17

Page 18: Conceptos Básicos de Algoritmia Imprimir

    IMPRIMIR pagoFIN    

Algoritmo 2

INICIO    // Declaración de variables       ENTERO horas, minutos, horasPagar    REAL pago    

    // Entrada de datos    LEER horas, 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.5

    // Salida de resultados    IMPRIMIR pagoFIN

Ejercicio 2:- Diseñe un algoritmo que determine si ún número es o no es, par positivo.

Algoritmo

INICIO    // Declaración de variables       REAL numero    CADENA tipoNumero

    // Entrada de datos     LEER numero

    // Determina si el número es o no es, 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 tipoNumeroFIN

18