Está en la página 1de 11

Algoritmo

Los diagramas de flujo sirven para representar algoritmos de manera grfica.

En matemticas, lgica, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego


y latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi1 ) es un conjunto preescrito de
instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante
pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. 2 Dados un estado inicial y
una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los
algoritmos son el objeto de estudio de la algoritmia.1
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos
son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que
recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica son el algoritmo de
multiplicacin, para calcular el producto, el algoritmo de la divisin para calcular el cociente de dos
nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o
el mtodo de Gauss para resolver un sistema lineal de ecuaciones.

Programacin
Para otros usos de la palabra, vase Programacin (msica).
La programacin es el proceso de disear, codificar, depurar y mantener el cdigo fuente de programas
computacionales. El cdigo fuente es escrito en un lenguaje de programacin. El propsito de la
programacin es crear programas que exhiban un comportamiento deseado. El proceso de escribir

cdigo requiere frecuentemente conocimientos en varias reas distintas, adems del dominio del
lenguaje a utilizar, algoritmos especializados y lgica formal. Programar no involucra necesariamente
otras tareas tales como el anlisis y diseo de la aplicacin (pero s el diseo del cdigo), aunque s
suelen estar fusionadas en el desarrollo de pequeas aplicaciones.

Algoritmo
Los seres humanos resuelven un problema mediante el razonamiento y el anlisis de
diferentes soluciones. Incluso si un proceso es complejo, seguimos rapidamente un
nmero finito de pasos antes de llegar a una solucin. Ahora, si usted quiere hacer un
equipo que haga el mismo proceso, tiene que ser alimentada con una serie de pasos
para automatizar el proceso de razonamiento. La lista finita de pasos que el SIDA
mquinas para llegar a una solucin para diferentes entradas posibles forma un
algoritmo.
En general, un algoritmo es un conjunto de instrucciones paso a paso que manipulan
la informacin para encontrar la solucin a un problema. De hecho, algoritmo no es
especfico para las computadoras y tiene sus races derivadas de matemticas. Casi
todas nuestras actividades cotidianas que van desde multiplicar nmeros a la
programacin de vuelos se basan en un conjunto definido de reglas se realizan de
manera predefinida que constituyen el proceso algortmico.
Un algoritmo es comnmente representado como un pseudocdigo o mediante un
diagrama de flujo. Un pseudocdigo define los pasos que se requieren para resolver
un problema y estas descripciones de alto nivel se describen en su mayora en
formato legible en lugar de en formato legible por mquina, porque el objetivo de tener
un pseudocdigo es hacer comprender los pasos necesarios para resolver un
problema a nadie. Pseudocdigo es independiente de la mquina.
Como pseudocdigo no puede producir cualquier salida como tal, un programador Lee
un pseudocdigo y traduce los pasos segn una especificacin de lenguaje de
programacin especfico. Tericamente, un pseudocdigo implementada en decir tres
diferentes lenguajes de programacin debe producir el mismo comportamiento y los
mismos resultados pero en realidad, pueden encontrarse diferencias considerables
segn el lenguaje de programacin que se utiliza para implementar un pseudocdigo.
Un diagrama de flujo es una representacin esquemtica de un pseudocdigo.

