50% encontró este documento útil (2 votos)
72 vistas21 páginas

Ejemplos de Algoritmos para Niños

Este documento presenta tres ejercicios propuestos para un trabajo final de algoritmos. El primer ejercicio pide desarrollar un programa que lea una matriz y calcule la suma de los elementos de las filas y columnas pares. El segundo ejercicio pide generar una matriz mágica de orden impar entre 3 y 11. El tercer ejercicio pide desarrollar una aplicación para reservar asientos en una sala de cine de 5 filas y 5 asientos por fila, mostrando el estado de cada asiento y el recaudo por tipo de fila.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
50% encontró este documento útil (2 votos)
72 vistas21 páginas

Ejemplos de Algoritmos para Niños

Este documento presenta tres ejercicios propuestos para un trabajo final de algoritmos. El primer ejercicio pide desarrollar un programa que lea una matriz y calcule la suma de los elementos de las filas y columnas pares. El segundo ejercicio pide generar una matriz mágica de orden impar entre 3 y 11. El tercer ejercicio pide desarrollar una aplicación para reservar asientos en una sala de cine de 5 filas y 5 asientos por fila, mostrando el estado de cada asiento y el recaudo por tipo de fila.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ALGORITMOS I

UNIDAD No.3
Trabajo Final

Presentado Por:

RUBÉN DARÍO VALENCIA BEDOYA

Tutor de curso:
ING. JOHN JAIME OROZCO ARIAS

CORPORACIÓN UNIVERSITARIA REMINGTON

2019
1. Elaborar un programa en PseInt que lea una matriz de orden (m*n) y que
calcule la suma de los elementos sombreados según el siguiente
ejemplo:

Nota: Observe que se están sumando todos los elementos de las filas
pares y columnas pares.
Se debe imprimir la matriz leída y la respectiva suma

Iniciamos el proceso digitando el nombre del proceso en este caso le asigne el


nombre de m_n, solicitamos al usuario que digite el número de filas y columnas
que desea que se muestren, dimensionamos la matriz, mostramos la matriz
generada elegimos la estructura que nos adecuada para la elaboración del
algoritmo, en este caso utilizaremos la estructura PARA definimos como
constante a y colocamos hasta el número deseado a consultar en este caso
PARA a<-1 hasta fi (filas), nuevamente elegimos la estructura PARA para las
columnas quedando de la siguiente forma PARA b<-1 hasta co, definimos la
matriz en este caso en forma aleatoria matriz(a,b) <- Aleatorio(1,9) , colocamos
la condiciones para filas y colmunas que solo nos imprima las pares de la
siguiente forma si (a mod 2=0) o (b mod 2=0) Entonces, de igual forma la suma
de ambas filas con columnas pares suma<-suma+matriz(a,b), finalizamos la
condicional, de igual forma la finalización de los dos PARA e imprimos la martriz
con la respectiva suma de filas y columnas y por ultimo finalizamos el proceso.
Autor: Ruben Dario Valencia Bedoya
Fecha: 13/06/2019
Código fuente
Proceso matriz_m_n
escribir Sin Saltar "CANTIDAD DE FILAS "
leer fi
Escribir sin saltar "CANTIDAD DE COLUMNAS"
leer co
Dimension matriz(fi,co)
Escribir "se imprime la matriz generada"
para a <- 1 hasta fi
para b<-1 hasta co
matriz(a,b) <- Aleatorio(1,9)

si (a mod 2=0) o (b mod 2=0) Entonces


suma<-suma+matriz(a,b)

FinSi
escribir sin saltar " ", matriz(a,b)

FinPara
escribir ""
FinPara
escribir "la suma de las filas y colunmas parres es", suma
FinProceso
2. Manejando matrices, escribir un programa en PseInt que muestre una
matriz fantástica de orden impar (n) en un rango entre tres y once. Se
debe digitar por teclado el valor de (n).
Una matriz fantástica está compuesta de números enteros en el rango
entre uno y (n). La suma de los números que se encuentran en cada
diagonal, en cada columna y fila son iguales. Ejemplo:
Ocupada se elige la posición que se encuentre debajo del número que
acaba de ser ubicado.

