32
F.I. UNAM.-F.D.P. SEMESTRE 2018-1 1 DISEÑO DE PROGRAMAS ALGORITMOS 1.- Algoritmo es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos. www.monografias.com 2.- Un algoritmo es una serie de operaciones detalladas y no ambiguas a ejecutar paso a paso, y que conducen a la resolución de un problema . . . Un algoritmo es el medio por el que se explica cómo se puede resolver un problema, mediante aproximaciones paso a paso. Se puede formular de muchas formas, siempre y cuando se realice de modo no ambiguo. “Metodología de la programación”, Joyanes. Un algoritmo en su forma más general está constituido por tres partes: entrada, proceso y salida. La entrada es la información de partida, en ella se especifica(n) el(los) dato(s) que recibirá el proceso. El proceso es un conjunto de eventos organizados que conforman un acontecimiento. Es el conjunto de operaciones (matemáticas, lógicas, etc.) o manipulaciones que se deben realizar con los datos para llegar a la obtención de resultados. La salida es el resultado, o conjunto de resultados, obtenido(s) al aplicar el proceso a la información proporcionada en la entrada. Así podemos observar que, un algoritmo describe la transformación de la entrada en la salida.

DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

Embed Size (px)

Citation preview

Page 1: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

1

DISEÑO DE PROGRAMAS

ALGORITMOS 1.- Algoritmo es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos.

www.monografias.com

2.- Un algoritmo es una serie de operaciones detalladas y no ambiguas a ejecutar paso a paso, y que conducen a la resolución de un problema . . . Un algoritmo es el medio por el que se explica cómo se puede resolver un problema, mediante aproximaciones paso a paso. Se puede formular de muchas formas, siempre y cuando se realice de modo no ambiguo.

“Metodología de la programación”, Joyanes.

Un algoritmo en su forma más general está constituido por tres partes: entrada, proceso y salida.

La entrada es la información de partida, en ella se especifica(n) el(los) dato(s) que recibirá el proceso. El proceso es un conjunto de eventos organizados que conforman un acontecimiento. Es el conjunto de operaciones (matemáticas, lógicas, etc.) o manipulaciones que se deben realizar con los datos para llegar a la obtención de resultados. La salida es el resultado, o conjunto de resultados, obtenido(s) al aplicar el proceso a la información proporcionada en la entrada. Así podemos observar que, un algoritmo describe la transformación de la entrada en la salida.

Page 2: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

2

Características fundamentales de un algoritmo Un buen algoritmo debe poseer las siguientes características:

a) Debe ser preciso. Es decir se tiene que indicar el orden de realización de cada paso sin ambigüedad alguna.

b) Debe estar definido. Si se siguen sus pasos más de una vez con las mismas entradas, se debe obtener el mismo resultado cada vez.

c) Debe ser finito. Debe terminar en algún momento. d) Debe ser correcto. Debe estar libre de errores o defectos. e) Debe tener al menos una salida y está debe ser perceptible. f) Debe ser sencillo y legible. g) Debe ser eficiente y efectivo. Tiene que lograr el resultado que se desea de la

forma más adecuada posible. h) Se ha de desarrollar en el menor tiempo posible.

Lenguajes algorítmicos Un algoritmo puede ser expresado por pseudocódigo y/o diagramas de flujo. El pseudocódigo es una técnica para expresar en lenguaje natural la lógica de un algoritmo, es decir, su flujo de control. Los pseudocódigos utilizan palabras claves como HACER, LEA, ESCRIBA, SI-ENTONCES-EN CASO CONTRARIO, FIN DE SI, REPETIR HASTA, REPETIR MIENTRAS, etc. El pseudocódigo es un modo de plantear un proceso de forma que su traducción a un lenguaje de programación sea sencilla para un programador. Los diagramas de flujo de datos (dfds) son la representación gráfica de los algoritmos. A través de diversos símbolos se plasman los procedimientos, la secuencia y el orden que se indica en el algoritmo. Ejemplo:

Pseudocódigo 1.- INICIO 2.- Entero: Calificación 3.- ESCRIBA “¿Cuánto obtuviste en tu laboratorio?” 4.- LEA Calificación 5.- SI Calificación >=6 entonces 6.- ESCRIBA “Aprobado” 7.- EN CASO CONTRARIO 8.-ESCRIBA “Reprobado” 9.- FIN DE SI 10.- FIN

Diagrama de flujo de datos

Inicio

Entero:

Calificacion

Calificacion

Reprobado

Fin

¿Cuánto obtuviste

en tu laboratorio?

Aprobado

Calificacion > = 6

S I N O

Page 3: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

3

Construcción de algoritmos La construcción de un algoritmo requiere de las siguientes fases:

1) Análisis: definición del problema, especificaciones de entrada, especificaciones de salida. Se tiene que considerar con qué datos se cuentan, cuáles datos serán solicitados, cuáles son las restricciones, cuál debe ser la salida o salidas esperadas.

2) Algoritmo: desarrollo de la secuencia lógica y detallada de los pasos para la

resolución del problema. 3) Prueba del algoritmo, conocida como prueba de escritorio: consiste en seguir los

pasos del algoritmo mediante la introducción de datos representativos, para la verificar si el algoritmo cumple o no con su objetivo.

Recomendaciones adicionales: La fase de análisis es un elemento trascendental en la elaboración de algoritmos y la resolución de problemas en general, así que no olvide: definir adecuadamente el problema. Esté seguro de entender claramente cuál es el objetivo que se desea alcanzar, resuelva el problema verdadero y no uno que usted suponga o perciba erróneamente. De igual importancia es tener bien claro cuáles son las restricciones con las que se trabajará, cuáles son los elementos con los que se cuenta, cuáles se solicitarán y quién se los proporcionará. Tome en cuenta los requisitos para presentar los resultados, formatos, tiempos, etc.

Después de haber definido adecuadamente el problema genere posibles soluciones, analícelas y opte por la más viable.

Implemente. Lleve a cabo la realización del plan que eligió en el punto anterior. Evalúe. Verifique si los resultados obtenidos cumplen con el objetivo planteado de

manera adecuada y son satisfactorios, de ser así ha terminado, en caso contrario vuelva a la fase de análisis.

Considere también que:

En la resolución de un problema complejo, éste se divide en varios subproblemas que a su vez pueden ser divididos en otros más sencillos. Se procede de esta manera hasta que los subproblemas puedan ser resueltos con mayor facilidad. No vea el problema como una gran masa, divida y vencerá.

Relacione el problema con otro semejante. Aproveche su experiencia.

Page 4: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

4

Pseudocódigo y diagramas de flujo El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común, instrucciones de programación y palabras clave que definen las estructuras básicas. Su objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un problema. Es una herramienta ágil para el estudio y diseño de aplicaciones. Un diagrama de flujo de datos puede describir de modo gráfico la estructura lógica de un algoritmo. Para lograr esto los dfds se apoyan en diversos símbolos, siendo algunos de los más usuales los que se presentan a continuación:

Símbolo Función

Inicio/fin

Delimita el inicio y fin de un dfd.

Proceso

Cualquier tipo de operación que origine cambio de valor, asignación, operaciones aritméticas, etc.

Entrada

Cualquier tipo de de introducción de datos. Expresa lectura.

Salida

Para representar la impresión de un resultado. Expresa escritura.

Subrutina

Llamada a subrutina, función o procedimiento. Este es un modulo independiente del programa principal, que es llamado desde dicho programa, realiza una tarea determinada y regresa al terminar su tarea al programa principal.

Decisión

Indica operaciones lógicas o de comparación entre datos. En función del resultado obtenido, determina qué camino se debe seguir. Tiene dos salidas, respuesta si o respuesta no. En algunas ocasiones la alternativa no se omite.

Selección múltiple

Para seleccionar una opción de varias predeterminadas. En su interior se almacena un selector que dependiendo del valor de una variable sigue por una de las ramas o caminos alternativos.

Flujo

Indican el flujo de datos en el dfd.

Page 5: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

5

Símbolo Función

Conector

Sirve para enlazar dos partes cualesquiera de un dfd a traves de un conector de salida y otro en la entrada. Se utliza en la misma página del dfd.

Conector

Conexión entre dos puntos del dfd situados en páginas diferentes.

Se añaden los siguientes símbolos que, aunque nos son estándar, ayudarán a llevar a cabo una transición más sencilla entre los diagramas de flujo y los programas, dada la similitud que ofrecen con algunas instrucciones de programación.

Símbolo Función

Repetición “Mientras Que”

mqMQ

Proceso

Fin MQ

Sirve para repetir una operación o conjunto de operaciones mientras que la condición que se establezca sea verdadera.

Repetición “Para”

mq Para X=VI, VF, INC

Instrucciones

Fin Para

Sirve para repetir una operación o conjunto de operaciones un número determinado de veces. Se debe establecer un valor inicial, un valor final y un incremento.

Reglas para la construcción de dfds El proceso para la construcción de un dfd no supone un método rígido, más bien éste depende de las habilidades y creatividad del diseñador. Sin embargo, se pueden enunciar algunas reglas de tipo general que faciliten el proceso de construcción de un dfd: 1.- Todo diagrama debe tener un principio y un final.

2.- Las líneas de conexión o de flujo deben ser siempre rectas. Se recomienda, en la medida de las posibilidades, que sean sólo verticales y horizontales (no deben cruzarse ni estar inclinadas). Para conseguir lo anterior se debe recurrir a conectores, numerados convenientemente. Estos conectores deben ser usados sólo en caso de ser necesario.

Page 6: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

6

3.- Las líneas que enlazan los símbolos entre sí deben estar todas conectadas. Cada línea o flecha debe partir de un símbolo y terminar en otro. 4.- Se deben dibujar todos los símbolos de forma que pueda seguirse el proceso visualmente de arriba hacia abajo y de izquierda a derecha. 5.- Realizar un gráfico claro y equilibrado, procurando que el flujo central del diagrama sea la parte central de la hoja de papel. 6.- Evitar la utilización de terminología específica de los lenguajes de programación. 7.- En las operaciones lógicas recurrir preferentemente a la lógica positiva que a la lógica negativa (es más claro expresar “si A==B” que “si no es A<>B”). 8.- A cada bloque o símbolo se accede por arriba y/o por la izquierda y se sale por abajo y/o por la derecha. Las entradas pueden ser varias pero la salida es única excepto en los casos de decisión y selección múltiple.

9.- Al margen de los diagramas se deben realizar las anotaciones que sean necesarias para que éstos sean comprensibles, no sólo para la persona que lo elaboró sino también para cualquier persona ajena al mismo y sobre todo para cuando sea necesario llevar a cabo una actualización o modificación del diagrama. 10.- Siempre que sea posible, es conveniente que el diagrama no sobrepase una página, en caso que esto no pueda ser así se deben numerar adecuadamente las hojas del diagrama, y utilizar conectores de paginas que indiquen sin duda la dirección correcta del flujo (de donde viene y hacía donde se dirige).

Comprobación de diagramas (Prueba de escritorio)

Terminado el diagrama de flujo se debe tomar un conjunto de datos significativos para comenzar su lectura, de arriba hacia abajo y de izquierda a derecha, siguiendo paso a paso todos los símbolos, introduciendo los datos en los momentos oportunos, observando cómo responde el diagrama ante ellos y verificando si los resultados son correctos y coherentes.

Page 7: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

7

Definición de estructuras de control

A continuación se presentan las estructuras de control utilizadas en la construcción de algoritmos, se muestra el pseudocódigo y diagrama de flujo correspondiente. Secuencia Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es decir, las instrucciones se ejecutan de arriba hacia abajo.

Pseudocódigo

Instrucción 1 Instrucción 2 Instrucción 3 . . . Instrucción n

Diagrama de flujo de datos

Instruccion 1

Instruccion 2

Instruccion 3

Decisión simple

La instrucción de decisión determina si una instrucción se ejecuta o no, según el cumplimiento de una condición P. La condición P es una variable booleana o una función reducible a un valor booleano (Verdadero / Falso). Si esta condición es cierta se ejecuta Instrucciones1, si no es así, ésta no se ejecuta. Ejemplos: “Si pasas por la tiendita, me compras un chocolate”, “Si hace frío, te abrigas”.

Pseudocódigo Si P entonces Instrucciones 1 Fin de si

Instrucciones 2 Nota: observe que el “Fin de si” sólo aparece en el pseudocódigo.

Diagrama de flujo de datos

P

Instrucciones 1

Instrucciones 2

S I

N O

Page 8: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

8

Decisión compuesta

La instrucción de decisión compuesta realiza una instrucción o conjunto de instrucciones de dos posibles, según el cumplimiento de una condición P.

Pseudocódigo Si P entonces Instrucciones 1 En caso contrario Instrucciones 2 Fin de si

Diagrama de flujo de datos

P

Instrucciones 2Instrucciones 1

S I N O

Si la condición P es cierta se ejecuta Instrucciones1, si no es así, entonces se ejecuta Instrucciones2. Ejemplo: “Si está cansado tome un descanso, en caso contrario, continúe trabajando”.

Decisión múltiple También es común el uso de una decisión múltiple que equivaldría a anidar varias funciones de decisión.

Pseudocódigo si Condición1 entonces Instrucciones1 en caso contrario si Condición2 entonces Instrucciones2 . . . en caso contrario si Condiciónn entonces Instruccionesn - 1 en caso contrario Instruccionesn fin si

Diagrama de flujo de datos

NoS i

S i

No

S i

No

