Conceptos Básicos de Algoritmos

100% encontró este documento útil (3 votos)
542 vistas17 páginas
El documento trata sobre conceptos básicos para la formulación de algoritmos. Explica que los algoritmos son fundamentales para el diseño de programas y que su uso facilita desarrollar la ca…

CONCEPTOS BASICOS PARA LA FORMULACION DE

ALGORITMOS
El desarrollo de algoritmos es un tema fundamental en el diseo
de programas por lo cual el alumno debe tener buenas bases
que le sirvan para poder desarrollar de manera fcil y rpida sus
programas.
El uso de algoritmos, facilitar desarrollar la capacidad analtica
y creadora del alumno, para de esta manera mejorar su destreza
en la elaboracin de algoritmos que sirven como base para la
codificacin de los diferentes programas que tendr que
desarrollar a lo largo de la carrera.
Es primordial empezar definiendo lo que es la palabra, algoritmo
La palabra algoritmo se deriva de la traduccin al latn de la
palabra rabe Alkhowarizmi, nombre de un matemtico y
astrnomo rabe que escribi un tratado sobre la manipulacin
de nmeros y ecuaciones en el siglo IX.
Se define como una serie de pasos organizados que describen el
proceso que se debe seguir, para dar solucin a un problema
especfico.
TIPOS DE ALGORITMOS
Teniendo en cuenta la forma como describen el proceso, se
pueden clasificar en:
Cualitativos: Son aquellos en los que se describen los pasos
utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos
numricos para definir los pasos del proceso.
Las principales caractersticas que debe tener un buen
algoritmo son:
1. Ser preciso: esto significa que las operaciones o pasos del
algoritmo deben desarrollarse en un orden estricto, ya que el
desarrollo de cada paso debe obedecer a un orden lgico.

2. Ser definido. Ya que en el rea de programacin, el algoritmo


es el paso previo fundamental para desarrollar un programa, es
necesario tener en cuenta que el computador solo desarrollar
las tareas programadas y con los datos suministrados; es decir,
no puede improvisar y tampoco inventar o adivinar el dato
que necesite para realizar un proceso. Por eso, el algoritmo debe
estar plenamente definido; esto es, que cuantas veces se
ejecute, el resultado depende estrictamente de los datos
suministrados. Si se ejecuta con un mismo conjunto de datos de
entrada, el resultado deber ser siempre el mismo.
3. Ser finito: esta caracterstica implica que el nmero de pasos
de un algoritmo, por grande y complicado que sea el problema
que soluciona, debe ser limitado. Todo algoritmo, sin importar el
nmero de pasos que incluya, debe llegar a un final. Para hacer
evidente esta caracterstica, en la representacin de un
algoritmo siempre se incluyen los pasos inicio y fin.
4. Presentacin formal: para que el algoritmo sea entendido por
cualquier persona interesada es necesario que se exprese en
alguna de las formas comnmente aceptadas; pues, si se
describe de cualquier forma puede no ser muy til ya que solo lo
entender quien lo dise. Las formas de presentacin de
algoritmos son: el pseudocdigo, diagrama de flujo y diagramas
de Nassi/Schneiderman, entre otras. En esta publicacin se
propondr una notacin algortmica y se darn las equivalencias
entre la propuesta y las existentes y tambin con las sentencias
de los lenguajes de programacin, en particular Pascal y C.
5. Correccin: el algoritmo debe ser correcto, es decir debe
satisfacer la necesidad o solucionar el problema para el cual fue
diseado. Para garantizar que el algoritmo logre el objetivo, es
necesario ponerlo a prueba; a esto se le llama verificacin o
prueba de escritorio.
6. Eficiencia: hablar de eficiencia o complejidad de un algoritmo
es evaluar los recursos de cmputo que requiere para almacenar
datos y para ejecutar operaciones frente al beneficio que ofrece.
En cuanto menos recursos requieren ser ms eficiente el
algoritmo. La vida cotidiana est llena de soluciones

algortmicas, algunas de ellas son tan comunes que no se


