Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Algoritmos 2.1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

Lenguaje de Programación: Algoritmo

Capítulo 2 : ALGORITMOS
La primera fase en la construcción de programas la determina el algoritmo a utilizar, que
nos indica una serie de pasos ordenados y lógicos para resolver un problema dado.

2.1 REQUISITOS, DISEÑO, PROGRAMACIÓN Y PRUEBAS.

Pueden ser identificadas dos etapas en el proceso de resolución de


problemas :

1. Fase de solución
2. Fase de implementación (realización) en algún lenguaje de programación.

La fase de solución incluye, a su vez el análisis del problema, el diseño y la verificación del
algoritmo.

Análisis de Requerimientos Verificación del Algoritmo Diseño (Traducir)

Se puede definir lo que es “Algoritmo”, como la secuencia ordenada de pasos, no


ambiguos, que conducen a la solución del problema planteado.

Todo algoritmo debe ser :

Preciso. Indicando el orden de realización de cada uno de los pasos.

Definido. Si se sigue el algoritmo varias veces proporcionándole los mismos datos, se


deben obtener siempre los mismos resultados.

Finito. Al seguir el algoritmo, éste debe terminar en algún momento, es decir, tener un
número finito de pasos.

Para diseñar un algoritmo se tienen dos métodos:

Descendente (Top-down): Diseño de los algoritmos en etapas, donde se va de los


conceptos generales a los detalles. Este método de diseño es el más recomendable.

Ascendente (Bottom-up): Ir de lo particular a los general. (No recomendado)

1
Lenguaje de Programación: Algoritmo

Ejemplo diseño de un firewall

Una vez que se tiene el algoritmo concluido, se pasa a la Fase de Implementación, en ésta,
se lleva a cabo la “Codificación” del mismo (traducción del algoritmo a algún lenguaje de
programación), la ejecución y comprobación del programa.

El paso de comprobación es muy importante, en este, se ejecuta el programa varias veces,


con distintos datos, para verificar que se obtengan los resultados que se esperaban.

2.2 TÉCNICAS DE PROGRAMACIÓN ALGORITMICA


PROGRAMACIÓN ESTRUCTURADA

La programación estructurada es un conjunto de técnicas para desarrollar algoritmos fáciles


de escribir, verificar, leer y modificar. Utiliza:

• Diseño descendente. Consiste en diseñar los algoritmos en etapas, partiendo de los


conceptos generales hacia los detalles. El diseño descendente se verá completado y
ampliado con el modular.

• Recursos abstractos. En cada descomposición de una acción compleja se supone que


todas las partes resultantes están ya resueltas, posponiendo su realización para el siguiente
refinamiento.

• Estructuras básicas. Los algoritmos deberán ser escritos utilizando únicamente tres tipos
de estructuras básicas: secuenciales, decisión e iteración, las cuales se describen más
adelante.

TEOREMA DE BÖHM Y JACOPINI

Para que la programación sea estructurada, los programas han de ser propios.

Un programa se define como propio si cumple las siguientes características:

• Tiene un solo punto de entrada y uno de salida


• Toda acción del algoritmo es accesible, es decir, existe al menos un camino que va desde
el inicio hasta el fin del algoritmo, se puede seguir y pasa a través de dicha acción.
• No posee lazos o bucles infinitos.

El teorema de Böhm y Jacopini dice que:

Un programa propio puede ser escrito utilizando únicamente tres tipos de


estructuras: secuencial, selectiva y repetitiva.

2
Lenguaje de Programación: Algoritmo

De este teorema se deduce que se han de diseñar los algoritmos empleando exclusivamente
dichas estructuras, las cuales, como tiene un único punto de entrada y único punto de salida,
harán que nuestros programas sean propios.

2.3 ELEMENTOS BÁSICOS

Un algoritmo puede ser escrito en lenguaje natural, pero esta descripción puede ser
ambigua, por lo que se utilizan diferentes métodos de representación, que permiten evitar
dicha ambigüedad y permitir al mismo tiempo que sea fácilmente codificable. Los métodos
más usuales para la representación de algoritmos son:

• Descripción narrada
• Diagrama de flujo
• Pseudocódigo

DESCRIPCIÓN NARRADA

Es la forma más sencilla de describir o expresar un algoritmo. Consiste en dar un relato de


la solución en lenguaje natural.

Por ejemplo: Algoritmo en descripción narrada para la suma de 2 números.

1. obtener los números a sumar


2. sumar los números
3. anotar el resultado