Una regla para formarlo consiste en situar el número 1 en el centro de la


fila nro. 1, el número siguiente en la posición situada por encima y a la
derecha y así sucesivamente. La matriz es es cíclica, la línea encima de la
primera es de hecho la última y la columna a la derecha de la última es la
primera. En el caso de que el entero generado caiga en una posición

Iniciamos el subproceso digitando el nombre del subproceso generar a por


referencia, definimos las constantes y las lógicas, iniciamos el contador en 1,
elegimos la estructura que nos adecuada para la elaboración del algoritmo, en
este caso utilizaremos la estructura REPETIR, Escribir 'ingrese un número
impar, este debe ser con un rango de 3 a 11:' y Leer n , colocamos una
condicional (n MOD 2!=0) Y (n>=3 Y n<=11) Entonces, si la condición no se
cumple vuelve a solicitar al usuario ingresar número impar, elegimos una
estructura PARA con la finalidad de que los números sean impares, elegimos
una condición mientras contador < x hacer, colocamos las condiciones para la
ubicación de en cada fila y columna, finalizamos las condicionales y el
finmientras , colocamos unas estructura PARA para filas y columnas,
finalizamos las estructuras y finalizamos el subproceso,inicializamos el proceso
definimos constantes y variables y la dimensión de 3 a [Link] el
cuadrado mágico, generamos el arreglo y finalizamos el proceso.
Autor: Ruben Dario Valencia Bedoya
Fecha: 14/06/2019
CODIGO FUENTE
subproceso generar ( a por referencia )
Definir contador Como Entero
Definir random Como Entero
Definir i,j Como Entero
Definir salir Como Logico
contador<-1
Repetir
Escribir 'ingrese un numero impar, este debe ser con un rango de
3 a 11:'
Leer n
Si (n MOD 2!=0) Y (n>=3 Y n<=11) Entonces
salir<-verdadero
Sino
Escribir 'ingrese numero impares'
salir<-falso
FinSi
Hasta Que salir
Para i<-0 Hasta n-1 Con Paso 1 Hacer
para j<-0 hasta n-1 con paso 1 Hacer
a(i,j)=03

FinPara
FinPara
x<-n*m
i<-(n-1)/2
a(i,j)<-1
Mientras contador < x hacer
si i-1 >= 0 entonces
si j+1 < n Entonces
si a[i=1,j+1]=0 entonces
i<-1-1
j<-j+1
contador<-contador +1
a(i,j)<-contador;
Sino
i<-1+1
contador<-contador +1
a(i,j)<-contador;
FinSi
sino
si a[i=1,0]=0 entonces
i<-1-1
j<-0
contador<-contador +1
a(i,j)<-contador;
Sino
i<-1+1
contador<-contador +1
a(i,j)<-contador;
FinSi
finsi
Sino
si j+1 < n Entonces
si a(n=1, j+1)=0 Entonces
i<-n-1
j<-1+1
contador<-contador +1
a(i,j)<-contador;
sino i<-i+1
contador<-contador +1
a(i,j)<-contador;

FinSi
sino
i<-i+1
contador<-contador +1
a(i,j)<-contador;
FinSi
FinSi
FinMientras

para i<-0 hasta n-1 con paso 1 hacer


para j<-0 hasta n-1 con paso 1 hacer
Escribir Sin Saltar a(i,j), " ";
FinPara
escribir "";
FinPara
FinSubProceso

Proceso caja_magica
Definir n como entero
definir arr como entero
Dimension arr[11,11];

Escribir "cuadrado magico"


generar(arr);

