Está en la página 1de 10

Tema 1.

Introducción a la programación

TEMA 1: INTRODUCCIÓN A LA PROGRAMACIÓN


1. Programas.
Al leer el título de este apartado es fácil pensar en ordenadores y en una persona
sentada delante de una pantalla durante horas, haciendo algo parecido a navegar por
Internet. Sin duda este material tratará el tema de los programas desde un punto de vista
similar, pero, para entender qué es un programa, debemos ser conscientes de que a lo
largo de nuestra vida son muchas las ocasiones en las que nos dedicamos a programar
muchas cosas que no son ordenadores.
Cuando nos vamos de viaje programamos el viaje. Cuando queremos que el vídeo nos
grabe una película de la televisión programamos el vídeo. Si tenemos que dar unas clases
tenemos que preparar eI programa que daremos.
A veces el programa ya viene hecho y nosotros sólo tenemos que utilizarlo. Y no
estamos hablando de programas informáticos. La lavadora, el lavavajillas, muchos
electrodomésticos tienen un conjunto de programas que nosotros debemos escoger para
que hagan su función. Podemos encontrar programas por todas partes sin necesidad de
tener delante un ordenador. ¿Qué es entonces un programa?
Podríamos definir un programa como un conjunto de instrucciones que nos permiten,
dada una situación inicial, llegar a la situación final que nosotros deseemos. Por ejemplo:
el programa de ropa delicada de la lavadora nos permite dada una situación inicial (un
conjunto de prendas delicadas y sucias) llegar a una situación final que nosotros
deseamos (esas prendas limpias y sin estropear). Cada uno de los programas de los que
consta la lavadora nos permite partir de una situación inicial diferente para llegar a una
situación final similar.
El ejemplo de la lavadora nos ha mostrado como diariamente trabajamos con
programas sin darnos cuenta. Pero, ¿y programar? Programar también lo hacemos
aunque seguramente no tan a menudo. Vamos a ver otro ejemplo: cuando queremos que
el vídeo nos grabe una película de la televisión debemos programarlo. ¿En qué consiste
programar el video? La verdad es que es muy sencillo. Le indicamos qué cadena tiene
que grabar, a qué hora debe iniciar la grabación y a qué hora debe finalizarla. Así, si
queremos que grabe un programa de TVE 2, que empieza a las 15:30 y calculamos que
acabará sobre las 17:00, al video le daremos estas instrucciones:
A las 15:30 horas ponte en marcha.
Selecciona la cadena TVE 2.
Inicia la grabación.
A las 17:00 detén la grabación.
Apágate.
Nuestro programa tiene 5 instrucciones que, si bien no las hemos escrito exactamente
así, sí que hemos hecho lo suficiente como para que el vídeo las realice de esa manera.
En este programa la situación inicial era una cinta de vídeo vacía y dentro del video, y la
situación final la misma cinta, en el mismo sitio, pero con el programa que queríamos ver
grabado en ella.
Aunque parezca que el ejemplo del vídeo está muy lejos de un programa informático,
no es así. Un programa informático no es más que un conjunto de instrucciones que el
ordenador obedece ciegamente. Sin duda, el lenguaje que utilizaremos para indicar al
ordenador que debe hacer es más complejo que el que hemos usado aquí, pero la base
es la misma. En el programa informático partiremos siempre de una situación (estado)
inicial y llegaremos a una situación (estado) final después de realizar un conjunto de
instrucciones.

1
Tema 1. Introducción a la programación

