Está en la página 1de 106

Fundamentos de Programación

Clave 1122
Semestre 2023-1
Grupo 21

Universidad Nacional Autónoma de México


Facultad de Ingeniería
División de Ingeniería Eléctrica
Tema 2. Resolución de
problemas

Resolución de problemas Fundamentos de Programación


Contenido
✓ Objetivo
✓ 2.1 Definición, planteamiento y modelado de un
problema
✓ 2.2 Algoritmos para la resolución de problemas
✓ 2.4 Refinamiento del algoritmo.
✓ 2.3 Definición del modelo computacional.

Resolución de problemas Fundamentos de Programación


Objetivo

El alumno resolverá problemas mediante la


especificación algorítmica.

Resolución de problemas Fundamentos de Programación


Tema 2.1
Definición,
planteamiento
y modelado de
un problema
Etapas generales para la solución de un problema

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Sistema
• Etimológicamente, la palabra "sistema" proviene de dos
vocablos griegos: syn e istemi, que querría decir "reunir en un
todo organizado”.

• Se puede entender como:

“Conjunto de elementos que tienen un propósito en común,


que están relacionados entre sí de forma directa o a través de
sus atributos”.

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Entorno transformacional

Entorno transaccional

Sistema 2
Sistema 1
Sub
1 Sub 2
Sub Sub 2
1
Sub
Sub 3
Sub
4 3

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Enfoque sistémico

“Es la actitud del ser humano, que se basa en la percepción del


mundo real en términos de totalidades para su entendimiento,
comprensión y accionar, a diferencia del planteamiento del
método científico, que sólo percibe partes de éste y de manera
inconexa.”

Propone que cualquier problema puede analizarse asociado al


concepto de sistema.

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Enfoque sistémico

La realidad es un producto que nace de la relación entre el


individuo que observa y el objeto que es observado. Dicha
realidad no refleja totalmente lo que existe en el mundo real, y
tampoco es idéntica a la realidad generada por otros
observadores.

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Problemática

Por lo general un problema no se encuentra aislado, sino al


contrario, se encuentra mezclado o inmerso en un sistema de
problemas, lo que se conoce como la problemática.

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Problemática

Problema 1 Problema 2

Problema 3
Problema 4

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Existen muchos criterios y técnicas para la selección del problema a


atender:
Criterios: Técnicas:
• Beneficios de solucionar el • Diagrama de Ishikawa.
problema. • Técnica Zoop.
• Urgencia. • Lluvia de ideas.
• Dependencia de otras situaciones. • Técnica Delphi.
• Intereses particulares. • Etcétera.
• Recursos de los que se dispone
(tiempo, dinero, capacidad,
personal).
• Alcance de la situación.
• Etcétera.
Resolución de problemas Fundamentos de Programación
Resolución de problemas desde el enfoque sistémico

Diagrama de causa-efecto

✓ Se ocupa para determinar sistemáticamente factores que


pueden afectar o contribuir a una determinada situación.

✓ Se puede ocupar también para la selección de un problema a


resolver.

✓ Se conoce también como Diagrama de Ishikawa o Diagrama de


espina de pescado.

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico

Diagrama de causa-efecto

Limitantes: Las causas se presentan como mutuamente excluyentes


y se mantiene un pensamiento determinista y mecánico.

Por sí mismo el diagrama causa-efecto no indica el peso de cada


causa, éste se determina por el uso de otras técnicas o
herramientas: como el Principio de Pareto.

Algunas de estas deficiencias se pueden solventar dibujando con


una nomenclatura adecuada las relaciones entre las causas. Es
decir, conectando mediante líneas a las causas relacionadas.

Resolución de problemas Fundamentos de Programación


Resolución de problemas desde el enfoque sistémico
Diagrama de causa-efecto
1. Formación del grupo de trabajo. De preferencia entre 5 y 15
personas.
2. Planteamiento del problema. Descripción del problema evitando
ambigüedades.
3. Identificación de las posibles causas. Lluvia de ideas.
4. Agrupación de las causas y categorización. De forma participativa.
5. Construcción del diagrama. Las causas mayores agrupan a las
causas menores.
6. Determinación de las causas con mayor impacto o probabilidad.
Cada integrante selecciona 3 causas de mayor importancia y les
asigna un valor: La más importante, la menos importante, la
intermedia.
7. Elaboración de propuestas de solución
Resolución de problemas Fundamentos de Programación
Ejercicio. Utilizar la técnica del diagrama de causa efecto para seleccionar un
problema a atender de entre los que componen una problemática.
Problemática: Movilidad deficiente en la Zona Metropolitana del Valle de
México (ZMVM).
La ZMVM se compone por la CDMX, 56 municipios del estado de México y uno
del estado de Hidalgo. Actualmente presenta un problema de movilidad debido
a la concentración de actividades laborales, escolares y políticas, entre otras.
Más del 40% de las personas que la habitan tienen que trasladarse al menos a
un municipio o delegación diferente a donde residen.
Los sistemas de transporte público que existen son el Metrobús, el Transporte
Colectivo Metro, el Servicio de Transportes Eléctricos de la Ciudad de México, el
Sistema de Movilidad 1 (antes RTP), servicios de bicicletas públicas compartidas
como Ecobici, el ST-BRT Mexibus, el Tren suburbano y microbuses de transporte
concesionado. A pesar de la variedad de medios públicos y del transporte
privado, la movilidad de la CDMX presenta grandes deficiencias, sobre todo en
horas pico, generando tiempos excesivos de espera y de transporte,
incomodidad al viajar, estrés, altos costos acumulados de viaje, incertidumbre
en el servicio y grandes niveles de contaminación.

