Está en la página 1de 20

FICHA DE IDENTIFICACIN DE TRABAJO DE INVESTIGACIN

Ttulo: Anlisis y Diseo de Algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
Fecha: 24/11/2016

Cdigo de estudiante: 201314109-201500171


Carrera: Ingeniera de sistemas
Asignatura : Anlisis y Complejidad de algoritmos
Grupo: A
Docente: Carla Grace Balderrama Vasquez

Periodo Acadmico: Maana


Subsede: Ciencias tecnolgicas udabol

Copyright (AO) por (Elver Vladimir Colque Ugarte - Mauricio Flores Lpez). T odos los derechos reservados.

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

RESUMEN : Los algoritmos son el fundamento de la programacin de computadoras, para que la


computadora pueda ejecutar una tarea es necesario que primero se disee el algoritmo correspondiente,
es decir, especificar las operaciones necesarias para transformar los datos de entrada en datos de salida.
Una vez diseado y probado el algoritmo, se trasforma en el programa correspondiente. El programa
est compuesto por el algoritmo, la especificacin de los datos y las instrucciones que permiten la
comunicacin entre los usuarios del programa y la mquina.
Un algoritmo es un conjunto finito de instrucciones cuyo fin es realizar una tarea; este conjunto finito
de instrucciones debe tambin ser preciso y determinstico un algoritmo eficiente y confiable es
el producto de un anlisis exhaustivo del problema, para determinar la mejor alternativa de solucin.
Es un lenguaje simplificado para describir un algoritmo utilizando una mezcla de frases en lenguaje
comn, y palabras claves que indican el inicio y el fin del algoritmo y las instrucciones especficas a
realizar.

Palabras claves: diseo, instrucciones, algoritmo, maquina, finito

ABSTRACT: Algorithms are the foundation of computer programming, so that the


computer can execute a task is necessary to first design the corresponding algorithm, ie
specify the operations necessary to transform the input data into output data. Once the
algorithm is designed and tested, it is transformed into the corresponding program. The
program consists of the algorithm, the specification of the data and the instructions that
allow the communication between the users of the program and the machine. An
algorithm is a finite set of instructions whose purpose is to perform a task; This finite set
of instructions must also be precise and deterministic an efficient and reliable algorithm is
the product of an exhaustive analysis of the problem, to determine the best solution
alternative. It is a simplified language to describe an algorithm using a mixture of
common language phrases, and keywords that indicate the start and end of the algorithm
and the specific instructions to perform.

Keywords: design, instructions, algorithm, machine, finite

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

ANLISIS Y DISEO DE ALGORITMOS..4


CAPITULO I: DEFINICIN DE ALGORITMOS, LENGUAJE Y APLICACIONES...........4
1.1 Caractersticas de los Algoritmo..............................................................................5
1.2 Representacin grfica de los algoritmos.........................................................6
CAPITULO II: DEFINICION Y SOLUCION DE PROBLEMAS.........10
2.1 Analisis.........................................................................................................................................10
2.2 Diseo...........................................................................................................................................10
2.3 Codificacin (Implementacion)......................................................................................10
2.4 Compilacin Ejecucin y Verifica...........................................................................10
2.5 Depuracin y Mantenimiento...............................................................................10
2.6 Documentacion................................................................................................10
CAPITULO III: ALGORITMOS COTIDIANOS.......11
CAPITULO IV: LENGUAJES DE PROGRAMACION........................................................12
4.1 Clasificacin de los Lenguajes de Programacin....................................................13
4.1.1 Lenguajes de tercera generacin.14
4.1.2 Lenguajes de cuarta generacin......14
4.1.3 Lenguajes de quinta generacin.....15
4.2 Componentes de los lenguajes de programacin.....15
CAPITULO V: DISEO DE UN ALGORIMO..............................18
5.1 Diagramas de Flujo.............................................................................................18
CONCLUCION...........................................................................................................20
BIBLIOGRAFIA...20

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

ANLISIS Y DISEO DE ALGORITMOS

CAPITULO I: DEFINICIN DE ALGORITMOS, LENGUAJE Y APLICACIONES


