Vous êtes sur la page 1sur 50

Direccin general de educacin superior tecnolgica

Instituto Tecnolgico De Acapulco

Ingeniera En Sistemas Computacionales


Materia: Fundamentos de Ingeniera de Software
Horario: 15:00 17:00
Aula: 705
Trabajo de Investigacin
Profesor: Jimnez Vzquez Mario
Alumno: Carbajal Saturnino Juan Luis
No. Control: 12320686

ndice
Lenguajes Orientados a Procedimientos.................................................................................... 4
Fortran.................................................................................................................................. 4
Requerimientos para su instalacin........................................................................................ 4
Caractersticas.................................................................................................................... 4
Ventajas y Desventajas........................................................................................................ 5
Tipos de datos.................................................................................................................... 5
Instrucciones de control....................................................................................................... 6
Manejo de archivos........................................................................................................... 12
Ejemplo........................................................................................................................... 13
Cobol.................................................................................................................................. 14
Requerimientos para su instalacin...................................................................................... 14
Caractersticas.................................................................................................................. 15
Ventajas y Desventajas...................................................................................................... 16
Tipos de datos.................................................................................................................. 16
Instrucciones de control..................................................................................................... 18
Manejo de archivos........................................................................................................... 19
Ejemplo........................................................................................................................... 19
Pascal................................................................................................................................ 21
Requerimientos para su instalacin...................................................................................... 21
Caractersticas.................................................................................................................. 22
Ventajas y Desventajas...................................................................................................... 22
Tipos de datos.................................................................................................................. 23
Instrucciones de control..................................................................................................... 23
Manejo de archivos........................................................................................................... 27
Ejemplo........................................................................................................................... 29
BASIC................................................................................................................................ 31
Requerimientos para su instalacin...................................................................................... 31
Caractersticas.................................................................................................................. 32
Ventajas y Desventajas...................................................................................................... 33
Tipos de datos.................................................................................................................. 33
Instrucciones de control..................................................................................................... 34

Manejo de archivos........................................................................................................... 34
Ejemplo........................................................................................................................... 35
C........................................................................................................................................ 37
Requerimientos para su instalacin...................................................................................... 37
Caractersticas.................................................................................................................. 38
Ventajas y Desventajas...................................................................................................... 39
Tipos de datos.................................................................................................................. 39
Instrucciones de control..................................................................................................... 40
Manejo de archivos........................................................................................................... 42
Ejemplo........................................................................................................................... 46
Bibliografa.......................................................................................................................... 47

Lenguajes Orientados a Procedimientos


Mtodo de programacin que requiere de una disciplina como FORTRAN, COBOL, BASIC;
C, Pascal y Xbase, El programador escribe el cdigo en cierto orden para resolver el
problema, basado en sus conocimientos del proceso y de la programacin. La aplicacin
resultante fuerza al usuario a seguir un camino predefinido desde el paso A al paso B. Un
ejemplo tpico es el ingreso de datos.

Fortran
Fortran (previamente FORTRAN) (contraccin del ingls Formula Translating System) es
un lenguaje de programacin de alto nivel de propsito general, procedimental e imperativo,
que est especialmente adaptado al clculo numrico y a la computacin cientfica.
Desarrollado originalmente por IBM en 1957 para el equipo IBM 704, y usado para
aplicaciones cientficas y de ingeniera, el FORTRAN vino a dominar esta rea de la
programacin desde el principio y ha estado en uso continuo por ms de medio siglo en
reas de cmputo intensivo tales como la prediccin numrica del tiempo, anlisis de
elementos finitos, dinmica de fluidos computacional (CFD), fsica computacional y qumica
computacional. Es uno de los lenguajes ms populares en el rea de la computacin de alto
rendimiento y es el lenguaje usado para programas que evalan el desempeo (benchmark)
y el ranking de los supercomputadores ms rpidos del mundo.

Requerimientos para su instalacin


MinGW para Win64: La Mingw-W64 proyecto ha actualizado peridicamente instantneas de
los compiladores que generan ejecutables de Windows de 64 bits. Se proporciona varios
compiladores, que se ejecutan en Windows (32 bits y 64 bits de Windows), Cygwin, Linux, y
Darwin / MacOS - y que generan binarios de 32 o 64 bits de Windows. El patrn de nombre
de archivo es <destino> - <host> - <opcin-version> - <fecha> ; por lo tanto, mingw-w64bin_x86_64-mingw_20100527.zip es un compilador de 64 bits de orientacin de Windows
( MinGW-W64 ), sino tambin en funcionamiento ( "host") en Windows de 64 bits ( xx86-64MinGW ); usted puede buscar el archivo en Toolchains seleccin de objetivo de
Win64 (Personal Las estructuras o las Automatizado construye).

Caractersticas
El lenguaje fue diseado teniendo en cuenta que los programas seran escritos en tarjetas
perforadas de 80 columnas. As por ejemplo, las lneas deban ser numeradas y la nica
alteracin posible en el orden de ejecucin era producida con la instruccin goto. Estas
caractersticas han evolucionado de versin en versin. Las actuales contienen
subprogramas, recursin y una variada gama de estructuras de control.

Ventajas y Desventajas
Lo que fue la primera tentativa de proyeccin de un lenguaje de programacin de alto nivel,
tiene una sintaxis considerada arcaica por muchos programadores que aprenden lenguajes
ms modernos. Es difcil escribir un bucle "for", y errores en la escritura de slo un carcter
pueden llevar a errores durante el tiempo de ejecucin en vez de errores de compilacin, en
el caso de que no se usen las construcciones ms frecuentes. Algunas de las versiones
anteriores no posean facilidades que son consideradas muy tiles, tal como la asignacin
dinmica de memoria.
Se debe tener en cuenta que la sintaxis de Fortran fue orientada para el uso en trabajos
numricos y cientficos. Muchas de sus deficiencias han sido abordadas en revisiones
recientes del lenguaje. Por ejemplo, Fortran 95 posee comandos mucho ms breves para
efectuar operaciones matemticas con matrices y dispone de tipos. Esto no slo mejora
mucho la lectura del programa sino que adems aporta informacin til al compilador.
Por estas razones Fortran no es casi usado fuera de los campos cientficos y del anlisis
numrico, pero permanece como el lenguaje preferido para desarrollar aplicaciones de
computacin numrica de alto rendimiento.

Tipos de datos
INTEGER Este tipo de dato sirve para representar en el ordenador nmeros enteros. Las
constantes de tipo entero se escriben mediante los dgitos de su representacin decimal,
precedidos por el signo, que es opcional si el nmero es positivo: (signo)dddddddddd. 243 +2
-15
REAL simple precisin Para representar nmeros reales con precisin estndar. Las
constantes de tipo real simple precisin se pueden escribir de las dos maneras siguientes:
notacin decimal es la notacin habitual, con punto decimal: (+/-)ccccccc.dddddd, notacin
cientfica o exponencial se escribe el nmero en notacin decimal acompaado de una
indicacin sobre la potencia de 10 por la que va multiplicado: (+/-)cc.dddddE(+/-)ee -15.36 6.
-1e3(=-1000.) 33.E-9(=0.000000033)
REAL doble precisin Para representar nmeros reales con precisin superior. Las
constantes reales doble precisin se escriben en su notacin cientfica, sustituyendo la E por
una D: (+/-)ccccccc.ddddddD(+/-)ee 1.0D25 -.345677788D-3
COMPLEX simple precisin Para representar nmeros complejos en simple precisin
(tambin existe en doble precisin). Las constantes complejas simple precisin se escriben
como un par de nmeros reales, entre parntesis y separados por una coma: (parte real,
parte imaginaria) (-123.456,1.003E+2)
CHARACTER Para representar cadenas de caracteres (texto). Las constantes se escriben
delimitando los caracteres entre apostrofes (comilla simple) o comillas dobles: abcdefghijklm
"nopqrstuvwxyz" (-123.456,1.003E+2) El resultado es: "Hola! : esto es un texto"
LOGICAL Para representar los valores lgicos, verdaderos y falsos: .TRUE. .FALSE.

Instrucciones de control
Condicional if-then
La sentencia if-then (en espaol: si-entonces) ejecuta instrucciones slo si se cumple una
condicin. Si la condicin es falsa, no se hace nada.
La sintaxis es la siguiente:
if (condicin) then
! qu hacer cuando la condicin es verdadera
end if

Por ejemplo, el siguiente programa felicita a alguien que aprob la asignatura:


program aprobado
implicit none
integer :: nota
print *, 'Que nota obtuvo: '
read *, nota
if (nota >= 55) then
print *, 'Felicitaciones'
end if
end program aprobado