Resolución de problemas 2.1 Definición, planteamiento y


modelado de un problema
Resolución de problemas desde el enfoque sistémico

Mapas mentales (Modelo de neurona propuesto por Tony


Buzán)
Herramientas que contribuyen a plantear una situación o tema
principal de forma gráfica con el objetivo de identificar los
elementos que intervienen y sus relaciones. Las ideas o
conceptos relacionadas surgen de una lluvia de ideas.

Gráficamente, son una representación radial en cuyo centro se


localiza el tema o asunto central de interés, y a partir del cual
irradian líneas sobre las cuales se escriben las ideas asociadas con
él en forma sintética. De cada palabra es posible irradiar más
líneas e ideas, de tal forma que el resultado final es una
estructura que en general evoca la de una neurona.

Resolución de problemas Fundamentos de Programación


Resolución de problemas Fundamentos de Programación
Resolución de problemas desde el enfoque sistémico
Mapas mentales (Modelo de neurona propuesto por Tony
Buzán)
1. Se establece una imagen central que representa el tema
principal.
2. Mediante ramas que tienen su origen en la imagen central
se colocan los conceptos, las palabras o ideas más
importantes relacionadas con el tema de interés.
3. Mediante ramas secundarias que salen de cada rama se
indican puntos menos relevantes que las ideas principales.
4. La jerarquía de las ideas o conceptos se representa con el
tamaño de las palabras. Mientras mayor tamaño tengan la
jerarquía será mayor.
5. Las ramas forman una estructura nodal conectada,
semejante a la de una neurona.

Resolución de problemas Fundamentos de Programación


Resolución de problemas Fundamentos de Programación
Resolución de problemas desde el enfoque sistémico

Mapas mentales (Modelo de neurona propuesto por Tony


Buzán)
Ejercicio a realizar en parejas.
Se aproximan los 15 años de la prima consentida de la familia y,
como tú estudias ingeniería y eres bueno para resolver
problemas =), tus tíos te pidieron ayuda para organizar la fiesta.
Así que para presentarle la propuesta a tus tíos y tener presentes
todos los elementos que hay que considerar para la fiesta,
decidiste hacer un mapa mental al respecto.
¡Manos a la obra!
Tiempo para realizarlo: 10 minutos

Resolución de problemas Fundamentos de Programación


¨Nunca hay tiempo para hacer las cosas bien, pero sí
para hacerlas dos veces.¨

–Anónimo

Resolución de problemas Fundamentos de Programación


Analogía de un proyecto de software: Caso extremo

La solicitud del Lo que entendió el El diseño del El programa Lo que ofrecen los
usuario líder del proyecto analista desarrollado de marketing

Lo que el usuario
La documentación La implantación El presupuesto El soporte técnico necesitaba
del proyecto en producción del proyecto realmente
Resolución de problemas Fundamentos de Programación
Ingeniería de Software

Aplicación de un enfoque sistemático, disciplinado y


cuantificable al desarrollo, operación y mantenimiento del
software.

Su objetivo es llevar un mejor control del desarrollo del


software y tener mayor certeza de que cumplirá con las
expectativas planteadas de todos los interesados.

Resolución de problemas Fundamentos de Programación


Ingeniería de Software

Estratos de la ingeniería de software

Resolución de problemas Fundamentos de Programación


Ingeniería de Software
Sobre el enfoque de un tener un producto de calidad se
establece el Proceso del Software (grupos de procesos) con el fin
de tener organización, control, estabilidad y calidad en las
actividades para el desarrollo de software.

Los Métodos de la ingeniería de software se refieren a las


técnicas para realizar las actividades del proceso de software, es
decir, el cómo realizarlas: cómo obtener los requerimientos,
cómo realizar el análisis de requerimientos, cómo construir el
programa, cómo realizar las pruebas.

A través del bloque de Herramientas se realiza de forma


automatizada o semiautomatizada el Proceso del Software y los
Métodos.

Resolución de problemas Fundamentos de Programación


Ingeniería de Software
Proceso de software
Es una serie de pasos definidos de acuerdo con el tipo de
software a desarrollar. Abarca procesos de las siguientes
categorías:
a) Comunicación. Comunicación y colaboración con los
stakeholders (interesados) en el proyecto para saber qué es
lo que se espera y cuáles son las condiciones en que se
desarrollará el proyecto.
b) Planeación. Definición de actividades generales, qué se
requiere y qué generará cada actividad general, tareas que
conforman cada actividad general, los recursos humanos y
materiales para cada actividad, definición de tiempos e
identificación de riesgos en cada actividad general, por
mencionar algunos.

Resolución de problemas Fundamentos de Programación


Ingeniería de Software
Proceso de software

c) Modelado. Creación de modelos que permitan a los