El participante definir el concepto de algoritmos y lenguaje e identificar sus aplicaciones.
Definimos al algoritmo como un mtodo para resolver un problema. Aunque la popularizacin
del trmino ha llegado con el advenimiento de la era informtica, algoritmo proviene de
Mohammed al-KhoWrizmi, matemtico persa que vivi durante el siglo IX y alcanz gran
reputacin por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir
nmeros decimales; la traduccin al latn del apellido en la palabra algorismus deriv
posteriormente en algoritmo. Seala, , que Euclides, matemtico griego (del siglo IV a.C.)
quien invent un mtodo para encontrar el mximo comn divisor de dos nmeros, se considera
con Al-KhoWrizmi el otro gran padre de la algoritmia
(Ciencia que trata de los algoritmos).1
Hacemos un sealamiento histrico con respecto a Niklaus Wirth, inventor de Pascal, Modula2 y Oberon, profesor quien titul uno de sus ms famosos libros, Algoritmos+Estructuras de
datos=Programas, sealandonos que slo se puede llegar a realizar un buen programa con el
diseo de un algoritmo y una correcta estructura de datos.
La resolucin de un problema exige el diseo de un algoritmo que resuelva el Mismo. La
propuesta para la resolucin de un problema es la siguiente

Figura 1. Resolucin de un problema.


Los pasos para la resolucin de un problema son:
1.- Diseo del algoritmo, describe la secuencia ordenada de pasos, sin ambigedades, que
conducen a la solucin de un problema dado. (Anlisis del problema y desarrollo del
algoritmo).
2.- Expresar el algoritmo como un programa en un lenguaje de programacin adecuado. (Fase
de codificacin).
3.- Ejecucin y validacin del programa por computadora.
Para llegar a la resolucin de un problema es necesario el diseo previo de un algoritmo, de
modo que sin algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan
como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en
un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo,
el algoritmo ser siempre el mismo. As, por ejemplo, en una analoga con la vida diaria, la
receta de un platillo de cocina se puede expresar en espaol, ingls o francs, pero cualquiera
que sea el lenguaje, los pasos para la elaboracin, del mismo se realizarn sin importar el
idioma del cocinero.
Asignatura: Anlisis y Complejidad de algoritmos
Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes que


los lenguajes de programacin o las computadoras. Un Lenguaje de programacin es tan
slo un medio para expresar un algoritmo y una computadora es slo un procesador para
ejecutarlo. Tanto el lenguaje de programacin como la computadora son los medios para
obtener un fin: conseguir que el algoritmo se ejecute y se efecte el proceso correspondiente.
Dada la importancia del algoritmo en la ciencia de la computacin, un aspecto importante ser
el diseo de algoritmos.
Enfatiza que el diseo de la mayora de los algoritmos requiere creatividad y conocimientos
profundos de la tcnica de programacin. En esencia, la solucin de un problema se puede
expresar mediante un algoritmo. 2
1.1 Caractersticas de los algoritmos
Las caractersticas fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o
sea, debe tener un nmero finito de pasos
La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. Por
ejemplo, en el clculo de la edad de una persona, conociendo su ao de nacimiento, la
definicin del algoritmo, quedara de la siguiente manera:
Entrada: la edad de la persona, informacin del ao de nacimiento y el actual. Proceso: realizar
la diferencia del ao actual menos el ao de nacimiento. Salida: visualizacin del resultado
generado. Es decir, el resultado es la edad.
Se emplea un lenguaje natural describiendo paso a paso el algoritmo en cuestin.
En la realizacin del algoritmo aplicar sus tres caractersticas: preciso, definido y finito.
Por ejemplo algoritmo para conocer si el promedio de un alumno es aprobatorio o no teniendo
como referencia que alumno cursa 5 materias y adems que el promedio mnimo aprobatorio es
7.0.
1.- inicio
2.- solicitar las cinco calificaciones del alumno
3.-sumar las cinco calificaciones del alumno
4.- El resultado del paso 3 dividirlo entre cinco
5.- si el resultado del paso 4 es mayor o igual a 7.0 entonces
5.1 Visualizar Alumno aprobado si_no
5.2 Visualizar Alumno reprobad in_si
6.- fin
En el algoritmo anterior se dio solucin al planteamiento bsico del clculo del promedio de un
alumno. Se observa que los pasos del algoritmo tienen un nmero que conforme se va
describiendo la secuencia, ese nmero se va incrementando. Es importante destacar que todo
algoritmo es finito, es decir, as como tiene un inicio debe tener un fin, lo que se observa en los
pasos 1 y 6.
Asignatura: Anlisis y Complejidad de algoritmos
Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

