Solución con gráficos de flujo usando Flowgorithm.
Leonel Parra Pinilla
Desarrollo y ejecución de problemas con Flowgorithm.
Para usar la herramienta de diagramas Flowgorithm, el lector debe desarrollar su habilidad de entender el enunciado estructurando la solución completa en los pasos lógicos necesarios para llegar al resultado, encontrando cuales son los datos que necesita para procesar, como los procesa y que resultados obtiene para la solución.
Flowgorithm es una plataforma que permite crear y ejecutar la solución de un problema con diagramas de flujo mediante una interfaz gráfica, además cuenta con la posibilidad de transcribir dichos diagramas a otros lenguajes.
Flowgorithm is a graphical authoring tool which allows users to write and execute programs using flowcharts. The approach is designed to emphasize the algorithm rather than the syntax of a specific programming language.[1] The flowchart can be converted to several major programming languages. Flowgorithm was created at Sacramento State University, california state university sacramento is a public university in Sacramento, California Founded in 1947 as Sacramento State College.
Su Instalación puede hacerse siguiendo imágenes y descripciones tomadas de la organización Flowgorithm.org
Flowgorithm was created at Sacramento State University.[2]
Ingresar al siguiente enlace: http://www.flowgorithm.org/download/
4.2 Problemas resueltos.
4.2.1 Determinación de años bisiestos.
4.2.1.1 Conocer si un año es bisiesto o no.
Análisis para la solución.
Un año se considera bisiesto si cumple dos condiciones a) Que sea divisible entre 4 y b) que también lo sea entre400.
https://learn.microsoft.com/es-es/office/troubleshoot/excel/determine-a-leap-year
Solución como algoritmo.
- Leer el número del año (al que se quiere saber si es bisiesto)
- Dividirlo entre 4. Si la división es exacta (su cociente es entero),
- Dividirlos entre 100. Si la división es exacta (su cociente es entero)
- Si se cumplen ambas condiciones, Escribir AÑO BISIETO
- Si no escribir NO ES BISIESTO.
Solución con seudocódigo flowgorithm.
Función Principal
… SABER SI UN AÑO ES BISIESTO
Declarar Entero a
Entrada a
Declarar Entero a4
Declarar Entero a100
… es bisiesto si se puede dividir exactamente entre 4 y 100
Declarar Entero coa4
Asignar coa4 = int(a/4)
Si a = coa4 * 4
Declarar Entero co100
Asignar co100 = int(a/100)
Si a=co100*100
Salida a & ” Si es bisiesto”
Falso:
Salida a& ” No es bisiesto”
Fin
Falso:
Salida a& ” No es bisiesto”
Fin
Fin
Elaboración del diagrama solución con flowgorithm.
Análisis de resultados.
Se comprueba con dos años diferentes el año 2000 que es BISIESTO y el 2023 que no lo es.
4.2.1.2 Determinar que años son bisiestos de un número N de años..
Análisis para la solución.
Un año se considera bisiesto si cumple dos condiciones a)Que sea divisible entre 4 y b) que también lo sea entre 400.
https://learn.microsoft.com/es-es/office/troubleshoot/excel/determine-a-leap-year
Solución como algoritmo.
- Leer el número N de años que quiere analizar (p ej: N =5 años)
- La siguiente estructura debe repetirse N veces(una vez por cada año)
- Leer el número del año ( al que se quiere saber si es bisiesto)
- Dividirlo entre 4. Si la división es exacta (su cociente es entero),
- Dividirlos entre 100. Si la división es exacta (su cociente es entero)
- Si se cumplen ambas condiciones, Escribir AÑO BISIETO
- Si no Escribir NO ES BISIESTO.
Solución con seudocódigo flowgorithm.
Función Principal
… ANALIZAR DE VARIOS AÑOS CUALES SON BISIESTOS
Declarar Entero año
Declarar Entero a
Declarar Entero i
Declarar Entero n, co, pro
… n significa cuantos años quiere analizar si son o no bisiestos
Salida “Introduzca nro de años por analizar ”
Entrada n
Para a = 1 hasta n
Salida “Introduzca año ”
Entrada año
… PRUEBA PASO A PASO SI ES MULTIPLO DE 4
… LO MISMO PARA SI DE 100 O DE CUALQUIE NUMERO ENTERO
Asignar co = int(año/4)
… int( ) sale la parte entera de la división
Asignar pro = co*4
Si pro = año
Asignar co = int(año/100)
Asignar pro = co*100
Si pro <> año
Salida año
Salida ” SI ES BISIESTO ”
Falso:
Asignar co = int(año/400)
Asignar pro = co*400
Si pro = año
Salida año
Salida ” SI ES BISIESTO ”
Falso:
Salida año
Salida ” NO ES BISIESTO ”
Fin
Fin
Falso:
Salida año
Salida “NO ES BISIESTO ”
Fin
Fin
Fin
Elaboración del diagrama solución con flowgorithm.
Análisis de resultados.
Se comprueba con varios años, depende del valor N que introduzca , para la verificación incluya p ej: 5 años diferentes, el actual, el de su nacimiento, el próximo y otros que usted conozca.
4.2.2 Operaciones con números.
4.2.2.1 Hallar la suma de los N primeros números enteros.
Análisis para la solución.
Los números enteros se consiguen sumando uno al entero anterior.
La serie de números enteros es 1, 2, 3, 4, .. n-1, n, n+1. . infinitos.
Solución como algoritmo.
- Leer N el número de enteros que desea sumar
- Repetir la siguiente estructura N veces
- Iniciar la suma s en cero haga s = 0
- Iniciar i en uno, primer entero
- Hacer suma s = s + i
- Aumentar i en 1
- Al final escribir la suma s, después de acabar la repetición
Solución con seudocódigo flowgorithm.
Función Principal
… HALLAR LA SUMA DE LOS N PRIMEROS NUMEROS NATURALES
Declarar Entero n
Declarar Entero s
Declarar Entero i
Entrada n
… suma s = 0 antes de sumar los naturales 1 2 … n-1 n
Asignar s = 0
Para i = 1 hasta n
Asignar s = s+i
Fin
Salida s
Fin
Elaboración del diagrama solución con flowgorithm.
Análisis de resultados.
Se comprueba con la fórmula suma de i desde i = 1 a n es = n(n+1)/2
4.2.2.2 Hallar la suma de los pares comprendidos entre M y N ( N > M números enteros positivos).
Análisis para la solución.
Los números pares se consiguen dividiendo entre 2 y que no haya residuo
Ej: 8/2 no hay residuo, 13/2 hay residuo.
Solución como algoritmo.
- Leer N el número entero que será el límite superior
- Leer M el número inferior (N > M )
- Hacer suma = 0
- Repetir la siguiente estructura hasta N ( analiza N y M )
- Dividir M entre 2 si no hay resido
- Hacer suma = suma + M
- Aumentar M en 1
- Al terminar la repetición escribir suma
Solución con seudocódigo flowgorithm.
Función Principal
Declarar Entero n, m, supa, i, co, pro
Salida “Teclle valor de n debe ser mayor que m ”
Entrada n
Salida ” tecle valor de m ”
Entrada m
Asignar supa = 0
Para i = m hasta n
… i vale m m+1 m+2 m+3 . . hasta n
… Probar si i es múltiplo de 2 ( i vale m
… m+1 m+2.
Asignar co = int(i/2)
Asignar pro = co*2
Si pro=i
Asignar supa = supa + i
Fin
Fin
Salida “suma pares incluidos n y m ”
Salida supa
Fin
Elaboración del diagrama solución con flowgorithm.
Análisis de resultados.
Comprobar o verificar con N =10 y M = 3, la suma debe ser 4+6+8+10
4.2.3 Operaciones con cifras y raíces de números.
4.2.3.1 Hallar cuántas veces está la cifra o dígito mayor, de un número entero mayor que 1000.
Análisis para la solución.
- Leer un número entero N > 1000
- hacer contador de cifra mayor = 0 inicialmente
- Repetir siguiente estructura
- Sacar cifra al Número N mediante división entera
- Comparar si es mayor que la cifra anterior y asumirla como nueva mayor
- Contarla
- Repetir hasta que N se conserve > que cero (se sacan cada vez sus cifras)
- Escribir la mayor cifra cuántas veces se repitió
Solución con seudocódigo flowgorithm.
Función Principal
… PARA UN NUMERO ENTERO > QUE 1000, SACAR SUS CIFRAS Y DECIR CUANTAS VECES ESTA SU CIFRA MAYOR, EN EL NUMERO
Declarar Entero N
Declarar Entero Co
Declarar Entero PRO
… Ci es cada cifra del número N
Declarar Entero Ci
… Cu es el contador de cuantas veces está la mayor cifra
Declarar Entero Cu
Declarar Entero SC
Salida “Ingrese un numero mayor a 1000”
Entrada N
Declarar Entero ncopia
… Como N se destruye queda en cero , lo guardo en
… ncopia para poderlo escribir al final, es decir
… conservo el N original como una copia
Asignar ncopia = N
Si N > 1000
Asignar SC = 0
Asignar Cu = 0
… PROCESO SACAR LAS CIFRAS DEL NUMERO Y CONTAR CADA CIFRA CUANTAS VECES ESTÁ
Mientras N > 0
… N QUEDARA EN
… CERODESPUES DE
… SACAR SUS CIFRAS
Asignar Co = int(N/10)
Asignar PRO = Co*10
… SE OBTIENE
… CADA CIFRA
Asignar Ci = N – PRO
Si Ci > Cu
Asignar Cu = Ci
Asignar SC = 1
Falso:
Si Ci=0
Falso:
Si Ci=Cu
… SUMAR QUE ESTA
… 1 VEZ MAS LA MAYOR CIFRA
Asignar SC = SC+1
Fin
Fin
Fin
Asignar N = Co
… N SE CONVIERTE EN EL COCIENTE
… VA QUEDANDO SIN CIFRAS
… CUANDO SEA CERO EL NUMERO N
… YA NO SE SACAN MAS CIFRAS
Fin
Salida “En el numero ” &ncopia& ” la mayor cifra ” &cu& ” ocurrió ” &sc& ” veces ”
Falso:
Salida “El numero no es mayor a 1000”
Fin
Fin
Elaboración del diagrama solución con flowgorithm.
Análisis de resultados.
Comprobar o verificar con N = 747566, debe salir el 7 ocurrió dos veces.
4.2.3.2 Hallar la raíces de una ecuación de 2do orden aX2 + bX + c = 0
La solución es X1,2 = [-b + – (raíz de b2 – 4ac)] / 2a
Solución con seudocódigo flowgorithm.
Función Principal
Declarar Entero a
Salida “tECLEE COEFIENTE a = ”
Entrada a
Declarar Real b
Salida “TECLEE COEFICIENTE b = ”
Entrada b
Declarar Real c
Salida “TECLEE COEFICIENTE c = ”
Entrada c
Declarar Real d
Asignar d = b*b-4*a*c
Declarar Real rd
Si d>=0
Asignar rd = sqrt(d)
Salida ” TIENE RAICES REALES ”
Declarar Entero x1
Asignar rd = sqrt(d)
Asignar x1 = -b+ ( rd/(2*a))
Declarar Entero x2
Asignar x2 = -b- (rd/(2*a))
Salida “raiz 1 = ” &x1
Salida ” raiz 2 = ” &x2
Falso:
… hay raices imaginarias
Asignar d = -d
Asignar rd = sqrt(d)
Declarar Real xir
… parte real
Asignar xir = -b/(2*a)
Declarar Real xii
… parte imaginaria
Asignar xii = rd/(2*a)
… raices son de la forma compleja a + bi
Salida “TIENE RAICES IMAGINARIAS”
Salida “raiz 1 = “&xir &” + ” &xii& ” i”
Salida “raiz 2 = “&xir &” – ” &xii& ” i”
Fin
Fin
Elaboración del diagrama solución con flowgorithm.
4.2.3.3 Hallar la combinatoria (N M) = N! /(N-M)! * M! para N>M
Solución con seudocódigo flowgorithm.
Función Principal
… Teclear N y M N > M
Declarar Entero n
Entrada n
Declarar Entero m
Entrada m
… combinatoria n m = n! / (n – m)! * m!
Declarar Entero fn
Asignar fn = 1
Declarar Entero i
… se calcula factorial de N
Para i = 1 hasta n
Asignar fn = fn*i
Fin
Declarar Entero fm
Asignar fm = 1
… Se calcula factorial de M
Para i = 1 hasta m
Asignar fm = fm*i
Fin
Declarar Entero k
Asignar k = n-m
Declarar Entero fk
Asignar fk = 1
… se calcula factorial de k ue es N – M
Para i = i hasta k
Asignar fk = fk*i
Fin
Declarar Entero co
Asignar co = (fn)/(fm*fk)
Salida “Combinatoria ” &n& ” ” &m& ” = “&co
Fin
Elaboración del diagrama solución con flowgorithm.
4.2.4 Números Fibonacci y Primos.
4.2.4.1 Generar 10 números de la serie Fibonacci.
Serie Fibonacci es 0 1 1 2 3 5 8 13 21 34 55 …. Infinito
Se consigue sumando los dos anteriores
Solución con seudocódigo flowgorithm.
Función Principal
… Generar 15 números fibonacci
Declarar Entero a
… la serie fibonacci es:
…
… 0 1 1 2 3 5 8 13 21 ..
… se consigue sumando los dos anteriores partiendo de 0 y 1
Asignar a = 0
Declarar Entero b
Asignar b = 1
Declarar Entero i
Para i = 1 hasta 10
Declarar Entero c
Asignar c = a+b
Salida c
Asignar a = b
Asignar b = c
Fin
Fin
Elaboración del diagrama solución con flowgorithm.
4.2.4.2 Hallar si un número es primo o no.
Solución con seudocódigo flowgorithm.
Función Principal
Declarar Entero x
… Teclear número para saber si es o no primo
Salida “número x = ”
Entrada x
Declarar Entero fin
Asignar fin = x-1
Declarar Entero clave
Asignar clave = 1
Declarar Entero i
Para i = 2 hasta fin
Declarar Entero co
Asignar co = x/i
Declarar Entero pr
Asignar pr = co*i
Si pr=x
Asignar clave = 0
Asignar i = fin
Fin
Fin
Si clave=1
Salida ” es primo”
Falso:
Salida “no es primo”
Fin
Fin
Elaboración del diagrama solución con flowgorithm.
4.3 Problemas propuestos para resolver con Flowgorithm.
4.3.1 Compruebe que la suma de los primeros N números naturales se puede calcular como suma = N (N + 1) / 2
4.3.2 Halle cuánto vale la suma de las cifras de un número entero X
4.3.3 Busque cuáles de los primero 1000 números impares son primos.
4.3.4 Hallar el seno de cada uno de N ángulos por el método numérico de Taylor
4.3.5 De un grupo de N estudiantes, Diga cuál es el estudiante que tiene más años.
4.3.6 Hallar la raíz de un número entero X.