stakeholders principales y al equipo de desarrollo entender
de mejor manera cómo el sistema cumplirá los requisitos.

d) Construcción. Generación de instrucciones del programa y


realización de pruebas.

e) Despliegue. El software se entrega al stakeholder, quien lo


evalúa y comunica su opinión al administrador del proyecto
de software.

Resolución de problemas Fundamentos de Programación


Ingeniería de Software
Proceso de software

El administrador del proyecto realiza actividades para llevar por


buen camino el Proceso del Software. Éstas se pueden clasificar
en:
1. Seguimiento y Control. Evaluar el progreso real con respecto
al programado y tomar decisiones al respecto.

2.Gestión del riesgo. Encontrar los riesgos que pueden afectar


el desarrollo del proyecto y llevar a cabo medidas para que
no se presenten.

Resolución de problemas Fundamentos de Programación


Ingeniería de Software
Proceso de software

3. Aseguramiento de la calidad del software. Establecer


actividades para que cada proceso genere productos de
calidad.

4. Medición. Define y recolecta mediciones de los procesos.

5. Gestión de la configuración del software. Administra los


cambios requeridos en el desarrollo del software.

Resolución de problemas Fundamentos de Programación


Ciclo de vida del Software

Curva de desarrollo de software

Resolución de problemas Fundamentos de Programación


Curva de desarrollo del software

Resolución de problemas Fundamentos de Programación


Tarea 3: Proceso de software de la ingeniería de
software. Etapa de planeación.
Tema 2.2
Algoritmos
para la
resolución de
problemas
Algoritmo

Conjunto de pasos, procedimientos o acciones que permiten


alcanzar un resultado o resolver un problema.

• Precisión. Los pasos a seguir deben ser indicados clara y


específicamente (cero ambigüedad).
• Determinismo. En un algoritmo, cada que se utilicen los
mismos datos de entrada se deben producir los mismos
resultados.
• Finito. Todo algoritmo debe de ser de una longitud finita.

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Algoritmo

Componentes de un algoritmo

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios. Realizar los siguientes algoritmos en pasos
numerados. Cada paso numerado debe corresponder a una sola
acción.
Considere que quien seguirá el algoritmo no conoce los nombres
de lugares o edificios, así que deberá describir clara y
específicamente qué acciones hacer y hasta cuándo hacerlas.

a) ¿Cuál es el algoritmo para llegar desde su cuarto hasta la


entrada de su bachillerato?

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
b) Un pastor tiene que pasar un lobo, una oveja y una caja de
lechugas a la otra orilla del río donde se encuentra, cuenta con
un bote en el que sólo caben él y una de las otras tres cosas.
No puede dejar al lobo sólo con la oveja porque se la come, y
no puede dejar a la oveja sola con la caja de lechugas porque
se las come. ¿Cuál es el algoritmo para solucionar este
problema? Explique en el siguiente formato:

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
c) Tres misioneros en áfrica se perdieron en una jungla, pero
sabían que el pueblo más cercano estaba cruzando el río. Cuando
llegaron al río se encontraron con 3 caníbales, quienes se
ofrecieron a pasarlos al otro lado en un bote en el que cabían sólo
2 personas.
Los misioneros no tenían otra opción, así que aceptaron, pero
sabían que si en algún momento el número de caníbales los
superaba serían un buen platillo.
¿Cuál es el algoritmo para que los misioneros pasen al otro
lado del río sin ser el plato fuerte de los caníbales?

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
d) Indique el procedimiento para solucionar las torres de Hanoi
con 3 discos en 7 movimientos

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
e) Indique el procedimiento para solucionar las torres de Hanoi
con 4 discos en 15 movimientos

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
f) Un lechero tiene un cántaro de 8 litros lleno de leche, uno de 5
y uno de 3 litros pero vacíos. Un cliente le pide exactamente 4
litros.
¿Qué procedimiento se debe llevar a cabo para dar los 4 litros
al comprador en el cántaro de 5 litros?

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
g) Se tienen doce monedas aparentemente iguales, pero una de
ellas tiene un peso ligeramente superior. ¿Cuál es el algoritmo
para que se encuentre la moneda diferente usando una
balanza de platillos sólo en tres ocasiones?

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
i) Escribir los pasos del algoritmo para llegar del Zócalo de la Ciudad de
México a la puerta de los leones de Chapultepec (Frente a la
suavicrema gigante).

