Sie sind auf Seite 1von 31

TECNICAS

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

Tcnicas para diseo de algotimos-CSTI0082

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

Para la evaluacin de esta rea se propone la realizacin de la /s siguiente /s actividad /es de


comprobacin. A continuacin se detallan:

Tcnicas para diseo de algotimos-CSTI0082

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.

Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en


una plataforma, ya sea hardware o software, diferente a aqulla en la que se elabor.

Tcnicas para diseo de algotimos-CSTI0082

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.

Un ejemplo de cdigo fuente escrito en el lenguaje de


programacin Java, que imprimir el mensaje "Hello World!"

Historia de los lenguajes de programacin


Los primeros lenguajes de programacin surgieron de la idea de Charles
Babagge, la cual se le ocurri a este hombre a mediados del siglo XIX. Era
un profesor matemtico de la universidad de Cambridge e inventor ingls, que al principio
del siglo XIX predijo muchas de las teoras en que se basan los actuales ordenadores. Con
l colaboro Ada Lovedby, la cual es considerada como la primera
programadora de la historia, pues realizo programas para aqulla supuesta
mquina de Babagge, en tarjetas perforadas.
Como la maquina no llego nunca a construirse, los programas de Ada,
lgicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de
partida de la programacin, sobre todo si observamos que en cuanto se empez a
programar, los programadores utilizaron las tcnicas diseadas por Charles Babagge, y
Ada, que consistan entre otras, en la programacin mediante tarjetas perforadas. A pesar de
ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto
que estos dos genios de antao, se adelantaron un siglo a su poca, lo cual describe la
inteligencia de la que se hallaban dotados.
En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una mquina de
diferencias, un dispositivo mecnico para efectuar sumas repetidas.

Tcnicas para diseo de algotimos-CSTI0082

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)

Son lenguajes totalmente dependientes de la mquina, es decir que el


programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en
otras mquinas, dentro de este grupo se encuentran el lenguaje mquina y el
lenguaje ensamblador.
Alto nivel: Son aquellos que se encuentran ms cercanos al lenguaje natural que al
lenguaje mquina (Gestin, cientficos, propsito general, especficos)
Bajo nivel:

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

Tcnicas para diseo de algotimos-CSTI0082

palabras, sino nmeros binarios, por lo que es necesario la traduccin del trmino
mnemnico a cdigo objeto.

Lenguajes de alto nivel


Un lenguaje de programacin de alto nivel se caracteriza por expresar los algoritmos de una
manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de
las mquinas.
Traductor: programa que toma como entrada un programa fuente y lo convierte a un
cdigo mquina. Hay 2 tipos:

Intrprete: toma el programa fuente lnea por lnea y lo va ejecutando, si alguna


lnea tiene error lo devuelve.
Compilador: lee el cdigo fuente creado en un determinado lenguaje de
programacin, lo interpreta, comprueba su sintaxis y traduce a cdigo maquina toda
la serie de instrucciones, generando el archivo ejecutable final.

Algunos lenguajes de alto nivel:

FORTRAN
COBOL
BASIC
JAVA
PHP

Lenguajes compilados: Naturalmente, un programa que se escribe


en un lenguaje de alto nivel tambin tiene que traducirse a un cdigo
que pueda utilizar la mquina. Los programas traductores que
pueden realizar esta operacin se llaman compiladores. stos, como
los programas ensambladores avanzados, pueden generar muchas lneas de cdigo de
mquina por cada proposicin del programa fuente. Se requiere una corrida de
compilacin antes de procesar los datos de un problema.

Tcnicas para diseo de algotimos-CSTI0082

Los compiladores son aquellos cuya funcin es traducir un programa escrito en un


determinado lenguaje a un idioma que la computadora entienda (lenguaje mquina con
cdigo binario).
Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de
Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que
luego de haber compilado el programa, ya no aparecen errores en el cdigo.

Algunos ejemplos tpicos de lenguajes compilados:

Fortran
La familia de lenguajes de C, incluyendo C++ y Objective C pero no Java.
Ada, Pascal (incluyendo su dialecto Delphi)
Algol

Lenguajes interpretados: Se puede tambin utilizar una alternativa diferente de los


compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y
grabar en forma permanente el cdigo objeto que se produce durante la corrida de
compilacin para utilizarlo en una corrida de produccin futura, el programador slo carga
el programa fuente en la computadora junto con los datos que se van a procesar. A
continuacin, un programa intrprete, almacenado en el sistema operativo del disco, o
incluido de manera permanente dentro de la mquina, convierte cada proposicin del
programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el
proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instruccin, se le debe interpretar otra vez y traducir a
lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un
ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada vez que se ejecute
el ciclo, lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va
revisando el cdigo en tiempo de ejecucin) pero ms rpido en tiempo de diseo (porque
no se tiene que estar compilando a cada momento el cdigo completo). El intrprete
elimina la necesidad de realizar una corrida de compilacin despus de cada modificacin
del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un

Tcnicas para diseo de algotimos-CSTI0082

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.

Las principales ventajas de la programacin estructurada son:

Los programas son ms fciles de entender


Se reduce la complejidad de las pruebas
Aumenta la productividad del programador
Los programas queden mejor documentados internamente.

Tcnicas para diseo de algotimos-CSTI0082

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)

Tcnicas para diseo de algotimos-CSTI0082

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

Tcnicas para diseo de algotimos-CSTI0082

No existen reglas que determinen que es o


no es un pseudocdigo, sino que vara de un
programador a otro. El objetivo del
pseudocdigo es permitir al programador
centrarse en los aspectos lgicos de la solucin evitando las reglas de sintxis de un
lenguaje de programacin. Posteriormente el pseudocdigo debe ser traducido a programa
usando un lenguaje de programacin de alto nivel como Java, C++, C, etc.
Ejemplo 2.1:- Disee un algoritmo para preparar una limonada.
INICIO Llenar una jarra con un litro de agua Echar el jugo de tres limones Echar cuatro
cucharadas de azcar Remover el agua hasta disolver completamente el azcar FIN
Ejemplo 2.2 :- Disee un algoritmo que permita hallar la suma y el promedio de tres
nmeros.
INICIO LEER numero1, numero2, numero3 suma = numero1 + numero2 + numero3
promedio = suma / 3 IMPRIMIR suma, promedio FIN
Notas:

El trmino LEER significa obtener un dato de algn dispositivo de entrada, como el


teclado, y almacenarlo en una variable.

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.

El trmino IMPRIMIR significa mostrar el valor de una variable en algn


dispositivo de salida, como la pantalla.

Medios de expresin de un algoritmo


Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,
pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las
descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo
y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones

10

Tcnicas para diseo de algotimos-CSTI0082

son formas ms estructuradas para representar algoritmos; no obstante, se mantienen


independientes de un lenguaje de programacin especfico.
La descripcin de un algoritmo usualmente se hace en tres niveles:
1. Descripcin de alto nivel. Se establece el problema, se selecciona un modelo
matemtico y se explica el algoritmo de manera verbal, posiblemente con
ilustraciones y omitiendo detalles.
2. Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que
encuentran la solucin.
3. Implementacin. Se muestra el algoritmo expresado en un lenguaje de
programacin especfico o algn objeto capaz de llevar a cabo instrucciones.
Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un
anlisis de complejidad o ambos.

1. Descripcin de alto nivel.


Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un
nmero x. Los diagramas de flujo son descripciones grficas de
algoritmos; usan smbolos conectados con flechas para indicar la
secuencia de instrucciones y estn regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeos, ya que
abarcan mucho espacio y su construccin es laboriosa. Por su facilidad de lectura son
usados como introduccin a los algoritmos, descripcin de un lenguaje y descripcin de
procesos a personas ajenas a la computacin.
Organizacin Internacional de Normalizacin o ISO nacida tras la Segunda Guerra
Mundial (23 de febrero de 1947), es el organismo encargado de promover el desarrollo de
normas internacionales de fabricacin, comercio y comunicacin.
2. Descripcin formal.
El pseudocdigo (falso lenguaje, el prefijo pseudo significa falso) es una descripcin de
alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas
convenciones sintcticas propias de lenguajes de programacin, como asignaciones, ciclos
y condicionales, aunque no est regido por ningn estndar. Es utilizado para describir
algoritmos en libros y publicaciones cientficas, 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 pseudocdigo requieren menos
espacio para representar instrucciones complejas.

11

Tcnicas para diseo de algotimos-CSTI0082