El lenguaje que se emplea es de lo ms natural. En el ejemplo se ilustra la precisin de cada


una de las actividades, no se prestan a confusin. As mismo podr notarse que en el ejemplo,
por su naturaleza existi la necesidad de tomar decisiones, es por ello el empleo de las palabras
reservadas (si- entonces-sino if-then-else) las cuales se emplean para la seleccin o toma de
decisiones.
En el paso 5.1 y 5.2 se implementa lo que se conoce como (sangrado o justificacin) en la
escritura de algoritmos, que no es ms que una tabulacin, estrategia recomendada tanto en la
escritura de stos, como en la captura de programas de computadora, ya que faciliten la lectura
y permite un anlisis ms fluido de lo escrito.
1.2 Representacin grfica de los algoritmos
Para la representacin grfica del algoritmo debe emplearse un mtodo que sea independiente
del lenguaje de programacin elegido.
sealamos que para conseguir este objetivo se precisa que el algoritmo sea representado
grfica o numricamente, de modo que las sucesivas acciones no dependan de la sintaxis de
ningn lenguaje de programacin, sino que la descripcin se emplee para su transportacin en
un programa.
Los mtodos usuales para representar un algoritmo son:
1.- Diagrama de flujo.
2.- Diagrama N-S (Nassi-Schneiderman).
3.- Lenguaje de especificacin de algoritmos: pseudocdigo.
4.- Lenguaje espaol, ingls.
5.- Frmulas.
El mtodo 4 y 5 no son fciles de programar. Un algoritmo no puede ser representado por una
simple frmula.
Los diagramas de flujo tambin son conocidos como flowchart es una tcnica de programacin
de representacin de algoritmos antige y muy utilizada. Un diagrama de flujo, Jayanes
Aguilar, lo define como: un diagrama que utiliza los smbolos (cajas) estndar mostrados en la
tabla 1 y que tiene los pasos de un algoritmo escritos en esas cajas unidas por flechas,
denominadas lneas de flujo, que indican la secuencia en que se debe ejecutar.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

La figura 2 es un diagrama de flujo bsico. Los smbolos estndar normalizados por ANSI
(abreviatura de American National Standars Institute) son muy variados

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

Cada smbolo visto previamente indica el tipo de operacin a ejecutar y el diagrama de


flujo ilustra grficamente la secuencia en la que se ejecutan las operaciones.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

CAPITULO II: DEFINICIN Y SOLUCIN DE PROBLEMAS


Se explicar y ejemplificar la metodologa para la definicin y solucin de problemas.
Sealamos que el proceso de resolucin de problemas con una computadora conduce a la
escritura de un programa y a su ejecucin en la misma. Reconoce que el proceso de diseo
de un programa es un proceso creativo, en el cual se puede considerar una serie de fases o
pasos comunes, que generalmente deben seguir los programadores.
Las fases de resolucin de un problema con computadora son:
Anlisis del problema.
Diseo del algoritmo.
Codificacin.
Compilacin y ejecucin.
Verificacin.
Depuracin.
Mantenimiento.
Documentacin.
2.1 Anlisis
El problema se analiza teniendo presente la especificacin de los requisitos dados por el
cliente de la empresa o por la persona que se encarga del programa.
2.2 Diseo
Una vez analizado el problema, se disea una solucin que conduzca a un algoritmo que
resuelva el problema.
2.3 Codificacin (Implementacin)
La solucin se escribe en la sintaxis del lenguaje de alto nivel (por ejemplo, C++) y se
obtiene un programa.
2.4 Compilacin Ejecucin y verificacin
El programa se ejecuta, se comprueba rigurosamente y se eliminan todos los errores que
puedan aparecer.
2.5 Depuracin y mantenimiento
El programa se actualiza y modifica cada vez que sea necesario, de modo que se cumplan
todas las necesidades de cambio de sus usuarios.
2.6 Documentacin
Escritura de las diferentes fases del ciclo de vida del software, especficamente, el anlisis,
diseo y codificacin, unidos a manuales de usuario y de referencia, as como normas para
el mantenimiento.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