Opción 1 Opción 2 Opción 3

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicios
i) (continuación)
Trate no gastar dinero en pasaje de metro o taxi a menos que sea
estrictamente necesario por presiones de tiempo.
Tome como primera opción el uso de una ecobici en la estación 89, la cual se
encuentra casi en el cruce de la calle Monte de Piedad con Tacuba. Considere
que en la estación puede haber bicicletas disponibles desde el momento en
que llega y entonces podría usar alguna. En ese caso deberá describir los pasos
para llegar a la puerta de los leones por ese medio. También considere el caso
en que puede que no haya bicicletas disponibles cuando llegue y establezca un
tiempo de espera adecuado antes de tomar una segunda opción de transporte.
En su algoritmo considere que, si después del tiempo de espera que usted haya
determinado aún no hay bicicletas disponibles, se dirigirá a la estación del
metro Allende sobre calle Tacuba. Para el caso del uso del metro establezca
también un tiempo de espera. En su algoritmo desarrolle los pasos en caso de
que pase el metro dentro de ese tiempo de espera, pero también considere
que si no pasa un metro en el tiempo de espera establecido deberá salir del
metro y tomar un taxi que lo lleve a su destino.

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
j) El conductor de una combi debe cobrar la
cantidad exacta del pasaje a partir de que escucha
de alguno de los pasajeros la frase “se cobra” y de
que le ofrecen el dinero. Como es el primer día
que trabaja conduciendo una combi no tiene
memorizados los precios de la tarifa así que en
cada ocasión que le paguen tendrá que revisar la
tarifa impresa. Sin embargo, sí conoce los
nombres y ubicaciones de los lugares de ascenso y
descenso en la ruta. Considere que el conductor
no tiene restricciones de dinero en monedas
sueltas para regresar el cambio, y que los
pasajeros de los que se pasa el pasaje subieron
juntos en el mismo lugar y bajarán de la combi
también juntos en otro lugar.
Considere en el algoritmo que si al pasar el pasaje
los usuarios no indican al conductor los datos que
necesita para cobrar la cantidad justa, él tendrá
que preguntar uno por uno por los datos faltantes.
Resolución de problemas 2.2 Algoritmos para la resolución de
problemas
k)
Están en la cocina a las 4 de la tarde y los mandan a comprar un
litro leche deslactosada light de la marca “La vaquita feliz” a
alguna tiendita. Les advierten que no regresen a la casa si no la
consiguen. ¿Cuál es el algoritmo que deberán realizar para
comprar la leche en una tiendita y regresar a su casa?

- Si les tiene que dar cambio esperan el cambio

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
l)
Algoritmo que describa el siguiente comportamiento de un
estudiante, desde que toma su primer clase en el día hasta que se
va a su casa. La primera acción del estudiante es entrar a clase. Al
salir de cada clase, evaluará si todavía tiene clases en el resto del
día. Si ya no tiene clase, se irá a su casa. Si tiene otra clase
inmediatamente, entrará a dicha clase. Si no tiene clase
inmediatamente, podrá hacer una de tres opciones en el orden de
prioridad indicado: 1. comer si es que tiene hambre, 2. hacer tarea
si es que tiene tarea, o 3. pasar el rato con sus amigos si no tiene
hambre ni tarea.
Use pasos que se ejecuten de manera secuencial, pasos que se
ejecuten sólo si se evalúa como verdadera alguna condición, y
pasos que se repitan si se consideran como verdadera o falsa
alguna otra condición.

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Ejercicio.

De forma individual:
1. Enviar por correo los algoritmos de todos los niveles para
ayudar al conejo a comer las zanahorias. Trate de que sean los
menos pasos posibles:
https://www.google.com/doodles/celebrating-50-years-of-kids-
coding

2. Hacer un algoritmo donde explique alguna cosa que sabe


hacer. Por ejemplo, un paso de baile, preparar un platillo, hacer
una figura de origami, hacer un dibujo, etc.
Si el algoritmo lo amerita, use evaluaciones para hacer una u
otra cosa o para repetir pasos.

Resolución de problemas 2.2 Algoritmos para la resolución de


problemas
Tema 2.1
Refinamiento
del algoritmo
Tipos de datos en un algoritmo de computación

Datos numéricos
• Números enteros y reales. Ejemplo: 1, -5, 8.9, 0, -4.333

Datos de tipo carácter


• El carácter que representa una letra, el carácter que
representa un número, o un símbolo especial. Se escribe
entre comillas simples (apóstrofes). Ejemplos: ‘A’, ‘g’, ‘4’, ‘ ’,
‘#’, ‘.’

Resolución de problemas 2.4 Refinamiento del algoritmo


Tipos de datos en un algoritmo de computación

Datos de tipo cadena de caracteres


• Unión de datos de tipo carácter. Se escribe entre comillas
dobles. Ejemplos: “Hola”, “45Lucas”, “2 B”, “RH B-”, “245”,
“-1.7”

Datos de tipo booleano.


• Sólo hay 2 valores posibles: Verdadero (True) o Falso (False)

Resolución de problemas 2.4 Refinamiento del algoritmo


Tipos de datos en un algoritmo de computación

En un algoritmo de computación, los datos se almacenan en


Variables o en Constantes.
• Las Variables almacenan datos que cambian durante la
ejecución de un algoritmo.
• Las Constantes almacenan datos que permanecen siempre
con el mismo valor durante la ejecución de un algoritmo.

Para nombrar, manejar y diferenciar cada variable o constante se


usan Identificadores.

Resolución de problemas 2.4 Refinamiento del algoritmo


Tipos de datos en un algoritmo de computación

Identificadores.
• Un Identificador es el nombre de la variable o la constante en el
algoritmo.
• No se debe usar el mismo identificador para diferentes datos.
• El primer carácter del identificador debe ser una letra, y los
caracteres posteriores del identificador pueden ser
alfanuméricos (letras, dígitos, o símbolos especiales).

Resolución de problemas 2.4 Refinamiento del algoritmo


Convención Camel Case para identificadores

