You are on page 1of 37

Algorítmica y Programación

Algoritmos
Un algoritmo es un conjunto finito de instrucciones o pasos que sirven
para ejecutar una tarea o resolver un problema. De un modo más
formal, un algoritmo es una secuencia finita de operaciones realizables,
no ambiguas, cuya ejecución da una solución de un problema.

Programas
Conjunto de instrucciones, con una secuencia lógica, escrito en algún
Lenguaje de Programación que permite resolver un Problema. El
programa recibe datos de entrada, realiza las operaciones de
transformación requeridas, y entrega los resultados esperados.
Algorítmica y Programación

Lenguajes de Programación
Los algoritmos se convierten en un conjunto de sentencias e instrucciones
entendibles por la maquina mediante los lenguajes de programación.

CLASIFICACION:
 Lenguajes Maquina: Codificación Binaria. (1110110001)
 Lenguajes Ensamblador o de bajo Nivel: Nemotécnicos.
 Lenguajes de Alto nivel: Uso de Compiladores e interpretes.
 Lenguajes de Cuarta Generación: Lenguaje natural.
 Lenguajes de Quinta Generación: Desarrollo visual. Interfaces
graficas avanzadas. Orientados a IDE.
Algorítmica y Programación

Compilador
Algorítmica y Programación

Lenguajes de Programación
Algorítmica y Programación

Historia del Algoritmo


La palabra algoritmo proviene del nombre del matemático persa
llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi que vivió
entre los siglos VIII y IX. Su trabajo consistió en preservar y difundir el
conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil
comprensión, he aquí que su principal valor no fuera el de crear nuevos
teoremas o nuevas corrientes de pensamiento, sino el simplificar las
matemáticas a un nivel lo suficientemente bajo para que pudiera ser
comprendido por un amplio público.
Algorítmica y Programación

Historia del Algoritmo


Cabe destacar, como él señaló las virtudes del sistema decimal indio,
(en contra de los sistemas tradicionales árabes) y como explicó que
mediante una especificación clara y concisa de cómo calcular
sistemáticamente, se podrían definir algoritmos que fueran usados en
dispositivos mecánicos en vez de las manos (por ejemplo, ábacos).
También estudió la manera de reducir las operaciones que formaban el
cálculo. Es por esto que aun no siendo él el creador del primer
algoritmo, el concepto lleva aunque no su nombre, sí su pseudónimo.
Algorítmica y Programación

Historia del Algoritmo


La palabra algoritmo que originalmente hacía referencia a las reglas de
uso de la aritmética utilizando dígitos arábigos, se evolucionó a la
palabra latina, derivación de al-Khwarizmi, algobarismus, y luego más
tarde mutó en algoritmo en el siglo XVIII.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un
computador. La autora fue Ada Byron en cuyos escritos se detallaban la
máquina analítica en 1842. Es por ello que es considerada por muchos
como la primera programadora aunque, desde Charles Babbage nadie
completó su máquina, por lo que el algoritmo nunca se implementó.
Algorítmica y Programación

Características de un Algoritmo
 Debe ser preciso: Indica el orden de realización de cada paso dentro
del proceso.
 Debe ser definido: Si se sigue un algoritmo dos veces, se debe
obtener el mismo resultado cada vez.
 Debe ser finito: Si se sigue un algoritmo, se debe terminar en algún
momento ; o sea debe tener un número finito de pasos.
Algorítmica y Programación

Características de un Algoritmo
 Debe describir tres partes : Entrada, Proceso y Salida.
 Debe ser Sencillo , Legible.
 Debe ser Eficiente y Efectivo.
 Debe desarrollarse en el menor tiempo posible. Romper con el
paradigma de Eficiencia vs Eficacia.
 Debe ser Correcto. Sin errores.
 Debe cero ó mas entradas.
 Debe tener al menos una salida y ésta debe ser tangible.
Algorítmica y Programación

Ejemplo de un Algoritmo
En la vida cotidiana se emplean algoritmos en multitud de ocasiones
para resolver problemas. Algunos ejemplos son:
 Los manuales de usuario, que muestran algoritmos para usar un
aparato.
 Las instrucciones que recibe un trabajador por parte de su patrón.
 Los pasos de una receta de una ensalada Cesar con Pollo.
 El cambio de un neumático.
 El lavar los platos en la cocina.
 El como cambiar una bombilla eléctrica.
Algorítmica y Programación
Diseñar un algoritmo para cambiar el caucho de un automóvil:
1. Inicio.
2. Traer gato.
3. Levantar el automóvil con el gato.
4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Apretar los tornillos.
10. Bajar el automóvil con el gato.
Algorítmica y Programación

Técnicas para el diseño de Algoritmos


 Algoritmos greedy: Informalmente, se puede decir que este tipo de
