Algoritmo FuncionamientoAplicacion - jsyh1/practica_aplicada GitHub Wiki
Algoritmo FuncionamientoAplicacion
Definir expresion, operador, opcion Como Cadena
Definir numero Como Entero
Definir abiertos, cerrados Como Entero
Definir progresoActual, totalActividades Como Entero
Definir salir Como Logico
expresion <- ""
abiertos <- 0
cerrados <- 0
progresoActual <- 0
totalActividades <- 10
salir <- Falso
Escribir "================================="
Escribir " CALCULADORA MATEMATICA"
Escribir "================================="
Escribir "Actividad: Calculadora matematica"
Si totalActividades > 0 Entonces
Escribir "Progreso: ", progresoActual, "/", totalActividades
SiNo
Escribir "Error: el progreso no esta disponible."
FinSi
Mientras NO salir Hacer
Escribir ""
Escribir "---------------------------------"
Escribir "EXPRESION ACTUAL: ", expresion
Escribir "---------------------------------"
Escribir "1. Agregar numero"
Escribir "2. Agregar operador"
Escribir "3. Agregar parentesis abierto ("
Escribir "4. Agregar parentesis cerrado )"
Escribir "5. Eliminar ultimo elemento"
Escribir "6. Limpiar expresion"
Escribir "7. Evaluar expresion"
Escribir "8. Salir"
Escribir "Seleccione una opcion:"
Leer opcion
Segun opcion Hacer
"1":
Escribir "Ingrese un numero entre 1 y 10:"
Leer numero
Si numero >= 1 Y numero <= 10 Entonces
expresion <- expresion + ConvertirATexto(numero)
Escribir "Numero agregado correctamente."
Escribir "Expresion actual: ", expresion
SiNo
Escribir "Error: ", numero, " esta fuera del rango permitido."
Escribir "Solo se permiten numeros del 1 al 10."
FinSi
"2":
Si expresion = "" Entonces
Escribir "Error: no puede agregar un operador a una expresion vacia."
SiNo
Escribir "Ingrese un operador (+, -, *, /):"
Leer operador
Si operador <> "+" Y operador <> "-" Y operador <> "*" Y operador <> "/" Entonces
Escribir "Error: operador no valido."
Escribir "Solo se permiten +, -, * y /."
SiNo
Si Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "+" O Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "-" O Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "*" O Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "/" Entonces
Escribir "Error: no se permiten dos operadores consecutivos."
SiNo
expresion <- expresion + operador
Escribir "Operador agregado correctamente."
Escribir "Expresion actual: ", expresion
FinSi
FinSi
FinSi
"3":
Si expresion <> "" Entonces
Si Subcadena(expresion, Longitud(expresion), Longitud(expresion)) <> ")" Entonces
expresion <- expresion + "("
abiertos <- abiertos + 1
Escribir "Parentesis abierto agregado correctamente."
Escribir "Expresion actual: ", expresion
SiNo
Escribir "Error: no puede agregar un parentesis de apertura despues de un parentesis de cierre."
FinSi
SiNo
expresion <- "("
abiertos <- abiertos + 1
Escribir "Parentesis abierto agregado correctamente."
Escribir "Expresion actual: ", expresion
FinSi
"4":
Si abiertos > cerrados Entonces
Si expresion <> "" Entonces
Si Subcadena(expresion, Longitud(expresion), Longitud(expresion)) <> "(" Entonces
expresion <- expresion + ")"
cerrados <- cerrados + 1
Escribir "Parentesis cerrado agregado correctamente."
Escribir "Expresion actual: ", expresion
SiNo
Escribir "Error: no puede cerrar un parentesis inmediatamente despues de abrirlo."
FinSi
FinSi
SiNo
Escribir "Error: no existe un parentesis abierto disponible para cerrar."
FinSi
"5":
Si expresion = "" Entonces
Escribir "Error: no hay elementos para eliminar."
SiNo
Si Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = ")" Entonces
cerrados <- cerrados - 1
SiNo
Si Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "(" Entonces
abiertos <- abiertos - 1
FinSi
FinSi
expresion <- Subcadena(expresion, 1, Longitud(expresion) - 1)
Escribir "Ultimo elemento eliminado correctamente."
Escribir "Expresion actual: ", expresion
FinSi
"6":
expresion <- ""
abiertos <- 0
cerrados <- 0
Escribir "Operacion limpiada correctamente."
Escribir "La expresion actual esta vacia."
"7":
Si expresion = "" Entonces
Escribir "Error: no existe una expresion para evaluar."
SiNo
Si abiertos <> cerrados Entonces
Escribir "Error: la expresion contiene parentesis incompletos."
Escribir "Debe cerrar todos los parentesis antes de evaluar."
SiNo
Si Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "+" O Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "-" O Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "*" O Subcadena(expresion, Longitud(expresion), Longitud(expresion)) = "/" Entonces
Escribir "Error: la expresion esta incompleta."
Escribir "No puede terminar con un operador."
SiNo
Escribir "Expresion valida para evaluacion: ", expresion
Escribir "Resultado de la expresion:"
// Aqui se conecta con el algoritmo EvaluarExpresion.
FinSi
FinSi
FinSi
"8":
salir <- Verdadero
Escribir "La aplicacion se ha cerrado correctamente."
De Otro Modo:
Escribir "Error: la opcion seleccionada no existe."
Escribir "Debe seleccionar una opcion entre 1 y 8."
FinSegun
FinMientras
FinAlgoritmo