10

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

CAPITULO III: ALGORITMOS COTIDIANOS


El alumno podr identificar y explicar las caractersticas de los algoritmos ms comunes
Se refiere a los algoritmos que ayudan a resolver problemas diarios, y que las personas
llevan a cabo sin darse cuenta de que estn siguiendo una metodologa para resolverlos.
Algunos ejemplos son:
* Disear un algoritmo para cambiar una llanta a un auto:
1. Inicio.
2. Conseguir un gato hidrulico.
3. Levantar el auto con el gato.
4. Aflojar los tornillos de las llantas.
5. Retirar los tornillos de las llantas.
6. Quitar la llanta.
7. Colocar la llanta de repuesto.
8. Colocar los tornillos.
9. Apretar los tornillos.
10. Bajar el gato hidrulico.
11. Retirar el gato hidrulico.
12. Fin
* Disear un algoritmo que compare el mayor de dos nmeros.
1. Inicio
2.

Obtener el primer nmero (entrada), denominado NUMERO1.

3. Obtener el segundo nmero (entrada), denominado NUMERO2.


3.1 Si NUMERO1 es igual a NUMERO 2 entonces
3.2 Visualizar son iguales
4. Si NUMERO1 es mayor a NUMERO2 entonces
4.1 NUMERO1 es mayor
4.2 SINO
4.3 NUMERO2 es mayor
5. Fin
Asignatura: Anlisis y Complejidad de algoritmos
Carrera: Ingeniera de sistemas

11

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

* Disear un algoritmo que permita obtener un refresco de una mquina automtica


expendedora de bebidas embotelladas.
1. Inicio
2. Verificar el panel de bebidas, ubicando la bebida deseada.
3. Identificar el costo de la bebida.
4. Introducir en la ranura correspondiente la cantidad monetaria que as corresponda a la
bebida deseada, de preferencia introducir la cantidad exacta.
5. Pulsar el botn que corresponda a bebida deseada.
6. Si existe producto entonces
a) En la bandeja de salida saldr la bebida seleccionada.
b) Sino
c) En el panel se visualizar producto agotado.
7. Si cantidad introducida es igual al precio de producto entonces
a) No devolver cambio.
8. Si cantidad introducida es mayor al precio de producto entonces
a) Devolver el efectivo de diferencia en la bandeja pertinente.
9. Si cantidad introducida es menor al precio de producto entonces
a) En el panel visualizar efectivo insuficiente.
10. Fin
CAPITULO IV: LENGUAJE DE PROGRAMACION
Lenguajes de Programacin
Sealamos que los lenguajes de programacin sirven para escribir programas que permitan
la comunicacin usuario/mquina. Unos programas especiales llamados traductores
(compiladores o intrpretes) convierten las instrucciones escritas en lenguajes de
programacin en instrucciones escritas en lenguajes mquina (0 y 1, bits) que sta pueda
entender.
Agrega que los programas de utilidad facilitan el uso de la computadora. Un buen ejemplo
es un editor de textos que permite la escritura y edicin de documentos.
Los programas que realizan tareas concretas; nminas, contabilidad, anlisis estadstico,
etc., se denominan programas de aplicacin. 5
Peter Norton, en su libro titulado Introduccin a la Computacin, menciona que
programar es una manera de enviar instrucciones a la computadora. Para estar seguros de
que la computadora (y otros programadores) pueden entender esas instrucciones, los
programadores usan lenguajes definidos para comunicarse.
Estos lenguajes tienen reglas del tipo que la gente usa para comunicarse entre s. Por
ejemplo, cita, la informacin que debe ser proporcionada en un cierto orden y estructura,
se usan los smbolos y con frecuencia se requiere informacin.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