En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de ellas se cumple las demás tienen que ser falsas necesariamente. En esta estructura si Condición1 es cierta, entonces se ejecuta sólo Instrucciones1. En general, si Condicióni es verdadera, entonces sólo se ejecuta Instruccionesi.

Page 9: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

9

Selección múltiple Una construcción similar a la anterior (equivalente en algunos casos) es la que se muestra a continuación.

Pseudocódigo seleccionar Indicador caso Valor1: Instrucciones1 caso Valor2: Instrucciones2 . . . caso Valorn-1: Instruccionesn-1 OPCIONAL [en otro caso: Instruccionesn] Fin seleccionar Indicador

Diagrama de flujo de datos

Sel. Indicador

Caso V1 Caso V2 En Otro Caso

Fin Sel. indic.

... Caso Vn-1

Ints. 1 Ints. 2 Ints. n-1 Ints. n

En este caso Indicador es una variable cuyo valor es comparado en cada caso con Valori, si en algún caso coinciden ambos valores, entonces se ejecutarán las Instruccionesi correspondientes. La sección en otro caso es análoga a la sección en caso contrario de la decisión múltiple. Repetición “Mientras Que” Las instrucciones iterativas abren la posibilidad de realizar una secuencia de instrucciones más de una vez. El bucle se repite mientras la condición P sea cierta, si al llegar por primera vez al bucle la condición es falsa, el cuerpo del bucle no se ejecuta ninguna vez.

Pseudocódigo Mientras P hacer

Instrucciones Fin mientras

Diagrama de flujo de datos

mqMQ P

Proceso

Fin MQ

Page 10: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

10

Repetición “Para” El ciclo para se usa cuando se desea iterar sobre una instrucción, o conjunto de instrucciones, un número determinado de veces. Está conformado por una variable contadora, un valor final y un incremento. Su función es la siguiente: el valor inicial se asigna a la variable contadora, ésta se compara con el valor final y si no lo excede ejecuta el conjunto de instrucciones, al ejecutar la última se aumenta la variable contadora en el valor indicado por el incremento, enseguida se realiza nuevamente la comparación con el valor final, si aún no lo excede se vuelve a ejecutar el conjunto de instrucciones. Esta operación se repite mientras que la variable contadora no exceda el límite establecido por el valor final. Si el contador excede el valor final, la ejecución continuará a partir de la instrucción que sigue al cierre del para.

Pseudocódigo Para X=VI hasta VF incremento=INC hacer Instrucciones Fin Para

Diagrama de flujo de datos

mq Para X=VI, VF, INC

Instrucciones

Fin Para

Nota: En los ciclos es común usar variables que vayan contando o acumulando valores que ayuden a obtener un resultado. Por esto es importante tener claro esto conceptos: Contador: Es una variable destinada a contener distintos valores, que se van incrementando o decrementando cada vez que el ordenador realiza la operación que lo contiene. El incremento o decremento son siempre constantes. Acumulador: Es una variable que permite guardar un valor que se incrementa o decrementa de forma no constante durante el proceso.

El anidamiento. Todas las estructuras de control pueden contener dentro de si mismas a cualquier otra estructura de control sin problema alguno. De hecho, hay problemas cuya solución requiere que se lleven a cabo diferentes tipos de anidamientos de las estructuras de control. Ejemplos de anidamientos son:

Para

Fin Para

S i N o

S i N o

Para

MQ

Page 11: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

11

Diseño de algoritmos El primer punto a considerar en el diseño e implementación de algoritmos es que existen dos tipos de algoritmos:

• No numéricos: Son aquellos en los cuales su conjunto de instrucciones no involucran procesos matemáticos. Ejemplos de ellos los encontramos en las recetas de cocina, cómo armar un carrito de juguete, cómo instalar un software en una computadora, etcétera.

• Numéricos: Son aquellos en los cuales se utilizan procesos matemáticos para la

resolución de problemas. Constantes, variables y expresiones

Una constante es un objeto de valor invariable. Este valor no cambia durante el proceso. Para expresar una constante se escribe explícitamente su valor. Una variable es un objeto cuyo valor puede ser modificado durante la realización del proceso. Los diferentes nombres que pueden tomar las constantes, las variables y las funciones son

conocidos como identificadores. Los caracteres permitidos en los identificadores son las letras de la A a la Z (en mayúsculas y minúsculas), los dígitos del 0 al 9 y el guión bajo (_). El identificador debe comenzar por una letra. Ejemplos válidos: area, factorial, serie, pi, suma_vectores( ), calificacion_20

Ejemplos no válidos: л=3.1416, $ueldo, gasto-b, video&nómina Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Ejemplos: proporcion=(0.5*gastos)-inversion, A=b+c, area=pi*radio^2, Funcion= 3*x^2+sen(x). Las expresiones se clasifican en dos tipos: 1) expresiones aritméticas y 2) expresiones booleanas. Los símbolos utilizados para estas operaciones son:

1)

Operación Operador Ejemplo Resultado

Exponenciación ^ 12^5 248832

Multiplicación * 3.1416*2 6.2832

División / 15864/70 226.63

División entera \ 17\3 5

Módulo (residuo de la división entera)

mod 21 mod 2 1

Suma + 564.289+450.87 1015.159

Resta - 75361.15-7567.23 67793.92

Operador Jerarquía Operación

( ) Mayor Anida expresiones.

*, /, mod, \ Multiplicación, división, módulo,

división entera.

+, - Menor Suma, resta.

Page 12: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

12

2)

Operación Operador Ejemplo Resultado

Igual que == ‘Hola’ == ‘Adios’ Falso

Diferente a <> 3 <> 89 Verdadero

Menor que < -101 < 2 Verdadero

Mayor que > 159 >357 Falso

Menor o igual que <= 5 <= 4 Falso

Mayor o igual que >= 7316 >= 7316 Verdadero

Otros operadores que pueden ser usados en las expresiones lógicas son: Y (and), O (or), NO (not).

Page 13: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

13

Ejemplo: realizar el algoritmo de la suma de dos números. Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado:

A) Pesudocódigo: Entradas: 2 números reales.

Salida: el resultado de la suma. Restricciones: ninguna. 1.- INICIO 2.- Real: Num1, Num2, Resul_Suma 3.- ESCRIBA “Deme 2 números para sumarlos.” 4.- LEA Num1 y Num2 5.- REALIZAR Resul_Suma = Num1 + Num2 6.- ESCRIBA “El resultado de la suma es”, Resul_Suma 7.- FIN

B) Diagrama de flujo de datos

Inicio

Real:

Num1, Num2,

Resul_Suma

"Deme 2 números

para sumarlos"

Num1, Num2

Resul_Suma =

Num1+Num2

"El resultado de

la suma es",

Resul_Suma

Fin

C) Prueba de escritorio

