Beruflich Dokumente
Kultur Dokumente
PARA
DISEO DE
ALGORITM
OS
Aplicar los diferentes elementos del anlisis y solucin de
problemas mediante los algoritmos y diagramas de flujo.
Cdigo: CSTI0082
Duracin: 36
Horas
LINEAMIENTOS DE EVALUACIN
Con base en el anlisis de los objetivos, contenidos y duracin en horas de este mdulo, se
obtuvieron los valores porcentuales de las reas que a continuacin se presentan
Pro
gramacin
La programacin es el proceso de disear, escribir, probar,
depurar y mantener el cdigo fuente de programas
computacionales. El cdigo fuente es escrito en un lenguaje de
programacin. El propsito de la programacin es crear programas que exhiban un
comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente
conocimientos en varias reas distintas, adems del dominio del lenguaje a utilizar,
algoritmos especializados y lgica formal. Programar no involucra necesariamente otras
tareas tales como el anlisis y diseo de la aplicacin (pero si el diseo del cdigo), aunque
si suelen estar fusionadas en el desarrollo de pequeas aplicaciones.
Video: Todos deberan aprender a programar
Objetivos de la programacin
La programacin debe perseguir la obtencin de programas de calidad. Para ello se
establece una serie de factores que determinan la calidad de un programa. Algunos de los
factores de calidad ms importantes son los siguientes:
Correccin. Un programa es correcto si hace lo que debe hacer tal y como se estableci
en las fases previas a su desarrollo.
Claridad. Es muy importante que el programa sea lo ms claro y legible posible, para
facilitar as su desarrollo y posterior mantenimiento. Al elaborar un programa se debe
intentar que su estructura sea sencilla y coherente, as como cuidar el estilo en la
edicin; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de
creacin como en las fases posteriores de correccin de errores, ampliaciones,
modificaciones, etc.
Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fue
creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los
recursos que utiliza.
Lenguajes de programacin
Un lenguaje de programacin es un lenguaje formal diseado para expresar procesos que
pueden ser llevados a cabo por mquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento fsico y lgico de una
mquina, para expresar algoritmos con precisin, o como modo de comunicacin humana.
Est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su
estructura y el significado de sus elementos y expresiones. Al proceso por el cual se
escribe, se prueba, se depura,se compila (de ser necesario) y se mantiene el cdigo
fuente de un programa informtico se le llama programacin.
El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina,
consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar cualquier accin.
Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo
nivel y los que se encuentran ms cercanos a los programadores y usuarios se denominan
lenguajes de alto nivel.
Tipos de lenguaje (segn la posibilidad que presentan respecto al hardware)
Bajo nivel.
Lenguajes de mquina: El lenguaje mquina de una computadora consta de
cadenas de nmeros binarios (ceros y unos) y es el nico que
entienden directamente los procesadores.
Es sistema de cdigos directamente interpretable por un circuito
microprogramable, como el microprocesador de una
computadora. Este lenguaje est compuesto por un conjunto de
instrucciones que determinan acciones al ser tomadas por la
mquina. Un
programa consiste en una cadena de estas instrucciones ms un conjunto de datos sobre el
cual se trabaja. Estas instrucciones son normalmente ejecutadas en secuencia, con
eventuales cambios de flujo causados por el propio programa o eventos externos. El
lenguaje de mquina es especfico de la arquitectura de la mquina, aunque el conjunto de
instrucciones disponibles pueda ser similar entre arquitecturas distintas
Segn los estndares actuales, las primeras computadoras eran poco tolerantes. Los
programadores tenan que traducir las instrucciones de manera directa a la forma de
lenguaje de mquina que comprendan las computadoras. Por ejemplo, un programador
que escribiera la instruccin SUMAR 0814 para una de las primeras mquinas IBM
hubiera escrito:
000100000000000000000000000010111000
Lenguajes ensambladores: A principios de la dcada de 1950, y con el fin de facilitar la
labor de los programadores, se desarrollaron cdigos nemotcnicos para las operaciones y
direcciones simblicas. La palabra nemotcnico se refiere a una ayuda para la
memorizacin. Uno de los primeros pasos para mejorar el proceso de preparacin de
programas fue sustituir los cdigos de operaciones numricos del lenguaje de mquina por
smbolos alfabticos, que son los cdigos nemotcnicos.
Un ejemplo comn de mnemnico es la instruccin MOV (mover), que le indica al
microprocesador que debe asignar datos de un lugar a otro. El microprocesador no entiende
4
palabras, sino nmeros binarios, por lo que es necesario la traduccin del trmino
mnemnico a cdigo objeto.
FORTRAN
COBOL
BASIC
JAVA
PHP
Fortran
La familia de lenguajes de C, incluyendo C++ y Objective C pero no Java.
Ada, Pascal (incluyendo su dialecto Delphi)
Algol
programa objeto compilado con antelacin deber ejecutarse con mucha mayor rapidez que
uno que se debe interpretar a cada paso durante una corrida de produccin.
Algunos de los lenguajes que suelen ser interpretados ms famosos en la actualidad son
ActionScript
IO (es un lenguaje reciente -2002-)
Java Script (todas las plataformas)
ASP
RUBY
Tipos de programacin:
Programacin estructurada (PE)
La programacin estructurada est compuesta por un conjunto de tcnicas que han ido
evolucionando aumentando considerablemente la productividad del programa reduciendo el
tiempo de depuracin y mantenimiento del mismo.
Esta programacin estructurada utiliza un nmero limitado de estructuras de control,
reduciendo as considerablemente los errores.
Estructuras bsicas:
1. Estructuras secunciales: cada accin sigue a otra accin secuencialmente. La salida de
una accin es la entrada de otra.
2. Estructuras selectivas: en estas estructuras se evalan las condiciones y en funcin del
resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lgicas.
3. Estructuras repetitivas: son secuencias de instrucciones que se repiten un nmero
determinado de veces.
Programacin modular
En la programacin modular consta de varias secciones dividas de forma que interactan a
travs de llamadas a procedimientos, que integran el programa en su totalidad.
En la programacin modular, el programa principal coordina las llamadas a los mdulos
secundarios y pasa los datos necesarios en forma de parmetros.
A su vez cada mdulo puede contener sus propios datos y llamar a otros mdulos o
funciones.
Programacin orientada a objetos (POO)
Se trata de una tcnica que aumenta considerablemente la velocidad de desarrollo de los
programas gracias a la reutilizacin de los objetos.
El elemento principal de la programacin orientada a objetos es el objeto.
El objeto es un conjunto complejo de datos y programas que poseen estructura y forman
parte de una organizacin.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo
del programador y las acciones del programa en ese momento.
El polimorfismo y la herencia son unas de sus principales caractersticas y por ello
dedicaremos ms adelante un artculo exclusivamente a tratar estos dos trminos.
Programacin concurrente
Este tipo de programacin se utiliza cuando tenemos que realizar varias acciones a la vez.
Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma
simultnea.
Se trata de una programacin ms lenta y laboriosa, obteniendo unos resultados lentos en
las acciones.
Programacin funcional
Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras
funciones. Ejemplo: Scheme
Programacin lgica
Se suele utilizar en la inteligencia artificial y pequeos programas infantiles. Se trata de una
programacin basada en el clculo de predicados (una teora matemtica que permite lograr
que un ordenador basndose en hecho y reglas lgicas, pueda dar soluciones inteligentes)
Algoritmos
Objetivo:
Solucionar problemas mediante procesos y algoritmos.
Definicin:
En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del
griego y latin, dixit algorithmus y ste a su vez del matemtico persa Al Juarismi 1 ) es un
conjunto prescrito 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 solucin. Los algoritmos son el objeto de estudio de
la algoritmia.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas.
Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un
aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos
ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos
nmeros, el algoritmo de Euclides (mtodo antiguo y eficaz para calcular el mximo comn
divisor) para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de
Gauss para resolver un sistema lineal de ecuaciones.
PROBLEMA -> ALGORITMO -> PROGRAMA
El pseudocdigo es una herramienta algortmica que permite escribir pseudoprogramas
(una imitacin de un programa real) utilizando un lenguaje de pseudoprogramacin que es
una imitacin de los lenguajes de programacin de alto nivel. As, un pseudocdigo es una
combinacin de smbolos (+, -, *, /, %, >, >=, <, <=, !=, ==, y, o, no), trminos (Leer,
Imprimir, Abrir, Cerrar, Hacer...Mientras, Mientras...Hacer, Para...Mientras, etc) y otras
caractersticas comnmente utilizadas en uno o ms lenguajes de alto nivel.
Ejemplo
Una variable es una localizacin en la memoria que tiene un nombre y cuyo contenido
puede cambiar a lo largo de la ejecucin de un programa. As numero1, numero2 y
numero3 son variables.
10
11
3. Implementacin
Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los
algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito
elctrico o un aparato mecnico y elctrico. Algunos algoritmos inclusive se disean
especialmente para implementarse usando lpiz y papel. El algoritmo de multiplicacin
tradicional, el algoritmo de Euclides, la criba de Eratstenes y muchas formas de resolver la
raz cuadrada son slo algunos ejemplos.
Variable: Un elemento que toda pertenece a un dato especfico correcto. La declaracin se
realiza comenzando con var. Principalmente, existen dos maneras de otorgar valores
iniciales a variables:
1. Mediante una sentencia de asignacin.
2. Mediante uno de los procedimientos de entrada de datos (read o readln).
Ejemplo:
...
i:=1;
readln(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
Estructuras secuenciales: La estructura secuencial es aquella en la que una accin sigue a
otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada
de la siguiente y as sucesivamente hasta el fin del proceso. La asignacin de esto consiste,
en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida
con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la
siguiente forma:
12
Ejemplo de algoritmo
El problema consiste en encontrar el mximo de un conjunto de nmeros.
13
Para encontrar el elemento mximo, se asume que el primer elemento (c0) es el mximo;
luego, se recorre el conjunto y se compara cada valor con el valor del mximo nmero
encontrado hasta ese momento. En el caso que un elemento sea mayor que el mximo, se
asigna su valor al mximo. Cuando se termina de recorrer la lista, el mximo nmero que se
ha encontrado es el mximo de todo el conjunto.
Descripcin formal
El algoritmo puede ser escrito de una manera ms formal en el siguiente pseudocdigo:
Algoritmo Encontrar el mximo de un conjunto
funcin max(C)
//C es un conjunto no vaco de nmeros//
n | C | // | C | es el nmero de elementos de C//
m c0
para i 1 hasta n hacer
si ci > m entonces
m ci
devolver m
Sobre la notacin:
Implementacin
En lenguaje C++:
int max(int c[], int n){
int i, m = c[0];
for (i = 1; i < n; i++)
if (c[i] > m) m = c[i];
14
return m;
}
15
Diagrama de flujo
Un diagrama de flujo es una representacin grfica de un algoritmo o
proceso. Se utiliza en disciplinas como la programacin, la economa, los
procesos industriales y la psicologa cognitiva. Estos diagramas utilizan
smbolos con significados bien definidos que representan los pasos del
algoritmo, y representan el flujo de ejecucin mediante flechas que
conectan los puntos de inicio y de trmino.
Caractersticas
Un diagrama de flujo siempre tiene un nico punto de inicio y un nico
punto de trmino. Adems, todo camino de ejecucin debe permitir llegar
desde el inicio hasta el trmino.
Las siguientes son acciones previas a la realizacin del diagrama de flujo:
Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar
presentes el dueo o responsable del proceso, los dueos o responsables del proceso
anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.
16
Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud
el proceso elegido.
17
Son una excelente herramienta para capacitar a los nuevos empleados y tambin a
los que desarrollan la tarea, cuando se realizan mejoras en el proceso.
Simbologa y significado
18
19
20
Pseudocdigo
El pseudocdigo (falso lenguaje) es comnmente utilizado por los programadores para
omitir secciones de cdigo o para dar una explicacin del paradigma que tom el mismo
programador para hacer sus cdigos esto quiere decir que el pseudocdigo no es
programable sino facilita la programacin.
El principal objetivo del pseudocdigo es el de representar la solucin a un algoritmo de la
forma ms detallada posible, y a su vez lo ms parecida posible al lenguaje que
posteriormente se utilizar para la codificacin del mismo.
Caractersticas y partes
Las principales caractersticas de este lenguaje son:
1.
2.
3.
4.
5.
Instrucciones primitivas.
Instrucciones de proceso.
Instrucciones de control.
Instrucciones compuestas.
Instrucciones de descripcin.
2. Instrucciones.
3. Fin.
Definicin de datos del pseudocdigo
La definicin de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea
formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del
algoritmo, y naturalmente cuando empleemos el pseudocdigo para definir estructuras de
datos, esta parte la desarrollaremos adecuadamente.
Funciones y operaciones
Cada autor usa su propio pseudocdigo con sus respectivas convenciones. Por ejemplo, la
instruccin "reemplace el valor de la variable x por el valor de la variable y" puede ser
representado como:
asigne a el valor de
Estructuras de control
En la redaccin del pseudocdigo se utiliza tres tipos de estructuras de control: las
secuenciales, las selectivas y las iterativas.
1. Estructuras secuenciales:
Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el
nmero de rengln. Es decir que las instrucciones se ejecutan de arriba hacia abajo. Las
instrucciones se ejecutan dependiendo de la condicin dada dentro del algoritmo.
22
2. Estructuras selectivas:
Las instrucciones selectivas representan instrucciones que pueden o no ejecutarse, segn el
cumplimiento de una condicin.
Diagrama de flujo que muestra el funcionamiento de la instruccin condicional.
la condicin
23
Tambin es comn el uso de una seleccin mltiple que equivaldra a anidar varias
funciones de seleccin.
En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si
una de ellas se cumple las dems tienen que ser falsas necesariamente, hay un caso si no
que ser cierto cuando las dems condiciones sean falsas.
En esta estructura si Condicin1 es cierta, entonces se ejecuta slo Instrucciones1. En
general, si Condicini es verdadera, entonces slo se ejecuta Instruccionesi
Selectiva mltiple-Casos
24
En este caso hay un Indicador es una variable o una funcin cuyo valor es comparado en
cada caso con los valores "Valori", si en algn caso coinciden ambos valores, entonces se
ejecutarn las Instrucciones correspondientes. La seccin en otro caso es anloga a la
seccin si no del ejemplo anterior.
3. Estructuras iterativas
Las instrucciones iterativas representan la ejecucin de instrucciones en ms de una vez.
Bucle mientras
25
Bucle repetir
Existen otras variantes que se derivan a partir de la anterior. La estructura de control repetir
se utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta
que se cumpla la condicin:
Bucle para
Una estructura de control muy comn es el ciclo para, la cual se usa cuando se desea iterar
un nmero conocido de veces, empleando como ndice una variable que se incrementa (o
decrementa):
26
Por ltimo, tambin es comn usar la estructura de control para cada. Esta sentencia se usa
cuando se tiene una lista o un conjunto L y se quiere iterar por cada uno de sus elementos:
27
El anidamiento
Cualquier instruccin puede ser sustituida por una estructura de control. El siguiente
ejemplo muestra el pseudocdigo del ordenamiento de burbuja (Funciona revisando cada
elemento de la lista que va a ser ordenada con el siguiente, intercambindolos de posicin si estn en el orden
que tiene varias estructuras anidadas. Este algoritmo ordena de menor a mayor
los elementos de una lista L.
equivocado),
En general, las estructuras anidadas se muestran indentadas (con sangra), para hacer ms
sencilla su identificacin a simple vista. En el ejemplo, adems de la indentacin, se ha
conectado con flechas los pares de delimitadores de cada nivel de anidamiento.
Desarrollo de algoritmos
Con este pseudocdigo se puede desarrollar cualquier algoritmo que:
Haya un nmero finito de caminos, entre el punto de inicio y los posibles puntos de
trmino.
28
Funciones y procedimientos
Muchas personas prefieren distinguir entre funciones y procedimientos. Una funcin, al
igual que una funcin matemtica, recibe uno o varios valores de entrada y regresa una
salida mientras que un procedimiento recibe una entrada y no genera ninguna salida aunque
en algn caso podra devolver resultados a travs de sus parmetros de entrada si estos se
han declarado por referencia (ver formas de pasar argumentos a una funcin o
procedimiento).
En ambos casos es necesario dejar en claro cules son las entradas para el algoritmo, esto se
hace comnmente colocando estos valores entre parntesis al principio o bien declarndolo
explcitamente con un enunciado. En el caso de las funciones, es necesario colocar una
palabra como regresar o devolver para indicar cul es la salida generada por el algoritmo.
Por ejemplo, el pseudocdigo de una funcin que permite calcular an (un nmero a elevado
a potencia n).
29
30