Condicional if-then-else
La sentencia if-then-else (si-entonces-o-si-no) decide entre dos secuencias de
instrucciones a ejecutar dependiendo si una condicin es verdadera o falsa. La sintaxis es la
siguiente:
if (condicin) then
! qu hacer cuando la condicin es verdadera
else
! qu hacer cuando la condicin es falsa
end if

Por ejemplo, el siguiente programa recibe como entrada un ao e indica si es bisiesto o no:
program bisiesto
implicit none
integer :: year

print *, 'Ingrese el ao: '


read *, year
if (mod(year, 4) == 0 .and. (mod(year, 100) /= 0) .or. &
(mod(year, 400) == 0)) then
print *, 'El ao ', year, ' es bisiesto'
else
print *, 'El ao ', year, ' no es bisiesto'
end if
end program bisiesto

Condicional select-case
La sentencia select-case (seleccionar-caso) decide qu instrucciones ejecutar
dependiendo del valor de una expresin. Es una manera abreviada de escribir varios if uno
despus del otro.
La sintaxis es la siguiente:
select case (expresin)
case (valor1)
! qu hacer cuando expresin == valor1
case (valor2)
! qu hacer cuando expresin == valor2
...
case default
! qu hacer cuando no se cumpli
! ninguno de los caso anteriores
end select

Por ejemplo, el siguiente programa recibe un nmero entero como entrada e indica si es par
o impar:
program par
implicit none
integer :: n
print *, 'Ingrese un numero'
read *, n
select case (mod(n, 2))
case (0)
print *, 'El numero es par'
case (1)
print *, 'El numero es impar'
end select

end program par

En un mismo caso es posible poner varios valores separados por comas. Por ejemplo, el
siguiente programa recibe como entrada un carcter, y lo clasifica como vocal, consonante,
dgito o smbolo:
program clasifica_letras
implicit none
character :: c
print *, 'Ingrese un carcter'
read *, c
select case (c)
case ('a', 'e', 'i', 'o', 'u')
print *, c, ' es una vocal minuscula'
case ('A', 'E', 'I', 'O', 'U')
print *, c, ' es una vocal mayuscula'
case ('b', 'c', 'd', 'f', 'g', 'h', 'j', &
'k', 'l', 'm', 'n', 'p', 'q', 'r', &
's', 't', 'v', 'w', 'x', 'y', 'z')
print *, c, ' es una consonante minuscula'
case ('B', 'C', 'D', 'F', 'G', 'H', 'J', &
'K', 'L', 'M', 'N', 'P', 'Q', 'R', &
'S', 'T', 'V', 'W', 'X', 'Y', 'Z')
print *, c, ' es una consonante mayuscula'
case ('0', '1', '2', '3', '4', &
'5', '6', '7', '8', '9')
print *, c, ' es un digito'
case default
print *, c, ' es un simbolo'
end select
end program clasifica_letras

Ciclo do-while
El ciclo do-while (hacer mientras) ejecuta una secuencia de instrucciones mientras una
condicin sea verdadera.
La sintaxis es:
do while (condicin)
! qu hacer mientras la condicin se cumple
end do

Por ejemplo, el siguiente cdigo toma un nmero, y lo eleva al cuadrado hasta pasar de mil:
do while (n < 1000)
n = n ** 2
end do

En general, el ciclo do while se utiliza cuando no se puede saber de antemano cuntas veces
se ejecutar un ciclo, pero s qu es lo que tiene que ocurrir para que se termine.
La condicin es evaluada al comienzo de cada iteracin. Si la condicin deja de ser
verdadera en medio de la iteracin, el ciclo no termina, sino que contina hasta el final. Por
ejemplo, el siguiente ciclo se ejecuta tres veces, a pesar de que la condicin siempre deja de
cumplirse despus de la primera asignacin:
n=2
do while (n < 10)
n=n*6
n=n-9
end do

Ciclo do
El ciclo do (hacer) ejecuta una secuencia de instrucciones un nmero determinado de
veces. Para llevar la cuenta, utiliza una variable de control que toma distintos valores en cada
iteracin.
La sintaxis es:
do variable = inicio, final
! qu hacer para cada valor de la variable de control
end do

En la primera iteracin, la variable de control toma el valor inicio. Al final de cada iteracin, el
valor de la variable de control aumenta automticamente. Cuando se pasa de largo del
valor final, el ciclo termina.
Por ejemplo, el siguiente programa muestra los cubos de los nmeros del 1 al 20:
do i = 1, 20
print *, i, i ** 3
end do

Si el valor final es menor al inicial, el ciclo nunca es ejecutado.


Adems, el ciclo do puede recibir un tercer valor que representa el incremento de la variable
de control, es decir, en cunto cambiar su valor despus de cada iteracin.
Por ejemplo, el siguiente programa muestra los cuadrados de los nmeros impares menores
que 100:

do i = 1, 100, 2
print *, i, sqrt(real(i))
end do

Tambin es posible hacer ciclos que van hacia atrs:


do i = 10, 1, -1
print *, i
end do
print *, 'Feliz an~o nuevo!'

Tanto la variable de control como los valores inicial, final y de incremento deben ser de tipo
entero. La variable de control es una variable como cualquier otra, y debe ser declarada
apropiadamente al comienzo del programa.
Un ciclo do es una manera abreviada de escribir un tipo especial de ciclo dowhile. Los
siguientes dos ciclos son equivalentes (cuando inc es positivo):
do i = inicio, fin, inc
print *, i
end do
i = inicio
do while (i <= fin)
print *, i
i = i + inc
end do

Salir de un ciclo
Adems de las condiciones de trmino propias de los ciclos do y do while, siempre es posible
salir de un ciclo en cualquier momento usando la sentencia exit. Lo lgico es que sea usada
dentro de un condicional, para evitar que todos los ciclos se terminen a la primera.
Por ejemplo, en el programa para determinar si un nmero es primo o no, la bsqueda de
divisores puede ser terminada prematuramente apenas se encuentra el primero de ellos:
es_primo = .true.
do d = 2, n - 1
if (mod(n, d) == 0) then
es_primo = .false.
exit
end if
end do

Saltar a la siguiente iteracin

La sentencia cycle se usa para saltar a la iteracin siguiente sin llegar al final de la que est
en curso.
Por ejemplo, el siguiente programa muestra el seno, el coseno y la tangente de los nmeros
del 1 al 30, pero omitiendo los que terminan en 7:
do i = 1, 30
if (mod(i, 10) == 7) then
cycle
end if
print *, i
print *, 'Seno: ', sin(real(i))
print *, 'Coseno: ', cos(real(i))
print *, 'Tangente:', tan(real(i))
end do

Ciclo infinito
Existe un tercer tipo de ciclo que no tiene ninguna condicin de trmino. Se llama ciclo
infinito y la sintaxis es:
do
! hacer algo
end do

La nica manera de salir de un ciclo infinito es usando la sentencia exit.


Por ejemplo, el siguiente cdigo pregunta nmeros al usuario, e indica si el nmero es par o
impar, y termina cuando el usuario ingresa un cero:
do
read *, n
if (n == 0) then
exit
end if
select case (mod(n, 2))
case (0)
print *, 'Par'
case (1)
print *, 'Impar' end select
end do

Manejo de archivos

Un archivo es un conjunto de informacion o datos que se encuentran almacenados en


una memoria permanente, como un disco duro.
Un archivo se define por su nombre y su extensin
La extensin del archivo nos indica parcialmente el tipo y contenido del archivo
Los lenguajes de programacin contienen funciones bsicas para acusar y manipular
archivos

Ejemplo

Cobol
El lenguaje COBOL (acrnimo de COmmon Business-Oriented Language, Lenguaje Comn
Orientado a Negocios) fue creado en el ao 1959 con el objetivo de crear un lenguaje de
programacin universal que pudiera ser usado en cualquier ordenador (ya que en los aos
1960 existan numerosos modelos de ordenadores incompatibles entre s), y que estuviera
orientado principalmente a los negocios, es decir, a la llamada informtica de gestin.

Requerimientos para su instalacin


Antes de instalar IBM Rational COBOL Generation Extension para zSeries, el sistema debe
cumplir los requisitos que se indican en esta seccin.

Requisitos de software
El sistema debe cumplir los requisitos de software descritos en esta seccin antes de instalar
Rational COBOL Generation Extension para zSeries.
Prerrequisitos de software
Para poder instalar este producto, debe instalar uno de los elementos de software siguientes:

IBM Rational Application Developer versin 6.0.1 o posterior, incluyendo la


caracterstica EGL (Lenguaje de generacin de empresa).

