Ir al contenido
Mostrar u ocultar la barra lateral
Enciclopedia Salmantina
Buscar
Crear una cuenta
Herramientas personales
Crear una cuenta
Acceder
Páginas para editores desconectados
más información
Discusión
Contribuciones
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Herramientas
Lo que enlaza aquí
Cambios relacionados
Páginas especiales
Información de la página
Editando
Algoritmo
(sección)
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Más
Leer
Editar
Editar código
Ver historial
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
== 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 [[Lenguaje de programación|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 suele hacerse 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 un 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 === [[Archivo:AlgoritmoRaiz.png|thumb|[[Diagrama de flujo]] que expresa un algoritmo para calcular la raíz cuadrada de un número <math>x</math>]] {{AP|Diagrama de flujo}} 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 [[Organización Internacional para la Estandarización|ISO]]. Los diagramas de flujo se emplean para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura se utilizan 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 === El [[pseudocódigo]] es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo y, por lo tanto, puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o usar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él. Una forma de plasmar (o algunas veces «codificar») un algoritmo es escribirlo en [[pseudocódigo]] o utilizar un lenguaje muy simple tal como [[Léxico]], cuyos códigos pueden estar en el idioma del programador. === Sistemas formales === La [[teoría de autómatas]] y la teoría de [[Función recursiva|funciones recursivas]] proveen modelos matemáticos que formalizan el concepto de ''algoritmo''. Los modelos más comunes son la [[máquina de Turing]], [[máquina de registro]] y [[Función recursiva|funciones μ-recursivas]]. Estos modelos son tan precisos como un [[lenguaje máquina]], careciendo de expresiones coloquiales o ambigüedad; sin embargo, se mantienen independientes de cualquier computadora y de cualquier implementación. === Implementación === Muchos algoritmos se han ideado para implementarse en un [[Programa (computación)|programa]]. No obstante, los algoritmos pueden ser implementados en otros medios, como una [[Red neuronal artificial|red neuronal]], un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos incluso 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 solo algunos ejemplos. === Variables === Son elementos que toman valores específicos de un tipo de datos concreto. La declaración de una variable puede realizarse comenzando con '''var'''. Principalmente, existen dos maneras de otorgar valores iniciales a variables: # Mediante una sentencia de asignación. # Mediante un procedimiento de entrada de datos (por ejemplo: 'read'). Ejemplo: <syntaxhighlight lang="pascal"> ... i:=1; read(n); while i < n do begin (* cuerpo del bucle *) i := i + 1 end; ... </syntaxhighlight> === Estructuras secuenciales === La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones 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 o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que 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 un proceso (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 involucre muchas variables (a ← c + b*1/2). 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) ... Fin
Resumen:
Ten en cuenta que todas las contribuciones a Enciclopedia Salmantina pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase
Proyecto:Derechos de autor
para más detalles).
¡No uses textos con copyright sin permiso!
Cancelar
Ayuda de edición
(se abre en una ventana nueva)