FinProceso
3. Usted ha sido comprometido para desarrollar una aplicación en Pseint
para tramitar los asientos de una pequeña sala de cine, ya que el
administrador quiere ofrecer a sus clientes la posibilidad de reservar
y/o comprar sus boletas de entrada a través de la Web.
La sala de cine tiene un espacio de 5 filas y cada una cuenta con 5
asientos. Para cumplir con esta evidencia tenga en cuenta lo siguiente:
1. Realice una interfaz sencilla que le muestre al usuario el teatro y los
controles necesarios para que elija la fila y el puesto y, si quiere
reservar, comprar o liberar una silla. Un ejemplo de la interfaz se
muestra a continuación:

Digite Fila: ( )
Digite Columna ( )
Reservar ( R )
Comprar ( C )
Liberar ( L )
Salir ( S )
Digite una de las cuatro opciones:__
2. Para las transacciones se tienen las siguientes reglas: 2.1 Solo se
modifica la información de un puesto a la vez.

2.2 Si el puesto está libre debe aparecer la letra “L” en mayúscula (L), si el
puesto está reservado debe mostrar la letra “R” en mayúscula (R), si el
puesto está vendido debe aparecer la letra “V” en mayúscula (V).

2.3 Un puesto en estado libre (L) puede ser pasado a estado vendido (V)
(mediante la opción comprar) o reservado (R).

2.4 Un puesto en estado reservado (R) puede ser pasado a estado vendido
(V) o liberado (L).

2.5 Un puesto en estado vendido (V) no puede cambiar a estado reservado


(R) ni liberado (L).
2.6 Siempre que el usuario intente hacer una operación no valida (como
pasar un puesto en estado vendido (V) ha estado liberado (L)), el sistema
debe mostrarle un mensaje que le indique que la operación no pudo
realizarse.

3. Almacene los datos de la sala de cine en un arreglo tipo matriz (esto


implica que no van a mantenerse más allá de la ejecución del programa,
pero no hay problema porque se está trabajando con lo que se ha
aprendido en el programa de formación hasta este punto).
4. Además debe de mostrar cuánto dinero se ha recaudado de la siguiente
manera: 

Primeras 3 filas es popular y su precio es de 5000


Fila 4 es palco y su precio es de 7000
Fila 5 es preferencial y su precio es de 10000.
Mostrar también el recaudo total.

Iniciamos el proceso digitando el nombre del proceso en este caso le asigne el


nombre de TEATRO FUNDADORES, dimensionamos la matriz de 5*5,
definimos las constantes, la estructura que nos adecuada para la elaboración
del algoritmo, en este caso utilizaremos la estructura PARA definimos como
constante i y colocamos hasta el número deseado a consultar en este caso 5
para determinas las filas PARA a<-1 hasta 5 hacer, de igual forma elegimos la
misma estructura para las columnas nuevamente elegimos la estructura PARA
para las columnas y finalizamos las diferentes estructuras, escribimos el nombre
de que se desea mostrar en este caso TEATRO FUNDADORES hacemos que
lo muestre y de igual forma para nuestro escenario, digitamos los números del
1 al 5 para cada columna, hacemos uso de la estructura PARA,(filas y
columnas), escribimos la fórmula para que nos asigne en cada fila los números
correspondientes, finalizamos el fin para y que nos muestre la fila con los
correspondientes números asignados, escribimos cada una de las instrucciones
que se desean mostrar, selecciono la estructura REPETIR para determinar lo
que se desea realizar, utilizamos la estructura según mostramos en pantalla
para que el usuario elija una opción y de acuerdo a la opción ingresada por el
usuario y le solicitamos que digite la fila y la columna en donde nos vamos a
ubicar, le colocamos la condicional que comience en 1 y finalice en 5 y de caso
en que el usuario digite un número mayor o menor a 1 o 5 repetir hasta que
sea digitado uno de los números en mención. Colocamos las condicionales para
el precio de cada asiento, finalizamos las condiciones utilizadas anteriormente.
Caso 2 reservar el asiento se realiza preguntándole al usuario la posición a
reservar dependiendo fila y columna, definimos las condiciones en caso
contrario de que el usuario digite un número menor o mayor a 1 o 5, se repite
hasta que la condición se cumpla.
Caso 3 liberar el asiento se realiza preguntándole al usuario la posición a liberar
dependiendo fila y columna, definimos las condiciones en caso contrario de que
el usuario digite un número menor o mayor a 1 o 5, hasta que la condición se
cumpla finalizamos la función según.
Volvemos a digitar los datos del inicio del proceso para que estos se repitan n
veces hasta que el usuario determine que desea desarrollar o finalizar la
ejecución del programa. Y por último definimos un acumulador para el dinero
recaudado y finalizamos el algoritmo con la opción 4 para dar brindar un
agradecimiento al usuario, finalizamos la condición usada y finalizamos el
proceso.
Autor: Ruben Dario Valencia Bedoya
Fecha: 15/06/2019
Proceso TEATRO_FUNDADORES
Dimension M[5,5];
Definir i,j, a, b, c, rt, d como Entero;
Para i<-1 Hasta 5 Hacer
Para j<-1 Hasta 5 Hacer
M[i,j]='L'

