Introducción
Con este curso pretendemos dar una primera idea sobre técnicas de
programación a un nivel muy elemental y dirigido especialmente a
personas que no han tenido nunca un contacto con este mundo. Si tú ya
has trabajado con algún lenguaje de programación, este curso será muy
sencillo para ti, pero no dejará de sorprenderte si no has trabajado
nunca con lenguajes que derivan del LISP (cuya principal característica
es el trabajo con listas).
Antes de empezar con la descripción del curso conviene aclarar algunos
conceptos relativos a los lenguajes de programación para que sepamos de
qué estamos hablando.
Conceptos básicos
Un
lenguaje de
programación es un conjunto de símbolos y reglas
sintácticas y
semánticas
que definen su estructura y el significado de sus
elementos y
expresiones. Es utilizado para controlar el comportamiento físico y
lógico de una máquina.
Aunque muchas veces se usan los términos 'lenguaje de
programación' y 'lenguaje informático'
como si fuesen sinónimos, no tiene por qué ser así, ya que 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).
Un lenguaje de programación permite a uno o más programadores
especificar de manera precisa
sobre qué datos debe operar una computadora, cómo estos datos deben ser
almacenados o transmitidos y qué acciones debe tomar bajo una variada
gama de circunstancias. Todo esto, a través de un lenguaje que intenta
estar 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 puedan tener un conjunto común
de instrucciones que puedan ser comprendidas entre ellos para realizar
la construcción del programa de forma colaborativa.
Los procesadores usados en las computadoras son capaces de
entender
y actuar según lo indican programas escritos en un lenguaje fijo
llamado lenguaje de máquina.
Todo programa escrito en otro lenguaje puede ser ejecutado de dos
maneras:
- Mediante un programa
que va adaptando las instrucciones conforme son encontradas. A este
proceso se lo llama interpretar y a los programas
que lo hacen se los conoce como intérpretes.
- Traduciendo este programa al programa equivalente escrito
en lenguaje de máquina. A ese proceso se lo llama compilar
y al programa traductor se le denomina compilador.
Clasificación
de los lenguajes de programación
Lenguajes de Máquina
Están escritos en lenguajes directamente legibles por la
máquina
(computadora), ya que sus instrucciones son cadenas binarias (0 y 1).
Da la posibilidad de cargar (transferir un programa a la memoria) sin
necesidad de traducción posterior lo que supone una velocidad de
ejecución superior, solo que con poca fiabilidad y dificultad de
verificar y poner a punto los programas.
Lenguajes de bajo
nivel
Los lenguajes de bajo nivel son lenguajes de programación que
se
acercan al funcionamiento de una computadora. El lenguaje de más bajo
nivel por excelencia es el código
máquina. A éste le sigue el lenguaje ensamblador,
ya que al programar en ensamblador se trabajan con los registros de memoria
de la computadora de forma directa. Ejemplo:
;Lenguaje ensamblador, sintaxis Intel para procesadores x86
mov eax,1 ;mueve a al registro eax el valor 1
xor ebx, ebx ;pone en 0 el registro ebx
int 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)
Lenguajes de medio
nivel
Hay lenguajes de programación que son considerados por algunos expertos
como lenguajes de medio nivel (como es el caso del
lenguaje C)
al tener ciertas características que los acercan a los lenguajes de
bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo
hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.
Ejemplo:
/*Lenguaje C*/
/*declaración de las funciones estandars de entrada y salida*/
#include <stdio.h>
int main(int argc, char **argv)
{
char *p; /*creamos un puntero a un byte*/
if(argc == 1){
printf("\nIngrese un argumento al programa\n");/*imprimimos el texto*/
return 1;
}
p = 0x30000 /*el puntero apunta a 0x30000 */
*p = argv[1][0] /*el primer caracter del primer argumento lo copiamos a la posición 0x30000 */
return 0;
}
El ejemplo es muy simple y muestra a los punteros
de C, éstos no son muy utilizados en lenguajes
de alto nivel, pero en C sí.
Lenguajes de alto
nivel
Los lenguajes de alto nivel son normalmente fáciles de aprender
porque están formados por elementos de lenguajes naturales, como el
inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los
comandos como
"IF CONTADOR = 10 THEN STOP"
pueden utilizarse para pedir a la computadora que pare si el
CONTADOR
es igual a
10.
Esta forma de trabajar puede dar la sensación de que las computadoras
parecen comprender un lenguaje natural; en realidad lo hacen de una
forma rígida y sistemática, sin que haya cabida, por ejemplo, para
ambigüedades o dobles sentidos. Ejemplo:
{Lenguaje Pascal}
program suma;
var x,s,r:integer; {declaración de las variables}
begin {comienzo del programa principal}
writeln('Ingrese 2 números enteros');{imprime el texto}
readln(x,s); {lee 2 números y los coloca en las variables x y s}
r:= x + s; {suma los 2 números y coloca el resultado en r}
writeln('La suma es ',r); {imrpime el resultado}
readln;
end.{termina el programa principal}
Ese es el lenguaje Pascal, muy utilizado por principiantes al
aprender a programar
Como primera aproximación a un lenguaje de programación he elegido un
lenguaje de alto nivel y de tipo intérprete. Se trata del lenguaje
LOGO, un lenguaje diseñado específicamente para educación que nos
servirá para adquirir con facilidad hábitos saludables de programación.
El objetivo principal del curso no es terminar siendo un experto
programador ni dominar todas las instrucciones de este lenguaje, sino
aprender que
programar
consiste en enseñar al ordenador a hacer algo que tú ya sabes hacer
pero que es laborioso y/o tedioso. Para ello el alumno
tiene que asimilar una serie de técnicas que son las mismas sea cual
sea el lenguaje de programación que se utilice.
Existen numerosas versiones de LOGO en la red y me he decantado por una
denominada XLOGO. Todo lo que necesites saber sobre este programa y
algunos de los materiales que vamos a utilizar en este curso se pueden
consultar y/o descargar desde esta página:
Materiales necesarios para el desarrollo del curso
- Máquina
virtual de Java: Xlogo está implementado en otro lenguaje
de programación llamado Java. Para poder trabajar con Xlogo necesitas
tener instalada en tu ordenador la máquina virtual de java que puede
descargarse de forma gratuita desde la página de Sun Microsystems:
http://www.java.com/es/download/index.jsp
Es posible que ya la tengas instalada en tu ordenador y no sea
necesaria su instalación (de todas formas en la página anterior puedes
comprobar si ya la tienes instalada o no).
- Intérprete
de XLogo: Se trata del entorno en el que vamos a
programar. Tienes dos posibilidades:
- Si tienes acceso a Internet no es necesario instalar nada;
puedes ejecutar directamente el entorno desde la página de descargas de
XLogo: http://xlogo.tuxfamily.org/sp/descargas.html
y seguir el enlace que pone "Ejecutar XLogo en línea".
- Descargar el programa en tu ordenador y ejecutarlo sin
necesidad de estar conectado a Internet. El archivo que tienes que
descargar se llama xlogo.jar y se encuentra en esa misma página. No necesita
instalación: una vez descargado basta con ir a la carpeta en la que lo
has guardado y hacer doble clic sobre su icono. (Recuerda: esto solo funciona si
has instalado previamente la máquina virtual de java).
- Tutorial
del curso: Se trata de un documento en formato pdf que
contiene 10 unidades con explicaciones y ejemplos de cómo funciona el
entorno, las primitivas (o instrucciones del lenguaje XLogo) y cómo se
crean programas. Puedes descargarlo del siguiente enlace: Descargar tutorial.
En este documento se encuentra el grueso del curso. Se trata de ir
realizando las actividades que se proponen en él. No hay que enviar
esas actividades al profesor, pero se le pueden enviar mensajes para
consultar las dudas que vayan surgiendo a medida que se realizan esas
actividades. En el capítulo final del tutorial están las soluciones de
todas las actividades, pero te recomiendo que no las mires antes de
intentar hacerlas tú personalmente.
- Manual
de Logo: Se trata de un documento en formato pdf que puede
servir de referencia para explicar las distintas partes del entorno de
programación y que, además, contiene un listado con todas las
instrucciones del lenguaje. Nos vendrá muy bien para consultar la
ortografía y la sintaxis. Descarga el manual.
Además en la página oficial de XLogo mencionada más arriba existe un
completo curso de XLogo que puede consultarse si se quiere ampliar el
conocimiento de este lenguaje. Pero nosotros no vamos a seguirlo.
Método de trabajo
- Descarga e instala si es necesario los materiales indicados
en el apartado anterior.
- Lee el tutorial y ve realizando las actividades que se
indican en él. Puedes utilizar el manual como guía de referencia y
ayuda cuando lo necesites y también enviar mensajes al profesor para
realizar cualquier tipo de consulta sobre las actividades que estás
haciendo.
- Como actividad final debes realizar programas que resuelvan
las tareas que se indican a continuación y, éstas sí debes enviarlas al
profesor:
- Diseñar un programa que permita dibujar un polígono
regular con el número de lados y longitud de cada lado que se desee en
cada momento.
- Con ayuda del programa anterior diseñar un programa que
dibuje un tablero de ajedrez. El programa debe estar diseñado en forma
modular: es decir, debe descomponer el problema en problemas más
simples, diseñar un pequeño procedimiento para cada uno de esos
problemas simples y luego ensamblarlos todos en un procedimiento
principal que ejecute la tarea completa.
- Diseñar un programa que escriba todos los divisores de un
número entero cualquiera.
- Basado en el programa anterior diseñar un programa que
nos diga si un cierto número es primo o no.
- Diseñar un programa que conjugue el presente de
indicativo de cualquier verbo de la primera conjugación.
- Diseñar un programa que sirva para que un niño de
primaria practique las tablas de multiplicar. El programa debe generar
al azar la tabla de cualquier número entre 0 y 10 y a medida que va
preguntando debe esperar a que el alumno responda desde el teclado,
luego debe valorar si la respuesta es buena o mala e ir contando los
aciertos y fallos. Después de preguntar la tabla entera de ese número
debe indicar el número de aciertos y fallos y debe preguntar si se
quiere volver a empezar.