IBM Rational Software Architect versin 6.0.1 o posterior, incluyendo la caracterstica


EGL.

Tenga en cuenta que para instalar la versin 6.0.1 (o posterior) de Rational Application
Developer o Rational Software Architect, primero debe instalar la versin 6.0 del producto y
despus actualizar el producto a la versin 6.0.1 o posterior utilizando la herramienta de
actualizacin Actualizador de productos de Rational. Consulte el apartado Instalar
actualizaciones.
Si no instal la caracterstica opcional EGL cuando instal Rational Application Developer o
Rational Software Architect, debe instalar esta caracterstica para poder instalar Rational
COBOL Generation Extension para zSeries. Consulte el apartado Instalar la caracterstica
EGL.
Si actualiz Rational Application Developer o Rational Software Architect a la versin 6.0.1 o
posterior antes de instalar la caracterstica EGL, deber actualizar tambin la caracterstica
EGL. Consulte el apartado Actualizar la caracterstica EGL.

Para obtener informacin acerca de los requisitos de software para la instalacin de Rational
Application Developer o Rational Software Architect, consulte la gua de instalacin del
producto correspondiente.
Tenga en cuenta que cuando instala Rational COBOL Generation Extension para zSeries,
este comparte el entorno de desarrollo comn de Rational Application Developer o Rational
Software Architect. (IBM Rational Software Development Platform solo se instala una vez.)
Rational Application Developer y Rational Software Architect tienen la misma interfaz de
usuario, llamada entorno de trabajo. Cuando instala Rational COBOL Generation Extension
para zSeries, se aaden funciones al entorno de trabajo a travs de los conectores. Un
conector es un mdulo de software que aade funcionalidad a un programa o una aplicacin
existente.

Requisitos de hardware
Requisitos de espacio de disco:

Para instalar Rational COBOL Generation Extension para zSeries, necesitar 200 MB
de espacio de disco en sistemas Windows o 225 MB de espacio de disco en sistemas
Linux.

Tenga en cuenta que esto es adems del espacio de disco necesario para instalar
Rational Application Developer o Rational Software Architect.

Tambin ser necesario espacio de disco adicional si baja la imagen electrnica para
instalar IBM Rational COBOL Generation Extension para zSeries.

Si el sistema de archivos es FAT32 en lugar de NTFS, necesitar ms espacio.


Tambin necesitar 100 MB en el directorio TEMP.

Necesitar 100 MB en el directorio /tmp.

El resto de requisitos de hardware son los mismos que para Rational Application Developer y
Rational Software Architect. Consulte la gua de instalacin del producto correspondiente.

Caractersticas

COBOL fue dotado de unas excelentes capacidades de auto documentacin.


Una buena gestin de archivos y una excelente gestin de los tipos de datos para la
poca, a travs de la conocida sentencia PICTURE para la definicin de campos
estructurados. Para evitar errores de redondeo en los clculos que se producen al

convertir los nmeros a binario y que son inaceptables en temas comerciales, COBOL
puede emplear y emplea por defecto nmeros en base diez. Para facilitar la creacin de
programas en COBOL, la sintaxis del mismo fue creada de forma que fuese parecida al
idioma ingls, evitando el uso de smbolos que se impusieron en lenguajes de
programacin posteriores.
Pese a esto, a comienzos de los ochenta se fue quedando anticuado respecto a los
nuevos paradigmas de programacin y a los lenguajes que los implementaban. En la revisin
de 1985 se solucion, incorporando a COBOL variables locales, recursividad, reserva de
memoria dinmica y programacin estructurada.
En la revisin de 2002 se le aadi orientacin a objetos, aunque desde la revisin de 1974
se poda crear un entorno de trabajo similar a la orientacin a objetos, y un mtodo de
generacin de pantallas grficas estandarizado.
Antes de la inclusin de las nuevas caractersticas en el estndar oficial, muchos fabricantes
de compiladores las aadan de forma no estndar. En la actualidad este proceso se est
viendo con la integracin de COBOL con Internet. Existen varios compiladores que permiten
emplear COBOL como lenguaje de scripting y de servicio web. Tambin existen compiladores
que permiten generar cdigo COBOL para la plataforma .NET y EJB.

Ventajas y Desventajas
En COBOL todo son ventajas ya que adems de llevar incorporado un sistema de
tratamiento de ficheros indexados de gran estabilidad y robustez hoy en da se pueden hacer
aplicaciones COBOL de interfaz grfico con SQL incrustado, lo que permite que mediante
aplicaciones cobol se pueda acceder a la mayor parte de bases de datos SQL del mercado.
Por si esto fuera poco la escalabilidad de potencia de proceso de los ordenadores que
soportan el lenguaje COBOL hace de ste el lenguaje ideal para desarrollo de aplicaciones
que deban soportar un gran nmero de usuarios
Muchos han sido los lenguajes que han pretendido competir con COBOL llegndose incluso
a pronosticar que COBOL tena los das contados. La realidad sin embargo es que muchos
de estos lenguajes han desaparecido y el COBOL sigue vigente actualmente. En contraste
con otros lenguajes ms de moda actualmente podramos definir de esta forma las
principales caractersticas y ventajas del lenguaje COBOL:

Autodocumentado

Simple

No propietario

Eficiente

Universal

Abierto

Completo

Escalable
Maduro
Portable
Fiable y probado

Tipos de datos
DATA DIVISION
FUNCIN
Se describen los datos que van a ser usados, creados, o producidos por el programa.
Se describe la estructura de los ficheros que se van a utilizar, as como las variables
utilizadas en el programa y que no son parte de los ficheros.
FORMATO
DATA DIVISION.
[FILE SECTION.
{ Entrada de descripcin de ficheros....}
{ Entrada de descripcin de registros...}]
[WORKING-STORAGE SECTION.
[ Entrada de descripcin de variables o registros ]]
TIPOS DE DATOS
Una de las caractersticas tpicas de los datos que se usan en las aplicaciones de gestin es
la variedad de formas y estructuras.
Los datos se clasifican en:

Campos Independientes
Campos Compuestos
Tablas

CAMPOS INDEPENDIENTES

Es un campo de trabajo que ser definido en la seccin de


working. No forman parte de la descripcin de los ficheros.
Formato mnimo para su definicin:
nmero-de-nivel nombre-de-dato
PICTURE especificacin de formato.
Donde:
Nmero-de-nivel. Se utiliza el nivel 77.
Nombre-de-datos. Un nombre de datos sirve para nombrar un campo con el fin de poder
referenciar en el programa, el contenido del mismo.
PICTURE. Determina la informacin que puede almacenarse en el
Campo, as como las operaciones que con l pueden realizarse.
Permite definir el tipo y el tamao del campo

Instrucciones de control
Sentencia SORT en un programa COBOL
Hemos visto en otros artculos como hacer un SORT en un JCL. En este artculo veremos
cmo hacerlo en un programa cobol. Utilidad? Depende. Lo cierto es que pudiendo hacerlo
por JCL, no tiene caso hacerlo en un programa. Pero quin sabe! Tal vez alguno de los
lectores puedan darnos una idea de su uso prctico: D.
SORT:
La sentencia SORT en cobol sirve para ordenar registros por un campo clave que le
indiquemos. Podremos elegir varias claves y definir si el orden ser ascendente o
descendente. Para el ejemplo, hemos creado un fichero temporal en nuestro programa que
utilizaremos para generar en l la informacin ordenada. Como registros a ordenar,
utilizaremos una tabla interna, de tal forma que no necesitaremos utilizar ficheros en ningn

momento.
La informacin ordenada se cargar desde el fichero temporal al registro de salida, que
podra utilizarse a lo largo de la ejecucin. Nosotros nos pararemos cuando tengamos
nuestra informacin ordenada, y la "display aremos" mostrndola por SYSOUT.

Sentencia MERGE en un programa COBOL


Hemos visto en otros artculos como hacer un MERGE en un JCL. En este artculo veremos
cmo hacerlo en un programa cobol. Utilidad? Depende. Lo cierto es que pudiendo hacerlo
por JCL, no veo la razn de hacerlo en un programa. Pero quin sabe! Tal vez alguno de los
lectores pueda darnos una idea de su uso prctico: D
MERGE:
La sentencia MERGE en cobol sirve para unir dos ficheros teniendo en cuenta la clave por la
que estn ordenados. Es decir, no podemos hacer un MERGE de ficheros desordenados.
Lo que har ser "colocar" las claves que coincidan, juntas en el fichero de salida.
Para el ejemplo, utilizaremos:
2 ficheros de entrada con los datos a unir.
1 fichero temporal donde se realizar el MERGE.

