ABC, un lenguaje de programación para enseñar programación

Es un lenguaje interactivo fácil de aprender y aún más fácil de usar. Posee cinco tipos de dato:

  • números (sin límite de longitud)
  • textos (sin límite de longitud)
  • compounds (registros sin nombres de campo)
  • listas (colecciones ordenadas de algún tipo ó ítem)
  • tablas (arreglos generalizados de algún tipo)

El lenguaje es fuertemente tipado pero sin declaraciones, los tipos son determinados según el contexto.

Podría ser mucho más adecuado usar un lenguaje como este en cursos de iniciación a la programación pues:

  • Deja tiempo para centrarse en los principios de la programación (al trabajar con principiantes usando un lenguaje como Pascal, C ó Java se pierde más tiempo en detalles del lenguaje que en la programación)
  • Proporciona un fuerte soporte para la programación estructurada (es incluso más estructurado que Pascal). Incluye refinamientos para diseño Top-Down, posee poderosos tipos de dato, incluyendo tablas, de modo que los algoritmos pueden ser escritos a un nivel de abstracción suficiente.
  • Permite que el alumno desarrolle ejercicios interesantes desde el principio. Con otros lenguajes es problemático plantear ejercicios más allá de rutinarias operaciones con números (sume todos los números del 1 al 100, obtenga todos los primos menores que 100, llene un arreglo con valores enteros, etc. que pueden generar malos hábitos de programación y, muy frecuentemente, desinterés por la programación).
  • Los códigos creados en ABC son un quinto en extensión que los implementados con otros lenguajes
  • ABC es interactivo (interpretado) eliminando el ciclo editar-compilar-ejecutar de otros lenguajes.
El interpete ABC puede bajarse para Window, Linux ó Mac desde http://homepages.cwi.nl/~steven/abc/implementations.html

Si lo baja para windows copie la carpeta ABC que hay dentro del RAR hasta la carpeta “C:\Archivos de Programa”.

Para ejecutarlo use alguno de los accesos disponibles dentro de esa carpeta, según su versión de windows (ABC2000, ABCxp, ABC98…desde Windows Vista use ABCxp) pero previamente debe editar el archivo abc.dat y modificar la ruta ya que por defecto viene “Program files”.

Si hace lo recién explicado podrá entrar al entorno de programación ABC y comenzar a manejar el lenguaje.

Como una ayuda al usuario las instrucciones se autocompletan automáticamente a medida que usted escribe bastando pulsar la tecla de tabulación para que sea aceptada, pasando al siguiente elemento de la línea que se está escribiendo. En aquellos lugares de esa línea en que se requiere que usted escriba algún valor ó variable aparece un signo de interrogación).

Pulsando ? y luego Aceptar podrá ver una ayuda muy completa.

Un manual de referencia para conocer sus funciones y sentencias se puede encontrar en:
http://homepages.cwi.nl/~steven/abc/qr.html

A continuación varios ejemplos para que practique:

EJEMPLOS CON NÚMEROS:

  • Los números no tiene límite, son almacenados de modo exacto:
WRITE 2**1000

mostrará:
10715086071862673209484250490600018105614048117055336074437503883703510511

24936122493198378815695858127594672917553146825187145285692314043598457757
46985748039345677748242309854210746050623711418779541821530464749835819412
67398767559165543946077062914571196477686542167660429831652624386837205668
069376

pues usa representación exacta (¿puede hacer esto en C ó Java?)

  • Los números irracionales son expresados con precisión de la máquina:
WRITE root 2

mostrará:
1.414213562373095 pues respeta la precisión usada por el computador


EJEMPLOS CON TEXTOS:

  • Los textos se manejan sin límite:
PUT (”ja ” ^^ 3) ^ (”jo ” ^^ 3) IN risa
WRITE risa

mostrará:
ja ja ja jo jo jo pues “ja” se repitió, se elevó a 3 y “jo” también

WRITE #risa

mostrará
18 pues # signfica “longitud de…” y este caso es 18

PUT “Bienvenido!”^^1000 IN saludo
WRITE #saludo

mostrará:
11000 pues la variable tiene longitud 11 y ese valor fué elevada a 1000

WRITE saludo|4

mostrará:
Bien pues el símbolo | siginifica extrar subcadena de largo 4

WRITE saludo@4|3

mostrará:
nve pues el símbolo @ significa extraer subcadena “desde posición indicada”

EJEMPLOS CON LISTAS:

  • Las listas son valores ordenados de cualquier tipo:

WRITE {1..10}

mostrará:
{1; 2; 3; 4; 5; 6; 7; 8; 9; 10}

PUT {1..10} IN k
REMOVE 5 FROM k
INSERT 4 IN k
INSERT pi IN k
WRITE k

mostrará:
{1; 2; 3; 3.141592653589793; 4; 4; 6; 7; 8; 9; 10}

  • Se pueden manejar listas de listas

PUT {} IN w
FOR i IN {1..3}:INSERT {1..i} IN w
WRITE w

mostrará:
{{1}; {1; 2}; {1; 2; 3}} pues a la lista incialmente vacía se fueron agregando lista de largo creciente

FOR j IN w: WRITE j /

mostrará:

{1}
{1; 2}
{1; 2; 3} puse / signfica “bajada de linea”

WRITE #w

mostrará:
3 pues la lista w posee 3 elementos

EJEMPLOS CON COMPUNDS:

PUT (”Raíz cuadrada de 2 es “, root 2) IN c
WRITE c

mostrará:
(”Raíz cuadrada de 2 es “, 1.414213562373095)

PUT c IN nombre, valor
WRITE nombre

mostrará:
Raíz cuadrada de 2 es

WRITE valor

mostrará:
1.414213562373095

EJEMPLOS CON TABLAS:

  • Las tablas se parecen a los arreglos, pero el índice puede ser hasta un texto

PUT {} IN tel
PUT 734054 IN tel["Hugo"]
PUT 734098 IN tel["Paco"]
PUT 734134 IN tel["Luis"]

WRITE tel["Paco"]

mostrará:
734098 pues ese el valor guardado en posición “Paco” del arreglo

WRITE tel

mostrará:
{["Hugo"]: 734134; ["Paco"]: 734054; ["Luis"]: 734098}

WRITE keys tel
{”Hugo”; “Paco”; “Luis”}

FOR i IN keys tel: WRITE i, “:”, tel[i] /

mostrará:

Hugo: 734134
Paco: 734054
Luis: 734098


Ultimos 5 artículos escritos por Gaston-Contreras