Facultad de Ingenieria, UNAM Laboratorio de Multimedia e Internet
Diagramas de flujo, pseudocodigo y pruebas de escritorio.
Objetivo:
Al terminar la instruccion, el alumno tendra la capacidad de actuar creativamente para
elaborar programas que resuelvan situaciones planteadas por el instructor.
Desarrollo: Algoritmo:
Los programas de computadora tienen como finalidad resolver problemas especificos
y el primer paso consiste en definir con precision el problema hasta lograr la mejor
comprension posible. Una forma de realizar esta actividad se basa en formular
claramente el problema, especificar los resultados que se desean obtener, identificar
la informacion disponible (datos), determinar las restricciones y definir los procesos
necesarios para convertir los datos disponibles (materia prima) en la informacion
requerida (resultados).
Fases para elaborar un programa
Se pueden identificar las siguientes sugerencias propuestas a los estudiantes para
llegar a la solucion de un problema matematico:
Algoritmo: Un algoritmo es una lista de instrucciones bien definida, ordenada y finita
mediante las cuales se efectuara paso a paso un proceso para obtener un cierto
resultado, un ejemplo de ello son las recetas de cocina, manuales, etc.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
1. COMPRENDER EL PROBLEMA. Leer el problema varias veces
Establecer los datos del problema Aclarar lo que se va a resolver (Cual es la
pregunta?) Precisar el resultado que se desea lograr Determinar la incognita del
problema Organizar la informacion Agrupar los datos en categorias Trazar una
figura o diagrama.
2. HACER EL PLAN. Escoger y decidir las operaciones a efectuar. Eliminar los datos
inutiles. Descomponer el problema en otros mas pequenos.
3. EJECUTAR EL PLAN (Resolver). Ejecutar en detalle cada operacion. Simplificar
antes de calcular. Realizar un dibujo o diagrama
4. ANALIZAR LA SOLUCION (Revisar). Dar una respuesta completa
Hallar el mismo resultado de otra manera. Verificar por apreciacion que la
respuesta es adecuada.
EJEMPLO En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y
el tercero, una amarilla. Al final de varias rondas, el puntaje se calcula de la siguiente
manera: Al cubo de la cantidad de fichas rojas se adiciona el doble de fichas azules y
se descuenta el cuadrado de las fichas amarillas. Si Andres llego 3 veces en primer
lugar, 4 veces de ultimo y 6 veces de intermedio, Que puntaje obtuvo? R/.
COMPRENDE
Leer detenidamente el problema
Cuantos colores de fichas se reparten?
Cuantas fichas rojas, azules y amarillas obtuvo Andres?
Que pregunta el problema?
PLANEA Para hallar el puntaje que obtiene Andres por sus llegadas de primero,
calcular el cubo de la cantidad de fichas rojas. Para hallar el puntaje por sus
llegadas en segundo lugar, calcular el doble de la cantidad de fichas azules.
Para hallar el puntaje que pierde por sus llegadas en ultimo lugar, calcular el
cuadrado de la cantidad de fichas amarillas. Para hallar el puntaje total,
calcular la suma de los puntajes por las fichas rojas y azules, restarle los puntos
de las fichas amarillas.
RESUELVE Por tres fichas rojas: ____ puntos. Por seis fichas azules: ____
puntos. Por cuatro fichas amarillas: _____ puntos.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Para obtener el puntaje final de Andres, sumar los puntos obtenidos con las fichas
rojas y azules (________puntos) y de este resultado restar los puntos representados por
las fichas amarillas (____________puntos).
REVISA El puntaje que obtuvo Andres es ___ puntos. Verificar las operaciones y
comparar los calculos con la solucion estimada.
Analizar el problema (entenderlo)
Etapas a desarrollar en la fase de analisis
Como ya se menciono al inicio del capitulo lo primero a realizar es definir el problema
con precision para comprenderlo de una manera mejor. Estas etapas coinciden
parcialmente con los elementos generales que estan presentes en todos los
problemas:
1. Especificar claramente los resultados que se desean obtener (meta y sub-metas) 2.
Identificar la informacion disponible (estado inicial) 3. Definir los procesos que llevan
desde los datos disponibles hasta el resultado deseado (operaciones)
Para establecer un modelo que los estudiantes puedan utilizar en la fase de analisis
del problema, debemos agregar dos temas a los elementos expuestos: formular el
problema y determinar las restricciones.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Formular el problema
La solucion de un problema debe iniciar por determinar y comprender exactamente en
que consiste ese problema. Esta etapa es una buena oportunidad para plantear
situaciones en forma verbal o escrita que vinculen la ensenanza de las matematicas
con el entorno en el que vive el estudiante y que tengan una variedad de estructuras
y de formas de solucion.
Esta metodologia obliga al estudiante a formular el problema a partir de la situacion
real planteada. De esta manera se contrarresta la costumbre tan comun en el aula de
que los problemas sean formulados por el profesor o tomados de los libros de texto.
EJEMPLO OPCION 1: Juan Felipe es jefe de bodega en una fabrica de panales
desechables y sabe que la produccion diaria es de 744 panales y que en cada caja
donde se empacan para la venta caben 12 panales. Cuantas cajas debe conseguir
Juan Felipe para empacar los panales fabricados en una semana?
OPCION 2: Juan Felipe es jefe de bodega en una fabrica de panales desechables y una
de las tares del dia consiste en llamar al proveedor de los empaques y ordenarle la
cantidad suficiente de cajas para empacar los panales fabricados en la semana
proxima. El jefe de produccion le informo ayer a Juan Felipe que la produccion diaria
sera de 744 panales y en cada caja cabe una docena de ellos. Que debe hacer
Felipe?
La Opcion 1 plantea directamente el problema que el estudiante debe resolver.
Mientras que la Opcion 2 plantea una situacion y la pregunta es Que debe hacer
Felipe?. La Opcion 2 demanda al estudiante leer muy bien el texto para comprender la
situacion y asi poder formular el problema de Juan Felipe. Es algo similar a preguntar
al estudiante cuanto es 7 menos 3 versus preguntar si Rosa tiene 7 naranjas y Julio
tiene 3, cuantas naranjas de mas tiene Rosa.
La comprension linguistica del problema (entender el significado de cada enunciado)
es muy importante. El estudiante debe realizar una lectura previa del problema con el
fin de obtener una vision general de lo que se le pide y una segunda lectura para
poder responder a preguntas como:
Puedo definir mejor el problema? Que palabras del problema me son
desconocidas? Cuales son las palabras clave del problema? He resuelto antes
algun problema similar? Que informacion es importante? Que informacion puedo
omitir?
Ademas, es conveniente que los estudiantes se habituen a analizar los problemas
desde diferentes puntos de vista y a categorizar la informacion dispersa que reciben
como materia prima. En programacion es frecuente que quien programa deba
formular el problema a partir de los resultados esperados. Es muy importante que el
estudiante sea consciente de que cuando las especificaciones de un programa se
comunican mediante lenguaje natural, estas pueden ser ambiguas, incompletas e
incongruentes. En esta etapa se debe hacer una representacion precisa del problema;
especificar lo mas exactamente posible lo que hay que hacer (no como hay que
hacerlo).
EJEMPLO Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Dona Rubi necesita decidir como comprar un televisor que cuesta 850.000 de contado
o 960.000 a credito. Ella tiene 600.000 pesos en efectivo. R/. Como el efectivo que
tiene dona Rubi no le alcanza para comprar el televisor de contado, ella tiene dos
opciones: comprarlo totalmente a credito o pagar una parte de contado (cuota inicial)
y el resto a credito.
Para poder resolver el problema se debe conocer el numero de cuotas si desea pagarlo
totalmente a credito o conocer el numero de cuotas y el valor total del televisor si se
da una cuota inicial de 600.000 pesos.
Precisar los resultados esperados (meta y sub-metas)
Para establecer los resultados que se esperan (meta) es necesario identificar la
informacion relevante, ignorar los detalles sin importancia, entender los elementos del
problema y activar el esquema correcto que permita comprenderlo en su totalidad.
Determinar con claridad cual es el resultado final (producto) que debe devolver el
programa es algo que ayuda a establecer la meta. Es necesario analizar que
resultados se solicitan y que formato deben tener esos resultados (impresos, en
pantalla, diagramacion, orden, etc.). El estudiante debe preguntarse:
Que informacion me solicitan? Que formato debe tener esta informacion?
Identificar datos disponibles (estado inicial)
Otro aspecto muy importante en la etapa de analisis del problema consiste en
determinar cual es la informacion disponible. El estudiante debe preguntarse:
Que informacion es importante? Que informacion no es relevante? Cuales son
los datos de entrada? (conocidos) Cual es la incognita? Que informacion me falta
para resolver el problema? (datos desconocidos) Puedo agrupar los datos en
categorias?
Otro aspecto importante del estado inicial hace referencia al nivel de conocimiento
que el estudiante posee en el ambito del problema que esta tratando de resolver. Es
conveniente que el estudiante se pregunte a si mismo:
Que conocimientos tengo en el area o areas del problema? Son suficientes esos
conocimientos? Donde puedo obtener el conocimiento que necesito para resolver el
problema? Mis companeros de estudio me pueden ayudar a clarificar mis dudas?
Que expertos en el tema puedo consultar?
En el ambito de las matematicas, se conoce como conocimiento condicional a aquel
que activan los estudiantes cuando aplican procedimientos matematicos concretos de
manera intencional y consciente a ciertas situaciones. El conocimiento condicional
proporciona al alumno un sistema de valoracion sobre la extension y las limitaciones
de su saber (que sabe sobre el tema, su capacidad de memoria, etc.), a la vez que
examina la naturaleza de la demanda del profesor y su objetivo ultimo, y evalua
variables externas como pueden ser el tiempo que tiene o con quien realiza la tarea.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
EJEMPLO Esteban esta ahorrando para comprar una patineta que vale 55.000 pesos.
Su papa le ha dado una mesada de 5.000 pesos durante 7 semanas. Por lavar el auto
de su tio tres veces recibio 8.000 pesos. Su hermano gano 10.000 pesos por hacer los
mandados de su mama y 4.000 por sacar a pasear el perro. Esteban tiene ahorrado el
dinero suficiente para comprar la patineta o aun le falta? R/. Formular el problema: Ya
se encuentra claramente planteado. Resultados esperados: Si o no tiene Esteban
ahorrado el dinero suficiente para comprar una patineta que vale 55.000 pesos. Datos
disponibles: Los ingresos de Esteban: 5.000 pesos por 7 semanas + 8.000 pesos. Los
10.000 y 4.000 pesos que gano el hermano de Esteban son irrelevantes para la
solucion de este problema y se pueden omitir.
Determinar las restricciones
Resulta fundamental que los estudiantes determinen aquello que esta permitido o
prohibido hacer y/o utilizar para llegar a una solucion. En este punto se deben exponer
las necesidades y restricciones (no una propuesta de solucion). El estudiante debe
preguntarse:
Que condiciones me plantea el problema? Que esta prohibido hacer y/o utilizar?
Que esta permitido hacer y/o utilizar? Cuales datos puedo considerar fijos
(constantes) para simplificar el problema? Cuales datos son variables?
Cuales datos debo calcular?
Establecer procesos (operaciones)
Consiste en determinar los procesos que permiten llegar a los resultados esperados a
partir de los datos disponibles. El estudiante debe preguntarse:
Que procesos necesito? Que formulas debo emplear? Como afectan las
condiciones a los procesos? Que debo hacer? Cual es el orden de lo que debo
hacer?
En la medida de lo posible, es aconsejable dividir el problema original en otros mas
pequenos y faciles de solucionar (submetas), hasta que los pasos para alcanzarlas se
puedan determinar con bastante precision (modulos). Esto es lo que en programacion
se denomina diseno descendente o top-down.
El diseno descendente se utiliza en la programacion estructurada de computadoras
debido a que
facilita: La comprension del problema
Las modificaciones en los modulos La verificacion de la solucion
Al realizar divisiones sucesivas del problema en otros mas pequenos y manejables
(modulos), hay que tener cuidado para no perder de vista la comprension de este
como un todo. El estudiante, luego de dividir el problema original en submetas
(modulos), debe integrar cada parte de tal forma que le permita comprender el
problema como un todo.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Igualmente hay que tener cuidado cuando se utiliza este enfoque para resolver
problemas complejos o extensos, en cuyo caso resulta mas aconsejable utilizar una
metodologia orientada a objetos. Especialmente, cuando profesores universitarios
manifiestan su preocupacion por el aprendizaje de malas practicas de programacion
en el colegio. Hay casos en los cuales algunos estudiantes no han podido cambiar su
forma de pensar estructurada por otra orientada a objetos, la cual hace parte de los
programas universitarios modernos en la carrera de Ingenieria de Sistemas. Es
aconsejable que los ejemplos y actividades planteados a los estudiantes contengan
solo un problema cuya solucion sea muy corta (no necesariamente sencillo de
resolver).
De esta forma ellos podran enfocarse en aplicar completamente la metodologia
propuesta para analizar problemas (formular el problema, especificar los resultados,
identificar la informacion disponible, determinar las restricciones y definir los
procesos) sin perderse en el laberinto de un problema demasiado complejo.
EJEMPLO De acuerdo con la metodologia descrita, analizar el problema de hallar el
area de un triangulo rectangulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5
cm. R/ Formular el problema: Ya se encuentra claramente planteado. Resultados
esperados: El area de un triangulo rectangulo. Datos disponibles: Base, Altura,
Hipotenusa, tipo de triangulo. La incognita es el area y todos los valores son
constantes. El valor de la hipotenusa se puede omitir. El estudiante debe preguntarse
si sus conocimientos actuales de matematicas le permiten resolver este problema; de
no ser asi, debe plantear una estrategia para obtener los conocimientos requeridos.
Determinar las restricciones: Utilizar las medidas dadas. Procesos necesarios: Guardar
en dos variables los valores de Base y Altura; Guardar en una constante el divisor 2;
aplicar la formula area=base*altura/2; comunicar el resultado (area).
ACTIVIDAD La mayoria de las metodologias propuestas para la solucion de problemas
matematicos se aproxima al ciclo de programacion de computadores. Se puede iniciar
planteando a los estudiantes problemas matematicos como los siguientes:
1. Luisa quiere invertir sus ahorros en la compra de discos compactos de moda. Si
tiene $68.000, Cuantos discos comprara? Analizar el problema:
Que tienes en cuenta cuando vas a comprar un disco? Tienes informacion
suficiente para resolver el problema de Luisa? Que dato averiguarias para saber
cuantos discos puede comprar Luisa?
Plantear ahora este problema utilizando la metodologia de Formular el problema,
Resultados esperados, Datos disponibles, Determinar las restricciones y
Procesos necesarios.
Cinco pasos que deben tener en cuenta los estudiantes para resolver problemas
matematicos: 1. Leer con mucho cuidado el problema hasta entenderlo. 2. Buscar la(s)
pregunta(s). 3. Decidir lo que debes hacer.
4. Realizar las operaciones. 5. Comprobar que la respuesta hallada es correcta.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Pida a los estudiantes que contesten las siguientes preguntas en el proceso de
solucion de problemas matematicos:
Cuantas preguntas tiene el problema? Cuales? Que debes hacer primero? Para
que? Que debes hacer luego? Para que? Cual debe ser la respuesta (estimada)
del problema?
Disenar el algoritmo (trazar un plan)
Cuando se ha realizado un analisis a fondo del problema (utilizando alguna
metodologia), se puede proceder a elaborar el algoritmo (diagrama de flujo). Este
consiste en la representacion grafica, mediante simbolos geometricos, de la secuencia
logica de las instrucciones (plan) que posteriormente seran traducidas a pseudocodigo
y de ahi a un lenguaje de programacion, como C, para ejecutarlas y probarlas en una
computadora.
EJEMPLO Disenar un algoritmo (pseudocodigo y diagrama de flujo) para hallar el area
de un triangulo rectangulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5 cm.
R/ ANALISIS DEL PROBLEMA Formular el problema: Ya se encuentra claramente
planteado. Resultados esperados: El area de un triangulo rectangulo. Datos
disponibles: Base, Altura, Hipotenusa, tipo de triangulo. La incognita es el area y todos
los valores son constantes. El valor de la hipotenusa se puede omitir. El estudiante
debe preguntarse si sus conocimientos actuales de matematicas le permiten resolver
este problema; de no ser asi, debe plantear una estrategia para obtener los
conocimientos requeridos. Determinar las restricciones: Utilizar las medidas dadas.
Procesos necesarios: Guardar en dos variables (BASE y ALTURA) los valores de Base y
Altura; Guardar en una constante (DIV) el divisor 2; aplicar la formula
BASE*ALTURA/DIV y guardar el resultado en la variable AREA; comunicar el resultado
(AREA).
ALGORITMO EN PSEUDOCODIGO Paso 1: Inicio Paso 2: Asignar el numero 2 a la
constante "div" Paso 3: Asignar el numero 3 a la constante base Paso 4: Asignar el
numero 4 a la constante altura Paso 5: Guardar en la variable "area" el resultado de
base*altura/div Paso 6: Imprimir el valor de la variable "area" Paso 7: Final
Traducir el algoritmo (ejecutar el plan)
Una vez que el algoritmo esta disenado y representado graficamente se pasa a la
etapa de traduccion a un lenguaje de programacion determinado (en nuestro caso
sera C). Cada lenguaje posee sus propias reglas gramaticales, por lo tanto es
fundamental que los estudiantes conozcan de antemano la sintaxis de los comandos
que deben utilizar para resolver el problema. A mayor dominio del lenguaje de
programacion, mayor posibilidad de llegar rapidamente a una solucion satisfactoria. A
esta fase de traduccion se le conoce comunmente como codificacion.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Depurar el programa (revisar)
Despues de traducir el algoritmo en un lenguaje de programacion como C, el
programa resultante debe ser probado y validados los resultados. A este proceso se le
conoce como depuracion. Depurar programas contribuye a mejorar la capacidad en los
estudiantes para resolver problemas; la depuracion basada en la retroalimentacion es
una habilidad util para toda la vida.
Quienes han escrito alguna vez un programa de computadora, saben de la dificultad
que representa elaborar programas perfectos en el primer intento, dificultad que
aumenta a medida que el problema a resolver es mas complejo. La depuracion,
afinamiento y documentacion de un programa hacen parte fundamental del ciclo de
programacion y desde el punto de vista educativo estimula en los estudiantes la
curiosidad, la perspectiva, la comunicacion y promueve valores como responsabilidad,
fortaleza, laboriosidad, paciencia y perseverancia. La programacion facilita un dialogo
interior en el cual la retroalimentacion constante y el exito gradual empujan a los
alumnos a ir mas alla de sus expectativas.
Otras dos actividades relacionadas con esta etapa son la afinacion y la
documentacion. La primera consiste en realizar retoques para lograr una mejor
apariencia del programa (en pantalla o en los resultados impresos) o para ofrecer
funcionalidades mas alla de los resultados esperados (especificados en la fase de
analisis del problema). La segunda tiene un caracter eminentemente comunicativo,
con la documentacion de un programa se pone a prueba la capacidad del estudiante
para informar a otras personas como funciona su programa y lo que significa cada
elemento utilizado.
Conceptos basicos de programacion
Variables
Para poder utilizar algoritmos con diferentes conjuntos de datos iniciales, se debe
establecer una independencia clara entre los datos iniciales de un problema y la
estructura de su solucion. Esto se logra mediante la utilizacion de variables
(cantidades que se suelen denotar con letras (identificadores) y que pueden tomar
cualquier valor de un intervalo de valores posibles).
En programacion, las variables son espacios de trabajo (contenedores) reservados
para guardar datos (valores). El valor de una variable puede cambiar en algun paso
del algoritmo o permanecer invariable; por lo tanto, el valor que contiene una variable
es el del ultimo dato asignado a esta. En C existen dos tipos de variables: locales y
globales. Las primeras retienen su valor el tiempo que dure la ejecucion del
procedimiento en el cual se utilizan. Las variables locales crean dentro de una funcion
o subrutina y solo existen mientras se ejecuta la funcion.
Constantes
Las Constantes se crean en C por medio de una definicion y consisten en datos que,
luego de ser asignados, no cambian en ninguna instruccion del algoritmo. Pueden
contener constantes matematicas (pi) o generadas para guardar valores fijos (3.8,
"Jorge", etc.).
Identificadores
Los identificadores son nombres que se dan a los elementos utilizados para resolver
un problema y poder diferenciar unos de otros. Al asignar nombres (identificadores) a
variables, constantes y procedimientos se deben tener en cuenta algunas reglas:
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Los nombres pueden estar formados por una combinacion de letras y numeros
(saldoMes, salario, fecha2, baseTriangulo, etc.). El primer caracter de un nombre
debe ser una letra. La mayoria de los lenguajes de programacion diferencian las
mayusculas de las minusculas.
Los nombres deben ser nemotecnicos, con solo leerlos se puede entender lo que
contienen. Deben ser muy descriptivos; no utilizar abreviaturas, a menos que se
justifique plenamente. Es conveniente utilizar una sola palabra para nombrar
paginas, controles, variables, etc. No utilizar caracteres reservados (%, +, /, >, etc.).
Se debe tener en cuenta que algunos lenguajes de programacion no admiten las
tildes. No utilizar palabras reservadas por los lenguajes de programacion. Para
cumplir con convenciones ampliamente utilizadas, los nombres de procedimientos,
variables y constantes deben empezar con minuscula. Ejemplo, fecha, suma, etc. Si
es un nombre compuesto por varias palabras, cada una de las palabras (con excepcion
de la primera) deben empezar con mayuscula. Ejemplo: fechaInicial, baseTriangulo,
etc. (opcional).
Palabras reservadas (primitivas)
Todos los lenguajes de programacion definen unas palabras para nombrar sus
comandos, instrucciones y funciones. Un identificador definido por el usuario no puede
tener el nombre de una palabra reservada en C. Algunas palabras reservadas en C
son:
ansi continue auto default for break delete case do
catch double if char else class enum const extern
float new signed operator sizeof typedef friend private static goto protected struct
public switch virtual inline register template int return this
long short throw
try
union unsigned
void volatile while
Subrutinas, procedimientos o funciones
Una sub-rutina tambien conocidas como procedimientos o funciones son partes de un
programa que se identifican por medio de un nombre y que realizan alguna actividad
especifica. Las subrutinas sirven para ahorrar codigo pues una actividad como por
ejemplo sacar la raiz cuadrada de un numero puede utilizarse en diferentes partes de
un programa simplemente haciendo una llamada a una funcion en lugar de hacer
todos los pasos necesarios para lograr obtener el resultado.
Las funciones reciben datos, los procesan y devuelven un resultado. Este resultado
puede guardarse en una variable. Los datos que se le dan a una funcion para que
trabaje con ellos se llaman parametros. Cuando una funcion no regresa un resultado
en algunos lenguajes se les llama procedimientos. En C todas las subrutinas se llaman
funciones aunque no regresen un resultado.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Diagramas de flujo (Flujogramas):
Diagrama de flujo: Un diagrama de flujo o flujograma es una forma de representar
graficamente los pasos para resolver un problema en especifico. Estos diagramas
utilizan una serie de simbolos con significados especiales y son la representacion
grafica de los pasos de un proceso. En computacion es un primer enfoque con lo que
seria la programacion formal.
Simbologia:
Este simbolo se utiliza para representar el inicio o el fin de un
INICIO/FIN algoritmo. Tambien puede representar una parada o una interrupcion
programada que sea necesaria al realizar un programa.
Este simbolo se utiliza para un proceso determinado, es el que se
PROCESO utiliza comunmente para representar una instruccion, o cualquier tipo
de operacion que origine un cambio de valor.
Este simbolo es utilizado para representar una entrada o salida de
ENTRADA/S
informacion, que sea procesada o registrada por medio de un
ALIDA
periferico.
Este simbolo se utiliza para mandar visualizar un resultado ya sea por
IMPRESION
medio de la pantalla o por una impresion.
Este simbolo es utilizado para enlazar dos partes del diagrama pero en
diferentes hojas.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
CONECTOR FUERA DE PAGINA
Aspectos a tomar en cuenta para crear un buen diagrama de flujo:
Existe siempre un camino que permite llegar a una solucion (finalizacion del
algoritmo).
Existe un unico inicio del proceso.
Existe un unico punto de fin para el proceso de flujo (salvo del rombo que
indica una comparacion con dos caminos posibles).
Desarrollo del Diagrama de Flujo:
Acciones previas a la realizacion del diagrama de flujo:
Definir que se espera obtener del diagrama de flujo.
Identificar quien lo empleara y como.
Establecer el nivel de detalle requerido.
Determinar los limites del proceso a describir.
Pasos a seguir para construir el diagrama de flujo:
Establecer el alcance del proceso a describir. De esta manera quedara fijado
el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del
proceso previo y el final la entrada al proceso siguiente.
Identificar y listar las principales actividades/subprocesos que estan incluidos
en el proceso a describir y su orden cronologico.
Si el nivel de detalle definido incluye actividades menores, listarlas tambien.
Identificar y listar los puntos de decision.
Este es utilizado para la toma de decisiones, ramificaciones, para la
DECISION
indicacion de operaciones logicas o de comparacion entre datos.
Este simbolo es utilizado para enlazar dos partes cualesquiera de un
CONECTOR diagrama a traves de un conector de salida y un conector de entrada.
Esta forma un enlace en la misma pagina del diagrama.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Construir el diagrama respetando la secuencia cronologica y asignando los
correspondientes simbolos.
Asignar un titulo al diagrama y verificar que este completo y describa con
exactitud el proceso elegido.
Ventajas de Diagramas de flujo:
Favorecen la comprension del proceso a traves de mostrarlo como un dibujo.
El cerebro humano reconoce facilmente los dibujos. Un buen diagrama de flujo
reemplaza varias paginas de texto.
Permiten identificar los problemas y las oportunidades de mejora del
proceso. Se identifican los pasos redundantes, los flujos de los re-procesos, los
conflictos de autoridad, las responsabilidades, los cuellos de botella, y los
puntos de decision.
Tambien dentro del ambito laboral mas alla de la ingenieria muestran la
interaccion de cliente-proveedor asi como la informacion que en ellas se
realizan, facilitando a los empleados el analisis de las mismas para futuros
procesos o capacitaciones mas rapidas dentro de un entorno general de trabajo.
Son una excelente herramienta para capacitar a los nuevos empleados y
tambien a los que desarrollan la tarea, cuando se realizan mejoras en el
proceso.
El diagrama de flujo representa lo que es una secuencia de pasos a seguir por medio
de simbolos y seguidos en secuencia por medio de conectores en flechas llegando a
una solucion para una entrada; es una relacion finita dado que siempre llegara a un
fin.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Pseudocodigo:
Pseudocodigo: Un pseudocodigo (falso lenguaje), es una serie de instrucciones a
seguir pero utilizando palabras lexicas y gramaticales referidos a los lenguajes de
programacion, pero sin llegar estar estrictamente correcta su sintaxis de
programacion; ni tener la fluidez del lenguaje coloquial. Permitiendo codificar un
programa con mayor agilidad que en cualquier lenguaje de programacion. Forma parte
de las distintas herramientas de la ingenieria de software y es, netamente, lenguaje
de tipo informatico.
La estructura de un pseudocodigo puede ser de tres tipos:
Secuencial.- esta consiste en colocar cada instruccion una tras de la otra sin
tener ningun tipo de saltos
Selectiva.- esta lleva a cabo ciertas instrucciones cuando se cumple una
cierta condicion y si esta condicion no se cumple se salta a la siguiente
instruccion.
Selectiva doble (anidamiento).- Esta realiza una instruccion u otra segun
la respuesta de la condicion planteada
Selectiva multiple.- Esta realiza instrucciones para distintos
comportamientos de las condiciones, que seria como trabajar varias
selectivas dobles.
Selectiva multiple-casos.- Esta realizara para un cierto tipo de or
declarado en un inicio y dependiendo cual sea sera el tipo de
comportamiento a realizar
Iterativa.- Este consiste en la posibilidad de realizar una misma instruccion
mas de una vez
Bucle mientras.- Realiza ciertas instrucciones mientras que la condicion
se siga
cumpliendo
Bucle repetir.- Realiza ciertas instrucciones hasta que se deje de cumplir
con la condicion que a diferencia del mientras esta instruccion realiza al
menos una vez las instrucciones
Bucle para.- Se utiliza para realizar instrucciones cierto numero de veces
pero definiendo por un indice que se incrementa en cada vuelta
Bucle para cada.- Realiza instrucciones para todo elemento que cumpla
con la condicion.
Al igual que en el caso del diagrama de flujo existen ciertas reglas para que sea un
buen pseudocodigo:
1.-Tenga un unico punto de inicio 2.-Tenga un numero finito de posibles puntos de
termino
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
3.-Haya un numero finito de caminos, entre el punto de inicio y los posibles puntos de
termino
Funciones y Procedimientos:
Al plantear y resolver algoritmos medio de la programacion, al estar trabajandolos
saltan a la vista dos conceptos que aunque son similares no son lo mismo, los cuales
son las funciones y los procedimientos.
Una funcion al igual que en matematicas recibe uno o mas posibles valores y entrega
una salida, y un procedimiento recibe una entrada pero no genera salida.
Un procedimiento son instrucciones con las cuales realizaras un proceso pero son
como una receta y no ocupas nada de simbolos matematicos.
Caracteristicas de Pseudocodigos
Ocupan mucho menos espacio en el desarrollo del problema.
Permite representar de forma facil operaciones repetitivas complejas.
Es mas sencilla la tarea de pasar de pseudocodigo a un lenguaje de
programacion formal.
En los procesos de aprendizaje de los alumnos de programacion, estos estan
mas cerca del
paso siguiente (codificacion en un lenguaje determinado, que los que se inician
en esto con
la modalidad Diagramas de Flujo).
Mejora la claridad de la solucion de un problema
Todo documento en pseudocodigo debe permitir la descripcion de:
Instrucciones primitivas: Asignacion (5A), Entrada de datos, Salida de
datos.
Instrucciones de proceso: Ciclos, Operaciones con datos
Instrucciones compuestas: Desplegar algo en pantalla, ocupar una
direccion como
referencia y trabajar con ella Instrucciones de descripcion: mensajes para usuario
de que seguiria dentro del programa
Estructura a seguir en su realizacion
Cabecera:
Programa:
Modulos:
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Tipos de datos:
Constantes:
Variables:
Cuerpo:
Para comentar en pseudocodigo se le antepone al comentario dos asteriscos
(**)
Ejemplos: * Programa que calcula el area de un cuadrado a partir de un lado
dado por teclado. * Programa que visualice la tabla de multiplicar del numero
introducido por teclado
Inicio Instrucciones Fin
El pseudocodigo es otra forma de representar una solucion a un problema con la
diferencia que se hace ya un poco mas parecido a lo que seria ya un lenguaje de
programacion pero ser estrictos en la sintaxis, tiene distintas formas de estructurarse
y sus distintas secuencias, iteraciones y repeticiones son ya muy similares al menos
en contexto a lo que serian ya dentro de un programa.
Sintaxis del Pseudocodigo Si <condcion>
Entonces Fin_Si
________________________________________________________________________ Si
<condicion>
Entonces Instrucciones
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Si no Instrucciones
Fin_Si ________________________________________________________________________ Si
<condicion>
Entonces Instrucciones
Si no Si <condicon>
Entonces Instrucciones
Si no Instrucciones
Fin_Si Fin_Si
________________________________________________________________________ En caso de
<expresion>
Haga Caso <opcion 1>:
Instrucciones Casi <opcion 2>:
Instrucciones Instrucciones
Fin_caso ________________________________________________________________________
Mientras que <condicion>
Instrucciones Fin_Mientras
________________________________________________________________________ Repita
Instrucciones
Si no
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Hasta <condicion>
________________________________________________________________________ Para <var> =
<exp1> hasta <exp2> paso <exp3> haga
Instrucciones Fin_para
Prueba de escritorio:
Para desarrollar la prueba de escritorio, se utilizara el siguiente procedimiento:
Con datos de prueba, se seguiran cada uno de los pasos propuestos en el
algoritmo de resolucion.
Si la prueba de escritorio genera resultados optimos, quiere decir que el
algoritmo posee una logica adecuada, en caso contrario el algoritmo tendra que
ser corregido.
Ejemplo:
suma :entero entrada :entero menor :entero
leer entrada menor = entrada suma = 0 mientras (entrada != 0) haga si
(entrada < menor) entonces menor =entrada fin_si suma = suma + entrada
leer entrada fin_mientras escribir valor Menor: escribir menor
Prueba de escritorio: Una prueba de escritorio es la comprobacion logica, de un
algoritmo de resolucion.
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
escribir Suma: escribir suma
INSTRUCCION leer entrada
menor = entrada suma :=0 suma :=suma + entrada leer entrada menor = entrada
suma :=suma + entrada leer entrada suma :=suma + entrada leer entrada Escribir
valor menor: Escribir menor Escribir Suma: Escribir suma
Tareas por asignar o Ejercicios
entrada menor suma
Pantalla
Inserte aqui las tareas o ejercicios a realizar por los estudiantes Laboratorio de
Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Tarea 1 Realizar un pseudocodigo para los siguientes problemas tomar en cuenta
todos los posibles casos a ocurrir: 1.-Calcular el ano en que nacio una persona a partir
de su ano y mes de nacimiento Tarea II Realizar las respectivas pruebas de escritorio
para cada uno de los ejercicios y en cada caso completar lo que falte (a diagramas su
pseudocodigo y viceversa)
Ejemplos en clase Calcular el area de un rectangulo de lados con valor de 4 x 71
a=4 , b=71 int Area
1. Inicio 2. Area=axb 3. Mostrar Area 4. Fin
Inicio
a= 4, b=71 Area = a x b
w
Area
Fin
Inicio a, b Area = a x b
Area
Fin
Calcular el area de un rectangulo de cualquier tamano int Area, a, b
1. Inicio 2. Area=axb 3. Mostrar Area 4. Fin
Calculo de grados centigrados a Fahrenheit o viceversa Float resul, grados
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Char opcion
1. Inicio
2. Mostrar Ingrese que desea calcular C o F
3. Leer opcion
4. Mostrar Dame los grados
5. Leer grados
6. Si ( opcion=C)
Entonces resul = ((9 x grados) /5 )+32
Si no resul = ((grados 32) x 5) / 9
Fin_Si
5. Mostrar resul
6. Fin
Inicio
Que desea calcular CoF
opcion Dame los grados grados
no
si
opcion =c
resul
Fin
resul = ((9 x grados) /5 )+32
resul = ((grados 32) x 5) / 9
Obtener el valor del promedio de 3 calificaciones Float a, b, c, sum, prom
1. Inicio
2. Mostrar dame las 3 calificaciones
3. Leera,b,c
4. Sum=a+b+c
5. Prom=Sum/3
6. Mostrar el promedio es, Prom
7. Fin
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Obtener el resultado de la resta de un numero menos un numero mas grande que el
otro int num1, num2, resta
1. Inicio
2. Mostrar Dame los 2 numeros
3. Leer num1 y num2
4. Si (num1<num2)
Entonces resta = num1 - num2
Si no Si (num1>num2)
entonces resta =num2 num1
Si no Si (num1=num2)
entonces Mostrar 0
Si no Mostrar error
Ir a paso 2
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Fin_Si Fin_Si
Fin_Si
Inicio Dame los 2 numeros
num1, num2 num1<num2
si
resta = num1 - num2
no
Fin
num1>num2
no
num1=num2
si
ERROR
Que el usuario de su genero y su nombre, dependiendo de su genero imprimir en
pantalla Bienvenido nombre, Bienvenida nombre, y si en dudo caso se pone otra
opcion imprimir en pantalla Hola indeciso.
Char sexo, nombre
5. Inicio
6. Leer sexo
7. Leer nombre
8. Si ( sexo = hombre)
Entonces Mostrar Bienvenido, nombre
si no Si (sexo == mujer)
Entonces Mostrar Bienvenida, nombre
si no
si
resta = num2 num1
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Fin_Si 9. Fin
Mostrar Hola indeciso Fin_Si
indeciso
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Problema del ajedrez y el trigo Una persona le pidio al rey que le pusiese en cada
casilla de ajedrez granos de arroz, con la logica que en cada casilla tuviese el doble de
granos que la anterior
Int : x, trigoT 1-Inicio 2-trigoT=0 3-Para x=0 hasta x=63 paso 1
haga
Fin_Para 5- Imprime trigoT 4-Fin
Calculo de operaciones con solo 3 variables y obtener la suma, la resta, la division y la
multiplicacion
Int x, y , z 1. Inicio
2. Mostrar Dame 2 datos
3. Leer x, y
4. Calcular z= x + y
5. Mostrar z
6. Calcular z= x - y
7. Mostrar z
8. Calcular z= x * y
9. Mostrar z
10.Si y=0
Entonces Mostrar Error
Si no z= x / y
Mostrar z Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-
2010
Calcula trigoT= (trigoT*2) + 1
Fin_Si 11. Fin
Pago de un empleado segun sus horas de trabajo
Int hr_lab, tar_sem, T, extra
1. Inicio
2. T=0
3. Mostrar Dame el valor de la tarifa semanal
4. Leer tarSem
5. Mostrar Dame el valor de horas laboradas
6. Leer hrLab
7. Si (hrLab>40)
Entonces Calcular extra=hr_lab-40
Calcular T= extra*(1.5*tarSem)
Fin_Si
8. T=T+(tarSem*hrLab)
9. Mostrar T
10. Fin
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Adivina el numero que esta pensando la computadora
a=6, int num 1. Inicio
2. Repita Mostrar Dame un numero
Leer num Si a != num
Entonces Si a>num
Entonces
Mostrar Mi numero es mayor Si no
Si a<num entonces
Mostrar Mi numero es menor Si no
Mostrar lo que diste no es un numero Fin_Si
Fin_Si Fin_Si
Hasta (a!=num)
3. Mostrar Felicidades, ya ganaste 4. Fin
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Un menu que te permite decidir que torta quieres Char OpTorta
1. Inicio
2. Mostrar Opcion a: Torta rusa
Opcion b: Torta Huatulco Opcion c: Torta Mexicana Opcion d: Torta Cubana
3. Leer OpTorta
4. En caso de (OpTorta) haga
Caso <a>: Mostrar Sale una torta Rusa!! Son $20
Caso <b>: Mostrar Sale una torta Huatulco!! Son $25
Caso <c>: Mostrar Sale una torta Mexicana!! Son $28
Caso <d>: Mostrar Sale una torta Cubana!! Son $30
Si no
Fin_Caso 5. Fin
Mostrar Esa opcion no la tenemos
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Una empresa necesita tener un reloj de 24 horas, solo se quiere que muestre, horas, minutos y
segundos
Hacer un reloj de 24 horas int hr, min, seg
1. Inicio 2. Para hr=0 hasta hr=23 paso 1 haga
Para min=0 hasta min 59 paso 1 haga Para seg00 hasta seg=59 paso 1 haga Mostrar hr: min: seg
Fin_Para
Fin_Para
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
3. Fin
Fin
hr = hr +1
Inicio
hr=0
hr <=23
min=0
Min < 59
seg = 0
no
si
no
si
si
no
Seg<60 Hr : min : seg
seg = seg + 1
min = min + 1
Obtener el factorial de un numero
1. Inicio
2. Mostar dame el numeo
3. Leer N
4. F=1
5. Si (N>1)
entonces Calcular F=F*N
Calcular N=N-1
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
si no Mostrar F
6. FIN
F= 1 Si
Inicio N
No
N>1
F
Fin
F= F*N N = N-1
Int existen, sobran=60, compras= 0, boleto, aux=0
Algoritmo que requiere una cadena de cines para vender 60 entradas a una sala con pantalla de
360
1. Inicio
2. Sobran=60, compras =0, aux=0
3. Mientras sobran> 0
Mientras compras <61 entonces Muestra cuantos boletos quiere?? Leer boleto
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
fin_si fin_mientras
fin_mientras sobran= -sobran
existen= sobran calcula sobran= 60- compras
si sobran> 0 entonces compras = compras + boletos sobran= sobran compras si compras>60
entonces aux= 60- compras
sobran=aux fin_si/*cuando quieren comprar mas de los disponibles*/
4. Muestra lo sentimos se agotaron las entradas solo nos falto venderte sobran boletos
Fin
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Inicio
Sobran >0
Sobran= -(sobran)
No mas boletos
Fin
compras<61 boletos
existen= sobran Sobran= 60-compras
sobran <60
Sobran=60, compras =0, aux=0
compras= compras + boletos
sobran= sobran compras
compras>60
aux= 60- compras sobran=aux
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010
Material derivado de:
ALGORITMOS Y PROGRAMACION (GUIA PARA DOCENTES) SEGUNDA EDICION, 2007, 2009. Juan Carlos Lopez
Garcia http://www.eduteka.org
Control de Version
Priscilla Hdz Ian Coronado Ian Coronado
22-ix-2009 Revision 23-ix-2009 2.0 06-i-2010 3.0
Autor
Fecha
Version
Ian Coronado
10-ix-2009
12-1-2020
1.1
Honorato Saavedra
3.1
Laboratorio de Multimedia e Internet, Facultad de Ingenieria. UNAM 2009-2010