Algoritmo

82 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
82
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
0
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Algoritmo

  1. 1. ConceptoEn matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (delgriego y latín, dixit algorithmus y este a su vez del matemático persa Al-Juarismi1) es un conjuntoInformáticaALGORITMO
  2. 2. prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar unaactividad mediante pasos sucesivos que no generen dudas a quien deba realizar dichaactividad.2Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a unestado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.1En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunosejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o lasinstrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplosen matemática son el algoritmo de la división para calcular el cociente de dos números,el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, oel método de Gauss para resolver un sistema.Tipos de algoritmoCualitativos:Sonaquellosenlosquesedescribenlospasosutilizandopalabras.• Son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven parallegar a la obtención de una respuesta o solución de un problema cualquierCuantitativos: Sonaquellosenlosqueseutilizancálculosnuméricosparadefinirlospasosdelproceso.• Son aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a unresultado satisfactorioTiposdealgoritmosderazonamiento:AlgoritmosEstáticos: sonlosquefuncionansiempreigual,independientementedeltipodeproblematratado.AlgoritmosAdaptativos:algoritmosconciertacapacidaddeaprendizaje.Algoritmos Probabilísticos: son algoritmos que no utilizan valores de verdad booleanos sinocontinuos. Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento,pudiéndose distinguir:§ Algoritmos numéricos: que proporcionan una solución aproximada del problema.§ Algoritmos de Montecarlo: que pueden dar la respuesta correcta o respuesta erróneas (conprobabilidad baja).§ Algoritmos de Las Vegas: que nunca dan una respuesta incorrecta: o bien dan la respuestacorrecta o informan del fallo.Algoritmo Cotidiano: es la serie de pasos que realizamos en nuestra vida diaria para realizar lasdiferentes tareas y actividades comunes, desde los pasos al levantarnos, así como ir de compras,etc.Algoritmo Voraz: un algoritmo voraz es aquel que, para resolver un determinado problema, sigueuna heurística consistente en elegir la opción óptima en cada paso local con la esperanza dellegar a una solución general óptima.PÁGINA 2
  3. 3. Algoritmo Determinista: es un algoritmo que, en términos informales, es completamentepredictivo si se conocen sus entradas.Algoritmo Heurístico: es un algoritmo que abandona uno o ambos objetivos; por ejemplo,normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no puedaser arbitrariamente errónea en algunos casos; o se ejecuta razonablemente rápido, aunque noexiste tampoco prueba de que siempre será así.Las heurísticas generalmente son usadas cuando no existe una solución óptima bajo lasrestricciones dadas (tiempo, espacio, etc.), o cuando no existe del todo.Algoritmo de escalada: la idea básica consiste en comenzar con una mala solución a undeterminado problema y, repetidamente, aplicar optimizaciones a la misma hasta que esta seaóptima o satisfaga algún otro requisito.CARACTERISTICAS DE LOS ALGORITMOSLas principales características de los algoritmos son:• El algoritmo debe ser sencillo e indicar el orden de realización de cada paso• Un algoritmo debe estar definido.• El algoritmo de ser finito.Un algoritmo describe la transformación de una entrada en la salidaLa entrada se refiere a algo que existe y es utilizado por el algoritmo para transformarlo en losresultados que uno planifica.Lenguaje de algorítmica y Programación• Lenguaje máquina: Todo se programa con 1 y 0, que es lo único que entiende el ordenador.PÁGINA 3
  4. 4. Ventaja: No necesita ser traducido.Inconveniente: La dificultad, la confusión, para corregir errores, es propia de cada máquina.• De bajo nivel o ensamblador: Se utilizan mnemotécnicos (abreviaturas).Ventaja: No es tan difícil como el lenguaje máquina.Inconvenientes: Cada máquina tiene su propio lenguaje, necesitamos un proceso de traducción.• El programa escrito en ensamblador se llama programa fuente y el programa que se obtieneal ensamblarlo se llama programa objeto.• Lenguajes de alto nivel: Los más cercanos al lenguaje humano.Partes de un algoritmoTodo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso ysalida.• Entrada:Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer losresultados esperados.• ProcesoPasos necesarios para obtener la solución del problema o la situación planteada.• SalidaResultados arrojados por el proceso como solución.En el ejemplo del algoritmo de la sumatoria de los dos números, tenemos:Entrada: Valores de de las variables A y B.Proceso: Asignar a la variable Suma, el valor de A mas 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 y elementos para construir un algoritmo• VariablesSon elementos que toman valores específicos de un tipo de datos concreto. La declaración deuna variable puede realizarse comenzando con var. Principalmente, existen dos maneras deotorgar valores iniciales a variables:• Mediante una sentencia de asignación.• Mediante un procedimiento de entrada de datos (por ejemplo: read).Ejemplo:...I:=1;PÁGINA 4
  5. 5. Read(n);While i < n do begin(* Cuerpo del bucle *)I:= i + 1End;...• Estructuras secuencialesLa estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Lasoperaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y asísucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso de valores oresultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variableque recibe el valor. La asignación se puede clasificar de la siguiente forma:• Simples: Consiste en pasar un valor constante a una variable (a ← 15)• Contador: Consiste en usarla como un verificador del número de veces que se realiza unproceso (a ← a + 1)• Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)• De trabajo: Donde puede recibir el resultado de una operación matemática que involucremuchas variables (a ← c + b*2/4).Un ejemplo de estructura secuencial, como obtener el área de un triángulo:Inicio...Float b, h, a;Printf ("Diga la base");Scanf ("%f", &b);Printf ("Diga la altura");Scanf ("%f", &h);a = (b*h)/2;Printf ("El área del triángulo es %f", a)...FinFormas de representar un algoritmo: Lenguaje Natural, pseudocódigo y diagrama de flujoLos algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguajenatural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. LasPÁGINA 5
  6. 6. descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo ydiagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones sonformas más estructuradas para representar algoritmos; no obstante, se mantienen independientesde 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 yse 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 queencuentran la solución.• Implementación. Se muestra el algoritmo expresado en un lenguaje de programaciónespecí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 decomplejidad o ambos.• Diagrama de flujoDiagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número xLos diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados conflechas 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 muchoespacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducciónPÁGINA 6
  7. 7. a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a lacomputación.• PseudocódigoEl pseudocódigo (falso lenguaje, el prefijo pesado significa falso) es una descripción de alto nivelde un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticaspropias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque noestá regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicacionescientíficas, y como producto intermedio durante el desarrollo de un algoritmo, como los |diagramasde flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritosen pseudocódigo requieren menos espacio para representar instrucciones complejas.El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, ypor lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación.Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en lasintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, escomprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a lavez suficientemente estructurado para que su implementación se pueda hacer directamente apartir de él.Así el pseudocódigo cumple con las funciones antes mencionadas para representar algo abstractolos protocolos son los lenguajes para la programación. Busque fuentes más precisas para tenermayor comprensión del tema.• Sistemas formalesLa teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos queformalizan el concepto de algoritmo. Los modelos más comunes son la máquina deTuring, máquina de registro y funciones μ-recursivas. Estos modelos son tan precisos comoun lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo semantienen independientes de cualquier computadora y de cualquier implementación.• ImplementaciónMuchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmospueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o unaparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente paraimplementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo deEuclides, la criba y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.Traza de un algoritmo (corrida en frío)La traza de un algoritmo (o programa) indica la secuencia de acciones (instrucciones) de suejecución, así como, el valor de las variables del algoritmo (o programa) después de cada acción(instrucción).PÁGINA 7
  8. 8. EjerciciosInicio =Elementos Decimales sal, des, salario-neto;Constantes 550 = 0,05Escribir (“ingrese el salario del trabajador”);Leer sal;Hacer des = sal * 550;Salario-neto = des – sal;Escribir (“salario neto es “salario-neto””)Escribir (“descuento es des”);FinPÁGINA 8
  9. 9. Se desea calcular el salario neto de un trabajador tomando en cuenta lo siguiente:- Si el trabajador labora más de 12 horas se le asignara un bono de 500 bs.F- Si labora menos de 12 horas se le asignara un bono de 100 bs.FInicioElementos Decimales suel, total, extra, normal, hor, bono;Escribir (“ingrese su salario”)Leer suel;Escribir (“ingrese horas trabajadas”)Leer hor;Si (hor > 12) HacerBono = suel + 500;Escribir (“el salario neto más bono es = bono”);Si noExtra = suel + 100;Escribir (“el salario neto más bono es = extra”);Fin siFin.PÁGINA 9
  10. 10. Se desea calcular el salario neto de un trabajador tomando en cuenta lo siguiente:- Si el trabajador labora más de 12 horas se le asignara un bono de 500 bs.F- Si labora menos de 12 horas se le asignara un bono de 100 bs.FInicioElementos Decimales suel, total, extra, normal, hor, bono;Escribir (“ingrese su salario”)Leer suel;Escribir (“ingrese horas trabajadas”)Leer hor;Si (hor > 12) HacerBono = suel + 500;Escribir (“el salario neto más bono es = bono”);Si noExtra = suel + 100;Escribir (“el salario neto más bono es = extra”);Fin siFin.PÁGINA 9

×