FinPara
FinPara

//Mostramos Mensaje en pantalla para dar indicaciones al usuario


Escribir " TEATRO FUNDADORES "
Escribir " "
Escribir " ESCENARIO"
Escribir " "
Escribir " " 1 " " 2 " " 3 " " 4 " " 5 //utilizado para indicar las columnas
Escribir " "

//Se realiza un Ciclo (para) para imprimir la matriz en pantalla


Para i<-1 Hasta 5 Hacer
j<-1
Escribir " " i " | ", M[i,j] " | ",M[i,j+1] " | ",M[i,j+2] " | ",M[i,j+3] " |
",M[i,j+4]," | "
Escribir " "
FinPara //fin del Ciclo
Escribir " "

Escribir "L = Libre, V = Vendido, R = Reservado" //mensajes en pantalla


para dar instrucciones y claridad al usuario.
Escribir " "
Escribir "Costo de la boleta en zona popular (Filas 1, 2, 3) es de $5000."
Escribir "Costo de la boleta en Palco (Fila 4) es de $7000."
Escribir "Costo de la boleta Preferencial (Fila 5) es de $10000."
//Se realiza un Ciclo repetir para recorrer el menú hasta que el usuario
finalice
Repetir
// Se muestra el Menú con las opciones al Usuario
Escribir " "
Escribir "Que Desea Realizar"
Escribir " "
Escribir "1. Comprar"
Escribir "2. Reservar"
Escribir "3. Liberar"
Escribir "4. Salir"

Escribir " "


Escribir "Elija una Opción"
Leer op // variable usada para poder determinar el menú de
opciones.

Segun op Hacer
1: // Caso 1 Comprar Asiento
Escribir "Ingrese La Posición Del Puesto Que Desea"
//instrucción para el usuario en pantalla
Escribir " "
Escribir "Fila" //Mensaje en pantalla
leer d // guardo la informacion ingresada por el
usuario
Escribir "Columna"
leer columna // guardo la informacion ingresada por el
usuario
si (d>=6) o (columna>=6) Entonces //condición
creada para para determinar las posibilidades de elección
Escribir "Fila no valida, disponibles entre 1 y 5.
Presione Enter para continuar" //mensaje de erro mostrado en pantalla
Esperar Tecla
SiNo
si (d<=0) o (columna<=0) Entonces
Escribir "Fila no valida, disponibles entre
1 y 5. Presione Enter para continuar"
Esperar Tecla
FinSi
FinSi
Borrar Pantalla
si (d>=1 y columna>=1) y (d<=5 y
columna<=5)Entonces //condición creada para cuando se ingresen los valores
correctos
si M[d,columna]="V" Entonces //Condicinal
para validar que la silla no este vendida
Escribir "Este Asiento No Esta
Disponible, Seleccione Otra opción"
Sino // en caso contrario
M[d,columna]<-"V" //asignar a esa
posición el valor de v
Escribir " "
Escribir "El Asiento Ha Sido comprado
con Éxito." //mensaje confirmando la compra
si d<=3 Entonces //condición elaborada
para contar la cantidad de dinero recuadada según los asientos vendidos
a=a+5000 //acumulador

