You are on page 1of 6

Taller de Lenguajes de Programación Página 1

UNIVERSIDAD CATÓLICA DE SANTA MARÍA


ESCUELA PROFESIONAL DE INGENIERÍA DE MINAS

PRÁCTICA N° 01:

Introducción a los Algoritmos

I
OBJETIVOS

 Introducir al alumno en la creación y especificación de algoritmos.


 Emplear los patrones de especificación de procesos más comunes.
 Diferenciar los algoritmos de los procesos simples.
 Diseñar instrucciones repetitivas que permita la ejecución de procesos repetitivos.

II
TEMAS A TRATAR

 Introducción
 ¿Qué es un algoritmo?
 Modelos computacionales
 Programas: Algoritmos para ser ejecutados por un ordenador
 ¿Qué instrucciones ejecuta un ordenador?
 Traductores e intérpretes
 Lenguajes interpretados vs. lenguajes compilados

III
MARCO TEORICO

1. INTRODUCCIÓN
Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones
que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para
crear programas que controlen el comportamiento físico y lógico de una máquina, para
expresar algoritmos con precisión, o como modo de comunicación humana. Está formado
de un conjunto de símbolos y reglas sintácticas y semánticas 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 y se mantiene el código fuente de un programa informático se le llama
programación.
También la palabra programación se define como el proceso de creación de un programa
de computadora, mediante la aplicación de procedimientos lógicos, a través de los
siguientes pasos: [5]
 El desarrollo lógico del programa para resolver un problema en particular.
 Escritura de la lógica del programa empleando un lenguaje de programación específico
(codificación del programa)
 Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
 Prueba y depuración del programa.
 Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y
'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación
y a otros más, como por ejemplo el HTML. (Lenguaje para el marcado de páginas web que
no es propiamente un lenguaje de programación sino un conjunto de instrucciones que
permiten diseñar el contenido y el texto de los documentos) [5] [1].
Permite especificar de manera precisa sobre qué datos debe operar una computadora,
cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada
gama de circunstancias [5]. Todo esto, a través de un lenguaje que intenta estar
Taller de Lenguajes de Programación Página 2
relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje
Léxico. Una característica relevante de los lenguajes de programación es precisamente que
más de un programador pueda usar un conjunto común de instrucciones que sean
comprendidas entre ellos para realizar la construcción del programa de forma colaborativa
[2].

2. ¿QUÉ ES UN ALGORITMO?
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.

A. DEFINICIÓN:
Un algoritmo se entiende como una sucesión finita de pasos que debe cumplir las siguientes
especificaciones [6]:
 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. [6]
 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 ~
segundos (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!"). [6]

3. 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. El sistema bajo estudio es a menudo
un sistema complejo no lineal para el cual las soluciones analíticas simples e intuitivas no
están fácilmente disponibles. En lugar de derivar una solución analítica matemática para el
problema, la experimentación es hecha con el modelo cambiando los parámetros del
sistema en la computadora, y se estudian las diferencias en el resultado de los
experimentos. Las teorías de la operación del modelo se pueden derivar/deducir de estos
experimentos de computacionales. [6][3]
Ejemplos de modelos de computacionales comunes son modelos de el pronóstico del
tiempo, modelos del Earth Simulator, modelos de simulador de vuelo, modelos de
plegamiento molecular de proteínas, y modelos de red neural. [6]

4. PROGRAMAS: ALGORITMOS PARA SER EJECUTADOS POR


UN ORDENADOR
Un ordenador o computadora 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), aunque nosotros no. Un ordenador es solo un circuito electrónico, no
funciona a base de magia ni nada por el estilo [4][6].
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
Taller de Lenguajes de Programación Página 3

redacta un algoritmo. Estos lenguajes proveen de cosas tan complejas para una máquina
como los bucles for. 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
maquina pero de la evolución surgieron.

5. ¿QUÉ INSTRUCCIONES EJECUTA UN ORDENADOR?

A. 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. [6][4].
Se entiende que escribir sólo con dos teclas, el 0 y el 1, es incómodo. Históricamente, a la
hora de diseñar un algoritmo para que el ordenador ejecutara, se escribía mediante unas
etiquetas mnemotécnicas; éste fue el origen del lenguaje ensamblador. Por ejemplo quizás en
una cierta arquitectura la instrucción de borrado de memoria (Memory Clear, en inglés)
corresponda al código 010. Pronto surgieron programas que leían, siguiendo el ejemplo, MC,
y lo sustituían por 010. [6]

