Lenguajes imperativos

Anuncio
Lenguajes imperativos
Los lenguajes fundamentados en
secuencias de enunciados con
mecanismos de selección e iteración
Los más comúnmente utilizados
FORTRAN
lenguaje popular para el cómputo científico
se usa en cómputo de alto rendimiento y paralelo
varias versiones (77, 90 - todavía en uso)
paquete gfortran, entre otras opciones
en mayúscula
sin palabras reservadas
http://www.stanford.edu/class/me200c/tutorial_77/
http://math.asu.edu/files/support/docs/unix/prof77.pdf
¿Ejemplo?
Chequen nuestro ejemplo clásico en
http://www.scriptol.com/programming/fibonacci.php
ALGOL
Algorithmic Language
También varias versiones (60, 68)
El espacio blanco no importa
Ni en nombres de variables
En vez de paréntesis, cierra con palabras clave
begin y end separan un bloque (para ciclos)
Una condición if se cierra con fi
Sobrecarga de operadores
Soporte para el paralelismo
Buen tutorial en PDF por A. Tanenbaum
http://www.algol68.org/ y http://sourceforge.net/projects/algol68/files/
¿Ejemplo?
COBOL
manipulación de archivos y tablas
muy utilizado en software de negocios
paquete open-cobol en ubuntu
Pues, chequen aquí y comparen:
http://rosettacode.org/wiki/Main_Page
http://www.csis.ul.ie/cobol/
http://groups.engin.umd.umich.edu/CIS/course.des/cis400/cobol/cobol.html
IF SequentialRead
READ SupplierFile NEXT RECORD
AT END SET EndOfFile TO TRUE
END-READ
PERFORM UNTIL EndOfFile
PERFORM DisplayRecord
READ SupplierFile NEXT RECORD
AT END SET EndOfFile TO TRUE
END-READ
END-PERFORM
END-IF
Código de http://www.csis.ul.ie/cobol/examples/Relative/ReadRel.htm
COBOL
manipulación de archivos y tablas
muy utilizado en software de negocios
paquete open-cobol en ubuntu
http://www.csis.ul.ie/cobol/
http://groups.engin.umd.umich.edu/CIS/course.des/cis400/cobol/cobol.html
¡Hasta para la web!
IF SequentialRead
READ SupplierFile NEXT RECORD
AT END SET EndOfFile TO TRUE
END-READ
PERFORM UNTIL EndOfFile
PERFORM DisplayRecord
READ SupplierFile NEXT RECORD
AT END SET EndOfFile TO TRUE
END-READ
END-PERFORM
END-IF
Código de http://www.csis.ul.ie/cobol/examples/Relative/ReadRel.htm
Pascal
relativamente simple
usado en educación como “introducción” a
lenguajes como C y Java
muchas opciones para imprimir en terminal
colores y “ventanas”
punteros
paquete fpc en ubuntu
http://www.learn-programming.za.net/
Ejemplos disponibles en los sitios web ya mencionados
Basic
#include <stdio.h>
C
int main(int argc, void* args) {
CAPÍTULO 7. PROGRAMACIÓN
int i, prev = 0, curr = 1, temp; 135
printf("Hello, world!\nF(1-10): 0 ");
for (i = 0; i < 10; i++) {
Beginner's All-purpose Symbolic Instruction Code
Seguidor
del
lenguaje
temp
=compiladores.
curr; B
De
hecho,
gccutilizado
no es un
compilador,
pero un conjunto
de
Desde su página
igual
que Pascal,
por sólo
muchos
como “un
curr
=
prev
+
curr;
Muchas
versiones;
estándarizado
por el ANSI
primer escalón” a la programación
http://gcc.gnu.org/
uno puede descargar otras herramientas
útiles
también.
En la página
prev =gcc
temp;
Compilador
(multiplataforma)
atención especial a mensajes de error claros
http://www.thefreecountry.com/compilers/cpp.shtml
hay
lista larga de comprintf("%d
", una
curr);
En
OS
X,
instalen
XCode
muchas versiones
}
piladores
gratuitos para C y C++. El uso de librerías adicionales
es común en los programas
http://www.fact-index.com/b/ba/basic_programming_language.html
printf("\nBye!\n");
Librerías
enscritos
en C para
o C++.
Un ejemplo
de tales librerías es BOOST
[5].
return
0;
mucho software
diferentes
plataformas
http://www.gnu.org/s/libc/manual/html_node/index.html
} http://www.acm.uiuc.edu/webmonkeys/book/c_guide/
en Ubuntu, prueben Gambas IDE
Para fines de demostración, incluyemos un programa muy pequeña que no hace nada muy impresionante: para intentar a compilar, ejecutar y modificar el programa, se supone que lo tengan
Ejemplos disponibles en los sitios web ya mencionados
Al compilar, por defecto el ejecutable creado
guardado en un archivo cprog.c:
-o se puede dirigirlo directamente bajo otro n
#include <stdio.h>
int main(int argc, void* args) {
int i, prev = 0, curr = 1, temp;
printf("Hello, world!\nF(1-10): 0 ");
for (i = 0; i < 10; i++) {
temp = curr;
curr = prev + curr;
prev = temp;
printf("%d ", curr);
}
printf("\nBye!\n");
return 0;
}
> gcc cprog.c
> ./a.out
Hello, world!
F(1-10): 0 1 2 3 5 8 13 21 34 55 89
Bye!
> gcc -o fibo cprog.c
> ./fibo
Hello, world!
F(1-10): 0 1 2 3 5 8 13 21 34 55 89
Bye!
>
de C++pero
están
Al compilar, por defecto el ejecutable creado reside Los
en elprogramas
archivo a.out,
concompuestas
la opción por cl
Gramáticas
Reporte
Comúnmente expresados en el formato Backus-Naur
Herramientas como Lex y Yacc las usan como entrada
Definiciones disponibles en línea en sus formatos de entrada
Para mejor entender las diferencias entre lenguajes,
pueden comparar sus gramáticas
http://www.devincook.com/GOLDParser/grammars/
cuatro programas de su elección
cada uno en un lenguaje imperativo distinto
en el blog, como siempre
Descargar