SiNo
si d=4 Entonces //mismo proceso
que el anterior
b=b+7000

SiNo
si d=5 Entonces
c=c+10000

FinSi
FinSi
FinSi
finsi //fin de condicional

Esperar 2 segundos

FinSi

Borrar Pantalla //borra la pantalla cuando se haya


finalizado todo el proceso de la compra
2: // Caso 2 Reservar Asiento
Escribir "Ingrese La Posición Del Asiento a Reservar"
//mensaje en pantalla
Escribir " "
Escribir "Fila" //Mensaje en pantalla
leer fila // guardo la información ingresada por el
usuario
Escribir "Columna"
leer columna // guardo la información ingresada por
el usuario
//Condicinal para validar que la silla no esta reservada
si (fila>=6) o (columna>=6) Entonces //condiciones
para que el algoritmo pueda funcionar
Escribir "Fila no valida, disponibles entre 1 y 5.
Presione Enter para continuar" //igual el procedimiento que en la
//opción uno
Esperar Tecla
SiNo
si (fila<=0) o (columna<=0) Entonces
Escribir "Fila no valida, disponibles entre
1 y 5. Presione Enter para continuar"
Esperar Tecla
FinSi
FinSi
Borrar Pantalla
si (fila>=1 y columna>=1) y (fila<=5 y
columna<=5)Entonces //cuando la condicion se de
si M[fila,columna]="R" o M[fila,columna]="V"
Entonces// elemento creado para validar que un asiento este libre
Escribir "El Asiento Ya Esta Reservado
o Vendido Seleccione Otra opción" //mensaje de error si el asiento no esta libre
Sino
M[fila,columna]<-"R" //en caso tal de que
el asiento este libre, asignar este valor
Escribir " "
Escribir "El asiento ha sido reservado
con éxito." //mensaje de confirmación de la reserva
finsi
FinSi

Esperar 2 Segundos
3: // Caso 3 Liberar Asiento
Escribir "Ingrese La Posición Del Asiento A Liberar"
Escribir " "
Escribir "Fila" //Mensaje en pantalla
leer fila // guardo la información ingresada por el
usuario
Escribir "Columna"
leer columna // Capturo la informacion ingresada por
el usuario
//Condicinal para validar que la silla esté disponible
si (fila>=6) o (columna>=6) Entonces
Escribir "Fila no valida, disponibles entre 1 y 5.
Presione Enter para continuar" //igual proceso para validar condiciones
Esperar Tecla
SiNo
si (fila<=0) o (columna<=0) Entonces
Escribir "Fila no valida, disponibles entre
1 y 5. Presione Enter para continuar"
Esperar Tecla
FinSi
FinSi
Borrar Pantalla
si (fila>=1 y columna>=1) y (fila<=5 y
columna<=5)Entonces //cuando se ingresa la opción correcta
si M[fila,columna]="L" Entonces //en caso tal de
que se seleccione un asiento libre
Escribir "El Asiento Esta Libre, No Hay
Que Liberarlo."
FinSi
si M[fila,columna]="R" Entonces //cuando el
asiento esta reservado
Escribir " "
Escribir "El Asiento Ha Sido Liberado"
//Si la silla esta liberada se muestra mensaje en pantalla
M[fila,columna]<-"L" //asigna valor a la
posición seleccionada
finsi
si M[fila,columna]="V" entonces
Escribir "Lo sentimos, el asiento está
vendido y no se puede liberar, seleccione un asiendo diferente." //mensaje error
cuando el asiento esta vendido
FinSi
FinSi

Esperar 5 Segundos

FinSegun

Borrar Pantalla // borra pantalla cuando se haga todo el proceso


