Ejercicios Pseudocodigo
-
Upload
hugo-catrileo-goler -
Category
Documents
-
view
216 -
download
3
description
Transcript of Ejercicios Pseudocodigo
Ejercicios
Pseudocdigo Eduardo Wong
Ejercicios. Parte I
Atencin: Este documento contiene comentarios.
* Preparar un pseudocdigo que solicite el nombre y el ao de nacimiento y calcule la edad del usuario.
Salidas: Mostrar el nombre y la edad
Entradas: Nombre y ao de nacimiento
Necesitaremos, entonces, solicitar al usuario dos variables. La primera alfanumrica NOMBRE, y la segunda numrica AO-NACIMIENTO. Las variables se pueden nombrar de cualquier forma, pero es mejor nombrarlas de modo que se pueda comprender a simple vista que tipo de dato almacena.
La edad se calcular restando el ao actual del ao de nacimiento. Aqu aparece una variable calculada EDAD. El ao actual lo vamos a definir nosotros en la variable AO-ACTUAL.
El pseudocdigo es:
inicio
leer NOMBRE
leer AO-NACIMIENTO
AO-ACTUAL ( 2008
EDAD ( AO-ACTUAL - AO-NACIMIENTO
imprimir NOMBRE
imprimir EDAD
fin
Observa que este pseudocdigo tiene una estructura secuencial.
* Dado un nmero determinar si es positivo o negativo.
Entrada: Un nmero, lo llamaremos NUMERO
Salida: Mensaje indicando si el nmero es positivo, negativo o cero
Un nmero es negativo, si es menor que cero, y positivo en caso contrario. Utilizaremos en operador de relacin NUMERO2 entonces
imprimir " El primer nmero es mayor"
si-no
Si NUMERO1 < NUMERO2 entonces
imprimir "El segundo nmero es mayor"
si-no
imprimir "Los nmeros son iguales"
fin-si
fin-sifin
Tener en cuenta que aqu utilizamos una estructura de seleccin dentro de otra. Esto es porque aunque determinemos que el primero no es mayor; no tenemos la certeza de sea menor o igual. Por eso debemos hacer otra pregunta, otro Si....entonces.
Si no hubiramos tenido en cuenta el caso de que los nmeros no sean iguales; el pseudocdigo quedara as:
inicio
leer NUMERO1, NUMERO2
Si NUMERO1 > NUMERO2 entonces
imprimir "El primer nmero es mayor al segundo"
si-no
imprimir "El primer nmero es menor al segundo"
fin-sifin
Pero cuidado, este pseudocdigo no funciona cuando los nmeros son iguales, se muestra a modo ilustrativo!
* Preparar un pseudocdigo que calcule la media de tres nmeros.La media una serie de nmeros es igual a la suma de todos ellos divido la cantidad. Para hallar la media de tres nmeros debemos, entonces, sumar los tres y dividir el resultado por la cantidad de nmeros sumados (que es tres en este caso).
inicio
leer N1, N2, N3
suma ( N1 + N2 + N3
promedio ( suma / 3
Imprimir El promedio es:, promedio
fin
* Disear un pseudocdigo para resolver una ecuacin de segundo grado.
La formula para la resolucin de una ecuacin de segundo grado es:
Debemos tener como entrada, los nmeros a, b, y c para poder calcular los valores de x1 y x2. Debemos prestar atencin a la raz cuadrada; si ella es negativa no podremos calcular la solucin (es imaginaria) y si intentamos hacerlo la computadora interrumpir el programa y mostrar un mensaje error. Para evitar esto, calculemos primero el valor de los elementos que se hallan en la raz cuadrada, y seguir con los clculos siguientes si este valor es positivo.
El valor de b2 4 x a x c se llama discriminante. Siempre que este valor no sea negativo calcularemos x1 y x2. Para hallar la raz cuadrada de un nmero, lo elevamos a la potencia .
inicio
leer a, b, c
discriminante ( b * b (4*a*c)
Si discriminante >= 0 entonces
x1 ( (-b + (discriminante) ^ (1/2) ) / (2 * a)
x2 ( (-b - (discriminante) ^ (1/2) ) / (2 * a)
imprimir Las soluciones son, x1, x2
si-no
imprimir Las soluciones no son reales
fin-si
fin
Estructuras repetitivas
* Leer una serie de nmero que deben finalizar con 9999. Calcular e imprimir el promedio de los nmeros ingresados.
Inicio
c (0
imprimir "-9999 = Fin"
Leer N
mientras N -9999
c ( c + 1
suma ( suma + N
leer N
fin mientras
si c = 0 entonces promedio ( 0
si-no
promedio ( suma / c
fin-si
imprimir "El promedio de los nmeros ingresados es: "; promedio
finNotemos el funcionamiento de la estructura mientras. Necesitamos leer el nmero para la primera vez, luego si ese nmero no es la condicin de fin, se realizan las lecturas hasta que se ingrese el numero 9999.
La pregunta de si c = 0 es necesaria ya que pude darse el caso de que el primer nmero ingresado 9999, si esto ocurre, entonces no se ejecuta el cdigo de la estructura mientras. Por lo tanto el valor de c = 0 y al intentar calcular el promedio, se tendra una divisin por cero que no es posible.
* Leer un nmero H, entero positivo, e imprimir todos los pares entre 1 y H inclusive.
El ejercicio impone dos condiciones de validacin para el nmero ingresado. La primera es que debe ser un entero y la segunda que sea positivo.
El control para los nmeros positivos se hace controlando que sea mayor que cero.
El control para los nmeros enteros se realiza as:
Supongamos que el nmero ingresado sea 23,14. Este nmero contiene una parte entera y otra decimal. Podemos conocer la parte entera de ese nmero con la funcin entero( ).
Si la parte entera de ese nmero (que se extrae con entero ( ) ) es igual a nmero ingresado quiere decir que el nmero es entero, de los contrario, ser un nmero no entero.
As:
Si entero(nmero) = nmero entonces
El nmero es entero
Si-no
El nmero no es entero
Fin-si
En el caso del nmero 23,14 ; la parte entera es 23 y 23 no es igual a 23,14. Luego el nmero no es entero.
Inicio
leer H
Mientras entero(H) H H < 0
imprimir "El nmero debe ser un entero positivo"
leer H
fin mientras
imprimir "Los nmeros pares entre 1 y"; H; "son: "
Desde I (2 hasta h incremento 2
imprimir I
fin-desde
finMientras el nmero ingresado sea negativo o fraccionario, debemos seguir pidiendo un nmero correcto. El ciclo desde...fin desde va desde 2 con incremento 2 porque esa es la manera de recorrer los numeras pares. Si queremos nmeros impares el ciclo ira desde 1 hasta H incremento 2.
* Leer un nmero entero positivo menor que 35 y calcular su factorial.
El factorial del nmero N se calcula as: 1 x*2 * 3 * 4 * ......* N-1, * N
As el factorial de 5 = 1*2*3*4*5 = 120
No existen factoriales de nmeros negativos y el factorial de 0 = 1.
El factorial se simboliza con el smbolo !, 5! = 120.
Notemos que la solucin de problema consiste en acumular los productos desde 1 hasta el nmero ingresado. Este acumulador que al final contendr el valor del factorial de N, debe ser inicializado en 1, ya que si lo hacemos en cero, el valor final ser cero ya que cero por cualquier nmero es 0. Llamaremos producto a este acumulador.
inicio
leer N
Mientras N >= 35 N < 0
imprimir "El numero debe ser positivo y menor que 35 !!"
leer N
fin-mientras
producto ( 1
desde I ( 1 hasta N
producto ( producto * I
fin-desde
imprimir "El factorial de"; N; "es: "; productofin
* Escribir un pseudocdigo que imprima los primeros N trminos de la sucesin de Fibonacci.
La serie de Fibonacci es:
0,1,1,2,3,5,8,13,21
Se inicia en 0, luego el uno, el siguiente termino ser la suma de los dos anteriores:
0, 1 , 0+1 = 0, 1, 1
luego
0,1,1,1+1 = 0, 1, 1, 2
y as sucesivamente
0,1,1,2, 2+1 = 0, 1, 1, 2, 3
Los dos primeros trminos (0 y1) lo introduciremos con dos variables. En cada iteracin sumaremos los dos trminos anteriores y reasignaremos los valores de las variables:
Inicio
A ( 0
B ( 1
Desde I (1 hasta N
Imprimir A
F ( A + B
A (B
B (F
Fin-desde
Fin
* Escribir un pseudocdigo que determine si un nmero ingresado es primo
Un nmero es primo cuando es divisible solamente por s mismo y por 1. Por lo tanto, para averiguar si el nmero 567 es primo, debemos dividirlo por todos los nmeros comprendidos entre el 2 y el 566. Si alguna en algunas de estas divisiones el resto es cero, quiere decir que es divisible por otro nmero (que no es 1 ni s mismo), por lo tanto no es primo. Recordemos que para obtener el resto de la divisin entre dos nmeros, utilizamos la instruccin MODULO o MOD.
Ahora bien, tomemos el numero 2345 como ejemplo. Deseamos averiguar si este nmero es primo o no. Sigamos el procedimiento de obtener el resto de la divisin, dividiendo 2345 por los nmeros comprendidos entre 2 y 2344:
2345 mod 2 = 1
2345 mod 3 = 2
2345 mod 4 = 1
2345 mod 5 = 0
2345 mod 6 = 5
Encontramos que el resto de dividir el nmero con 5 es cero, por lo tanto, esto es ms que suficiente para afirmar con toda certeza que el nmero no es primo. Ya no tiene caso realizar la operacin siguiente (2345 mod 6 ni mucho menos llegar hasta 2345 mod 2344).
Para calcular el modulo de las divisiones utilizaremos un ciclo desde...fin desde que comenzar en 2 y se incrementar hasta el 2344 (recordemos la definicin de nmero primo). Llamaremos NUMERO al nmero que queremos saber si es primo o no. Cuando encontremos un caso en el que el modulo sea cero, forzamos la salida del ciclo (ya que no tiene sentido seguir calculando los dems restos). Nuestro ciclo puede salir por dos caminos: el comn y corriente, cuando se recorre todos los nmeros desde 2 hasta NUMERO 1 , definido en el ciclo y el otro cuando forzamos la salida. Si la salida fue forzada, entonces el numero no es primo porque encontramos uno que lo divide exactamente. Utilizaremos una bandera (switch o interruptor para averiguar si el ciclo culmin su recorrido de forma natural o fue forzado a terminar:
Inicio
Bandera ( 0
leer NUMERO
desde I ( 2 hasta NUMERO 1
Si NUMERO mod I = 0 entonces
Bandera ( 1
I ( NUMERO - 1
fin-si
fin-desde
Si bandera = 1 entonces
Imprimir El nmero no es primo
si-no
Imprimir El nmero es primo
fin-si
Fin
Este algoritmo puede ser retocado para volverlo ms eficiente. Consulta el tema con tu profesor.
* Escribir un pseudocdigo que lea tres nmeros y los imprima de forma ascendente.El problema consiste en imprimir los tres nmeros ingresados de manera ascendente, es decir, de menos a mayor. Por ejemplo si se ingresan 189, 0 , 26, debemos imprimir :
0, 26, 189
Podemos comenzar buscando el menor de los tres, una vez que identifiquemos el menor de los tres, lo imprimimos. Luego averiguamos quien de los restantes es menor y lo imprimimos en segundo lugar, as sobra el tercer nmero que lo imprimimos al final; supongamos que dados los numeraos A, B y C; A sea menor:
Si A