El pseudocdigo 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
implementacin. Programadores diferentes suelen utilizar convenciones distintas, que
pueden estar basadas en la sintaxis de lenguajes de programacin concretos. Sin embargo,
el pseudocdigo en general es comprensible sin necesidad de conocer o utilizar un entorno
de programacin especfico, y es a la vez suficientemente estructurado para que su
implementacin se pueda hacer directamente a partir de l.

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

Tcnicas para diseo de algotimos-CSTI0082

1. Simples: Consiste en pasar un valor constante a una variable (a <= 15)


2. Contador: Consiste en usarla como un verificador del nmero de veces que se
realiza un proceso (a <= a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a <= a + b)
4. De trabajo: Donde puede recibir el resultado de una operacin matemtica que
involucre muchas variables (a <= c + b*2/4).

Un ejemplo de estructura secuencial, como obtener el rea de un tringulo:


Inicio
...
int b, h, a;
printf("Diga la base", b);
scanf(%i, b);
printf("Diga la altura", h);
scanf(%i, h)
a := (b*h)/2
printf("El rea del tringulo es de", a)
...
Fin

Ejemplo de algoritmo
El problema consiste en encontrar el mximo de un conjunto de nmeros.

Descripcin de alto nivel


Dado un conjunto finito C de nmeros, se tiene el problema de encontrar el nmero ms
grande. Sin prdida de generalidad se puede asumir que dicho conjunto no es vaco y que
sus elementos estn numerados como
.
Es decir, dado un conjunto
para todo elemento x que pertenece al conjunto C.

se pide encontrar m tal que

13

Tcnicas para diseo de algotimos-CSTI0082

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:

"" representa una asignacin: m x significa que la variable m toma el valor de


x;
"devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el
mximo de C).

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

Tcnicas para diseo de algotimos-CSTI0082

return m;
}

15

Tcnicas para diseo de algotimos-CSTI0082

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.

Definir qu se espera obtener del diagrama de flujo.

Identificar quin lo emplear y cmo.

Establecer el nivel de detalle requerido.

Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

Establecer el alcance del proceso a describir. De esta manera quedar fijado el


comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del
proceso previo y el final la entrada al proceso siguiente.

Identificar y listar las principales actividades/subprocesos que estn incluidos en el


proceso a describir y su orden cronolgico.

Si el nivel de detalle definido incluye actividades menores, listarlas tambin.

Identificar y listar los puntos de decisin.

16

Tcnicas para diseo de algotimos-CSTI0082

Construir el diagrama respetando la secuencia cronolgica y asignando los


correspondientes smbolos.

Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud
el proceso elegido.

17

Tcnicas para diseo de algotimos-CSTI0082

Ventajas de los diagramas de flujo

Favorecen la comprensin del proceso a travs de mostrarlo como un dibujo. El


cerebro humano reconoce fcilmente los dibujos. Un buen diagrama de flujo
reemplaza varias pginas de texto.

Permiten identificar los problemas y las oportunidades de mejora del proceso. Se


identifican los pasos redundantes, los flujos de los re-procesos, los conflictos de
autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisin.

Muestran las interfaces cliente-proveedor y las transacciones que en ellas se


realizan, facilitando a los empleados el anlisis de las mismas.

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.

Tipos de diagramas de flujo

Formato vertical: En l el flujo o la secuencia de las operaciones, va de arriba hacia


abajo. Es una lista ordenada de las operaciones de un proceso con toda la
informacin que se considere necesaria, segn su propsito.
Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda
a derecha.
Formato panormico: El proceso entero est representado en una sola carta y puede
apreciarse de una sola mirada mucho ms rpido que leyendo el texto, lo que facilita
su comprensin, aun para personas no familiarizadas. Registra no solo en lnea
vertical, sino tambin horizontal, distintas acciones simultneas y la participacin de
ms de un puesto o departamento que el formato vertical no registra.
Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre
el plano arquitectnico del rea de trabajo. El primero de los flujogramas es
eminentemente descriptivo, mientras que los utilizados son fundamentalmente
representativos.

Simbologa y significado

valo: Inicio y trmino (Abre y/o cierra el diagrama).


Rectngulo: Actividad (Representa la ejecucin de una o ms actividades o
procedimientos).
Rombo: Decisin (Formula una pregunta o cuestin).
Crculo: Conector (Representa el enlace de actividades con otra dentro de un
procedimiento).

18

Tcnicas para diseo de algotimos-CSTI0082

Triangulo boca abajo: Archivo definitivo (Guarda un documento en forma


permanente).
Triangulo boca arriba: Archivo temporal (Proporciona un tiempo para el
almacenamiento del documento).

