Funciones y Subprocesos en PseInt
Ejercicios con Sub procesos / funciones en pseint
1.- Crear un subproceso que permita ingresar los días de la semana.
SubProceso semana(dias,d) Para i=1 Hasta d Con Paso 1 Hacer Imprimir "Ingrese el ",i," dia de la semana:" Leer dias[i] FinPara Fin SubProceso Algoritmo dias_semana Escribir "Ingrese los dias a mostrar" Leer d Dimension dias[d] semana(dias,d) FinAlgoritmo
2.- Mostrar el promedio de una cantidad n de practicas.
SubAlgoritmo prom <- practicas ( nota, cantidad ) suma <- 0 Para i<-1 Hasta cantidad Hacer suma <- suma + nota[i] FinPara prom<- suma/cantidad FinSubAlgoritmo Algoritmo Ejercicio2 Dimension notas[6] Escribir "Ingrese la cantidad de practicas:" Leer n Para i<-1 Hasta n Hacer Escribir "Ingrese la nota de la practica ",i,":" Leer notas[i] FinPara Escribir "Su promedio es: ",practicas(notas,n) Fin Algoritmo
3.- Preguntar a un usuario si tiene numero telefónico e imprimir si es teléfono fijo o teléfono móvil.
SubAlgoritmo tel_movil() Escribir "Ingrese su numero de telefono movil" Leer tel Si tel < 9999999 Entonces Escribir "No es un telefono movil" Escribir "Tienen que ser 9 digitos" FinSi FinSubAlgoritmo SubAlgoritmo tel_fijo() Escribir "Ingrese su numero de telefono fijo" Leer tel Si tel > 9999999 Entonces Escribir "No es un teléfono fijo" Escribir "Tienen que ser 7 dígitos" FinSi FinSubAlgoritmo Algoritmo Ejercicio3 Escribir "Tiene numero telefónico" Leer res Si res ="no" Entonces Escribir "Usted no tiene numero telefónico" SiNo Si res = "si" Entonces Escribir "Que tipo de teléfono posee" Leer telef Si telef= "teléfono fijo" Entonces tel_fijo() SiNO Si telef="teléfono móvil" Entonces tel_movil() FinSI FinSi SiNo Escribir "El numero es móvil" FinSi FinSi FinAlgoritmo
4.- Mostrar la cantidad de dispositivos a comprar, el nombre del dispositivo, su precio y el costo total de la compra.
SubProceso costo_compra(dis,precios,na) Escribir "Costo total de las compras :" ct<-0 Para i=1 Hasta na Hacer Escribir dis[i]," -> " sin saltar Escribir precios[i] ct=ct+precios[i] FinPara Escribir "El costo total de las compras es " ct Fin SubProceso SubProceso costo_dis(dis,precios,na) Para i=1 Hasta na Hacer Escribir "Ingrese el precio para el ", dis[i],":" Leer precios[i] FinPara Fin SubProceso SubProceso dispositivos(dis,na) Para i=1 Hasta na Hacer Escribir "Introduce el nombre del ",i,"° dispositivo:" Leer dis[i] FinPara Fin SubProceso SubProceso principal() Escribir "Ingrese la cantidad de dispositivos a comprar" Leer na Dimension dis[na] dispositivos(dis,na) Dimension precios[na] costo_dis(dis,precios,na) Dimension scal[na] costo_compra(dis,precios,na) Fin SubProceso Algoritmo Ejercicio4 principal FinAlgoritmo
5.- Empleando sub procesos crear el menú de opciones de Pseint.
SubAlgoritmo menu() Escribir "1.- Archivo"; Escribir "2.- Editar"; Escribir "3.- Configurar"; Escribir "4.- Ejecutar"; Escribir "5.- Ayuda"; Escribir "6.- Salir "; FinSubAlgoritmo SubAlgoritmo eleccion() Escribir "_______________________________________________"; Escribir "Seleccione una opcion :"; Leer op; Segun op Hacer 1: Escribir " - ABRIR NUEVO ARCHIVO"; Escribir " - ABRIR UN ARCHIVO YA CREADO"; Escribir " - GUARDAR UN ARCHIVO"; Escribir " - GUARDAR UN NUEVO ARCHIVO"; esperar Tecla; 2: Escribir " - DESHASER UN ARCHIVO"; Escribir " - REHACER UN ARCHIVO"; Escribir " - CORTAR UN ARCHIVO"; Escribir " - COPIAR UN ARCHIVO"; Escribir " - PEGAR UN ARCHIVO"; 3: Escribir " - ASISTENCIAS"; Escribir " - PRESENTACION"; 4: Escribir " - EJECUTAR"; Escribir " - EJECUTAR PASO A PASO"; Escribir " - EJECUCION EXPLICADA"; 5: Escribir " - INDICE"; Escribir " - AYUDA RAPIDA"; Escribir " - EJEMPLOS"; esperar Tecla; De otro modo Escribir "Cerrar Programa" Finsegun FinSubAlgoritmo Algoritmo Ejercicio5 Escribir "_______________________________________________"; Escribir "Has iniciado sesion en Pseint"; Escribir "_______________________________________________"; Escribir " "; menu eleccion FinAlgoritmo
6.- Ingresar 10 números en un arreglo, y mostrarlos.
Funcion mostrarArreglonumeros(datos) Definir posicion como Entero Para posicion <-1 Hasta 10 Con Paso 1 Hacer Escribir " * " datos[posicion]," * " FinPara FinFuncion Algoritmo Ejercicio6 Definir n,num,posicion como Entero Dimension num[10] Para posicion <-1 Hasta 10 Con Paso 1 Hacer Escribir "Ingrese el numero " posicion "° " Leer num[posicion] FinPara Escribir "Los numeros ingresados son :" mostrarArreglonumeros(num) FinAlgoritmo
7.- Escribir el números de palabras a ingresar y mostrar el numero de caracteres de cada palabra.
SubProceso mostrarCantidad ( cantidad, elementos, n ) Para i<-1 Hasta n Con Paso 1 Hacer Escribir "El numero de caracters para la palabra : ",elementos[i]," es de ",cantidad[i] FinPara FinSubProceso Algoritmo Ejercicio7 Definir longitud_nombres como entero Definir palabra como cadena Definir cant como entero Escribir "Ingrese la cantidad de palabras" Leer cant Dimension cant_caracteres[cant] Dimension palabra[cant] Para i<-1 Hasta cant Con Paso 1 Hacer Escribir "Ingrese la " i "° palabra en la posicion ",i Leer palabra[i] cant_caracteres[i]<-Longitud(palabra[i]) FinPara mostrarCantidad(cant_caracteres, palabra, cant) FinAlgoritmo
8.- Ingresar los días de la semana hasta ingresar el día domingo e identificar como día no laborable.
SubAlgoritmo dias() Definir dia como Cadena Repetir Escribir "Ingrese el día" Leer dia Si dia<>"domingo" Entonces Escribir " Dia laborable " FinSi Hasta Que dia="domingo" Si dia="domingo" Entonces Escribir " * Dia no laborable * " FinSi FinSubAlgoritmo Algoritmo Ejercicio8 Escribir "Dias de la semana" Escribir " ************ " dias() FinAlgoritmo
9.- Mostrar los perímetros de 5 figuras geométricas.
SubProceso menu() Escribir "1.- CUADRADO"; Escribir "2.- RECTANGULO"; Escribir "3.- TRIANGULO"; Escribir "4.- PENTAGON0"; Escribir "5.- SALIR"; Escribir ""; Escribir "Figura: "; FinSubProceso SubProceso calcular(op) Definir l1,l2 como Real; Leer fig Si fig == 1 Entonces Escribir "Ingrese el valor de un lado:"; Leer l1; pt<-l1*4; Escribir "El perimetro del cuadrado es : ",pt; SiNo Si fig ==2 Entonces Escribir "Ingrese el valor de la base:"; Leer l1; Escribir "Ingrese el valor de la altura :"; Leer l2; pt<-(l1*2) + (l2*2); Escribir "El perimetro del rectangulo es : ",pt; SiNo Si fig ==3 Entonces Escribir "Ingrese el valor del lado:"; leer l1; pt<-l1*3; Escribir "El perimetro del triangulo es : ",pt; SiNo Si fig ==4 Entonces Escribir "Ingrese el valor del lado:"; leer l1; pt<-l1*5; Escribir "El perimetro del pentagono es : ",pt; FinSi FinSi FinSi FinSi FinSubProceso Algoritmo Ejercicio9 Escribir " PERIMETROS DE FIGURAS" menu(); calcular(pt); FinAlgoritmo
10.- Mostrar las tablas de multiplicar de un numero ingresado por teclado.
SubProceso tablas<-operacion(espacio) Para i<-0 Hasta 12 Con Paso 1 Hacer espacio<-espacio+" " FinPara tablas<-Subcadena(espacio,0,12); FinSubProceso Algoritmo Ejercicio10 Escribir "Ingrese la cantidad de tablas a mostrar" Leer num Escribir " " Mientras (i<13) Hacer var<-""; Para n<-1 Hasta num Con Paso 1 Hacer var<-var+ " " + operacion(ConvertirATexto(n)+" x "+ConvertirATexto(i)+" = "+ConvertirATexto(n*i))+ " | "; Fin Para Escribir var; i<-i+1; Fin Mientras FinAlgoritmo
11.- Ingresar el nombre de tres alumnos , el nombre del curso, sus notas y el promedio
12.- Identificar por sus lados ingresados si es un triangulo mediante la formula de comprobación y que tipo de triangulo es según las dimensiones de sus lados.
SubAlgoritmo tiposT() Escribir "Los triángulos por la dimension de sus lados pueden ser:" Escribir "Triángulo Equilátero : Todos sus lados son iguales" Escribir "Triángulo Isósceles : Tiene dos lados iguales " Escribir "Triángulo Escaleno : Todos sus lados son diferentes" Escribir " ...................." FinSubAlgoritmo SubAlgoritmo tris (a,b,c) Leer a Leer b Leer c Si (c-a) < b & b < (c+a) Entonces Escribir " La figura es un triangulo" SiNo Escribir " La figura no es un triangulo" FinSi FinSubAlgoritmo SubAlgoritmo cla Definir a,b,c Como Entero Escribir "Ingrese el tamaño de los lados" Leer a Leer b Leer c Si a=b & a <> c & b <> c Entonces Escribir " El triangulo es Isosceles" SiNo Si a = b & a = c & b = c Entonces Escribir " El triangulo es Equilatero" SiNo Escribir " El triangulo es Escaleno" FinSi FinSi FinSubAlgoritmo Algoritmo Ejercicio12 tiposT() Escribir "La formula para comprobar si la figura es un triangulo es : " Escribir "a + b > c " Escribir "a + c > b " Escribir "b + c > a " Escribir "Ingrese los lados" tris(a,b,c) Escribir "Clasificación por sus lados" cla() FinAlgoritmo
13.- Ingresar una cantidad de ciudadanos e ingresar su edad y nacionalidad, si es mayor a 18 y de nacionalidad peruana esta apto a sufragar.
14.- Ingresar números enteros e indicar si es de un dígito , dos o tes dígitos.
15.-
16.- Ejecutar la operaciones básicas empleando sub procesos.
SubProceso operaciones() Escribir "1.- SUMA"; Escribir "2.- RESTA"; Escribir "3.- MULTIPLICACIÓN"; Escribir "4.- DIVISIÓN"; Escribir "5.- SALIR"; Escribir " "; Escribir "Seleccione el numero de la Operacion: "; FinSubProceso SubProceso operacion(c) Definir n1,n2 como Real; Escribir "Lectura de los valores numericos" Escribir "Ingrese el 1° numero :"; Leer n1; Escribir "Ingrese el 2° numero :"; Leer n2; Segun c Hacer 1: resultado<-n1+n2; 2: resultado<-n1-n2; 3: resultado<-n1*n2; 4: resultado<-n1/n2; De Otro Modo: FinSegun Escribir "El resultado de la Operacion es : ",resultado; Esperar Tecla; FinSubProceso Algoritmo Ejercicio16 Definir alt Como Entero; alt<-0; Repetir Limpiar Pantalla; operaciones(); Leer alt; Segun alt Hacer 1: operacion(alt); 2: operacion(alt); 3: operacion(alt); 4: operacion(alt); De Otro Modo: Escribir " Cerrar"; FinSegun Hasta Que (alt<1 || alt>4); FinAlgoritmo
17.-
18.-
19.-
20.-
Ejercicios de funciones
Ejercicio 1
Crea un procedimiento EscribirCentrado, que reciba como parámetro un texto y lo escriba centrado en pantalla (suponiendo una anchura de 80 columnas; pista: deberás escribir 40 - longitud/2 espacios antes del texto). Además subraya el mensaje utilizando el carácter =
.
Ejercicio 2
Crea un programa que pida dos número enteros al usuario y diga si alguno de ellos es múltiplo del otro. Crea una función EsMultiplo que reciba los dos números, y devuelve si el primero es múltiplo del segundo.
Ejercicio 3
Crear una función que calcule la temperatura media de un día a partir de la temperatura máxima y mínima. Crear un programa principal, que utilizando la función anterior, vaya pidiendo la temperatura máxima y mínima de cada día y vaya mostrando la media. El programa pedirá el número de días que se van a introducir.
Ejercicio 4
Crea un función “ConvertirEspaciado”, que reciba como parámetro un texto y devuelve una cadena con un espacio adicional tras cada letra. Por ejemplo, “Hola, tú” devolverá “H o l a , t ú “. Crea un programa principal donde se use dicha función.
Ejercicio 5
Crea una función “calcularMaxMin” que recibe una arreglo con valores numérico y devuelve el valor máximo y el mínimo. Crea un programa que pida números por teclado y muestre el máximo y el mínimo, utilizando la función anterior.
Ejercicio 6
Diseñar una función que calcule el área y el perímetro de una circunferencia. Utiliza dicha función en un programa principal que lea el radio de una circunferencia y muestre su área y perímetro.
Ejercicio 7
Crear una subrutina llamada “Login”, que recibe un nombre de usuario y una contraseña y te devuelve Verdadero si el nombre de usuario es “usuario1” y la contraseña es “asdasd”. Además recibe el número de intentos que se ha intentado hacer login y si no se ha podido hacer login incremente este valor.
Crear un programa principal donde se pida un nombre de usuario y una contraseña y se intente hacer login, solamente tenemos tres oportunidades para intentarlo.
Ejercicio 8
Crear una función recursiva que permita calcular el factorial de un número. Realiza un programa principal donde se lea un entero y se muestre el resultado del factorial.
Ejercicio 9
Crear una función que calcule el MCD de dos número por el método de Euclides. El método de Euclides es el siguiente:
- Se divide el número mayor entre el menor.
- Si la división es exacta, el divisor es el MCD.
- Si la división no es exacta, dividimos el divisor entre el resto obtenido y se continúa de esta forma hasta obtener una división exacta, siendo el último divisor el MCD.
Crea un programa principal que lea dos números enteros y muestre el MCD.
Ejercicio 10
Escribir dos funciones que permitan calcular:
- La cantidad de segundos en un tiempo dado en horas, minutos y segundos.
- La cantidad de horas, minutos y segundos de un tiempo dado en segundos.
Escribe un programa principal con un menú donde se pueda elegir la opción de convertir a segundos, convertir a horas,minutos y segundos o salir del programa.
Ejercicio 11
El día juliano correspondiente a una fecha es un número entero que indica los días que han transcurrido desde el 1 de enero del año indicado. Queremos crear un programa principal que al introducir una fecha nos diga el día juliano que corresponde. Para ello podemos hacer las siguientes subrutinas:
LeerFecha
: Nos permite leer por teclado una fecha (día, mes y año).DiasDelMes
: Recibe un mes y un año y nos dice los días de ese mes en ese año.EsBisiesto
: Recibe un año y nos dice si es bisiesto.Calcular_Dia_Juliano
: recibe una fecha y nos devuelve el día juliano.
Ejercicio 12
Vamos a mejorar el ejercicio anterior haciendo una función para validar la fecha. De tal forma que al leer una fecha se asegura que es válida.
Ejercicio 13
Queremos crear un programa que trabaje con fracciones a/b. Para representar una fracción vamos a utilizar dos enteros: numerador
y denominador
.
Vamos a crear las siguientes funciones para trabajar con funciones:
Leer_fracción
: La tarea de esta función es leer por teclado el numerador y el denominador. Cuando leas una fracción debes simplificarla.Escribir_fracción
: Esta función escribe en pantalla la fracción. Si el dominador es 1, se muestra sólo el numerador.Calcular_mcd
: Esta función recibe dos número y devuelve el máximo común divisor.Simplificar_fracción
: Esta función simplifica la fracción, para ello hay que dividir numerador y dominador por el MCD del numerador y denominador.Sumar_fracciones
: Función que recibe dos funciones n1/d1 y n2/d2, y calcula la suma de las dos fracciones. La suma de dos fracciones es otra fracción cuyonumerador=n1*d2+d1*n2
ydenominador=d1*d2
. Se debe simplificar la fracción resultado.Restar_fracciones
: Función que resta dos fracciones:numerador=n1*d2-d1*n2
ydenominador=d1*d2
. Se debe simplificar la fracción resultado.Multiplicar_fracciones
: Función que recibe dos fracciones y calcula el producto, para ellonumerador=n1*n2
ydenominador=d1*d2
. Se debe simplificar la fracción resultado.Dividir_fracciones
: Función que recibe dos fracciones y calcula el cociente, para ellonumerador=n1*d2
ydenominador=d1*n2
. Se debe simplificar la fracción resultado.
Crear un programa que utilizando las funciones anteriores muestre el siguiente menú:
- Sumar dos fracciones: En esta opción se piden dos fracciones y se muestra el resultado.
- Restar dos fracciones: En esta opción se piden dos fracciones y se muestra la resta.
- Multiplicar dos fracciones: En esta opción se piden dos fracciones y se muestra la producto.
- Dividir dos fracciones: En esta opción se piden dos fracciones y se muestra la cociente.
- Salir
Ejercicio 14
Vamos a crear un programa para trabajar con una pila. Una pila es una estructura de datos que nos permite guardar un conjunto de variables. La característica fundamental es que el último elemento que se añade al conjunto es el primero que se puede sacar.
Para representar una pila vamos a utilizar un arreglo (vector) de cadena de caracteres con tamaño 10, por lo tanto la pila no podrá tener más de 10 elementos.
Vamos a crear varias funciones para trabajar con la pila:
IncializarPila
: Como tenemos un arreglo de 10 elementos de cadenas tenemos que inicializarlo e introducir un carácter (por ejemplo un*
que indique que ese elemento del arreglo no corresponde con un dato de la pila. Esta función inicializa el vector con ese carácter.LongitudPila
: Función que recibe una pila y devuelve el número de elementos que tiene.EstaVaciaPila
: Función que recibe una pila y que devuelve si la pila está vacía, no tiene elementos.EstaLlenaPila
: Función que recibe una pila y que devuelve si la pila está llena.AddPila
: función que recibe una cadena de caracteres y una pila, y añade la cadena a la pila, si no está llena. si esta llena muestra un mensaje de error.SacarDeLaPila
: Función que recibe una pila y devuelve el último elemento añadido y lo borra de la pila. Si la pila está vacía muestra un mensaje de error.EscribirPila
: Función que recibe una pila y muestra en pantalla los elementos de la pila.
Realiza un programa principal que nos permita usar las funciones anterior, que nos muestre un menú, con las siguientes opciones:
- Añadir elemento a la pila
- Sacar elemento de la pila
- Longitud de la pila
- Mostrar pila
- Salir
Ejercicio 15
Vamos a realizar un programa similar al anterior para trabajar con una cola. Una cola es una estructura de datos que nos permite guardar un conjunto de variables. La característica fundamental es que el primer elemento que se añade al conjunto es el primero que se puede sacar.
En realizada nos sirven todas las funciones del ejercicio anterior menos la función SacarDeLaCola
que es la que tienes que modificar
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.
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.
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 Π * r2
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
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.
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.
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
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.
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.
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
********* ******* ***** *** *
11) Crear un subproceso que devuelva la longitud de una cadena.
12) Crear un subproceso que devuelva el factorial de un numero.
13) Crear un subproceso que muestre un arreglo pasado por parametro.
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.
15) Crear un subproceso que devuelva la suma de un arreglo pasado por parámetro.
16) Crear un subproceso que devuelva la media de un arreglo pasado por parámetro.
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
Espero que os sea de ayuda.
No hay comentarios:
Publicar un comentario