requiere pensar en los pasos que incluye la solucin.
La mayora de las actividades que se realizan diariamente estn
compuestas por tareas ms simples que se ejecutan en un orden
determinado, lo cual genera un algoritmo. Muchos de los
procedimientos utilizados para desarrollar tareas cotidianas son
algortmicos, sin embargo, esto no significa que todo lo que se
hace est determinado por un algoritmo. El primer paso en el
diseo de un algoritmo es conocer la temtica a tratar, el
segundo ser pensar en las actividades a realizar y el orden en
que deben ejecutarse para lograr el objetivo, el tercero y no
menos importante es la presentacin formal.
Propiedades de los algoritmos
1. Especificacin precisa de la entrada: El algoritmo debe
dejar claro el nmero y tipo de datos de entrada y las
condiciones iniciales que deben cumplir esos valores de
entrada para conseguir que las operaciones tengan xito.
2. Especificacin precisa de cada instruccin: cada etapa del
algoritmo debe estar definida con precisin, no debe haber
ambigedades sobre las acciones que se deben ejecutar en
cada momento.
3. Un algoritmo debe ser exacto y correcto: Un algoritmo se
espera que resuelva un problema y se debe poder demostrar
que eso ocurre. Si las condiciones de entrada se cumplen y se
ejecutan todos los pasos el algoritmo entonces debe producir
la salida deseada.
4. Un algoritmo debe tener etapas bien definidas y concretas,
un nmero finito de pasos, debe terminar y debe estar claro la
tarea que el algoritmo debe ejecutar.
5. Debe ser fcil de entender, codificar y depurar.
6. Debe hacer uso eficiente de los recursos de la computadora
Finitud: en longitud y duracin. Precisin: Determinar sin
ambigedad las operaciones que se deben ejecutar.

Efectividad: las reglas pueden ejecutarse sin el ordenador


obtenindose el mismo resultado. Generalidad: Resolver una
clase de problema y no un problema particular.
Entradas y salidas: puede tener varias entradas pero una sola
salida, el resultado que se debe obtener.
LENGUAJE ALGORTMICO (Lxico)
Es una serie de smbolos y reglas que se utilizan para describir
de manera explcita un proceso, que servirn de apoyo para
describir las soluciones que aqu se plantean.
Teniendo en cuenta la forma en que describen el proceso,
existen dos tipos de lenguajes algortmicos:
Grficos: Es la representacin grfica de las operaciones que
realiza un algoritmo (diagrama de flujo).
No Grficos: Representa en forma descriptiva las
operaciones que debe realizar un algoritmo (pseudocdigo).
Para escribir un algoritmo deben seguirse un conjunto de
pasos bsicos
1. Comprender el problema
2. Identificar los elementos a incluir en el lxico: constantes,
tipos, variables y acciones.
3. Encontrar la forma de secuenciar las acciones para obtener
el resultado, esto es, alcanzar las poscondiciones a partir de
un estado inicial que cumple con la precondicin. Para
establecer el orden de las acciones los lenguajes de
programacin proporcionan mecanismos de composicin:
Secuenciacin, anlisis de casos, iteracin y recursin.
4. Al organizar las acciones en el tercer paso puede ocurrir
que se detecte que faltan elementos en el lxico o que algn
aspecto del problema no ha sido bien comprendido lo cual
requerira volver a los pasos anteriores.
5. Nunca la solucin aparece en el primer intento, en general
aparece en un proceso cclico, entonces se debe:

6. Escribir el lxico,
a. escribir la primera versin,
b. incluir en el lxico nuevos elementos que faltaban,
c. escribir la nueva versin del algoritmo y as sucesivamente
Estructura de un algoritmo
LEXICO {Lxico Global del algoritmo}
{Declaracin de tipos, constantes, variables y acciones}
Accin 1
PRE {Precondicin de la accin 1}
POS {Poscondicin de la accin 1}
LEXICO {Lxico local, propio de la accin 1}

Declaraciones locales
ALGORITMO {Implementacin de la accin 1} {Secuencia de
instrucciones de la accin 1}
FIN {Fin implementacin algoritmo de la accin 1}
ALGORITMO
PRE {Precondicin del algoritmo principal}
POS {Poscondicin del algoritmo principal} {Secuencia de
instrucciones del algoritmo principal}
FIN {Fin del algoritmo principal}

VENTAJAS Y DESVENTAJAS PARA LA