PROGRAMA
Un programa es un conjunto de instrucciones adheridas a la sintaxis y la semntica de
un lenguaje de programacin. Seres humanos resolver un problema mediante el
razonamiento e iterar a travs de datos, pero un equipo no puede pensar por cuenta
propia y tiene que darse instrucciones paso a paso para automatizar el proceso de
razonamiento. Este tipo de instrucciones detalladas para automatizar el proceso de
razonamiento no es ms que un programa. Para que un programa con xito dar
resultado, debe estar lgicamente tanto gramaticalmente correcto. Para escribir
programas, programadores de acuerdo a la especificacin de lenguaje de
programacin que define la sintaxis y la semntica de un lenguaje de programacin.
Programas pueden escribirse utilizando lenguaje compilado o interpretacin el
lenguaje. En el caso de lenguaje compilado, el compilador se encarga de traducir el
cdigo fuente en forma legible por mquina. Despus de traducir las instrucciones de
alto nivel a instrucciones de bajo nivel, compiladores generan un nico archivo
ejecutable como salida. La ventaja de este enfoque es necesita compilar su programa
una sola vez y se puede ejecutar el cdigo compilado en plataformas previstos incluso
sin un compilador. En el caso de lenguaje interpretado, el intrprete traduce el una
lnea de cdigo de fuente en un momento y produce cdigo de mquina
correspondiente. La desventaja es que el intrprete tiene que traducir el cdigo fuente
cada vez que se ejecuta el programa. Programa de optimizacin
Puede optimizar un programa a nivel de diseo, nivel de cdigo fuente, nivel del
compilador o nivel de la mquina. El objetivo de optimizar un programa es reducir la
cantidad de tiempo que se tarda en realizar una tarea para diferentes rangos de
entrada. Es mejor comenzar el proceso de optimizacin en el nivel de diseo eligiendo
algoritmos eficientes que pueden realizar bien para grandes valores de entrada.
En el nivel de cdigo fuente, se puede optimizar un programa evitando la codificacin
de mala calidad y aprovechando las ventajas del lenguaje construcciones especficas.
Por ejemplo usted puede optimizar un programa a nivel de cdigo fuente reduciendo
al mnimo las iteraciones no deseadas, utilizando el nmero ptimo de constantes y
haciendo uso de operadores condicionales como minimumValue = (a > b)? una: b, en
lugar de utilizar elaboradas declaraciones if-then-else. Tener lgica concisa puede
reducir muchos de los errores en tiempo de ejecucin. Por ejemplo, puede rellenar
directamente un mapa de rbol ordenada con los valores de entrada en tiempo de
ejecucin en lugar de lectura entrada desde un archivo y luego procesarla mediante
programacin para rellenar la estructura de datos al realizar operaciones de archivo
costosos.
Un programa tambin puede ser optimizado en el nivel de compilador, pero slo los
programadores que tienen conocimiento sobre compiladores no optimizacin de nivel

del compilador. Cualquier programador de ensamblador puede optimizacin del


tiempo haga funcionar o puede ser hecho en el nivel del cdigo fuente.
Mejores prcticas de codificacin:
Incluyendo prcticas de codificacin mejor en un cdigo toma tiempo y esfuerzo; la
manera mejor y ms fcil de empezar es por la siguiente API que vienen con una
implementacin del lenguaje de programacin. Casi todas las API de lenguajes
populares est normalmente bien documentados y puede utilizarse por los
programadores como una inspiracin para seguir las mejores prcticas. Esto es
mucho mejor que el aprendizaje sobre las mejores prcticas en las teoras. Una de las
mejores prcticas bsicas es agregar los comentarios correspondientes a nivel de
archivo, funcin, nivel variable y nivel de instruccin como comentarios dan mejores
programadores de legibilidad y ayuda a comprender mejor un cdigo.

Programacin
Dado un problema, normalmente no arranca un programador codificar directamente.
Un programador analiza el problema y prepara los documentos de diseo tcnico,
detallando la solucin propuesta. Entonces, si un programador sigue las prcticas de
programacin extrema, l o ella comienza la codificacin de la solucin y sus casos de
prueba en paralelo. Ahora viene a la programacin, es un proceso de escribir, probar y
depurar un cdigo fuente.
Programacin requiere no slo conocimientos acerca de cmo el cdigo en un
lenguaje de programacin especfico pero tambin requiere un conocimiento sobre el
dominio del software, algoritmos, estndares, convenciones de codificacin y
depuracin de tcnicas de codificacin. Cualquiera puede escribir un fragmento de
cdigo y hacer que funcione; pero hay ciertas prcticas un programador deben seguir
para producir cdigo de alta calidad constantemente.
Aunque es esencial para producir un cdigo que le da una solucin correcta, es
igualmente esencial para escribir cdigo legible. En trminos simples, legibilidad del
cdigo se traduce directamente en mantenimiento fcil. Un cdigo debe ser fcilmente
legible en la medida en que otros programadores no deben tener dificultad en
comprender el flujo y la funcionalidad del cdigo.
Adems, un cdigo que es fcilmente legible directamente aumenta la productividad
de un equipo. Para mejorar la legibilidad del cdigo es necesario adherirse a un estilo
de programacin. De hecho, estilos de sangra adecuada, comentarios y

convenciones de nomenclatura son todos conducidos por estilo de programacin y