Para los valores: Num1=5 y Num2=8. INICIO 5.- Resul_Suma=5+8=13. FIN Para los valores: Num1=-2 y Num2=-6. INICIO 5.- Resul_Suma=-2+(-6)=-8. FIN Para los valores: Num1=9 y Num2=-5. INICIO 5.- Resul_Suma=9+(-5)=4. FIN Para los valores: Num1=23 y Num2=77. INICIO 5.- Resul_Suma=23+77=100. FIN Para los valores: Num1=21 y Num2=19. INICIO 5.- Resul_Suma=21+19=40. FIN

Page 14: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

14

Ejemplo: elaborar un algoritmo que calcule la distancia entre dos puntos dadas las coordenadas A1(x1, y1) y A2(x2, y2). La distancia entre dos puntos está dada por: Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado:

A) Pseudocódigo

Entradas: los puntos A1(x1, y1) y A2(x2, y2). Salida: la distancia entre los puntos A1 y A2. Restricciones: ninguna.

1.- INICIO 2.- Real: X1, Y1, X2, Y2, Distancia 3.- ESCRIBA “Proporcione la coordenada (X1, Y1).” 4.- LEA X1 5.- LEA Y1 6.- ESCRIBA “Proporcione la coordenada (X2, Y2).” 7.- LEA X2 8.- LEA Y2 9.- REALIZAR Distancia = 10.- ESCRIBA “La distancia entre los puntos A1 y A2 es:”, Distancia 11.- FIN

B) Diagrama de flujo de datos

Inicio

Real:

X1, Y1, X2, Y2,

Distancia

"Proporcione la

coordenada

(X1, Y1)."

X1, Y1

Distancia =

SQRT((X1-X2)^2+

(Y1-Y2)^2))

"La distancia entre

los puntos A1 y A2

es:", Distancia

Fin

X2, Y2

"Proporcione la

coordenada

(X2, Y2)."

C) Prueba de escritorio

Para los valores: A1(10, 10) y A2(-20, -20). INICIO 9.- Distancia = Distancia = 42.42640687. FIN Para los valores: A1(0, 0) y A2(7, 7). INICIO 9.- Distancia = Distancia = 9.899494937. FIN Para los valores: A1(5, 9) y A2(-12, -45). INICIO 9.- Distancia = Distancia = 56.61271942. FIN

d = (x1-x2)2+(y1-y2)2

(x1-x2)2+(y1-y2)2

(10-(-20))2+(10-(-20))2

(0-7)2+(0-7)2

(5-(-12))2+(9-(-45))2

Page 15: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

15

Ejemplo: haga un algoritmo que pida el peso en toneladas, la longitud en pies y el código de un dinosaurio y dé como salida su código, su peso en kilogramos y su longitud en metros. Nota: 1 tonelada=1000 kgs. y 1 pie=0.3047 mts. Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado:

A) Pseudocódigo

Entradas: código del dinosaurio, su peso en toneladas y longitud en pies. Salidas: código del dinosaurio, su peso en kilogramos y longitud en metros. Restricciones: ninguna.

1.- INICIO 2.- Entero: Código_dino 3.- Real: Peso, Longitud 4.- ESCRIBA “¿Cuál es el código de su dinosaurio?” 5.- LEA Nombre_dino 6.- ESCRIBA “ ¿Cuánto pesa en toneladas su dinosaurio?” 7.- LEA Peso 8.- ESCRIBA “¿Cuánto mide en pies su dinosaurio?” 9.- LEA Longitud 10.- REALIZAR Peso = Peso*1000 11.- REALIZAR Longitud = Longitud*0.3047 12.- ESCRIBA “Para el dinosuario:”, Código_dino 13.- ESCRIBA “Peso [Kg.]:”, Peso 14.- ESCRIBA “Longitud [mts.]:”, Longitud 15.- FIN

B) Diagrama de flujo de datos

Inicio

Real: Peso, longitud

"¿Cuál es el código

de su

dinosaurio?"

Codigo_dino

Peso = Peso*1000

Longitud=

Longitud*0.3047

"Para el dinosaurio",

Código_dino

"Peso [Kg]:",

Peso

"Longitud [mts]:",

Longitud

Fin

Peso

Entero:

Codigo_dino

"¿Cuánto pesa en

toneladas su

dinosaurio?"

Longitud

"¿Cuánto mide en

pies su

dinosaurio?"

C) Prueba de escritorio Para los valores: Código: 678, Peso: 1 tonelada y Longitud: 45 pies. INICIO 5.- Código = 678. 10.- Peso = 1*1000= 1000 Kgs.

11.- Longitud = 45* 0.3047= 13.7115 mts. FIN

Para los valores: Código: 007, Peso: 29 toneladas y Longitud: 61 pies. INICIO 5.- Código: 007. 10.- Peso = 29*1000= 29000 Kgs.

11.- Longitud = 61* 0.3047= 18.5867 mts. FIN

Page 16: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

16

Ejemplo: realice un algoritmo que implemente una función de temperatura a través de un grillo. Según una función “científicamente” determinada como: Temperatura (oC)= n/4 + 40 donde "n" es el número de sonidos emitidos por el grillo en un minuto. Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado:

A) Pseudocódigo

Entrada: el número de sonidos emitidos por el grillito. Salida: un valor de temperatura en grados Celsius. Restricciones: se debe asegurar que el número de sonidos emitidos por el grillo sea mayor o igual a 1. Porque un grillo no puede emitir por ejemplo –1 sonido, y esperar al menos 1 sonido nos asegura que el grillo no ha muerto o no ha huido.

1.- INICIO 2.- Entero: Sonidos_Grillo 3.- Real: Temperatura 4.- ESCRIBA “¿Cuántos sonidos ha emitido su grillo?.” 5.- LEA Sonidos_Grillo 6.- SI Sonidos_Grillo >=1 ENTONCES 7.- REALIZAR Temperatura = Sonidos_Grillo/4+40 8.- ESCRIBA “Temperatura(oC) = ”, Temperatura 9.- EN CASO CONTRARIO 10.- ESCRIBA “Verifique que su grillo no halla huido y que esté vivo.” 11.- FIN DE SI 12.- FIN

B) Diagrama de flujo de datos

Inicio

Entero: Sonidos_Grillo

Real:

"¿Cuántos sonidos

ha emitido su

grillo?"

Sonidos_Grillo

Fin

Temperatura

Sonidos_Grillo>=1

Tempertura =

Sonidos_Grillo/4+40

"Temperatura (oC)=",

Temperatura

"Verifique su

grillo no haya

huido y esté vivo"

SiNo

C) Prueba de escritorio

Para el valor: Sonidos_Grillo=5. INICIO 5.- Sonidos_Grillo=5. 6.- ¿Sonidos_Grillo>=1?, Sí, al paso 7.

7.- Temperatura = Sonidos_Grillo/4+40 = 41.25. FIN Para el valor: Sonidos_Grillo=-14. INICIO 5.- Sonidos_Grillo=-14. 6.- ¿Sonidos_Grillo>=1?, No, al paso 10. FIN