El uso del lenguaje natural provoca frecuentemente que la descripción sea imprecisa y poco
confiable, por lo que este tipo de representación no es recomendable.

3
Lenguaje de Programación: Algoritmo

DIAGRAMA DE FLUJO

Es la representación gráfica de un algoritmo. Utiliza símbolos normalizados, con los pasos


del algoritmo escritos en el símbolo adecuado y los símbolos unidos por flechas,
denominadas “líneas de flujo”, que indican el orden en que los pasos deben ser ejecutados.
Los símbolos principales son:

De manera general un diagrama de flujo esta constituido de la siguiente manera: inicia,


recibe datos, realiza el procesamiento, muestra resultados y finaliza.

4
Lenguaje de Programación: Algoritmo

PSEUDOCÓDIGO

El pseudocódigo en un lenguaje de especificación de algoritmos que utiliza palabras


reservadas y exige la tabulación, o sea, sangría en el margen izquierdo, de algunas líneas.
Se concibió para superar las dos principales desventajas de los diagramas de flujo: Lento de
crear y difícil de modificar sin un nuevo redibujo. Es una herramienta muy efectiva para el
seguimiento de la lógica de un algoritmo y para transformar con facilidad los algoritmos a
programas.

5
Lenguaje de Programación: Algoritmo

Las distintas estructuras de control se representan de la siguiente forma:

Secuenciales: Leer (Lista_de_variables)


Escribir (Lista_de_resultados)

Decisión
simple: si <condición > entonces
acción_si
fin_si

doble: si <condición> entonces


acción_si
si_no
acción_no
fin_si

múltiple: según <expresión> sea


<valor1> : acción1
<valor2>: acción2
...........
<valorn>: acción n
[si_no
acción_sino]
fin_según

Repetitivas:
mientras <condición>hacer
acciones
fin_mientras

repetir
acciones
hasta <condición>
para <Variable de control> <valor_inicial> hasta
<valor_final> hacer
acciones
fin_para

6
Lenguaje de Programación: Algoritmo

2.4 DATOS Y EXPRESIONES

Dato es la expresión general que describe a los elementos con los cuales opera un
programa. Los datos pueden estar expresados como Variables o como Constantes.

CONSTANTES

Las constantes son elementos cuyo valor no cambia durante todo el desarrollo del
algoritmo. Pueden ser literales o simbólicas. Las constantes simbólicas tienen un valor
asignado y se identifican por un nombre. Una constante literal es un valor que se utiliza
como tal.

Ejemplos de Constante simbólica: π = 3.141592654.....

Ejemplos de Constante simbólica: π = 3.141592654.....


Las constantes pueden ser:

• Numéricas enteras: En el rango de los números enteros positivos o negativos.


Ejemplos: 0, 2, -3, -8, etc.
• Numéricas reales: En el rango de los números reales positivos o negativos
Ejemplos: 3.1416, 0.5, -4.3, etc.
• Lógicas: con valores True o False únicamente.

• Carácter:

♦ Alfabético (´a´, ´b´, ..., ´z´) en mayúscula o minúscula


♦ Numérico (´0´,´1´,...,´9´)
♦ Carácter especial (´+´,´?´,etc)

• Cadena: Sucesión de caracteres encerrados entre apóstrofes.

Ejemplo: ‘Hola Mundo’

7
Lenguaje de Programación: Algoritmo

VARIABLES

Las variables son elementos cuyo valor puede cambiar durante el desarrollo del algoritmo.
Se identifican por un nombre y un tipo. El tipo determina el conjunto de valores que la
variable puede tomar.

Ejemplos:

Variable Valor Tipo


A 2 Entero
B 5 Entero
Radio 2.5 Real
Carac1 ‘a’ carácter
Carac2 ‘c’ carácter

Las variables pueden ser de tipo: entero, real, carácter, lógico o cadena.

La evaluación de los operadores con la misma prioridad se realiza siempre de izquierda a


derecha. Si una expresión contiene subexpresiones encerrada entre paréntesis, dichas
expresiones se evalúan primero.

Las constantes y variables se utilizan para formar expresiones.

EXPRESIONES

Una expresión es una combinación de operadores y operandos. Los operandos pueden ser
constantes, variables u otras expresiones. Los operadores pueden aritméticos, lógicos o
relacionales.

Los operadores aritméticos son :

Operador Significado Prioridad


- operador unario menos 3
* multiplicación 2
/ división 2
+ suma 1
- resta 1

