SISTEMAS INFORMÁTICOS
PROGRAMACION I Ing. Alejandro Guzmán M.
TEMA
Diseño
de
Algoritmos
5
SISTEMAS INFORMÁTICOS
PROGRAMACION I Ing. Alejandro Guzmán M.
2. DISEÑO DE ALGORITMOS
2.1. Concepto de Algoritmo
En matemáticas, ciencias de la computación y disciplinas relacionadas, un
algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático
persa Al-Juarismi) es un conjunto preescrito de instrucciones o reglas bien
definidas, ordenadas y finitas que permite realizar una actividad mediante
pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.
Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a
un estado final y se obtiene una solución. Los algoritmos son el objeto de
estudio de la algoritmia.
2.2. Características de los algoritmos
• Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la
acción a realizar sin criterios de interpretación.
• Ser finito: Un número específico y numerable de pasos debe componer al
algoritmo, el cual deberá finalizar al completarlos.
• Tener cero o más entradas: Datos son proporcionados a un algoritmo
como insumo (o estos son generados de alguna forma) para llevar a cabo las
operaciones que comprende.
• Tener una o más salidas: Debe siempre devolver un resultado; de nada
sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un
resultado no debe ser considerado como únicamente “verlos” en forma
impresa o en pantalla, como ocurre con las computadoras. Existen muchos
otros mecanismos susceptibles de programación que no cuentan con una
salida de resultados de esta forma. Por salida de resultados debe entenderse
todo medio o canal por el cual es posible apreciar los efectos de las acciones
del algoritmo.
• Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso,
no usando nada más ni nada menos que aquello que se requiera para y en su
ejecución.
2.3. Constantes, Variables y Expresiones
2.3.1. Datos
Los datos son los objetos sobre los que opera una computadora.
2.3.2. Tipos de Datos
Datos numéricos: los relativos a diferentes clases de números. Son
enteros (sin parte decimal) y reales (con parte entera y decimal).
Datos tipo carácter (cadena): son caracteres que puede interpretar la
computadora: alfabéticos A - Z, a - z; dígitos 0 - 9; especiales $, *, >, <, . ,
“, ´´,; :,.... Un dato tipo carácter es un solo carácter.
6
SISTEMAS INFORMÁTICOS
PROGRAMACION I Ing. Alejandro Guzmán M.
Los caracteres se organizan en cadenas (secuencia de caracteres válidos
encerrados entre comillas o comillas dobles).
Datos lógicos o booleanos: aquellos que sólo pueden tomar dos
valores: cierto o falso (true / false)
Datos estructurados: arrays, registros, conjuntos y ficheros.
Datos enumerados: definidos por el usuario.
2.3.3. Constantes y Variables
Variables: Son todos aquellos valores que pueden o no cambiar en el
transcurso de un algoritmo. Usualmente son introducidas como datos.
Existen variables simples y variables suscritas (arreglos). Todas las
variables se componen de dos partes esenciales: Nombre y Valor.
El nombre es quien identifica la variable en todo el transcurso del
algoritmo, y son un conjunto de caracteres, letras y números. Dicho
nombre debe ser mnemotécnico, es decir, que con solo leer el nombre de
la variable se pueda entender o determinar con facilidad lo que ella
significa o contiene. Como ejemplo podemos decir la Variable VrHr
significa a simple vista Valor de la Hora; pero si fuese X o HH, estos
nombres pueden significar muchas cosas o, a la vez, no significar nada.
El valor es la cantidad que una variable representa o tiene asociada en
un momento determinado. Se debe tener en cuenta que una variable
también puede tener asociado un valor lógico como falso o verdadero.
Constantes: Son todos aquellos valores que no cambian en el
transcurso de un algoritmo y son introducidos en el momento de
utilizarse.
En determinados casos se puede presentar que el valor de una variable
no cambie en el transcurso de un algoritmo; pero por este hecho no se
considera constante, sigue siendo una variable, porque su valor puede
cambiar y las constantes no lo pueden hacer.
2.3.4. Operadores aritméticos y lógicos
Operadores Aritméticos:
suma +
resta -
multiplicación *
división /
resto de división entera %
Operadores Relacionales: se utilizan para expresar condiciones.
7
SISTEMAS INFORMÁTICOS
PROGRAMACION I Ing. Alejandro Guzmán M.
== igual
!= diferente
<= menor o igual
>= mayor o igual
> mayor que
< menor que
El resultado de la operación “expresión1 operador relacional expresión2”
será verdadero o falso.
Estos operadores de relación se pueden aplicar a cualquiera de los
cuatro tipos de datos estándar: entero, real, lógico y carácter.
Operadores Lógicos: permiten relaciones lógicas (si/no) y sirven para
representar condiciones compuestas.
no (not) no p negación de p !
y (and) pyq conjunción de p y q &&
o (or) poq disjunción de p y q ||
2.3.5. Expresiones aritméticas y lógicas
Utilizar las reglas de notación computacional según corresponda al
lenguaje de programación específico al usar en la implementación de
programas.
2.4. Herramientas para la representación de algoritmos
2.4.1. Pseudocódigos
El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una
descripción de alto nivel de un algoritmo que emplea una mezcla de
lenguaje natural con algunas convenciones sintácticas propias de
lenguajes de programación, como asignaciones, ciclos y condicionales,
aunque no está regido por ningún estándar. Es utilizado para describir
algoritmos en libros y publicaciones científicas, y como producto
intermedio durante el desarrollo de un algoritmo, como los diagramas
de flujo, aunque presentan una ventaja importante sobre estos, y es que
los algoritmos descritos en pseudocódigo requieren menos espacio para
representar instrucciones complejas.
El pseudocódigo está pensado para facilitar a las personas el
entendimiento de un algoritmo, y por lo tanto puede omitir detalles
irrelevantes que son necesarios en una implementación. Programadores
diferentes suelen utilizar convenciones distintas, que pueden estar
basadas en la sintaxis de lenguajes de programación concretos. Sin
embargo, el pseudocódigo, en general, es comprensible sin necesidad de
conocer o utilizar un entorno de programación específico, y es a la vez
suficientemente estructurado para que su implementación se pueda
hacer directamente a partir de él.
8
SISTEMAS INFORMÁTICOS
PROGRAMACION I Ing. Alejandro Guzmán M.
Así el pseudocódigo cumple con las funciones antes mencionadas para
representar algo abstracto los protocolos son los lenguajes para la
programación. Busque fuentes más precisas para tener mayor
comprensión del tema.
2.4.2. Diagramas de flujo
Los diagramas de flujo son descripciones gráficas de algoritmos; usan
símbolos conectados con flechas para indicar la secuencia de
instrucciones y están regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos
pequeños, ya que abarcan mucho espacio y su construcción es laboriosa.
Por su facilidad de lectura son usados como introducción a los
algoritmos, descripción de un lenguaje y descripción de procesos a
personas ajenas a la computación.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo
al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de
programación entre otros. Las descripciones en lenguaje natural tienden
a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo
evita muchas ambigüedades del lenguaje natural. Dichas expresiones
son formas más estructuradas para representar algoritmos; no obstante,
se mantienen independientes de un lenguaje de programación
específico.