Sei sulla pagina 1di 7

ALGORITMO Y PROGRAMAS

UNIDAD N° 1 ALGORITMOS Y PROGRAMAS


Contenido:
- Conceptos.
- Lenguaje algorítmico y de programación.
- Partes de un algoritmo.
- Características y elementos para construir un algoritmo.
- Formas de representar un algoritmo: Lenguaje natural, pseudocódigo y diagramas de flujo.
- Traza de un algoritmo (corrida en frio)
Desarrollo de la unidad:
CONCEPTOS DE ALGORITMOS Y PROGRAMAS
ALGORITMO:
La palabra "algoritmo" proviene del gran matemático árabe Mohamed Al Kho Warizmi, quien
escribió entre los años 800 y 825 la obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema
de numeración hindú y el concepto del cero; esta obra alcanzó gran reputación por enunciar las
reglas paso a paso para sumar, restar, multiplicar y dividir números decimales. La traducción al
latín del apellido en la palabra algorismus derivó posteriormente en algoritmo. Según, Brassard y
Bratley (2000), algoritmo “es sencillamente un conjunto de reglas para efectuar algún cálculo, bien
sea a mano o, más frecuentemente, en una máquina”. Según Joyanes (2003), “es un método para
resolver problemas”; y según Torrealba (2004), “Un algoritmo es una descripción de los pasos
básicos a seguir para cumplir determinada tarea. Para que una computadora realice una tarea es
necesario definir previamente un algoritmo”.
Un algoritmo es un conjunto de pasos precisos, definidos y finitos que conducen a la
solución de un problema. Por ejemplo, el desarrollo de las actividades diarias en nuestra vida
cotidiana corresponde a un algoritmo, así como también la realización del cálculo de la ecuación de
segundo grado, la emisión de una nómina de pago de empleados, entre otras actividades.
El algoritmo nos da la solución genérica a un problema y lo podremos emplear todas las
veces que se nos presente ese mismo problema: por ejemplo el algoritmo de la división es
genérico e independiente de los números que tengamos que dividir.
Una vez descubierto un algoritmo para efectuar una tarea, la realización de ésta ya no requiere
entender los principios en que se basa dicho algoritmo, pues el proceso se reduce a seguir las
instrucciones del mismo. Por ejemplo, podemos hacer una división siguiendo el algoritmo sin
entender por qué funciona el algoritmo. La inteligencia requerida para llevar a cabo la tarea
está codificada en el algoritmo.
Toda actividad que realiza el ser humano, responde a un algoritmo. Existen dos tipos: los
que se realizan para ser ejecutados por una computadora, llamados algoritmos
computacionales, y los que son ejecutados por el ser humano,algoritmosno
computacionales, como el ejemplo de la compra de boletos del cine.
Ejemplo. Algoritmo para comprar los boleto de entrada al cine:
1. Inicio
2. Seleccionar la película
3. Llegar al lugar de proyección de la película
4. Revisar la cartelera
5. Hacer la cola de pago
6. Esperar el turno
7. Solicitar la película. Si la hay
8. Entregar el dinero
9. Esperar por los boletos y la diferencia de pago
10. Retirarse
11. Escoger otra película o retirarse
12. Fin

Si no hay la película
PROGRAMAS:
Cuando un algoritmo deba ser ejecutado por una computadora, se necesita expresar el algoritmo
en instrucciones comprensibles por la computadora; para esto último, se utilizan los lenguajes de
programación. Al algoritmo expresado en un determinado lenguaje de programación se le
denomina programa. Esto indica que de un determinado problema o situación dada, se elabora un
algoritmo con los pasos necesarios para su solución, y si se requiere que los pasos sean
ejecutados por un computador, se traduce el algoritmo a instrucciones editadas en un lenguaje de
programación.
Los Programas son Algoritmos que se han implementado en algún lenguaje de
programación. Las operaciones son “sentencias” o “instrucciones”. La notación de las instrucciones
depende del lenguaje que se utilice (Sintaxis). Tienen un conjunto “finito” de instrucciones.
Los Programas son Algoritmos. Como hacemos ingeniería, cuando escribimos programas debemos
usar un método o una metodología. Los algoritmos los escribe el programador y los ejecuta el
procesador de la computadora, por lo tanto debemos anticipar situaciones, repetir instrucciones y
almacenar información.
Veámoslo a través del presente ejemplo: Algoritmo para resolver la sumatoria de dos
números.