La evaluación de las expresiones se realiza de izquierda a derecha cuidando la prioridad de


los operadores, los de prioridad mayor se evalúan primero.

8
Lenguaje de Programación: Algoritmo

La evaluación de los operadores con la misma prioridad se realiza siempre de izquierda a


derecha. Si una expresión contiene subexpresiones encerrada entre paréntesis, dichas
expresiones se evalúan primero.

Ejemplo:

Si A=2, B=3 y C=4,


A+B*C=14 ≠ (A+B)*C=20

Hay Otros Operadores que corresponden a los Lógicos y Operacionales

2.5 Estructuras Secuenciales

Se caracterizan porque una acción se ejecuta detrás de la otra. El flujo del programa
coincide con el orden físico en el que se han ido poniendo las instrucciones. Es decir, es
una secuencia de acciones, donde se ejecuta primero la acción uno, después la dos, luego la
tres, etc. Dichas acciones pueden consistir en acciones simples tales como:

• Leer datos
• Realizar operaciones
• Escribir resultados

Estas estructuras se representan de la siguiente forma:

Diagrama de Flujo Pseudolenguaje


Acción 1
Acción 2
Acción 1

Acción 2

Funcionamiento
1. Se lleva a cabo la Acción 1
2. Se lleva a cabo la Acción 2

9
Lenguaje de Programación: Algoritmo

Ejemplo: Para sumar 2 Números

Diagrama de Flujo Pseudolenguaje


Inicio
inicio
Leer (A,B)
C A+B
Escribir (C)
Fin
A, B

C A+B

Fin

El símbolo significa asignación

2.6 ESTRUCTURAS SELECTIVAS

Permiten controlar la ejecución de acciones que requieran ciertas condiciones para su


realización, es decir, se ejecutan unas acciones u otras según se cumpla o no una
determinada condición.

Estas estructuras son utilizadas cuando:

• Se tienen acciones que son “excluyentes”, es decir, que sólo tiene que ejecutarse una o la
otra, pero no ambas.
• Cuando es necesario elegir la acción a realizar de entre un conjunto de acciones
existentes.
• Cuando es necesario verificar que lo datos sean válidos para la aplicación en cuestión, por
ejemplo: no es posible dividir entre 0, la cuota por hora que se le paga a un trabajador no
puede ser negativa, etc.

10
Lenguaje de Programación: Algoritmo

Las estructuras selectivas pueden ser: simples, dobles o múltiples.

SIMPLES.

Se evalúa la condición y si ésta da como resultado verdad se ejecuta una determinada


acción o grupo de acciones; en caso contrario no se ejecuta dicho grupo de acciones y se
continua con el flujo.

Esta estructura se representa de la siguiente forma:

Diagrama de Flujo Pseudolenguaje

Si <condición> entonces
Condición acción
si
no Fin_si

Acción

11
Lenguaje de Programación: Algoritmo

Ejemplo: Para dividir 2 números considerando que el divisor no puede ser 0.

Diagrama de Flujo Pseudolenguaje


Inicio
Inicio
Leer (A,B)
Si B ≠ 0 entonces
A, B C A÷B
Escribir (C)
Fin_si
Fin

B=0
si no

C A/B

Fin

Se leen los datos a emplear A y B, y como se va a dividir A ÷B, se “válida” el valor de B a


través de la condición B≠0, si la condición se cumple (si la evaluación de la condición da
verdad) entonces se realiza la división y se muestra el resultado, en otro caso se va al final
sin efectuar acción alguna.

DOBLES.

Cuando el resultado de evaluar la condición es verdad se ejecutará una determinada acción


o grupo de acciones y si el resultado es falso se ejecutará otra acción o grupo de acciones
diferentes. En ambos casos las sentencias podrán ser simples o compuestas.

Esta estructura se representa de la siguiente forma:

12
Lenguaje de Programación: Algoritmo

Diagrama de Flujo Pseudolenguaje

si Condición
no
Si <condición > entonces
acción_si
Acción_si Acción_no
sino
acción_no
Fin_si
.

Ejemplo 1: Para determinar el mayor de dos números, considerando el hecho de que sean
iguales.
Diagrama de Flujo Pseudolenguaje
Inicio

Inicio
Leer (A,B)
A, B Si A = B entonces
Escribir ‘son
iguales’
sino
Si A > B entonces
A=B Escribir (‘A Mayor’)
si no sino
Escribir (‘B Mayor’)
no Fin_si
A>B Fin
si
‘son iguales’

