Sei sulla pagina 1di 43

ANALISIS Y DISEÑO DE

ALGORITMOS

Ponente:

Seminario: Analisis y Diseño de Algoritmos 1


SISTEMAS DE PROCESAMIENTO DE
INFORMACION
Computadora: Maquina o aparato
electrónico capaz de almacenar y
procesar información.

COMPONENTES DE UN SISTEMA DE PROCESAMIENTO DE INFORMACION

Entrada = Datos PROCESADOR Salida = Información

Lectura Escritura

Seminario: Analisis y Diseño de Algoritmos 2


ALGORITMO

Algoritmo: Conjunto de
pasos ordenados, finitos y
definidos para resolver un
tarea.

Seminario: Analisis y Diseño de Algoritmos 3


SISTEMAS DE PROCESAMIENTO DE
INFORMACION
HARDWARE: Conjunto de SOFTWARE: Conjunto de
componentes físicos de la programas que controlan el
computadora (equipo físico) funcionamiento de una
computadora (equipo lógico).

Dispositivos de Memoria Almacenamiento


entrada/salida central secundario
E/s (memoria
(Periféricos) auxiliar)

Unidad central
de
procesamiento

Seminario: Analisis y Diseño de Algoritmos 4


GENERALIDADES SOBRE LOS
ALGORITMOS
Metodología de programación: Consiste en la metodología aplicada para la
resolución de problemas mediante programas.

Análisis del Diseño del Programa de


Problema algoritmo computador

Tarea que se desea Descripción ordenada Expresar el algoritmo como


resolver. de la secuencia de un programa en el lenguaje
pasos (sin de programación adecuado.
ambigüedades) que
conducen a la
solución de problema
dado (Análisis del
problema y desarrollo
del algoritmo). Ejecución y validación del
programa de computadora.

La definición de un algoritmo debe describir tres partes: Entrada, proceso y salida.


Ejemplo: La receta de Ir al Colegio.
Seminario: Analisis y Diseño de Algoritmos 5
DIAGRAMAS DE FLUJO, DIAGRAMAS
N-S Y PSEUDOCODIGO

Seminario: Analisis y Diseño de Algoritmos 6


DIAGRAMAS DE FLUJO

Seminario: Analisis y Diseño de Algoritmos 7


Introducción.

• Es una notación gráfica para implementar algoritmos.

• Se basa en la utilización de unos símbolos gráficos


denominados bloques, en los que escribimos las acciones que
tiene que realizar el algoritmo.

• Estos bloques están conectados entre sí por líneas y eso nos


indica el orden en el que tenemos que ejecutar las acciones.

• En todo algoritmo siempre habrá un bloque de inicio y otro de


fin, para el principio y final del algoritmo.

Seminario: Analisis y Diseño de Algoritmos 8


Símbolos Utilizados.

Líneas de flujo: Es una línea con una flecha (y solo una flecha) que permite conectar los
bloques del diagrama. La flecha indica la secuencia en la que se van a ejecutar las acciones.

Principio y Fin: Todo algoritmo y por lo tanto, todo diagrama de flujo tiene un principio y un fin
(y son únicos). Dentro de este bloque se coloca la palabra “INICIO” o “FIN” según
corresponda.

"INICIO” o “FIN”

Proceso: Aquí dentro se escribe la acción que debe realizar el programa. Si son varias, se
escriben una debajo de la otra, sin olvidarse que se ejecutan una a una en forma secuencial
según en qué orden fueron escritas.

Acciones

Seminario: Analisis y Diseño de Algoritmos 9


Símbolos Utilizados.

Condición: Dentro de este bloque se escribe una condición. Si ésta es verdadera, entonces
el algoritmo tomará una de sus salidas, de lo contrario, tomará la siguiente. Permite
representar estructuras del tipo selectivas y repetitivas.

Si Condición No
Verdadera
?

Entrada y Salida: Representa acciones de entrada salida desde un teclado o hacia una
pantalla respectivamente. Es decir, si debemos ejecutar una acción que consiste en leer un
dato que se ingresa mediante el teclado de una PC y almacenarlo en la variable de nombre
“a”, entonces dicha acción se describe dentro de este bloque como “leer a”.

Leer o Escribir

Seminario: Analisis y Diseño de Algoritmos 10


Símbolos Utilizados.

Conectores: Permiten “unir” diagramas de flujo cuando éstos no caben en una misma
columna de la hoja por completo. Es decir, cuando debemos, por cuestiones de espacio en la
hoja, fragmentar el programa entonces utilizamos estos bloques para indicar los puntos de
unión. Cada par de puntos que se deben unir llevarán dentro de este bloque el mismo
número.