2. Datos.
Hasta aquí hemos hablado de cómo podemos hacer un programa que haga un
determinado trabajo y hemos intuido que hay mucha similitud entre un programa
informático y un programa que nos permita hacer algo con un electrodoméstico.
Sin embargo, cuando hacemos un programa informático, este trabaja con unos datos
(llamamos datos a cualquier información que introducimos en el ordenador), algo que no
pasa con el vídeo o la lavadora. ¿O sí? ¿Con qué trabaja la lavadora? Evidentemente con
ropa sucia. De alguna manera si hacemos un símil entre una lavadora y un ordenador,
podríamos decir que la lavadora tiene un programa que, a partir de unos datos
introducidos (ropa sucia), nos devuelve unos datos tratados (ropa limpia). Puede parecer
difícil ver la ropa como un dato, pero fijémonos ahora en el ejemplo del vídeo. En este
caso tenemos un programa que nos permite, a partir de unos datos de entrada (hora de
inicio, hora de final, cadena y los datos de la antena de televisión), obtener unos datos de
salida (un programa en una cinta de vídeo).
Así pues podríamos decir que cualquier programa informático (y, generalizando,
cualquier programa) realiza un conjunto de instrucciones de manera qué, a partir de una
situación y de unos datos iniciales, llegar a una situación y a unos datos finales.

Actividades
1. Escribe un programa que permita a una persona desplazarse desde tu domicilio
hasta el ayuntamiento de tu localidad. ¿Qué instrucciones has utilizado? Escríbelas.
2. Escribe un programa que permita a un robot que sólo sabe interpretar las siguientes
instrucciones: ir a comedor, coger silla, dejar silla, ir a dormitorio; mover seis sillas del
comedor al dormitorio.
3. Escribe un programa que permita a una persona hacer una tortilla de patatas para
dos personas.
4. Modifica el programa que has hecho para la actividad anterior de manera que
permita a una persona hacer una tortilla de patatas para 2, 4 o 6 personas según el
número de invitados que tenga.

3. Lenguajes de programación.
Cuando debemos hacer un programa para un ordenador no podemos escribirlo de
cualquier manera. Una de las actividades del apartado anterior consistía en hacer un
programa que permitiese a un robot mover unas sillas de una habitación a otra. Ese
ejercicio especificaba que el robot sólo sabía interpretar cuatro instrucciones y por tanto
para poder “explicarle” qué tenía que hacer debíamos hacerlo sólo con ellas.
Cuando hacemos un programa para un ordenador nos encontramos en una situación
similar: no podemos explicarle con nuestras propias palabras qué tiene que hacer. El
ordenador es una máquina electrónica que funciona a base de impulsos eléctricos de
manera que, según pase o no electricidad por unos circuitos determinados, hace unas
cosas u otras. No vamos a entrar aquí en el sistema que utiliza el ordenador para trabajar,
pero lo que es importante que comprendamos es que no nos podemos comunicar con él
en su propio lenguaje (de impulsos eléctricos), ni en el nuestro. Por tanto, necesitamos
algún lenguaje que esté a medio camino entre lo que entiende el ordenador y lo que
podemos explicar nosotros.
Desde hace algún tiempo existen investigaciones tendentes a buscar una forma de
comunicación con los ordenadores lo más cercana posible al hombre. Sin embargo
todavía está lejos el día en que podamos hablar con los ordenadores y ellos nos
entiendan. Así pues, nos tenemos que conformar con lo que llamamos lenguajes de
programación, que no son más que “idiomas” que, simplificando casi siempre el inglés,
intentan facilitar la creación de programas.
2
Tema 1. Introducción a la programación

Cuando una persona quiere crear un programa lo primero que debe hacer es planificar
la tarea a realizar, analizar los datos de que dispone, saber exactamente cuál es el
resultado a obtener.

4. Historia de los lenguajes de programación.


A lo largo de los años, desde la creación de los ordenadores hasta ahora, muchos son
los diferentes lenguajes que se han usado para programar. Inicialmente el lenguaje
utilizado era el código máquina (un lenguaje que el procesador puede "entender" sin
traducción), pero ese "lenguaje" basado en códigos numéricos binarios (sólo con ceros y
unos) era difícil de utilizar y los programadores que lo usaban eran casi "seres de otro
planeta". Conforme se fueron construyendo más ordenadores hubo que buscar una
manera de poderlos programar de una forma más sencilla. Y aparecieron los
compiladores, programas capaces de traducir un conjunto de instrucciones escritas en un
lenguaje más o menos similar al humano, al código binario que el procesador es capaz de
entender.
En un primer momento los lenguajes de programación eran muy similares al lenguaje
máquina, muchas veces no eran más que transcripciones en letras de los los códigos
binarios. A ese tipo de lenguajes se les llama lenguajes de bajo nivel o lenguajes
ensamblador porqué están muy "abajo", muy cerca de la máquina.