Para el valor: Sonidos_Grillo=0. INICIO 5.- Sonidos_Grillo=0. 6.-¿Sonidos_Grillo>=1?, No, al paso 10. FIN

Page 17: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

17

Ejemplo: Desarrolle un algoritmo que usando sólo 3 variables, lea 2 números e imprima el resultado de realizar las operaciones fundamentales +, -, *, / y la operación mod que devuelve el residuo de la dividir N1/N2. Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado:

A) Pseudocódigo

Entradas: dos número N1 y N2. Salidas: los resultados de las operaciones +, -, *, / y mod. Restricciones: Sólo se deben utilizar 3 variables, por lo que es necesario realizar cada una de las operaciones e inmediatamente después imprimir su resultado. Otra restricción está implícita en las operaciones / y mod ya que si el denominador es igual a cero se generan indeterminaciones, para prever que esto no suceda se pone una condición, si el denominador es diferente de cero se realizan las operaciones, en caso contrario se manda un mensaje de error.

1.- INICIO 2.- Real: N1, N2, Resultado 3.- ESCRIBA “Deme 2 números N1 y N2 para realizar: N1+N2, N1-N2, N1*N2, N1/N2 y N1 mod N2.” 4.- LEA N1, N2 5.- REALIZAR Resultado = N1+N2 6.- ESCRIBA “El resultado de la suma es:”, Resultado 7.- REALIZAR Resultado = N1-N2 8.- ESCRIBA “El resultado de la resta es:”, Resultado 9.- REALIZAR Resultado = N1*N2 10.- ESCRIBA “El resultado de la multiplicación es:”, Resultado 11.- SI N2 <> 0 ENTONCES 12.- REALIZAR Resultado = N1/N2 13.- ESCRIBA “El resultado de la división es:”, Resultado 14.- REALIZAR Resultado = N1 mod N2 15.- ESCRIBA “El residuo de la división es:”, Resultado 16.- EN CASO CONTRARIO 17.- ESCRIBA “ ERROR, N2 debe ser diferente de cero.” 18.- FIN DE SI 19.- FIN

Page 18: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

18

B) Diagrama de flujo de datos

Inicio

Real:

"Deme 2 números N1 y N2

para realizar:

N1+N2, N1-N2, N1*N2,

N1/N2 y N1 mod N2"

N1, N2

N1, N2, Resultado

Resultado=N1+N2

"El resultado de la suma

es:", Resultado

Resultado=N1-N2

"El resultado de la resta

es:", Resultado

Resultado=N1*N2

"El resultado de la

multiplicación es:",

Resultado

1

Fin

N2 != 0

"ERROR, N2 debe

ser diferente de cero"

SiNo

Resultado=N1/N2

"El resultado de la

división es:", Resultado

Resultado=N1modN2

1

"El residuo de la

división es:",

Resultado

C) Prueba de escritorio

Para los valores: N1 = 7 y N2 = 0. INICIO 5.- Resultado =7+0 =7. 7.- Resultado =7-0 = 7. 9.- Resultado =7*0 = 0. 11.- ¿N2 <> 0?, No, al paso 17. FIN Para los valores: N1 = -2 y N2 = 2. INICIO 5.- Resultado =-2+2 =0. 7.- Resultado =-2-2 = -4. 9.- Resultado =-2*2 = -4. 11.- ¿N2 <> 0?, Sí, al paso 12. 12.- Resultado =-2/2 = -1. 14.- Resultado =-2 mod 2 = 0. FIN

Page 19: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

19

Ejemplo: desarrolle un algoritmo que calcule el total a pagar por un producto adquirido en un país dado. Al comprar en este país el impuesto que se paga por el artículo comprado se da por el criterio siguiente: Hasta $20 no causan impuesto De $21 hasta $40 tienen el 30% el resto el 40% pero si el precio excede a los $500 se debe cobrar 50% de impuesto. Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado: A) Pseudocódigo

Entrada: el precio de un producto. Salida: el total a pagar por el producto, que equivale al precio base más el impuesto correspondiente. Restricciones: el precio del producto debe ser mayor a cero ya que no existen precios negativos, tampoco se indica que algún producto sea regalado (precio=0).

1.- INICIO 2.- Real: Precio_Base, Pago 3.- ESCRIBA “Dé el precio de su producto.” 4.- LEA Precio_Base 5.- SI Precio_Base > 0 ENTONCES 6.- SI Precio_Base <= 20 ENTONCES 7.- Pago = Precio_Base 8.- EN CASO CONTRARIO SI Precio_Base <= 40 ENTONCES 9.- Pago = Precio_Base + ( Precio_Base*0.3) 10.- EN CASO CONTRARIO SI Precio_Base <= 500 ENTONCES 11.- Pago = Precio_Base + ( Precio_Base*0.4) 12.- EN CASO CONTRARIO 13.- Pago = Precio_Base + ( Precio_Base*0.5) 14.- FIN DE SI 15.- FIN DE SI 16.- FIN DE SI 17.- ESCRIBA “Usted debe pagar: $”, Pago 18.- EN CASO CONTRARIO 19.- ESCRIBA “Precio no válido, intente otra vez” 20.- FIN DE SI 21.- FIN

Page 20: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

20

B) Diagrama de flujo de datos

Inicio

Real:

"Dé el precio de

su producto"

Precio_Base

Precio_Base, Pago

Precio_Base>0SiNO

Precio_Base<=20NOSI "Precio no válido

intente otra vez"

Precio_Base<=40NOSI

Pago=Precio_Base

Pago=

Precio_Base

+

(Precio_Base*0.3)

Precio_Base<=500NOSI

Pago=

Precio_Base

+

(Precio_Base*0.4)

Pago=

Precio_Base

+

(Precio_Base*0.5)

"Usted debe pagar: $",

Pago

Fin

C) Prueba de escritorio

Para el valor: Precio_Base=-100. INICIO 5.- ¿ Precio_Base > 0?, No, al paso 20 FIN

Page 21: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

21

Para el valor: Precio_Base=1000. INICIO 5.- ¿ Precio_Base > 0?, Sí, al paso 6. 6.- ¿ Precio_Base <= 20?, No, al paso 8. 8.- ¿ Precio_Base <= 40?, No, al paso 10. 10.- ¿Precio_Base <= 500?, No, al paso 13. 13.- Pago = Precio_Base + ( Precio_Base*0.5)=1000+(1000*0.5)=1000+500=1500. FIN

Para el valor: Precio_Base=400. INICIO 5.- ¿ Precio_Base > 0?, Sí, al paso 6. 6.- ¿ Precio_Base <= 20?, No, al paso 8. 8.- ¿ Precio_Base <= 40?, No, al paso 10. 10.- ¿Precio_Base <= 500?, SÍ, al paso 11. 11.- Pago = Precio_Base + ( Precio_Base*0.4)=400+(400*0.4)=400+160=560. FIN