En la misma hoja: En otra hoja:

Comentarios: Es una aclaración para comprender mejor el código del programa, pero no
forma parte del código, es decir, no se ejecuta.

Seminario: Analisis y Diseño de Algoritmos 11


Diagrama de Flujo Elemental.

RECORDAR: CONCEPTO DE
ALGORITMO: Un algoritmo es
un conjunto de pasos o
secuencia de instrucciones
INICIO
que, ejecutadas en un
determinado orden, permiten
Declaración e resolver un problema
Inicialización de determinado.
Variables

Entrada de
Datos
Esto es un comentario.

Procesamiento de
Datos

Presentación de
Resultados en
Pantalla

FIN

Seminario: Analisis y Diseño de Algoritmos 12


Diagrama de Flujo Elemental.

INICIO

Declaración e
Inicialización de
Variables

Ejemplo de DF de un algoritmo genérico que incluye


una bifurcación. Entrada de
Datos
Si la Condición es Verdadera, se ejecuta la Acción 1 y
en caso contrario (Falsa) la Acción 2.
Si Condición No
Verdadera
?

Acción 1 Acción 2

Presentación de
Resultados en
Pantalla

FIN
Seminario: Analisis y Diseño de Algoritmos 13
DIAGRAMAS N-S
NASSI-SCHNEIDERMAN

Seminario: Analisis y Diseño de Algoritmos 14


DIAGRAMAS DE NASSI-SCHNEIDERMAN (N-S)

•El diagrama N-S - también conocido como diagrama de Chapín -


es como un diagrama de flujo en el que se omiten las flechas de
unión y las cajas son contiguas.

•Las acciones sucesivas se escriben en cajas sucesivas y, como en


los diagramas de flujo, se pueden escribir diferentes acciones en
una caja.

Seminario: Analisis y Diseño de Algoritmos 15


Nombre del algoritmo
<acción 1>
<acción 2>
<acción 3>

fin
Seminario: Analisis y Diseño de Algoritmos 16
Diagramas N-S
• Se usan cajas conectadas, una debajo de otra

Inicio
Leer A
A=A*-1
Imprimir “El negativo es: “ + A

Seminario: Analisis y Diseño de Algoritmos 17


Diagramas N-S
• Condición:

Condición
Si No
Acción acción

• Repetitivas:
Mientras (cond) acciones Desde x=1 hasta N

acciones Repetir hasta (cond) acciones

Seminario: Analisis y Diseño de Algoritmos 18


Diagramas N-S
• Selección múltiple

Variable
v1 v2 v3 v... Otro

acc’ ... ... acción

Seminario: Analisis y Diseño de Algoritmos 19


EJEMPLOS con
Diagramas N-S

Seminario: Analisis y Diseño de Algoritmos 20


Condicionales
Se desea un algoritmo para obtener el valor absoluto de un número.

Definición del problema


Encontrar el valor absoluto de un número

Análisis del problema


Para encontrar el valor absoluto del número es necesario recordar que para los
enteros positivos el valor es el mismo, mientras que para los enteros negativos es
necesario cambiarlos de signo.
Datos de entrada: número
Datos de salida: valor absoluto
Proceso: número = número * (-1)

Diseño de la solución

Seminario: Analisis y Diseño de Algoritmos 21


Ejemplo Propuesto

• Dados dos números ¿cuál es mayor?


y ¿cuál es menor?

Seminario: Analisis y Diseño de Algoritmos 22


Solución:
Definición del problema
Identificar el mayor y menor de dos números

Análisis del problema


Datos de entrada: num1, num2
Datos salida: mayor, menor
Proceso: comparación

Diseño de la solución

Seminario: Analisis y Diseño de Algoritmos 23


Bucle: Mientras

• Un algoritmo para mostrar los números del 1


al 10.
Definición del problema
Mostrar listado de números de 1 a 10.

Análisis del problema


Datos de entrada: ninguno
Datos de salida: número
Proceso: ninguno

Diseño de la solución

Seminario: Analisis y Diseño de Algoritmos 24


Leer n números y encontrar el valor promedio, el mayor y el
menor
Definición del problema
Encontrar el promedio, el mayor y el menor de varios números

Análisis del problema