B. LENGUAJE ENSAMBLADOR
El código máquina tenía dos grandes inconvenientes para los programadores: [6]
 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. [6]
 El segundo inconveniente es que puede haber, y de hecho hay, diferencias entre las
instrucciones de un procesador a otro. [6]
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. [6]

C. 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 otros según sus características se adecúen más o menos a la resolución de
nuestro problema.

6. 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 esta misma enciclopedia o jugar a un videojuego en 3D.
Taller de Lenguajes de Programación Página 4
7. 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 V es ELF, en Windows o incluso en BSD es muy
diferente), y es tedioso de manejar: para comprobar bugs o errores el computador debe: [7]
 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. 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: un programa
en Perl, por ejemplo, no debe ser compilado dos veces (una para Unix y otra para Windows).
Con que haya diferentes versiones del intérprete en cada uno de esos ordenadores,
específicamente compilados para ellos, basta. [7]
Sus desventajas:
 Consume muchos recursos de memoria, sobre todo RAM. [7]
 Se depende del intérprete: si no tienes instalado el intérprete que corresponda, no
podrás ejecutar el programa. [7]
Ejemplos de lenguajes interpretados son PHP, Perl, Python, Tcl/Tk, BASIC, LISP (en
algunas de sus versiones). [7]

IV
(La práctica tiene una duración de 2 horas)
ACTIVIDADES

1. Encender el equipo de cómputo, si existe algún desperfecto o faltante en el equipo


comunicarlo inmediatamente.
2. Al aparecer la solicitud de contraseña hacer clic en el botón Cancelar o ingresar el nombre
de cuenta (login) y contraseña (password) que especifique el Docente. Esperar que aparezca
el mensaje de Inicio de sesión.
3. Ejecutar el Procesador de textos o en su defecto con el Editor de textos y escriba los
algoritmos siguientes:
4. Elaborar un algoritmo para subir las escaleras desde un primer hasta un segundo piso.
5. Elaborar un algoritmo que nos permita subir las escaleras desde un piso X hasta un piso
X+1.
6. Revisar los dos algoritmos anteriores y hacerlos más genéricos desde un punto de vista de
implantación que nos permita subir o bajar las escaleras desde cualquier piso hacia
cualquier piso.
7. Revisar los dos algoritmos anteriores y hacerlos más genéricos desde un punto de vista de
implantación para que nos permita subir o bajar por el ascensor desde cualquier piso, hacia
cualquier piso.

V
EJERCICIOS

1. Elaborar un algoritmo que nos permita lavar una pila de platos de tamaño N.
2. Elaborar un algoritmo que nos permita entregar N cartas en las direcciones respectivas.
3. Al algoritmo anterior agregarle las instrucciones necesarias para que el algoritmo haga la
entrega certificada de cartas.
4. Elaborar un algoritmo que nos permita repartir una baraja de cartas a 5 jugadores (5 naipes
a cada uno) por vez.
5. Elaborar un algoritmo que nos permita servir sopa de una olla.
6. Elaborar un algoritmo que nos permita subir las escaleras de un piso n a un pis n+1.
Taller de Lenguajes Programación Página 5

VI
CUESTIONARIO

1. ¿Qué es un algoritmo?
2. ¿Qué es un lenguaje de programación?
3. ¿Qué es el lenguaje ensamblador?
4. ¿Qué es el lenguaje de máquina?
5. ¿Qué es la semántica?
6. ¿Qué es la sintaxis?
7. ¿Qué es una instrucción?
8. ¿Cómo se ejecutan las instrucciones por la computadora?
9. ¿Cómo se especifican las instrucciones que ordenan la repetición del mismo proceso varias
veces?

VII
BIBLIOGRAFIA Y REFERENCIAS

[1] O. Cairó Battistutti, “Metodología de la programación: Algoritmos, diagramas de flujo y


programas”, 3ra Edición, Ed. México: AlfaOmega, 2002
[2] E. Alcalde y A. García, “Metodología de la Programación”, 3ra Edición. Ed. Madrid: McGraw
Hill, 2005.
[3] L. Joyanes Aguilar, “Metodología de la Programación”, 1ra Edición, Ed. Madrid: McGraw
Hill, 1987
[4] L. Joyanes Aguilar, “Metodología de la programación: diagramas de flujo, algoritmos y
programación estructurada”, 1ra Edición, Ed. Madrid: McGraw Hill, 1995
[5] http://ofimatica05.blogspot.com
[6]
https://es.wikibooks.org/wiki/Fundamentos_de_programaci%C3%B3n/Algoritmos_y
_programas
[7] https://www.programarya.com/Cursos/Fundamentacion/Algoritmos-y-Programas

You might also like