Manejo de archivos
XML PARSE: de XML a fichero plano con COBOL.
El XML parse es una utilidad del COBOL que podis encontrar en el propio manual de IBM.
Pero, alguna vez has tenido que usarlo? Y digo ms, alguna vez has tenido que usarlo
para transformar un XML que subido a host se convirtiese en un fichero de ms de 500.000
registros?
Se puede decir que para pequeos textos no tiene mucha dificultad, pero como a nosotros
nos gusta el riesgo, vamos a explicar cmo transformar un fichero bien "gordo" con el XML
PARSE.
Al final de este artculo podris descargaros el cdigo completo del programa de ejemplo.
Lo primero que tenemos que hacer es "subir" el fichero xml que tengamos en local a nuestro
servidor. En nuestro ejemplo vamos a suponer que tendremos un fichero plano de longitud
fija 129, y unos 500.000 registros.

Ejemplo
Esquema de un programa cobol
Los programas cobol se dividen en partes llamadas "DIVISION" que a su vez se separan en secciones llamadas
"SECTION". Vamos a ver el esquema bsico que todo programa cobol debe tener:
IDENTIFICATION DIVISION.
PROGRAM-ID. PRUEBA1.

Nombre del programa. Debe coincidir con el nombre externo del programa.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
Nosotros usamos los puntos como separadores de miles y la coma como el separador de decimales.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
En esta parte se definen los ficheros en caso de que los haya.
SELECT FICHERO1
Nombre de fichero.
ACCES MODE IS SEQUENTIAL
Tipo de acceso: SEQUENTIAL para los planos, INDEXED para los indexados.
FILE STATUS IS FS-FICHERO1
Variable donde guardar el file-status (cdigo de control de errores de acceso a ficheros).
DATA DIVISION.
FILE SECTION.
FD FICHERO1 RECORDING MODE IS F
Fichero con longitud fija. Si fuese de longitud variable pondramos V.
BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 129 CHARACTERS.
Longitud del fichero.
01 REG-FICHERO1 PIC X(129).
Donde guardaremos la informacin.
WORKING-STORAGE SECTION.
En ella definimos las variables que usaremos en el programa.
01 WX-VARIABLE PIC X.
Definicin de variables lo veremos ms adelante.
LINKAGE SECTION.
rea de comunicacin con otros programas
01 AREA-LINKAGE PIC X.
PROCEDURE DIVISION. / PROCEDURE DIVISION USING AREA-LINKAGE.
Si hay un rea definida en la linkage debemos incluir el USING en la procedure.
Aqu es donde va el programa en s. La estructura general ser:
0000-PRINCIPAL.
PERFORM 1000-INICIO

PERFORM 2000-PROCESO
UNTIL CUMPLE-CONDICION
PERFORM 3000-FINAL
La numeracin de prrafos suele ser esa, pero cada empresa puede tener su propia nomenclatura estndar.
El proceso en un programa se suele repetir n veces, hasta que se cumple la condicin indicada en el UNTIL.
En el prrafo de final se incluye la instruccin de finalizacin de ejecucin:
STOP RUN para programas principales.
GOBACK para rutinas.
Se pueden definir tantos prrafos como queramos, pero la estructura de todos ellos ser la siguiente:
1000-INICIO.
cdigo con instrucciones a realizar
.

Pascal
Pascal es un lenguaje de programacin desarrollado por el profesor suizo Niklaus Wirth entre
los aos 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el
aprendizaje de programacin a sus alumnos, utilizando la programacin estructurada y
estructuracin de datos. Sin embargo con el tiempo su utilizacin excedi el mbito
acadmico para convertirse en una herramienta para la creacin de aplicaciones de todo
tipo.

Requerimientos para su instalacin


Varios compiladores de Pascal estn disponibles para el uso del pblico en general:

Epox

Compilador GNU Pascal (GPC), escrito en


Collection (GCC). Se distribuye bajo licencia GPL.

Free Pascal est escrito en Pascal (el compilador est creado usando Free Pascal),
es un compilador estable y potente. Tambin distribuido libremente bajo la licencia GPL.
Este sistema permite mezclar cdigo Turbo Pascal con cdigo Delphi, y soporta muchas
plataformas y sistemas operativos.

Turbo Pascal fue el compilador Pascal dominante para PC durante los aos 1980 y
hasta principios de los aos 1990, muy popular debido a sus magnficas extensiones y
tiempos de compilacin sumamente cortos. Actualmente, versiones viejas de Turbo

C,

basado

en GNU

Compiler

Pascal (hasta la 7.0) estn disponibles para descargarlo gratuito desde el sitio de Borland
(es necesario registrarse).

Delphi es un producto tipo RAD (Rapid Application Development) inicialmente


desarrollado por Borland y actualmente por Embarcadero. Utiliza el lenguaje de
programacin Delphi, descendiente de Pascal, para crear aplicaciones para la
plataforma Windows. Las ltimas versiones tambin generan ejecutables para MacOS X,
Linux y .NET.

Kylix fue una versin de Delphi para el sistema operativo Linux promovida por la
antigua Borland reiterando la rama de Pascal de sus productos. Como descendiente de
Delphi cuenta con una librera de objetos mejorada llamada CLX, que es la versin para
Linux de la VCL. Sin embargo el proyecto ya se haba descontinuado mucho antes de
que Borland vendiera todos sus productos de desarrollo a Embarcadero Technologies,
actual dueo de Delphi.

Lazarus es un clon de Delphi, basado en Free Pascal es software libre.

MidletPascal para la plataforma J2ME.

TMT. Pascal.

PIC Micro Pascal, para microcontroladores PIC.

Smart Mobile Studio traduce un programa en dialecto Object Pascal a JavaScript,


especialmente diseado para ser utilizado en dispositivos mviles.
Oxygene es un compilador que genera archivos jar.