algoritmos selecciona los elementos del conjunto de candidatos en
un determinado orden hasta encontrar una solución; es decir,
calcula la solución al problema tomando en cada paso la opción más
prometedora. En la mayoría de los casos la solución no es óptima.

 Algoritmos paralelos.

 Algoritmos probabilísticos.
Algorítmica y Programación

Técnicas para el diseño de Algoritmos


 Divide y vencerás(divide & conquer, en inglés): este tipo de
algoritmos particionan el problema en subconjuntos disjuntos
obteniendo una solución de cada uno de ellos, para luego después
unirla logrando así, la solución al problema completo.

 Heurísticas: algoritmos que encuentran soluciones a problemas


basándose en un conocimiento anterior (a veces llamado experiencia)
de los mismos.

 Programación dinámica.
Algorítmica y Programación

Técnicas para el diseño de Algoritmos


 Ramificación y acotación: también conocidos como ramificación y
poda, branch and bound. Este método se basa en la construcción de las
soluciones al problema mediante un árbol implícito que se recorre de
forma controlada encontrando las mejores soluciones.

 Vuelta Atrás: al igual que el método ramificación y acotación, vuelta


atrás (backtracking, en inglés) se construye el espacio de soluciones del
problema en un árbol que se examina completamente, almacenando las
soluciones menos costosas.
Algorítmica y Programación

Técnicas para el diseño de Algoritmos


 Programación Estructurada: Conjunto de técnicas para desarrollar
algoritmos fáciles de escribir, leer, verificar y modificar.
Diseño Modular ( Top-down ): En problemas grandes y
complejos: dividir el problema en subproblemas y diseñar un
subprograma para resolver cada uno de ellos
Descomposición del programa en recursos abstractos:
Descompone una acción compleja en acciones simples capaces de ser
ejecutadas por un computador ( instrucciones )
Algorítmica y Programación

Técnicas para el diseño de Algoritmos

Estructuras de control básicas: Un programa se escribe


utilizando 3 estructuras de control:
Secuenciales.
Selectivas.
Repetitivas.
Algorítmica y Programación

Representación Gráfica de los Algoritmos


 Descripción Narrada: Este algoritmo es caracterizado porque sigue un
proceso de ejecución común y lógico, describiendo textualmente paso a
paso cada una de las actividades a realizar dentro de una actividad
determinada.
Algorítmica y Programación

Representación Gráfica de los Algoritmos


 Pseudocódigo: no es realmente un código sino una imitación y una
versión abreviada de instrucciones reales para las computadoras.
Permite definir las estructuras de datos, las operaciones que se
aplicarán a los datos y la lógica que tendrá el programa de computadora
para solucionar un determinado problema. Utiliza un pseudolenguaje
muy parecido a nuestro idioma, pero que respeta las directrices y los
elementos de los lenguajes de programación.
Algorítmica y Programación

Representación Gráfica de los Algoritmos


 Pseudocódigo:

Palabras Reservadas
Inicio / Fin

Leer / Escribir

+-*/

Si - entonces

Mientras/
desde/Repetir
Algorítmica y Programación

Representación Gráfica de los Algoritmos


 Diagramas N-S: Son una herramienta que favorece la programación
estructurada y reúne características gráficas propias de diagramas de
flujo y lingüísticas propias de pseudocódigos. Constan de una serie de
cajas contiguas que se leerán siempre de arriba-abajo y sus estructuras
lógicas son las siguientes:
Algorítmica y Programación

Representación Gráfica de los Algoritmos


 Diagramas de Flujo: Son la representación gráfica de la solución
algorítmica de un problema. Para diseñarlos se utilizan determinados
símbolos o figuras que representan una acción dentro del
procedimiento. Utilizan unos símbolos normalizados, con los pasos del
algoritmo escritos en el símbolo adecuado y los símbolos unidos con
flechas, denominadas líneas de flujo, que indican el orden en que los
pasos deben ser ejecutados.
Algorítmica y Programación

Características de los Diagramas de Flujo


 Se escribe de arriba hacia abajo y de izquierda a derecha.
 Se deben usar solamente líneas de flujo horizontales y/o verticales.
 Siempre se usan flechas verticales u horizontales, jamás curvas.
 Evitar cruce de flujos.
 En cada paso expresar una acción concreta.
 Se deben usar conectores sólo cuando sea necesario.
 Se debe evitar el cruce de líneas utilizando los conectores.
 No deben quedar líneas de flujo sin conectar.
Algorítmica y Programación

Características de los Diagramas de Flujo


 Se deben trazar los símbolos de manera que se puedan leer de arriba
hacia abajo y de izquierda a derecha.
 Todo texto escrito dentro de un símbolo deberá ser escrito claramente,
evitando el uso de muchas palabra.
 La secuencia de flujo normal en una solución de problema:
a. Tiene un inicio.
b. Una lectura o entrada de datos.
c. El proceso de datos.
d. Una salida de información.
e. Un final.
Algorítmica y Programación