12

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

El nico lenguaje que una computadora comprende es su lenguaje mquina. Sin embargo,
la gente tiene dificultad para entender el cdigo mquina. Como resultado, los
investigadores desarrollaron primero un lenguaje ensamblador luego lenguajes de nivel
superior. Esta evolucin representa una transicin de hileras de nmeros (cdigo
mquina) a secuencias de comandos que se pueden leer como cualquier otro lenguaje.
Los lenguajes de nivel superior se enfocan en lo que el programador quiere que haga la
computadora, no en cmo la computadora ejecutar esos comandos.
4.1 Clasificacin de los Lenguajes de Programacin
Lenguajes mquina: son los lenguajes
bsicos. Consisten en hileras de nmeros y son
definidos por el diseo del hardware. En otras palabras, el lenguaje mquina para una
Macintosh no es el mismo que el de una PC. Una computadora comprende slo su lenguaje
mquina original, los comandos de su equipo de instruccin. Estos comandos le
dan
instrucciones
a
la computadora para realizar operaciones elementales: cargar,
almacenar, aadir y sustraer. Esencialmente, el cdigo mquina consiste por completo de
los 0 y 1 del sistema numrico binario.
Lenguajes ensambladores, fueron desarrollados usando nemotcnicos similares a las
palabras del idioma ingls. Los programadores trabajan en editores de texto, que son
simples procesadores de palabras, para crear archivos fuente. Los archivos fuente contienen
instrucciones para que la computadora las ejecute, pero tales archivos deben primero
introducirse al lenguaje mquina.
Los investigadores crearon programas traductores llamados ensambladores para realizar
la conversin. Los lenguajes ensambladores an son altamente detallados y secretos, pero
leer un cdigo ensamblador es mucho ms rpido que batallar con el lenguaje mquina. Los
programadores rara vez escriben programas de tamao significativo en un lenguaje
ensamblador. (Una excepcin a esta regla se encuentra en los juegos de accin en donde la
velocidad del programa es decisiva.) En su lugar, se usan lenguaje ensambladores para
afinar partes importantes de programas escritos en un lenguaje de nivel superior.
Los lenguajes de alto nivel fueron desarrollados para hacer ms fcil la programacin.
Estos lenguajes son llamados de alto nivel porque su sintaxis es ms cercana al lenguaje
humano que el cdigo del lenguaje mquina o ensamblador. Usan palabras familiares en
lugar de comunicar en el detallado embrollo de los dgitos que comprenden las
instrucciones de la mquina. Para expresar las operaciones de la computadora estos
lenguajes usan operadores, como los smbolos de ms o menos, que son los componentes
familiares de las matemticas. Como resultado, leer, escribir y comprender programas de
cmputo es ms fcil con un programa de alto nivel, a pesar de que las instrucciones
todava deba ser introducidas al lenguaje mquina antes de que la computadora pueda
comprenderlas y llevarlas a cabo.
Los comandos escritos en cualquier lenguaje ensamblador o de alto nivel deben ser
traducidos de nuevo a cdigo mquina antes de que la computadora pueda ejecutar los
comandos. Estos programas traductores se denominan compiladores. Entonces,
normalmente un programa debe ser compilado o traducido a cdigo mquina antes de
que se ejecute. Los archivos de programas compilados se vuelve n ejecutables.
A continuacin se recaba algunos de los lenguajes de programacin de alto nivel ms
importantes.
Los lenguajes de programacin son tratados a veces en trminos de generaciones. Se
considera que cada generacin sucesiva contiene lenguajes que son ms fciles de usar y
ms poderosos que los de la generacin previa. Los lenguajes mquina son considerados de
la primera generacin, y los ensambladores de segunda generacin. Los lenguajes
de alto nivel comenzaron en la tercera generacin.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

13

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

4.1.1 Lenguajes de tercera generacin


