- ALGORITMO
Un algoritmo es una secuencia de pasos lógicos necesarios para llevar
a cabo una tarea especifica, como la solución de un problema. Los algoritmos
son independientes tanto del lenguaje de programación en que se expresan como
de la computadora que los ejecuta. En cada problema el algoritmo se puede
expresar en un lenguaje diferente de programación y ejecutarse en una computadora
distinta; sin embargo el algoritmo será siempre el mismo.
Por ejemplo en una analogía con la vida diaria, una receta de un plato
de cocina se puede expresar en español, ingles o francés, pero cualquiera que
sea el lenguaje, los pasos para la elaboración del plato se realizaran sin
importar el cocinero.
Los pasos a seguir en la solución de una ecuación de segundo grado.
Los pasos matemáticos para la solución de un número factorial.
Las instrucciones para la liquidación de una nomina.
Las acciones que se deben seguir para la obtención de una estadística.
Para llegar a la realización de un programa es necesario el diseño
previo de un algoritmo, de modo que sin algoritmo no puede existir un
programa.
Características de los algoritmos.
Las características fundamentales que debe cumplir todo
algoritmo son:
- Un algoritmo debe ser preciso e
indicar el orden de realización de cada paso.
- Un algoritmo debe estar
definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.
- Un algoritmo debe ser finito. Si
se sigue un algoritmo, se debe terminar en algún momento; o sea debe de
tener un número finito de pasos.
La definición de un algoritmo debe describir tres partes: Entrada,
Proceso y Salida.
En el algoritmo citado anteriormente se tendrá:
- Entrada ingredientes y
utensilios empleados
- Proceso elaboración de la
receta de cocina
- Salida terminación del
plato (por ejemplo, cordero)
Un algoritmo exige que se tengan varias propiedades importantes: Los
pasos de un algoritmo deben ser simples y exentos de ambigüedades (diferentes
significados), deben seguir un orden cuidadosamente prescrito, deben ser
efectivos y deben de resolver el problema en un número finito de pasos.
1.2.2.- LENGUAJE DE PROGRAMACIÓN
Un lenguaje
de programación" es un lenguaje diseñado para describir el conjunto
de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un
lenguaje de programación es un modo práctico para que los seres humanos
puedan dar instrucciones a un equipo.
Por otro lado, el
término "lenguaje natural" define un medio de comunicación
compartido por un grupo de personas (por ejemplo: inglés o francés).
Los lenguajes que
los equipos usan para comunicarse entre ellos no tienen nada que ver con los
lenguajes de programación; se los conoce como protocolos de
comunicación. Se trata de dos conceptos totalmente diferentes.
El lenguaje
utilizado por el procesador se denomina lenguaje máquina. Se
trata de datos tal como llegan al procesador, que consisten en una serie de 0
y 1 ( datos binarios).
El lenguaje
máquina, por lo tanto, no es comprensible para los seres humanos, razón por
la cual se han desarrollado lenguajes intermediarios comprensibles para el
hombre. El código escrito en este tipo de lenguaje se transforma en código
máquina para que el procesador pueda procesarlo.
El ensamblador fue
el primer lenguaje de programación utilizado. Es muy similar al lenguaje
máquina, pero los desarrolladores pueden comprenderlo. No obstante, este
lenguaje se parece tanto al lenguaje máquina que depende estrictamente del
tipo de procesador utilizado (cada tipo de procesador puede tener su propio
lenguaje máquina). Así, un programa desarrollado para un equipo no puede
ser portado a otro tipo de equipo. El término
"portabilidad" describe la capacidad de usar un programa de
software en diferentes tipos de equipos. Para poder utilizar un programa de
software escrito en un código ensamblador en otro tipo de equipo, ¡a veces
será necesario volver a escribir todo el programa!
Por lo tanto, un
lenguaje de programación tiene varias ventajas:
·
es mucho más fácil de comprender que un lenguaje
máquina:
·
permite mayor portabilidad, es decir que puede
adaptarse fácilmente para ejecutarse en diferentes tipos de equipos.
1.2.3.- PROGRAMA
Un programa
informático o programa de computadora es una secuencia de
instrucciones, escritas para realizar una tarea específica en
una computadora. Este dispositivo requiere programas para
funcionar, por lo general, ejecutando las instrucciones del programa en
un procesador central. El programa tiene un formato ejecutable que
la computadora puede utilizar directamente para ejecutar las instrucciones.
El mismo programa en su formato de código fuente legible para
humanos, del cual se derivan los programas ejecutables (por
ejemplo, compilados), le permite a un programador estudiar y desarrollar
sus algoritmos. Una colección de programas de computadora
y datos relacionados se conoce como software.
Generalmente,
el código fuente lo escriben profesionales conocidos
como programadores de computadora. Este código se escribe en
un lenguaje de programación que sigue uno de los siguientes
dos paradigmas: imperativo o declarativo, y que
posteriormente puede ser convertido en un archivo
ejecutable (usualmente llamado un programa ejecutable o un binario) por
un compilador y más tarde ejecutado por una unidad central de
procesamiento. Por otra parte, los programas de computadora se pueden
ejecutar con la ayuda de un intérprete, o pueden ser empotrados directamente
en hardware.
De acuerdo a sus
funciones, los programas informáticos se clasifican en software de
sistema y software de aplicación. En las computadoras de 2015, al
hecho de ejecutar varios programas de forma simultánea y eficiente, se lo
conoce como multitarea.
1.2.4.- PROGRAMACIÓN
La programación
informática o programación algorítmica, acortada
como programación, es el proceso de diseñar,
codificar, depurar y mantener el código
fuente de programas computacionales. El código fuente es escrito en
un lenguaje de programación. El propósito de la programación es crear
programas que exhiban un comportamiento deseado. El proceso de escribir
código requiere frecuentemente conocimientos en varias áreas distintas,
además del dominio del lenguaje a utilizar, algoritmos especializados y
lógica formal. Programar no involucra necesariamente otras tareas tales como
el análisis y diseño de la aplicación (pero sí el diseño del código), aunque
sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.
Del proceso de programación
surge lo que comúnmente se conoce como software (conjunto de
programas), aunque estrictamente este último abarca mucho más que solo la
programación.
1.2.5.- PARADIGMAS
DE PROGRAMACIÓN
En nuestro
contexto, los paradigmas de programación nos indican las diversas formas
que, a lo largo de la evolución de los lenguajes, han sido aceptadas como
estilos para programar y para resolver los problemas por medio de una
computadora.
En general la
mayoría son variantes de los dos tipos principales, imperativa y declarativa:
·
Programación imperativa o por
procedimientos: es el más usado en general, se basa en dar instrucciones al
ordenador de como hacer las cosas en forma de algoritmos. La programación
imperativa es la más usada y la más antigua, el ejemplo principal es
el lenguaje de máquina. Ejemplos de lenguajes puros de este paradigma
serían el C, BASIC o Pascal.
·
Programación orientada a objetos: está basada
en el imperativo, pero encapsula elementos denominados objetos que incluyen
tanto variables como funciones. Está representado
por C++, C#, Java o Python entre otros, pero el
más representativo sería el Smalltalk que está completamente
orientado a objetos.
·
Programación dinámica: está definida
como el proceso de romper problemas en partes pequeñas para analizarlos y
resolverlos de forma lo más cercana al óptimo, busca resolver problemas en
O(n) sin usar por tanto métodos recursivos. Este paradigma está más basado en
el modo de realizar los algoritmos, por lo que se puede usar con cualquier
lenguaje imperativo.
·
Programación dirigida por eventos: la
programación dirigida por eventos es un paradigma de programación en el que
tanto la estructura como la ejecución de los programas van determinados por
los sucesos que ocurran en el sistema, definidos por el usuario o que ellos
mismos provoquen.
·
Programación declarativa: está basado
en describir el problema declarando propiedades y reglas que deben cumplirse,
en lugar de instrucciones. Hay lenguajes para la programación funcional,
la programación lógica, o la combinación lógico-funcional. Unos de los
primeros lenguajes funcionales fueron Lisp y Prolog.
·
Programación funcional: basada en la
definición los predicados y es de corte más matemático, está representado
por Scheme (una variante de Lisp)
o Haskell. Python también representa este paradigma.
·
Programación lógica: basado en la
definición de relaciones lógicas, está representado por Prolog.
·
Programación con restricciones: similar a la
lógica usando ecuaciones. Casi todos los lenguajes son variantes
del Prolog.
·
Programación multiparadigma: es el uso de
dos o más paradigmas dentro de un programa. El lenguaje Lisp se
considera multiparadigma. Al igual que Python, que es orientado a
objetos, reflexivo, imperativo y funcional.
·
Lenguaje específico del dominio o DSL: se denomina así a
los lenguajes desarrollados para resolver un problema específico, pudiendo
entrar dentro de cualquier grupo anterior. El más representativo sería SQL para
el manejo de las bases de datos, de tipo declarativo, pero los hay
imperativos, como el Logo.
Si bien puede
seleccionarse la forma pura de estos paradigmas al momento de programar, en
la práctica es habitual que se mezclen, dando lugar a la programación
multiparadigma o lenguajes de programación multiparadigma.
1.2.6.- EDITORES DE
TEXTO
Un editor de texto
es un programa que permite crear y modificar archivos digitales compuestos
únicamente por texto sin formato, conocidos comúnmente como archivos de texto
o texto plano.
Tipos de editores
de texto
Hay una gran variedad de editores de texto.
Algunos son de uso general, mientras que otros están diseñados para escribir
o programar en un lenguaje. Algunos son muy sencillos, mientras que otros
tienen implementadas gran cantidad de funciones.
Ejemplos
ü Bloc de notas,
editor integrado en Windows, también conocido como Notepad (en inglés).
ü Emacs, otro editor
muy común en Unix.
ü Gedit, editor libre que se distribuye junto con GNOME
para sistemas tipo Unix. También disponible para Windows.
ü jEdit, editor
popular multiplataforma.
ü Kate, editor para
Unix.
ü Notepad++, editor
de código fuente para Windows.
ü Vi, editor muy
común en Unix.
1.2.7.-
COMPILADORES E INTERPRETES
COMPILADOR
Un compilador acepta programas escritos en un lenguaje de alto nivel y
los traduce a otro lenguaje, generando un programa equivalente independiente,
que puede ejecutarse tantas veces como se quiera.
En un compilador hay que distinguir tres lenguajes diferentes:
El de los programas de partida (LA)
El de los programas equivalentes traducidos (LB), normalmente el lenguaje de
máquina
El lenguaje en que está escrito el propio compilador (LC), que puede ser
igual o diferente a uno de los otros dos.
Los programas interpretados suelen ser más lentos que los compilados, pero
los intérpretes son más flexibles como entornos de programación y depuración.
Comparando su actuación con la de un ser humano, un compilador equivale a un
traductor profesional que, a partir de un texto, prepara otro independiente
traducido a otra lengua, mientras que un intérprete corresponde al intérprete
humano, que traduce de viva voz las palabras que oye, sin dejar constancia
por escrito.
INTERPRETE
Un intérprete traduce un código fuente en lenguaje máquina también. El
intérprete difiere del compilador en que ejecuta cada orden una vez que se
traduce. Este proceso puede hacer más lenta la ejecución del programa, así
que los intérpretes se utilizan menos que los compiladores. Un intérprete es
otra manera de implementar un lenguaje de programación. La interpretación
comparte muchos aspectos con el compilador. Los análisis léxico, sintáctico y
verificación de tipos son exactamente los mismos que en un compilador.
Pero en lugar de generar código del árbol sintáctico, el árbol
sintáctico se procesa directamente para evaluar expresiones y ejecutar
sentencias, y así hasta terminar. Un intérprete puede necesitar evaluar la
misma parte del árbol sintáctico varias veces (por ejemplo cuando se hacen
ciclos), por eso la interpretación puede ser más lenta que la ejecución de un
programa compilado. Pero escribir un intérprete es más fácil de mover a una
máquina diferente, así que para aplicaciones donde la velocidad no importa,
lo mejor es utilizar un intérprete.
Es muy útil sabe cómo se hace un intérprete o un compilador, porque esto
permite a los programadores tener una idea de lo que hacen los programas de
alto nivel, lo que a su vez, ayudará a los programadores para crear código
más eficiente. Otras razones. Los errores que devuelven los compiladores
proporcionan una manera fácil de entender el código fuente; además, se conoce
la diferencia entre errores léxicos, sintácticos, errores de tipos, y así.
1.2.8.- EJECUTABLE
Archivo que tiene
la capacidad de poder ser ejecutado de forma independiente, o en otras
palabras, que no necesita ser ejecutado por una aplicación externa. Estos
archivos son ejecutados y controlados por el sistema operativo. Un archivo
ejecutable contiene un programa, y generalmente necesitan de otros archivos
para funcionar (aunque no es necesario).
Un ejemplo de
archivo ejecutable en Windows son los .EXE, o los .COM en MS-DOS.
En general, los archivos ejecutables son el principal medio de transmisión de
virus y malware.
1.2.9.- CONSOLA DE
LINEA DE COMANDOS
Es un método que permite a las personas dar instrucciones a algún programa
informático por medio de una línea de texto simple. Debe notarse que los
conceptos de CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen
utilizarse como sinónimos.
La Línea de Comandos de Windows es una implementación de la consola MS-DOS
para la interfaz gráfica de las diversas versiones Microsoft Windows.
La Línea de Comandos ha estado presente en forma activa en el sistema
operativo Windows desde la versión 3.0 hasta la versión Windows 98, donde los
programas de la interfaz gráfica eran ejecutados por medio de la consola y
sobre la cual todo el sistema operativo era montado.
A partir de la versión de Windows XP, la línea de comandos pasó a segundo
plano como un complemento de sistema, sin que perdiera la funcionalidad de la
misma
|