1. Upper Camel Case. La primera letra de cada una de las


palabras del identificador se escribe en mayúscula.
Ejemplo: NombreDelPrograma, Programa, NombreDelAlgoritmo

2. Lower Camel Case. La primera letra de la primera palabra del


identificador se escribe en minúscula, y la primera letra de
cada una de las demás palabras se escribe como mayúscula.
Ejemplo: nombreDelAlumno, resultado, direccionDeAlumno.

En nuestro caso, vamos a manejar la notación Lower Camel


Case para variables, y Upper Camel Case para nombrar códigos.
Las constantes las escribiremos en mayúsculas.

Resolución de problemas 2.4 Refinamiento del algoritmo


Diagrama de flujo
Representación gráfica de un algoritmo.

A partir de un algoritmo se puede escribir un programa en


pseudocódigo o en algún lenguaje de programación.

Pseudocódigo
Representación de los pasos indicados en un diagrama de
flujo en instrucciones genéricas, similares a las de un
lenguaje de programación.

Resolución de problemas 2.4 Refinamiento del algoritmo


Símbolos utilizados en un diagrama de flujo

INICIO • Inicio del algoritmo.

FIN • Fin del algoritmo.

• Entrada de datos. En su interior se indican los


identificadores para los datos que se reciben
como entrada del algoritmo.

Resolución de problemas 2.4 Refinamiento del algoritmo


Símbolos utilizados en un diagrama de flujo

• Proceso del algoritmo. En su interior se


expresan operaciones aritméticas,
asignaciones de valores, u otras acciones.

condición
NO • Decisión. Determina si se ejecutan acciones o
no. En su interior se evalúa una condición; si la
SÍ condición que se evalúa es verdadera se sigue
Acción o acciones el rumbo indicado por la flecha con la leyenda
SÍ y se realiza una o varias acciones que se
indican, si la condición que se evalúa es falsa
se sigue el camino indicado por la flecha con la
leyenda NO y no se ejecuta la acción o las
acciones indicadas.

Resolución de problemas 2.4 Refinamiento del algoritmo


Símbolos utilizados en un diagrama de flujo

• Decisión “si – sino (if-else)”. Determina si se


ejecuta una determinada acción u otra. En su
SÍ NO
condición interior se evalúa una condición; si la condición
que se evalúa es verdadera se sigue el rumbo
indicado por la flecha con la leyenda SÍ y se
Acción Acción
o o
realiza una acción o acciones que se indican por
acciones acciones esa rama (rama SÍ); si la condición que se
evalúa es falsa se sigue el camino indicado por
la flecha con la leyenda NO y se realiza la acción
o acciones indicada por esa rama (rama NO).

Resolución de problemas 2.4 Refinamiento del algoritmo


Símbolos utilizados en un diagrama de flujo

• Decisión múltiple. En su interior se indica un


identificador, y dependiendo del valor que tome
éste en la ejecución del algoritmo se sigue uno
de los múltiples caminos.

• Módulo de un problema. Señala que para


continuar el flujo normal del algoritmo hay que
solucionar el sub problema que se indica en su
interior.

Resolución de problemas 2.4 Refinamiento del algoritmo


Símbolos utilizados en un diagrama de flujo

• Notificación. En su interior se indican valores de


salida del algoritmo o notificaciones que es
necesario que alguien vea para interactuar con
el algoritmo.

• Flechas de dirección. Indican la dirección del


flujo en el diagrama.

Resolución de problemas 2.4 Refinamiento del algoritmo


Símbolos utilizados en un diagrama de flujo

• Conexión de elementos del diagrama dentro de


una misma página. Se ocupan 2 para indicar la
conexión; en cada uno se indica el mismo
carácter para indicar las partes que están
conectadas.

• Conexión entre páginas diferentes. Se ocupan 2


para indicar la conexión; en cada uno se indica
el mismo carácter para indicar las partes que
están conectadas.

Resolución de problemas 2.4 Refinamiento del algoritmo


Correspondencia de pseudocódigos con símbolos de diagrama
de flujo

INICIO • INICIO

FIN • FIN

• LEER, GUARDAR
edad Ejemplos: LEER: edad , GUARDAR: edad,
edad = valor indicado por el usuario,
edad valor indicado por el usuario

Resolución de problemas 2.4 Refinamiento del algoritmo


Correspondencia de pseudocódigos con símbolos de diagrama de flujo

Ejemplos:
HACER: a = b+c
a=b+c
HACER: a b+c
HACER: Mover el disco a la torre C
HACER: Abrir la caja de pizza

SI condición a evaluar ENTONCES


NO
condición Acción 1;
SÍ Acción 2;
Acción o acciones …
Acción N;
FIN SI
Resolución de problemas 2.4 Refinamiento del algoritmo
Correspondencia de pseudocódigos con símbolos de
diagrama de flujo
SI condición a evaluar ENTONCES

condición
NO Acción 1;
Acción 2;
Acción Acción

o o
acciones
Acción N;
acciones
FIN SI
DE LO CONTRARIO
Acción a;
Acción b;

Acción M;
FIN DE LO CONTRARIO

Resolución de problemas 2.4 Refinamiento del algoritmo


Correspondencia de pseudocódigos con símbolos de
diagrama de flujo

