Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes de
INDICE
Página
Agosto 2017
1
Fundamentos de diseño de algoritmos Armando López Ciseña
UNIDAD I
CONCEPTOS BÁSICOS
Estos apuntes están más enfocados a la parte del diseño de algoritmos, por lo que
los conceptos abordados en el resto del documento se refieren a este aspecto. El
análisis de problemas se tratará en las sesiones de clase, y posteriormente se
trasladará la resolución del problema a la computadora mediante un lenguaje de
programación.
2
Fundamentos de diseño de algoritmos Armando López Ciseña
ALGORITMO
Es una secuencia ordenada de pasos, exenta de ambigüedades, que lleva a la
solución de un problema determinado. Estos pasos deben ser simples y seguir un
orden cuidadosamente prescrito; además deben ser efectivos, para resolver
siempre el problema en un número finito de pasos.
LENGUAJE ALGORITMICO
Es un lenguaje especial para expresar la solución de un problema en base a un
algoritmo. El lenguaje algorítmico está situado entre el lenguaje humano y el
lenguaje de programación. Con esto se pretende eliminar la imprecisión del
primero y la estricta sintaxis y variedad de instrucciones del segundo. De esta
manera el diseñador se concentre en el algoritmo, es decir, en la solución del
problema.
A los lenguajes algorítmicos también se les conoce como herramienta para diseño
de algoritmos o herramientas de programación, y se pueden clasificar como sigue:
Diagramas de Flujo
Lenguajes Gráficas Diagramas de Flujo Estructurado
Diagramas de Nassi-Schnneiderman (N-S)
Algorítmicos
Texto Lenguaje narrativo
Pseudocódigo
ENTIDADES PRIMITIVAS
DATO
Es un valor concreto sobre algún hecho o elemento, el cual es representado con
un símbolo. En algoritmos, los datos permiten la entrada, proceso y salida de
información acerca de un problema. Existen ciertos tipos de datos simples o
básicos, los cuales se observan en la tabla mostrada a continuación:
3
Fundamentos de diseño de algoritmos Armando López Ciseña
CONSTANTE
Es un objeto que permanece sin cambio en el desarrollo de un algoritmo.
VARIABLE
Es un objeto que permite almacenar un dato, el cual puede cambiar de valor en el
transcurso de un algoritmo. En un lenguaje de programación, una variable
representa la dirección de memoria en la que físicamente se almacena el dato, por
lo que el nombre que se da a la variable está asociado a dicha dirección de
memoria.
Deben respetarse estas reglas generales para asignarles nombres a las variables:
4
Fundamentos de diseño de algoritmos Armando López Ciseña
EXPRESIONES
Es un conjunto de constantes y/o variables asociados mediante operadores, que
evaluado representa un determinado valor.
EXPRESIONES NUMÉRICAS
Estas expresiones son análogas a las expresiones algebráicas de matemáticas.
Las variables y constantes son numéricas y las operaciones son aritméticas.
a) Toda la expresión debe ser escrita en una sola línea de instrucción del
algoritmo, por lo que puede ser necesario el uso de más paréntesis para lograr
el agrupamiento correcto.
Los operadores básicos para escribir expresiones numéricas están dadas en esta
tabla:
5
Fundamentos de diseño de algoritmos Armando López Ciseña
TIPOS DE TIPO DE
OPERADOR SIGNIFICADO
OPERANDOS RESULTADO
, ^ , ** , $ Potencia Entero o Real Entero o Real
* Multiplicación Entero o Real Entero o Real
/ División Real Real
+ Suma Entero o Real Entero o Real
- Resta Entero o Real Entero o Real
DIV División entera Entero Entero
Módulo, Resto o
MOD Entero Entero
Residuo
FUNCIONES INTERNAS
En muchas ocasiones, además de las operaciones aritméticas básicas de la tabla
anterior, las expresiones que se requieren en los algoritmos necesitan de algunos
operadores especiales que se conocen como funciones internas o estándar, pues
normalmente vienen incorporadas en el lenguaje (algortímico o de programación)
que se esté utilizando.
TIPO DE TIPO DE
FUNCIÓN SIGNIFICADO
ARGUMENTO RESULTADO
ABS(x) Valor Absoluto de x Entero o Real Entero o Real
ARCTAN(x) ** Arcotangente de x Entero o Real Entero o Real
COS(x) * Coseno de x Entero o Real Entero o Real
Exponencial de x
EXP(x) Entero o Real Entero o Real
(ex )
Logaritmo Natural
LN(x) Entero o Real Entero o Real
de x
SENO(x) * Seno de x Entero o Real Entero o Real
CUADRADO(x) Cuadrado de x Entero o Real Entero o Real
Raíz Cuadrada de
RAIZCUA(x) Entero o Real Entero o Real
x
6
Fundamentos de diseño de algoritmos Armando López Ciseña
REGLAS DE PRIORIDAD
Las expresiones que tienen dos o más operandos requieren de unas reglas que
permitan determinar el orden de las operaciones. A dichas reglas se les conoce
como reglas de prioridad o de precedencia, y son las siguientes:
EXPRESIONES LÓGICAS
También llamadas booleanas en honor al matemático británico George Boole, son
las que combinan constantes lógicas, variables lógicas y otras expresiones lógicas
utilizando los operadores de relación y los operadores lógicos.
OPERADORES DE RELACIÖN
Estos operadores permiten realizar comparaciones de valores de tipo numérico o
alfanumérico. Dicha comparación derivará en un valor falso o verdadero.
Los operadores de relación nos permiten expresar condiciones simples en los
algoritmos. Dichos operadores están agrupados en la siguiente tabla:
7
Fundamentos de diseño de algoritmos Armando López Ciseña
OPERADOR SIGNIFICADO
< Menor que
> Mayor que
= Igual que
<= Menor o igual que
>= Mayor o igual que
<> Diferente de
OPERADORES LÓGICOS
Cuando no es suficiente una sola comparación para indicar una condición dentro
de un algoritmo, se utilizan los operadores lógicos, los cuales permiten combinar
dos o más comparaciones en una sola expresión lógica.
Aunque existen más, los siguientes son los tres operadores lógicos básicos:
a b aOb
V V V
Disyunción O OR Unión V F V
F V V
F F F
a b aYb
V V V
Conjunción Y AND Intersección V F F
F V F
F F F
a NO a
Negación NO NOT Complemento V F
F V
8
Fundamentos de diseño de algoritmos Armando López Ciseña
Del mismo modo que en una expresión numérica, cuando existen dos o más
operadores lógicos en una expresión lógica, es necesario establecer la prioridad
de dichas operaciones. La precedencia se da en este orden:
1- () Paréntesis
2- NO Negación
3- Y Conjunción
4- O Disyunción
LA OPERACIÓN DE ASIGNACIÓN
La operación de asignación es el modo de darle valores a una variable dentro de
un algoritmo. Esta operación se representa con el siguiente símbolo:
variable expresión
Nótese como una asignación NO es lo mismo que una igualdad, pues la siguiente
asignación:
xx+1
x=x+1
9
Fundamentos de diseño de algoritmos Armando López Ciseña
En general, deben considerarse estos puntos para definir los datos de entrada:
2) No debe existir ningún dato de entrada que pueda calcularse o inferirse a partir
de otro u otros datos de entrada, pues generará inconsistencia en la
información que procesa el algoritmo.
3) Los datos de entrada no son los que nos parezcan más cómodos o los que
nosotros quisiéramos pedir para resolver un problema. Aunque en contadas
ocasiones sí podríamos definirlos con ese criterio, los datos de entrada
siempre deben ajustarse al contexto del problema, es decir, a las
circunstancias, requisitos y necesidades que marca el enunciado del problema.
EL ALGORITMO BÁSICO
Cualquier algoritmo, por elemental que sea, contiene la siguiente secuencia de
acciones:
10
Fundamentos de diseño de algoritmos Armando López Ciseña
REPRESENTACIÓN DE ALGORITMOS
Como se vio anteriormente, existen herramientas para representar algoritmos, que
son los denominados lenguajes algorítmicos. A continuación se definen los tres
que utilizaremos.
Diagrama de Flujo
Esta herramienta de programación es una de las técnicas de representación de
algoritmos más antigua y todavía utilizada. Con la aparición de los lenguajes de
programación estructurados se vio disminuida su aplicación porque los diagramas
de flujo originalmente no estuvieron diseñados para programación estructurada.
Sin embargo, para aprovechar sus innegables ventajas, se le hicieron
adecuaciones para poder representar las estructuras de control de la
programación estructurada, dando como resultado el llamado diagrama de flujo
estructurado, que es el que se utiliza en este curso.
Subprograma,
Inicio / Fin subrutina o
subproceso
Acción, proceso o
Conector
cálculo
Conector en página
Salida de Datos
diferente
11
Fundamentos de diseño de algoritmos Armando López Ciseña
Existen algunas reglas prácticas que son altamente recomendables para construir
diagramas de flujo lo más estructurado posible:
Este sistema de representación permite tener una visión mucho más estructurada
de los algoritmos que con el diagrama de flujo. Esto hecho no es circunstancial,
pues el diagrama N-S fue diseñado específicamente para la programación
estructurada.
Proceso o cálculo
12
Fundamentos de diseño de algoritmos Armando López Ciseña
Pseudocódigo
El objetivo del pseudocódigo es obtener un algoritmo muy similar al código que se
obtiene con un lenguaje de programación, de tal manera que se realiza casi
directamente la etapa de codificación. Sin embargo, utiliza sólo unas cuantas
palabras reservadas del lenguaje humano (español por ejemplo) para representar
las acciones comunes y las estructuras de control básicas utilizadas en la
construcción de algoritmos, sin adentrarse en la rígida sintaxis de un lenguaje de
programación. La idea es que el desarrollador se concentre en el diseño de la
solución de un problema (o sea el algoritmo), en vez de preocuparse por
cuestiones particulares de los estrictos lenguajes de programación.
ALGORITMO nombre
INICIO
Instrucción 1
Instrucción 2
…
…
instrucción n
FIN
13
Fundamentos de diseño de algoritmos Armando López Ciseña
14
Fundamentos de diseño de algoritmos Armando López Ciseña
UNIDAD II
ESTRUCTURAS SELECTIVAS
En muchas ocasiones, para resolver un problema por medio de un algoritmo, es
necesario escoger un camino a seguir de entre dos o más posibilidades. Para
representar esta situación tenemos las estructuras selectivas.
V
Condición
Condición
V F
Proceso
Proceso
SI condición
ENTONCES proceso
FIN_SI
Pseudo Código
15
Fundamentos de diseño de algoritmos Armando López Ciseña
V F
Condición
Proceso 1 Proceso 2
Diagrama de Flujo
Condición
V F
Proceso 1 Proceso 1
Diagrama NS
SI condición
ENTONCES prceso1
SINO proceso 2
FIN_SI
Pseudo Código
16
Fundamentos de diseño de algoritmos Armando López Ciseña
Todo lo que se puede realizar con una estructura selectiva múltiple es posible
hacerlo con estructuras selectivas secuenciales y/o anidadas, pero es preferible
utilizar la selectiva múltiple porque establece de manera más clara y compacta las
distintas opciones disponibles. Su representación es:
Diagrama de Flujo
expresión
Otros
V1 V2 Vn valores
Expresión
Otros
valores
Diagrama N-S
Otros
Proceso 1 Proceso 2 …… Proceso n Procesos
UNIDAD III
ESTRUCTURAS REPETITIVAS
En la solución de problemas por medio de algoritmos, existen muchas situaciones
en las que es necesario repetir una acción o proceso una cantidad definida o
indeterminada de veces.
18
Fundamentos de diseño de algoritmos Armando López Ciseña
expresión F
lógica
Diagrama de Flujo
V
Proceso
Expresión lógica
Diagrama N-S
Proceso
FIN_MIENTRAS
19
Fundamentos de diseño de algoritmos Armando López Ciseña
Nótese que en esta estructura, el proceso a repetir se ejecuta por lo menos una
vez, y debe tenerse cuidado que la variable o variables que intervienen en la
condición se modifiquen en alguna iteración del proceso de tal forma que la
condición sea verdadera cuando sea necesario salirse de la estructura (es decir,
cuando ya no se requiera otra repetición). Si no ocurre esto, la estructura entrará,
como ya se vio anteriormente, en un ciclo infinito.
Proceso
Proceso
Expresión lógica
F expresión
lógica
V Diagrama de N-S
Diagrama de Flujo
REPETIR
HASTA_QUE condición
20
Fundamentos de diseño de algoritmos Armando López Ciseña
variable de control =
valor inicial
incremento
o decremento de
la variable de control
Proceso
Diagrama de Flujo
21
Fundamentos de diseño de algoritmos Armando López Ciseña
Proceso
incremento o decremento de
la variable de control
Diagrama N-S
DESDE variable de control = valor inicial HASTA variable de control > valor final (DECREMENTANDO) HACER
Proceso
FIN_DESDE
Pseudo Código
22