prcticas de codificacin. El beneficio es por pegar a un estilo de programacin,
fcilmente puede eliminar cdigo duplicado, pista dura y errores, errores ocultos y
cdigo ineficiente.
Convenciones de cdigo definen un conjunto de reglas para todos los aspectos de
programacin como declaraciones, muescas y organizacin de los archivos.
Convenciones de codificacin desempean un papel importante en desarrollo de
software como casi cualquier programador mantiene un fragmento de cdigo para
toda su vida. Adems, siguiendo las convenciones de codificacin ventajas como la
reduccin de los gastos pasaron de mantenimiento como los programadores tienen
que gastar slo un poco de tiempo para comprender un cdigo bien documentado.
Prueba es otra parte importante de la programacin ya que ayuda a asegurarse de
que un cdigo resuelve lo que los Estados para resolver y produce salida como se
esperaba. En un enfoque de programacin basado en pruebas, programadores
empiece por escribir casos de prueba de unidad para escenarios previstos, fallos
inesperados y muchos otros casos para asegurarse de que un mdulo o programa
funciona correctamente. De esta manera, un programador sabra si un programa
cumple los requisitos funcionales de un caso de uso. Existen diferentes tipos de
pruebas como pruebas de caja blanca, pruebas de integracin, pruebas de arribaabajo, abajo-arriba pruebas y pruebas de regresin, un programador se ocupa
normalmente slo con la unidad de pruebas del mdulo de l o ella desarrolla.
La depuracin es la siguiente parte importante de la programacin ya que es la
manera efectiva para clavar un problema. De hecho, la depuracin se complementa
muy bien a la programacin porque nadie escribe un cdigo que funcione sin depurar.
Aunque los programadores tienen trabajando algoritmo, no puede producir el
resultado como se esperaba cuando codificadas en un lenguaje de programacin.
Esto es porque los lenguajes de programacin diferentes tienen diferentes gastos
generales que afectan al rendimiento de una aplicacin.
Depuracin de ayuda a los programadores a caminar a travs de un cdigo paso a
paso inspeccionando cmo se rellenan las variables y puede ayudarles a encontrar el
cdigo que produce error. Entornos de desarrollo integrados (IDE) se han convertido
en populares, es esencial para los programadores conocer los pasos bsicos para
depurar un programa en IDEs populares como Visual studio, Kdevelop, bloques de
cdigo, Eclipse y Netbeans.

Paradigma de programacin
Paradigma de programacin representa el estilo de programacin. El paradigma del
trmino significa un patrn o un modelo; por lo tanto, cualquier lenguaje de
programacin puede tener varios modelos o paradigmas mltiples. Diferentes
paradigmas de programacin se forman basndose en factores como la separacin
de preocupaciones, roles, procesos, prototipos, gramtica, servicios y flujo. Lenguajes
como Smalltalk y Haskell se basan en un solo paradigma, mientras que lenguajes
como C#, Java, Object Pascal se basan en multi-paradigms.
Hay muchos tipos de paradigmas de programacin pero cuatro son los principales son
imperativo, funcional, lgica y paradigma orientado a objetos.

Paradigma de programacin imperativa: Programacin imperativa modifica el


estado de un programa mediante comandos. Un programa en lenguaje imperativo es
considerado como un conjunto de rdenes para realizar una accin mediante la
modificacin de las variables. Esto es anlogo a los equipos reales como lenguajes
imperativos dan importancia al orden de los comandos para completar una tarea. Un
programa imperativo gradualmente altera el estado de un programa en el tiempo y por
lo tanto, es visto como una abstraccin de la mquina de Von Neumann.
Declaraciones en programacin imperativa estn ligadas al hardware. Por ejemplo, en
la expresin Y: = y + 10, lado izquierdo de la asignacin define la ubicacin y la
derecha denota el valor real que se asignar. Adems, los lenguajes imperativos
tienen amplia gama de comandos no estructurados con hardware directo apoyo pero
esto puede llevar al programa no estructurado que es difcil de leer y mantener; por
ejemplo, la presencia de demasiadas instrucciones GOTO puede hacer difciles de
depurar un programa.

Paradigma de programacin funcional: Paradigma funcional no da