Para el valor: Precio_Base=30. INICIO 5.- ¿ Precio_Base > 0?, Sí, al paso 6. 6.- ¿ Precio_Base <= 20?, No, al paso 8. 8.- ¿ Precio_Base <= 40?, Sí, al paso 9. 9.- Pago = Precio_Base + ( Precio_Base*0.3)=30+(30*0.3)=30+9=39. FIN

Para el valor: Precio_Base=10. INICIO 5.- ¿ Precio_Base > 0?, Sí, al paso 6. 6.- ¿ Precio_Base <= 20?, Sí, al paso 7. 7.- Pago = Precio_Base =10. FIN

Para el valor: Precio_Base=0. INICIO 5.- ¿ Precio_Base > 0?, No, al paso 20. FIN

Page 22: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

22

Ejemplo: realice un algoritmo que dado un valor de x calcule el valor de y según la siguiente función:

1.- 7x - 45

y = ƒ(x) = 2.- x2 + 8x

3.- x + 20 Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado: A) Pseudocódigo

Entradas: el valor de x y la opción de la función a calcular.

Salida: el valor de y.

Restricciones: las opciones de la función a calcular sólo pueden ser 1, 2 ó 3, cualquier otro valor es incorrecto.

1.- INICIO 2.- Entero: Op_Funcion

3.- Real: Valor_x, Valor_y

4.- ESCRIBA “f(x): 1) 7x-45 2) x2+8x 3) x+20.” 5.- ESCRIBA “¿Qué opción desea ejecutar?” 6.- LEA Op_Funcion

7.- ESCRIBA “¿Cuál es el valor de x?”

8.- LEA Valor_x 9.- SELECCIONAR Op_Funcion 10.- CASO 1:

11.- HACER Valor_y = 7*Valor_x-45

12.- ESCRIBA “y = “,Valor_y

13.- CASO 2:

14.- HACER Valor_y = Valor_x2+8*Valor_x

15.- ESCRIBA “y = “,Valor_y

16.- CASO 3:

17.- HACER Valor_y = Valor_x+20

18.- ESCRIBA “y = “,Valor_y

19.- EN OTRO CASO: 20.- ESCRIBA “Error: ¡¡No es una opción válida!!” 21.- FIN SELECCIONAR Op_Funcion 22.- FIN

Page 23: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

23

B) Diagrama de flujo de datos

Page 24: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

24

C) Prueba de escritorio

Para los valores: Op_Funcion=0 y Valor_x=1. INICIO 9.- SELECCIONAR Op_Fun, EN OTRO CASO, al paso 20. FIN

Para los valores: Op_Funcion=1 y Valor_x=-100. INICIO 9.- SELECCIONAR Op_Fun, CASO 1, al paso 11.

11.- Valor_y = 7*Valor_x-45 = 7*(-100) -45 = -745. FIN

Para los valores: Op_Funcion=3 y Valor_x=86. INICIO 9.- SELECCIONAR Op_Fun, CASO 3, al paso 17.

17.- Valor_y = Valor_x+20 = 86 +20 = 106. FIN

Para los valores: Op_Funcion= 2 y Valor_x=0. INICIO 9.- SELECCIONAR Op_Fun, CASO 2, al paso 14.

14.- Valor_y = Valor_x2+8*Valor_x = 02 +8*0=0. FIN

Ejemplo: elabore un algoritmo que lea una letra y un número y determine si la letra pertenece a las vocales y si el número pertenece a lo pares. Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado: A) Pseudocódigo

Entradas: un número y una letra. Salida: informar si la letra es vocal y si el número es par. Una manera de comprobar si un número es par es dividiendo entre 2 y si el residuo de la división es 0 se puede concluir que el número es par. Restricciones: ninguna.

1.- INICIO 2.- Entero: Numero. 3.- Carácter: Letra. 4.- ESCRIBA “Deme un letra y le diré si es vocal.” 5.- LEA Letra 6.- ESCRIBA “Deme un número y le diré si es par.” 7.- LEA Numero 8.- SI (Numero mod 2) == 0 ENTONCES 9.- ESCRIBA “El número dado es par.” 10.- EN CASO CONTRARIO 11.- ESCRIBA “El número dado no es par.” 12.- FIN DE SI 13.- SI (Letra==’a’ OR Letra==’e’ OR Letra==’i’ OR Letra==’o’ OR Letra==’u’) ENTONCES 14.- ESCRIBA “La letra ingresada es vocal.” 15.- EN CASO CONTRARIO 16.- ESCRIBA “La letra ingresada no es vocal.” 17.- FIN DE SI 18.- FIN

Page 25: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

25

B) Diagrama de flujo de datos

C) Prueba de escritorio

Para los valores: Numero=10 y Letra=’a’. INICIO 8.- ¿(10 mod 2)==0?, ¿0==0?, Sí, al paso 9.

13.- ¿ Letra==’a’ o Letra==’e’ o Letra==’i’ o Letra==’o’ o Letra==’u’?, ‘a’==’a’, Sí, al paso 14. FIN Para los valores: Numero=7 y Letra=’u’. INICIO 8.- ¿(7 mod 2)==0?, ¿1==0?, No, al paso 11.

13.- ¿ Letra==’a’ o Letra==’e’ o Letra==’i’ o Letra==’o’ o Letra==’u’?, ‘u’==’u’, Sí, al paso 14. FIN Para los valores: Numero=86 y Letra=’z’. INICIO 8.- ¿(86 mod 2)==0?, ¿0==0?, Sí, al paso 9.

13.- ¿ Letra==’a’ o Letra==’e’ o Letra==’i’ o Letra==’o’ o Letra==’u’?, No, al paso 16. FIN Para los valores: Numero=21 y Letra=’g’. INICIO 8.- ¿(21 mod 2)==0?, ¿1==0?, No, al paso 11.

13.- ¿ Letra==’a’ o Letra==’e’ o Letra==’i’ o Letra==’o’ o Letra==’u’?, No, al paso 16. FIN Para los valores: Numero=2 y Letra=’o’. INICIO 8.- ¿(2 mod 2)==0?, ¿0==0?, Sí, al paso 9.

13.- ¿ Letra==’a’ o Letra==’e’ o Letra==’i’ o Letra==’o’ o Letra==’u’?, ‘o’==’o’, Sí, al paso 14. FIN

Page 26: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

26

Ejemplo: realice un algoritmo que pida 3 calificaciones obtenidas por un alumno en sus exámenes parciales y regrese su promedio. Elabore el pseudocódigo, el diagrama de flujo y la prueba de escritorio correspondientes. Resultado:

A) Pseudocódigo

Entradas: tres calificaciones. Salida: el promedio de las tres calificaciones. Para resolver este problema es recomendable usar el ciclo “Para” ya que se sabe exactamente cuantas

