Laboratorio I - Algoritmos en DFD

LABORATORIO I – Algoritmos en DFD ALEXSANDER DIAZ GUALDRON 2015 ALGORITMOS A DESARROLLAR Diseñar y Construir los algor

Views 449 Downloads 4 File size 620KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

LABORATORIO I – Algoritmos en DFD ALEXSANDER DIAZ GUALDRON 2015

ALGORITMOS A DESARROLLAR Diseñar y Construir los algoritmos mediante diagramas de flujo utilizando la herramienta de software DFD, a partir de los siguientes enunciados: 1. Una persona deposita hoy al Banco cierta cantidad de dinero, donde le reconocen un interés del 2% mensual, capitalizado mensualmente. ¿Cuál será el saldo al cabo de 5 años? Formula a utilizar: Valor Futuro = Valor Presente * (1+intereses)^meses Para solucionar el Ejercicio, se requiere que usted desarrolle un algoritmo que le permita conocer a una persona ¿Cuál será el saldo al cabo de 5 años?, si deposita hoy cierta cantidad de dinero. Como resultado se debe imprimir en pantalla: Valor consignado: $XXXXX Valor futuro en 5 años: $XXXXXXX

DESARROLLO EJERCICIO 1 - DFD: → El presente ejercicio lo desarrolle en dos versiones de manera diferente, la primera utilizando la formula dada en el enunciado del problema: Valor Futuro = Valor Presente * (1+intereses)^meses → La segunda versión 1.2, la realice haciendo uso de un ciclo para, en el cual incremento el valor del interés al valor inicial, durante los 5 años (12 meses * 5 años). → Al final en ambas versiones el algoritmo da el mismo resultado, ingresando cualquier valor. → Podrimos mostrar el resultado solo la parte entera con la función DFD “trunc”, sin embargo el ejercicio no lo estipula.

DIAGRAMA DE FLUJO

[2]

RESULTADOS

[3]

DIAGRAMA DE FLUJO VERSIÓN 1.2

[4]

RESULTADOS VERSIÓN 1.2

[5]

2. Una frutería ofrece las manzanas a $4.200 el kilo, con un descuento de acuerdo a la siguiente tabla: [6]

Desarrollar un algoritmo que le permita a la frutería y al cliente conocer cuánto pagará un cliente que compre manzanas. Muestre los resultados así: La compra de N kilos tiene un valor de $, pero usted tiene un descuento por valor de $, por lo tanto el valor a pagar es: $. DESARROLLO EJERCICIO 2 → El presente ejercicio se realiza mediante el uso de condiciones anidadas, a fin de establecer y aplicar el descuento pertinente.

DIAGRAMA DE FLUJO

[7]

RESULTADOS

[8]

3. Dada la siguiente función: Y = x^2 – 2x Se requiere desarrollar un algoritmo que imprima en pantalla, para valores de x desde 1 a 10, lo siguiente:

[9]

a) La suma de todos los valores de Y. b) Valores de Y múltiplos de 3. c) Suma de los valores de Y múltiplos de 3. d) Valores de Y cuyo último digito sea 5. e) Suma de los valores de Y cuyo último digito es 5. Resultados esperados: a. Suma de todos los valores de Y: 275 b. Valores de Y múltiplos de 3: 3 15 24 48 63 c. Suma de los valores de Y múltiplos de 3: 153 d. Valores de Y cuyo último digito es 5: 15 35 e. Suma de los valores de Y cuyo último digito es múltiplo de 5: 50

DESARROLLO EJERCICIO 3 → Hay que mencionar, es que por alguna razón el programa DFD, presento fallas al ejecutar el algoritmo lo que llevo a tener que desarrollarlo 2 veces, por tal razón especifico cada elemento del DFD a continuación.

DIAGRAMA DE FLUJO

[10]

DESARROLLO PASO A PASO

[11]

Creacion e iniciación de contadores para el arreglo (array) que almacenara el contenido de los valores de Y.

contador3: (cuenta los valores de Y cuando son multiplos de 3)

contador5: (cuenta los valores de Y cuando el ultimo digito es 5)

totaly: (variable que sumara todos los valores de y)

[12]

total3: (variable que sumara todos los valores de y cuando sean multiplos de 3)

total5: (variable que sumara todos los valores de y cuando el ultimo digito sea 5)

Ciclo que se realizara 10 veces para determinar los valores de Y de 1 a 10.

Empleo la variable x como contador. Creo un arreglo y(), asignandole en la posicion y(x) el resultado de la función, x^2 – 2x en donde, x es el contador del ciclo para que ira cambiando desde 1 hasta 10.

Igualmente para despejar, 2x multiplico asi 2 * x.