importancia a los Estados en su lugar se centra en la aplicacin de funciones
matemticas. La raz de trazas de programacin funcionales al clculo lambda, que
fue desarrollado para analizar las funciones. La nocin de funcin en la programacin
funcional no es igual que encuentres en programacin imperativa. En una
programacin funcional, el foco est en producir la misma salida para la misma
entrada independientemente de cuntos nunca veces se ejecuta la funcin. La
principal ventaja de la programacin funcional es evita efectos secundarios y da
transparencia referencial.

Paradigma de programacin lgica: Programacin lgica utiliza


lgicas instrucciones para hacer clculos. Este tipo de programacin se utiliza

principalmente para llegar a soluciones basadas en reglas y hechos como en bases


de datos deductivas. Uno de la programacin lgica ms ampliamente utilizada es
Prolog, que est asociado con la inteligencia artificial y la lingstica. La lgica del
programa en Prolog est escrita en trminos de relaciones y el resultado se encuentra
consultando las relaciones.

Programacin orientada a objetos: Paradigma de programacin


orientado a objetos usa clases como planos y objetos como instancias reales de una
clase. Una clase puede representar un objeto del mundo real con campos de datos y
mtodos. Algunas de las notables caractersticas de programacin orientada a objetos
son la encapsulacin, la herencia, la mensajera y polimorfismo. Programacin
orientada a objetos permite la reutilizacin de cdigo ampliamente; Esto significa que
usted puede construir software complejos mediante la reutilizacin de las clases ya
probadas. Adems, especificadores de acceso restringen la visibilidad de todos los
miembros de una clase y la propia clase. Esto significa que los campos de datos de
un objeto estn bien encapsulados - siempre que se declaren como privado o
protegido - y pueden accederse slo a travs de mtodos de una clase. Programacin
orientada a objetos permite a los programadores escribir soluciones basadas en
objetos del mundo real.

Lenguaje de programacin
Una vez que termine de desarrollar el pseudocdigo, el siguiente paso es utilizar un
lenguaje de programacin para implementar el algoritmo en el pseudocdigo. Un
lenguaje de programacin proporciona los elementos de lenguaje necesarios que son
necesarios para traducir los pasos de un pseudocdigo en formato comprensible de la
mquina. En otras palabras, el lenguaje de programacin proporciona el puente para

hacer la transicin de pseudocdigo legible por humano instrucciones legible por


mquina.

Las dos clasificaciones principales de lenguajes de programacin


son: bajo nivel de lenguaje de programacin y lenguaje de programacin de alto
nivel. Asamblea basado en microprocesador nivel lenguas forman lenguajes de bajo
nivel que operan en el nivel de registro. Sin embargo, bajo nivel idiomas tienen
algunos inconvenientes evidentes como la portabilidad y la falta de elementos de
lenguaje natural. Para resolver un problema de negocios complejos a menudo
requiere la capacidad de escribir cdigo independiente de la arquitectura de la
mquina. Esto ha llevado a la evolucin del lenguaje de programacin de alto nivel
que permite a un programador escribir cdigo basado en modelos reales sin
preocuparse acerca de la arquitectura subyacente de la mquina o cualquier otros
detalles especficos del sistema.Los detalles del sistema de resmenes de un
lenguaje de alto nivel, pero esta ventaja viene con una penalizacin en trminos de
rendimiento ms lento en comparacin con lenguajes de bajo nivel. En aplicaciones a
gran escala, esta pena es casi insignificante comparado con las ventajas de lenguajes
de alto nivel como extendibility, mantenibilidad, legibilidad y portabilidad. Los tres
componentes esenciales de un lenguaje de programacin son la sintaxis, la
semntica y el tipo de sistema.
Sintaxis de un lenguaje de programacin
Cada lenguaje de programacin tiene una especificacin de lenguaje que define su
sintaxis y semntica que aceptar los programadores y los compiladores. La sintaxis es
la cara de un lenguaje de programacin. Si un programa tiene la combinacin correcta
de smbolos y palabras clave, entonces se dice ser sintcticamente correcto.
Semntica de un lenguaje de programacin
Sintaxis se refiere a la forma de las declaraciones, mientras que la semntica se
refiere al significado de las declaraciones. Hay 3 maneras diferentes de hacer cumplir
las reglas semnticas en un lenguaje de programacin. Ofertas semnticas estticas
con la comprobacin de errores semnticos en tiempo de compilacin como falta de
declaracin de identificador, etiquetas incorrectas en el caso de declaraciones,
incorrectas devolucin tipos o argumentos de una funcin. Nuevos lenguajes como C#
y Java aplican semntica esttica mediante anlisis de la asignacin definitiva.
Dinmica semntica o semntica de ejecucin control de cmo se evalan las
expresiones en tiempo de ejecucin.
Es el analizador que analiza un cdigo fuente y genera un rbol de sintaxis. La
primera etapa de anlisis es anlisis lxico que se divide la entrada de caracteres de
un programa en fichas significativas; la prxima etapa es anlisis sintctico que
verifica si las expresiones formadas por los tokens son admisibles segn la