Para solucionar este problema, lo primero que hay que plantear
es cómo se sabrá cuando terminar la lectura de datos, ya que no
se especifica la cantidad de números que serán ingresados y en
el planteamiento del problema no se da ninguna condición que
permita saber cuando terminar el ciclo. Este tipo de problemas es
muy común.
Hay dos formas de abordar este ejercicio, la primera consiste en
preguntar al usuario con cuantos números desea trabajar y
guardar dicho valor en una variable que se utilizará para
establecer el ciclo. La segunda consiste en preguntar después de
leer cada dato, si se desea ingresar otro. En este ejercicio se
utilizará la primera estrategia.
Datos de entrada: cantidad de números, número
Datos de salida: promedio, mayor y menor
Procesos:
suma = suma + número
promedio = suma / cantidad de números

Diseño de la solución

Seminario: Analisis y Diseño de Algoritmos 25


La serie Fibonacci comienza con los números: 0, 1, 1, 2,
3, 5, 8, 13, 21, ... Se requiere un algoritmo para generar
los primeros 10 números.
Definición del problema
Generar los 10 primeros números de la serie Fibonacci

Análisis del problema


La serie fibonacci se genera a partir de dos valores iniciales que son el 0 y el 1, que al
sumarse dan como resultado 1. El siguiente número se obtiene sumando el último
número obtenido con el anterior, en este caso 1 + 1 = 2, luego será 2 + 1 = 3 y así
sucesivamente.
Datos de entrada: ninguno
Datos de salida: serie fibonacci
Procesos:
a=0
b=1
f=a+b

Diseño de la solución

Seminario: Analisis y Diseño de Algoritmos 26


Imprimir los números del 1 al 10
Definición del problema
Imprimir números del 1 al 10

Análisis del problema


Datos de entrada: ninguno
Datos de salida: números (1 ... 10)

Diseño de la solución

Seminario: Analisis y Diseño de Algoritmos 27


PSEUDOCÓDIGO

Seminario: Analisis y Diseño de Algoritmos 28


Pseudocódigo.
• El pseudocódigo es una manera de escribir algoritmos de forma poco estricta
(con una sintaxis relajada) o estructuras de datos poco detalladas, pero
intentando acercar las ideas del algoritmos a estructuras y sintaxis parecidas a
las de los lenguajes de alto nivel en los que vamos a programar el algoritmo.

• Es para ser leído por personas, por tanto no se preocupa en detalles


sintácticos.

• Es un lenguaje de especificación de algoritmos, pero muy parecido a cualquier


lenguaje de programación, por lo que luego su traducción al lenguaje de
programación es muy sencillo, pero con la ventaja de que no se rige por las
normas de un lenguaje en particular. Nos centramos más en la lógica del
problema.

• El pseudocódigo también va a utilizar una serie de palabras claves o palabras


especiales que va indicando lo que significa el algoritmo.

Seminario: Analisis y Diseño de Algoritmos 29


Pseudocódigo - Sintaxis Utilizada.

1. INICIO y FIN: Por donde empieza y acaba el algoritmo.

2. DATOS: Aquí se declaran e inicializan las variables que utilizará el algoritmo.

3. ALGORITMO: En esta sección se escribe el algoritmo.

Pseudocódigo de un algoritmo genérico:

INICIO.
DATOS: ** esto es un comentario **
entero a ; ** declaración de una variable entera **
real b = 0 ; ** declaración e inicialización de una variable **

ALGORITMO:
leer a ;
b=a+5;
escribir b ;
FIN.
Seminario: Analisis y Diseño de Algoritmos 30
Estructuras de Control Selectivas.

Si: Si la Condición es Verdadera, se ejecuta la Acción, sino el algoritmo continua con su


ejecución.

Condición No
Verdadera
? Si < Condición >
<Acción>
Si Fin_Si

Acción

Seminario: Analisis y Diseño de Algoritmos 31


Estructuras de Control Selectivas.

Si – Sino: Si la Condición es Verdadera, se ejecuta la Acción 1, sino el algoritmo ejecuta la


Acción 2. Luego el algoritmo continua con su ejecución.

Condición No
Verdadera
? Si < Condición >
< Acción 1 >
Si Sino < Acción 2 >

Acción 1 Acción 2 Fin_Si

Seminario: Analisis y Diseño de Algoritmos 32


Estructuras de Control Selectivas.

Si – Sino – Si: Si la Condición 1 es Verdadera, se ejecuta la Acción 1, sino el algoritmo


evalúa la Condición 2. Si es Verdadera, ejecuta la Acción 2 y sino la Acción 3.