‘B Mayor’
‘son iguales’

Inicio

13
Lenguaje de Programación: Algoritmo

Ejemplo 2: Para dividir 2 números considerando que el divisor no puede ser 0.

Diagrama de Flujo Pseudolenguaje


Inicio

Inicio
Leer (A,B)
A, B Si B ≠ 0 entonces
C Α¸B
Escribir (C)
sino
Escribir (‘Error !!’)
si B=0
no Fin_si
Fin
C A/B ‘Error’

Inicio

MULTIPLES.

Las estructuras selectivas múltiples permiten controlar la ejecución de acciones cuando se


tienen más de dos opciones alternativas de selección. Aquí se ejecutarán unas acciones u
otras según el resultado que se obtenga al evaluar una expresión.

Diagrama de Flujo Pseudolenguaje

Expresión Según <expresión> sea


<valorl>:Acción1
<valor2>:Acción2
.
Acción 1 Acción 2 Acción n .
[sino
Acción n]
fin_según

14
Lenguaje de Programación: Algoritmo

Ejemplo: Para realizar alguna de las siguientes operaciones: suma, resta, multiplicación o
división, según la elección del usuario.

Diagrama de Flujo Pseudolenguaje


Inicio Inicio
Escribir ‘Proprcione A y B’
Leer (A y B)
Escribir ‘Opciones:’
Escribir ‘ 1.- Suma’
Proporcione
Escribir ‘ 2.- Resta’
A y B: Escribir ‘ 3.- Multiplicación’
Escribir ‘ 4.- División’
Escribir ‘ Opción ?’
Leer Opción
Según Opción sea
1: C A+B
A, B Escribir ‘Suma=’,C
2: C A-B
Escribir ‘Resta=’,C
3: Si B ≠ 0 entonces
Opéraciones: C A ÷B
Escribir ‘División=’,C
1- Suma sino
2 Resta Escribir ‘Error !!’
3- Multiplicación Fin_si
4- División 4: C A x B
Escribir ‘Multiplicación =’
Fin_según
opción? Fin

Opción

15
Lenguaje de Programación: Algoritmo

3
C A*B
4
Opción
1
2
Multiplicación=C
C A+B C A-B

B=0
Suma=C Resta=C

C A/B Error !

División=C

FIN

Expresiones Lógicas

Las expresiones Lógicas sirven para plantear condiciones, que dan como resultado un valor
booleano (Algebra de Bool) verdadero o falso, es decir se cumple o no se cumple la
condición.

Las expresiones Lógicas se pueden clasificar en Simples y Compuestas.

Las expresiones Lógicas Simples se forman relacionando operando (Variables y/o


Constantes) mediante operadores relacionales. Así, tienen la siguiente forma:

Operando 1 Operando Relacional Operando 2

16
Lenguaje de Programación: Algoritmo

Los operadores relacionales son:


Operador Significado
> Mayor que
< Menor que
= Igual a
≠ diferente de
>= Mayor o igual que
<= Menor o igual que

Ejemplos:
A>B
B≠0

Las Expresiones Lógicas Compuestas se forman relacionando operandos booleanos


(expresiones lógicas que proporcionan un valor verdadero o falso) con operadores lógicos.
Tienen la siguiente forma:

Operando Booleano1 Operador Lógico Operando Booleano2

Los operadores lógicos son:

Operador Significado
Not (no) Negación
And (y) Conjunción
Or (o) Disyunción
Ejemplo:
(A ≠ B) y (B > C)

2.7 Estructuras de Repetición

Iterar o ciclar es repetir una tarea: hacer algo y luego regresar y hacerlo una y otra vez
hasta terminar la tarea.

Las aplicaciones típicas que requieren iteración son:


• La introducción de muchos datos, uno tras otro, para efectuar diversos cálculos (por
ejemplo obtener el promedio de calificaciones de un alumno).
• La clasificación periódica de una gran colección de datos (por ejemplo la clasificación de
cheques procesados por sucursal bancaria, y para cada sucursal por número de cuenta del
cliente cada día de la semana).
• La búsqueda de un dato en una gran colección de ellos(por ejemplo encontrar el precio
actual de un articulo o el estado de una cuenta de depósito).
• Y muchas formulas científicas que sólo se pueden calcular por aproximaciones sucesivas
(reduciendo el intervalo de la respuesta con cada ciclo).

17
Lenguaje de Programación: Algoritmo

Existen tres clases de mecanismos de iteración:

1. Para todos los valores de la progresión.