FORMULACION DE ALGORITMOS
Ventajas
Los algoritmos son la esencia de la informtica, son uno
de los centros de inters de muchas, si no todas, de las
reas del campo de la informtica.
Mejora la claridad de la solucin de un problema.
Favorecen la compresin de un proceso
Puedes trabajar en orden.
Te redacta en orden paso a paso lo que hay que hacer.
Ayuda a resolver ms fcil y rpido los problemas.
Disminuye sensiblemente el riesgo de errores.
Favorece el obtener el mximo de informacin.

Desventajas
Hay textos que desarrollan los algoritmos, mediante
diversos tipos de programas, por ejemplo: el lenguaje de
programacin C++, pero para comprender las letras
deben poseer al menos un ao de experiencia en ese
lenguaje de programacin de alto y bajo nivel.
Muchos algoritmos interesantes llevan implcitos
complicados mtodos de organizacin de los datos
utilizados en el calendo.
Con frecuencia sucede que muchos de los algoritmos que
se van a utilizar son fciles de implementan una vez que
se ha descompuesto el programa, sin embargo, en la
mayor parte de los casos, existen unos pocos algoritmos
cuya eleccin es crtica porque su ejecucin ocupara la
mayora de los recursos del sistema.
La eleccin del mayor algoritmo para una tarea particular
puede ser un proceso muy complicado y con frecuencia
conllevara un anlisis matemtico sofisticado.
Actualmente se est estudiando en la informtica, como
seleccionar el algoritmo que conduzca a la mejor

implementacin pues para la mayora de los problemas


existen varios algoritmos diferentes.
Seguiras siempre un mismo patrn.
Se perdera la autenticidad de cada quien.

DIFERENTES METODOS PARA


REPRESENTAR UN ALGORITMO
As como en nuestra vida cotidiana podemos expresar una
misma idea de diversas maneras, de igual forma puedes
construir los Algoritmos.
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 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.
Los algoritmos pueden ser creados de dos formas:
1) Seudocdigo.- Es un conjunto pequeo y claro de
instrucciones; en secuencia, que permite llevar a cabo una
tarea.
2) Diagrama de flujo.- Es la representacin de la secuencia, a
travs de smbolos, de la tarea que se va a realizar.

PSEUDOCODIGO
Definicin
En pseudocdigo se describen los algoritmos utilizando una
mezcla
de
lenguaje
comn,
con
instrucciones
de
programacin, palabras claves, etc. El objetivo es que el
programador se centre en la solucin lgica del algoritmo y no
en la implementacin en un lenguaje de programacin
concreto (con las posibles complicaciones en las reglas
sintcticas), o en otras palabras, slo ayudan a "pensar" un
programa antes de escribirlo en un lenguaje de programacin
formal.

Mucho se habla del pseudocdigo en las carreras de Analista


de Sistemas y Programacin. Pero no existe mucha
bibliografa al respecto.
Comencemos aclarando que no es una forma de
programacin. Se trata de una herramienta que los analistas
de sistemas utilizan para comunicar a los programadores la
estructura del programa que van a realizar, de forma de tener
una idea bien clara de lo que se necesita programar.
Digamos que el pseudocdigo es una forma de diagramar un
algoritmo para resolver un determinado problema, sin
atenerse a ningn lenguaje de programacin en especial.
Un algoritmo es un conjunto de procedimientos que permiten
resolver un problema.
En vez de escribir el programa directamente en un lenguaje
de programacin determinado (C, Basic, etc.), crearemos un
borrador entendible para todos, para luego de tener bien en
claro lo que se debe hacer, pasar a la programacin
propiamente dicha.

El pseudocdigo se refiere a crear un cdigo para orientar a


los programadores, pero sin la sintaxis ni la estructura propia
de ningn lenguaje.
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 utilizara para la codificacin del mismo.
Las principales caractersticas de este lenguaje son:
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:
Instrucciones primitivas
Instrucciones de proceso
Instrucciones de control
Instrucciones compuestas
Instrucciones de descripcin
Estructura a seguir en su realizacin:
Cabecera:
Programa:
Modulo:
Tipos de datos:
Constantes
Variables
Cuerpo:
Inicio
Instrucciones
Fin

Para comentar en pseudocdigo se le antepone al comentario