Los lenguajes de tercera generacin, seala Norton, tienen la capacidad de soportar
programacin estructurada, lo cual significa que proporcionan estructuras explcitas para
ramas y ciclos. Adems, debido a que son los primeros lenguajes que usan fraseo similar al
ingls, compartir el desarrollo entre los programadores tambin es ms fcil. Los
integrantes del equipo pueden leer el cdigo de cada uno de los dems y comprender la
lgica y el flujo de control del programa.
Estos programas tambin son porttiles. En oposicin a los lenguajes ensambladores, los
programas en estos lenguajes pueden ser compilados para ejecutarse en numerosos CPU.
Los lenguajes de tercera generacin incluyen:
FORTRAN
COBOL
BASIC
PASCAL
C
C++
JAVA
4.1.2 Lenguajes de cuarta generacin
Los lenguajes de cuarta generacin (4GL) son principalmente lenguajes de programacin
para propsitos especiales, que son ms fciles de usar que los de tercera generacin. Con
los 4GL los programadores pueden crear aplicaciones rpidamente. Como parte del proceso
de desarrollo, los programadores pueden usar los 4GL para desarrollar prototipos de una
aplicacin rpidamente. Los prototipos dan a los equipos y clientes una idea de cmo se
vera y funcionara la aplicacin antes de que el cdigo este
terminado7.
Como resultado, cada uno de los involucrados en el desarrollo de la aplicacin puede
proporcionar retroalimentacin sobre aspectos estructurales y de diseo al principio del
proceso.
Una sola declaracin en un 4GL logra mucho ms de lo que era posible con una declaracin
similar en un lenguaje de generacin anterior. A cambio de esta capacidad de trabajar ms
rpido, los programadores han demostrado disposicin para sacrificar parte de la
flexibilidad disponible con los lenguajes anteriores.
Muchos 4GL tienen capacidad para bases de datos, lo que significa que se puede crear con
ellos programas que acten como enlaces con bases de datos.
Dentro de los lenguajes de cuarta generacin se incluyen:
Visual Basic
Lenguajes de macros especficos para una aplicacin
Ambientes de autora

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

14

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

4.1.3 Lenguajes de quinta generacin


Sealamos que la quinta generacin de los lenguajes de cmputo incluye inteligencia
artificial y sistemas expertos. Estos sistemas tienen por objeto
Pensar y anticipar las necesidades de los usuarios, en lugar de slo ejecutar un
Conjunto de rdenes. A pesar de que los sistemas de inteligencia artificial se estn
volviendo ms difciles de desarrollar de lo que se esperaba originalmente, lo
expertos afirmaban que los sistemas, al igual que las redes nerviosas, pronto sern capaces
de tomar hechos y luego usar un conjunto de datos para formular una respuesta apropiada,
exactamente como lo realiza el ser humano.
4.2 Componentes de los lenguajes de programacin
Se define a un Intrprete, como un traductor que toma un programa fuente, lo traduce, y a
continuacin lo ejecuta. Los programas intrpretes clsicos, como BASC, prcticamente ya
no se utilizan, aunque se puede encontrar alguna computadora que opere con la versin
QBasic bajo el Sistema Operativo DOS que corre en las computaras personales. Sin
embargo, est muy extendida la versin interpretada del Lenguaje Smalltalk, un lenguaje
orientado a objetos puro. Los intrpretes han vuelto a renacer con la aparicin de Java, ya
que para entender el cdigo en bytes (bytecode) al que traduce un compilador se necesita
un intrprete.

Despus que se ha diseado el algoritmo y escrito el programa en un papel, se debe


comenzar el proceso de introducir el programa en un archivo (fichero) en el disco duro de
la computadora. La introduccin y modificacin del programa en un archivo se hace
utilizando un editor de texto o simplemente un editor, un programa que viene en la
computadora. El aprendizaje de cmo utilizar un editor hace la tarea de introducir un
programa una tarea muy fcil.
El programa ya sea escrito en C o en Java, o en cualquier otro lenguaje, pero ni C ni Java
son lenguajes mquina, por el contrario son lenguajes de alto nivel diseados para hacer
ms fcil la programacin que utilizando el lenguaje mquina. La computadora no
entiende los lenguajes de alto nivel. En consecuencia, un programa escrito en un lenguaje
de alto nivel debe ser traducido a un lenguaje que la mquina pueda comprender. Los
lenguajes que la computadora puede comprender se llaman lenguajes de bajo nivel. La
traduccin de un programa escrito en un lenguaje de alto nivel, como C++ o Java, a un
lenguaje que pueda entender la computadora se hace mediante otro programa conocido
como compilador.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

