Introduccion a la Programación.

Diego Saravia, dsa@unsa.edu.ar

Enero, 2002. V0.1

Este texto esta dirigido a chicos entre 8 y 12 años de edad. Todavia requiere muchas mejoras.

Considero que para cualquier chico/a con orientación o gusto por las matematicas, el lenguaje o el conocimiento abstracto, tener nociones de programación puede ser una importante herramienta conceptual en su proceso de adquisición del conocimiento. La programación es un conocimiento activo, asi como el software es información viva. Su interes reside en que se puede hacer cosas muy concretas con él. Un lenguaje de acciones, que produce y modifica el mundo que lo rodea. Un conocimiento que provee un modelo que brinda analogias con muchas otras cuestiones de la vida.

Cualquier sugerencia,critica o ayuda con su redacción, es bienvenida.

Que es una computadora

Una computadora es una maquina que ejecuta órdenes una por una y cada tanto recibe interrupciones desde sus periféricos.

  1. Algunas ordenes le indican que lea información desde sus perifericos.

  2. Otras que entrege informacion a través de sus periféricos.

  3. Con otras almacena y lee información permanente de su disco duro (otro periferico) y transitoria en su memoria;

  4. Puede tambien modificar (procesar) la información con algunas instrucciones.

Las ordenes o instrucciones son una forma más de información, denominadas programas o software, que habitualmente residen en la memoria de la computadora, y que en la mayoría de los casos son puestas alli leyendolas del disco duro.

Las instrucciones se van ejecutando secuencialmente al compas de un reloj interno, habitualmente relacionado con la capacidad de velocidad del procesador, hasta que una interrupcion hace cambiar el programa en ejecución.

Periféricos son los elementos o dispositivos que se conectan a una computadora, como placas de video y monitores, teclado, placas de red, impresoras, puertas usb, etc...

La computadora siempre se encuentra ejecutando un programa, aunque aparentemente no haga nada, siempre esta haciendo algo, aunque esto sea inutil.

Cuando alguien apreta una tecla, mueve el raton o cualquier otra acción sobrela computadora se interrumpe el programa que esta esta ejecutando y se ejecuta otro que lee los datos que llegan del dispositivo interruptor. Procesada la interrupcion el computador continua ejecutando sus programas eventualmente afectado por los datos recibidos.

El programa principal que se ejecuta y controla todas estas operaciones básicas se llama Sistema Operativo. Dos sistemas operativos muy conocidos son GNU/Linux y Windows, siendo el primero libre, es decir que se puede inspeccionar el codigo fuente y se posee la libertad de modificarlo y distribuirlo y siendo el segundo cerrado, ni modificable, ni distribuible y se debe pagar un derecho o licencia por su uso.

Para realizar estas cosas las computadoras tienen:

La información permanente de los discos duros se organiza en archivos.

Los archivos son secuencias ordenadas de bits. (unos y ceros)

Podemos agrupar los bits de a 8. Estos grupos se denominan bytes. Hay 2^8 = 256 diferentes posibles bytes.

Cada uno de estos bytes puede representar una letra, numero u otro simbolo especial, o en general caracteres, según el código ASCII.

Por lo tanto podemos decir que los archivos son secuencias de caracteres .

En un disco duro se suelen agrupar los archivos en directorios. En un directorio se pueden apuntar varios arhivos u otros subdirectorios. Puede haber uno o varios directorios raices. En gnu/linux, o Unix en general, se usa un solo directorio raiz y se montan los discos en algun directorio como un subdirectorio mas. En DOS y Windows a cada disco se le asigna una letra o nombre, aunque en las ultmas versiones de Windows ya se intenta simular un solo arbol en el entorno grafico al menos.

Los directorios entonces aparecen conteniendo archivos, y existen uno o varios arboles de directorios por maquina.

Es cierto que las computadoras solo hacen lo que se les instruye. El tema es que hay formas de instruirlas en que no sabemos cual es el resultado de las mismas.

Programas

Son un conjunto de instrucciones, como una receta de cocina, escritos en un leguaje que la computadora puede ejecutar.

Para ejecutar un programa, se hace click en el raton sobre su icono, o se escribe el nombre del programa en un cuadro especial o su nombre en una terminal de texto.

Usaremos el metodo de la terminal de texto para ejecutar programas. En DOS o Windows esta terminal es bastante primitiva, utilizando para interactuar un programa denominado command.com. En Gnu/Linux se trabaja con una terminal muy sofisticada interactuando con un programa denominado bash

Tanto bash como command.com se encargan de cargar el programa deseado en la memoria de la maquina y lograr que se ejecute.