//información en pantalla sobre los asientos
Escribir " TEATRO FUNDADORES"
Escribir " "
Escribir " Escenario"
Escribir " "
Escribir " "1" "2" "3" "4" "5
Escribir " -------------------"
// Mostrar al usuario resultado de la matriz y de las opciones
realizadas
//Ciclo para imprimir en pantalla
Para i<-1 Hasta 5 Hacer // inicio del ciclo
j<-1
Escribir " " i " | ", M[i,j] " | ",M[i,j+1] " | ",M[i,j+2] " | ",M[i,j+3] "
| ",M[i,j+4]," | ";
Escribir " -------------------"
FinPara // fin Ciclo
Escribir "L = Libre, V = Vendido, R = Reservado" //información para
el usuario.
Escribir " "
Escribir "Costo de la boleta en zona popular (Filas 1, 2, 3) es de
$5000."
Escribir "Costo de la boleta en Palco (Fila 4) es de $7000."
Escribir "Costo de la boleta Preferencial (Fila 5) es de $10000."
rt=a+b+c //acumulador para el dinero total recaudado
//información en pantalla para mostrar los recaudos
Escribir " "
Escribir "El recaudo en zona Popular es de: ", a
Escribir "El recaudo en zona Palco es de: ", b
Escribir "El recaudo en zona Preferencial es de: ", c

Hasta Que op=4 // para el ciclo repetir

si op=4 Entonces // siclo creado para mostrar mensaje de agradecimiento.


Escribir " "
Escribir "Muchas Gracias Por Preferirnos."
FinSi
FinProceso
4. Una forma de ordenación muy simple, pero NO muy eficaz, de
elementos x1, x2,…….xn en orden ascendente es esta:
Etapa 1: Identificar el elemento más pequeño entre x1 y xn y cambiarlo
con x1.
Etapa 2: Identificar el elemento más pequeño entre x2 y xn y cambiarlo
con x2. ………….
En la última etapa los dos últimos elementos se comparan e
intercambian, si es necesario, y la ordenación se termina. Escribir un
programa en PseInt para ordenar una lista de (n) números naturales
siguiendo este método. Probar el algoritmo con el siguiente vector de
5 elementos: 5 4 3 2 1 ¿A qué conclusión se llega?

Iniciamos el proceso digitando el nombre del proceso, solicitamos al usuario que


ingrese números para ordenar, definimos contador cant<-0, leemos el número
elegimos la estructura que nos adecuada para la elaboración del algoritmo, en
este caso utilizaremos la estructura MIENTRAS, el número sea mayor o igual a
cero hacer cantidad más uno, REPETIR leer número, definimos la estructura
PARA teniendo definido i como constante hasta cant, colocamos una condición
numero de la lista mostrando del primero al ultimo cual es el mayor, finalizamos
la condicional, finalizamos las estructuras y finalizamos el proceso.

Proceso sin_titulo
Dimension lista[n]
Escribir "Ingrese los numeros para ordenar (enter en blanco para
terminar):"

// leer la lista
cant<-0
Leer numero
Mientras numero<>"" Hacer
cant<-cant+1
lista[cant]<-numero
Repetir // leer un nombre y ver que no este ya en la lista
Leer numero

Para i<-1 Hasta cant Hacer


Si numero=lista[i] Entonces
mayor=i>j
FinSi
FinPara
Hasta Que NO se_repite
FinMientras

// ordenar
Para i<- 1 Hasta cant-1 Hacer
// busca el mayor entre i y cant
pos_mayor<-i
Para j<-i+1 Hasta cant Hacer
Si lista[j]<lista[pos_mayor] Entonces
pos_mayor<-j
FinSi
FinPara
// intercambia el que estaba en i con el menor que encontro
aux<-lista[i]
lista[i]<-lista[pos_mayor]
lista[pos_mayor]<-aux
FinPara

// mostrar como queda la lista


Escribir "La lista ordenada es:"
Para i<-1 Hasta cant Hacer
Escribir " ",lista[i]
FinPara

FinProceso
Autor: Ruben Dario Valencia Bedoya
Fecha: 15/06/2019

ENLACE VIDEO
[Link]
Fuentes bibliográficas
[Link]

[Link]

[Link]

También podría gustarte