Int numero1, numero2, Inicio


suma=0; Declarar variable Suma= 0,
Printf (“ Ingrese numero1: ” Leer Primer Número
“); Scanf (&numero1, “ “); Asignarlo a la variable A
Printf (“Ingrese numero2:”); Leer Segundo Número
Scanf (&numero2, “ “); Asignarlo a la variable B
Scanf (“Suma= Asignar el valor de A + B
numero1+numero2”); a la variable Suma
Suma= A + B
Imprimir valor de Suma
LENGUAJE ALGORITMICO Y DE PROGRAMACION:
Lenguajes Algorítmicos: Un Lenguaje algorítmico es una serie de símbolos y reglas que se
utilizan para describir de manera explícita un proceso.
Tipos de Lenguajes Algorítmicos
Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de
flujo).

No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un


algoritmo (pseudocódigo).
INICIO
Edad: Entero
ESCRIBA “cual es tu edad?”
Lea Edad
SI Edad >=18 entonces
ESCRIBA “Eres mayor de Edad”
FINSI
ESCRIBA “fin del algoritmo”
FIN
El pseudocódigo es un lenguaje de especificación de algoritmos (no de programación)
basado en un sistema notacional, con estructuras sintácticas y semánticas, similares a los
lenguajes procedurales, aunque menos formales que las de éstos, por lo que no puede ser
ejecutado directamente por un computador. El pseudocódigo utiliza para representar las sucesivas
acciones, palabras reservadas - similares a sus homónimas en los lenguajes de programación-,
tales como start, end, stop, if-then-else, while-do, repeat- until, (inicio, fin, parar, si-entonces- sino,
mientras-hacer, repetir-hasta), etc. A lo largo de este capítulo, a medida que vayamos describiendo
las estructuras de control utilizadas en los programas, iremos haciendo una lista de las
instrucciones más usuales del pseudocódigo. La ventajas del uso del pseudocódigo residen en:
- Su uso en la planificación de un programa; permitiendo que el programador se pueda concentrar
en la lógica y en las estructuras de control y no tenga que preocuparse, por ahora de detalles
acerca de las reglas sintácticas y semánticas de un lenguaje específico. Consiguientemente es
más fácil de modificar, en el caso de que se descubran errores o anomalías en la lógica del
algoritmo.
- Aunque el pseudocódigo es independiente del lenguaje de alto nivel que vaya a utilizarse, un
algoritmo expresado en pseudocódigo puede ser traducido más fácilmente a muchos de ello
Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
- Según el nivel de abstracción
- Según el paradigma de programación que poseen cada uno de ellos
- Lenguaje de ensamblador
Según su nivel de abstracción
Lenguajes de Máquina: Están escritos en lenguajes directamente legibles por la máquina
(computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar
(transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una
velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a
punto los programas.
Lenguajes de bajo nivel: son lenguajes de programación que se acercan al funcionamiento de
una computadora. El lenguaje de más bajo nivel por excelencia es el código máquina. A éste le
sigue ellenguaje ensamblador, ya que al programar en ensamblador se trabajan con
los registros dememoria de la c Lenguajes de medio nivel.
Lenguaje de medio nivel: Hay lenguajes de programación que son considerados por algunos
expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas
características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo,
ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.
Computadora de forma directa.
Lenguajes de alto nivel: Los lenguajes de alto nivel son normalmente fáciles de aprender porque
están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los
lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP"
pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma
de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje
natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo,
para ambigüedades o dobles sentidos.
Lenguajes Imperativos: Son los lenguajes que dan instrucciones a la computadora, es decir,
órdenes.
Lenguajes Funcionales: este paradigma concibe a la computación como la evaluación de
funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la
aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la
ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver
ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos
secundarios comunes en otro tipo de programaciones.
Lenguajes Lógicos: La computación lógica direcciona métodos de procesamiento basados en el
razonamiento formal. Los objetos de tales razonamientos son "hechos" o reglas "if then". Para
computar lógicamente se utiliza un conjunto de tales estamentos para calcular la verdad o falsedad
de ese conjunto de estamentos. Un estamento es un hecho si sus tuplas verifican una serie de
operaciones.
Un hecho es una expresión en la que algún objeto o conjunto de objetos satisface una relación
específica. Una tupla es una lista inmutable. Una tupla no puede modificarse de ningún modo
después de su creación.
Un regla if then es un estamento que informa acerca de conjuntos de tuplas o estamentos
relacionados que pueden predecir si otras tuplas satisfacerán otras relaciones.
Un estamento que es probado verdadero como resultado de un proceso se dice que es una
inferencia del conjunto original. Se trata por tanto de una descripción de cómo obtener la veracidad
de un estamento dado que unas reglas son verdaderas.
La computación lógica está por tanto relacionada con la automatización de algún conjunto de
métodos de inferencia.
Lenguajes orientados a objetos: La Programación Orientada a Objetos (POO u OOP según sus
siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para
diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo
herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la
década de 1990. Actualmente son muchos los lenguajes de programación que soportan la
orientación a objetos.
PARTES DE UN ALGORITMO:
Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir:

ENTRADA ---------- PROCESO ---------- SALIDA.

Donde:
ENTRADA: Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los
resultados esperados.
PROCESO: Pasos necesarios para obtener la solución del problema o la situación planteada.
SALIDA: Resultados arrojados por el proceso como solución.
Ejemplo: algoritmo de la sumatoria de los dos números, tenemos:
ENTRADA Valores de las variables A y B.
PROCESO Asignar a la variable Suma, el valor de A más el valor de B.
SALIDA Impresión del valor de la variable Suma, que contiene la sumatoria de los valores de A
y B.

CARACTERÍSTICAS DE LOS ALGORITMOS


El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son
ampliamente aceptadas como requisitos para un algoritmo:
Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".
Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar
a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el
algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de
conjuntos específicos de objetos".
Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con
las entradas".
Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las
operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en
principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y
papel".
Knuth admite que, aunque su descripción pueda ser intuitivamente clara, carece de rigor
formal, puesto que no está exactamente claro qué significa "precisamente definido", "de manera
rigurosa y no ambigua", o "suficientemente básicas", y así sucesivamente…A partir del carácter
finito y de la salida se deduce que ante una misma situación inicial (o valores de entrada) un
algoritmo debe proporcionar siempre el mismo resultado (o salida), con excepción de los algoritmos
probabilistas.

MEDIOS DE EXPRESIÓN DE UN ALGORITMO


Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje
natural,pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las
descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y
diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son
formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes
de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:
Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se
explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.
Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la
solución.
Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o
algún objeto capaz de llevar a cabo instrucciones.
También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de
complejidad o ambos.
Diagrama de flujo
Diagrama de flujoque expresa un algoritmo para calcular la raíz cuadrada de un número x
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con
flechas para indicar la secuencia de instrucciones y están regidos por ISO. Los diagramas de flujo
son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su
construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los
algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la
computación.
Pseudocódigo: es la descripción de un algoritmo que asemeja a un lenguaje de programación
pero con algunas convenciones del lenguaje natural. Tiene varias ventajas con respecto a los
diagramas de flujo, entre las que se destaca el poco espacio que se requiere para representar
instrucciones complejas. El pseudocódigo no está regido por ningún estándar. pseudo viene de
falso y por ende es un codigo al que aunque es entendible no se aplica al proceso que debe
realizar la maquina.
Máquina de Turing: La máquina de Turing es un modelo matemático, diseñado por Alan Turing,
que formaliza el concepto de algoritmo. A este modelo se le refiere comúnmente como la
"descripción de más bajo nivel" por el hecho de que no utiliza ninguna expresión coloquial.
Implementación: 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 eléctrico o un aparato mecánico. Algunos algoritmos inclusive se diseñan especialmente
para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de
Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos
ejemplos.
TRAZA DE UN ALGORITMO: (corrida en frio).
La traza de un Algoritmo se puede definir como la ejecución manual de forma secuencial de las
sentencias que lo componen. Así, la traza del siguiente algoritmo es el valor que van adoptando las
variables a medida que se va ejecutando un programa. La función principal que posee realizar la
traza de una algoritmo es la de comprobar que éste funciona correctamente o para realizar la etapa
de depuración en la que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar
su eficacia y velocidad.

Potrebbero piacerti anche