Los humanos escribimos programas en lenguajes que comprendemos, generalmente estos programas se guardan en archivos, usando un programa editor de texto.

Podemos usar en DOS/Windows el programa Edit o Emacs, en gnu/linux usaremos pico, nano o emacs.

Se han inventado muchos lenguajes para dar ordenes a una computadora:

C, basic, pascal, lisp, perl, bash, sed, awk, expresiones regulares, etc.

Otros programas como los compiladores y los interpretes traducen estos Codigos Fuente en Codigos ejecutables que cada Computador entiende.

Uno de los principales problemas que tiene el sistema operativo Windows, es que su dueño no quiere que veamos ni usemos, los códigos fuentes de sus programas. Para ganar dinero restringe nuestra libertad y posibilidad de aprender, por eso usamos GNU/Linux.

Usaremos perl y le pediremos al perl que interprete el programa deseado encargandose este ultimo de ejecutar nuestras instrucciones.

Entonteces pondremos en nuestra terminal:

perl archivo_con_nuestro_programa

por ejemplo:

perl programa.pl

Le daremos al archivo con nuestro programa una extension .pl para indicar que es un programa perl. (no es necesario, pero si conveniente)

Perl

¿Porque Perl?

En el anexo se explica como instalar y usar perl en tu computadora.

1) Salida de datos:

print “Hola Mundo\n”;

o

print 1;

Son instrucciones para imprimir: una el texto Hola Mundo y otra el numero 1.

print 1+2;

imprime 3.

Por ahora solo usaremos la instrucción print para que el programa entrege información.

Algunos detalles:

Toda orden en perl debe terminar en ; para que el programa sepa cuando termina una y empieza la otra. Los programas perl son una lista o secuencia de ordenes que se van ejecutando una a una. No empieza una hasta que termina la anterior.

Los textos deben ir entre comillas para que el programa sepa donde empieza y termina cada texto y no los confunda con un comando del perl como print. Los numeros no requieren comillas.

\n es como una letra mas, simplemente indica cuando debe cambiar el renglon . Es como el aparte en un punto y aparte.

2) Variables:

Los programas no siempre hacen lo mismo. Seria bastante tedioso hacer un programa nuevo cada vez que se quiera sumar dos numeros diferentes. Por eso se inventaron las variables.

Perl tiene pocos pero importantes tipos de variables. En este trabajo solo usaremos las denominadas variables escalares, para nosotros variables

print $a;

Indica a la computadora que imprima lo que contiene la variable $a. Toda variable escalar tiene que ser escrita con $ al comienzo. Asi el programa sabe que es una variable y no una instrucción, un número o un texto fijo.

$a=5;

es una instrucción que indica al programa que a partir de ese momento $a vale 5, Le asigna 5 a la variable $a.

$a=$b.$c

indica que $a es la concatenacion de las variables $b y $c, asi:

$b=”Hola”;

$c=”Diego”;

$d=” “;

$a=$b.$d.$c.”\n”;

print $a;

Imprimira Hola Diego y cambiara de renglon.

$a= “Hola”;

$b=1;

print $b +5;

print “ “.$a.” “.$b.”\n”;

Imprimira 6 Hola 1 y cambiara de renglon.

3) Elementos del idioma

Asi como en un lenguaje humano natural hay verbos, proposiciones, y otros organizados en sujeto, predicado y demas en las frases, los lenguajes de computadora tienen su sintaxis. Hemos visto hasta ahora los siguientes elementos lexicos constitutivos:

  1. los numeros y los textos

  2. las variables para almacenarlos: escalares,

  3. las operaciones: suma (+) y concatenacion (.)

  4. las instrucciones: print

Operaciones

Otras operaciones son +, -, *, /

$a=sqrt 5;

coloca la raiz cuadrada de 5 en $a.

sqrt es una funcion del perl , otro tipo de instrucción que calcula la raiz cuadrada..

$b=sqrt $a;

coloca en $b la raiz de $a.

print 3 + 4 + $a * (sqrt $b + 3) + 5/3;

hace lo que tiene que hacer

4) Ingreso de datos

Como le damos datos a un programa desde afuera del mismo?

escribimos

print “Ingrese: ”;

$a=<>;

print “Ud ingreso “.$a.”\n”;

en el archivo programa.pl

y ejecutamos el programa.

El programa se quedara esperando el ingreso del dato.

Cuando demos ENTER el dato ingresara y el programa lo tomará

Se destaca entonces el operador “diamante” para el ingreso de datos al programa.

Este operador captura toda una linea.

5) Control

Para tener una vision completa de un program necesitamos un elemento mas:

¿Como toma decisiones un programa?

if ($a >1){

print “A es mayor que uno\n”;

}else{

print “A es menor o igual que uno\n”;

}

operadores para tomar decisiones hay muchos.

> el valor es mayor

>= el valor es mayor o igual

< el valor es menor

<= el valor es menor o igual

== el valor es igual

!= el valor es diferente

gt el texto esta despues en el alfabeto

ge el texto esta despues o en el mismo lugar en el alfabeto

lt el texto esta antes en el alfabeto

le el texto esta antes o en el mismo lugar en el alfabeto

eq el texto es igual

ne el texto es diferente

Ciclos:

foreach $a (1,2,45,”diego”,9){

print $a.”\n”;

}

ejecuta el comando print una vez por cada elemento en la lista, asignadole a $a el elemento de la lista

Si ponemos (2..8) ejecutara la secuencia de numeros 2,3,4,5,6,7,8

$a=5;

while($a<20){

print“$a \n”;

$a++;

}

El ciclo while repite las instrucciones en el bloque mientras se cumple la condicion.

Vemos dos cosas nuevas:

Notese que introducimos las instrucciones if else foreach y while, los operadores de control, y los { } que constituyen bloques que encierran codigo que se ejecuta solo cuando las instrucciones de control lo deseen.

Es decir que debemos hacer mas compleja la idea de lista ordenada de instrucciones. Las instrucciones se van ejecutando una a tras de otra, pero las sentencias de control a veces

cambian el orden o la secuencia a ejecutar.

Archivos

Se puede redirigir la salida de un programa hacia un archivo ejecutando de esta manera:

perl archivo.pl >pepito

En vez de imprimir en la pantalla graba los resultados en el archivo pepito

perl archivo.pl < entrada

toma los datos del archivo entrada.

perl archivo1.pl < opa | perl archivo2.pl > juan

archivo1 lee los datos del archivo opa, los envia al programa archivo2.pl y este los guarda en juan.

Tenemos entonces tres operadores del programa command.com o bash > < |, se llaman operadores de redireccion y permiten a tus programas leer y guardar datos de archivos.

Un paso mas

Con estos elementos se puede hacer muchas cosas, todo, diria alguien.

Es cuestion de acomodar los elementos dados, de las formas que a uno se le ocurra.

Si falta algo siempre se puede buscar.

Un programa interesante es el perl – logo.

Logo es un programa para enseñar a programar a niños, es un lenguaje en que se indica a una tortuga como moverse, y esta tortuga va dejando una estela en la pantalla, con lo que dibuja.

Se encuentra en cpan en la seccion de scripts.

8)Más Información.

En el sitio http://www.cpan.org se encuentra muchisima informacion sobre perl.

Existen exelentes libros como el del camello: “Programing Perl ” del creador del lenguaje: Larry Wall, Tom Christiansen y Randal Schwartz, o “Perl Cookbook“ de Tom Christiansen y Nathan Torkington. con cientos de ejemplos. Perl contiene abundante documentacion que se puede consultar, con el programa perldoc

perldoc perl

da una primera guia.

ANEXO

Instalacion en gnu/linux:

No es necesario, en general Perl viene preinstalado

Hay muchos editores a disposicion.

En particular usando Ututo http://www.ututo.org se puede utilizar Perl sin instalar nada en la PC.

En Windows:

En el Disco compacto Software libre para Windows, producido en la UNSa, se encuentran varias versiones de perl incluso algunas que funcionan en XT.

Para maquinas nuevas se puede usar ActivePerl, que solo se encuentra en la version del Disco Compacto disponible exclusivamente en la UNSa, (Active Perl es gratis pero no libre) pero que puede bajarse de internet del sitio:

http://www.activestate.com/Products/ActivePerl

y tiene un ejemplo denominado widget que muestra una interfaz grafica con PerlTk.

Las otras versiones de Perl se pueden tomar de la version del Disco disponible para cualquiera. Comoun Perl5 sin restricciones e incluso una vesion de Perl3 que funciona en los viejos PC y XT, con un solo archivo ejecutable.

Como editores se puede usar cualquiera, pero en particular:

Emacs:

http://www.gnu.org/software/emacs/windows/ntemacs.html

Luego de instalar se recomienda poner en el escritorio el acceso directo.

Se recomienda configurar el MSDOS en Windows para que se abra como una ventana mas del Windows.

Asi se podrá tener una ventana DOS y otra con el programa de edicion.

No toda la funcionalidad de Perl puede ser encontada en Windows, en principio porque windows no tiene todas las capacidades de un sistema multiusuario, multitarea, orientado a redes.