---------------------- Guía No.2 - algoritmos condicionales ----------------------------
Apoyo audio visual:
https://www.youtube.com/watch?v=3o3H5bL88ac
https://www.youtube.com/watch?v=ALcrP0e80Ec
https://www.youtube.com/watch?v=jKmQ8RpioIs
Si tiene problemas con los comandos matemáticos están disponibles en:
ayuda>>PSeudoCodigo>>Expresiones>>Funciones
Dicho esto, vamos con condicionales, como podrá notar, muchas veces uno quiere hacer un
programa que haga una u otra cosa según la información ingresada, para esto, hacemos
comprobaciones o condiciones, veamos un ejemplo sencillo.
Proceso Ej_VA
// Nota: Estas barras sirven para comentar el código.
// todo lo que escriba después de ellas el programa lo ignora
Escribir "Ingrese un numero"
Leer N1
Si N1 < 0
// Si el numero es menor que 0 se multiplica por -1
N1 = -1 * N1
FinSi
Escribir "El valor absoluto del numero es: ", N1
FinProceso
|
Como se puede ver podemos hacer que el programa responda de cualquier forma
a un evento que que ocurra. En el si podemos usar los operadores lógicos
los básicos son =, >, <, >=, <= y <> podemos verlos en
ayuda>>PSeudoCodigo>>Expresiones>>Operadores
Todos ellos comprueban algo y devuelve Verdadero-falso o true-false. si devuelve true
se ejecuta la condición y si devuelve false no se ejecuta o se ejecuta el sino, ejemplo
Proceso Ej_NP
Escribir "Ingrese un numero"
Leer N1
R1 = N1 % 2 // Si el número es par regresa 0 y si no regresa 1
// Nota 1: el % es el mismo mod se puede escribir también como N1 mod 2
// Nota 2: el mod devuelve el residuo de una división por lo que si el mod es 0 la
// división es exacta
Si R1 = 0
Escribir "El numero es par"
Sino // si regresa false ejecuta lo siguiente
Escribir "El numero es impar"
Finsi
FinProceso
|
También podemos meter una condición dentro de otra, a eso se le llama anidar,
más específicamente condiciones anidadas.
Proceso Ej_NC
Escribir "Ingrese un numero"
Leer N1
Si N1 < 0
Escribir "El numero es negativo"
Sino
//Podemos agregar todas las condiciones que queramos dentro de otra
Si N1 = 0
Escribir "El numero es neutro"
Sino
Escribir "El numero es positivo"
FinSi
Finsi
FinProceso
|
Podemos agregar más de una condición con el y/o, esto sigue la respuesta intuitiva
si colocamos "o" cuando una sea true pasara y si colocamos "y" solo en caso de que
ambas sean true pasara, ejemplo
Proceso Ej_C
Escribir "Ingrese un numero"
Leer N1
// Nota: el trunc quita la parte decimal de un número y deja solo la entera
Si N1 <> trunc(N1) y N1 > 0
Escribir "El numero es un decimal positivo"
Sino
Si N1 > 0
Escribir "El numero es positivo"
FinSi
FinSi
Si N1 = trunc(N1) o N1 < 0
Escribir "El numero es entero y/o negativo"
FinSI
FinProceso
|
Bien pongamos algunos ejercicios, para practicar, la idea es que puede hacerlos como
quiera lo importante es que funcionen.
Ejercicios propuestos:
Los ejercicios están ordenados según su dificultad, realice ejercicios hasta que se sienta cómodo codificando, e intente hacer los últimos.
1. Desarrollar un diagrama que permita determinar si un valor cualquiera es positivo o negativo
2. Desarrollar un diagrama que permita determinar sin un valor cualquiera es par o impar
3. Desarrolle un diagrama que permita determinar si un valor N es múltiplo de un Valor Z
4. Desarrollar un diagrama que permita determinar si un valor N (cualquiera), es divisor común de otros dos valores X y Y (que se ingresan por teclado)
5. Diseñar un diagrama que lea un valor N y determine si es múltiplo común de X y Z donde X y Z también se ingresan por teclado
6. Diseñar un diagrama que permita leer dos valores V1 y V2 y determine cuál es el mayor y cuál es el menor o si son iguales
7. Diseñe un diagrama que permita leer dos números N1 y N2 e indicar si uno de los dos divide exactamente al otro.
8. Crear un programa que reciba 2 números, los sume, reste, multiplique o divida (el usuario escoge).
9. Desarrollar un diagrama que permita el ingreso de dos valores X1 y X2 donde indique si el resultado de dividir la suma de los números entre la resta de X1 – X2 es exacta o no.
10. Desarrollar un diagrama que permita el ingreso de 3 números Num1, Num2, Num3 e indicar si la suma de los 3 números es par, impar o neutra.
11. Desarrollar un diagrama que permita leer 3 valores diferentes e indique cual es el mayor de ellos, el menor o si son iguales.
12. Desarrollar un diagrama que permita leer 3 valores X1, X2, X3 e indicar si alguno de ellos divide a los otros dos exactamente.
13. Diseñar un diagrama que permita emitir la factura correspondiente a una compra de un artículo del cual se adquiere una o varias unidades y se conoce su precio antes de IVA (iva igual al 16%), y si el precio bruto (precio de venta más IVA) es mayor de $500.000.oo se debe realizar un descuento del 15%.
14. Desarrolle un diagrama que permita determinar la nota minima que se debe sacar en el examen final del curso de acuerdo a las condiciones 75% (las 3 primeras notas) y 25%(nota 4), esta nota debe estar representada tanto en puntos y en nota.
Recordar que hay 4 notas y una nota final, y se dividen los puntos así:
Nota 1: 25
Nota 2: 100
Nota 3: 125
Nota 4: 125
Examen o Nota final: 125
La nota del examen podrá ser desde 0 puntos a 5 puntos.
Recordar que hay 4 notas y una nota final, y se dividen los puntos así:
Nota 1: 25
Nota 2: 100
Nota 3: 125
Nota 4: 125
Examen o Nota final: 125
La nota del examen podrá ser desde 0 puntos a 5 puntos.
15. Una fábrica de tornillos hace controles de calidad tomando una muestra del 10%
de los tornillos por cada lote de tornillos que sacan, dependiendo de la calidad
de los tornillos se harán descuentos para venderlos, si el porcentaje de tornillos
malos es menor al 5% se venderá al 100% del precio del lote, si el porcentaje esta
entre el 5% y 10% se hará un descuento del 10% al precio del lote, si el porcentaje
de tornillos dañados es del 10 al 15% al descuento original se le restará el
5% + 10000 pesos del precio del lote, si el porcentaje es del 15 al 30%, se hará un
descuento del 20% y se hará un llamado de atención a las personas que hicieron el lote,
si el porcentaje de tornillos dañados esta entre el 30 y 50% se aplicará el descuento
del 10% a 15% + el porcentaje de tornillos dañados dividido en 2, y se diezmara
el grupo que hizo el lote, si el porcentaje supera el 50% el lote no se venderá y
se desintegrará el grupo que realizó el lote, con posible despido del total de sus
integrantes (supongo que es una empresa romana :P).
Realizar un algoritmo que reciba el precio del lote de los tornillos, el numero de
tornillos por lote, y el número de tornillos dañados y muestre el precio del lote
de tornillos.
// XD lo deje bien enredado para ver si pueden jeje.
16. Hacer un algoritmo que lea un año y diga si es bisiesto o no.
Un año es bisiesto si es divisible entre 4, a menos que sea divisible entre 100.
Sin embargo, si un año es divisible entre 100 y además es divisible entre 400,
también resulta bisiesto. Obviamente, esto elimina los años finiseculares
(últimos de cada siglo, que ha de terminar en 00) divisibles sólo entre 4 y
entre 100.
17. Desarrollar un diagrama de flujo que permita determinar el tiempo un segundo después de un tiempo ingresado en horas:minutos:segundos. Ejemplo 4:59:59 // 5:00:00.
18. Desarrollar un diagrama de flujo que permita determinar la fecha un día después a un fecha ingresada (tenga en cuenta meses de 30, 31, 28 días, cambio de año y el año bisiesto, ejemplo 31-12-2004 el día siguiente será 1-1-2005).