iteraciones se realizarán. Restricciones: ninguna.

1.- INICIO 2.- Real: Calificacion, Promedio, Acumulador=0 3.- Entero: i 4.- ESCRIBA “Obtengamos el promedio de sus 3 examenes parciales.” 5.- PARA i=1 HASTA 3 INCREMENTO=1 HACER 6.- ESCRIBA “Escriba su Calificación.”

7.- LEA calificacion

8.- HACER Acumulador=Acumulador +Calificacion 9.- FIN PARA 10.- HACER Promedio=Acumulador/3 11.- ESCRIBA “Su promedio obtenido es: “, Promedio 12.- FIN

B) Diagrama de flujo de datos

C) Prueba de escritorio Para los valores: Calificacion=8, Calificacion=6 y Calificacion=10. INICIO 5.- ¿i=3?, No, i=1, al paso 6. 8.- Acumulador=Acumulador+Calificacion=0+8=8. 5.- ¿i=3?, No, i=2, al paso 6. 8.- Acumulador=Acumulador+Calificacion=8+6=14. 5.- ¿i=3?, Sí, i=3, al paso 6. 8.- Acumulador=Acumulador+Calificacion=14+10=24. 5.- ¿i=3?, No, i=4, al paso 10. 10.- Promedio=Acumulador/3=24/3=8. FIN

Para los valores: Calificacion=4, Calificacion=6 y Calificacion=6. INICIO 5.- ¿i=3?, No, i=1, al paso 6. 8.- Acumulador=Acumulador+Calificacion=0+4=4. 5.- ¿i=3?, No, i=2, al paso 6. 8.- Acumulador=Acumulador+Calificacion=4+6=10. 5.- ¿i=3?, Sí, i=3, al paso 6. 8.- Acumulador=Acumulador+Calificacion=10+6=16. 5.- ¿i=3?, No, i=4, al paso 10. 10.- Promedio=Acumulador/3=16/3=5.3333. FIN

Page 27: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

27

Ejemplo: Barry González preocupado por su peso (110 kgs.) y por sus constantes visitas al "Tortón Loco", quiere saber cuánto subió de peso en esta quincena. En promedio el Sr. González aumenta 1/2 kg. cada vez que acude a la tortería. Elabore un algoritmo que le permita a Barry conocer su peso final. Presente el pseudocódigo, diagrama de flujo y la prueba de escritorio correspondientes. Resultado:

A) Pseudocódigo

Entrada: el número de veces que Barry fue a la tortería. Salida: el peso final de Barry. Para resolver este problema es recomendable usar el ciclo “Para” ya que se sabe exactamente cuantas iteraciones se realizarán. Restricciones: ninguna.

1.- INICIO 2.- Real: Peso_Total=110.0, Acumulador=0.0 3.- Entero: Visitas, i 4.- ESCRIBA “Sr. Barry, ¿cuántas veces fue a la tortería en esta quincena?.” 5.- LEA Visitas 6.- PARA i=1 HASTA Visitas INCREMENTO=1 HACER 7.- HACER Acumulador = Acumulador+0.5 8.- ESCRIBA “Para la visita ”, i, “los kilos acumulados son ”, Acumulador 9.- FIN PARA 10.- HACER Peso_Total=Peso_Total+Acumulador 11.- ESCRIBA “Barry González en el total de sus visitas acumuló “, acumulador,” kgs.” 12.- ESCRIBA “ Y su peso final es “, Peso_Total 13.- FIN

B) Diagrama de flujo de datos

C) Prueba de escritorio Para el valor: Visitas=3. INICIO 6.- ¿i=3?, No, i=1, al paso 7. 7.- Acumulador=Acumulador+0.5=0.0+0.5=0.5. 6.- ¿i=3?, No, i=2, al paso 7. 7.- Acumulador=Acumulador+0.5=0.5+0.5=1.0. 6.- ¿i=3?, Sí, i=3, al paso 7. 7.- Acumulador=Acumulador+0.5=1.0+0.5=1.5. 6.- ¿i=3?, No, i=4, al paso 10. 10.- Peso_Total=Peso_Total+Acumulador=110.0+1.5=111.5. FIN Para el valor: Visitas=2. INICIO 6.- ¿i=2?, No, i=1, al paso 7. 7.- Acumulador=Acumulador+0.5=0.0+0.5=0.5. 6.- ¿i=2?, Sí, i=2, al paso 7. 7.- Acumulador=Acumulador+0.5=0.5+0.5=1.0. 6.- ¿i=2?, No, i=3, al paso 10. 10.- Peso_Total=Peso_Total+Acumulador=110.0+1.0=111.0. FIN

Page 28: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

28

Ejemplo: elabore un algoritmo que presente la suma de los N términos de la siguiente serie:

1+1/2-1/3+1/4-1/5+1/6-1/7+1/8 . . . (+/-) N El término N será determinado por el usuario. Proporcione también su pseudocódigo, diagrama de flujo y prueba de escritorio. Resultado:

A) Pseudocódigo

Entrada: el termino N, hasta donde se presentará la serie. Para resolver este problema es recomendable usar el ciclo “Para” ya que se sabrá exactamente cuantas

iteraciones se realizarán. Restricciones: ninguna.

1.- INICIO 2.- Entero: Term_N, Suma=1, Bandera=1, i 3.- ESCRIBA “¿Hasta qué término desea sumar?” 4.- LEA Term_N 5.- PARA i=2 HASTA Term_N INCREMENTO=1 HACER 6.- SI Bandera ==1 ENTONCES 7.- HACER Suma=Suma+1/i 8.- HACER Bandera =0 9.- EN CASO CONTRARIO 10.- HACER Suma=Suma-1/i 11.- HACER Bandera ==1 12.- FIN DE SI 13.- FIN PARA 14.- ESCRIBA “La suma de los N términos es “, Suma 15.- FIN

B) Diagrama de flujo de datos

C) Prueba de escritorio Para el valor: Term_N=5. INICIO 5.- ¿i=5?, No, i=2, al paso 6. 6.- ¿Bandera=1?, Sí, al paso 7. 7.- Suma=Suma+1/i=1+1/2=1.5. 8.- Bandera=0. 5.- ¿i=5?, No, i=3, al paso 6. 6.- ¿Bandera=1?, No, al paso 10. 10.- Suma=Suma-1/i=1.5-1/3=1.167. 11.- Bandera=1. 5.- ¿i=5?, No, i=4, al paso 6. 6.- ¿Bandera=1?, Sí, al paso 7. 7.- Suma=Suma+1/i=1.167+1/4=1.417. 8.- Bandera=0. 5.- ¿i=5?, Sí, i=5, al paso 6. 6.- ¿Bandera=1?, No, al paso 10. 10.- Suma=Suma-1/i=1.417-1/5=1.217. 11.- Bandera=1. 5.- ¿i=5?, No, i=6, al paso 15. FIN

Page 29: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

