Algoritmos y Diagramaion - Profesor Matias E. Garcia

Anuncio
Introducción a la programación:
Algoritmos
Algoritmo
• La palabra algoritmo proviene del nombre del matemático
persa del siglo IX Muhammad ibn Musa al-Jwarizmi
• Un algoritmo es una secuencia ordenada de pasos, sin
ambigüedades, que permite la resolución de un problema
dado y expresado en lenguaje natural, ej. en castellano.
• Características de un algoritmo
– Preciso: Indica el orden de realización de cada uno de sus
pasos.
– Finito: si se sigue el algoritmo, se debe terminar en algún
momento, es decir tiene un numero finito de pasos.
– Definido: si se sigue dos veces el algoritmo con los mismo
datos de entrada, la salida debe ser la misma.
Algoritmo para cambiar una lamparita
• 1. Retirar la lamparita fundida
– 1. Colocar una escalera debajo de la lámpara
– 2. Subir la escalera
– 3. Desenroscar la lamparita en el sentido contrario de las agujas del
reloj
– 4. Bajar la escalera
• 2. Poner una lamparita nueva
–
–
–
–
–
1. Tomar la lamparita nueva
2. Subir la escalera
3. Enroscar la lamparita en el sentido de las agujas del reloj
4. Bajar la escalera
5. Retirar la escalera
Descripción de algoritmos
• Metodología para describir algoritmos
– Entrada: Información dada al algoritmo.
– Proceso: Operaciones o cálculos necesarios para encontrar la solución
del problema.
– Salida: Respuestas dadas por el algoritmo o resultados finales de los
procesos realizados.
• El lenguaje algorítmico debe ser independiente de cualquier
lenguaje de programación particular, pero fácilmente
traducible a cada uno de ellos. Alcanzar estos objetivos
conducirá al empleo de métodos normalizados para la
representación de algoritmos, tales como los diagramas de
flujo o el pseudocódigo.
Notaciones para describir algoritmos
• Método informal
– Lenguaje natural
• Ventajas: comprensible e intuitivo
• Inconveniente: impreciso
• Métodos formales
– Pseudocódigo
• Lenguaje natural limitado y sin ambigüedad
– Diagramas
• Diagramas de flujo u organigramas
– Utiliza un conjunto de símbolos para representar cada estructura de control y mediante
líneas de flujo se indica el orden en que se realiza el flujo lógico del algoritmo
• Diagramas de Nassi-Schneiderman o Diagramas N-S
– Los pasos sucesivos se escriben en cajas con distintas formas según la estructura de
control que representen
Notaciones para describir algoritmos
• Variables
– Numéricas:
• Enteros: integer
• Reales (punto flotante): real
– Alfanuméricas:
• Carácter: char
• Cadena de caracteres: string
– Lógicas: boolean
• Otros operadores:
• Número aleatorio:
RANDOM ( )
• Raíz cuadrada: SQRT ( )
• Parte entera: TRUNC ( )
• Concatenar: +
• Valor absoluto: ABS ( )
• Largo de cadena: LEN ( )
• Operaciones:
–
–
–
–
Asignación: =
Aritméticas: +, -, *, /, ^ (potenciación), MOD (resto división entera)
Lógicas: >, <, =, !=, <=, >=, AND, OR, NOT
Trigonométricas: SIN ( ), COS ( ), TAN ( ), ASIN ( ), ACOS ( ), ATAN ( )
Algoritmo que calcule la superficie de un rectángulo proporcionándole su base y altura.
(Metodología)
• Especificaciones de entrada:
– ¿Qué datos son de entrada?
– ¿Cuántos datos se introducirán?
– ¿Cuántos son datos de entrada validos?
• Especificaciones de salida:
–
–
–
¿Cuáles son los datos de salida?
¿Cuántos datos de salida se producirán?
¿Qué formato y precisión tendrán los resultados?
• El algoritmo que podemos utilizar es el siguiente:
–
–
–
Paso 1: Entrada desde el teclado de los datos de base y altura
Paso 2: Calculo de la superficie, multiplicando la base por la altura
Paso 3: Salida por pantalla de base, altura y superficie calculada.
Algoritmo para calcular el cociente de una división
entera sin usar la operación de división
(Lenguaje Natural)
•
•
•
•
•
•
•
1. Leer el numerador N y el denominador D
2. Inicializar el cociente a 0 (C ← 0)
3. Si N<D ir al paso 7
4. Restar a N el valor de D (N ← N-D)
5. Incrementar en uno C (C ← C+1)
6. Si N>=D volver al paso 4
7. Mostrar el valor de C
10
0
2
5
Algoritmo para calcular el cociente de
una división entera (Diagrama de flujo)
Diagramas de Flujo
Son gráficas detalladas que representan los pasos que se deben
ejecutar dentro de la computadora a fin de producir los resultados
esperados. Los Diagramas de Flujos son una técnica estándar para
representar algoritmos y son independientes del lenguaje de
programación utilizado.
Simbología
Inicio y Término de programa o subprograma.
Ciclo iterativo Mientras
MQ
Asignación / Acción
PARA
Ciclo repetitivo Para
Entrada de información
CIERRE
Cierre de ciclos
Salida de información
Condición (Dirección del flujo de control)
Sentido del Flujo
Diagramas de Flujo
• Todo diagrama de flujo debe tener un inicio y un fin.
• Las líneas utilizadas para indicar la dirección del diagrama
deben ser rectas, horizontales o verticales, nunca se deben
cruzar entre si.
• No deben haber líneas sin conexión a los demás elementos
del diagrama de flujo.
• Un diagrama de flujo se debe construir de arriba hacia abajo
y de requerirse de izquierda a derecha.
• La notación o símbolos utilizados son independientes del
lenguaje de programación utilizado para la elaboración del
programa o aplicación.
• No puede llegar mas de una línea de conexión a un símbolo.
Estructuras Básicas de los Diagramas de Flujo
1) Secuencia Simple
Inicio
Leer A, B
C= (A+B)*(A-B)
Imprimir C
Final
2) Decisión Simple
Forma 2
Forma 1
F
F
V
Condición
Condición
V
INST
INST 1
INST 2
El objeto decisión
selecciona el flujo a
seguir de acuerdo al
valor lógico de una
condición. La
condición debe ser
siempre una
expresión que al ser
evaluada de como
resultado un valor
Lógico.
Ejemplos:
F
F
V
A = 20
A < 20
V
A=A+1
A=B
A=C
3) Decisión Múltiple
Variable
A
B
INST 1
INST 2
I
1
A=A+ 1
2
A=A+ 2
3
A=A+ 3
C
INST 3
4) Iteración
El objeto Ciclo Mientras tiene como
función el ejecutar un bloque de
objetos mientras que una
condición sea verdadera. La
condición debe ser siempre una
expresión que al ser evaluada de
como resultado un valor de tipo
Lógico.
Si al evaluar la condición se
obtiene el valor F la ejecución del
algoritmo continuará a partir del
objeto que sigue al Cierre.
MQ
Condición
INST
Ejemplos:
MQ
A < 10
A=A+1
5) Repetición
Su función es ejecutar un bloque de
objetos mientras que la variable
contadora no alcance el límite
establecido por el valor final. El contador
es siempre una variable de tipo de dato
entero. Contiene además un valor inicial
que será asignado al contador al iniciar
la ejecución del ciclo, un valor final y un
valor de incremento. Si el contador
excede el valor final, la ejecución
continuará a partir del objeto que sigue
al Cierre. En caso contrario, se ejecutará
el cuerpo del ciclo y el contador será
incrementado en el valor indicado por el
incremento.
v = inicio, fin, incremento
INST
Ejemplos:
PARA
I = 1, 20, 1
A=A+1
EJEMPLO
Inicio
Determinar si un
número ingresado por
el usuario es par o
impar.
Leer A
A >0
MQ
A=A-2
F
V
A= 0
Imprimir ‘par’
Final
Imprimir ‘impar’
Pseudocódigo
• Se denomina notación de pseudocódigo a aquella que
permite describir la solución de un problema en forma de
algoritmo dirigido a una computadora utilizando palabras y
frases del lenguaje natural sujetas a determinadas reglas.
• El pseudocódigo se considera una herramienta para el diseño
que permite obtener una solución mediante aproximaciones
sucesivas.
Ejemplo 1
Suma el nro
5 y el nro 7
y muestra
por pantalla.
1. Inicio
2. Int a, b, c // declara las variables a, b y c como enteras
3. a <- 5 // en la variable a se almacena el valor 5
4. b <- 7 // en la variable b se almacena el valor 7
5. c <- a + b // en la variable c se almacena la suma de a con b
6. Escribir c
7. Fin
Algoritmo para calcular la suma de dos valores ingresados por teclado (Pseudocódigo)
1. Inicio
2. Int a, b, c
3. Escribir ‘’Ingrese un valor entero’’
4. Leer a
5. Escribir ‘’Ingrese otro valor entero’’
6. Leer b
7. c <- a + b
8.
9.
10.
11.
12.
13.
14.
Escribir ‘’La suma de’’
Escribir a
Escribir ‘’con’’
Escribir b
Escribir ‘’es’’
Escribir c
Fin
Webgrafía y Licencia:
Textos tomados, corregidos y modificados de diferentes páginas
de Internet, tutoriales y documentos.
• Este documento se encuentra bajo Licencia Creative Commons
2.5 Argentina (BY-NC-SA), por la cual se permite su exhibición,
distribución, copia y posibilita hacer obras derivadas a partir de
la misma, siempre y cuando se cite la autoría del Prof. Matías E.
García y sólo podrá distribuir la obra derivada resultante bajo
una licencia idéntica a ésta.
• Autor:
•
Matías E. García
.
Prof. & Tec. en Informática Aplicada
www.profmatiasgarcia.com.ar
[email protected]
Descargar