Identificador SELECCIONAR valor_del_identificador EN


de variable
CASO valor1:
Acciones valor1
CASO valor2:
Acciones valor2
CASO valor3:
Acciones valor3
CASO POR DEFAULT:
Acciones caso por default
FIN SELECCIONAR

Resolución de problemas 2.4 Refinamiento del algoritmo


Correspondencia de pseudocódigos con símbolos de
diagrama de flujo

edad IMPRIMIR: edad


ESCRIBIR: edad
NOTIFICAR: edad

Resolución de problemas 2.4 Refinamiento del algoritmo


Declaraciones e inicialización de variables

factor1, factor2: NUMÉRICO;


nombre, apellidoPaterno: CADENA DE CARACTERES;
factor1= 5; (factor1:=5 , factor1 5)
factor2=10; (factor2:=10 , factor2 10)
nombreAlumno=“Heriberto”; (nombreAlumno:= “Heriberto”,
nombreAlumno “Heriberto”)

Resolución de problemas 2.4 Refinamiento del algoritmo


Reglas en un diagrama de flujo
1. Siempre debe tener un inicio y un final.
2. Las flechas de conexión deben ser verticales u horizontales.
3. Todas las flechas de conexión deben estar conectadas a un
elemento del algoritmo.
4. Debe ser construido de arriba hacia abajo y en caso de
extenderse horizontalmente debe seguir un sentido de
izquierda a derecha.
5. La notación debe ser independiente de los lenguajes de
programación.
6. En las tareas complejas deben indicarse anotaciones
complementarias.
7. A cada símbolo sólo debe llegar una línea.

Resolución de problemas 2.4 Refinamiento del algoritmo


Operadores aritméticos en algoritmos
Operador Operación Ejemplo Resultado
= := - Asignación suma 5+3 suma vale 8
** Potencia 2**3 8
* Multiplicación 4*5 20
/ División 33/5 6.6
+ Suma 2+3 5
- Resta 6-4 2

mod Módulo 33 mod 5 3


(Residuo de la división)

div División entera 33 div 5 6


(Cociente de la división)

Resolución de problemas 2.4 Refinamiento del algoritmo


Operadores condicionales (operadores de comparación)
en algoritmos
Operador Operación Ejemplo Resultado
4==4 Verdadero
== Igual que
"casa"= = "caza" Falso
4 != 4 Falso
< > , != Diferente a
"casa" != "caza" Verdadero
< Menor que 4<7 Verdadero
> Mayor que 4>7 Falso
Menor o igual 5<=5 Verdadero
<=
que 5.1 < = 5 Falso
Mayor o igual 5>=5 Verdadero
>=
que 5.1 > = 5 Verdadero

Resolución de problemas 2.4 Refinamiento del algoritmo


Operadores lógicos en algoritmos

V= VERDADERO
F= FALSO

Tabla del AND Tabla del OR


Valor 1 AND Valor 2 Resultado Valor 1 OR Valor 2 Resultado
V AND V V V OR V V
V AND F F V OR F V
F AND V F F OR V V
F AND F F F OR F F

Resolución de problemas 2.4 Refinamiento del algoritmo


Jerarquía de los operadores
en algoritmos

Resolución de problemas 2.4 Refinamiento del algoritmo


Ejemplo
Realizar el diagrama de flujo y escribir el pseudocódigo del
algoritmo para que un programa de computadora sume 2
números y muestre el resultado.
a) Una primera versión del algoritmo podría ser:
Paso No. Descripción
1 Preguntar el valor del primer número
2 Almacenar el valor del primer número
3 Preguntar el valor del segundo número
4 Almacenar el valor del segundo número
Sumar el primer número con el segundo y
5 almacenar el resultado
6 Mostrar el resultado

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

INICIO

primerNumero, segundoNumero, resultado: ENTERO


primerNumero=0, segundoNumero=0, resultado=0

“¿Cuál es el valor del


primer número?”

primerNumero

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

“¿Cuál es el valor del


segundo número?”

segundoNumero

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

resultado = primerNumero + segundoNumero

resultado

FIN

Resolución de problemas 2.4 Refinamiento del algoritmo


c) Pseudocódigo

INICIO
primerNumero, segundoNumero, resultado: ENTERO;
primerNumero=0, segundoNumero=0, resultado=0;
IMPRIMIR: “¿ Cuál es el valor del primer número?”;
LEER: primerNumero;
IMPRIMIR : “¿Cuál es el valor del segundo número?”;
LEER: segundoNumero;
HACER: resultado = primerNumero + segundoNumero;
IMPRIMIR: “El resultado es:” resultado;
FIN

Resolución de problemas 2.4 Refinamiento del algoritmo


Ejercicios

b) Realizar el diagrama de flujo y escribir el pseudocódigo del


algoritmo para que un vendedor de tacos de canasta prepare una
orden de 3 tacos con salsa o sin salsa y los entregue al comprador.
El algoritmo general es el siguiente:

Resolución de problemas 2.4 Refinamiento del algoritmo