Asigno a la variable totaly: la suma del totaly + el valor de y(x) [13]

residuo3: y(x) MOD 3 En esta variable la asigno el resultado que me arroja la funcion MOD al operar el valor de y(x) con 3.

Y(x) (puede ser 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; dependiendo del valor de x, es decir del valor del cotador del ciclo para).

residuo5: y(x) MOD 10 En esta variable almaceno e resultado de la funcion MOD operandola entre 10.

NOTA: MOD, me devuelve el residuo de una division, por ejemplo al dividir 15/10 = 1.5 (1 y me sobran 5), es decir 1 de resultado y 5 como residuo.

[14]

La desición residuo3=0, es para determinar si el numero es multiplo de 3.

Si al efectuar en la anterior asignación:

residuo3= y(x) MOD 3

En donde si reemplazamos x por 3. Al realizar la funcion 3 MOD 3, nos va a guardar en residuo3 = 0

PORQUE: 3/3 = 1.0 (1 y sobra 0) Si se cumple la condición pregunto su y(x) es > 0 continue.

Porque pregunto, porque si y(x) llega a ser 0 y dividimos 0/3 me va a dar como residuo 0 es decir MOD = 0.

Lo cual llenaria mi array con un 0 y 0 no es multiplo de 3.

[15]

Si se cumple la condicion anterior:

Asignamos al arreglo resultado3(posicion del contador3) el valor de y(x)

resultado3(contador3) = y(x)

Sumamos los valores de y(x) en la variable total3

total3= total3+y(x)

Incrementamos el contador3 contador3 = contador3+1 La desición residuo5=0, es para determinar si el ultimo digito es 5.

Si al efectuar la siguiente operación:

residuo5= y(x) MOD 10

En donde si reemplazamos x por 35. Al realizar la funcion 35 MOD 10, nos va a guardar en residuo5 = 5

[16]

PORQUE: 35/10 = 3.5 (3 y sobra 5) Asignamos al arreglo resultado5(posicion del contador5) el valor de y(x)

resultado5(contador5) = y(x)

Sumamos los valores de y(x) en la variable total5

Total5= total5+y(x)

Incrementamos el contador5 contador5 = contador5+1 Imprimimos en pantalla los resultados:

[17]

Informamos que mostraremos los valores de Y multiplos de 3

Realizmos un para que inicie en I = 1, hasta el valor del contador3-1 incrementandose de 1 en 1 para recorrer el arreglo resultados3()

Resto 1 a contador3 porque este viene incremetnado en 1 en un ciclo anterior.

[18]

Muestro en patalla los resultados de resultado3(en la posicion i)

Recordando que i va ir de 1 hasta el valor del contador31

Mostramos la suma de los valores multiplos de 3

Donde la suma de esos valores la tenemos en la variable total3 Informmos que mostraremos los valores de Y cuyo ultimo digito sea 5

[19]

Creamos un ciclo para recorrer el arreglo resultado5(), que inicie en j=1 hasta el valor del contador5-1 incrementadose en 1

Resto 1 a contador5 porque este viene incremetnado en 1 en un ciclo anterior. Muetro la suma de los valores de Y cuyo ultimo digito es 5

Imprimiendo en pantalla el valor del arreglo resultado5(j)

Mustro la suma de los valores de Y cuyo ultimo digito es 5.

Recordando que dicha suma la hicimos y guardamos en la variable total5

Final de la ejecución

RESULTADOS

[20]

[21]

[22]

[23]

4. Desarrollar un algoritmo que lea un número N entero positivo de cualquier número de dígitos, calcule la suma de sus dígitos y que imprima en pantalla el número leído y la suma de sus dígitos. Se requiere que en el desarrollo utilice la Estructura Cíclica Mientras. Ejemplo: N= 3567 SUMA= 21 DESARROLLO EJERCICIO 4 → Este ejercicio es realmente sencillo, hacemos uso de la función MOD que me devuelve el residuo de una división en una variable (var1). [24]

→ Igualmente usamos la operación división para que nos devuelva el resultado de la misma en una variable(var2). Aquí hay que tener en cuenta que para almacenar la parte solo entera de una división empleamos la función trunc. “trunc(numero / 10)” → Sabiendo que al dividir 5354 / 10 nos va a dar como resultado 535 y como residuo (MOD) 4, es decir su última cifra → Realizamos un mientras para que recorra cada una de las cifras del número digitado, con la condición: mientras que el residuo sea diferente de 0. → Sumamos cada digito del numero ingresado y listo. Final.

DIAGRAMA DE FLUJO

[25]

RESULTADOS

[26]

[27]

[28]