Bucle o Ciclo Repetir PSeInt Esta estructura de control repetitiva es muy parecida a la anterior, pero mientras en la anterior la condición se evalúa al principio de la estructura, en ésta se hace al final. Aquí se repite un bloque de instrucciones hasta que se cumple una condición determinada. A continuación verás la sintaxis y un ejemplo cuya ejecución da el mismo resultado que el ejemplo anterior, pero utilizando la estructura de control repetir en lugar de la estructura mientras. Como puedes comprobar en la anterior era mientras que i sea menor o igual que 10 hacer (secuencia de acciones), y en ésta es repetir (secuencia de acciones) hasta que i sea mayor que 10. // Sintaxis de estructura Repetir Repetir (secuencia de acciones) Hasta Que (condición) // Ejemplo Dimension mi_tabla[10]; Definir i Como Entero; i <- 1; Repetir mi_tabla[i] <- i*10; i <- i+1; Hasta Que(i>10) i <- 1; Repetir Escribir "mi_tabla[" Sin Saltar; Escribir i Sin Saltar; Escribir "] = " Sin Saltar; Escribir i Sin Saltar; Escribir "x10 = " Sin Saltar; Escribir mi_tabla[i]; i <- i+1; Hasta Que(i>10) En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior: Bucle o Ciclo Para PSeInt Es otra estructura de control repetitiva pero en este caso la propia estructura inicializa una variable que se va a usar de contador, además, va sumándole la cantidad paso y por último incluye el valor final que debe tomar la variable para salir del bucle. A continuación vemos la sintaxis y también el mismo ejemplo que hemos visto con las estructuras mientras y repetir, que como ves, su ejecución da exactamente el mismo resultado. // Sintaxis de estructura Para Para (variable_numerica <- valor_inicial) Hasta (valor_final) Con Paso (paso) Hacer (secuencia_de_acciones) Fin Para // Ejemplo Dimension mi_tabla[10]; Definir i Como Entero; Para i <- 1 Hasta 10 Con Paso 1 Hacer mi_tabla[i] <- i*10; Fin Para Para i <- 1 Escribir Escribir Escribir Escribir Escribir Escribir Fin Para Hasta 10 Con Paso 1 Hacer "mi_tabla[" Sin Saltar; i Sin Saltar; "] = " Sin Saltar; i Sin Saltar; "x10 = " Sin Saltar; mi_tabla[i]; En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior: Funciones en PSeInt Las funciones son un conjunto de instrucciones que realizan tareas específicas y pueden retornar un valor y también recibirlos (parámetros) para realizar operaciones con ellos. Las funciones pueden ser llamadas desde otras funciones e incluso puede llamarse a sí misma. A continuación puedes ver su sintaxis y el ejemplo de una función sencilla, una suma de tres números enteros; recibirá tres valores a través de los parámetros a, b y c y devolverá la suma con la variable de retorno resultado. // Sintaxis de Función Funcion (var_retorno) <- (nombre_funcion) (argumento1, argumento2, ....) acción 1; acción 2; . . acción n; FinFuncion // Ejemplo Funcion resultado <- sumaTres (a, b, c) Definir resultado Como Entero; resultado <- a+b+c; FinFuncion // Ejemplo de llamada de la función Definir a, b, c, S Como Entero; Escribir "Dame el primer número: " Sin Saltar; Leer a; Escribir "Dame el segundo: " Sin Saltar; Leer b; Escribir "El tercero, por favor: " Sin Saltar; Leer c; S <- sumaTres (a, b, c); Escribir "La suma de " Sin Saltar; Escribir a Sin Saltar; Escribir " + " Sin Saltar; Escribir b Sin Saltar; Escribir " + " Sin Saltar; Escribir c Sin Saltar; Escribir " es igual a " Sin Saltar; Escribir S; Resultado de la ejecución para los números 12, 24 y 50: En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior: Hay funciones ya integradas en PSeInt, casi todas matemáticas, son las siguientes: FUNCIÓN RC(X) o RAIZ(X) ABS(X) LN(X) EXP(X) SEN(X) SIGNIFICADO Raíz cuadrada de X Valor absoluto de X Logaritmo natural de X Función exponencial de X Seno de X FUNCIÓN SIGNIFICADO COS(X) TAN(X) ASEN(X) ACOS(X) ATAN(X) TRUNC(X) REDON(X) AZAR(X) ALEATORIO(A,B) LONGITUD(S) MAYUSCULAS(S) MINUSCULAS(S) Coseno de X Tangente de X Arcoseno de X Arcocoseno de X Arcotangente de X Parte entera de X Entero más cercano a X Entero aleatorio en el rango[0;x-1] Entero aleatorio en el rango [A;B] Longitud de la cadena S Devuelve una copia de la cadena S en mayúsculas Devuelve una copia de la cadena S en minúsculas Devuelve una nueva cadena que consiste en la parte de SUBCADENA(S,X,Y) la cadena S que va desde la posición X hasta la posición Y (incluyendo ambos extremos) Devuelve una cadena nueva resultado de unir las CONCATENAR(S1,S2) cadenas S1 y S2 CONVERTIRANUMERO(X) Convierte a número la variable X CONVERTIRATEXTO(S) Convierte a texto la variable S Puedes ver más sobre ejercicios básicos de Pseudocódigo y PSeInt en: Pseudocódigo Ejemplo. Hoja de calendario en PSeInt Algoritmo Día de la semana de una fecha con PSeInt. Reutilizando funciones Arreglos y parámetros por referencia en pseudocódigo con PSeInt Funciones de fecha en Pseudocódigo con PSeInt Si quieres estar al tanto de las novedades y publicaciones de esta página web Suscríbete Comparte si quieres TwitterFacebookLinkedIn AVISO Hola, si sueles venir por aquí sabrás que desde el 2 de marzo de 2020 no he parado de responder a peticiones de ayuda para ejercicios de algoritmos en PSeint. Tengo que parar de hacerlo, al menos de momento, terminó el confinamiento por el Covid-19 y no me da la vida; he vuelto a trabajar y tengo que recuperar lo no trabajado, y además tengo un proyecto entre manos que no quiero desatender. Aquí tienes un montón de ejemplos que te pueden servir de ayuda para resolver tu ejercicio. Si pulsas CTRL+F (buscar) y añades las palabras adecuadas puedes moverte por la página y encontrar lo que buscas. Aún me queda por responder algunos comentarios y lo haré. Pero a partir de hoy (14 de Junio de 2020) desactivo los comentarios temporalmente, porque no voy a poder atenderlos, y tampoco contestaré a peticiones de ayuda que me lleguen al correo electrónico o redes sociales y que consistan en realizar ejercicios, no me importará ponerte un enlace a algún ejercicio que ya esté hecho y que crea que es similar y pueda ayudarte, pero poco más. Lo siento, yo también estoy aprendiendo e intento ganarme la vida con esto. El que aprende y aprende y no practica lo que sabe, es como el que ara y ara y no siembra.- (Platón) terepebernal 27/06/2020 a las 10:16 Lorme, has escrito mal el correo electrónico y no puedo enviártelo, así que lo pongo aquí. Enunciado: Desarrollar un programa en pseudocódigo que luego de ingresar 2 números naturales por teclado, donde el segundo debe ser mayor que el primero. Luego muestre los números naturales que hay entre ambos empezando de menor a mayor. Debe utilizar los ciclos que sean necesarios para desarrollar el ejercicio. Algoritmo ejemploNaturales2 Definir i, num1, num2 Como Entero Escribir "PRIMER NÚMERO NATURAL: " Sin Saltar Leer num1 Escribir "SEGUNDO NÚMERO NATURAL: " Sin Saltar Leer num2 // Si son naturales tienen que ser mayores que cero Si num1>=1 Y num2>=1 Entonces // Si el segundo es el mayor Si (num1<num2) Entonces Para i<-num1 Hasta num2 Con Paso 1 Hacer // Muestra el número más un espacio Escribir i, " " Sin Saltar FinPara Escribir "" FinSi // Si el primero es el mayor Si (num1>num2) Entonces Para i<-num2 Hasta num1 Con Paso 1 Hacer // Muestra el número más un espacio Escribir i, " " Sin Saltar FinPara Escribir "" FinSi Si (num1==num2) Entonces Escribir num1, " y ", num2, " son iguales" FinSi SiNo Escribir "Los dos números tienen que ser naturales" FinSi FinAlgoritmo Responder Érica 14/06/2020 a las 06:42 Buenas Noches, me ayudarias con este ejercicio? Una Clínica odontológica desea llevar el control de sus 500 pacientes. Necesita guardar los siguientes datos: • Nº de historia clínica • DNI • APELLIDO • CANTIDAD DE VISITAS REALIZADAS • IMPORTE PROMEDIO ABONADO POR CONSULTAS • FECHA DE INGRESO(ingresarlo en variables separadas, por día, mes y año) Se pide: 1. Ingresar los datos para los pacientes 2. Calcular y mostrar el promedio de visitas realizadas por todos los pacientes ingresados 3. Calcular y mostrar el importe total abonado por consultas 4. Listar todos los pacientes cuya fecha de ingreso corresponda al mes de mayo de cualquier año. Responder o terepebernal 20/06/2020 a las 22:14 ¡Hola Érica! Saludos Algoritmo clinicaDental Dimension pacientes[500,7] Definir pacientes Como Cadena Definir i, j, numPacientes Como Entero Definir sumaVisitas, importeConsultas Como Numero // Ingresar datos para los pacientes // El bucle termina cuando se ingresan los 500 pacientes // O si se introduce un número de historia vacío i<-1 Repetir Escribir "Paciente ", i, ": " Escribir "NÚMERO HISTORIA CLÍNICA: " Sin Saltar Leer pacientes[i,1] Si !(pacientes[i,1]=="") Entonces Escribir "DNI: " Sin Saltar Leer pacientes[i,2] Escribir "CANTIDAD DE VISITAS REALIZADAS: " Sin Saltar Leer pacientes[i,3] Escribir "IMPORTE PROMEDIO ABONADO POR CONSULTAS: " Sin Saltar Leer pacientes[i,4] Escribir "FECHA DE INGRESO: " Escribir "DÍA: " Sin Saltar Leer pacientes[i,5] Escribir "MES: " Sin Saltar Leer pacientes[i,6] Escribir "AÑO: " Sin Saltar Leer pacientes[i,7] Escribir "" FinSi i<-i+1 Hasta Que i>500 O pacientes[i-1,1]="" // Calcular y mostrar el promedio de visitas realizadas por todos los pacientes ingresados Para i<-1 Hasta 500 Con Paso 1 Hacer Si pacientes[i,1]=="" Entonces i<-500 SiNo sumaVisitas <- sumaVisitas + ConvertirANumero(pacientes[i,3]) numPacientes <- i FinSi FinPara Si numPacientes>0 Entonces Escribir "" Escribir "Promedio Visitas = ", sumaVisitas/numPacientes SiNo Escribir "Promedio Visitas = 0. No hay pacientes" FinSi // Calcular y mostrar el importe total abonado por consultas Para i<-1 Hasta 500 Con Paso 1 Hacer Si pacientes[i,1]=="" Entonces i<-500 SiNo importeConsultas <- importeConsultas + ConvertirANumero(pacientes[i,4]) numPacientes <- i FinSi FinPara Si numPacientes>0 Entonces Escribir "Importe total consultas = ", importeConsultas SiNo Escribir "Importe total consultas = 0. No hay pacientes guardados" FinSi // Listar pacientes con fecha ingreso en mayo Escribir "" Escribir"PACIENTES INGRESADO EN MAYO" Escribir "-------------------------------------------" Para i<-1 Hasta 500 Con Paso 1 Hacer Si pacientes[i,1]=="" Entonces Escribir "No hay pacientes guardados" i<-500 SiNo Si ConvertirANumero(pacientes[i,6])==5 Entonces Escribir "(", i, ") - N.H: ", pacientes[i,1], ", DNI: ", pacientes[i,2], ", VISITAS: ", pacientes[i,3] Sin Saltar Escribir ", IMPORTE ABONADO: ", pacientes[i,4], ", FECHA INGRESO: ", pacientes[i,5], "/", pacientes[i,6], "/", pacientes[i,7] FinSi FinSi FinPara FinAlgoritmo Responder Christian David 13/06/2020 a las 23:25 Hola Tere quería ver si eres tan amable de ayudarme con este problema llevo mucho tiempo intentando resolverlo y no me sale si fueras tan amable de ante mano gracias. PD:Me gusta tu trabajo. 3. Una empresa de ventas a domicilio maneja 10 artículos diferentes y cuenta con 50 vendedores. En un arreglo de 50×10 se tienen almacenadas las cantidades de cada artículo vendidas por cada vendedor. Además, los precios de cada artículo están almacenados en un vector de tamaño 10. Se desea elaborar un diagrama de caja para imprimir lo siguiente : • La cantidad de dinero recopilado por cada vendedor. • El número del vendedor que recopiló la mayor cantidad de dinero. • El número del artículo más vendido (entre todos los vendedores). • El total de vendedores que no vendieron ningún artículo número ocho. Responder o terepebernal 19/06/2020 a las 22:45 ¡Hola Christian! Como el enunciado no habla de si hay que agregar datos o no a los arreglos, para que veas como funciona, en el algoritmo almacena datos aleatorios. Un saludo Algoritmo ejemploVentas3 Dimension articulos[50,10] Dimension precios[10] Dimension ventas[50,11] Definir articulos, precios, ventas Como Numero Definir masVentas, posMasVentas, masArticulos, vend8x0 Como Numero Definir i, j Como Entero // Cargar con números aleatorios los arreglos // de articulos vendidos y de precios Para i<-1 Hasta 50 Con Paso 1 Hacer Para j<-1 Hasta 10 Con Paso 1 Hacer articulos[i,j] <- Aleatorio(0,100) Si i==1 Entonces masArticulos <- articulos[i,j] posIarticulos <- 1 posJarticulos <- 1 FinSi Si masArticulos<=articulos[i,j] Entonces masArticulos <- articulos[i,j] posIarticulos <- i posJarticulos <- j FinSi FinPara FinPara