29

Ejemplo: Una pareja desea saber la suma de sus gastos en su más reciente viaje, pero no saben exactamente cuántos fueron. Desarrolle un algoritmo que les proporcione el total de sus gastos. Dé el pseudocódigo, diagrama de flujo y prueba de escritorio. Resultado:

A) Pseudocódigo

Entrada: Los “N” gastos realizados por la pareja. Para resolver este problema es recomendable usar el ciclo “Mentras que” ya que no se sabe exactamente cuantas iteraciones se realizarán, es decir se desconoce cuántos gastos hiso la pareja. Restricciones: ninguna.

1.- INICIO 2.- Entero: Respuesta=1. 3.- Real: Suma_Gastos=0.0, Gasto. 4.- ESCRIBA” Dé uno a uno sus gastos. Para terminar dé 0.” 5.- MIENTRAS Respuesta == 1 HACER 6.- ESCRIBA “¿Cuál es el monto de su gasto?.” 7.- LEA Gasto 8.- HACER Suma_Gastos = Suma_Gastos +Gasto 9.- ESCRIBA “¿Desea sumar otro gasto?, Si=1, No=0.” 10.- LEA Respuesta 11.- FIN MIENTRAS 12.-ESCRIBA “El total de sus gastos es : $”, Suma_Gastos. 13- FIN

B) Diagrama de flujo de datos

C) Prueba de escritorio Para los valores: Suponga que se darán los siguientes datos: se realizaron 6 gastos y los montos fueron 1) 1500.00, 2) 987.90, 3) 326.00, 4) 561.50, 5) 376.70 y 6) 159.90. INICIO 5.- ¿Respuesta=1?, Sí, al paso 6. 8.- Suma_Gastos = Suma_Gastos +Gasto = 0 + 1500.00 = 1500.00 5.- ¿Respuesta=1?, Sí, al paso 6. 8.- Suma_Gastos = Suma_Gastos+Gasto = 1500.00 + 987.90 = 2487.90 5.- ¿Respuesta=1?, Sí, al paso 6. 8.- Suma_Gastos = Suma_Gastos+Gasto = 2487.90 +326.00 = 2813.90 5.- ¿Respuesta=1?, Sí, al paso 6. 8.- Suma_Gastos = Suma_Gastos+Gasto = 2813.90 + 561.50 = 3375.40 5.- ¿Respuesta=1?, Sí, al paso 6. 8.- Suma_Gastos = Suma_Gastos+Gasto = 3375.40 + 376.70 = 3752.10 5.- ¿Respuesta=1?, Sí, al paso 6. 8.- Suma_Gastos = Suma_Gastos+Gasto = 3752.10+ 159.90 = 3912.00 5.- ¿Respuesta=1?, No al paso 12. FIN

Page 30: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

30

Ejemplo: La siguiente se llama la serie de ULAM en honor del matemático S. Ulam:

1) Comience con cualquier entero positivo: a) Si es par, divídalo entre 2. b) Si es impar multiplíquelo por 3 y agréguele 1.

2) Obtenga enteros sucesivamente repitiendo el proceso. 3) Al final, obtendrá el número 1, independientemente del entero inicial.

Ejemplo, cuando el entero inicial es 26, la secuencia será: 26, 13, 40, 20, 10, 5, 16, 8, 4, 2,1.

Elabore un algoritmo que lea un entero positivo y a partir de este obtenga e imprima la sucesión de ULAM. Presente el pseudocódigo, el diagrama de flujo y la prueba de escritorio. Resultado:

A) Pseudocódigo

Entrada: Un número entero positivo. Para resolver este problema es recomendable usar el ciclo “Mentras que”, ya que no se sabe cuantas iteraciones se realizarán. Las operaciones en a) y b), se repetirán mientras el resultado de éstas sea diferente de 1. Restricciones: el número en la entrada debe ser entero positivo.

1.- INICIO 2.- Entero: Termino, Residuo 3.- ESCRIBA” Proporcione un número para calcular la serie de ULAM.” 4.- LEA Termino 5.- SI Termino > 0 ENTONCES 6.- ESCRIBA Termino 7.- MIENTRAS Termino <> 1 HACER 8.- HACER Residuo = Termino mod 2 9.- SI Residuo == 0 ENTONCES 10.- Termino = Termino/2

11.- EN CASO CONTRARIO 12.- Termino = Termino*3+1 13.- FIN DE SI 14.-ESCRIBA Termino 15.- FIN MIENTRAS 16.- EN CASO CONTRARIO 17.- ESCRIBA “ERROR: El número debe ser positivo.”

18.- FIN DE SI 19.- FIN

Page 31: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

31

B) Diagrama de flujo de datos

Page 32: DISEÑO DE PROGRAMAS - Páginas Personalesprofesores.fi-b.unam.mx/vss/DOCS/ALGORITMOS_2018_1_FDP.pdf · traducción a un lenguaje de programación sea sencilla para un programador

F.I. UNAM.-F.D.P. SEMESTRE 2018-1

32

C) Prueba de escritorio Para el valor: -5.

INICIO 5.- ¿Termino > 0?, No, al paso 17. FIN

Para el valor: 1.

INICIO 5.- ¿Termino > 0?, Sí, al paso 6. 7.- ¿Termino <> 1?, No. FIN

Para el valor: 40.

INICIO 5.- ¿Termino > 0?, Sí, al paso 6. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 40 mod 2 = 0. 9.- ¿Residuo == 0?, Sí, al paso 10. 10.- Termino = Termino / 2 = 40 / 2 = 20. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 20 mod 2 = 0. 9.- ¿Residuo == 0?, Sí, al paso 10. 10.- Termino = Termino / 2 = 20 / 2 = 10. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 10 mod 2 = 0. 9.- ¿Residuo == 0?, Sí, al paso 10. 10.- Termino = Termino / 2 = 10 / 2 = 5. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 5 mod 2 = 1. 9.- ¿Residuo == 0?, No, al paso 12. 12.- Termino = Termino * 3 + 1 = 5 * 3 + 1 = 16. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 16 mod 2 = 0. 9.- ¿Residuo == 0?, Sí, al paso 10. 10.- Termino = Termino / 2 = 16 / 2 = 8. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 8 mod 2 = 0. 9.- ¿Residuo == 0?, Sí, al paso 10. 10.- Termino = Termino / 2 = 8 / 2 = 4. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 4 mod 2 = 0. 9.- ¿Residuo == 0?, Sí, al paso 10. 10.- Termino = Termino / 2 = 4 / 2 = 2. 7.- ¿Termino <> 1?, Sí, al paso 8. 8.- Residuo = Termino mod 2 = 2 mod 2 = 0. 9.- ¿Residuo == 0?, Sí, al paso 10. 10.- Termino = Termino / 2 = 2 / 2 = 1. 7.- ¿Termino <> 1?, No, al paso 15. FIN