3
Tema 1. Introducción a la programación

Más adelante fueron apareciendo lenguajes más cercanos al ser humano y, por tanto,
más alejados de la máquina. Son los lenguajes de alto nivel, los que suelen usarse hoy
en día. Pero lenguajes de programación hay muchos, muchísimos y por tanto se clasifican
de muy diversas formas. Aunque no entraremos aquí a ver diferentes clasificaciones de
lenguajes de programación sí que comentaremos algunos lenguajes de programación
para entender un poco mejor qué significa programar.
A continuación hay una lista no exhaustiva de lenguajes de programación con una
breve explicación sobre ellos:

Fortran. Es un lenguaje creado en el año 1957 para facilitar la creación de


programas de cálculo matemático.

Algol. Creado en 1958, se creó pensando en que fuese independiente del ordenador
en que se usase. A pesar de ser bastante completo y de que fue evolucionando, su
utilización quedó reducida básicamente al entorno académico. Se considera al Algol
como antecesor de los lenguajes C, Pascal, Modula y otros.

Lisp. Acrónimo de List Processing es un lenguaje muy diferente a Fortran y Algol.


Durante tiempo se consideró como un lenguaje modelo para la investigación en
inteligencia artificial.

Cobol. Es un lenguaje de programación creado en 1960 por un consorcio formado


por fabricantes de ordenadores y el gobierno de los Estados Unidos, con el fin de buscar
un lenguaje único que funcionase igual en todo tipo de ordenadores. Es un lenguaje
pensado sobre todo para facilitar la creación de programas de gestión y durante mucho
tiempo fue el rey en las aplicaciones de las grandes empresas. Todavía hoy pueden
encontrarse numerosos programas escritos en Cobol en dichas empresas.

4
Tema 1. Introducción a la programación