Caractersticas
Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definicin; la
asignacin a variables de valores de tipo incompatible no estn autorizadas (en C, en
cambio, el compilador hace el mejor esfuerzo para dar una interpretacin a casi todo tipo de
asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente
porque el tipo es desconocido; y tambin evita la necesidad de notacin hngara, que vienen
a ser prefijos que se aaden a los nombres de las variables y que indican su tipo.

Ventajas y Desventajas
Ventajas del lenguaje pascal

Pascal no permite asignaciones dentro de las expresiones y utiliza sintaxis distintas


para asignaciones y comparaciones evitando de esta manera evita muchos bugs.
El tipo de variable de Pascal se fija en su definicin; la asignacin a variables de
valores tipo incompatible no estn autorizadas esto previene errores comunes en
donde las variables son utilizadas correctamente.
Este programa tiene dos partes definidas: declarativa y ejecutiva estos evitan
impresiones.
Facilidad.

Desventajas del lenguaje pascal

Para los aos 1980 principio de los 90 el programa Pascal fue criticado por no
producir cdigos industriales.
Obsoleto.

Tipos de datos
Los tipos de datos ms comunes en pascal son:
TIPO DATO
char
byte
integer
Real
Boolean
shortint
word
longint
String

RANGO
Caracter ASCII
0 a 255
-32,768 a 32,767
1E-38 a 1E+38
TRUE o FALSE
-128 a 127
0 a 65535
-2147483648 a 214748364
Cadena 255 caracteres

Para el caso de strings se prodra usar cualquiera de los dos siguientes formatos:
Var
Nombre: string;
Carrera: string[30];
Para el primer caso pascal reserva 255 bytes de memoria, para el caso de carrera pascal
solo reservara 30 bytes, es obvio cual de los dos casos es ms eficiente.

Instrucciones de control
Existen estructuras selectivas y estructuras repetitivas.

Estructuras selectivas
Hacen que el curso del programa se bifurque en una u otra direccin dependiendo de las
condiciones que se cumplan durante su ejecucin.

1. IF THEN ELSE: evala una proposicin y efecta una accin si el resultado es


verdadero, con el siguiente formato: si proposicin=verdadera entonces ejecutar
accin.
De manera opcional, se puede establecer una accin a realizar para el caso de que la
proposicin evaluada resulte falsa: si proposicin=verdadera entonces ejecutar accin
1. Si no, ejecutar accin 2.
La sintaxis en pascal es la siguiente:
if proposicin=verdadera then
ejecutar accin 1
else
ejecutar accin 2
La accin 1 puede estar compuesta por ms de una instruccin, en cuyo caso se colocar
una etiqueta begin al comienzo y end; al final, y cada sentencia dentro del bloque se
diferenciar de la siguiente mediante un punto y coma. Como excepcin, si la estructura lleva
la instruccin else, en la lnea inmediatamente anterior a ella debe obviarse el punto y coma,
ya que el punto y coma seala el final de la instruccin if y, si sta incluye else, el final de
la instruccin completa se encuentra al trmino del else.
Pueden combinarse varias proposiciones unidas mediante conectores lgicos and y or.
stos funcionan de la misma forma en que funcionan las operaciones lgicas en tablas de
verdad: en el caso del and ambas condiciones deben resultar verdaderas para que se
ejecute la accin; en el caso del or basta con que una de ella resulte verdadera. Si se
utilizan proposiciones unidas por conectores lgicos, deben estar encerradas entre
parntesis:
if (proposicin_1 = verdadera) and (proposicin_2 = verdadera) then
begin
sentencia 1
sentencia 2

end;
Las proposiciones no son ms que algn valor booleano que se indique como true o false. Es
decir, la proposicin a evaluarse puede estar conformada por una expresin que se traduzca
en true o en false, o por una variable booleana que contenga un valor de true o false. De
cualquiera de las dos formas, la sentencia if siempre comparar la proposicin con el valor
true, y ejecutar las instrucciones que contiene si esa proposicin coincide con este valor
true. As, podra escribirse algo como:
if (variable1) and (variable2) then
Considerando a variable1 y variable2 como dos variables booleanas.
Tambin puede expresarse la negacin de una proposicin anteponiendo la palabra
reservada not, que equivale a decir que el resultado de la evaluacin debe ser falso:
if not proposicin then
sentencia
En este caso, la sentencia if tambin evaluar el valor de verdad de la condicin
comparndolo con true: si la proposicin indicada no se cumple, entonces el resultado ser
true.

2. CASE: se utiliza para seleccionar una opcin de entre varias. Es una forma de evitar
mltiples if. La expresin a evaluar es llamada selector y consta de la palabra case
seguida de una variable de tipo ordinal y la palabra reservada of. Luego se establece una
lista de sentencias de acuerdo a diferentes valores que puede adoptar la variable.
Opcionalmente, se puede establecer un bloque else para el caso de que la variable adopte
un valor que no coincida con ninguna de las sentencias de la lista. Finalizada la estructura
del case se coloca un end; (en este caso no se corresponde con ningn begin). El formato
es el siguiente:
case variable_ordinal of
valor1: sentencia 1;
valor2: sentencia2;
valor3: sentencia3;
else
sentencia4;
end;

Estructuras iterativas

Permiten que una sentencia o un bloque de cdigo se repitan una determinada cantidad de
veces.

1. FOR: realiza una iteracin una cantidad de veces especfica. Para ello necesita una
variable de tipo ordinal, a la que asignar valores dentro del rango que se le especifique,
incrementndose en uno. Por ejemplo, si se declara una variable llamada cuenta de tipo
integer, se puede utilizar un for con el siguiente formato:
for cuenta:= 5 to 9 do
sentencia
En este caso la sentencia se ejecutar cinco veces, ya que la variable cuenta primero
adoptar el valor 5, luego el valor 6, y as hasta llegar al 9, en que repetir la sentencia por
ltima vez.
Por supuesto los valores pueden reemplazarse por variables o por constantes, siempre que
ellos hayan sido declarados y se les haya asignado algn valor previamente:
for cuenta:= 1 to maximo do
sentencia
Una variante es asignar los valores decrementando la variable. Es decir, para el primer
ejemplo, la variable adoptara primero el valor 9, luego el 8, y as sucesivamente hasta llegar
al 5 y terminar la iteracin. Esto se efecta mediante la palabra reservada downto:
for cuenta:= 9 downto 5 do
sentencia

2. WHILE: Se evala una proposicin (o un grupo de ellas unidas por conectores lgicos) y,
de resultar verdadera, se ejecutan las sentencias, repitindose el proceso hasta que la
proposicin deje de ser verdadera. En este caso es importante prever que en algn momento
la proposicin se vuelva falsa, porque de lo contrario se entrara en un bucle infinito. Por
ejemplo, si se utilizara un while para llevar la cuenta de algo, el formato sera similar al
siguiente:
contador:= 0;
read(edad);
while edad <= 21 do
begin
contador:= contador + 1;

read(edad);
end;
En este caso se utilizan dos variables de tipo entero, contador y edad, y el bloque de
cdigo incrementa la variable contador en 1 cada vez que se lee de teclado una edad
menor o igual a 21.
Notar que se inicializ la variable contador en 0, para evitar que se sume contenido
basura, y que previamente a evaluar la proposicin se le dio un valor a la variable edad
(asignado por teclado), ya que de lo contrario se estara evaluando contenido basura en la
primera iteracin. Luego, dentro del bloque, se vuelve a asignar un valor a la variable a
travs del teclado, para que exista la posibilidad de que la proposicin resulte falsa en algn
momento.
El while se caracteriza por evaluar la condicin (comparndola con el valor true) antes de
ejecutar el bloque de cdigo. Es decir, si la proposicin fuera falsa en la primera evaluacin,
el bloque nunca se ejecuta.

3. REPEAT: similar al while, funciona a la inversa de l: evala una proposicin o una serie
de ellas y repite una sentencia o un bloque de cdigo hasta que se cumpla una condicin
(hasta que la condicin se vuelva verdadera, es decir, hasta que valga true). En este caso,
en primer lugar se ejecutan las sentencias y luego se evala, y la iteracin se realizar
mientras la proposicin no sea verdadera. El formato es el siguiente:
contador:=0;
repeat
read (edad);
contador:= contador+1;
until edad > 21;
En este caso existe una excepcin en cuanto a la regla de encerrar el bloque de cdigo entre
etiquetas begin y end, aunque si se colocan no afectan la ejecucin del programa.

Manejo de archivos
Hemos visto cmo acceder a los ficheros de texto y a los ficheros "con tipo". Pero en la
prctica nos encontramos con muchos ficheros que no son de texto y que tampoco tienen un
tipo de datos claramente repetitivo.
Muchos formatos estndar como PCX, DBF o GIF estn formados por una cabecera en la
que se dan detalles sobre el formato de los datos, y a continuacin ya se detallan los datos
en s.

Esto claramente no es un fichero de texto, y tampoco se parece mucho a lo que habamos


llamado ficheros con tipo. Podramos emplear un fichero "de tipo byte", pero esto resulta muy
lento a la hora de leer ficheros de gran tamao.
Pero hay una alternativa: declarar un fichero sin tipo (o "fichero binario"), en el que nosotros
mismos decidimos qu tipo de datos queremos leer en cada momento, a partir de lo que
conozcamos sobre cmo se cre el fichero.
Ahora leeremos bloques de bytes, y los almacenaremos en un "buffer" (memoria intermedia).
Para ello tenemos la orden "BlockRead", cuyo formato es:

procedure BlockRead(var F: Fichero; var Buffer; Cuantos: Word


[; var Resultado: Word]);
Donde

"F" es un fichero sin tipo (declarado como "var fichero: file" ).


"Buffer" es la variable en la que queremos guardar los datos ledos.
"Cuantos" es el nmero de datos que queremos leer.
"Resultado" (opcional) almacena un nmero que indica si ha habido algn error.

Existe otra diferencia con los ficheros que hemos visto hasta ahora, y es que cuando
abrimos un fichero sin tipo con "reset", debemos indicar el tamao de cada dato
(normalmente diremos que 1, y as podemos leer variables ms o menos grandes
indicndolo con el dato "cuantos" que aparece en BlockRead).
As, abriramos el fichero con

reset( fichero, 1 );
En el caso de Turbo Pascal para MsDos, existe una limitacin en cuanto a tamao de los
datos: los bloques que leemos con "BlockRead" deben tener un tamao menor de 64K (el
resultado de multiplicar "cuantos" por el tamao de cada dato).
El significado de "Resultado" es el siguiente: nos indica cuantos datos ha ledo realmente. De
este modo, si vemos que le hemos dicho que leyera 30 fichas y slo ha ledo 15, podremos
deducir que hemos llegado al final del fichero. Si no usamos "resultado" y tratamos de leer
las 30 fichas, el programa se interrumpir, dando un error.
Para escribir bloques de datos, utilizaremos "BlockWrite", que tiene el mismo formato que
BlockRead, pero esta vez si "resultado" es menor de lo esperado indicar que el disco est
lleno.

Esta vez, es en "rewrite" (cuando abrimos el fichero para escritura) donde deberemos indicar
el tamao de los datos (normalmente 1 byte).

Ejemplo
El siguiente programa muestra el uso de las diferentes partes que conforman un programa en
lenguaje Pascal.
Program MiPrimerPrograma; {cabecera}
Uses
Crt; {declaraciones}
Const
iva =0.10;
Type
cadena =string[35];
meses =1..12;
Var
sueldo :real;
numero :integer;
nombre :cadena;
Nmes :meses;
begin
ClrScr; {Limpia la pantalla}
Write ('Escribe tu nombre : '); {Visualiza
informacin en pantalla}
ReadLn(nombre); {Leer un dato del
teclado}
WriteLn ('Bienvenido ', nombre);
{Visualiza informacin en pantalla}

tecla}

