Hola a todos, hoy os dejo una serie de ejercicios de funciones de pseudocódigo, para que practiquéis su uso. Os recomiendo hacer estos ejercicios primero en papel, declarando las variables y hacer un seguimiento cuando lo terminéis de hacer para comprobar que hace lo que pide. Los ejercicios no tienen una única solución, el objetivo es que haga lo que pide y si se pide que se haga de una forma especifica hacerlo. Los ejercicios resueltos están en un spoiler resueltos en papel y PSeInt (por si los quieres guardar en un fichero).
¡Tenemos curso en udemy y tutellus!
También esta disponible en tutellus con una increíble oferta: ¡6€!
https://www.tutellus.com/tecnologia/desarrollo-web/iniciacion-a-la-programacion-con-pseint-29001?cupon=DDR
Aquí os dejo algunos posts anteriores para recordar algunos puntos por si lo necesitáis:
Curso Pseudocódigo con Pseint
En youtube tenemos un curso completo de Pseudocódigo con PseInt:
Si tienes alguna duda o quieres proponer alguna solución alternativa, deja un comentario en este post o mándanos un mensaje a administrador@discoduroderoer.es También dejare algunos comentarios para explicar que hace cada paso. Puedes ponerlos con //
Recuerda que debes escribir la función, el algoritmo principal y llamar la función en esta.
1) Escribe una función en pseudocódigo que devuelva el resultado de un número elevado a un exponente dado.
Spoiler Inside |
SelectShow> |
SubProceso resultado <- potencia ( base, exponente )
resultado<-base^exponente
FinSubProceso
Proceso ejercicio_funciones_1
Escribir "Introduce la base"
Leer base
Escribir "Introduce el exponente"
Leer exponente
resultado<-potencia(base, exponente)
Escribir resultado
FinProceso
|
2) Escribe una función en pseudocódigo que devuelva el término N (siendo N un número entero positivo) de la serie de Fibonacci, esta sigue la siguiente serie: 1, 1, 2, 3, 5, 8, 13, 21… y así sucesivamente. Date cuenta, que para obtener un numero, suma los dos números anteriores. Por ejemplo, si introducimos un 3, la función nos devuelve el 2.
Spoiler Inside |
SelectShow> |
SubProceso suma<- fibonacci ( posicion )
num1<-0
num2<-1
suma<-1
contador<-1
Mientras (contador<posicion)
suma<-num1+num2
num1<-num2
num2<-suma
contador<-contador+1
FinMientras
FinSubProceso
Proceso ejercicio_funciones_2
Leer posicion
resultado<-fibonacci(posicion)
Escribir resultado
FinProceso
|
3) Escribe una función en pseudocódigo que devuelva el área de un círculo dado su radio. Recuerda que para calcular el area, la formula es Π * r
2
Spoiler Inside |
SelectShow> |
SubProceso area <- area_circulo ( radio )
PI<-3.14
area<-PI*(radio^2)
FinSubProceso
Proceso ejercicio_funciones_3
Escribir "Escribe el radio"
leer radio
area<-area_circulo(radio)
Escribir area
FinProceso
|
4) Escribe una función en pseudocódigo que devuelva el factorial de un número N (siendo N un número entero positivo). Haz después un algoritmo principal que pida por teclado dos números y escriba en pantalla los factoriales de cada número comprendido entre los dos anteriores. El factorial de 5 es el resultado de 5*4*3*2*1
Spoiler Inside |
SelectShow> |
SubProceso suma <- factorial ( numero )
suma<-numero
Para contador<-numero-1 hasta 1 con paso -1
suma<-suma*contador
FinPara
FinSubProceso
Proceso ejercicio_funciones_5
escribir "Introduce un numero"
leer numero
resultado<-factorial(numero)
escribir resultado
FinProceso
|
5) Escribe una función en pseudocódigo que devuelva si un número dado es primo o no. Para que un numero sea primo solo es divisible entre 1 y sí mismo (por ejemplo, 13, 17, 19…). Utilizando la función, escribe un programa que escriba todos los números primos entre 1 y un número leído desde el teclado. Piensa que debe devolver la función.
Spoiler Inside |
SelectShow> |
SubProceso resultado<- primo ( cuenta_primos )
contador_divisores<-0
para divisor<-trunc(cuenta_primos^0.5) hasta 1 con paso -1
si (cuenta_primos MOD divisor=0) Entonces
contador_divisores<-contador_divisores+1 finSi Finpara Si (contador_divisores>=2) Entonces
resultado<-Falso
sino
resultado<-Verdadero
FinSi
FinSubProceso
Proceso ejercicio_funciones_5
Escribir "Introduce el limite"
Leer limite
Para cuenta_primos<-1 hasta limite Con Paso 1
Si(primo(cuenta_primos)=Verdadero) entonces
escribir cuenta_primos
FinSi
FinPara
FinProceso
|
6) Escribe una función en pseudocódigo que dado un número decimal (en base 10), entre 0 y 15, devuelva el valor equivalente en sistema de numeración binario(en este caso, un numero binario de 4 dígitos). Os aconsejo que los dígitos binarios sean una cadena, para que se puedan concatenar entre sí. Por ejemplo, si introducimos un 7, nos devuelva 0111. Si se introduce un numero menos que 0 o mayor que 16, no mostrara un mensaje de error.
Spoiler Inside |
SelectShow> |
SubProceso resultado <- DecAbin ( numero )
contador<-1
Mientras contador<5 Hacer
si numero mod 2= 0 Entonces
digito<-"0"
Sino
digito<-"1"
FinSi
numero<-trunc (numero/2)
resultado<-digito+resultado
contador<-contador+1 FinMientras FinSubProceso Proceso ejercicio_funciones_6 Escribir "Introduce un numero" Leer numero si (numero>=0 y numero<16) Entonces
resultado<-DecAbin(numero)
escribir resultado
Sino
Escribir "Introduce un numero entre 0 y 15"
FinSi
FinProceso
|
7) Escribe una función en pseudocódigo llamada ConversionMoneda (…) que permita convertir una cantidad de dinero dada en dolares, libras o yenes a Euros. Estas son las equivalencias aproximadas:
- 1 libra=1,22 euros
- 1 dolar=0,75 euros
- 1 yen=0.009 euros
Spoiler Inside |
SelectShow> |
SubProceso total <- conversor ( moneda, cantidad )
si (moneda="libra") Entonces
total<-cantidad*1.22
FinSi
si (moneda="dolar") Entonces
total<-cantidad*0.75
FinSi
si (moneda="yen") Entonces
total<-cantidad*0.009
FinSi
FinSubProceso
Proceso ejercicio_funciones_7
//NOTA: las siguientes 2 lineas van en una linea
Escribir "Introduce la moneda que quieras pasar a euros:
libra,dolar o yen"
Leer moneda
Escribir "Introduce una cantidad"
Leer cantidad
total<-conversor(moneda, cantidad)
Escribir total
FinProceso
|
8) Los empleados de una fabrica trabajan en dos turnos, Diurno y Nocturno. Se desea calcular el jornal diario de acuerdo a con las siguientes reglas:
- La tarifa de las horas diurnas es de 10 €
- La tarifa de las horas nocturnas es de 13,5 €
- En caso de ser festivo, la tarifa se incrementa en un 10% en caso de turno diurno y en un 15% para el nocturno.
Escribe una función en pseudocódigo llamada jornal(…) que tome como parámetros el nº de horas, el turno y el tipo de día (“Festivo”, “Laborable”) y nos devuelva el sueldo a cobrar. Escribe también un algoritmo principal que pida el nombre del trabajador, el día de la semana, turno y nº de horas trabajadas, nos escriba el sueldo a cobrar usando la función anterior.
Ten en cuenta, que en la función nos pide el tipo de día pero en el algoritmo le pedimos al día es decir, que debemos saber si el dia que introduce el usuario es festivo o no.
Spoiler Inside |
SelectShow> |
SubProceso sueldo <- jornal ( n_horas, turno, tipo_dia )
si (turno="diurno" y tipo_dia="laborable") Entonces
sueldo<-n_horas*10
Sino
si (turno="diurno" y tipo_dia="festivo") Entonces
sueldo<-n_horas*(10*1.1)
FinSi
FinSi
si (turno="nocturno" y tipo_dia="laborable") Entonces
sueldo<-n_horas*13.5
Sino
si (turno="nocturno" y tipo_dia="festivo") Entonces
sueldo<-n_horas*(13.5*1.1)
FinSi
FinSi
FinSubProceso
Proceso ejercicio_8
Escribir "Introduce el nombre del trabajador"
Leer trabajador
Escribir "Introduce el numero de horas"
Leer n_horas
Escribir "Introduce en turno: diurno o nocturno"
Leer turno
Escribir "Introduce el dia"
Leer dia
Segun dia Hacer
"lunes":
tipo_dia<-"laborable"
"martes":
tipo_dia<-"laborable"
"miercoles":
tipo_dia<-"laborable"
"jueves":
tipo_dia<-"laborable"
"viernes":
tipo_dia<-"laborable"
"sabado":
tipo_dia<-"festivo"
"domingo":
tipo_dia<-"festivo"
FinSegun
sueldo<-jornal(n_horas, turno, tipo_dia)
Escribir "El trabajador " trabajador " cobra " sueldo " euros"
FinProceso
|
9) Algoritmo que dado un número entero (este numero no podra ser menor o igual que 0), determine el número de cifras que tiene. Por ejemplo, si introduzco un 253, me devuelva un 3.
Spoiler Inside |
SelectShow> |
SubProceso cifras <- Cuenta_cifras ( numero )
numero_auxiliar<-numero
cifras<-0 Mientras (numero_auxiliar>0) Hacer
numero_auxiliar<-trunc(numero_auxiliar/10)
cifras<-cifras+1
FinMientras
FinSubProceso
Proceso ejercicio_funciones_9
Escribir "Escribe un numero"
Leer numero
si (numero<=0) Entonces
Escribir "Introduce un numero mayor que 0"
sino
numero_cifras<-Cuenta_cifras(numero)
Escribir "El numero " numero " tiene " numero_cifras " cifras"
FinSi
FinProceso
|
10) Escribe una función en pseudocódigo que dibuje una pirámide invertida en pantalla como la de la figura. La altura se pasará como parámetro. Si se pasa una altura =0 o negativa, la función devolverá –1; en caso contrario devolverá 0 (éxito).
Ejemplo para altura = 5
*********
*******
*****
***
*
Spoiler Inside |
SelectShow> |
SubProceso cod<-pir_inver(altura)
numast<-3+2*(altura-2)
nespacios<-numast
espacios=""
si altura=0 Entonces
cod<- (-1)
Sino
Para i<-numast hasta 1 con paso -2
numast<-i
para k<-0 hasta numast-nespacios Con Paso 1
espacios<-espacios+" "
FinPara
Escribir Sin Saltar espacios
para j<-1 hasta numast con paso 1
Escribir Sin Saltar "*"
FinPara
nespacios<-nespacios-2
Escribir ""
FinPara
cod<-0
FinSi
FinSubProceso
Proceso ejercicio_10
Escribir "Introduce la altura de la pirámide invertida"
leer altura
resultado<-pir_inver(altura)
si resultado=-1 entonces
Escribir "ha introducido una altura 0"
Sino
Escribir ""
Escribir "introducion de datos correcta"
FinSi
FinProceso
|
11) Crear un subproceso que devuelva la longitud de una cadena.
Spoiler Inside |
SelectShow> |
SubProceso long <- longitudCadena ( frase )
long<-Longitud(frase)
Fin SubProceso
Proceso sin_titulo
Escribir "La cadena tiene ",longitudCadena("Holamundo")," caracteres"
FinProceso
|
12) Crear un subproceso que devuelva el factorial de un numero.
Spoiler Inside |
SelectShow> |
SubProceso resultado <- factorial (numero_factorial)
resultado<-numero_factorial
Para i<-numero_factorial-1 Hasta 2 Con Paso -1 Hacer
resultado<-resultado*i
Fin Para
Fin SubProceso
Proceso sin_titulo
escribir factorial(5)
FinProceso
|
13) Crear un subproceso que muestre un arreglo pasado por parametro.
Spoiler Inside |
SelectShow> |
//Muestra un arreglo pasado por parametro
Funcion mostrarArreglo (arreglo, tamanioArreglo)
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
escribir arreglo(i)
Fin Para
Fin Funcion
Algoritmo Ejercicio_DDR_subprocesos_5
//Creo un arreglo
dimension arregloEjemplo(5)
//Relleno el arreglo con los numeros del 1 al 5
Para i<-0 Hasta 4 Con Paso 1 Hacer
arregloEjemplo(i) <- i+1
Fin Para
//Muestra el arreglo
mostrarArreglo(arregloEjemplo, 5)
FinAlgoritmo
|
14) Crear un subproceso rellene un array con números aleatorios, pasandole un arreglo y los números entre los que estarán los valores.
Spoiler Inside |
SelectShow> |
//Rellena un arreglo con los valores pasados por parametro
Funcion rellenarArreglo ( arreglo, tamanioArreglo, valorInicial, valorFinal )
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
//Genera un aleatorio
arreglo(i) <- Aleatorio(valorInicial,valorFinal)
Fin Para
Fin Funcion
//Muestra un arreglo pasado por parametro
Funcion mostrarArreglo (arreglo, tamanioArreglo)
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
escribir arreglo(i)
Fin Para
Fin Funcion
Algoritmo Ejercicio_DDR_subprocesos_6
//Creo un arreglo
dimension arregloEjemplo(5)
//Relleno el arreglo aleatoriamente
rellenarArreglo(arregloEjemplo, 5, 10,1)
//muestro el arreglo
mostrarArreglo(arregloEjemplo, 5)
FinAlgoritmo
|
15) Crear un subproceso que devuelva la suma de un arreglo pasado por parámetro.
Spoiler Inside |
SelectShow> |
//Devuelve la suma de un arreglo
Funcion suma <- sumaArreglo (arreglo, tamanioArreglo)
//creo una variable suma vacia
suma <- 0
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
suma <- suma + arreglo(i)
Fin Para
//Cuando termina el subproceso devuelve el valor de suma
Fin Funcion
//Rellena un arreglo con los valores pasados por parametro
Funcion rellenarArreglo ( arreglo Por Referencia, tamanioArreglo, valorInicial, valorFinal )
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
//Genera un aleatorio
arreglo(i) <- Aleatorio(valorInicial,valorFinal)
Fin Para
Fin Funcion
//Muestra un arreglo pasado por parametro
Funcion mostrarArreglo (arreglo, tamanioArreglo)
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
escribir arreglo(i)
Fin Para
Fin Funcion
Algoritmo Ejercicio_DDR_subproceso_7
//creo el arreglo
dimension arregloEjemplo(5)
//Relleno el arreglo aleatoriamente
rellenarArreglo(arregloEjemplo, 5, 10,1)
//muestro el arreglo
mostrarArreglo(arregloEjemplo, 5)
//Muestro la suma
escribir "La suma es: ", sumaArreglo(arregloEjemplo, 5)
FinAlgoritmo
|
16) Crear un subproceso que devuelva la media de un arreglo pasado por parámetro.
Spoiler Inside |
SelectShow> |
//Devuelve la media de un arreglo
Funcion media <- mediaArreglo ( arreglo, tamanioArreglo )
//llamo a la funcion anterior de suma y divido por el numero de elementos
media <- sumaArreglo(arreglo, 5) / tamanioArreglo
Fin Funcion
//Rellena un arreglo con los valores pasados por parametro
Funcion rellenarArreglo ( arreglo Por Referencia, tamanioArreglo, valorInicial, valorFinal )
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
//Genera un aleatorio
arreglo(i) <- Aleatorio(valorInicial,valorFinal)
Fin Para
Fin Funcion
//Muestra un arreglo pasado por parametro
Funcion mostrarArreglo (arreglo, tamanioArreglo)
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
escribir arreglo(i)
Fin Para
Fin Funcion
//Devuelve la suma de un arreglo
Funcion suma <- sumaArreglo (arreglo, tamanioArreglo)
//creo una variable suma vacia
suma <- 0
Para i<-0 Hasta tamanioArreglo-1 Con Paso 1 Hacer
suma <- suma + arreglo(i)
Fin Para
//Cuando termina el subproceso devuelve el valor de suma
Fin Funcion
Algoritmo Ejercicio_DDR_subproceso_7
//creo el arreglo
dimension arregloEjemplo(5)
//Relleno el arreglo aleatoriamente
rellenarArreglo(arregloEjemplo, 5, 10,1)
//muestro el arreglo
mostrarArreglo(arregloEjemplo, 5)
//Muestro la media
escribir "La media es: ", mediaArreglo(arregloEjemplo, 5)
FinAlgoritmo
|
17) Vamos a realizar el pequeño juego de adivinar un número. Lo tendremos puesto en una variable el valor que nosotros queramos.
El numero sera entre 1 y 100.
Tendremos que hacer los siguientes subprocesos:
- leerNumero(): Pide un numero y hasta que el usuario no escribe un valor entre 1 y 100, vuelve a pedir el valor.
- comprobarValor(numeroUsuario, numeroCorrecto): comprueba si el numero es correcto, este devuelve un numero que puede ser: 0: los dos numeros son iguales 1: el numeroUsuario es mayor que el numeroCorrecto -1: el numeroUsuario es menor que el numeroCorrecto
Spoiler Inside |
SelectShow> |
//Pide un numero al usuario
Funcion numeroUsuario <- leerNumero ()
Repetir
Escribir "Dame un numero entre 1 y 100"
leer numeroUsuario
Hasta Que numeroUsuario>=1 Y numeroUsuario<=100
Fin Funcion
//Comprueba el numero y devuelve un codigo
//0: los dos numeros son iguales
//1: el numeroUsuario es mayor que el numeroCorrecto
//-1: el numeroUsuario es menor que el numeroCorrecto
Funcion codigo <- comprobarNumero ( numeroCorrecto, numeroUsuario )
Si numeroUsuario = numeroCorrecto Entonces
codigo <- 0
Sino
Si numeroUsuario < numeroCorrecto Entonces
codigo <- -1
Sino
codigo <- 1
Fin Si
Fin Si
Fin Funcion
Algoritmo Ejercicio_DDR_subprocesos_9
numeroCorrecto <- 43
salir <- Falso
//Hasta que no acierte no salimos
Mientras no salir Hacer
//leer el numero del usuario
numeroUsuario <- leerNumero()
//Comprobar el numero del usuario
Segun comprobarNumero(numeroCorrecto, numeroUsuario) Hacer
0:
//Salimos
Escribir "Has acertado, felicidades"
salir <- verdadero
1:
Escribir "El numero que has introducido es mayor que el numero buscado"
-1:
Escribir "El numero que has introducido es menor que el numero buscado"
Fin Segun
Fin Mientras
FinAlgoritmo
|
Espero que os sea de ayuda.
en el ejercicio 6, donde pone menor o igual a zero y mayor o igual a 16, no puede ser un y porque no hay dos numeros mayores e iguales tiene que ser una o
La linea es esta
si (numero>=0 y numero=0 o numero<16) Entonces
No, dice un numero mayor o igual que 0 y menor que 16, solo acepta numeros entre este rango.
HACER UN ALGORITMO QUE ACEPTE 10 NOMBRES INTRODUCIDOS POR TECLADO Y QUE LOS NOMBRES SALGAN IMPRESO O POR PANTALLA O DE FORMA INVERTIDA.
hola me puedes ayudar con estos ejercicios
http://www.taringa.net/comunidades/taringarespuestas/9319909/Hola-alguien-me-puede-ayudar-con-estos-ejercicios-en-PSeIn.html
hacer un algoritmo que dividamos un número de 5digitos entre el valor de la posición más alta y lo redondiemos a cero decimales,el resultado será el valor del primer dígito del numero
cierto numero termina en 2. cambiando de lugar esta cifra y poniendola al principio, el numero se duplica. ¿cual es dicho numero?
me ayudan con ese ejercicio por favor
Dado que se conocen ciertos síntomas que sugieren enfermedades, construir un programa que permita el ingreso un síntoma y responda con el literal de la enfermedad que le corresponde. ¿como lo puedo hacer con netbeans?
Quien me ayuda con un algoritmo que me traduzca números de español a ingles, del 1 al 10 porfa!!
Escriba un peseudocodigo que reciba una cadena de caracteres y la imprima en
código binario