19

Tcnicas para diseo de algotimos-CSTI0082

20

Tcnicas para diseo de algotimos-CSTI0082

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.

Se puede ejecutar en un ordenador


Es una forma de representacin sencilla de utilizar y de manipular.
Facilita el paso del programa al lenguaje de programacin.
Es independiente del lenguaje de programacin que se vaya a utilizar.
Es un mtodo que facilita la programacin y solucin al algoritmo del programa.

Todo documento en pseudocdigo debe permitir la descripcin de:


1.
2.
3.
4.
5.

Instrucciones primitivas.
Instrucciones de proceso.
Instrucciones de control.
Instrucciones compuestas.
Instrucciones de descripcin.

Estructura a seguir en su realizacin:


1. Cabecera.
1. Programa.
2. Modulo.
3. Tipos de datos.
4. Constantes.
5. Variables.
2. Cuerpo.
1. Inicio.
21

Tcnicas para diseo de algotimos-CSTI0082

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

Las operaciones aritmticas se representan de la forma usual en matemticas.

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

Tcnicas para diseo de algotimos-CSTI0082

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 es una expresin booleana. Instrucciones es ejecutada slo si


es verdadera.

la condicin

Selectiva doble (alternativa)

La instruccin selectiva realiza una instruccin de dos


posibles, segn el cumplimiento de una condicin.
Diagrama de flujo que muestra el funcionamiento de la
instruccin condicional.

23

Tcnicas para diseo de algotimos-CSTI0082

La condicin es una variable booleana o una funcin reducible a booleana (lgica,


Verdadero/Falso). Si esta condicin es cierta se ejecuta Instrucciones1, si no es as, entonces
se ejecuta Instrucciones2.
Selectiva mltiple

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

Una construccin similar a la anterior (equivalente en algunos casos) es la que se muestra a


continuacin.

24

Tcnicas para diseo de algotimos-CSTI0082

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

El bucle se repite mientras la condicin sea cierta, si al llegar


por primera vez al bucle mientras la condicin es falsa, el
cuerpo del bucle no se ejecuta ninguna vez.

Diagrama de flujo que muestra el funcionamiento de la


instruccin mientras

25

Tcnicas para diseo de algotimos-CSTI0082

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:

La estructura anterior equivaldra a escribir:

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):

la cual se define como:

26

Tcnicas para diseo de algotimos-CSTI0082

Bucle para cada

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:

Si asumimos que los elementos de L son


equivaldra a:

, entonces esta sentencia

Sin embargo, en la prctica existen mejores formas de implementar esta instruccin


dependiendo del problema.
Es importante recalcar que el pseudocdigo no es un lenguaje estandarizado. Eso significa
que diferentes autores podran dar otras estructuras de control o bien usar estas mismas
estructuras, pero con una notacin diferente. Sin embargo, las funciones matemticas y
lgicas toman el significado usual que tienen en matemtica y lgica, con las mismas
expresiones.

27

Tcnicas para diseo de algotimos-CSTI0082

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:

Tenga un nico punto de inicio.

Tenga un nmero finito de posibles puntos de trmino.

Haya un nmero finito de caminos, entre el punto de inicio y los posibles puntos de
trmino.
28

Tcnicas para diseo de algotimos-CSTI0082

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

Tcnicas para diseo de algotimos-CSTI0082

Un ejemplo de procedimiento seria el algoritmo de Ordenamiento de burbuja, por el que


partiendo de una lista de valores estos se ordenan, ntese que en un procedimiento, no se
calcula el valor de una funcin, sino que se realiza una accin, en este caso ordenar la lista.

Ventajas del pseudocdigo sobre los diagramas de flujo


1. Ocupan mucho menos espacio en el desarrollo del problema.
2. Permite representar de forma fcil operaciones repetitivas complejas.
3. Es ms sencilla la tarea de pasar de pseudocdigo a un lenguaje de programacin
formal.
4. Si se siguen las reglas se puede observar claramente los niveles en la estructura del
programa.
5. En los procesos de aprendizaje de los alumnos de programacin, stos estn ms
cerca del paso siguiente (codificacin en un lenguaje determinado, que los que se
inician en esto con la modalidad Diagramas de Flujo).
6. Mejora la claridad de la solucin de un problema.

30

Das könnte Ihnen auch gefallen