15

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

Los lenguajes de bajo nivel que la computadora puede entender directamente se conocen
como lenguajes ensamblador o lenguaje mquina. En realidad, aunque son muy similares y
en ocasiones se les considera sinnimos, tienen algunas pequeas diferencias. El lenguaje
que la computadora puede comprender directamente se denomina lenguaje mquina. El
lenguaje ensamblador es casi la misma cosa, pero necesita un paso adicional para que la
traduccin pueda ser entendida por la mquina. Si un compilador traduce el programa de
alto nivel a algn lenguaje de bajo nivel, no es exactamente lenguaje mquina, se necesita,
por tanto, una pequea traduccin adicional antes de ser ejecutado en la computadora, pero
normalmente este proceso suele ser automtico y no es problemtico.
En esencia, un compilador es un programa que traduce un programa en lenguaje de
alto nivel, tal como un programa de C/C++/Java, en un programa de un lenguaje ms
sencillo que la computadora puede comprender ms o menos directamente.
La compilacin y sus fases
La compilacin es el proceso de traduccin de programas fuente a programas objeto. El
programa objeto obtenido de la compilacin se traduce normalmente a cdigo mquina.
Para conseguir el programa mquina real se debe utilizar un programa llamado montador o
enlazador (linker). El proceso de montaje conduce a un programa en lenguaje mquina
directamente ejecutable. Figura 1.4.3.
El proceso
de ejecucin de un programa escrito en un lenguaje de
programacin (por ejemplo, C) y mediante un compilador suele tener los siguientes pasos:
1. Escritura del lenguaje mquina con un editor (programa que permite a una computadora
actuar de modo similar a una mquina de escribir electrnica) y guardarlo en un dispositivo
de almacenamiento (por ejemplo, un disco).
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador C.
4. Verificar y corregir errores de compilacin (listado de errores).
5. Obtencin del programa objeto.
6. El enlazador (linker) obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendr la salida del programa.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

16

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

17

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

CAPITULO V: DISEO DE UN ALGORITMO


El participante obtendr los conocimientos para explicar las caractersticas de los elementos
de un algoritmo. Resolver algoritmos matemticos, por ejemplo, de clculo de permetros,
de reas, clculo de promedios.
sealamos que en la etapa de anlisis del proceso de programacin se determina, qu
hace el programa? En la etapa de diseo se determina cmo hace el programa la tarea
solicitada. Los mtodos ms eficaces para el proceso de diseo se basan en el conocido
por divide y vencers. Es decir, la resolucin de un problema complejo se divide en su
problemas y despus dividir stos en otros de nivel ms bajo, hasta que pueda ser
implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como
diseo descendente (top-down) o modular. El proceso de romper el problema en cada etapa
y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo.
Cada subprograma es resuelto mediante un mdulo (subprograma) que tiene un solo punto
de entrada y un solo punto de salida.
Cualquier programa bien diseado consta de un programa principal (el mdulo de nivel
ms alto) que llama a subprogramas (mdulos de nivel ms bajo) que a su vez pueden
llamar a otros subprogramas. Los programas estructurados de esta forma se dice que tienen
un diseo modular y el mtodo de romper el programa en mdulos ms pequeos se
llama programacin modular. Los mdulos pueden ser planeados, codificados,
comprobados y depurados
Independientemente (incluso por diferentes programadores) y a continuacin combinarlos
entre s. El proceso implica la ejecucin de los siguientes pasos hasta que el programa se
termina:
1.- Programar un mdulo.
2.- Comprobar el mdulo.
3.- Si es necesario, depurar el mdulo.
4.- Combinar el mdulo con los mdulos anteriores.
Mencionamos que el proceso que convierte los resultados del anlisis del problema en un
diseo modular con refinamientos sucesivos que permitan una posterior traduccin a un
lenguaje se denomina diseo del algoritmo.
Algo muy importante que seala Joyanes Aguilar, se centra en que el diseo del algoritmo
es independiente del lenguaje de programacin en el que se vaya a codificar
posteriormente.
Herramientas de programacin15
En su libro de fundamentos de programacin, Joyanes Aguilar, seala que las dos
herramientas ms utilizadas comnmente para disear algoritmos son: diagramas de flujo y
pseudocdigo
5.1 Diagramas de flujo
Un diagrama de flujo (flowchart) es una representacin grfica de un algoritmo. Los
smbolos utilizados en estos diagramas, descritos en lecturas anteriores, han sido
normalizados por el Instituto Norteamericano de Normalizacin (ANSI).
Pseudocdigo
El pseudocdigo es una herramienta de programacin en la que las instrucciones se
escriben en palabras similares al ingls o espaol, que facilitan tanto la escritura como la
lectura de programas. En esencia, el pseudocdigo se puede definir como un lenguaje de
especificaciones de algoritmos.
Asignatura: Anlisis y Complejidad de algoritmos
Carrera: Ingeniera de sistemas

