Subido por DEATH ZONE

Bucle o Ciclo Repetir PSeInt

Anuncio
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
Descargar