especificacin del lenguaje; la tercera etapa denominada como semntica anlisis se


ocupa de evaluar las expresiones. Es esencial tener en cuenta que un programa que
se adhiere a la gramtica de un lenguaje de programacin se dice que es
sintcticamente correcto, pero un programa sintcticamente correcto todava puede
tener errores lgicos y producir resultados falsos.
Tipo de sistema
Tipo sistema aplica la semntica de un lenguaje al detectar lagunas en un programa.
Tipo de datos constituye la base de un sistema de tipo; algunos de los tipos de datos
comunes que puede encontrar en cualquier lenguaje de programacin son enteros,
punto flotante, boolean, caracteres y cadenas.
El tipo de una variable determina el rango de valores que puede contener un tipo;
operaciones permitidas en un tipo; y el cmo se almacena el valor de un tipo. La
seguridad de tipo de un programa es mantenida por el sistema de tipos. Es el sistema
de tipo que asocia a cada valor de un tipo y decide lo que constituye un error de tipo.
Tipo de sistema se define como parte de una especificacin del lenguaje de
programacin y est incorporado en el compilador de un lenguaje de programacin.

Los dos principales tipos de escritura son escritura esttico y


escritura dinmica.
Escritura esttica:
La escritura esttica es una manera simple y sencilla forma de garantizar en tiempo
de compilacin que cada expresin tiene un tipo definido asociado. Adems, un
programador explcitamente puede especificar un tipo usando tipo fundido o permitir el
compilador inferir el tipo basado en expresiones.
La escritura dinmica: Comprobacin de tipo dinmico determina la seguridad del tipo
de expresiones en tiempo de ejecucin. Esto permite a un programador a utilizar una
sola variable para tomar valores de diferentes tipos en tiempo de ejecucin, pero esto
podra producir resultados errneos si no se hace con cuidado. Muchos lenguajes de
programacin admiten escribiendo estticos y dinmicos. Esta caracterstica puede
verse ampliamente en lenguajes que admiten polimorfismo, que permite un tipo de
padre apuntar a cualquiera de sus tipos heredados.

Lenguaje de programacin
Un lenguaje de programacin es un lenguaje formal diseado para expresar procesos que pueden ser
llevados a cabo por mquinas como lascomputadoras.
Pueden usarse para crear programas que controlen el comportamiento fsico y lgico de una mquina,
para expresar algoritmos con precisin, o como modo de comunicacin humana.1
Est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y
el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se
depura, se compila (de ser necesario) y se mantiene el cdigo fuente de unprograma informtico se le
llama programacin.
Tambin la palabra programacin se define como el proceso de creacin de
un programa de computadora, mediante la aplicacin de procedimientos lgicos, a travs de los
siguientes pasos:

El desarrollo lgico del programa para resolver un problema en particular.

Escritura de la lgica del programa empleando un lenguaje de programacin especfico


(codificacin del programa).

Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina.

Prueba y depuracin del programa.

Desarrollo de la documentacin.

Existe un error comn que trata por sinnimos los trminos 'lenguaje de programacin' y 'lenguaje
informtico'. Los lenguajes informticos engloban a los lenguajes de programacin y a otros ms, como

por ejemplo HTML (lenguaje para el marcado de pginas web que no es propiamente un lenguaje de
programacin, sino un conjunto de instrucciones que permiten disear el contenido de los documentos).
Permite especificar de manera precisa sobre qu datos debe operar una computadora, cmo deben ser
almacenados o transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias. Todo
esto, a travs de un lenguaje que intenta estar relativamente prximo al lenguaje humano o natural. Una
caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador
pueda usar un conjunto comn de instrucciones que sean comprendidas entre ellos para realizar la
construccin de un programa de forma colaborativa.