Simbología de los Diagramas de Flujo


Inicio / Fin
Conector

Lectura / Escritura Conector Fuera de


Páginas

Proceso
Impresión

Selectiva
Dirección o flujo

Proceso repetitivo
Algorítmica y Programación

Instrucciones
Son las acciones que van a ser ejecutadas por el computador para resolver
el problema.

Tipos
 Instrucciones de Inicio/Fin : indica el Inicio y el Fin del algoritmo
 Instrucciones de lectura: Solicita al usuario el ingreso de datos desde
un dispositivo de entrada por ejemplo el teclado.
 Instrucciones de escritura: Muestra los resultados a través de un
dispositivo de salida por ejemplo la pantalla, impresora, etc.
Algorítmica y Programación

 Instrucciones de asignación: Almacena un valor en una variable,


perdiéndose cualquier otro valor almacenado en ella.

 Instrucciones selectivas: Permiten ejecutar unas u otras tareas de


acuerdo al resultado de una expresión condicional

 Instrucciones repetitivas: Permiten la repetición de un grupo de


instrucciones, generando un bucle (lazo o loop).
Algorítmica y Programación

 Instrucciones selectivas: éstas se clasifican:


Simple:
PSEUDOCODIGO
Inicio

//CONDICION
NO SI
condición si condición = verdadera entonces
ejecutar (P1)
fin si
P1
Fin
Algorítmica y Programación

Doble:

PSEUDOCODIGO
NO SI Inicio
condición
//CONDICION
si condición = verdadera entonces
ejecutar (P1)
P2 P1 si no
ejecutar (P2)
fin si

Fin
Algorítmica y Programación

Múltiple:

PSEUDOCODIGO
Inicio
1 3
selección según_sea ( selección ) hacer
1: ejecutar (P1)
2: ejecutar (P2)
2 n 3: ejecutar (P3)
n: ejecutar (Pn)
si no
P1 P2 P3 Pn ejecutar (por defecto)
fin según_sea

Fin
Algorítmica y Programación

 Instrucciones repetitivas: éstas se clasifican:


Mientras:

inicio
PSEUDOCODIGO
Inicio
mientras condición = verdadera haga
MQ condición ejecutar (P)
fin mientras
Fin
P

cierre

FIN
Algorítmica y Programación

Repita Para:

inicio
PSEUDOCODIGO
Inicio
PARA A1, 10, 1
para A  1 hasta 10 de 1 en 1 haga
ejecutar (P)
fin para
P
Fin

cierre

FIN
Para: A inicia desde 1, hasta que tome el valor de 10
y se incremente de uno en uno.
Algorítmica y Programación

Contadores
Los procesos repetitivos requieren contar los sucesos y acciones internas,
una forma de hacerlo es mediante un contador. Un contador es una
variable cuyo valor se incrementa o decrementa en una cantidad constante
en cada repetición. La forma en que se construye un contador es la
siguiente:
mientras A < 10 haga
AA+1
fin mientras
Algorítmica y Programación

Acumuladores
Un acumulador o totalizador es una variable cuya función es almacenar
cantidades resultantes de operaciones sucesivas. Realiza la misma función
que un contador con la diferencia de que el incremento o decremento es
variable en lugar de constante.
nuevo_saldo  0 //Este es el acumulador
mientras A < 10 haga
AA+1
Leer (saldo)
nuevo_saldo  nuevo_saldo + saldo
fin mientras
Algorítmica y Programación

Escritura de un algoritmo en pseudocódigo


CABECERA: Contiene el nombre del algoritmo (opcional)

BLOQUE DE DECLARACIONES
Se utilizan para asignar espacios en la RAM. Se declaran:
Constantes (opcional), Variables (obligatorio), Otros
definidos por el usuario (opc.)

BLOQUE DE INSTRUCCIONES
Inicio/Fin
Lectura
Leer ( lista de variables)
Escritura
Escribir ( resultado)
Asignación
nombre de la variable  valor ó expresión
Algorítmica y Programación

Escritura de un algoritmo en pseudocódigo


Algoritmo SUMA
CABECERA

Variables
entero: N1, N2, S; BLOQUE DE DECLARACIONES

Inicio
Leer (N1, N2);
S  N1 + N2; BLOQUE DE INSTRUCCIONES
Imprimir (“ La suma de los números es:”, S);
Fin
Algorítmica y Programación
Escritura de un pseudocódigo a diagrama de flujo
Algoritmo SUMA Inicio

Variables N1, N2, S;


entero: N1, N2, S;

N1, N2;
Inicio
Leer (N1, N2);
S  N1 + N2; S  N1 + N2;

Imprimir (“ La suma de los números es:”, S);


Fin
S

Fin
Algorítmica y Programación

Ciclo de preguntas

You might also like