18

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

Aunque no existen reglas para escritura del pseudocdigo es espaol, se utilizan


palabras reservadas bsicas, estas palabras son traduccin libre de palabras reservadas de
lenguajes como C, Pascal, etc.
Ejemplo: Diagrama de flujo, que permite calcular el promedio de dos materias.

Asignatura: Anlisis y Complejidad de algoritmos


Carrera: Ingeniera de sistemas

19

Ttulo: Anlisis y diseo de algoritmos


Autor: Mauricio Flores Lpez Elver Vladimir Colque Ugarte
__________________________________________________________________________________________________________

CONCLUCION
En la actualidad el ser humano se enfrenta a distintas situaciones: de aprendizaje, de
retroalimentacin y en muchas ocasiones dificultades que con la experiencia o por la
eleccin de la alternativa apropiada, va dando solucin.
Es por ello que a menudo se emplea cierta metodologa para la solucin de los problemas
en lugar de actuar de forma imprevista, siendo una caracterstica relevante el anlisis de los
mismos. La humanidad de forma natural emplea en la vida cotidiana ciertas conductas que
son rutinarias, siguen un orden, una secuencia y pretenden alcanzar un objetivo.
Este conjunto de acciones rutinarias que se llevan a cabo y forman parte ya de la vida
cotidiana del ser humano, se conocen como algoritmos, los cuales son aplicables en los
mbitos que as se necesiten.
El mbito de mayor de aplicacin y de primordial importancia es en la solucin de
problemas mediante computadora. Donde el elemento base para lograr dicha solucin
es el algoritmo propio.
Desarrollar un algoritmo involucra tener un conocimiento base sobre las caractersticas y
elementos que debe contener, con el fin de cumplir sus cualidades: finito, definido y
preciso.
Es importante sealar que en el mbito de la programacin antes de resolver el problema
mediante la computadora se recomienda realizar primero el algoritmo, ya que es aqu donde
se encuentra la solucin universal de la problemtica en cuestin.
Y para codificar dicho algoritmo slo basta en adaptar cada uno de sus elementos, al
lenguaje de programacin en el que se desee implementar.
Para resolver un problema se pueden desarrollar diversos algoritmos, existen en ocasiones
mltiples soluciones, pero dentro de ellas existen las que son ms eficientes y es aqu donde
la habilidad del desarrollador juega un papel importante. Por lo que la prctica continua
contribuye a la mejora del desarrollo.
BIBLIOGRAFIA
Pginas web
http://es.wikipedia.org/wiki/Algoritmo
http://www.algoritmia.net/
http://pjsml.50megs.com/java/algoritmos.html
http://www.monografias.com/trabajos/algoritmo/algoritmo.shtml
http://www.carlospes.com/curso_de_algoritmos/
http://www.desarrolloweb.com/manuales/67/
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html
http://www.lcc.uma.es/~av/Libro/indice.html
http://ayura.udea.edu.co/~jlsanche/index.htm
http://www.algoritmia.org/index.php
http://www.algoritmos.tk/
Asignatura: Anlisis y Complejidad de algoritmos
Carrera: Ingeniera de sistemas

20