Ejercicios
c) Realizar el diagrama de flujo y escribir el pseudocódigo del
algoritmo para que un vendedor de tacos de canasta prepare una
orden de 3 tacos de chicharrón o 3 tacos de papa con salsa o sin
salsa y los entregue al comprador. El taquero sólo tienen tacos de
papa y de chicharrón. El algoritmo es el siguiente:
Paso No. Descripción
1 Saber de que pidieron los tacos
2 Si los tacos son de papa, sacar 3 tacos de papa de la canasta
3 Si los tacos no son de papa, sacar 3 tacos de chicharrón de la
canasta
4 Poner tacos en el plato
5 Saber si los tacos van con salsa
6 Si los tacos van con salsa, ponerles salsa
7 Entregar plato al comprador

Resolución de problemas 2.4 Refinamiento del algoritmo


d) Realizar el diagrama de flujo y escribir el pseudocódigo para
que un vendedor de tacos de canasta prepare una orden de 3
tacos de chicharrón o 3 tacos de papa o 3 tacos de frijol. Una vez
que se sepa de qué quiere los tacos éstos se deben de poner en
un plato. Después se debe preguntar al usuario si quiere salsa en
sus tacos. Si no quiere salsa en sus tacos no se les pondrá salsa,
pero si indica que sí quiere salsa se le debe preguntar si quiere
salsa roja o verde y de acuerdo a lo que conteste se debe poner a
los tacos la salsa que indicó. Por último se deben entregar los
tacos al comprador, ya sea que los haya querido con salsa o sin
salsa.

Resolución de problemas 2.4 Refinamiento del algoritmo


Símbolos utilizados en un diagrama de flujo

Ciclo WHILE (Ciclo MIENTRAS)


Se ocupa para repetir una serie de
NO procesos mientras la condición que
Condición
se evalúe de como resultado
verdadero. Si dicha condición es

verdadera se sigue el rumbo
indicado por la flecha con la
Proceso (s) leyenda SÍ; si la condición que se
evalúa no es verdadera se sigue el
camino indicado por la flecha con
la leyenda NO .

Resolución de problemas 2.4 Refinamiento del algoritmo


Diagrama y pseudocódigo del ciclo MIENTRAS (WHILE)

MIENTRAS condición a evaluar HACER


NO Proceso 1
Condición
Proceso 2
SÍ Proceso 3

Proceso (s) Proceso N
FIN DEL CICLO MIENTRAS

Resolución de problemas 2.4 Refinamiento del algoritmo


Ejemplo
Realizar el algoritmo, el diagrama de flujo y escribir el
pseudocódigo para sumar 2 números positivos. Se debe solicitar
el valor del primer numero positivo, guardarlo y evaluar que sea
positivo, mientras no sea un número positivo el algoritmo debe
seguir solicitándolo.
Para el segundo número se debe seguir la misma condición.

Resolución de problemas 2.4 Refinamiento del algoritmo


a) Algoritmo
Paso No. Descripción
1 1. Solicitar el valor para el primer número
2 2. Guardar el valor del primer número
3 3. SI el primer número no es positivo, ENTONCES:
3.1 Solicitar el valor del primer número
3.2 Guardar el valor del primer número
3.3 Regresar al paso 3
4 4. Solicitar el valor para el segundo número
5 5. Guardar el valor del segundo número
6 6. SI el segundo número no es positivo, ENTONCES:
6.1 Solicitar el valor del segundo número
6.2 Guardar el valor del segundo número
6.3 Regresar al paso 6
7 7. Sumar el primer y el segundo número y almacenar el resultado
8 8. Presentar el resultado
b) Diagrama de flujo

INICIO

resultado, primerNumero, segundoNumero: ENTERO


resultado=0, primerNumero=0, segundoNumero=0

“¿Cuál es el primer valor


positivo?”

primerNumero

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

NO
primerNumero <= 0

SÍ B

“¿Cuál es el primer valor positivo?”

primerNumero

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

“¿Cuál es el segundo valor positivo?”

segundoNumero

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo
C

NO
segundoNumero <= 0

SÍ D

“¿Cuál es el segundo valor


positivo?”

segundoNumero

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

resultado = primerNumero + segundoNumero

resultado

FIN

Resolución de problemas 2.4 Refinamiento del algoritmo


c) Pseudocódigo
INICIO
resultado, primerNumero, segundoNumero: ENTERO;
resultado=0, primerNumero=0, segundoNumero=0;
IMPRIMIR: “¿Cuál es el primer valor positivo?”;
LEER: primerNumero;
MIENTRAS primerNumero <= 0 HACER:
IMPRIMIR: “¿Cuál es el primer valor positivo?”;
LEER: primerNumero;
FIN DEL CICLO MIENTRAS
IMPRIMIR : “¿Cuál es el segundo valor positivo?”;
LEER: segundoNumero;
MIENTRAS segundoNumero <= 0 HACER:
IMPRIMIR:“¿Cuál es el segundo valor positivo?”;
LEER: segundoNumero;
FIN DEL CICLO MIENTRAS
HACER: resultado = primerNumero + segundoNumero;
IMPRIMIR : resultado;
FIN
Resolución de problemas 2.4 Refinamiento del algoritmo
Símbolos utilizados en un diagrama de flujo
Ciclo DO-WHILE (Ciclo HACER-MIENTRAS)
Se usa para repetir una serie de procesos
mientras la condición que se evalúe de
Proceso (s) como resultado verdadero. Se diferencia
del Ciclo While en que la serie de
instrucciones se ejecuta por lo menos una