dos asteriscos (*)
EJEMPLO DE PSEUDOCODIGO

DIAGRAMA DE FLUJO
DIAGRAMA DE FLUJO
Es un esquema para representar grficamente un algoritmo.
Se basan en la utilizacin de diversos smbolos para
representar operaciones especficas, es decir, es la
representacin grfica de las distintas operaciones que se
tienen que realizar para resolver un problema, con indicacin
expresa el orden lgico en que deben realizarse.

Se les llama diagramas de flujo porque los smbolos utilizados


se conectan por medio de flechas para indicar la secuencia de
operacin. Para hacer comprensibles los diagramas a todas
las personas, los smbolos se someten a una normalizacin; es
decir, se hicieron smbolos casi universales, ya que, en un
principio cada usuario podra tener sus propios smbolos para
representar sus procesos en forma de Diagrama de flujo. Esto
trajo como consecuencia que slo aquel que conoca sus
smbolos, los poda interpretar. La simbologa utilizada para la
elaboracin de diagramas de flujo es variable y debe ajustarse
a un patrn definido previamente.
El diagrama de flujo representa la forma ms tradicional y
duradera para especificar los detalles algortmicos de un
proceso. Se utiliza principalmente en programacin, economa
y procesos industriales.
Para realizar los diagramas de flujo utilizamos distintas figuras
geomtricas en forma de caja de texto, que sirven para
distinguir el tipo de tareas que se ejecutan, las flechas indican
el flujo del proceso y se valen de determinada simbologa
especfica para facilitar su comprensin
Las siguientes son acciones previas a la realizacin del
diagrama de flujo:
Identificar las ideas principales al ser incluidas en el
diagrama de flujo. Deben estar presentes el autor o
responsable del proceso, los autores o responsables del
proceso anterior y posterior y de otros procesos
interrelacionados, as como las terceras 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.
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.
Tipos de diagramas de flujo
Formato vertical: En l, el flujo y 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.

SIMBOLOGIA DEL DIAGRAMA DE FUJO

REFERENCIAS
[Link]
[Link]
[Link]
q=simbologia+del+diagrama+de+flujo&newwindo
w=1&source=lnms&tbm=isch&sa=X&ei=pH1VPGzI4zpoATek4CwDw&ved=0CAcQ_AUoAQ&biw
=1366&bih=667#imgdii=_&imgrc=jTh3tDAI85w4G
M%253A%3BiG54stlDYXBJ7M%3Bhttps%253A
%252F%[Link]
%252F2012%252F09%[Link]
%3Bhttps%253A%252F
%[Link]%252Ftag
%252Fdiagrama-de-flujo-de-datos%252F
%3B1040%3B976
[Link]
[Link]
ales/4060024/Lecciones/Capitulo
%20I/[Link]
[Link]
[Link]
[Link]

Common questions

Con tecnología de IA

Algorithm representation methods significantly influence the debugging and improvement processes by framing how developers identify and address errors . Pseudocode allows programmers to focus on logical flaws without dealing with specific language syntax errors, facilitating early correction in the development phase . Flowcharts visually map out processes, helping quickly identify problematic loops or misplaced operations, which is crucial for debugging . This visual clarity simplifies recognizing inefficiencies or logical gaps that need addressing. Additionally, using formal languages can pinpoint syntax and semantic errors that are directly relatable to implementational details, but they may obscure more fundamental logical issues without careful analysis . Thus, using combinations or transitioning between representations can provide comprehensive error identification and resolution paths .

Different algorithmic languages and notations impact the expression and understanding of algorithms by providing varied methods of representing logical processes, each with its strengths and weaknesses . Languages like pseudocode abstract away specific syntax, focusing on logic and making the algorithms accessible to those unfamiliar with formal programming languages . Flowcharts offer visual representation, which enhances immediate understanding and communication through graphics . In contrast, formal languages like C, C++, or Pascal require precise syntax and semantic structures, which might introduce learning curves but result in more precise and machine executable expressions . Ultimately, the choice of notation depends on the audience and the stage of development, where human understanding or machine execution might be prioritized .

