Programación Para Newbies: Fortran 6: Vectores y Arrays

Acá desarrollaremos el manejo más básico de vectores y arrays (también conocidos como arreglos en español) en el lenguaje Fortran.

A muchos les puede sonar conocida la palabra vector, para algunos, es un organismo que transmite enfermedades, para otros (los más matemáticos) es una cantidad dirigida, o un elemento de una estructura algebraica conocida como espacio vectorial, por lo tanto partimos definiendo ¿qué es un vector o un array en Fortran?.

Básicamente un vector (o array también) es una manera de manejar una gran cantidad de datos de manera más cómoda, ¿a qué nos referimos con esto? se preguntarán algunos, bueno, más especificamente un vector es un tipo de variable, que dentro de si contiene distintos valores.

Por ejemplo, en matemáticas, podemos definir el vector A=(x,y,z) en el espacio de 3 dimensiones, en Fortran es muy similar (recordemos que el objetivo del lenguaje es ayudar en tareas de matemáticas, ciencia e ingeniería), podemos definir vectores con cuantas componentes queramos. Los arrays son un poco distintos, estos trabajan (por dar un par de ejemplos) en distintas dimensiones, con esto me refiero a filas, columnas, etc, estas imágenes son más explicativas:

Sigue leyendo

Anuncios

Programación Para Newbies: Fortran 5: Subprogramas

Hasta el momento, hemos aprendido a trabajar con las distintas variables, y a usar estructuras para modificar el curso que toman nuestros programas, pero cuando nos enfrentamos a programas más extensos, que algunas veces necesitan ejecutar un mismo bucle para procesar ciertos datos, pero las variables no son las mismas, no es lo más cómodo copiar y pegar las mismas instrucciones varias veces, más todavía si tenemos que estar cambiando las variables cada vez que usemos el mismo algoritmo, para esto existen los subprogramas.

Un subprograma es una estructura que se agrega al final del programa y se puede invocar en cualquier parte del programa principal (perdonen que sea reiterativo con la palabra programa) indicando que variables participan dentro del subprograma, que cambios se les hacen, etc. Tenemos de dos tipos: functions y subroutines, sus diferencias son sutiles.

Una function (o función en castellano), son subprogramas que tienen 0 o más argumentos (variables) y que retornan un valor en el nombre, esto significa, por lo pronto, que su invocación debe estar al lado derecho de una asignación de valor a una variable y no puede formar una sentencia aislada dentro del programa. Ejemplificando:

variable=funcion(argumentos)

siempre va a la derecha la invocación de la función. La sintaxis para crear nuestras propias funciones en Fortran es la siguiente:

Sigue leyendo

Programación Para Newbies: Fortran 3: Estructuras de Control Condicionales

Antes de empezar con lo nuevo, vamos a empezar con un pequeño repaso de lo que ya deberíamos haber aprendido.

Nuestros programas ya deben hacer tareas básicas como sumar, restar, multiplicar, mostrar textos, todo de manera secuencial, un claro ejemplo de esto es el ya conocido ¡Hola Mundo!, que ya explicamos, por si olvidaron como se hacía, aquí está el código fuente:

program hola
print*,'¡Hola Mundo!'
end program hola

o también nos pueden saludar:

program saludo
character*10::nombre
print*,'Ingrese por teclado su nombre:'
read*,nombre
print*,'Hola ',nombre
end program

¿notaron que después del tipo de la variable nombre va un * seguido del número 10? eso es para denotar que las variables del tipo character declaradas en esta línea tienen un largo de 10 caracteres, si este indicador se omite se considera que la cadena de texto es de largo 1. Y así combinando las distintas sentencias y variables, podemos crear programas sencillos con distintas finalidades, ¿pero que pasa si queremos que el programa ejecute distintas opciones dependiendo de lo que pase con las variables?

Para eso existen las estructuras de control condicionales, el if y el case, muy distintas entre si. El nombre estructuras de control designa a distintos bucles en la programación que permiten modificar como se ejecuta el programa, dependiendo de las condiciones u orden de repetición que se le indique al programa.

Sigue leyendo

Programación para Newbies: Fortran 2 – Tipos de Variables, Estructura, Sentencias y Compilando

Continuamos con Fortran. Vamos a introducirnos en los aspectos más básicos de la programación en este lenguaje.

Tipos de Variables:

Las variables son los ingredientes con los que trabajamos al programar, en Fortran existen 5 tipos de variables distintos:

  1. integer: integer es “entero” en inglés, por lo tanto las variables declaradas de este tipo son considerados números enteros, como el -1,01,2,3… o sea, sin cifras decimales. Es importante recalcar que las operaciones que se hagan entre números enteros, incluida la división, darán números enteros, por ejemplo 3+5=8, pero 3/5=0, o sea, solo conserva la parte entera del número resultante.
  2. real: Los números “reales”, no son precisamente Reales, ya que IR es continuo y algunos tienen infinitos decimales, etc, etc, por lo que son meras representaciones de estos, no fieles al extremo, sino lo suficientemente para trabajar con ellos. Existe también los reales de doble precisión
  3. complex: números complejos, se tratan como pares ordenados del tipo (a,b)=a+ib donde i es solución del polinomio x²+1=0 (raíz cuadrada de -1).
  4. logical: son variables binarias, o sea, solo toman dos valores posibles: verdadero (.true.) o falso (.false.)
  5. character: son variables que contienen caracteres, o sea, letras, también conocidas como cadenas de texto.