vez.
Condición En este caso primero se ejecuta el proceso
o procesos que componen el ciclo y
NO después se evalúa la condición.
Si dicha condición es verdadera se sigue el
rumbo indicado por la flecha con la
leyenda SÍ; si la condición que se evalúa
no es verdadera se sigue el camino
indicado por la flecha con la leyenda NO.

Resolución de problemas 2.4 Refinamiento del algoritmo


Diagrama y pseudocódigo del ciclo HACER-MIENTRAS
(DO-WHILE)

HACER:
Proceso 1;
Proceso (s)
Proceso 2;
Proceso 3;


Condición Proceso N;
MIENTRAS condición a evaluar
NO

Resolución de problemas 2.4 Refinamiento del algoritmo


Comparación de diagramas de flujo de los ciclos
MIENTRAS y HACER-MIENTRAS

Condición NO Proceso (s)


Condición
Proceso (s)

NO

Resolución de problemas 2.4 Refinamiento del algoritmo


Comparación de pseudocódigos de los ciclos
MIENTRAS y HACER-MIENTRAS

MIENTRAS condición a evaluar HACER HACER:


Proceso 1 Proceso 1;
Proceso 2;
Proceso 2
Proceso 3;
Proceso 3

… Proceso N;
Proceso N MIENTRAS condición a evaluar
FIN DEL CICLO MIENTRAS

Resolución de problemas 2.4 Refinamiento del algoritmo


Ejemplo

Realizar el algoritmo, el diagrama de flujo y escribir el


pseudocódigo para sumar 2 números positivos. Se debe solicitar
el valor del primer número positivo, guardarlo y evaluar que sea
positivo, mientras no sea un número positivo el algoritmo debe
seguir solicitándolo.
Para el segundo número se debe seguir la misma condición.

Resolución de problemas 2.4 Refinamiento del algoritmo


a) Algoritmo

Paso No. Descripción


1 1. HACER lo siguiente:
1.1 Solicitar el valor para el primer número
1.2 Guardar el valor del primer número
2 2. SI el primer número no es positivo, ENTONCES:
2.1 Regresar al paso 1
3 3. HACER lo siguiente:
3.1 Solicitar el valor para el segundo número
3.2 Guardar el valor del segundo número
4 4. SI el segundo número no es positivo, ENTONCES:
4.1 Regresar al paso 3
5 5. Sumar el primer y el segundo número y almacenar el resultado
6 6. Presentar el resultado

Resolución de problemas 2.4 Refinamiento del algoritmo


Comparación de los algoritmo con las instrucciones MIENTRAS y HACER-MIENTRAS
Ciclo MIENTRAS (WHILE) CICLO HACER-MIENTRAS (DO-WHILE)
1. Solicitar el valor para el primer número
2. Guardar el valor del primer número
3. SI el primer número no es positivo, ENTONCES: 1. HACER lo siguiente:
3.1 Solicitar el valor del primer número 1.1 Solicitar el valor para el primer número
3.2 Guardar el valor del primer número 1.2 Guardar el valor del primer número
3.3 Regresar al paso 3
4. Solicitar el valor para el segundo número 2. SI el primer número no es positivo, ENTONCES:
2.1 Regresar al paso 1
5. Guardar el valor del segundo número
6. SI el segundo número no es positivo, ENTONCES: 3. HACER lo siguiente:
6.1 Solicitar el valor del segundo número 3.1 Solicitar el valor para el primer número
6.2 Guardar el valor del segundo número 3.2 Guardar el valor del primer número
6.3 Regresar al paso 6

4. SI el primer número no es positivo, ENTONCES:


4.1 Regresar al paso 3
7. Sumar el primer y el segundo número y almacenar 5. Sumar el primer y el segundo número y almacenar
el resultado el resultado
8. Presentar el resultado 6. Presentar el resultado

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo
Inicio

resultado, primerNumero, segundoNumero: Entero


resultado=0, primerNumero=0, segundoNumero=0

¿Cuál es el primer valor positivo?

primerNumero

SÍ primerNumero <= 0
NO
A

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

¿Cuál es el segundo valor positivo?

segundoNumero


segundoNumero <= 0

NO
B

Resolución de problemas 2.4 Refinamiento del algoritmo


b) Diagrama de flujo

resultado = primerNumero + segundoNumero

resultado

Fin

Resolución de problemas 2.4 Refinamiento del algoritmo


c) Pseudocódigo
INICIO
resultado, primerNumero, segundoNumero: ENTERO;
resultado=0, primerNumero=0, segundoNumero=0;
HACER:
IMPRIMIR: “¿Cuál es el primer valor positivo?”;
LEER: primerNumero;
MIENTRAS primerNumero <= 0
HACER:
IMPRIMIR: “¿Cuál es el segundo valor positivo?”;
LEER: segundoNumero;
MIENTRAS segundoNumero <= 0

HACER: resultado = primerNumero + segundoNumero;


IMPRIMIR: resultado;
FIN
Resolución de problemas 2.4 Refinamiento del algoritmo

También podría gustarte