Flowcharts enhance the understanding and communication of algorithms by providing a graphical representation of the workflow or process . They use standardized symbols to represent different types of operations and the flow of control, which makes it easier to understand complex processes at a glance . By visually mapping out the sequence of steps, flowcharts help identify logical sequences and decision points, allowing for clearer communication among different stakeholders involved in the algorithm design, such as developers, analysts, and non-technical stakeholders . Furthermore, the visual depiction aids in pinpointing inefficiencies or errors in the workflow, making the editing of algorithm structures more intuitive .

Flowcharts provide visual clarity, making them advantageous over pseudocode when the goal is to quickly understand and communicate the overall sequence of operations and decision paths in an algorithm . The use of standardized symbols and visual flow connections allows stakeholders to intuitively grasp complex processes and identify logical errors or inefficiencies at a glance . They facilitate communication across diverse teams, including those with non-technical backgrounds, as the graphical representation transcends language barriers . In contrast, pseudocode is more detailed and closer to actual programming logic, making it beneficial when preparing for coding but potentially less effective at broad communication without prior programming knowledge .

Pseudocode offers several benefits in algorithm development. It provides a language-independent way to outline algorithms, allowing programmers to focus on the logical sequence of an algorithm without getting bogged down by syntax specific to a particular programming language . It acts as a bridge between human reasoning and machine code, simplifying the program's structure for analysis and communication among developers . Additionally, pseudocode allows for the representation of a detailed algorithmic solution that approximates the future code but without imposing syntactic constraints. This encourages clearer thinking and facilitates easier debugging and understanding by others .

An algorithm must exhibit several properties to be considered correct. Firstly, it must have a precisely defined input specification, detailing the type and number of inputs required as well as initial conditions . Each instruction within the algorithm must be clearly specified to prevent ambiguity and ensure consistent execution . The algorithm should solve the problem accurately, producing the expected output when the input conditions are met . It should also be finite, with a clear and attainable termination point, and it should explicitly define tasks with an exact number of steps . Lastly, it should be efficient, making optimal use of computational resources while being straightforward to implement and debug .

Selecting an optimal algorithm for a specific task involves several challenges. One major challenge is assessing the algorithm's efficiency, as different algorithms might require extensive computational resources in terms of time and memory, impacting overall performance . Additionally, understanding the mathematical principles underlying various algorithms may necessitate sophisticated analytical skills to evaluate their suitability for a problem . The diverse nature of problems can also mean multiple algorithms are applicable, which requires thorough comparative analysis to select the best option in terms of speed, complexity, and resource consumption . Moreover, user constraints, such as ease of implementation and maintenance, further complicate algorithm selection .

Generality is a crucial property of algorithms because it affects how widely applicable an algorithm is across various problems . An algorithm with high generality can solve an entire class of problems rather than a specific instance, thus increasing its utility and adaptability in different scenarios . This property allows the same algorithm to be reused in multiple contexts with varying inputs, saving development time and resources . It encourages robust, flexible solutions that are not tightly coupled to specific use cases, thereby promoting scalability and maintainability in software design . However, ensuring generality can sometimes lead to increased complexity in the design phase as developers must account for broader conditions and edge cases .

Algorithm efficiency plays a crucial role in determining the computational resources required by an algorithm, directly impacting the overall system performance . Efficient algorithms make optimal use of time and memory, thus allowing the system to handle larger volumes of data or execute faster with fewer resources. Inefficient algorithms, on the other hand, may incur unnecessary computational overheads, leading to slower execution, increased energy consumption, and higher costs . This is particularly important in environments with constrained resources such as embedded systems or large-scale data processing applications, where maximizing resource utilization translates directly into operational efficiency and cost-effectiveness . Therefore, evaluating and optimizing the efficiency of algorithms is an integral aspect of operational design and implementation .

Algorithm verification is critical to ensure that an algorithm correctly solves the intended problem and behaves as expected under various conditions . This process, also known as proof or testing, involves systematically checking if the algorithm meets its specifications and requirements. One common method is the 'desk check' or 'dry run,' where the logical flow is manually traced through test cases to ensure the algorithm produces the desired results . Verification may also include mathematical proofs to demonstrate correctness or the use of symbolic execution tools to explore potential execution paths . Thorough verification is essential to avoid deployment issues and ensure reliability and correctness in practical applications .

También podría gustarte