Upload
osmar-tarazona
View
219
Download
0
Embed Size (px)
DESCRIPTION
diagrama
Citation preview
¿Qué son los Diagramas de Flujo?
Un diagrama de flujo es un tipo de diagrama que
representa un algoritmo o proceso, que muestra
las etapas como bloques de varios tipos, y su orden
mediante conexiones con flechas.
Esta representación esquemática puede dar la
solución paso a paso de un problema dado.
Las operaciones de proceso están representadas en
estos bloques y las flechas que los conectan
representan el control de flujo.
Los flujos de datos no se suelen representar en
un diagrama de flujo, en contraste con diagramas
de flujo de datos, sino que están implícitos en la secuencia de las operaciones. Los
diagramas de flujo son usados en el análisis, diseño, documentación o la gestión de un
proceso o programa en varios campos.
Descripción general
Los diagramas de flujo se utilizan en el diseño y documentación de procesos complejos o
programas. Como otros tipos de diagrama,
ayudan a visualizar lo que está pasando y
de esa manera ayudan al espectador a
entender un proceso, y tal vez también ha
encontrar defectos, cuellos de botella, y
otros problemas. Hay muchos tipos
diferentes de diagramas de flujo, y cada
tipo tiene su propio repertorio de cajas y
convenciones de notación.
Los dos tipos más comunes de cajas en
un diagrama de flujo son:
A un paso de procesamiento,
generalmente se le llama
actividad, y se denota como una
caja rectangular.
A una decisión, se le denota
generalmente como un diamante.
1
Un diagrama de flujo es descrito como"multifuncional" cuando la página se divide en
diferentes "carriles" que describen el control de las diferentes unidades organizativas. Un
símbolo que aparece en un "carril" está bajo el control de esa unidad organizativa. Esta
técnica permite al autor localizar la responsabilidad de realizar una acción o de tomar una
decisión correcta, mostrando la responsabilidad de cada unidad organizacional para
diferentes partes de un mismo proceso.
Los Diagramas de flujo representan ciertos aspectos de los procesos y por lo general se
complementan con otros tipos de diagrama. Por ejemplo, Kaoru Ishikawa definió el
diagrama de flujo como una de las siete herramientas básicas de control de calidad, al lado
del histograma, diagrama de Pareto, hoja de verificación, gráfico de control, diagrama de
causa y efecto, y el diagrama de dispersión. De manera similar, en UML, un lenguaje
estándar de modelado que se utiliza en el desarrollo de software, el diagrama de actividad
(que es un tipo de diagrama de flujo) es sólo uno de los muchos tipos de diagramas
diferentes.
Historia
El primer método estructurado para documentar el flujo de un proceso, el "diagrama de
flujo del proceso", fue presentado por Frank Gilbreth a los miembros de la Sociedad
Americana de Ingenieros Mecánicos (ASME) en 1921 en la exposición “Process Charts -
First Steps in Finding the One Best Way”.
Las Herramientas de Gilbreth rápidamente encontron su aplicación en los programas de
ingeniería industrial. A principios de 1930, un ingeniero industrial, Allan H. Mogensen
comenzó la formación de personas de negocios en el uso de algunas de las herramientas
de la ingeniería industrial en sus "Work Simplification Conferences en Lake Placid, New
York.
Douglas Hartree explica que Herman Goldstine y John von Neumann elaboró un diagrama
de flujo (originalmente, el diagrama) para planificar los programas de ordenador. Su
versión contemporánea está respaldado por los ingenieros de IBM y por colecciones
personales de Goldstine. Los diagramas de flujo de programación originales de Goldstine y
von Neumann se puede ver en su informe no publicado, "Planificación y codificación de
problemas para un instrumento de computación electrónica, Parte II, Volumen 1" (1947),
que se reproduce en las obras completas de von Neumann.
Los diagramas de flujo solía ser un medio popular para describir algoritmos
computacionales y todavía se utilizan para este fin. Técnicas modernas tales
comodiagramas de actividad de UML puede ser considerado como extensiones del
diagrama de flujo. En la década de 1970 la popularidad de los diagramas de flujo como
2
método propio disminuyó cuando las terminales de ordenador y lenguajes de
programación de tercera generación se convirtieron en herramientas comunes, ya que los
algoritmos se pueden expresar de manera mucho más concisa como código fuente de un
lenguaje, y también porque era más probable que el diseño de algoritmos usando
diagramas de flujo resulte en código-espagueti, debido a la necesidad de los "gotos" para
describir saltos arbitrarios en el control flujo del programa.
Bloques de Construcción de Diagramas de Flujo
Símbolos
Un diagrama de flujo típico de los antiguos libros de texto básicos de informática puede
tener los siguientes tipos de símbolos:
Símbolos Inicio y Fin
Representado como círculos, óvalos o rectángulos redondeados, que normalmente
contiene la palabra "Inicio" o "Fin", u otra frase que marca el inicio o el final de un proceso,
como "enviar consulta" o "recibir producto".
Flechas
Muestran el "control de flujo". Una flecha que viene de un símbolo y termina en otro
símbolo indica que el control pasa al símbolo que la flecha apunta. La línea de la flecha
puede ser continua o discontinua. El significado de la flecha con línea de trazos puede
diferir de un diagrama de flujo a otro y puede ser definido en la leyenda.
Pasos genéricos de procesamiento
Son Representados como rectángulos. Ejemplos: "Añadir 1 a X", "reemplazar parte
identificada", "guardar cambios", etc.
3
Subrutinas
Son representados como rectángulos con doble borde vertical, los cuales se utilizan para
mostrar los pasos de procesamiento complejos que pueden ser detallados en un diagrama
de flujo separado.
Entrada / Salida
Representado como un paralelogramo. Ejemplos: Obtener X por parte del usuario, mostrar
en pantalla X.
Condicional o decisión
Representado como un diamante (rombo) mostrando donde una decisión se debe tomar,
comúnmente se realiza una pregunta que debe tener un tipo de respuesta Sí/No. El
símbolo condicional tiene la peculiaridad de que tiene dos flechas que salen de él,
correspondiente al Sí o Verdadero, y No o falso. (Las flechas siempre deben ser
etiquetadas.) Se pueden utilizar más de dos flechas, pero esto es normalmente un claro
indicador de que una decisión compleja está siendo tomada, en cuyo caso es posible que
tenga que ser descompuesto aún más.
Conectores con etiqueta
Son Representado por una etiqueta en el interior de un círculo, se emplean en los
diagramas complejos o multi-hoja para sustituir a las flechas. Para cada etiqueta, el
conector de "flujo de salida" siempre debe ser único, pero puede haber cualquier cantidad
de conectores de "flujo entrada". En este caso, un punto de unión en el flujo de control está
implícita.
Símbolo de concurrencia
Representada por una doble línea transversal con cualquier número de flechas de entrada
y salida. Estos símbolos se utilizan cada vez que dos o más flujos de control deben
funcionar simultáneamente. Los flujos de salida se activan simultáneamente cuando todos
los flujos de entrada han alcanzado el símbolo de concurrencia.
Es importante recordar que debe mantener estas conexiones lógicas en orden. Todos los
procesos deben fluir de arriba hacia abajo y de izquierda a derecha.
Tipos de diagrama de flujo
Sterneckert (2003) sugirió que los diagramas de flujo pueden ser modelados desde la
perspectiva de diferentes grupos de usuarios (por ejemplo, administradores, analistas de
sistemas y empleados) y que hay cuatro tipos generales:
4
Diagramas de flujo de documentos, mostrando los controles sobre el flujo de un
documento a través de un sistema.
Diagramas de flujo de datos, mostrando los controles sobre un flujo de datos de un
sistema.
Diagramas de flujo de sistemas que muestran los controles a nivel físico o de
recursos.
Diagrama de flujo de programa, que muestra los controles en un programa dentro
de un sistema.
Observe que cada tipo de diagrama de flujo que se centra en algún tipo de control, en
lugar de en el propio flujo particular.
Software
Cualquier programa de dibujo puede ser usado para crear diagramas de flujo, pero éstos
no tienen un modelo de datos subyacente para compartir datos con bases de datos u otros
programas, como los sistemas de gestión de proyectos y hojas de cálculo.
Algunas herramientas ofrecen un apoyo especial para dibujar diagramas de flujo. Muchos
paquetes de software existentes que pueden crear diagramas de flujo de forma
automática, ya sea directamente desde el código fuente, o de un lenguaje de descripción
de diagrama de flujo.
5
Problema Ingrese un número y convierta a binario.
SoluciónEste algoritmo recibe un número decimal y lo convierte a número binario.
Ejemplo
Entrada: 10
Salida: 1010
Se coloca un símbolo de Lectura para el ingreso de números por parte del usuario, el cual captura dicho valor en la variable “Num”. Luego aplicamos la función TRUNC para recibir solo números enteros, luego inicializamos la variable “cad” con una cadena vacía.
Luego realizamos una comparación para verificar si el número es mayor a cero.Si es Falso (No) Verificamos si ”Num” es cero Si es Verdadero(Si), muestra como resultado ‘0’Si es Falso (No), entonces muestra el mensaje: “numero ingresado es negativo” Si es Verdadero (Si) Creamos un ciclo While con la condición de que Num sea mayor a cero(Num>0) Verificamos el Valor de Num MOD 2 = 0 Si es Verdadero(Si) Entonces concatenaremos en la variable “cad” el carácter ‘0’ Si es Falso(No) Entonces concatenaremos en la variable “cad” el carácter ‘1’ Una vez terminado la comparación actualizamos el valor de Num Num=TRUNC(Num/2)Regresamos de nuevo a la condición del ciclo while esto lo repetiremos hasta que el valor de Num sea mayor a ceroTerminado el ciclo mostraremos la cadena de salida
Ejemplo
Entrada Num = 10
10 >0 10 MOD 2 =0 cad=’0’ Num=TRUNC(10/2)=5
5>0 5 MOD 2 = 1 cad=’1’ Num=TRUNC(5/2)=2
2 >0 2 MOD 2 =0 cad=’0’ Num=TRUNC(2/2)=1
1>0 1 MOD 2 = 1 cad=’1’ Num=TRUNC(1/2)=0
0 >0 (No)sale del ciclo y muestra
la cadena
Resultado = 1010
6
ProblemaHacer un programa o algoritmo que si se ingresan 5 notas de un alumno, publicar las 2 peores notas.
Solución
Entrada: 15, 10, 13, 8,19
Salida: 10, 8
Se Inicializa la variable “u” con cero, se solicita ingresar cinco notas, se llama a la subrutina CapturaNotas , se crea un ciclo While con condición de que “u” debe ser diferente de 4(esto nos indica que el arreglo ya está ordenado), se llama a la subrutina Ordena esta nos ordena el arreglo de forma ascendente, se finaliza el ciclo se muestra el
7
resultado. Finaliza
Diagrama de flujo - Determinar las dos peores notas
En la subrutina CapturaNotas, se crea un ciclo For el cual tendrá cinco iteraciones para
capturar los cinco números en el arreglo Nota, finaliza el ciclo.
Diagrama de flujo - Subrutina CapturaNotas
En la subrutina Ordena, Se crea un ciclo For con cuatro iteraciones, luego
Se comprueba si el primer elemento es menor que el segundo elemento del arreglo
Nota (Nota(k)<Nota(k+1))
Si es Verdadero (Si)
Indica que está en orden ascendente, se actualiza el valor de “u” adicionándole 1.
Si es Falso (No)
8
Se realiza un intercambio, se asigna a la variable tem el primer elemento, y se asigna el
valor del segundo elemento en el primero, luego se asigna el valor de tem en el segundo
elemento.
Finaliza ciclo.
ProblemaHacer un programa o algoritmo que dadas tres longitudes, decir mediante un mensaje si forma un triángulo o no (cada lado tiene que ser menor que de las otras dos).
Solución
Entrada: 3 4 5
Salida: Si forma un triangulo
Se solicita al usuario ingrese tres longitudes de lados, estos valores se capturan en las variables “a”, ”b” y “c”, luegoSe compara si cumple con la propiedad de la desigualdad triangular ((abs(a-c) < b) AND (b < (a+c)))Si es Verdadero (Si) Se muestra si forma un trianguloSi es Falso (No) Se muestra que no forma un trianguloFinaliza.
9
ProblemaHacer un programa o algoritmo que calcule las 30 primeras potencias de 3 y la suma de ellos.
SoluciónInicializamos la variable ”Sum” en cero, luego se crea un ciclo For para generar las 30 potencias de 3, luego se muestra cada una de las potencias de tres, se actualiza el valor de “Sum” con (Sum + ( 3^i)) adicionándole el valor de cada potencia para obtener la sumatoria, finalmente se muestra la sumatoria y Finaliza.
10
ProblemaDesarrolle un algoritmo que convierta de grados Celsius a grados Fahrenheit y de grados Fahrenheit a grados Celsius.
Solución
Entrada: 37 grados Celsius
Salida: 98.6 grados Fahrenheit
Solicitamos al usuario ingrese el tipo de conversión que desea realizar, se captura el valor en la variable “n”.Se comprueba si el valor de n es igual 1 (n =1)Si es Verdadero (Si) Se solicita ingresar un valor en grados Celsius, la cual se captura en la variable “c” para luego realizar la conversión con la formula c*9/5 + 32. Retornamos el valor en grados Fahrenheit.Si es Falso (No) Se solicita ingresar un valor en grados Fahrenheit, la cual se captura en la variable “f” para luego realizar la conversión con la formula (f-32)*5/9. Retornamos el valor en grados Celsius.
Diagrama de flujo - Conversión de grados Celsius a Fahrenheit y viceversa.
11
ProblemaHacer un programa o algoritmo que dado el monto de una compra calcular el descuento considerado: Descuento es 20% si el monto es mayor a 100 soles. Descuento es 10% si el monto es mayor a 50 soles y menor o igual a 100 soles. No hay descuento si el monto es menor o igual a 50 soles.
Solución
Entrada: 100
Salida: 90
Se solicita al usuario ingrese el monto de la compra, la cual se captura en la variable “N”, luego Se comprueba su el monto es mayor a 100 (N>100)Si es verdadero (Si) Se realiza un descuento del 20% al monto de la compra y se muestra el valor de la compra, donde “monto” es N - N*0.2.Si es Falso (No) Se compara si el monto esta entre 50 y 100 (N<=100 AND N>50) Si es Verdadero (Si) Se realiza un descuento del 10% al monto de la compra y se muestra el valor de la compra, donde “monto” es N - N*0.1. Si es Falso (No) Se muestra el valor de la compra. Finaliza.
Diagrama de Flujo - Calcular Monto de descuento en una compra.
12
ProblemaRealizar un algoritmo que permita convertir un número arábigo comprendido entre 1000 y 2000 a números romanos.
Solución
Entrada: 1597
Salida: MDXCVII
Al comienzose llama a la subrutina Inicializar la cual inicializa en arreglos números romanos, se solicita al usuario ingrese un número entre 1000 y 2000, se captura el valor en la variable “N”, luego se llama a la subrutina Convertirentre1000y2000 con parámetros donde N es el numero ingresado, m representa a las milésimas, c a las centenas, d a las decenas, u a las unidades, Centena es la arreglo que contiene a las centenas, Decena es la arreglo que contiene a las decenas, Unidad es el arreglo que contiene a las unidades ,Mil arreglo que contiene a la milésimas y finaliza
Diagrama de flujo - Convertir numero arabigo a numero romano
En la subrutina Inicializar se llaman a las subrutinas
InicializaUnidades,InicializaDecenas, InicializaCentenas y InicializaMil.
13
Diagrama de flujo - Subrutina Inicializar
En la subrutina InicializaUnidades, Se crea el arreglo Unidad que contiene a los 9
primeros números romanos Unidad = {“”,“I”,“II”,“III”,“IV”,“V”,“VI”,“VII”,“VIII”,“IX”}, donde
Unidad(7)=”VII” que corresponde al número 7 en romanos.
Diagrama de flujo - Subrutina InicializaUnidades
En la Subrutina InicializaDecenas, se crea el arreglo Decena que contiene a los números
del 10 al 90 en romanos, Decena={“”,“X”,“XX”,“XXX”,“XL”,“L”,“LX”,“LXX”,“LXXX”,“XC”} ,
donde Decena(8)=”LXXX” que corresponde al número 80 en romanos.
14
Diagrama de flujo - Subrutina InicializaDecenas
En la subrutina InicializaCentenas, se crea el arreglo Centena que contiene a los
números romanos entre 100 y 900
Centena={“”,“C”,“CC”,“CCC”,“CD”,“D”,“DC”,“DCC”,“DCCC”,“CM”}, donde Centena(4)=”CD”
que corresponde al número 400 en romanos.
Diagrama de flujo - Subrutina InicializaCentenas
En la Subrutina InicializaMil, se crea el Arreglo Mil que contiene a los números romanos
1000 y 2000, Mil={“”,”M”,”MM”}, donde Mil(1)=”M”, que corresponde al número 1000 en
romanos.
15
Diagrama de flujo - Subrutina InicializaMil
En la subrutina ObtenerUnidadDecenaCentenaMil, se obtiene las unidades con N MOD
10 y se guarda en la variable “u”, las decenas con TRUNC(N/10) MOD 10 y se guarda en
la variable “d”, las centenas con TRUNC(N/100) MOD 10 y se guarda en la variable “c”,
las milésimas con TRUNC(N/1000) y se guarda en la variable m.
Ejemplo:
Numero = 1584
u = 584 MOD 10 = 4
d = TRUNC(584/10) MOD 10 = 8
c = TRUNC(584/100) MOD 10 = 5
m = TRUNC(N/1000) = 1
Las variable m, c, d, u nos sirven como índices en los arreglos respectivos para hallar
número romano correspondiente.
Diagrama de flujo - Subrutina ObtenerUnidadDecenaCentenaMil
En la Subrutina Convertirentre1000y2000, Se compara Si N es mayor igual a 1000 y
menor igual a 2000 (N>=1000 AND N<=2000)
Si es Verdadero (Si)
16
Se llama a la subrutina ObtenerUnidadDecenaCentenaMil para extraer los
índices
de los arreglos, luego se muestra el número ingresado en romanos.
Si es Falso (No)
Se muestra un mensaje que esta fuera del rango.
Diagrama de flujo - Subrutina Convertirentre1000y2000
ProblemaImplemente un algoritmo de tal modo que al ingresar una hora en segundos, indique a cuantas horas, minutos y segundos corresponde.
Solución Se ingresa la cantidad de segundos y retornara esta cantidad de segundos representado en horas, minutos y segundos
Ejemplo:
Entrada: 3893s
Salida: 1h 4m 53s
Creamos Un “símbolo de entrada” para recibir el número de segundos que deseamos sean convertidos a horas minutos y segundos el cual será capturado en la variable “num”.Para calcular las horas utilizamos trunc(num/ 3600) donde la función trunc retorna solo la parte entera y obvia la parte decimal, no la redondea(Funcion round() redondea un numero).Para calcular los minutos: trunc((num - hor*3600)/60)Para calcular los segundos: num - (hor*3600 + min*60)Luego retornamos el resultado
17
ProblemaHacer un programa o algoritmo que calcule el área de un cilindro.
Solución
Entrada: 5 7
Salida: 376.98192
Se solicita al usuario ingresar el radio y la altura del cilindro, se captura el valor en las variables “r” y “h”, luego calculamos el área usando 2*3.141516*r*(r + h), se muestra el área del cilindro. Finaliza.
Diagrama de flujo - Calcular el área de un cilindro
18
ProblemaHacer un programa o algoritmo que calcule las raíces de una ecuación de segundo grado (ax²+bx+c=0).
Solución
Entrada: 1 0 9
Salida: 3 y -3
Se inicializa las variables “X1” y “X2” con cero, se solicita al usuario ingrese los coeficientes de la ecuación cuadrática, se captura los valores en las variables “a”, ”b” y ”c”, Se verifica si la discriminante (b*b-4*a*c) es menor a cero, si es así las raíces son imaginarios si no se calcula las raíces con -b +(SQRT(b*b-4*a*c))/2*a para la raíz 1 y con -b - (SQRT(b*b-4*a*c))/2*a para la raíz 2 y se muestra el resultado.
Diagrama de flujo - Calculo de las raíces de una ecuación cuadrática
ProblemaDesarrolle un algoritmo que verifique si la suma de dos números de dos cifras es par.
Solución
Entrada: 11 85
Salida: la suma es par
Solicitamos el ingreso de dos números de dos cifras al usuario, capturamos sus valores
en las variables “a” y “b”, luego se sumamos sus valores y lo asignamos a la variable “c”
Se comprueba si el resultado de la suma MOD 2 nos da cero (c MOD 2 =0)
Si es Verdadero (Si)
Se muestra que la suma resultante es par
Si es Falso (No)
19
Se muestra que la suma resultante es impar
Diagrama de flujo - Verificar si la suma de dos números es par.
ProblemaDesarrolle un algoritmo que lea los primeros 300 números enteros y determine cuántos de ellos son impares; al final deberá indicar su sumatoria.
Solución Inicializamos las variables “Sum” y “cont” en cero, luego creamos un bucle For, inicializamos la variable “i” en 1 y aumentamos el valor de uno en uno, hasta que el valor de “i” sea menor igual a 300, Comparamos si el valor de i MOD 2 es diferente de 0Si es Verdadero (Si)Actualizamos el valor De “Sum” adicionándole el valor de” i”, también actualizamos el valor de “cont” adicionándole uno. Si es Falso (No) No se hace nadaFinalizamos el ciclo, se muestra la sumatoria total y también la cantidad de números impares entre 1 y 300.
20
Diagrama de flujo - sumatoria de los 300 primeros impares
ProblemaDesarrolle un algoritmo que verifique si la suma de dos números de dos cifras es par.
Solución
Entrada: 11 85
Salida: la suma es par
Solicitamos el ingreso de dos números de dos cifras al usuario, capturamos sus valores
en las variables “a” y “b”, luego se sumamos sus valores y lo asignamos a la variable “c”
Se comprueba si el resultado de la suma MOD 2 nos da cero (c MOD 2 =0)
Si es Verdadero (Si)
Se muestra que la suma resultante es par
Si es Falso (No)
Se muestra que la suma resultante es impar
21
Diagrama de flujo - Verificar si la suma de dos números es par.
ProblemaDeterminar la hipotenusa de un triángulo rectángulo conocidas las longitudes de sus dos catetos.
Solución
Entrada: 4 3
Salida: 5
Se solicita al usuario ingrese los catetos del triángulo las cuales se capturan en las variables “a” y “b”, luego se realiza el cálculo de la hipotenusa con SQRT(a*a + b*b) y se muestra el resultado.
22
Diagrama de flujo - Calculo de la hipotenusa
SoluciónSe ingresa un número entero y retorna la suma de los números anteriores incluido el numero ingresado.
Ejemplo
Ingresa: 5
1+2+3+4+5 = 15
Salida: 15
Se resuelve el problema de forma recursiva. Creamos un “símbolo de entrada” donde la
variable “N” será la que capture la cantidad de números que se desea sumar, luego
llamamos a la subrutina Sumatoria con parámetros (X,N), la cual nos retorna la sumatoria
cuyo resultado se muestra en un “símbolo de salida”.
En la subrutina Sumatoria comparamos si la variable Nivel (tomara el valor de la variable “N”) es mayor a 0 (Nivel>0) Si es Falso (No) Cargaremos en la variable X el valor de 0 que corresponderá a la sumatoria de 0 números. Si es Verdadero (Si) Llamamos recursivamente a la Subrutina Sumatoria en la cual en sus parámetros tendremos a Temp y Nivel -1, Luego cargamos el valor de Temp + Nivel en la Variable “X” y retornamos el valor de la sumatoria.
23
ProblemaIngrese un número y convierta a letras.SoluciónEsta solución solo acepta números que van desde el número cero al noventa y nueve, donde el usuario ingresa un numero decimal y la aplicación retornara como respuesta dicho número en letras.Ejemplo
Entrada: 35
Salida: treinta y cinco.
Primero inicializamos un arreglo donde estarán las unidades, este arreglo será igual a los números del cero al diez en letras.
Unidades={“cero”, ”uno”, ”dos” ,”tres” ,”cuatro” ,”cinco” ,”seis” ,”siete” ,”ocho” ,”nueve” ,”diez”} donde el elemento Unidades(3)=”tres”, Unidades(9)=”nueve”, etc.
24
Procederemos de igual manera para los números del 11 al 19 cuyo arreglo se llamara Inicializar11a19, este arreglo contendrá a todos los números del once al diecinueve en letras.
Finalmente inicializaremos el arreglo “Decenas” que contendrá los números veinte, treinta,..., noventa en letras.
25
Luego de inicializar solicitaremos al usuario que ingrese un numero para ser evaluado para lo cual se coloca un recuadro de lectura y creamos una variable llamada “num” Luego de ello realizamos una comparación para determinar si “num” es mayor a 10Si es Falso tomaremos el camino izquierdo donde nos mostrara el resultado buscadoEjemplo
Entrada: 6
Resultado: seis
Si es Verdadero nos iremos por el lado derecho y llamaremos a una subrutina llamada NumeroMayora10 el cual recibirá 4 parámetros num, Decenas, Unidades, num11a19 las cuales serán utilizadas en la subrutina.
26
Luego se hace otra consulta si “num” es mayor a 19 Si el resultado de la comparación es falsa, lo que haremos será extraer el numero en letras del arreglo num11a19, que recibe como parámetro “num-11”(num menos once), debido a que en este arreglo los índices van de 0 a 8(el dato en la posición 0 es el once , en la posición 1 es el doce, etc.).Ejemplo
Entrada: num=15
Num11a19 (num-11) = “quince”
Resultado: quince
Si el resultado de la comparación es verdadera, entonces llamaremos a la subrutina ObtenerUnidades,las unidades se obtienen sacando modulo 10 a “num”.Ejemplo MOD(36,10) = 6 el modulo nos retorna el residuo de una división Esta subrutina nos retorna la unidad de un numero por ejemplo 36 nos retorna 6
Una vez obtenido la unidades pasamos a la subrutina ObtenerDecenas, para obtener las decenas las decenas la operación a realizar es: al número dado le restamos las unidades y
27
lo dividimos entre diez, d=(num-u)/10, así obtenemos las decenas
Ahora haremos una pregunta si las unidades son iguales a cero De ser Verdadero, mostraremos el resultado con los datos del arreglo Decenas, para acceder a un elemento a las decenas obtenidas le restamos 2 (Decenas(0)=veinte,Decenas(1)=treinta, …,Decenas(7)=noventa)Ejemplo
Entrada: num = 50 donde d=5
Decenas(d-2)=”cincuenta”
Resultado = cincuenta
De ser falso, mostraremos el arreglo de Decenas y Unidades a la vezEjemplo
Entrada: num=39
d = 3, u = 9 Decenas(d-2)=”treinta” y Unidades(u)=”nueve”
Resultado: treinta y nueve
28