UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO COLEGIO DE ... · 3. Construye el algoritmo, el diagrama de...
Transcript of UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO COLEGIO DE ... · 3. Construye el algoritmo, el diagrama de...
Vlle Mayo 2012 1
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO
COLEGIO DE CIENCIAS Y HUMANIDADES
PLANTEL NAUCALPAN
PRACTICAS PARA EL TEMA DE DIAGRAMAS DE FLUJO DEL PROGRAMA DE CIBERNÉTICA Y COMPUTACIÓN I
CORRESPONDIENTE A LA UNIDAD 3: Metodología De Solución de Problemas.
Mat. Veronica Lidya López Escobar
Vlle Mayo 2012 2
Guía de clases para la Unidad 3: Metodología de solución de problemas. Tiempo programado: 22 horas Clases:11 Aprendizajes:
1. Identifica los elementos que intervienen en los problemas y las relaciones entre ellos para obtener los resultados.
2. Describe las características de las etapas que intervienen en la solución de problemas
3. Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
4. Realiza la prueba de escritorio de los algoritmos desarrollos. Clases 1 2 3 4 5 6 7 8 9 10 11 Aprendizaje 1 2 3,4 3,4 3,4 3,4 1 3,4 Temática: 1.Definiciones y conceptos generales.
1.1 problema 1.2 Elementos y relaciones del problema.
1.3 Herramientas computacionales 1.3.1 Hardware 1.3.2 Sist. Operativo 1.3.3 Programa de aplicación 1.3.4 Lenguaje de programación 2. Ciclo de desarrollo de programa.
2.1 Planteamiento del problema 2.2 Análisis del problema 2.3 Elaboración del algoritmo 2.4 Codificación, edición y compilación
2.5 Ejecución y depuración 2.6 Documentación 2.7 Mantenimiento. 3. Expresiones y operadores 3.1 Asignación 3.2 Operadores aritméticos 3.3 Operadores relacionales 3.4 Operadores lógicos 3.5 Precedencia de operadores y evaluación de expresiones
4. Técnicas de desarrollo de algoritmos.
4.1 Diseño descendente. 4.2 Refinación progresiva de solución
4.3 Seudocódigo y diagrama de flujo
4.4 Prueba de escritorio.
Vlle Mayo 2012 3
Contenido de las clases
Clase 1: Definiciones, ciclo de desarrollo 2 ejemplos (licuado, ecuaciones de 2 incógnitas).
Clase 2: Definiciones; 7 pasos del ciclo para desarrollo de programas.
Clase 3: Simbología, 3 ejemplos (sistema de ecuaciones, Pago de un empleado, Área y perímetro de un rectángulo), Reglas para elaborar un Diagrama de flujo.
Clase 4: Verificación y prueba de escritorio, para pago de empleado considerando horas extras.
Clase 5: Calculo de promedio, Nombre del alumno, calificaciones, APROBADO ó REPROBADO, para tres alumnos. Ciclo, contador, diagrama de flujo y prueba de escritorio.
Clase 6: Imprimir área y perímetro (triángulo o rectángulo) para 5 figuras. Diagrama, Ciclo; Contador, prueba de escritorio.
Clase 7: Evaluación de expresiones, jerarquía de operadores, operadores lógicos.
Clase 8: Identificar 3 signos del zodiaco (ARIES, CANCER, ACUARIO), para 1 y 5 personas. Prueba de escritorio, ciclo, contador.
Clase 9: Cajero bancario para realizar un Depósito, Retiro ó consulta de saldo. Diagrama de flujo. Prueba de escritorio.
Clase 10: Cajero de tienda de autoservicio, calculo de pago total, para cada uno de los clientes. Diagrama de flujo. Prueba de escritorio.
Clase 11: Resumen, Conclusiones Evaluación.
Vlle Mayo 2012 4
Cibernética y Computación I Unidad 3: Metodología De Solución de Problemas. Propósito:
Al finalizar la unidad el alumno aplicará la metodología de solución de problemas mediante la construcción de algoritmos para formalizar el proceso de solución.
Aprendizajes: Identifica los elementos que intervienen en los problemas y las
relaciones entre ellos para obtener los resultados. Describe las características de las etapas que intervienen en la
solución de problemas. Construye el algoritmo, el diagrama de flujo y el seudocódigo para los
problemas planteados. Realiza la prueba de escritorio de los algoritmos desarrollados.
Tiempo: 22 horas (11 clases). Clase 1: Aprendizaje:
Identifica los elementos que intervienen en los problemas y las relaciones entre ellos para obtener los resultados.
Temática: 1. Definiciones y conceptos generales 1.1 Problema 1.2 Elementos y relaciones del problema 2. Ciclo de desarrollo de programas 2.1 Planteamiento del problema 2.2 Análisis del problema 2.3 Elaboración de algoritmos Desarrollo: Durante el día, realizamos una serie de actividades de manera inconsciente o automática sobre todo si las acciones las hemos hecho un gran número de veces, por ejemplo: levantarnos, bañarnos, desayunar, trasladarnos a la escuela, tomar notas en cada clase, regresar a casa, comer, repasar lo aprendido en clases, hacer la tarea, descansar, cenar y acostarnos. Para realizar cada una de las actividades es necesario seguir una serie de pasos o conjunto de acciones. Podemos decir que cada una de las actividades es un problema que resolvemos. Antes de continuar aclaremos lo que entendemos por problema, según Diccionario Educativo Larousse: Problema:
Cuestión en que debe averiguarse una respuesta o que provoca preocupación: La maestra les dejó cuatro problemas matemáticos a sus alumnos.
Vlle Mayo 2012 5
Hecho que impide o dificulta alguna cosa: Jaime llegó tarde a su cita porque tuvo problemas con su automóvil.
Resolver: Hallar la solución a algo: Ese maestro es muy bueno para resolver las
dudas de sus alumnos Decidir: Después de pensarlo mucho, resolvió pasar sus vacaciones
en las montañas. Comprobar:
Verificar, confirmar una cosa mediante una prueba: Comprobé las sumas y los resultados son correctos.
Aritmética Teórico Práctica, A. Baldor Problema: Es una cuestión práctica en la que hay que determinar ciertas cantidades
desconocidas llamadas incógnitas, conociendo sus relaciones con cantidades conocidas llamadas datos del problema.
Resolución: Resolver un problema es realizar las operaciones necesarias para hallar el valor de la incógnita o incógnitas.
Comprobación: Comprobar un problema es cerciorarse de que los valores que se han hallado para las incógnitas, al resolver el problema, satisfacen las condiciones del mismo.
Sinónimos de Problema: dificultad, duda, enigma, pregunta, cuestión,
proposición. ¿Qué dicen los alumnos? Oigamos a los alumnos. Retomando las ideas anteriormente expuestas si la actividad que queremos enfatizar es la de bañarnos, estamos tan acostumbrados a realizarla que en realidad no la consideramos como problema, sin embargo si nos ponemos a enumerar la serie de pasos que hacemos para obtener como resultado estar bañado, posiblemente nos cueste trabajo enumerarlas, porque lo hacemos casi automáticamente. ¿Qué dicen los alumnos? Oigamos a los alumnos. Resumiendo: Todas nuestras actividades las realizamos en base a nuestra experiencia y siguiendo una secuencia de pasos, considerando las circunstancias bajo las condiciones que se nos presentan; por ejemplo trasladarnos a la escuela, un día normal con el tiempo adecuado, es diferente a un día especial, complicado por el tráfico, una marcha, descompostura del camión, el auto, no pasa el camión la combi, etc. Algoritmo: secuencia de pasos a seguir para resolver un problema. Las características que los algoritmos deben reunir son las siguientes: Precisión: Los pasos a seguir en el algoritmo deben ser precisados claramente. Determinismo: El algoritmo, dado un conjunto de datos idénticos de entrada,
siempre deben arrojar los mismos resultados.
Vlle Mayo 2012 6
Finitud: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud finita.
Por otro lado, para tener el algoritmo adecuado, debemos tener claros 4 aspectos importantes por lo que debemos considerar:
El planteamiento del problema Los datos Los resultados El procedimiento que se debe realizar
Ejemplo 1: Si nuestro problema es Hacer un licuado de fresa, lo primero que
tenemos que hacer es entender el problema por lo que se necesita aclarar El planteamiento del problema: Hacer un licuado de fresa Los datos:
o Son los ingredientes (leche, fresas, azúcar, hielo, extracto de vainilla) o Los elementos que necesitamos (licuadora o batidora, cuchara, vaso,
popote) Los resultados:
o Un licuado de fresa El procedimiento que se debe realizar:
La secuencia de actividades para obtener el resultado deseado o Lavar las fresas y desinfectarlas o Poner en el vaso de la licuadora (o batidora) todos los ingredientes o Licuar durante 3 minutos o Vaciar el licuado en un vaso o Colocar el popote.
Este primer ejemplo, se puede perfeccionar dando más detalles o especificaciones por ejemplo en la descripción de los ingredientes podemos aclarar la cantidad de cada uno de los ingredientes: leche (1/4 de litro), fresas (100 gr.), azúcar (3 cucharas soperas), hielo (1/2 taza de hielo frape), 1 cucharada de extracto de vainilla, o simplemente cambiar el segundo paso del procedimiento, por el siguiente:
Poner en el vaso de la licuadora (o batidora) las cantidades de ingredientes al gusto.
Ejemplo 2: Resolver un sistema de ecuaciones de 2 incógnitas, por el método de
determinantes. El planteamiento del problema: Solucionar un sistema de ecuaciones con
2 incógnitas, es decir, encontrar el valor de x y el valor de y, que satisfacen las dos ecuaciones: ax+by=c y dx +ey=f, utilizando el método de determinantes.
Los datos: Los valores de los coeficientes de x , de y y los términos independientes, es decir: a, d, b, e, c, f
Los resultados: El valor de x, y el valor de y El procedimiento que se debe realizar: Como en el enunciado indica que
por el método de determinantes, no podemos utilizar otro método (gráfico), lo que tenemos que hacer es recordar o aplicar el método de
Vlle Mayo 2012 7
determinantes, para poder determinar los pasos que son necesarios realizar.
Recordemos, que con el método de determinantes el valor de x, se obtiene dividiendo el valor del determinante de x entre el determinante del sistema y el valor de y se obtiene dividiendo el determinante de y entre el determinante del sistema.
syy
sxx
dbaeedba
yx :ydeescoeficientlosnintervienesistemadeltedeterminanelEn
fbceef
bcyx :deyntesindependieescoeficientlosnintervienedetedeterminanelEn
dcaffd
caxy :ntesindependieedeescoeficientlosnintervienedetedeterminanelEn
Por lo que para obtener el valor de x tenemos que dividir ce-fb entre ae-db y
para obtener el valor de y tenemos que dividir af-dc entre ae-db. Todo lo anterior fue para recordar que tenemos que hacer en el método de determinantes, por lo que ahora estamos en condiciones de precisar el El procedimiento que se debe realizar:
Dividir ce-fb entre ae-db para encontrar el valor de x, es decir
dbaefbcex
para después calcular el valor de y, dividiendo af-dc entre ae-db, es
decir dbaedcafy
Indicar como resultado el valor de X y el valor de Y. ¿Qué dicen los alumnos? Oigamos a los alumnos. Conclusión: No existen reglas para resolver los problemas, pero podemos practicar un conjunto de técnicas y herramientas metodológicas que permitan estructurar el razonamiento que se utiliza en la resolución de problemas y poder realizar algoritmos eficientes, cada vez con mayor precisión, rapidez y complejidad.
Vlle Mayo 2012 8
Clase 2: Etapas de desarrollo de programas. Aprendizaje:
Describe las características de las etapas que intervienen en la solución de problemas.
Temática: 1. Definiciones y conceptos generales 1.3 Herramientas computacionales para la solución de problemas 1.3.1 Hardware 1.3.2 Sistema Operativo 1.3.3 Programas de aplicación 1.3.4 Lenguajes de programación Desarrollo: En la clase anterior definimos lo que es un algoritmo: Conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema. Comentamos que todas nuestras acciones son resultado de poner en práctica los algoritmos que en base a nuestra experiencia, conocimientos y estrategias o costumbres nos funcionan bien. También comentamos que las actividades que hacemos con tanta frecuencia podemos decir que las hacemos de manera automática o inconscientemente, también podríamos decir que ya las tenemos programadas. Aclaremos que entienden los alumnos por programa y programar y den respuesta al siguiente cuestionario, como introducción o examen diagnostico de los siguientes conceptos. CUESTIONARIO ¿Qué es Hardware?, ¿Qué es Software? ¿Qué es Sistema Operativo?, ¿Para que sirve el Sistema Operativo?, ¿Cuál es el propósito de los Programas de aplicación?, ¿Para que sirven los Lenguajes de programación?, Describe los niveles de lenguajes de programación y su característica principal. ¿Qué dicen los alumnos? Oigamos a los alumnos. A contuación aclaremos los conceptos de: Programa, programar, lenguaje de programación, código de máquina (o lenguaje de máquina), lenguaje fuente, lenguaje de alto nivel, compilador, lenguaje natural, lenguajes orientados hacia los problemas, FORTRAN, ALGOL, BASIC, PL/1, COBOL, lenguaje de bajo nivel, lenguajes orientados hacia la máquina, lenguajes ensambladores, ensamblador, ejecutar un programa. Según el Diccionario Educativo Larousse: Programa: Exposición de los proyectos de una persona, partido, etc.: El candidato a la
presidencia del grupo de vecinos expuso un programa de trabajo para arreglar el edificio.
Emisión de televisión, radio, etc.: No cambies de canal porque quiero ver el programa de policías y ladrones.
Vlle Mayo 2012 9
Programar: Establecer un programa o fijar las diversas partes de una determinada
acción: Los novios programaron su boda para el mes próximo. Según el Diccionario Especializado de Matemáticas: Programa: Conjunto completo de instrucciones a un ordenador escrito en un lenguaje
de programación. Estas instrucciones junto con los elementos, que se llaman datos, sobre los cuales operan las instrucciones, permiten al ordenador efectuar una amplia variedad de trabajos. Por ejemplo, hay instrucciones para hacer cálculos aritméticos para trasladar datos de la memoria principal al procesador central del ordenador, para efectuar operaciones lógicas y, para alterar el flujo de control en el programa. Las instrucciones y los datos deben estar expresados de tal modo que el procesador central pueda reconocer e interpretar las instrucciones y hacer que se cumplan sobre los datos adecuados. En realidad, deben estar en forma binaria, es decir, en un código que consiste en los dígitos o cifras binarias o y 1 (bits). Este código binario es el llamado código de máquina (o lenguaje de máquina). Cada tipo de ordenador tiene su propio código de máquina. Es difícil, tedioso y dispendioso escribir programas en código de máquina. En vez de ello los programas suelen escribirse en un lenguaje fuente y estos programas fuente se traducen luego a código de máquina. La mayoría de los programas fuente son escritos en un lenguaje de alto nivel y convertidos en código de máquina mediante un programa complicado llamado compilador. Los lenguajes de alto nivel están más próximos al lenguaje natural y a la notación matemática que el código de máquina, con las instrucciones en forma de enunciados. Son bastante fáciles de usar. Están concebidos para resolver clases particulares de problemas y por eso se describen como ”lenguajes orientados hacia los problemas”. Se han ideado muchos y algunos de los más corrientes son FORTRAN, ALGOL, BASIC y PL/1, que se emplean todos para fines científicos y técnicos, y el COBOL, que se utiliza más que todo en aplicaciones comerciales. Para cada tipo de ordenador hay compiladores para variados lenguajes de alto nivel. También es posible escribir un programa fuente en un lenguaje de bajo nivel. Estos son lenguajes que se asemejan al código de máquina más estrechamente que el lenguaje natural y son por tanto difíciles de usar. Están diseñados para ordenadores particulares y por eso se les describe como “lenguajes orientados hacia la máquina”. Los lenguajes ensambladores, son lenguajes de bajo nivel. Un programa escrito en lenguaje ensamblador se convierte en código de máquina mediante un programa especial llamado ensamblador.
Programar: Escribir las instrucciones para un ordenador. Según Leobardo López R, en su libro Programación Estructurada en TURBO PASCAL 7:Programa: Un programa es una secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones de acuerdo con los datos que
Vlle Mayo 2012 10
se estén procesando. El programa debe incluir instrucciones para acciones que deban ejecutarse sobre cada uno de los datos admitidos, además instrucciones que identifiquen datos erróneos. Cuando se ejecuta un programa con un tipo de datos específico, es probable que no se ejecuten todas las instrucciones sino solo las que sean pertinentes a los datos en cuestión. Un programa se compone de estructuras de datos, operaciones primitivas elementales y estructuras de control. Hagamos un primer resumen, con el fin de aclarar conceptos: Los lenguajes de programación nos permiten indicarle a la computadora la secuencia de instrucciones que debe ejecutar para llevar a cabo actividades, tareas o solución de problemas, generalmente los programas se componen de tres elementos: las estructuras de los datos, operaciones primitivas elementales y estructuras de control. El sistema operativo es un conjunto de programas que tienen la finalidad de facilitarnos el manejo de todos los recursos con los que cuenta la computadora, es decir, de los elementos de Hardware (elementos físicos, tangibles: teclado, monitor, ratón, bocinas, discos, CDs, impresoras, etc.). También como parte de los recursos que nos ofrece la computadora, están los paquetes (software: parte no tangible) que son los programas para realizar actividades especiales como LOS PROCESADORES DE TEXTOS, que nos facilita la tarea de elaborar cualquier tipo de documento: nota, carta, notificaciones, oficios, libros, reportes de investigación, etc. Otro tipo de programas especiales son las llamadas HOJAS DE CALCULO, cuyo propósito es facilitarnos la tarea de manejo de información, realizar cálculos, gráficas, reportes, etc. Como último ejemplo de estos programas especiales tenemos los programas de PRESENTACION ELECTRÒNICA, para facilitarnos la tarea de diseñar diapositivas y hacer una presentación sobre un tema de investigación, un proyecto, un libro etc. Dichos programas especiales están diseñados para un propósito específico, por eso se les considera programas de aplicación y difieren en propósito de los lenguajes de programación. Los lenguajes de programación los podemos clasificar en lenguajes de máquina, ensambladores y de alto nivel. Los lenguajes de alto nivel, son los más parecidos al lenguaje humano (lenguaje natural), porque nos podemos expresar por medio de enunciados; los lenguajes ensambladores son lenguajes que están en un nivel intermedio entre el lenguaje humano (natural) y el de la computadora (máquina), por lo que nos es difícil manejar ya que nos debemos expresar por medio de códigos y claves difíciles de recordar y manejar ya que tienen una estructura diferente; y , en relación a los lenguajes de máquina lo que debemos resaltar está en el sistema binario, es decir expresado por medio de bits (ceros 0 y unos 1) y es el único lenguaje que entiende la computadora. Por eso es que las instrucciones (programas) que se le den a la computadora en lenguajes ensambladores deberán ser traducidos al lenguaje de máquina por medio de un ensamblador, mientras que los programas
Vlle Mayo 2012 11
en lenguajes de alto nivel también deberán ser traducidos al lenguaje de máquina y los encargados para ésta traducción son los compiladores. ¿Que tanto han comprendido los alumnos?, Ahora los alumnos contestarán correctamente el cuestionario. CUESTIONARIO ¿Qué es Hardware?, ¿Qué es Software? ¿Qué es Sistema Operativo?, ¿Para que sirve el Sistema Operativo?, ¿Cuál es el propósito de los Programas de aplicación?, ¿Para que sirven los Lenguajes de programación?, Describe los niveles de lenguajes de programación y su característica principal. Consideremos ahora el Ciclo de desarrollo de programas. Para que podamos utilizar la computadora en la solución de problemas, será necesario Primero, construir el algoritmo de solución del problema, recordemos que para
esto es necesario tener claridad en: El planteamiento del problema, Los datos, Los resultados que queremos obtener y El procedimiento que se debe realizar.
Segundo, traducir el procedimiento a un lenguaje de programación, esto es lo que conocemos como codificar es decir elaborar el programa fuente.
Tercero, introducir el programa fuente a la memoria de la computadora, es decir editar el programa fuente.
Cuarto, indicarle a la computadora que realice la traducción del programa fuente al lenguaje de máquina (programa objeto), esto deberá realizarlo el compilador, es decir en ésta etapa se realiza la compilación del programa.
Si el compilador no puede traducir alguna de las indicaciones, marcará error (error de sintaxis), por lo que será necesario corregir la instrucción en el programa fuente y solicitar nuevamente, que el compilador traduzca el nuevo programa, por supuesto que para corregir el error, será necesario utilizar nuevamente el editor, con la finalidad de tener un nuevo programa (fuente) en la memoria de la computadora.
Quinto, ejecutar el programa (objeto), es decir, comprobar que la computadora realice el programa con los datos del problema y obtener los resultados; puede ser que en esta etapa se tengan resultados incorrectos o simplemente no se tengan resultados; estos errores (errores de lógica), son ocasionados porque las instrucciones (programa fuente), no están bien diseñadas o la traducción del algoritmo al lenguaje de programación no corresponde. Para corregir los errores de lógica es necesario revisar el algoritmo de solución y que la traducción corresponda.
Sexto, una vez que el programa funciona correctamente, es conveniente revisarlo con datos “especiales”, para perfeccionar, refinar, mejorar es decir, depurar el programa; generalmente esta etapa no se realiza, por falta de tiempo o por negligencia, apatía.
Séptimo, aunque generalmente tampoco se realiza esta etapa, en este paso se aconseja que se le introduzcan comentarios, observaciones de cómo es posible actualizarlo o hacerlo más general y poder abarcar y solucionar más problemas del mismo tipo, esto permitirá que el programa se pueda mantener funcionando; a esta etapa se le conoce como la de documentación y mantenimiento.
Vlle Mayo 2012 12
Clase 3: REPRESENTACION DE ALGORITMOS Aprendizaje:
Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Temática: 4. Técnicas de desarrollo de algoritmos 4.1 Diseño descendente 4.3 Seudocódigo y diagrama de flujo 4.4 Prueba de escritorio Desarrollo: En las clases anteriores hemos tratado lo que es un algoritmo: Algoritmo: secuencia de pasos a seguir para resolver un problema. Existen diferentes técnicas para expresar los algoritmos por ejemplo, diagramas
de flujo y seudocódigo. Los Diagramas de Flujo son la representación gráfica de los algoritmos. La elaboración del diagrama de flujo es muy importante, porque a partir de se
escribirá el programa en el lenguaje de programación y, si el diagrama es correcto y completo la traducción al lenguaje de programación será sencilla y fácil.
En realidad no existe una simbología estándar, universal, sin embargo para el desarrollo de este material se sugieren los símbolos que se muestran en la siguiente tabla:
Simbolos de los Diagramas
Símbolo Explicación
Marca el inicio y el fin del Diagrama de Flujo ( Bloque de inicio y fin)
Datos del Problema En el interior se indica la lista de variables que se consideran datos. (Bloque de datos o de entrada)
Proceso
Vlle Mayo 2012 13
si
no
Para realizar operaciones aritméticas, cambios o asignación se da valor a las variables, a la derecha se indica la variable a la que se le da el valor resultante de la expresión que se encuentra a la derecha de la flecha (Bloque de proceso o de asignación)
Representa una decisión, en el interior se indica una condición y Dependiendo del resultado se sigue por la rama de SI, o, Por la rama NO. (Bloque de decisión)
Resultados En el interior se indica la lista de resultados, expresa escritura de valores de constantes y /o valor de las variables (Bloque de salida o resultados)
EJEMPlos
Símbolo Explicación
Marca el INICIO del Diagrama de Flujo
Datos del Problema Indica que las variables a, b y c son datos del problema por lo que se deberá proporcionar un valor para cada una de las variables y en ese orden.
Proceso
a,b,c
INICIO
Vlle Mayo 2012 14
si
no
El valor de la variable w, cambia y el nuevo valor es el que resulta de restar fb a ce.
Decisión, Si es cierto que el valor de a, es mayor que el valor de b, entonces el bloque que sigue es el indicado por la rama SI; pero si el valor de a no es mayor que el valor de b, entonces el bloque que sigue es el indicado por la rama NO
Resultados Los valores de las variables x ,y son los resultados del problema. Se debe escribir el valor de x y a continuación el valor de la variable y.
Para ejemplificar el diagrama de flujo de un problema, retomemos el ejemplo 2
desarrollado anteriormente: Ejemplo 2: Resolver un sistema de ecuaciones de 2 incógnitas, por el método
de determinantes. El planteamiento del problema: Solucionar un sistema de ecuaciones con
2 incógnitas, es decir, encontrar el valor de x y el valor de y, que satisfacen las dos ecuaciones: ax+by=c y dx +ey=f, utilizando el método de determinantes.
Los datos: Los valores de los coeficientes de x , de y y los términos
independientes, es decir: a, d, b, e, c, f
Los resultados: El valor de x, y el valor de y
El procedimiento que se debe realizar:
Dividir ce-fb entre ae-db para encontrar el valor de x, es decir
dbaefbcex
X, y
w ce-fb
a>b
Vlle Mayo 2012 15
para después calcular el valor de y, dividiendo af-dc entre ae-db, es
decir dbaedcafy
Indicar como resultado el valor de X y el valor de Y.
El diagrama de flujo, correspondiente es el siguiente:
Vlle Mayo 2012 16
INICIO
A,B,C,D,E,F
DSIST A*E – D*B
DX C*E – F*B
DY A*F – D*C
X , Y
Y DY / DSIST
X DX / DSIST
FIN
Vlle Mayo 2012 17
Aunque la autora no recomienda el uso del seudocódigo porque prefiere ver de manera gráfica el proceso a desarrollar, además considera que es más fácil y rápido identificar las diferentes instrucciones que intervienen en el proceso de solución; como ejemplo de seudocódigo a continuación se presenta el correspondiente al diagrama de flujo que se elaboró.
Se solicita el valor para los datos del problema Leer los valores para a,b,c,d,e y f Se calcula el determinante del sistema: DSIST = A*E – D*B Se calcula el determinante de x:
DX = C*E – F*B Se calcula el determinante de y:
DY = A*F – D*C Se calcula el valor de x:
X = DX / DSIST Se calcula el valor de y:
Y = DY / DSIST Se imprimen los resultados, es decir X y Y. Fin del algoritmo.
Resolvamos otro problema. Problema 3: Calcular e imprimir el pago de un empleado y su nombre, contando con los datos del nombre, sueldo por hora y horas trabajadas. Aplicando lo especificado anteriormente, aclaremos:
Planteamiento del problema: Calcular el pago de un empleado. Datos: Los datos disponibles para resolver el problema son 3: el nombre, el
sueldo por hora y las horas trabajadas.
Los resultados: Escribir el nombre y el pago para el trabajador
El procedimiento que se debe realizar: Calcular el pago, multiplicando el sueldo por hora por las horas
trabajadas Imprimir el nombre y el pago como resultados del problema.
El seudocódigo correspondiente es el siguiente:
Leer los datos: NOMBRE, SUELDO, HORAS Calcular el pago del trabajador:
PAGO = SUELDO * HORAS
Vlle Mayo 2012 18
Imprimir NOMBRE y PAGO Fin del algoritmo.
Ahora presentamos el diagrama de flujo:
Resolvamos otro problema Problema 4: Calcular el área y el perímetro de un rectángulo, si tenemos como datos la base y la altura del rectángulo.
Planteamiento del problema: Calcular el área y el perímetro de un rectángulo.
Datos: Los datos disponibles para resolver el problema son 2: la base y la altura.
Los resultados: El área y el perímetro. El procedimiento que se debe realizar:
Calcular el área: Area = base * altura Calcular el perímetro: Perímetro = (base + altura) * 2 Imprimir el Area y el perímetro del rectángulo.
El seudocódigo:
Leer los datos: base, altura calcular el área: area= base * altura calcular el perímetro: perímetro = (base+altura)*2 imprimir los resultados es decir: area y perímetro
inicio
NOMBRE, SUELDO, HORAS
PAGO SUELDO * HORAS
NOMBRE, PAGO
FIN
Vlle Mayo 2012 19
Fin del algoritmo. El diagrama de flujo:
Con la finalidad de asegurarnos que el algoritmo expresado en el diagrama de flujo es correcto, se utiliza el prueba de escritorio, que consiste en seguir las instrucciones y comprobar que los resultados obtenidos son los correctos, a continuación, mostramos la tabla de seguimiento, dando como datos los valores de 7 y 9.
Bloque /Instrucción
Afecta la variable BASE ALTURA AREA PERÍMETRO
1 7 9 2 63 3 32
BASE, ALTURA
inicio
AREA BASE * ALTURA
AREA, PERIMETRO
FIN
PERÍMETRO (BASE +ALTURA)*2
Vlle Mayo 2012 20
Resultados: 63, 32. REGLAS PARA ELABORAR UN DIAGRAMA DE FLUJO: El diagrama de flujo es la representación gráfica del algoritmo de solución, por lo que debe indicarnos gráficamente la secuencia de pasos que se debe realizar para lograr obtener la solución del problema, o sea, los resultados. Podemos indicar como reglas para la elaboración de los diagramas los siguientes puntos:
1. Debe empezar con el bloque de inicio y terminar con el bloque de fin.
2. Los bloques deben ser unidos por flechas, para indicar cual es el siguiente
bloque que se debe realizar. Es decir, las flechas que unen los bloques
indican el flujo a seguir.
3. El diagrama debe ser construido de manera descendente, es decir de arriba
hacia abajo y de izquierda a derecha.
4. En el caso de las salidas de un bloque de decisión deberá indicarse cual
corresponde a la salida SI, y cual es la que corresponde a la salida NO.
5. Debe ser claro cual es el siguiente bloque. El bloque de decisión es el único
que tiene dos salidas ( SI y NO) por lo que no puede indicarse dos flechas
de salida en ningún otro bloque.
6. En el bloque de DATOS, no se permite hacer operaciones ni escribir texto,
únicamente se indica los nombres de las variables a las que se les
asociarán con los datos.
7. En el bloque de SALIDA, no se puede realizar operaciones, solo se puede
indicar el texto (entre comillas) y las variables que se quiere aparezcan
como resultados.
8. En el bloque de asignación se indica en el extremo izquierdo, el nombre de
la variable que va a cambiar su valor, una flecha hacia la izquierda y en el
extremo derecho la expresión que se calcula para obtener el valor que se
asigna a la variable que como ya se indicó aparece a la izquierda.
La expresión para calcular el nuevo valor de la variable, debe seguir las
reglas de prioridad de operadores, se recomienda que si se tiene duda,
emplee los paréntesis para indicar el orden de ejecución de las
Vlle Mayo 2012 21
operaciones; mas adelante se aclarará con mayor detalle cuales son los
operadores y sus prioridades.
9. Debe ser posible siguiendo las flechas de flujo ir desde el inicio hasta el fin
del diagrama, no deben quedar bloques sin unir, es decir de cada bloque
debe salir una flecha para unirlo con el siguiente bloque.
10. Los bloques no tienen que aparecer en un cierto número, ni tienen que
aparecer todos los bloques, o en un orden determinado; El algoritmo es el
que determina el orden y los bloques que se deben utilizar.
Vlle Mayo 2012 22
Clase 4: Refinación y prueba de escritorio. Aprendizaje:
Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Temática: 4. Técnicas de desarrollo de algoritmos 4.1 Diseño descendente 4.2 Refinación progresiva de solución 4.3 Seudocódigo y diagrama de flujo 4.4 Prueba de escritorio Desarrollo. En las clases anteriores hemos definido las etapas para desarrollar un programa, en resumen, podemos mencionar los siguientes pasos: Planteamiento del programa Análisis del problema (Construir el algoritmo de solución del problema.) Elaborar el Diagrama de Flujo, o pseudocódigo y la Prueba de Escritorio. Codificar, traducir el procedimiento a un lenguaje de programación. Editar, introducir el programa fuente a la memoria de la computadora. Compilar, la computadora realiza la traducción del programa fuente al
lenguaje de máquina (programa objeto). Ejecutar el programa (objeto). Depurar el programa, perfeccionar, refinar, mejorar el programa. Documentar el programa. Dar mantenimiento al programa.
Se ha indicado que si la codificación del algoritmo (paso 4), no se hace de manera correcta, el compilador marcará errores de sintaxis (paso 6), por lo que será necesario revisar y corregir la codificación para obtener un nuevo programa, esto quiere decir que en realidad debe regresarse al paso 4 y repetir el paso 5 y 6 para poder continuar con el proceso y realizar el paso 7,8,...
También se ha indicado que en caso de que los resultados no sean correctos, se deberá revisar que, el algoritmo y la codificación sean correctos, esto implica que se tiene que regresar al paso 2.
El algoritmo anterior, correspondiente a las etapas para desarrollar un programa, puede representarse en el diagrama de flujo que se muestra a continuación:
Vlle Mayo 2012 23
Inicio
1. Planteamiento del programa
2. Análisis del problema (Algoritmo de solución)
3. Diagrama de Flujo prueba de escritorio
4. Codificar
5. Editar
6. Compilar
Error SI
NO
7. Ejecutar el programa
Resultados correctos
NO
SI
Depurar y Documentar
FIN
Vlle Mayo 2012 24
Retomemos el problema del pago del empleado. Problema: Calcular e imprimir el pago de un empleado y su nombre, contando con los datos del nombre, sueldo por hora y horas trabajadas. Pero ahora calculemos las horas extras; es decir las horas trabajadas que pasan de 40, se consideran horas extras y deberán pagarse al doble. Aplicando lo especificado anteriormente, aclaremos:
Planteamiento del problema: Calcular el pago de un empleado, considerando pago de horas extras
Datos: Los datos disponibles para resolver el problema son 3: el nombre, el
sueldo por hora y las horas trabajadas.
Los resultados: Escribir el nombre y el pago para el trabajador considerando horas extras.
El procedimiento que se debe realizar:
Calcular el pago, multiplicando el sueldo por hora por las horas
trabajadas
Calcular las horas extras; las que pasan de 40: extras=trabajadas-40
Pagar las horas extras al doble y calcular el pago total del trabajador.
Imprimir el nombre y el pago como resultados del problema.
El seudocódigo correspondiente es el siguiente:
Leer los datos: NOMBRE, SUELDO, HORAS
Calcular el pago del trabajador:
PAGO = SUELDO * HORAS
Calcular pago de horasExtras:
HEXT = ( HORAS – 40) * SUELDO
Imprimir NOMBRE y PAGO
Fin del algoritmo.
Vlle Mayo 2012 25
Ahora presentamos el diagrama de flujo:
Veamos que resultados tendríamos, en el caso de introducir los datos: LUIS P. S., 10, 35
Bloque /Instrucción
Afecta la variable NOMBRE SUELDO HORAS PAGO HEXT
1 LUIS P.S. 10 35 2 350 3 -50 4 300
Los resultados serían: LUIS P. S. 300
inicio
NOMBRE, SUELDO, HORAS
PAGO SUELDO * HORAS
NOMBRE, PAGO
FIN
HEXT (HORAS -40)*SUELDO
PAGO PAGO +HEXT
Vlle Mayo 2012 26
Lo cual es un error, ya que el pago NO ES CORRECTO. El error es ocasionado por el cálculo del pago de las horas extras, ya que en éste caso no hay horas extras. El algoritmo lo tenemos que modificar para que verifique que existen horas extras y en caso de que si haya, entonces calcular el pago correspondiente. Al modificar el algoritmo, agregamos la instrucción para obtener el siguiente Procedimiento que se debe realizar:
Calcular el pago, multiplicando el sueldo por hora por las horas
trabajadas
COMPROBAR SI LAS HORAS TRABAJADAS SON MAS DE 40
o Si LAS HORAS TRABAJADAS PASAN DE 40: CALCULAR extras = trabajadas-40
o Pagar las horas extras al doble y calcular el pago total del trabajador.
Imprimir como resultados del problema el nombre y el pago.
El seudocódigo correspondiente es el siguiente:
leer los datos: NOMBRE, SUELDO, HORAS
Calcular el pago del trabajador:
PAGO = SUELDO * HORAS
SI las HORAS son >40, entonces
o calcular pago de horas extras:
HEXT = ( HORAS – 40) * SUELDO
o calcular el pago total
PAGO=PAGO+HEXT
3. Fin de SI mas de 40.
Imprimir NOMBRE y PAGO
Fin del algoritmo.
Vlle Mayo 2012 27
El nuevo Diagrama de Flujo sería:
inicio
NOMBRE, SUELDO, HORAS
PAGO SUELDO * HORAS
FIN
NOMBRE, PAGO
HORAS > 40
HEXT (HORAS -40)*SUELDO
PAGO PAGO +HEXT
SI
NO
Vlle Mayo 2012 28
Veamos que resultados tendríamos, en el caso de introducir los datos:
a) LUIS P. S., 10, 35 b) JUAN R. T., 10, 45
Es decir, comprobemos con dos casos, con la prueba de escritorio.
Bloque /Instrucción
Afecta la variable NOMBRE SUELDO HORAS PAGO ¿HORAS>40? HEXT
1 LUIS P.S. 10 35 2 350 3 NO 1 JUAN R. T 10 45 2 450 3 SI 4 50 5 500
Los resultados obtenidos son: LUIS P.S., 350 JUAN R. T, 500 En ambos casos, los resultados son correctos; por lo que hemos terminado con la depuración del algoritmo.
Vlle Mayo 2012 29
Clase 5: Refinación y prueba de escritorio. Aprendizaje:
Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Temática: 4. Técnicas de desarrollo de algoritmos 4.1 Diseño descendente 4.2 Refinación progresiva de solución 4.3 Seudocódigo y diagrama de flujo 4.4 Prueba de escritorio Desarrollo. Resolvamos el Problema: Para 5 alumnos, Imprimir el nombre y “APROBADO” O “REPROBADO” dependiendo de calificación final de los alumnos; la calificación final es el promedio de 3 calificaciones y es APROBADO si el promedio es mayor o igual a 6; es REPROBADO si el promedio es menor de 6. Una técnica muy generalizada para resolver problemas o actividades complicadas es dividir el problema en pequeños problemas fáciles de solucionar, siempre será más fácil solucionar un problema pequeño que uno grande. Si las pequeñas actividades o problemas siguen siendo difíciles de solucionar, entonces se deberán subdividir nuevamente hasta que se puedan solucionar fácilmente. Cuando se tenga la solución de todas las pequeñas divisiones, se tendrá solucionado el gran problema. El problema que nos preocupa, es para 5 alumnos, primero resolvamos para uno y posteriormente lo solucionamos para los 5. Aclaremos:
Planteamiento del problema: Escribir el nombre de un alumno y “APROBADO” si el promedio de las tres calificaciones es mayor o igual a 6; En el otro caso, deberemos escribir el nombre del alumno y “REPROBADO” si el promedio es menor que 6.
Datos: Los datos para resolver el problema son 4: el nombre, y tres
calificaciones.
Vlle Mayo 2012 30
Los resultados: Escribir el nombre y “APROBADO” ó el nombre y “REPROBADO”.
El procedimiento que se debe realizar:
Calcular el promedio, sumando las tres calificaciones y dividir el
resultado de la suma entre 3.
Determinar el mensaje, es decir, si se escribe APROBADO O
REPROBADO
o Si el promedio es >=6 escriba APROBADO
o Si el promedio es <6 escriba REPROBADO
Imprimir el nombre y el MENSAJE como resultados del problema.
El seudocódigo correspondiente es el siguiente:
Leer los datos: NOMBRE, C1,C2,C3
Calcular el promedio del alumno:
PROM = (C1+C2+C3) / 3
Determinar el mensaje:
Si el promedio es >=6 MENSAJE = ”APROBADO”
Si el promedio es <6 MENSAJE = “REPROBADO”
Imprimir NOMBRE y MENSAJE
Fin del algoritmo.
Ahora presentamos el diagrama de flujo
Vlle Mayo 2012 31
Veamos que resultados tendríamos, en el caso de introducir los datos:
inicio
NOMBRE, C1, C2, C3
PROM (C1+C2+C3) / 3
FIN
NOMBRE, MENSAJE
PROM >= 6
MENSAJE “REPROBADO”
SI
NO
Mensaje “APROBADO”
Vlle Mayo 2012 32
LUISA L. M., 10, 9,8
Bloque /Instrucción
Afecta la variable NOMBRE C1 C2 C3 PROM PROM>6 MENSAJE
1 LUISA L. M. 10 9 8 2 9 3 SI 4 APROBADO
Los resultados serían: LUISA L. M., APROBADO ¿Que resultados tendríamos?, en el caso de introducir los datos: JUAN H. C., 4, 5,6
Bloque /Instrucción
Afecta la variable NOMBRE C1 C2 C3 PROM PROM>6 MENSAJE
1 JUAN H. C. 4 5 6 2 5 3 NO 4 REPROBADO
Los resultados serían: JUAN H. C., REPROBADO Como tenemos resuelto el problema para un alumno, podemos utilizarlo 5 veces y obtendríamos los resultados para los 3 alumnos; de otra manera debemos modificar el algoritmo de manera que realice la solución para 3 alumnos. La solución requiere de una variable que nos sirva de CONTADOR, para que cuente cuantas veces lo ha realizado y cuando ya sean 3 veces deberá terminar. La variable CONTADOR, es una variable, por ejemplo C, que deberá cambiar su valor aumentando en 1, el valor anterior empezando en cero (0). Esto lo podemos expresar con:
C=0 (para indicar que empiece en cero) C=C +1 (el valor de C es el resultado de sumarle 1 al valor anterior de C)
Por supuesto que C = 0 se deberá realizar una sola vez y al principio, en cambio la instrucción de C = C+1 se deberá realizar varias veces, hasta llegar a 3. Ahora presentamos el diagrama de flujo
Vlle Mayo 2012 33
inicio
NOMBRE, C1, C2, C3
PROM (C1+C2+C3) / 3
NOMBRE, MENSAJE
PROM >= 6
MENSAJE “APROBADO”
MENSAJE “REPROBADO”
SI
NO
C 0
C C + 1
C=3
FIN
SI
NO
Vlle Mayo 2012 34
Para realizar la prueba de escritorio serán necesarios los datos de 3 alumnos: a) LUISA L. M., 10, 9,8 b) JUAN H. C., 4, 5,6 c) RAUL F. E., 7, 9, 5
Bloque /Instruc
ción
Afecta la variable NOMBRE C1 C2 C3 PROM PROM>6 MENSAJE C ¿C=3?
1 0 2 LUISA L. M. 10 9 8 3 9 4 SI 5 APROBADO 6 LUISA L.M. APROBADO 9 1
10 NO 11 JUAN H. C. 4 5 6 12 5 13 NO 14 REPROBADO 15 JUAN H. C. REPROBADO 16 2 17 NO 18 RAUL F. E. 7 9 5 19 7 20 SI 21 APROBADO 22 RAUL F. E. APROBADO 23 3 SI
Los resultados obtenidos en los pasos 8,15 y 22 serían:
LUISA L. M., APROBADO JUAN H. C. ,REPROBADO RAUL F. E., APROBADO
Y terminaría, considerando los datos previstos y proporcionando los resultados correctos.
Vlle Mayo 2012 35
Clase 6: Refinación y prueba de escritorio. Aprendizaje:
Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Temática: 4. Técnicas de desarrollo de algoritmos 4.1 Diseño descendente 4.2 Refinación progresiva de solución 4.3 Seudocódigo y diagrama de flujo 4.4 Prueba de escritorio Desarrollo. Resolvamos el Problema: Para 5 figuras, Imprimir el area y el perímetro de cada una de ellas, las figuras pueden ser triángulos o rectángulos; los datos de cada una de las figuras es el número de lados y en caso de ser rectángulo el largo y ancho; en caso de ser tríangulo, los datos son los valores de los tres lados y la alutura. Recordando de la clase anterior, que una técnica muy generalizada para resolver problemas o actividades complicadas es dividir el problema en pequeños problemas fáciles de solucionar, siempre será más fácil solucionar un problema pequeño que uno grande. Y , en caso de que las pequeñas actividades o problemas siguen siendo difíciles de solucionar, entonces se deberán subdividir nuevamente hasta que se puedan solucionar fácilmente. El problema que nos preocupa, es para 5 figuras que pueden ser triángulos o rectángulos, primero resolvamos para un rectángulo y posteriormente lo solucionamos para un triángulo y por último para los 5. Aclaremos:
Planteamiento del problema: Calcular el perímetro y el area de cada una de 5 figuras que pueden ser tríangulos o rectángulos.
Datos: Los datos para resolver el problema son: el número de lados, y los datos correspondientes; si es rectángulolargo y ancho y, si es tríangulo los tres valores de los datos y la altura.
Los resultados: Escribir el perímetro y el área de cada una de las 5
figuras.
Vlle Mayo 2012 36
El procedimiento que se debe realizar:
Determinar cuantos lados tiene la figura, ya que en base a la figura
necesitamos los datos y fórmula para calcular el perímetro y el área.
Si la figura tiene cuatro lados, es decir es un rectángulo:
o Obtener el valor del largo (L) y ancho (A)
o Calcular el PERIMETRO= 2*(L+A)
o Calcular el AREA= L*A
o Imprimir el perímetro y el área.
Si la figura tiene tres lados, es decir es un tríangulo:
o Obtener el valor de los tres lados (L1, L2, BASE) y el valor de
la altura (H)
o Calcular el PERÍMETRO= L1+L2+BASE
o Calcular el AREA= (BASE*H)/2
o Imprimir el perímetro y el área.
El seudocódigo correspondiente es el siguiente:
Leer el numero de lados: LADOS
Si el número de lados es 4:
Leer el valor del Largo (L) y Ancho (A)
Calcular el PERIMETRO = 2*(L +A)
Calcular el AREA = L*A
Imprimir el PERIMETRO y el AREA
Fin del Si para 4
Si el número de lados es 3:
Leer el valor de los lados (L1,L2 y BASE) y el de la altura(H)
Calcular el PERÍMETRO= L1+L2+BASE
Calcular el AREA= (BASE*H)/2
Imprimir el PERÍMETRO y el AREA.
Fin del si para 3
Fin del algoritmo.
Vlle Mayo 2012 37
Ahora presentamos el diagrama de flujo
Veamos que resultados tendríamos, en el caso de introducir los datos: 4,7,5
inicio
Lados
FIN
Lados = 4
SI
NO L,A
PER 2*(L+A)
AREA L*A
L1, L2, BASE, H
PER, AREA
PER L1+L2+BASE
AREA (BASE*H)/2
PER, AREA
Vlle Mayo 2012 38
Bloque /Instrucción
Afecta la variable Lados ¿Lados=4? L A L1 L2 BASE H PER AREA
1 4 2 SI 3 7 5 4 24 5 35
Los resultados serían: 24, 35 ¿Que resultados tendríamos?, en el caso de introducir los datos: 3, 3.5, 3.5, 3, 3.2
Bloque /Instrucción
Afecta la variable Lados ¿Lados=4? L A L1 L2 BASE H PER AREA
1 3 2 NO 3 3.5 3.5 3 3.2 4 10 5 4.8
Los resultados serían 10, 4.8 Por lo que en ambos casos obtuvimos resultados correctos, y como tenemos resuelto el problema para una figura, ahora debemos modificar el algoritmo de manera que realice la solución para 5 figuras. Como en el ejemplo de la clase anterior, la solución requiere de una variable que nos sirva de CONTADOR, para que cuente cuantas veces lo ha realizado y cuando ya sean 5 veces deberá terminar. La variable CONTADOR, es una variable, por ejemplo C, que deberá cambiar su valor aumentando en 1, el valor anterior empezando en cero (0). Esto lo podemos expresar con:
C=0 (para indicar que empiece en cero) C=C +1 (el valor de C es el resultado de sumarle 1 al valor anterior de C)
Por supuesto que C = 0 se deberá realizar una sola vez y al principio, en cambio la instrucción de C = C+1 se deberá realizar varias veces, hasta llegar a 5. Ahora presentamos el diagrama de flujo Observe que solo aparece un bloque de resultados y que el bloque de decisión señala que debe terminar cuando C=5.
Vlle Mayo 2012 39
inicio
C 0
C C + 1
FIN
SI
NO
Lados
Lados = 4 SI
NO L,A
L1, L2, BASE, H PER 2*(L+A)
AREA L*A PER L1+L2+BASE
AREA (BASE*H)/2
PER, AREA
C = 5
Vlle Mayo 2012 40
Para realizar la prueba de escritorio serán necesarios los datos de 5 figuras d) 4,7,5 e) 3, 3.5, 3.5, 3, 3.2 f) 4, 9, 6 g) 4,8,2 h) 7, 9, 5
Pero solo lo comprobaremos para los 3 primeros, por lo que supondremos que el diagrama indica C = 3 , en lugar de C = 5 y Veamos que resultados tendríamos
Bloque /
Instrucción
Afecta la variable Lados
¿Lados =4?
L A L1
L2
BASE
H
PER AREA C
¿C= 3?
1 0 2 4 3 SI 4 7 5 5 24 6 35 7 24,35 8 1 9 NO
10 (2) 3 11(3) NO
12 3.5 3.5 3 3.2 13 10 14 4.8 15 10,4.8 16 2 17 NO
18(2) 4 19(3) SI
20 9 6 21 30 22 54 23 30,54 24 3 25 SI
Los resultados serían en el paso 7, 15 y 23: 24, 35 10, 4.8 Y 30, 54 Y terminaría, considerando los datos previstos y proporcionando los resultados correctos.
Vlle Mayo 2012 41
Clase 7: Refinación y prueba de escritorio. Aprendizaje:
Identifica los elementos que intervienen en los problemas y las relaciones entre ellos para obtener los resultados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Temática: 3. Expresiones y operadores
3.1 Asignación 3.2 Operadores aritméticos 3.3 Operadores relacionales 3.4 Operadores lógicos 3.5 Precedencia de operadores y evaluación de expresiones
Desarrollo. Las expresiones y operadores nos permiten realizar cálculos, es decir procesar los datos para convertirlos en resultados que queremos nos proporcione la computadora; para ello contamos con los operadores aritméticos, relacionales, y lógicos y los ponemos en una asignación.
Operadores Aritméticos
Operadores Relacionales
Operadores Lógicos
Operador símbolo Operador símbolo Operador Símbolo suma + Menor que < Y (and) ^ resta - Menor o igual <= conjunción multiplicación * Mayor que > O (or) V División real / Mayor o igual >= Disyunción Division entera
Div Diferente <> Negación ~ NO
módulo Mod Igual = Exponente **
El formato general de una asignación es:
variable expresión
y como expresión podemos poner una constante una variable o una expresión algebraica. Para evaluar la expresión debemos respetar la jerarquía en el orden de aplicación, es decir, debemos aplicar primero el operador de mayor jerarquía, resolver esa operación y así sucesivamente con los siguientes operadores.
Vlle Mayo 2012 42
Veamos que resultado dan los alumnos y luego damos el correcto. Ejemplos
Expresión Proceso Resultado a 7 A toma el valor de 7 A = 7 b a*10 B toma como valor el resultado de
multiplicar a por 10 B = 70
x a/2 X toma como valor el resultado de dividir (real) a entre 2
X= 3.5
ya div 2 Y toma como valor el resultado de dividir a (entera) entre 2
Y = 3
C a mod 2 C toma como valor el resultado el residuo de dividir (entera) a entre 2
C= 1
D x-y D toma como valor el resultado de restar y del valor de x
D = 0.5
E a+x*10 E toma como valor el resultado de multiplicar x*10 y sumarle a
E = 42
F (a + x)*10 F toma como valor el resultado de dividir a entre 2
F = 105
G a +y +2*c/3 G toma como valor el resultado de multiplicar 2 por c dividir entre 3 y luego sumar a + y
G = 10.666667
H (a+y+2*c)/3 H toma como valor el resultado de multiplicar 2 por c, sumarle a +y y luego dividir entre 3
H = 4
J (a+y)/(y-c) J toma como valor el resultado de dividir la suma de a+y entre la resta de y-c
J= 5
Perim 2*(h+a) Perim toma como valor el resultado de multiplicar 2 por la suma de h+a
Perim = 22
Perim 2* h +a Perim toma como valor el resultado de multiplicar 2 por h y luego sumarle a
Perim = 15
Perim a + 2* h Perim toma como valor el resultado de multiplicar 2 por h y luego sumarle a
Perim = 15
Perim (a+ 2)* h Perim toma como valor el resultado de sumar 2 +a y luego multiplicar por h
Perim = 36
K ((a-j)+h)/y K toma como valor el resultado de dividir el resultado de (restar a-j y sumarle h) entre y
K = 2
L (a-j+h)/y L toma como valor el resultado de dividir el resultado de (restar a-j y sumarle h ) entre y
K = 2
Vlle Mayo 2012 43
Las expresiones deben escribirse en una línea, para que la computadora pueda evaluarlas, por ejemplo la expresión:
2)( haBarea
debe escribirse en una sola línea, indicando claramente las operaciones que queremos realizar, quedando de la siguiente manera
area ( ( B+a) *h) / 2 La computadora examina toda la expresión en varias ocasiones y va evaluando cada componente de acuerdo a la prioridad que tienen los operadores aritméticos y son los siguientes:
1. Operaciones entre paréntesis. Primero busca lo que está entre paréntesis y lo evalúa. En caso de que haya paréntesis anidados, primero se evalúa las expresiones que se encuentran en los paréntesis más internos y a continuación los más externos, los paréntesis no indican multiplicación solo agrupamiento y precedencia.
2. Multiplicación, división y módulo. Después de los paréntesis, evalúa las operaciones de multiplicación, división y módulo lo que aparezca primero de izquierda a derecha. La multiplicación y la división tienen el mismo nivel de precedencia.
3. Suma y resta. Estas operaciones se realizan al final, ya que tienen el más bajo nivel de precedencia; se realiza primero la que se encuentre de izquierda a derecha.
En la siguiente tabla se presenta la jerarquía de los operadores:
Jerarquía de Operadores aritméticos Operador Jerarquía Operación
** Primera (mayor) Exponente *,/,mod,div segunda Multiplicación,división,
Módulo, división entera
+,- Tercera (menor) Suma, resta Veamos otros ejemplos y la forma de evaluarlos, indicando la operación que se realiza en cada caso y como queda la expresión. ¿Que resultado dan los alumnos al pedirles que deben: Evaluar la siguiente expresión: 15/2*( 7+(68-15*33+(45**2/16)/3)/15)+19? Después de que nos den el resultado, comprobemos el procedimiento y resultado correcto.
Vlle Mayo 2012 44
Expresión Operación que se realiza 15/2*( 7+(68-15*33+(45**2/16)/3)/15)+19 45**2 =2025 15/2*( 7+(68-15*33+(2025 /16)/3)/15)+19 2025/16 = 126.5625 15/2*( 7+(68-15*33+126.5625 /3)/15)+19 5*33 = 495 15/2*( 7+(68- 495 +126.5625 /3)/15)+19 126.5625 /3= 42.1875 15/2*( 7+(68- 495 + 42.1875 )/15)+19 68- 495 = -427 15/2*( 7+( -427 + 42.1875 )/15)+19 -427+42.1875=-384.8125 15/2* ( 7+ - 384.8125 /15) +19 -384.8125/15= -25.654166 15/2* ( 7 + -25.654166 ) +19 7+ -25.654166= -18.654166 15/2 * -18.654166 +19 15/2 = 7.5 7.5 * -18.654166 +19 7.5 *-18.654166 = -139.90624 -139.90624 +19 -139.90624+19 = -120.90624 -120.90624 Evaluemos la expresión: 3*4*(18 mod 2**3) div 5 * 10 – 28 ¿Qué resultado obtienen los alumnos?, ¿El orden en que realizaron las operaciones fue el siguiente?
Expresión Operación que se realiza 3*4*(18 mod 2**3) div 5 * 10 - 28 2**3 = 8 3*4*(18 mod 8) div 5 * 10 - 28 18 mod 8 = 2 3 * 4 * 2 div 5 * 10 -28 3*4=12 12 * 2 div 5 *10-28 12*2=24 24 div 5 * 10 -28 24 div 5 = 4 4 * 10 -28 4*10= 40 40 - 28 40-28= 12 12 Por último vamos a evaluar la expresión 19-2+ (4+(8-5*3+5**2/ (8/4) ) /3) * 9. Y comprobar que el resultado y el proceso es el correcto.
Expresión Operación que se realiza 19-2+(4+(8-5*3+5**2 / (8/4) ) /3) *9 8/4= 2 19-2+ (4+(8-5*3+ 5**2 / 2 ) /3) *9 5**2=25 19-2+(4 + ( 8-5 *3 + 25 /2 ) /3) *9 5*3= 15 19-2+(4 + ( 8-15 +25 / 2) / 3 ) *9 25/2=12.5 19-2+(4 + (8-15+12.5 ) / 3 ) *9 8-15= -7 19-2+(4 + ( -7 +12.5) / 3) *9 -7 +12.5= 5.5 19-2+(4 + 5.5 / 3 ) *9 5.5/3= 1.83333 19-2+( 4 + 1.83333)*9 4+1.83333 19-2+5.83333 *9 5.83333 *9= 52.49997 19-2+52.49997 19-2=17 17+ 52.49997 17+52.49997 69.49997
Vlle Mayo 2012 45
Expresiones con operadores relacionales. Los operadores relacionales permiten hacer comparaciones entre números, alfanuméricos, constantes o variables. El resultado de una expresión con operadores relacionales es verdadero o falso.
Ejemplos con operadores relacionales Expresión Proceso Resultado “FELICIDADES” = “felicidad” Se verifica que las 2 palabras sean iguales Falso “FELICIDADES”<> “felicidad” Se revisa que las 2 palabras sean
diferentes Verdadero
4< 8 Se verifica si 4 es menor que 8 Verdadero 4>8 Se verifica que 4 es mayor que 8 Falso
(7**2) < (15*2) Se evalúa 7**2=49, se evalúa 15*2=30, y, se verifica si 49 es menor que 30
Falso
(3*5+4**2-1)>=(3**2+(4+3)*6) Se evalúa (3*5+4**2-1)=30, se evalúa (3**2+(4+3)*6)=51y se comprueba se 30 es mayor o igual a 51
Falso
Expresiones Lógicas. También son llamadas expresiones booleanas, en honor al matemático George Boole y pueden ser constituidas por números, constantes, variables, operadores relacionales o lógicos y el valor que resulta solo puede ser verdadero (cierto) o falso. Estas expresiones suelen aparecer en un bloque de decisión, donde depende del resultado de la evaluación se realizan unas operaciones u otras. Cuando intervienen los diferentes tipos de operadores, se evalúan las expresiones conforme la siguiente tabla de jerarquía de operadores.
Jerarquía de Operadores aritméticos Operador Jerarquía Operacion Ejemplo Resultado
( ) Primera (mayor)
Agrupar (2+3)*4 20
** segunda Exponente 7**3 343 *,/,div,mod tercera Aritmética 5 mod 2 1
=,<>,<,>,<=,>= Cuarta Relacional 5 > 3 Falso No ( not, ~, ) Quinta Negación ~ (5>3) Cierto
Y (and, ) Sexta conjunción Cierto falso Falso O (or, ) Septima
(menor) disyunción Cierto falso cierto
Vlle Mayo 2012 46
Los paréntesis, en realidad sirven para indicar mayor prioridad a una operación y cuando se utilizan los operadores de relación con operadores lógicos, falso es menor que verdadero. La tabla de verdad de los operadores lógicos se muestra a continuación y representamos a cierto con el valor 1 y falso con el valor cero.
Tabla de verdad de los Operadores lógicos
p q ~p ~q pq p q 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1 1
Continuación presentamos un ejemplo de expresión con varios tipos de operadores y su evaluación Evaluar la expresión: (15>=7*3**2 Y 8>3 Y 15>6) O NO (7*3<5+12*2 DIV 3**2) ¿Que resultado obtienen los alumnos? ¿Es igual al siguiente?
Expresión Operación que se realiza (15>=7*3**2 Y 8>3 Y 15>6)O NO(7*3<5+12*2 DIV 3**2) 3**2 = 9 (15>=7* 9 Y 8>3 Y 15>6)O NO(7*3<5+12*2 DIV 3**2) 7*9 = 63 (15>=63 Y 8>3 Y 15>6)O NO(7*3<5+12*2 DIV 3**2) ¿15>=63? falso (falso Y 8>3 Y 15>6)O NO(7*3<5+12*2 DIV 3**2) ¿8>3? cierto (falso Y cierto Y 15>6)O NO(7*3<5+12*2 DIV 3**2) ¿15>6? cierto (falso Y cierto Y cierto)O NO(7*3<5+12*2 DIV 3**2) Falso Y cierto falso (falso Y cierto)O NO(7*3<5+12*2 DIV 3**2) Falso Y ciero falso Falso O NO(7*3<5+12*2 DIV 3**2) 3**2 = 9 Falso O NO (7*3<5+12*2 DIV 9) 7*3 = 21 Falso O NO( 21<5+12*2 DIV 9) 12*2 = 24 Falso O NO (21<5+24 DIV 9) 24 DIV 9 = 2 Falso O NO (21<5+2) 5+2 = 7 Falso O NO( 21<7) ¿21<7? falso Falso O NO (falso) NO(falso) cierto Falso O cierto Falso o cierto cierto Cierto Recuerde que cuando se utilizan los operadores de relación con operadores lógicos, falso es menor que verdadero. No se puede realizar la comparación entre un valor lógico y un numérico, utilizando un operador relacional, por ejemplo: ¿cierto >15?
Vlle Mayo 2012 47
Clase 8: Solución y prueba de escritorio. Aprendizaje:
Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Desarrollo. Resolvamos el Problema: Imprimir un mensaje de optimismo para los signos zodiacales de ARIES, CÁNCER y ACUARIO y el mensaje de “Se feliz y disfruta al máximo este día” en caso de ser otro signo; los datos son los nombres de los signos zodiacales de 5 personas. El problema que nos preocupa, es para 5 personas que pueden ser del signo ARIES, ACUARIO CÁNCER ó cualquiera de los demás signos, primero resolvamos para cada uno de los primeros tres casos y luego para todos loa demás signos, y por último para los 5. Aclaremos:
Planteamiento del problema: Imprimir un mensaje de optimismo para los signos de ARIES, CÁNCER y ACUARIO y el mensaje “Se feliz y disfruta al máximo este día” para 5 personas diferentes.
Datos: Los datos para resolver el problema son: el signo de las personas
Los resultados: Escribir el mensaje correspondiente al signo zodiacal de
cada una de 5 personas.
El procedimiento que se debe realizar:
Conocer el signo zodiacal de la persona.
Si el signo es ARIES:
o Imprimir el mensaje: “Felicidades eres ARIES y tienes mucho
que lograr”.
Si el signo es CANCER:
Vlle Mayo 2012 48
o Imprimir el mensaje: “Los CÁNCER están siempre optimistas
para lograr lo mejor “.
Si el signo es ACUARIO:
o Imprimir el mensaje: “El ACUARIO ofrece su simpatía y ayuda
por eso son lo máximo “.
Si el signo no es ninguno de los tres anteriores entonces
o Imprimir el mensaje: “Se feliz y disfruta al máximo este día”
El seudocódigo correspondiente es el siguiente:
Leer el signo zodiacal: SIGNO
Si el SIGNO es “ARIES”:
Imprimir el mensaje: “Felicidades eres ARIES y tienes mucho
que lograr”.
De lo contrario
Si el SIGNO es “CÁNCER”:
Imprimir el mensaje: “Los CÁNCER están siempre
optimistas para lograr lo mejor “.
De lo contrario
Si el SIGNO es “ACUARIO”:
Imprimir el mensaje: “El ACUARIO ofrece su simpatía y
ayuda por eso son lo máximo “.
De lo contrario
Imprimir el mensaje “Se feliz y disfruta al máximo este
día”
Fin del algoritmo.
Ahora presentamos el diagrama de flujo
Vlle Mayo 2012 49
El diagrama solo realiza el tratamiento para un solo signo, ahora lo tendremos que modificar para que se realice 5 veces. Como en los problemas anteriores, será necesario introducir una variable que sirva de contador, por ejemplo C, darle un valor inicial de cero al principio y aumentarle 1 cada vez que se realice el análisis y tratamiento de un caso y terminar cuando el contador indique que se han realizado 5 veces. Es decir, debera aumentarse la asignación c0 al inicio y después la asignación C C +1 y por último la decisión para que cuando C= 5 se de por terminado el proceso. Por supuesto que C 0 se deberá realizar una sola vez y al principio, en cambio la instrucción de C C+1 se deberá realizar varias veces, hasta llegar a 5. Veamos el Diagrama modificado
inicio
signo
FIN
SIGNO=”ARIES” SI
NO
“Felicidades, eres ARIES …”
SIGNO=”CANCER” “Los CANCER estan … “
si
SIGNO = “ACUARIO” “El ACUARIO ofrece … “
NO SI
NO “SE FELIZ Y DISFRUTA AL MAXIMO … “
Vlle Mayo 2012 50
Inicio
signo
FIN
SIGNO=”ARIES” SI
NO
“Felicidades, eres ARIES …”
SIGNO=”CANCER” “Los CANCER estan … “
si
SIGNO = “ACUARIO” “El ACUARIO ofrece … “
NO SI
NO “SE FELIZ Y DISFRUTA AL MAXIMO … “
C 0
C C + 1
C = 5
SI
NO
Vlle Mayo 2012 51
Para realizar la prueba de escritorio serán necesarios los datos de 5 signos: a) CANCER b) ARIES c) ACUARIO d) TAURO e) ARIES
Bloque /
Instrucción Afecta a la variable
C SIGNO Signo = “aries”
Signo= ”cancer”
Signo = “acuario”
¿C=5?
1 0 2 cancer 3 No 4 Si 5 “Los CÁNCER están siempre optimistas
para lograr lo mejor “.
6 1 7 No
8 (2) Aries 9 (3) Si 10 “Felicidades eres ARIES y tienes mucho
que lograr”.
11 2 12 No
13 (2) Acuario 14(3) No
15 No 16 Si 17 “El ACUARIO ofrece su simpatía y ayuda
por eso son lo máximo “.
18 3 19 No
20 (2) Tauro 21 (3) No
22 No 23 No 24 “Se feliz y disfruta al máximo este día”
25 4 26 No
27 (2) Aries 28 Si 29 “Felicidades eres ARIES y tienes mucho
que lograr”.
30 5 31 Si
Vlle Mayo 2012 52
Por lo que se imprimiría como resultados En el paso 5: “Los CÁNCER están siempre optimistas para lograr lo mejor “.
En el paso 10: “Felicidades eres ARIES y tienes mucho que lograr”.
En el paso 17: “El ACUARIO ofrece su simpatía y ayuda por eso son lo máximo “.
En el paso 24: “Se feliz y disfruta al máximo este día”
En el paso 29: “Felicidades eres ARIES y tienes mucho que lograr”.
Y terminaría, considerando los datos previstos y proporcionando los resultados correctos. Ejercicios para que resuelvan los alumnos Elaborar el Diagrama de Flujo y la prueba de escritorio para: 1. Generalizar el problema de manera que se puedan imprimir mensajes diferentes
para los 12 signos del zodiaco.
2. Modificar el problema para que además del mensaje se indique el color de la
suerte de cada uno de los signos.
3. Modificar el problema para que no se realice 5 veces, sino que se termine hasta
que se indique como signo la palabra FIN, en lugar de alguno de los signos
del zodiaco.
Vlle Mayo 2012 53
Clase 9: Solución y prueba de escritorio. Aprendizaje:
Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Desarrollo. Resolvamos el Problema: Suponga que se desea simular un cajero automático de manera que realice las siguientes acciones:
a) solicitar el número de cuenta b) solicitar el saldo que tiene depositado en el banco. c) solicitar indique cual es la operación que desea realizar Depósito (D),
Retiro(R), o Consulta ( c ). En el caso de que la operación que se indique sea D (Depósito), se le
solicitará que indique la cantidad que desea depositar y deberá actualizar el saldo aumentándolo con la cantidad depositada.
En el caso de que la operación que se indique sea R (Retiro), se le solicitará que indique la cantidad que desea retirar, si la cantidad a retirar es mayor del saldo deberá indicar el mensaje “LO SENTIMOS, LA CANTIDAD SOLICITADA, NO ESTA DISPONIBLE”. En caso de que la cantidad que desea retirar es menor a la cantidad que se tiene como saldo, se actualizará el saldo restándole la cantidad que retira.
En el caso de que la operación que se indique sea C (consulta), se mostrará el saldo que tiene.
d) El cliente podrá realizar varias operaciones, (depósito, retiro, saldo, retiro) hasta que indique que ya no quiere realizar ninguna operación, momento en que se dará por terminado el problema.
e) Al final mostrar el número de cuenta y el saldo. Aclaremos:
Planteamiento del problema: Simular un cajero bancario donde se puede depositar, retirar y consultar el saldo, hasta que el usuario indique que ya no quiere realizar otra operación. Al iniciar debe dar su número de cuenta y el saldo inicial.
Datos: Los datos para resolver el problema son: el número de la cuenta
(CTA), el saldo inicial (SALDO), la operación que quiere realizar (OPER), decir si quiere otra operación (OTRA)
Vlle Mayo 2012 54
Los resultados: Depende de la operación, actualizar el saldo, mostrar el saldo, mostrar mensaje y al final mostrar el número de cuenta y el saldo.
El procedimiento que se debe realizar:
Conocer el número de cuenta de la persona (CTA).
Conocer el saldo inicial (saldo).
Conocer la operación que desea realizar (OPER).
o Si la operación es D (Depósito):
Conocer la cantidad que desea ingresar (CANT)
Actualizar el saldo, aumentando la cantidad depositada.
o Si la operación es R (Retiro):
Conocer la cantidad a retirar (CANT)
Si la cantidad a retirar es menor del saldo, actualizar el
saldo, restando la cantidad del saldo.
Si la cantidad es mayor del saldo, mostrar el mensaje
“Lo sentimos, la cantidad no está disponible”.
o Si la operación es C (consulta):
Mostrar el número de cuenta y el saldo.
Conocer si quiere realizar otra operación (OTRA)
o Si la respuesta es Si, regresar para conocer que operación
quiere realizar.
o Si la respuesta es No, Ir al final del proceso
Si se da por terminado el proceso,
o Imprimir el número de cuenta.
o Imprimir el saldo actual.
El diagrama deberá dar oportunidad de repetir los pasos 3 y 4 hasta que la respuesta sea NO, por lo que la condición para terminar deberá considerar la respuesta, en este caso no se realizará un número de veces predeterminado por lo que no es necesario una variable como contador, pero la variable respuesta será la que determine si se repiten las instrucciones o se termina el proceso. Veamos el Diagrama de flujo
Vlle Mayo 2012 55
Inicio
OPER
FIN
OPER = ”D” SI
NO
OPER =”R” si
CANT < SALDO NO SI
NO
“LO SENTIMOS LA CANTIDAD NO ESTA DISPONIBLE”
OTRA = “SI” SI
NO
CTA
SALDO
OTRA
CANT SALDO SALDO+CANT
CANT
SALDO SALDO - CANT
OPER = “C” SI SALDO
CTA, SALDO NO
Vlle Mayo 2012 56
Para realizar la prueba de escritorio serán necesarios los datos de CUENTA, SALDO, OPER, CANT, OTRA, por ejemplo:
110001 15000 D 300 SI C SI R 2500 NO
Afecta a la variable BLOQUE
CTA SALDO OPER
OPER=”D”
OPER=”R”
OPER=”C”
CANT CANT<SALDO
OTRA OTRA=”SI”
1 110001 2 15000 3 D 4 SI 5 300 6 15300 7 SI 8 SI
9 (3) C 10 NO 11 NO 12 SI 13* 14 SI 15 SI
16(3 R 17 NO 18 SI 19 2500 20 SI 21 12800 22 NO 23 NO 24* 25
Los resultados que se obtienen En el paso 13: 15300 En el paso 24: 10001, 12800
Vlle Mayo 2012 57
Y terminaría, considerando los datos previstos y proporcionando los resultados correctos. Ejercicios para que resuelvan los alumnos
1. ¿Qué sucede si se teclea cualquier letra diferente a D, R o C como operación?
2. ¿Qué sucede si se teclea d en lugar de D? 3. ¿Qué sucede si se teclea la cantidad IGUAL al valor de SALDO? 4. ¿Qué sucede si se teclea OTRA respuesta que no sea Si o NO? 5. ¿Cómo se modifica el diagrama para que el resultado en el paso 13 en
lugar de ser: 15300 fuera: SALDO = 15300? 6. ¿Cómo se modifica el diagrama para que el resultado en el paso 24 en
lugar de ser: 110001, 12800 fuera: La Cuenta número: 110001 tiene un SALDO de 12800?
7. ¿Cómo se modifica el diagrama para que fuera igual poner d o D para Depósito, r o R para Retiro y c o C para consulta?
Elaborar el Diagrama de Flujo y la prueba de escritorio para: 1. Generalizar el problema de manera que se puedan manejar a 3 personas
diferentes indicando el nombre, número de cuenta y saldo inicial al principio.
2. Modificar el problema para que además del mensaje: “Lo sentimos la cantidad
no esta disponible”, se le de opción de retirar otra cantidad.
3. Generalizar el problema para que se realice para varias personas y que se
termine hasta que se indique como nombre la palabra FIN.
Vlle Mayo 2012 58
Clase 10: Solución y prueba de escritorio. Aprendizaje:
Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.
Realiza la prueba de escritorio de los algoritmos desarrollados. Desarrollo. Resolvamos el Problema: Indicar el total a pagar de las compras realizadas, de cada uno de los clientes; se desea simular el cajero de una tienda de manera que realice las siguientes acciones:
a) registrar el nombre del producto b) registrar el precio unitario del producto c) registrar el número de productos d) calcular el monto a pagar e) en caso de que el comprador lleve otro producto, regresar al paso a) f) como consideración especial, si el total a pagar es > 1000 se le otorgará
un descuento del 10% g) Si se tiene descuento, indicarlo con un mensaje y el monto del
descuento. h) indicar el monto a pagar y el número de artículos comprados i) si hay otro cliente regresar al paso a) j) si no hay más clientes, se dará por terminado el problema.
Aclaremos:
Planteamiento del problema: El problema consiste en calcular el monto a pagar de las compras
realizadas por cada cliente de una tienda. Para calcular el pago es necesario conocer el artículo, precio unitario y el
número de artículos para cada uno de los artículos que compró un cliente.
Para aplicar la consideración especial se deberá tener un total a pagar mayor a 1000 pesos, y consiste en rebajarle el 10% al total.
El proceso se deberá repetir para cada uno de los clientes hasta que ya no haya clientes.
Datos: Los datos para resolver el problema son: el nombre del artículo
(NOM), precio unitario (PRECIO), el número de artículos (CANT), si compro otro artículo (OTRO), si hay otro cliente (CLIENTE).
Vlle Mayo 2012 59
Los resultados: El total a pagar para cada uno de los clientes (TOTAL), mensaje en caso de tener descuento(DESC) y el número de artículos que compró (ARTS).
El procedimiento que se debe realizar:
1. Poner el contador de artículos en cero (ARTS = 0)
2. Poner el total a pagar en cero (PAGAR = 0)
3. Poner el descuento en cero ( DESC = 0)
4. Conocer el Nombre del artículo(NOM).
5. Conocer el precio del artículo (PRECIO) y la cantidad de artículos
(CANT).
6. Calcular el total por el artículo en cuestión (TOT)
7. Actualizar el total a pagar (PAGAR) con la última compra
registrada(TOT)
8. Actualizar el total de artículos (ARTS) aumentándole 1
9. Conocer si lleva otro artículo (OTRO)
o En caso de que lleve otro artículo regresar al paso 4.
o En caso de que no lleve otro artículo
Si el total a pagar (PAGAR) es >1000, mostrar el
mensaje ”adquirió un descuento de “, calcular el 10%
correspondiente al descuento (DESC ) y calcular el total
a pagar descontando el descuento.
Mostrar el total a pagar (PAGAR)
Mostrar el total de artículos adquiridos (ARTS).
o Conocer si hay otro cliente (CLIENTE)
En caso de haber otro cliente, regresar al paso 1
En caso de no haber otro cliente dar por terminado el
problema.
El diagrama deberá dar oportunidad de repetir los pasos 4,5 … 9 para cada uno de los artículos comprados hasta que sean considerado todos los artículos del cliente a tratar. Una vez terminado con un cliente, hacer el mismo proceso para otro cliente, por lo que la condición para terminar deberá considerar la opción de si hay otro cliente o no. Veamos el Diagrama de flujo
Vlle Mayo 2012 60
Inicio
FIN
si
PAGAR > 1000
NO
“ADQUIRIO UN DESCUENTO DE”
CLIENTE= “SI” SI
NO
PRECIO, CANT
NOM
CLIENTE
TOT PRECIO * CANT
OTRO
PAGAR PAGAR + TOT
OTRO = “SI” SI
PAGAR, ARTS
NO
ARTS 0
PAGAR 0
DESC 0
ARTS ARTS + 1
DESC PAGAR*0.10
PAGAR PAGAR*0.9
Vlle Mayo 2012 61
Para realizar la prueba de escritorio serán necesarios los datos de CUENTA, SALDO, OPER, CANT, OTRA, por ejemplo:
110001 15000 D 300 SI C SI R 2500 NO
Afecta a la variable BLOQUE
CTA SALDO OPER
OPER=”D”
OPER=”R”
OPER=”C”
CANT CANT<SALDO
OTRA OTRA=”SI”
1 110001 2 15000 3 D 4 SI 5 300 6 15300 7 SI 8 SI
9 (3) C 10 NO 11 NO 12 SI 13* 14 SI 15 SI
16(3 R 17 NO 18 SI 19 2500 20 SI 21 12800 22 NO 23 NO 24* 25
Los resultados que se obtienen En el paso 13: 15300 En el paso 24: 10001, 12800
Vlle Mayo 2012 62
Y terminaría, considerando los datos previstos y proporcionando los resultados correctos. Ejercicios para que resuelvan los alumnos
8. ¿Qué sucede si se teclea cualquier letra diferente a D, R o C como operación?
9. ¿Qué sucede si se teclea d en lugar de D? 10. ¿Qué sucede si se teclea la cantidad IGUAL al valor de SALDO? 11. ¿Qué sucede si se teclea OTRA respuesta que no sea Si o NO? 12. ¿Cómo se modifica el diagrama para que el resultado en el paso 13 en
lugar de ser: 15300 fuera: SALDO = 15300? 13. ¿Cómo se modifica el diagrama para que el resultado en el paso 24 en
lugar de ser: 110001, 12800 fuera: La Cuenta número: 110001 tiene un SALDO de 12800?
14. ¿Cómo se modifica el diagrama para que fuera igual poner d o D para Depósito, r o R para Retiro y c o C para consulta?
Elaborar el Diagrama de Flujo y la prueba de escritorio para: 1. Generalizar el problema de manera que se puedan manejar a 3 personas
diferentes indicando el nombre, número de cuenta y saldo inicial al principio.
2. Modificar el problema para que además del mensaje: “Lo sentimos la cantidad
no esta disponible”, se le de opción de retirar otra cantidad.
3. Generalizar el problema para que se realice para varias personas y que se
termine hasta que se indique como nombre la palabra FIN.