Readkey;

{Espera la pulsacin de una

ClrScr;

BASIC
En
la programacin
de
computadoras,
siglas
de Beginner's Allpurpose Symbolic Instruction Code (Cdigo simblico de instrucciones de propsito
general para principiantes en espaol), es una familia de lenguajes de
programacin de alto nivel. El BASIC original, el Dartmouth BASIC, fue diseado en 1964
por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en Nuevo
Hampshire, Estados Unidos, como un medio para facilitar la programacin en ordenadores a
estudiantes (y profesores) que no fueran de ciencias. De aquella, casi todo el uso de los
ordenadores requera codificar software hecho a medida, con lo cual quedaba restringida a
personas con formacin como cientficos y matemticos. BASIC originalmente fue
desarrollado como una herramienta de enseanza. El lenguaje y sus variantes llegaron a
estar ampliamente disponibles en los microcomputadores a finales de los aos 1970 y en los
aos 1980. BASIC sigue siendo popular a da de hoy en un puado de dialectos altamente
modificados, y en nuevos lenguajes, influenciados por BASIC tales como Microsoft Visual
Basic o Gambas en GNU/Linux. En el ao 2006, el 59% de los desarrolladores para la
plataforma .NET usaban Visual Basic .NET como su nico lenguaje.

Requerimientos para su instalacin


