Sie sind auf Seite 1von 5

INTRODUCCIÓN A LA PROGRAMACIÓN

Bienvenidos mis apreciados estudiantes a este módulo de Programación, aquí


aprenderás los fundamentos de la algoritmia (no te asustes, es más fácil de lo
que crees). La Algoritmia es la ciencia y arte de diseñar algoritmos para la
resolución sistemática o automatizada de problemas de cualquier índole.
Aun si no tienes experiencia con la programación, es seguro que a lo largo de tu
vida has ejecutado muchos algoritmos (Aunque no te des cuenta). Un algoritmo
es la especificación detallada de los pasos necesarios para llevar a cabo una
tarea. En la escuela, por ejemplo, aprendimos una serie de pasos para realizar
sumas, restas, multiplicaciones y divisiones, estos son algoritmos (de hecho
debemos la palabra "algoritmo" al matemático musulmán Muhammad ibn Musa
al-Jwarizmi). Una receta de cocina es uno de los ejemplos más claros de
algoritmo.
El conjunto de trámites que debe realizar en cualquier institución pública para la
expedición de un documento, como por ejemplo, la licencia de conducir, también
es un algoritmo (¿Viste que no dolió? ¿Ahora si me crees?). En esta sección,
vamos a aprender los fundamentos básicos para crear programas vamos a
aprender a programar. Un programa es un algoritmo hecho para ser ejecutado
por un ordenador.
La algoritmia también es un arte, pues la creación de un algoritmo requiere de
grandes dosis de creatividad, dedicación, persistencia, paciencia y experiencia
adquirida con la práctica y el tiempo. La creación de un programa va a estar muy
influida por factores diferentes al modelo matemático, como por ejemplo, el
lenguaje de programación que se va a usar, las limitaciones físicas que impone
el computador o incluso los plazos para la finalización de un proyecto. Por otro
lado, muchos programadores buscan un aspecto estético en la realización de
sus programas; para esas personas, escribir programas es un ejercicio
semejante a hacer literatura.
Aquí queremos que veas ambos aspectos de la programación: por un lado,
presentaremos técnicas que ya son clásicas en la programación, y por otro lado,
mostraremos los problemas que pueden surgir al convertir un algoritmo que
exista o hayamos pensado en un programa que se ejecute satisfactoriamente en
un computador. Una analogía muy ilustrativa es la de comparar un algoritmo con
una receta de cocina, mientras que el programa sería análogo al plato preparado
siguiendo dicha receta. Si fueras un cocinero novato, incluso cuando tengas la
receta de cocina en tu mano y sigas metódicamente todos sus pasos, puedes
encontrar que al final el plato no es todo lo apetitoso que deseabas, es ahí donde
entra en juego el arte, la capacidad de innovar y refinar la receta con un toque
personal.
Hay que aclarar que por medio de la algoritmia y la programación como tal, es
posible hallar múltiples soluciones a un mismo problema sin embargo habrá
algunas más optimas, efectivas y eficientes que otras, así que también es una
buena práctica pensar siempre, no en cualquier solución, sino en una solución
óptima y eficiente para cada problema y así evitar problemas a futuro con
nuestros programas

Introducción a los algoritmos y programas.

¿Qué es un algoritmo?
Si se consulta la definición de algoritmo, se entiende que éste es un conjunto
finito de instrucciones que se deben seguir para resolver un problema. No
obstante, desde el punto de vista de la programación de ordenadores, la
definición del algoritmo como la especificación de una serie de pasos, es
incompleta. Debe observarse que los ordenadores son equipos que tienen
limitaciones físicas en cuanto a capacidad de almacenamiento y procesamiento.
Por consiguiente debemos refinar un poco más nuestra definición de algoritmo
para hacerla aplicable de manera efectiva en el ámbito de la informática.
Definición:
Un algoritmo se entiende como una sucesión finita de pasos que deben cumplir
las siguientes especificaciones:
1. Cada paso del algoritmo debe estar bien definido: Esto significa que
la definición de un paso debe ser suficientemente clara, para que una
persona pueda entenderla y realizarla. Si bien no se puede dar un criterio
determinístico para decidir si un paso está bien definido, debemos apelar
al sentido común para decidir que un paso está especificado sin
ambigüedades.
2. Un algoritmo debe tener un principio y un fin: Un programa es un
algoritmo escrito con un objetivo: conseguir un resultado. No tiene sentido
crear un programa que espere infinitos segundos y luego escriba en
pantalla "Hola Mundo!", del mismo modo que un algoritmo debe tener un
principio bien definido (tampoco tiene sentido el algoritmo "haz nada, y
luego escribe Hola Mundo!").
Modelos computacionales
Un modelo computacional es un modelo matemático en las ciencias de la
computación que requiere extensos recursos computacionales para estudiar el
comportamiento de un sistema complejo por medio de la simulación por
computadora
Ejemplos de modelos computacionales comunes son modelos de el pronóstico
del tiempo, modelos del Earth Simulator, modelos de simulador de vuelo, y
modelos de red neural.
Programas: Algoritmos para ser ejecutados por un ordenador
Un computador está, desde que se enciende hasta que se apaga totalmente,
ejecutando un algoritmo. Por lo general, estos algoritmos, escritos para que los
entienda una máquina, terminan siendo vagos y confusos para la mayoría de
quienes no han estudiado programación. Una máquina no puede entender
"escribe Hola Mundo!" porque no sabe lo que es "escribe" ni lo que es una letra
o un espacio, ni lo que es una pantalla. En cambio, puede entender "mov eax,
0x23afb31" (escribir en la dirección de memoria eax el número 0x23afb31 en
hexadecimal) aunque nosotros no. Un computador es solo un circuito
electrónico, no funciona a base de magia ni nada por el estilo, no entiende
nuestro idioma, no nos ve ni nos escucha. Para lograr eso, necesitamos
programas que integrados a los diferentes hardware, nos permita la interacción
entre humano máquina, pero estos lenguajes suelen ser muy complicados.
Debido a lo difícil que es escribir en lenguaje máquina, e incluso en ensamblador,
se crearon diferentes lenguajes de programación, más o menos parecidos al
inglés actual y a cómo se redacta un algoritmo. Estos lenguajes proveen de
cosas tan complejas para una máquina como los bucles. Los compiladores se
encargan de traducir esos ficheros al lenguaje ensamblador que corresponda, el
ensamblador de traducirlos a lenguaje máquina y el enlazador de juntar todo ese
código máquina en un solo archivo, el programa. Y el microprocesador, se
encarga de ir encendiendo o apagando transistores según lo que le diga el
código máquina. Es fácil entender el lenguaje de alto nivel en comparación al
lenguaje máquina pero de la evolución surgieron.
¿Qué instrucciones ejecuta un computador?
Lenguaje de máquina