Sigue leyendo

Programación para Newbies: Fortran 1 – Introducción

Como prometí desde un principio, partiré con la guía para aprender a escribir programas en Fortran. Aquí va una pequeña descripción del lenguaje y lo que necesitan para comenzar a programar.

Como ya nos dijo PaBLoX en su Programación Para Newbies III, Fortran (FORmula TRANslator) fue desarrollado a mediados de los años 50 por John Backus (*1924 – †2007) para los laboratorios de IBM como el primer lenguaje de Alto Nivel; esto significa que es más amigable para el programador que el lenguaje máquina (ceros y unos), reduciendo la extensión de los archivos fuente y la dificultad para encontrar errores. Nació bajo la necesidad de la comunidad científica de realizar cálculos complicados, casi imposibles para una persona, pero fue diseñado para personas que no tuvieran interés en aprender los detalles técnicos del funcionamiento interno de la máquina, tales como los físicos teóricos e ingenieros (los informáticos no caen en esta categoría por supuesto).

A través de los años ha sufrido una gran cantidad de revisiones de estándar, siendo las más importantes:

Sigue leyendo

Programación para Newbies IV: Más sobre los Lenguajes

Seguimos entonces con los lenguajes…

Bajo v/s Alto Nivel

Ahora, lo curioso (o por lo menos interesante) es que realmente el computador no entiende mejor Ensamblador que Fortran o C (bueno, realmente los computadores son conocidos precisamente porque no entienden nada, de ahí que la programación tiene que ser tan precisa), recuerda: sólo código máquina. Para poder traducir los comandos de un lenguaje de medioalto nivel es necesario otro programa especial conocido como compilador. Su trabajo se puede analogar al de traducir un texto de español a inglés.

stock.xchng | arte ram
stock.xchng | arte ram

Tan cierto como en la traducción entre lenguajes humanos, traducir un libro para niños al inglés es muchísimo más fácil y rápido que traducir un paper, dado que éste último tiene vocabulario más técnico y estructuras más complejas. Por lo tanto, es esperable que la traducción de ensamblador a código máquina es más fácil que la de C, y ésta a su vez, que la de FORTRAN a binario.
Como te puedes dar cuenta, vemos que cada uno tiene sus pros y sus contras. En la esquina oeste de shorts azules, tenemos al de alto nivel que es más fácil de aprender, de modificar y de entender, pero también requiere ser compilado, su traducción a lenguaje máquina puede no ser la más adecuado y su control sobre el hardware de la máquina no es demasiado. Por otra parte, en la esquina este de calzoncillos verdes, tenemos al campeón de peso pesado, lenguaje de bajo nivel, que por un lado permite un control importante sobre la máquina y si bien, requiere ser traducido (en general) por un ensamblador, es más rápido, en contraparte es difícil de aprender, utilizar y lo más importante difícil de modificar.

Más y más lenguajes… sigue leyendo la cuarta parte!

Programación para Newbies III: Lenguajes, ¿qué son?

…viene de la segunda parte…

Ya hemos revisado y aprendido la primera premisa de la programación: “Los computadores son estúpidos”. Programar entonces no es más difícil que dar instrucciones paso a paso de lo que queremos que haga. Por desgracia, (aunque no debería sorprendernos) un equipo no entiende español, inglés ni ningún otro lenguaje que los seres humanos podamos comprender. Puesto que de alguna forma tenemos que comunicarnos con el computador nace este nuevo concepto, lenguaje de programación, que será el idioma en el que le daremos las instrucciones que puestas en secuencias, formarán lo que se conoce como código fuente.

Código máquina

stock.xchng | flaivoloka
stock.xchng | flaivoloka

No voy a entrar en mucho detalle sobre el funcionamiento interno de la memoria del computador, pero les diré que ésta alterna entre ceros y unos, que vendría siendo el único lenguaje que el equipo entiende directamente. Puesto que es el código que realmente comprende el computador, se conoce como código máquina. Sorprendentemente, cuando recién aparecieron, los programadores trabajaban de esta forma. Como te podrás imaginar, programar de esta forma es sumamente difícil, imagina lo fácil que es cambiar un cero por uno (o viceversa) y eso produzca que el programa falle (como si eso fuera poco, ¡imagina lo difícil que sería encontrar el error!).

Sigue leyendo sobre la evolución de los lenguajes de programación…