BASIC est disponible para casi todas las plataformas y sistemas operativos existentes. Una
implementacin gratuita que cumple con estndares y es multiplataforma es Bywater
BASIC (bwBASIC). El intrprete est escrito en C y viene bajo la licencia GNU. Est
diseado para interfaz de texto o consola (no grfica), no incluye soporte para crear
interfaces grficas de usuario (GUI's, Graphical User Interface). Hay un BASIC gratuito que si
incluye soporte para GUI, es similar a Visual Basic y se ejecuta en Windows y GNU/Linux,
es Phoenix Object BASIC.
Las versiones de intrpretes/compiladores ms conocidos son la lnea de productos Quick
BASIC y QBASIC, este ltimo es slo intrprete, ambos son de Microsoft. En la actualidad lo
es el moderno Visual BASIC, que Microsoft ha tratado de mantener al menos mnimamente
compatible con incluso las primeras versiones de sus BASIC (en realidad es escasamente
compatible), si bien existeFreeBASIC que es un compilador libre, compatible en sintaxis con
QBASIC/QuickBASIC.

Otras versiones comerciales incluyen PowerBASIC de PowerBASIC, PureBasic de Fantaisie


Software, as como TrueBASIC de TrueBASIC, que cumple con los ltimos estndares
oficiales de BASIC. (True BASIC Inc. fue fundada por los creadores originales de Dartmouth
BASIC.)
REALbasic es una variante disponible para Mac OS Classic, Mac OS X, Microsoft Windows y
GNU/Linux, comercializada por los actuales propietarios de Rapid-Q, otra implementacin
inicialmente libre de BASIC actualmente abandonada. Una versin de un dialecto simple de
BASIC para la parrot virtual machine, muestra cmo se implementa un intrprete de BASIC
en un lenguaje similar al ensamblador. SmallBASIC es un dialecto que ejecuta en muchas
plataformas (Win32, DOS, GNU/Linux y PalmOS) y viene bajo la licencia GNU (GPL).

Caractersticas
La sintaxis mnima de BASIC slo necesita los comandos LET, INPUT, PRINT, IF y GOTO.
Un intrprete que ejecuta programas con esta sintaxis mnima no necesita una pila. Algunas
de las primeras implementaciones eran as de simples. Si se le agrega una pila, se pueden
agregar tambin ciclos FOR anidados y el comando GOSUB. Un intrprete de BASIC con
estas caractersticas necesita que el cdigo tenga nmeros de lnea.
Los nmeros de lnea fueron un aspecto muy distintivo del BASIC clsico. Sin embargo, el
uso de nmeros de lnea tiene la desventaja de requerir que el programador estime cuntas
lneas ocupar la parte del programa que escribe. Este requerimiento se cumple
generalmente incrementando los nmeros de lnea en un intervalo regular, como 10, pero
esto lleva a problemas a la hora que el cdigo despus agregado exceda el espacio
disponible entre las lneas originales. Para aliviar este problema de los primeros intrpretes
de BASIC, los usuarios expertos pronto escribieron sus propios programas utilitarios para
renumerar sus programas, despus del ingreso inicial. Ms tarde aparecieron intrpretes de
BASIC que incluan un comando especfico RENUMBER, el que permita renumerar
rpidamente (y las veces que se quisiera) todo el cdigo nuevamente, con cualquier intervalo
entre lneas indicado y a partir de un nmero entero dado; eliminando as el principal
problema de la numeracin de lneas obligatoria.

En los dialectos modernos de BASIC MIUN ya no es necesario incluir nmeros de lnea


(aunque son permitidos), y la mayora (o todos) han aadido control de flujo estructurado y
los constructores de declaracin de datos similares a los de otros lenguajes, tales
como C y Pascal:

do

loop

while

until

exit

on... goto

gosub

select ... case

Casi todos los dialectos de BASIC incluyen el comando REM (remark), que posteriormente
fue sustituido por el smbolo (apstrofo o comilla simple). Es un comando no ejecutable, se
utiliza a los fines de incluir lneas y notas aclaratorias en el cdigo fuente, para la mejor
comprensin (y documentacin) del programa.
Variantes recientes como Visual Basic han introducido algunas caractersticas orientadas a
objetos, y hasta herencia en la ltima versin. La administracin de memoria es ms fcil que
con muchos otros lenguajes de programacin procedurales por el uso de un Recolector de
basura (y a costas de la velocidad de ejecucin).

Ventajas y Desventajas
Es importante aclarar que una de las grandes desventajas en comparacin con lenguajes
como COBOL, RPG es que no maneja como parte integrada el acceso a archivos directos o
RANDOM. Se tena que apoyar en una aplicacin externa para poder acceder de manera
directa un registro de algn archivo.

Tipos de datos
BASIC es reconocido por tener muy buenas funciones para manipular cadenas de
caracteres. Los primeros dialectos ya tenan un juego de funciones fundamentales (LEFT$,
MID$, RIGHT$) para extraer y/o reemplazar subcadenas fcilmente. Como las cadenas son
utilizadas en aplicaciones diarias, esta era una ventaja considerable sobre otros lenguajes al
momento de su introduccin.
El Dartmouth BASIC original soportaba nicamente datos de tipo numrico y cadenas. No
haba un tipo entero. Todas las variables numricas eran de coma flotante. Las cadenas eran
de tamao dinmico. Soportaba arreglos de ambos, nmeros y cadenas, en una o dos
dimensiones.

Cada dialecto moderno de BASIC posee al menos los tipos de datos numricos y cadena.
Estos tipos de datos se pueden distinguir usando un posfijo: los identificadores de cadenas
terminan con $ (signo dlar, ejemplo la variable NOMBRE$), mientras que los numricos
sencillamente no llevan posfijo; a menos que se requiera indicar y forzar explcitamente qu
tipo de numrico es, por ejemplo A% es entero, A! es real simple precisin y A# es real doble
precisin.
En BASIC las variables no necesitan forzosamente ser declaradas antes de usarse, excepto
los arreglos de ms de 10 elementos; aunque versiones BASIC relativamente modernas
poseen la opcin (considerada buena prctica de programacin) para obligar al programador
a declarar toda variable antes de su uso (una directiva como OPTION EXPLICIT). La
declaracin de variables en BASIC se hace usando la palabra clave DIM.
Muchos dialectos tambin soportan tipos numricos adicionales, como enteros de 16 y 32
bits (simple y long, respectivamente), adems de sus nmeros de coma flotante.
Adicionalmente algunos permiten la utilizacin de tipos de datos definidos por el usuario,
similar a los "records" de Pascal, o las "structs" de C.
Versiones modernas de BASIC (como VBA) soportan una gran variedad de tipos de datos
primitivos (o intrnsecos), adems de los definidos por el usuario.
La mayora de los dialectos de BASIC soporta arreglos en todos sus tipos de datos; es
comn tambin el soporte para arreglos multidimensionales
Ejemplos:

DIM MatrizDeEnteros(100,100) AS INTEGER


DIM VectorDeEnteros%(30)
DIM ListaDeNombres(50) AS STRING
DIM ListaDeCiudades$(50)

Dependiendo del dialecto de BASIC y del uso del enunciado OPTION BASE, el primer ndice
de los arreglos que se declaren ser 1, por defecto es cero.
En los ejemplos anteriores, si no se declara previamente "OPTION BASE 1", el primero es un
arreglo en dos dimensiones de enteros 16 bits, con ndices que van desde 0 hasta 100
(matriz de 101 x 101 elementos); en tanto que el segundo es un arreglo de enteros en una
sola dimensin, de 0 a 30 (vector de 31 elementos). Observar que las dos formas de
declaracin de enteros son equivalentes, explicitndolo o con el uso del posfijo %.
Anlogamente para cadenas o string de caracteres, que en este caso adems son de
longitud variable (dinmicas, por defecto).

Instrucciones de control
Viejos dialectos de BASIC no permitan a los programadores escribir sus propios
procedimientos. Los programadores en cambio deban escribir sus programas con un gran
nmero de enunciados GOTO para hacer las derivaciones de flujo y retorno del programa.
Esto poda producir un cdigo fuente muy confuso (la mayora de las veces era as),
comnmente conocido como Cdigo espagueti; el cual era sumamente difcil de mantener,
mucho menos por programadores ajenos al desarrollo del software.
Con la inclusin posterior de enunciados GOSUB (Go-Subroutine) se ramificaba el programa
a especies de subrutinas, sin parmetros o variables locales. Ellas proveen una forma de
implementar una suerte de procedimientos (realmente no lo son, sencillamente es un "salto y
retorno") y estructurar ms el programa, evitando bastante la utilizacin de la daina
sentencia GOTO.
La mayora de las versiones de BASIC ms modernas, como Microsoft QuickBASIC (19851988) y BASIC PDS (Profesional Developmen System - 1990) aadieron soporte completo
para subrutinas, funciones y programacin estructurada. Esta es otra rea donde BASIC
difiere de muchos lenguajes de programacin. Sin embargo la primitiva GOSUB se ha
mantenido hasta las versiones actuales, por razones compatibilidad.
BASIC, como Pascal, hace una distincin entre un procedimiento que no devuelve un valor
(llamado subrutina) y un procedimiento que lo hace (llamado funcin). Muchos otros
lenguajes (como C) no hacen esa distincin y consideran todo como una funcin (algunas
que devuelven un valor void [vaco]).
Mientras que las funciones que devuelven un valor son una adicin relativamente reciente a
los dialectos de BASIC, muchos de los primeros sistemas soportaban la definicin de
funciones matemticas en lnea, con DEF FN (DEFine FunctioN [DEFinir FunciN]). El
Dartmouth BASIC original tambin soportaba funciones al estilo de Algol, as como
subrutinas desde sus primeros tiempos.

Manejo de archivos
BASIC no tiene una biblioteca externa estndar como otros lenguajes como C. En cambio, el intrprete (o
compilador) contiene una biblioteca incorporada de procedimientos intrnsecos. Estos procedimientos
incluyen la mayora de las herramientas que un programador necesita para aprender a programar y
escribir aplicaciones sencillas, as como funciones para realizar clculos matemticos, manejar cadenas,
entrada desde la consola, grficos y manipulacin de archivos.

Ejemplo
Ejemplo 1: Hola Mundo!
PRINT "Hola Mundo!"

Ejemplo 2: BASIC original no estructurado (Applesoft BASIC)


10 INPUT "Cul es su nombre:"; NN$
20 PRINT "Bienvenido al 'asterisquero' ";NN$
25 PRINT
30 INPUT "con cuntos asteriscos inicia [Cero sale]:"; N
40 IF N<=0 THEN GOTO 200
50 AS$=""
60 FOR I=1 TO N
70 AS$=AS$+"*"
80 NEXT I
90 PRINT "AQUI ESTAN:"; AS$
100 INPUT "Desea ms asteriscos:";SN$
110 IF SN$="" THEN GOTO 100
120 IF SN$<>"S" AND SN$<>"s" THEN GOTO 200
130 INPUT "CUANTAS VECES DESEA REPETIRLOS [Cero sale]:"; VECES
140 IF VECES<=0 THEN GOTO 200
150 FOR I=1 TO VECES
160 PRINT AS$;
170 NEXT I
180 PRINT
185 REM A repetir todo el ciclo (comentario)
190 GOTO 25
200 END

Ejemplo 3: Equivalente en BASIC estructurado (Quick BASIC)


DEFINT I-N

'Declara entera toda variable que comience con letras I a N

iTrue = -1

'Flag en Verdadero

INPUT "Cul es su nombre"; NombreUsuario$


PRINT "Bievenido al 'asterisquero',"; NombreUsuario$
DO
PRINT
INPUT "Con cuntos asteriscos inicia [Cero sale]:"; NroAsteriscos

IF NroAsteriscos<=0 THEN EXIT DO


Asteriscos$ = ""
FOR I=1 TO NroAsteriscos
Asteriscos$=Asteriscos$ + "*"
NEXT I
PRINT "AQUI ESTAN: "; Asteriscos$
DO
INPUT "Desea ms asteriscos:";SN$
LOOP UNTIL SN$<>""
IF SN$<>"S" AND SN$<>"s" THEN EXIT DO

'Salida

INPUT "CUANTAS VECES DESEA REPETIRLOS [Cero sale]:";iVeces


IF iVeces<=0 THEN EXIT DO
FOR I = 1 TO iVeces
PRINT Asteriscos$;
NEXT I
PRINT
LOOP WHILE iTrue
END

'Salida

C
C es
un lenguaje
de
programacin originalmente
desarrollado
por Dennis
M.
Ritchie entre 1969 y 1972 en los Laboratorios Bell,2 como evolucin del anterior lenguaje B,
a su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos,
concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje
de programacin ms popular para crear software de sistemas, aunque tambin se utiliza
para crear aplicaciones.
Se trata de un lenguaje de tipos de datos estticos, dbilmente tipificado, de medio nivel pero
con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes
de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control
a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan
mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o
dispositivos.
La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El
lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente,
en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este
estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es portable
entre plataformas y/o arquitecturas.

Requerimientos para su instalacin


Los requerimientos mnimos para ejecutar Dev-C++ son:
Microsoft Windows 95, 98, NT 4, 2000, XP
32 MB RAM
100 Mhz Intel compatible CPU
30 MB de espacio libre de disco
Los requerimientos aconsejados para Dev-C++ son:
Microsoft Windows 2000, XP
64 MB RAM
400 Mhz Intel compatible CPU
200 MB de espacio libre de disco

Caractersticas
Propiedades

Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como


funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas.

Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los
ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias
de ruptura).

Un sistema de tipos que impide operaciones sin sentido.


Usa un lenguaje de pre procesado, el preprocesador de C, para tareas como
definir macros e incluir mltiples archivos de cdigo fuente.

Acceso a memoria de bajo nivel mediante el uso de punteros.

Interrupciones al procesador con uniones.

Un conjunto reducido de palabras clave.

Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por
referencia se consigue pasando explcitamente a las funciones las direcciones de
memoria de dichos parmetros.

Punteros a funciones y variables estticas, que permiten una forma rudimentaria


de encapsulado y polimorfismo.

Tipos de datos agregados ( struct ) que permiten que datos relacionados (como un
empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un
todo (en una nica variable "empleado").

Carencias

Recoleccin de basura nativa, sin embargo se encuentran a tal efecto bibliotecas


como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.

Soporte para programacin orientada a objetos, aunque la implementacin original de


C++ fue un preprocesador que traduca cdigo fuente de C++ a C.

Funciones anidadas, aunque GCC tiene esta caracterstica como extensin.

Soporte nativo para programacin multihilo.

Ventajas y Desventajas
Ventajas

Lenguaje muy eficiente puesto que es posible utilizar sus caractersticas de bajo nivel
para realizar implementaciones ptimas.

A pesar de su bajo nivel es el lenguaje ms portado


habiendo compiladores para casi todos los sistemas conocidos.

Proporciona facilidades para realizar programas modulares y/o utilizar cdigo o


bibliotecas existentes.

en

existencia,

Desventajas
El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de
dato dinmico es la gran diferencia en velocidad de desarrollo: es ms lento programar en C,
sobre todo para el principiante. La razn estriba en que el compilador de C se limita a traducir
cdigo sin apenas aadir nada. La gestin de la memoria es un ejemplo clsico: en C el
programador ha de reservar y liberar la memoria explcitamente. En otros lenguajes (como
BASIC, Matlab o C#) la memoria es gestionada de forma transparente para el programador.
Esto alivia la carga de trabajo humano y en muchas ocasiones evita errores, aunque tambin
supone mayor carga de trabajo para el procesador.
El mantenimiento en algunos casos puede ser ms difcil y costoso que con ciertos lenguajes
de ms alto nivel. El cdigo en C se presta a sentencias cortas y enrevesadas de difcil
interpretacin.
Cabe destacar el contexto y poca en la que fue desarrollado C. En aquellos tiempos existan
muy pocos programadores, los cuales, a su vez, eran prcticamente todos expertos en el
rea. De esta manera, se asuma que los programadores eran conscientes de sus trabajos y
capaces de manejar perfectamente el lenguaje. Por esta razn es muy importante que los
recin iniciados adopten buenas prcticas a la hora de escribir en C y manejar la memoria,
como por ejemplo un uso intensivo de indentacin y conocer a fondo todo lo que implica el
manejo de punteros y direcciones de memoria.

Tipos de datos

Instrucciones de control

Manejo de archivos
El estndar de C contiene varias funciones para la edicin de ficheros, stas estn definidas
en la cabecera stdio.h y por lo general empiezan con la letra f, haciendo referencia a file.
Adicionalmente se agrega un tipo FILE, el cual se usar como apuntador a la informacin del
fichero. La secuencia que usaremos para realizar operaciones ser la siguiente:

Crear un apuntador del tipo FILE *


Abrir el archivo utilizando la funcin fopen y asignndole el resultado de la llamada a
nuestro apuntador.

Hacer las diversas operaciones (lectura, escritura, etc).

Cerrar el archivo utilizando la funcin fclose.

Fopen

Esta funcin sirve para abrir y crear ficheros en disco.


El prototipo correspondiente de fopen es:
FILE * fopen (const char *filename, const char *opentype);

Los parmetros de entrada de fopen son:


filename: una cadena que contiene un nombre de fichero vlido. opentype: especifica el tipo
de fichero que se abrir o se crear.
Una lista de parmetros opentype para la funcin fopen es:

"r": abrir un archivo para lectura, el fichero debe existir.

"w: abrir un archivo para escritura, se crea si no existe o se sobrescribe si existe.

"a": abrir un archivo para escritura al final del contenido, si no existe se crea.

"r+": abrir un archivo para lectura y escritura, el fichero debe existir.

"w+": crear un archivo para lectura y escritura, se crea si no existe o se sobrescribe si


existe.

"r+b rb+": Abre un archivo en modo binario para actualizacin (lectura y escritura).

"rb": Abre un archivo en modo binario para lectura.

Adicionalmente hay tipos utilizando "b" (binary) los cuales no sern mostrados por ahora y
que solo se usan en los sistemas operativos que no pertenecen a la familia de unix.

Fclose
Esta funcin sirve para poder cerrar un fichero que se ha abierto.
El prototipo correspondiente de fclose es:

int fclose (FILE *stream);

Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido
algn error, el valor de retorno es la constante EOF.

Un ejemplo pequeo para abrir y cerrar el archivo llamado fichero.in en modo lectura:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
FILE *fp;
fp = fopen ( "fichero.in", "r" );
if (fp==NULL) {fputs ("File error",stderr); exit (1);}
fclose ( fp );
return 0;
}

Como vemos, en el ejemplo se utiliz el opentype "r", que es para la lectura.


Otra cosa importante es que el lenguaje C no tiene dentro de s una estructura para el
manejo de excepciones o de errores, por eso es necesario comprobar que el archivo fue
abierto con xito "if (fp == NULL)". Si fopen pudo abrir el archivo con xito devuelve la
referencia al archivo (FILE *), de lo contrario devuelve NULL y en este caso se deber revisar
la direccin del archivo o los permisos del mismo. En estos ejemplos solo vamos a dar una
salida con un retorno de 1 que sirve para sealar que el programa termino por un error.

Lectura
Un archivo generalmente debe verse como un string (una cadena de caracteres) que est
guardado en el disco duro. Para trabajar con los archivos existen diferentes formas y
diferentes funciones. Las funciones que podramos usar para leer un archivo son:

char fgetc(FILE *archivo)

char *fgets(char *buffer, int tamano, FILE *archivo)

size_t fread(void *puntero, size_t tamano, size_t cantidad, FILE *archivo);

int fscanf(FILE *fichero, const char *formato, argumento, ...);

Las primeras dos de estas funciones son muy parecidas entre s. Pero la tercera, por el
numero y el tipo de parmetros, nos podemos dar cuenta de que es muy diferente, por eso la
trataremos aparte junto al fwrite que es su contraparte para escritura.

Fgets
Esta funcin est diseada para leer cadenas de caracteres. Leer hasta n-1 caracteres o
hasta que lea un cambio de lnea '\n' o un final de archivo EOF. En este ltimo caso, el
carcter de cambio de lnea '\n' tambin es ledo.
El prototipo correspondiente de fgets es:

char *fgets(char *buffer, int tamao, FILE *archivo);

El primer parmetro buffer lo hemos llamado as porque es un puntero a un espacio de


memoria del tipo char (podramos usar un arreglo de char). El segundo parmetro es tamao
que es el lmite en cantidad de caracteres a leer para la funcin fgets. Y por ltimo el puntero
del archivo por supuesto que es la forma en que fgets sabr a que archivo debe leer.

Escritura
As como podemos leer datos desde un fichero, tambin se pueden crear y escribir ficheros
con la informacin que deseamos almacenar, Para trabajar con los archivos existen
diferentes formas y diferentes funciones. Las funciones que podramos usar para escribir
dentro de un archivo son:

int fputc(int carcter, FILE *archivo)

int fputs(const char *buffer, FILE *archivo)

size_t fwrite(void *puntero, size_t tamano, size_t cantidad, FILE *archivo);

int fprintf(FILE *archivo, const char *formato, argumento, ...);

Fputs
La funcin fputs escribe una cadena en un fichero. La ejecucin de la misma no aade el
carcter de retorno de lnea ni el carcter nulo final. El valor de retorno es un nmero no

negativo o EOF en caso de error. Los parmetros de entrada son la cadena a escribir y un
puntero a la estructura FILE del fichero donde se realizar la escritura.
El prototipo correspondiente de fputs es:

int fputs(const char *buffer, FILE *archivo)

para ver su funcionamiento mostramos el siguiente ejemplo:

#include <stdio.h>
int main ( int argc, char **argv )
{
FILE *fp;
char cadena[] = "Mostrando el uso de fputs en un fichero.\n";
fp = fopen ( "fichero.txt", "r+" );
fputs( cadena, fp );
fclose ( fp );
return 0;
}

Ejemplo

Bibliografa

https://es.wikipedia.org/wiki/Fortran#Especificaciones
http://www.escet.urjc.es/~inf_iq/Temas/manual%20compilador.pdf
http://html.rincondelvago.com/lenguajes-de-programacion_8.html
https://es.wikipedia.org/wiki/C_(lenguaje_de_programaci
%C3%B3n)#Ventajas
http://profesores.fi-b.unam.mx/carlos/lcpi/p09/TIPOS%20DE%20DATOS
%20EN%20C.pdf
http://elvex.ugr.es/decsai/c/apuntes/control.pdf
http://profesores.fi-b.unam.mx/carlos/lcpi/p09/TIPOS%20DE%20DATOS
%20EN%20C.pdf
http://recursostic.educacion.es/observatorio/web/en/software/program
acion/972-tipos-de-datos
http://lenguajedeprogramacinucnblog.blogspot.mx/2011/10/guiainstalacion-de-dev-c.html
http://blog.freniche.com/2011/01/05/que-necesitas-instalar-paraprogramar-en-c-en-windows/
https://es.wikipedia.org/wiki/BASIC#Procedimientos_y_Control_de_Flujo
http://www.moodlecchazc.unam.mx/moodleccha/mod/book/view.php?
id=6529&chapterid=130
http://www.nachocabanes.com/pascal/cupas5/cupas07c.php
http://www.consultoriocobol.com/2010/11/xml-parse-de-xml-ficheroplano-con.html
http://www.consultoriocobol.com/2011/02/sentencia-merge-en-unprograma-cobol.html
http://www.consultoriocobol.com/2011/02/sentencia-sort-en-unprograma-cobol.html
http://www.consultoriocobol.com/2011/01/esquema-de-un-programacobol.html
https://es.wikipedia.org/wiki/COBOL#Caracter.C3.ADsticas
https://es.wikipedia.org/wiki/Fortran
http://docplayer.es/2333418-Instalacion-y-utilizacion-del-compiladorgfortran.html

Vous aimerez peut-être aussi