2. Mientras se valida una condición.
3. Repetir- hasta que se satisfaga una condición.

A continuación se Explica cada uno de ellos:

2.7.1 PARA. (for)

Es usado cuando se conoce de antemano, el número de veces que debe repetirse una
instrucción o conjunto de ellas. Es un ciclo incondicional, que abarca todos los valores de
una progresión, empieza con el primer valor y termina con el ultimo de ellos, los valores de
la progresión deben ser asignados a una variable, la cual se denomina variable de control.

18
Lenguaje de Programación: Algoritmo

Diagrama de Flujo

I VI

F
Condición
Sale del ciclo
V

Acción

Incremento
o
Decremento

Pseudolenguaje
para <Variable de control> <valor_inicial> hasta <valor_final>
hacer
acción 1
.
.
.
acción n
fin_para

Funcionamiento
1. Se inicia la condición de control, se verifica la condición de paro si no se cumple entra al
ciclo y ejecuta la acción.
2. Al llegar al fin regresa el control al encabezado de ciclo, actualizando el valor del
contador de acuerdo al incremento o decremento.
3. Al volver el control del encabezado se pregunta si la variable de control llegó al valor
final:

19
Lenguaje de Programación: Algoritmo

a. Si se cumple, entonces se sale del ciclo, dirigiéndose a la siguiente instrucción


después del fin.
b. Si no ha tomado el valor final, entra al ciclo a ejecutar la instrucción.

Ejemplo. Para sumar los 5 primero enteros positivos:

Inicio
suma 0
para j 1 a 5 hacer
suma suma + j
fin_para
escribir(suma)
Fin

Aquí a la variable de control J se le asigna originalmente el valor 1. La variable SUMA,


que antes de entrar al ciclo tenía un 0, aumentará por el valor de J. En la segunda pasada la
J tendrá un 2, y SUMA, aumentará a 3. En la tercera vuelta J llegará a 3, y esto
incrementará SUMA a 6, y así sucesivamente hasta que J se le asigne el último valor de la
progresión, 5, después de los cuales SUMA contendrá la suma de los 5 primeros enteros
positivos, es decir, 15.

CICLO PARA ANIDADO.


Al igual que todas las estructuras de control, es posible que un ciclo PARA contenga
anidado otro ciclo y éste a otro; veamos, el siguiente ciclo:

Ejemplo. Algoritmo ilustra el uso de un PARA anidado.

inicio
para i 1 a 5 hacer
escribir (‘i =’,i)
para j 1 a 3 hacer
escribir (‘j =’,j)
fin_para
fin_para
fin

20
Lenguaje de Programación: Algoritmo

2.7.2 MIENTRAS (while)

La instrucción Mientras... hacer continuará repitiéndose mientras la condición continué


siendo válida (es decir, su valor de verdad sea verdadero).

Diagrama de Flujo

Pseudolenguaje

mientras <condición>hacer
<acciones>
fin_mientras

Ejemplo: Elaborar un algoritmo que calcule e imprima el sueldo de varios empleados


utilizando MIENTRAS

inicio
escribir ( ‘¿hay empleado (s/n)?’)
leer (otro)
mientras otro = ‘s’ hacer
escribir (‘proporcione nombre, número de horas tra-bajadas
y cuota’)
leer (nombre,hrstrab,cuotahr)
sueldo hrstrab*cuotahr
escribir (nombre, sueldo)
escribir( ‘¿desea procesar otro empleado (s/n)?’)
leer (otro)
fin_mientras
fin

21
Lenguaje de Programación: Algoritmo

2.7.3 REPETIR (Do-While)

La instrucción Repitir...hasta continuará repitiéndose mientras no se satisfaga la condición


(su valor de verdad sea falso).
Esta instrucción tiene el siguiente diagrama de flujo:

Diagrama de Flujo

Acción a
repetir

Condición
La condición Condición aún
es Verdadera no satisfecha

Pseudolenguaje
repetir
<accion>
hasta <condición>

Ejemplo: Elaborar un algoritmo que calcule e imprima el sueldo de varios empleados


utilizando REPETIR

inicio
repetir
escribir (‘proporcione nombre, número de horas trabajadas y
cuota ‘)
leer (nombre,hrstrab,cuotahr)
sueldo =hrstrab*cuotahr
escribir (nombre, sueldo)
escribir ( ‘¿desea procesar otro empleado (s/n)?’)
leer (desea)
hasta desea = ‘n’
fin

22

También podría gustarte