Basic (Beginner's All-purpose Symbolic Instruction Code). Es un lenguaje creado a


principios de los años 70 con el objetivo de facilitar el aprendizaje de programación.
Basado en parte en Fortran, era sencillo de programar, aunque en su momento tuvo
muchos críticos por no ser estructurado. Hoy en día una versión de Basic estructurado,
el Visual Basic, es habitualmente utilizado por programadores de todo el mundo.

Pascal. Creado por el profesor Niklaus Wirth a principio de los años 70, pretendía ser
un lenguaje destinado al aprendizaje de lo que se llama programación estructurada. A
diferencia del Basic inicial, nada estructurado, los programas en Pascal deben seguir
toda una serie de normas destinadas, sobre todo, a facilitar su comprensión y, por tanto,
su mantenimiento. Aunque se considera un lenguaje básicamente académico existe una
versión orientada a objetos, Delphi, de amplia utilización en entornos empresariales.

C. Creado en 1972 por Dennis Ritchie, es famoso por ser el lenguaje de


programación con el que se escribió el sistema operativo UNIX. Se considera un
lenguaje de nivel medio y hoy en día se utiliza en todas aquellas aplicaciones en la que
es más importante que el programa resultante sea rápido que la facilidad de
programación. Existe una versión orientada a objetos, el C++.

5
Tema 1. Introducción a la programación

Ada. Fue desarrollado por el Departamento de Defensa de los Estados Unidos para
tener un lenguaje común a todos los ordenadores que usaban. Su nombre es en
reconocimiento a Augusta Ada Byron, hija del poeta Lord Byron, considerada por
algunos como la primera programadora del mundo. Es uno de los primeros lenguajes en
permitir la ejecución de varios procesos simultáneamente dentro de un mismo
programa. Su sintaxis deriva del Pascal.

Prolog. Acrónimo de Programación Lógica. Prolog es un lenguaje de programación


que analiza estructuras lógicas y obtiene resultados a partir ellas.

Perl. Lenguaje de programación surgido con la idea de facilitar las tareas de


administración en UNIX pero usado como lenguaje de propósito general.

Java. Creado en el año 1995 por Sun Microsystems, Java es un lenguaje de


programación de propósito general pero con unas características que facilitan la
creación de programas que funcionen a través de Internet.

JavaScript. Nace en el año 1995 cuando Netscape introduce la versión 2.0 de


Navigator y lo incluye bajo eI nombre de Mocha (posteriormente pasaría a llamarse
LiveScript). Finalmente se le bautiza con el nombre de JavaScript (a pesar de no tener
relación con Java) para llamar la atención de los medios y la industria de Ia informática.

6
Tema 1. Introducción a la programación

Otros lenguajes de programación son PL/1, APL, B, Modula, RPG, Snobol, Eiffel,
Simula, Smalltalk, Clipper, PHP, o Phyton.

5. Compiladores e interpretes.
Los lenguajes de alto nivel siempre se traducen automáticamente a código de máquina,
pero has de saber qué hay dos tipos diferentes de traductores dependiendo de su modo
de funcionamiento: compiladores e intérpretes.

Un compilador lee completamente un programa en un lenguaje de alto nivel y lo


traduce en su integridad a un programa de código de máquina equivalente. El programa
de código de máquina resultante se puede ejecutar cuantas veces se desee, sin
necesidad de volver a traducir el programa original.
Un intérprete actúa de un modo distinto: lee un programa escrito en un lenguaje de
alto nivel instrucción a instrucción y, para cada una de ellas, efectúa una traducción a las
instrucciones de código de máquina equivalentes y las ejecuta inmediatamente. No hay
un proceso de traducción separado por completo del de ejecución. Cada vez que
ejecutamos el programa con un intérprete, se repite el proceso de traducción y
ejecución, ya que ambos son simultáneos.

Por regla general, los intérpretes ejecutarán los programas más lentamente, pues al
tiempo de ejecución del código de máquina se suma el que consume la traducción
simultánea. Además, un compilador puede examinar el programa de alto nivel abarcando
más de una instrucción cada vez, por lo que es capaz de producir mejores traducciones.
Un programa interpretado suele ser mucho más lento que otro equivalente que haya sido
compilado (típicamente entre 2 y 100 veces más lento).

6. Algoritmos.
Como ya decíamos en el apartado 3, antes de ponerse a programar es necesario
planificar el trabajo a realizar. Nosotros vamos a hacer parte de esa planificación
escribiendo en un papel una aproximación del programa que vamos a realizar. A esta
aproximación le llamaremos algoritmo. ¿Es necesario escribir un algoritmo antes de
escribir el programa? No, de hecho generalmente los programadores suelen escribir
directamente sus programas sin el paso previo de la creación del algoritmo. Sin embargo,
para aprender a programar es conveniente que nos acostumbremos a escribir primero el
algoritmo antes de ponernos con el programa. De esta manera podemos revisar con
facilidad Io que hacemos y modificar todo Io necesario antes de programar. Por otra parte,
el hecho de escribir el algoritmo primero, nos permite acostumbrarnos a pensar antes de
programar y nos dará agilidad para, en un futuro, poder programar directamente.
Por poner un ejemplo imaginemos un viajante que empieza a trabajar en una zona que
no conoce. Para poder llegar a todos los clientes que debe visitar un día, deberá primero
planificar su desplazamiento sobre el papel, para, de esta manera, no hacer más
kilómetros de los necesarios. Cuando lleve un tiempo recorriendo la zona, será capaz de
planificar el recorrido en función de los clientes a visitar sin necesidad de usar el papel. De
igual manera, para ahorrarnos trabajo y tiempo, nosotros debemos empezar por
"planificar" nuestros programas sobre el papel. Una vez tengamos soltura ya podremos
hacerlo directamente... ¡Aunque una planificación previa sobre el papel siempre será
provechosa!
Podemos expresar los algoritmos en lenguaje natural, pues el objetivo es comunicar un
procedimiento resolutivo a otras personas y, eventualmente, traducirlos a algún lenguaje
de programación. Si, por ejemplo, deseamos calcular la media de tres números leídos de
teclado podemos seguir este algoritmo:
7
Tema 1. Introducción a la programación

1. solicitar el valor del primer número,


2. solicitar el valor del segundo número,
3. solicitar el valor del tercer número,
4. sumar los tres números y dividir el resultado por 3,
5. mostrar el resultado.

Como puedes ver, esta secuencia de operaciones define exactamente el proceso que
nos permite efectuar el cálculo propuesto.
Los algoritmos son independientes del lenguaje de programación. Describen un
procedimiento que puede ser implementado en cualquier lenguaje de programación de
propósito general o, incluso, que puedes ejecutar a mano con lápiz, papel y, quizá, la
ayuda de una calculadora.
¡Ojo! No es cierto que cualquier procedimiento descrito paso a paso pueda
considerarse un algoritmo. Un algoritmo debe satisfacer ciertas condiciones. Una analogía
con recetas de cocina (procedimientos para preparar platos) te ayudará a entender dichas
restricciones.
Estudia esta primera receta:

1. poner aceite en una sartén,


2. encender el fuego,
3. calentar el aceite,
4. coger un huevo,
5. romper la cáscara,
6. verter el contenido del huevo en la sartén,
7. aderezar con sal,
8. esperar a que tenga buen aspecto.

En principio ya está: con la receta, sus ingredientes y los útiles necesarios somos
capaces de cocinar un plato. Bueno, no del todo cierto, pues hay unas cuantas cuestiones
que no quedan del todo claras en nuestra receta:

¿Qué tipo de huevo utilizamos?: ¿un huevo de gallina?, ¿un huevo de rana?
¿Cuánta sal utilizamos?: ¿una pizca?, ¿un kilo?
¿Cuánto aceite hemos de verter en la sartén?: ¿un centímetro cúbico?, ¿un litro?
¿Cuál es el resultado del proceso?, ¿la sartén con el huevo cocinado y el aceite?

En una receta de cocina hemos de dejar bien claro con qué ingredientes contamos y
cuál es el resultado final. En un algoritmo hemos de precisar cuáles son los datos del
problema (datos de entrada) y qué resultado vamos a producir (datos de salida).
Esta nueva receta corrige esos fallos:


Ingredientes: 10 cc. de aceite de oliva, una gallina y una pizca de sal.

Método:

1. esperar a que la gallina ponga un huevo,


2. poner aceite en una sartén,
3. encender el fuego,
4. calentar el aceite,
5. coger el huevo,
6. romper la cáscara,
7. verter el contenido del huevo en la sartén,
8
Tema 1. Introducción a la programación

8. aderezar con sal,


9. esperar a que tenga buen aspecto.

Presentación: depositar el huevo frito, sin aceite, en un plato.

Pero la receta aún no está bien del todo. Hay ciertas indefiniciones en la receta:

¿Cuán caliente ha de estar el aceite en el momento de verter el huevo?,


¿humeando?,¿ardiendo?
¿Cuánto hay que esperar?, ¿un segundo?, ¿hasta que el huevo esté ennegrecido?
Y aún peor, ¿estamos seguros de que la gallina pondrá un huevo? Podría ocurrir que
la gallina no pusiera huevo alguno.

Para que la receta esté completa, deberíamos especificar con absoluta precisión
cada uno de los pasos que conducen a la realización del objetivo y, además, cada uno de
ellos debería ser realizable en tiempo finito.
No basta con decir más o menos cómo alcanzar el objetivo: hay que decir
exactamente cómo se debe ejecutar cada paso y, además, cada paso debe ser realizable
en tiempo finito. Esta nueva receta corrige algunos de los problemas de la anterior, pero
presenta otros de distinta naturaleza:

Ingredientes: 10 cc. de aceite de oliva, un huevo de gallina y una pizca de sal.

Método:

1. poner aceite en una sartén,


2. encender el fuego a medio gas,
3. calentar el aceite hasta que humee ligeramente,
4. coger un huevo,
5. romper la cáscara con el poder de la mente, sin tocar el huevo,
6. verter el contenido del huevo en la sartén,
7. aderezar con sal,
8. esperar a que tenga buen aspecto.

Presentación: depositar el huevo frito, sin aceite, en un plato.

El quinto paso no es factible. Para romper un huevo has de utilizar algo más que «el
poder de la mente». En todo algoritmo debes utilizar únicamente instrucciones que
pueden llevarse a cabo.
He aquí una receta en la que todos los pasos son realizables.

Ingredientes: 10 cc. de aceite de oliva, un huevo de gallina y una pizca de sal.

Método:

1. poner aceite en una sartén,


2. sintonizar una emisora musical en la radio,
3. encender el fuego a medio gas,
4. echar una partida al solitario,
5. calentar el aceite hasta que humee ligeramente,
6. coger un huevo,
7. romper la cáscara,
9
Tema 1. Introducción a la programación

8. verter el contenido del huevo en la sartén,


9. aderezar con sal,
10. esperar a que tenga buen aspecto.

Presentación: depositar el huevo frito, sin aceite, en un plato.

En esta nueva receta hay acciones que, aunque expresadas con suficiente precisión y
siendo realizables, no hacen nada útil para alcanzar nuestro objetivo (sintonizar la radio y
jugar a las cartas). En un algoritmo, cada paso dado debe conducir y acercarnos más
a la consecución del objetivo.
Hay una consideración adicional que hemos de hacer, aunque en principio parezca una
obviedad: todo algoritmo bien construido debe finalizar tras la ejecución de un número
finito de pasos.
Aunque todos los pasos sean de duración finita, una secuencia de instrucciones puede
requerir tiempo infinito. Piensa en este método para hacerse millonario:

1. comprar un número de lotería válido para el próximo sorteo,


2. esperar al día de sorteo,
3. cotejar el número ganador con el nuestro,
4. si son diferentes, volver al paso 1; en caso contrario, somos millonarios.

Como ves, cada uno de los pasos del método requiere una cantidad finita de tiempo,
pero no hay ninguna garantía de alcanzar el objetivo propuesto.
En adelante, no nos interesarán más las recetas de cocina ni los procedimientos para
enriquecerse sin esfuerzo (¡al menos no como objeto de estudio de la asignatura!). Los
algoritmos en los que estaremos interesados son aquellos que describen procedimientos
de cálculo ejecutables en un ordenador. Ello limitará el ámbito de nuestro estudio a la
manipulación y realización de cálculos sobre datos (numéricos, de texto, etc.).
Un algoritmo debe poseer las siguientes características:

Ha de tener cero o más datos de entrada.


Debe proporcionar uno o más datos de salida como resultado.
Cada paso del algoritmo ha de estar definido con exactitud, sin la menor
ambigüedad.
Ha de ser finito, es decir, debe finalizar tras la ejecución de un número finito de
pasos, cada uno de los cuales ha de ser ejecutable en tiempo finito.
Debe ser efectivo, es decir, cada uno de sus pasos ha de poder ejecutarse en tiempo
finito con unos recursos determinados (en nuestro caso, con los que proporciona un
sistema computador).

Además, nos interesa que los algoritmos sean eficientes, esto es, que alcancen su
objetivo lo más rápidamente posible y con el menor consumo de recursos.

Actividades
5. Diseña un algoritmo para calcular el área de un círculo dado su radio. Recuerda que
el área de un círculo es π veces el cuadrado del radio.
6. Diseña un algoritmo que calcule el IVA (21%) de un producto dado su precio de
venta sin IVA.
7. ¿Podemos llamar algoritmo a un procedimiento que escriba en una cinta de papel
todos los números decimales de π?

10

También podría gustarte