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
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.
Escribir un método que pida al usuario que introduzca caracteres por teclado y que devuelva al programa principal el número de letras, el número de dígitos y el número de otros signos introducidos
Hacer un algoritmo que nos muestre la cuenta de los números que son múltiplos de 2 o de 3 que hay entre 1 y 150
toma tu like perra
Hola necesitó un programa que lea un numero entero de tres diguitos y determinar si al menos dos de sus tres dígitos son iguales
Lo necesito en visual básica c++
hola
necesito que me ayuden
tengo que construir una función en pseudocódigo que cumpla con lo siguiente :
función que reciba dos valores enteros, entregue o devuelva la suma y el producto del ultimo dígito de cada numero.
pueden por favor ayudarme . muchas gracias
hola alguien que me ayude con esta tarea en pseint
Para los siguientes enunciados, desarrolle el algoritmo correspondiente, aplicando los conceptos de estructuras de
control, subprogramas y arreglos:
a) Encuentre el mayor y el menor elemento de un arreglo de caracteres.
b) Ingrese en un arreglo N números enteros positivos y muéstrelos por pantalla. Luego, si hay números repetidos,
debe eliminarse del arreglo y dejar sólo uno de cada número e imprimir nuevamente los datos.
c) Se tienen dos arreglos ordenados y se desea unirlos en un tercero, pero manteniendo los datos ordenados.
d) Dados dos arreglos numéricos A y B, de N1 y N2 elementos respectivamente, guarde en un tercer arreglo C, todos
los números que estén en A, pero no están en B.
e) La moda de un conjunto de datos es el elemento que más se repite. Encuentre la moda de elementos almacenados
en un arreglo.
f) Calcule la mediana de un conjunto de datos. La mediana de un arreglo ordenado es el elemento central. Si el
número de elementos es impar existe un único elemento ubicado en el centro del arreglo (el elemento que se
encuentra en la posición n/2 + 1). Si el número de elementos del arreglo es par, existen dos elementos centrales
(elementos que se encuentran en las posiciones n/2 y n/2 + 1), la mediana estará dada por el promedio de ambos.
g) Escriba una función que convierta una cadena de caracteres a mayúsculas y otra función que convierta una
cadena de caracteres a minúsculas.
h) Escriba una función que permita eliminar de un arreglo de números enteros, la n-ésima ocurrencia de un número
dado, si es que existe.
i) Escriba una función que permita buscar un número dado en un arreglo y muestre todas las posiciones en las
cuales se encuentra dicho número.
j) Escribir un algoritmo que permita leer 3 números enteros positivos: a, b y n (n>a, n>b) y que almacene el valor
de cada término en una posición de un arreglo. También debe calcular el valor de la sumatoria:
1
−
+
2
+
+ 2
3
−
+ 3
4
+ ⋯ +
+
+ 1
realiza un algorismo que me diga el valor apagar de tres camisetas con descuento del 10%,15%y20% repetivamente
porfa es para mañana
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
ME PUEDEN AYUDAR A REALIZARLO EN DEVC++
Me puede ayudar en eso plis:
Realizar un menú de opciones que permita realizar las operaciones básicas con los números ingresados en binario. Los números debe ser ingresados en binario y realizar su respectiva conversión a decimal para corrobar su resultado.
1. suma
2. resta
3. multiplicación
4. división
5. salir