Cada tipo de microprocesador contiene un conjunto de instrucciones que


realizan ciertas operaciones sobre una o más palabras de bits las instrucciones
van también codificadas en bits. No queremos hacer aquí una discusión sobre
arquitectura de ordenadores, por lo que con esto debe valer por ahora.
Se entiende que escribir sólo con dos teclas, el 0 y el 1, es incómodo (pues lograr
escribir una simple letra necesitaba de varios números ceros y unos para ello,
mira aquí el alfabeto en binario). Históricamente, a la hora de diseñar un
algoritmo para que el ordenador ejecutara, se escribía mediante unas etiquetas
memotécnicas; éste fue el origen del lenguaje ensamblador. Por ejemplo quizás
en una arquitectura la instrucción de borrado de memoria (Memory Clear)
corresponda al código 010.
Lenguaje ensamblador

El código máquina tenía dos grandes inconvenientes para los programadores:


 El primero es que se trata de unas instrucciones difíciles de recordar ya
que no guardan relación con la operación que se está realizando.
 El segundo inconveniente es que puede haber diferencias entre las
instrucciones de un procesador a otro.
Todo esto ha llevado a "poner nombre" a las instrucciones de código máquina
de manera que a una secuencia concreta de bits que realiza una operación se le
pone un nombre sencillo que identifique la operación. Esta traducción a un
lenguaje más sencillo para las personas resulta en una mayor comodidad para
el programador, además el proceso de traducción inverso de lenguaje
ensamblador a código máquina puede ser realizado por un sencillo programa.
Lenguajes de alto nivel

Sobre este lenguaje ensamblador inicial se fueron construyendo otros lenguajes


de programación de más alto nivel; esto significa que ocultan ciertos aspectos
de manera que el programador no se ha de preocupar sobre si en la máquina
que quiere que se ejecute el algoritmo el MC corresponde a la instrucción 101 o
010. Se produce, por tanto, una abstracción de datos, muy deseable para poder
utilizar el trabajo de otros para avanzar un paso más en vez de tener que
"reinventar la rueda", como se suele decir. Estos textos en los que se codifican
los algoritmos son los códigos fuente; siguen las reglas sintácticas de un
determinado lenguaje de programación. Existen numerosos lenguajes de
programación, y se utiliza uno u otro según sus características se adecúen más
o menos a la resolución de nuestro problema.
Traductores e intérpretes
Tras la escritura del algoritmo, un compilador o un intérprete (otros programas)
transformarán el texto en código máquina que el procesador es capaz de
ejecutar. Toda esta abstracción permite resolver problemas alejados de sumar
números binarios, como pueden ser la consulta de este texto o jugar a un
videojuego en 3D.
Lenguajes interpretados vs. Lenguajes compilados
Los lenguajes interpretados nacen como respuesta a la dificultad de manejo de
los compilados. Un lenguaje compilado es sólo apto para un sistema operativo o
formato de ejecutable (en Linux y Unix System es ELF, en Windows Exe), y es
tedioso de manejar.
Para comprobar bugs o errores el computador debe:
 Compilar cada uno de los ficheros de código.
 Ensamblarlos en ficheros objeto.
 Enlazar los ficheros objeto.
 Volverlos a ensamblar.
Todo eso no es gran derroche de recursos para un ordenador medio
actualmente, pero dura sus 10 o 15 segundos (Que en términos de programación
es muchísimo tiempo). En cambio, con un lenguaje interpretado, el programa
intérprete analiza el fichero de código y lo va ejecutando en tiempo real, sin
compilarlo ni ensamblarlo. Otra de las ventajas de los lenguajes interpretados es
que son multiplataforma.
Sus desventajas:
 Consume muchos recursos de memoria, sobre todo RAM.
 Se depende del intérprete: si no tienes instalado el intérprete que
corresponda, no podrás ejecutar el programa.
Ejemplos de lenguajes interpretados son PHP, Perl, PythonTcl/Tk, BASIC.

Das könnte Ihnen auch gefallen