Cond. 1 No
Verdadera
?
Si < Condición 1 >
Cond. 2 No < Acción 1 >
Si
Verdadera
?
Sino_Si < Condición 2 >
Acción 1 < Acción 2 >
Sino < Acción 3 >
Si
Fin_Si
Acción 2 Acción 3

Seminario: Analisis y Diseño de Algoritmos 33


Estructuras de Control Selectivas.

Según (alternativa múltiple): Se evalúa una condición o expresión que puede tomar “n”
valores. Según el valor que la expresión tenga en cada momento se ejecutan las acciones
correspondientes al valor. El valor con el que se compara la expresión, va a depender de los
lenguajes, de lo que sea ese valor. En general ese valor puede ser un valor constante, un
rango de valores o incluso otra condición.

Expresión Según <expresión>


o
Condición
< Valor 1 >: < Acción 1 >
< Valor 2 >: < Acción 2 >
< Otro >: < Acciones >

Fin_Según
Acción 1 Acción 2 … Acción “n”

Seminario: Analisis y Diseño de Algoritmos 34


Estructuras de Control Repetitivas.

Mientras: Se evalúa la Condición. Si es Verdadera, se ejecuta la Acción y se evalúa


nuevamente la Condición. En el momento en el que la Condición sea Falsa se sale del bucle y
se continua con la ejecución del algoritmo. Al evaluarse la Condición, al principio, antes de
entrar en el bucle, si la condición es Falsa, nunca se entrará en el bucle. Por lo tanto se utiliza
obligatoriamente este tipo de bucle en el caso de que exista la posibilidad de que el bucle
pueda ejecutarse 0 veces.

Mientras < Condición >


Condición No < Acción >
Verdadera Fin_Mientras
?

Si

Acción

Seminario: Analisis y Diseño de Algoritmos 35


Estructuras de Control Repetitivas.

Hacer - Mientras: En primera instancia se ejecuta la Acción. Posteriormente, se evalúa la


Condición. Si es Verdadera, se ejecuta nuevamente la Acción. Si es Falsa, se continúa con la
ejecución del algoritmo. Se repite el bucle mientras la condición sea Verdadera. La Condición
se evalúa siempre al final del bucle, si es Verdadera se ejecuta nuevamente la Acción, si es
Falsa se sale del bucle. Como la Condición se evalúa al final, incluso aunque la primera vez
ya sea Falsa, el bucle (la Acción) se habrá ejecutado al menos una vez.

Hacer < Acción >


Acción Mientras < Condición >

Condición No
Verdadera
?

Si
Seminario: Analisis y Diseño de Algoritmos 36
Estructuras de Control Repetitivas.

Desde - Hasta: Se utiliza cuando se sabe el número exacto de veces que hay que iterar. Para
ello el bucle llevará asociado una variable “índice”, a la que se le asigna un valor inicial y se
determina cual va a ser su valor final y además se va a incrementar (o decrementar) en cada
iteración de bucle en un valor constante.

Inicio

Variable = Inicio ; Condición? ; Inc. “n”


No
Si Condición No
Verdadera
Acción ?

Si

Acción

Para variable = Vi, variable < Vf, Inc n


Acción 2
<Acción>
Seminario: Analisis y Diseño de Algoritmos 37
Fin_Para
Ejemplo: Mostrar el producto de números enteros positivos ingresados por teclado hasta el
ingreso de un número negativo.

Pseudocódigo:
INICIO
Módulo: Principal

INICIO
Entero P, num
P=1 DATOS:
P, num: entero

Leer num ALGORITMO:

P1
No
Num >= 0?
Leer num
Si
Mientras num >= 0
Escribir num P = P * num P  p * num
Leer num
Fin_mientras
Leer num
Escribir p
FIN FIN

Seminario: Analisis y Diseño de Algoritmos 38


Ejercicio
• Si un empleado no asalariado vende un artículo extra
a alguien que no sea un comprador regular, recibe un
15% de comisión a menos que el artículo tenga un
precio mayor a $10,000 en cuyo caso recibe una
comisión del 20%. Si un empleado asalariado vende
un artículo estándar recibe un 3% de comisión, en
caso de ser un empleado no asalariado recibe un 7%.

39 Seminario: Analisis y Diseño de Algoritmos


Pseudocódigo
40 Seminario: Analisis y Diseño de Algoritmos
Diagrama de Flujo
“Cálculo de comisión”

41 Seminario: Analisis y Diseño de Algoritmos


Ejercicio resuelto

42 Seminario: Analisis y Diseño de Algoritmos


PREGUNTAS?

Seminario: Analisis y Diseño de Algoritmos 43

Potrebbero piacerti anche