lunes, 30 de agosto de 2010

~Lenguajes de scripting

Semana 3
Materia: Lenguajes de Programación
Hora: Martes M1-M3

Hola a todos, este es mi reporte de la semana 3 acerca de los lenguajes de scripting.

Awk
Su nombre se debe a las primera letra del apellido de sus autores, Alfred Aho, Peter Weinberger y Brian Kernigha. Fue diseñado para procesar datos en texto, utiliza listas ordenadas por cadenas claves y expresiones.

Estructura de awk
  1. Parte inicial, se ejecuta sólo una vez al principio del programa.

    BEGIN { orden }
  2. Parte central, con el bloque de instrucciones que se ejecutan en el programa.

    /PATRÓN/ { instrucciones }
  3. Parte final, se efectua sólo una vez, al final del programa.

    END { orden }
 
Les dejo el link donde encontré la información por si les interesa.
Introduccion Awk
 
Un tutorial de awk para profundizar más sus conocimientos del lenguaje awk por si les interesa.


Ejemplos de Awk


Este programa te dice en que categoría estás, puede ser desnutrición, peso bajo, peso normal, sobrepeso moderado, obesidad y obesidad morbida. Para esto te pregunta tu índice de masa corporal (IMC). Para esto investigué la estructura del if y como poner variables en el programa.

#! /usr/bin/awk -f

BEGIN{
 print "Para calcular tu IMC usa la formula IMC=peso/estatura"
 print "Dime tu IMC"
     }
{
 print "Tu IMC es". $1;
 if($1<=16)
  print"Estas desnutrido";
 if($1>16 && $1<=20)
  print"Tu peso es bajo";
 if($1>20 && $1<=25)
  print"Tu peso es normal";
 if($1>25 && $1<=30)
  print"Tienes sobrepeso moderado";
 if($1>30 && $1<=35)
  print"Tienes obesidad";
 if($1>35)
  print"Tienes obesidad morbida";

 print "\nDime tu IMC";

}
END{
 print "Done"
    } 


Les explicaré cada línea, la línea de BEGIN como ya lo mencione, va al principio del programa para iniciar el primer bloque. Normalmente en ese bloque se inicializan las variables o se piden datos. Para imprimir lineas se usa la función print, en la línea que sigue se lee el IMC (índice de masa corporal) que sería el campo 1, o sea para referirse a el se utiliza $1. Empezamos el bloque de instrucciones primero imprime "Tu IMC es" y te imprime lo que leyó al iniciar el programa. Después hay un bloque de condiciones las cuáles se usan para determinar en que categoría te encuentras dependiendo tu IMC. Al final se abre el bloque END que se pone para finalizar el programa. En éste puedes imprimir los resultados o simplemente lo que quieres que aparezca al final del programa.

El programa tiene la siguiente salida:


Otro ejemplo que hice es un programa que te produce la tabla del número que tu escojas, imprimiendo las primeras 10 multiplicaciones de ese número. Para esto puse un for para que hiciera la multiplicación de ese número 10 veces incrementando en cada vuelta un número.

#! /usr/bin/awk -f

BEGIN{
 print "Dime el numero del que quieres la tabla"
     }
{
 print "La tabla del", $1, "es"
 for(i=1;i<=10;i++){
  print $1, "x",i,"="$1*i;
 }


}
END{
 print "Done"
    } 

La salida de este programa es la siguiente:



Shell

Shell es un intérprete de comandos, sirve principalmente para administrar el sistema operativo, hacer aplicaciones pudiendo interactuar con ellas y también sirve como entorno de programación. Los programas Shell no se necesitan compilar solo se ejecutan y para en el inicio del programa debes poner la ruta o path donde se encuentra el ejecutable.

Les dejo el link de donde saqué esta información y donde vienen ejemplos que puedes analizar para conocer más acerca de este lenguaje.
Introducción shell


Ejemplo de programa en shell Este programa tiene un menú de operaciones, pones dos números los que tu quieras para después elegir la operación que deseas y al final te imprime el resultado de la operación que escogiste. Para esto investigué la estructura del case y como se ponían las operaciones asi como las variables.
 
#! bin/sh 

echo "Dime el primer numero"
read x
echo "Dime el segundo numero"
read y

echo "Dime la operacion que deseas realizar"
echo "a Suma   b Resta    "
echo "c Multiplicacion  d Division "
read OPCION

case $OPCION in
 a|A)
 echo "La suma de $x + $y = $((x+y))";
 break;;
 b|B)
 echo "La diferencia de $x -$y = $((x-y))";
 break;;
 c|C)
 echo "El producto de $x x $y = $((x*y))";
 break;;
 d|D)
 echo "El resultado de $x/$y = $((x/y))";
 break;;
 8)echo "Dime una opcion valida";;
esac

Les explicaré las líneas del programa,la función echo se usa para imprimir en pantalla en este caso imprimirá "Dame el primer número" así como el segundo y con la función read te leerá lo que tu pongas con el teclado. Estos números serán guardados en sus variables respectivas "x" y "y". Después se despliega el menú donde hay opciones a Suma b Resta c Multiplicación y d División en este menú tu escojerás que operación deseas realizar para esto entran los cases, le puse que funcionara si ponías mayúscula o minúscula, por ejemplo si quieres suma y pones la letra "a" o "A" funcionará correctamente con cualquiera de las dos letras. Dependiendo de lo que hayas elegido te hace la operación correspondiente y te imprime el resultado. Aquí esta la ejecución de este programa.
Suma 

Resta
Multiplicación

División
Perl

Es un lenguaje de programación que fue diseñado por Larry Wall en 1987. Este lenguaje adquirió características del lenguaje C, Shell, AWK, entre otros. Perl esta formado por bloques como el lenguaje C y fue muy aceptado porque no tiene tantas limitaciones como los otros lenguajes script.

Les dejo el link de donde saqué la información por si les sirve de algo.


Ejemplo de lenguaje Perl
Este programa eleva un número que tu tecleas a la potencia que tu deseas ponerle. Para esto estuve investigando como se usa la potencia y también la forma en que se tiene que poner el for.

Explicaré algunas lineas del programa, te pide el número que deseas elevar que seria la base y lo lee del teclado, te pide también la potencia a la que lo deseas elevar y la lee del teclado también Entra el ciclo for desde 1 hasta la potencia que le diste para que vaya acumulando las multiplicaciones tantas veces sea el expontente. Al final se imprime el resultado de la potencia.
La salida de este programa es la siguiente.


 Bueno este es mi reporte de la semana 3 acerca de los lenguajes de scipting. Espero le hayan entendido y les haya servido. Saludos y si tienen algún comentario no duden en hacerlo.

~Comandos Ubuntu

Materia: Laboratorio de Lenguajes de Programación
Hora: Jueves V1

Hola otra vez, en esta entrada les explicaré algunos comandos de los que vimos en clase para que los recuerden y los practiquen.

less
Este comando se utiliza para poner en pantalla la salida de un programa pudiendose mover para arriba o abajo con las teclas de dirección del teclado. Se utiliza más que nada para programas que tienen una salida muy extensa ya que falicita al usuario leer con mayor facilidad moviendose con las teclas de dirección.

cut
Este comando se usa como su nombre lo dice para cortar caracteres y campos, puedes usar delimitadores para quitar las partes que selecciones de cada fichero en la salida.

kill
Este comando te permite interactuar con procesos mandando señales. Se utiliza para terminar procesos.

cat
Este comando se utiliza para concatenar archivos y mostrarlos en la salida, puede ser más de un archivo.

touch
Este comando cambia la fecha de un archivo, puedes cambiar la fecha de modificación, de acceso.

tar
Este comando copia un archivo o varios desde o hacia un archivo comprimido tar.

sort
Este comando se utiliza como su nombre lo dice para ordenar lineas de texto. El comando ordena por defecto en orden alfabético pero puedes también ordenar de forma numérica o inversamente.

echo
Este comando se utiliza para imprimir el texto que le indiques en la pantalla.

Gzip
Este comando se utiliza para comprimir o descomprimir archivos Gz.

grep
Este comando se utiliza para imprimir en pantalla las líneas que tengan la palabra o partes de una palabra que tu indiques. Lo que hace es hacer una busqueda en el archivo para encontrar coincidencias con la palabra que indicaste.

man
Este comando es muy utilizado ya que te muestra en pantalla el manual del comando que introduces.

sed
Este comando se utiliza para borrar lineas o registros, y también para sustituir cadenas de caracteres.

ps
Este comando te muestra en pantalla los procesos que se están ejecutando.

which
Este comando te permite saber donde se encuentran instalado un programa.


Estos son las herramientas que se utilizan en el terminal. Si tienen alguna duda haganmela saber, estos comandos los vimos en la semana 2 de lenguajes de programación.

Saludos, espero les haya servido :)

lunes, 23 de agosto de 2010

Analisis Sintáctico

Muy buenos días compañeros, aqui les tengo mi presentación acerca del tema "Analisis Sintáctico" parte de "Fases de Analisis del Compilador"  . El  tema se expondra en clase junto con mi compañera Lizbeth Treviño .


lunes, 16 de agosto de 2010

~FORTRAN

Hola a todos, les voy a hablar acerca del lenguaje de programación Fortran.

Un dato que se me hizo interesante es el origen de la palabra fortran. La palabra FORTRAN proviene de las palabras formula translator (traductor de fórmula en español). ¿A qué se debe éste nombre? Esto viene a que el lenguaje Fortran está adaptado al cálculo numérico y la computación científica.

Empezando con la historia del lenguaje Fortran fue el primer lenguaje de programación de alto nivel que salio al mercado. Fue diseñado por John Backus para IBM (International Bussines Machines) en 1957. Este lenguaje se ha estado utilizando hasta la fecha en áreas como análisis de elementos infinitos, dinámica de fluidos computacionales y es uno de los lenguajes más populares en  el área de computación de alto rendimiento. El primer compilador de este lenguaje fue lanzado en 1957.

Fortran tiene muchas versiones en las cuales conforme existiera una versión más nueva se fue extendiendo el lenguaje. Esto quiere decir que entre más nueva sea la versión se le han estado agregando más reglas sintácticas entre otras cosas para mejorar el entendimiento del lenguaje.

Este lenguaje fue el causante que muchos escritores producieran compiladores para hacer  un programa más rápido y eficiente. ¿Qué es un compilador? Un compilador es una herramienta muy útil que traduce el lenguaje de programación a un lenguaje que se pueda interpretar por la máquina.

¿Qué identifica al lenguaje Fortran? El lenguaje Fortran se escribía en tarjetas perforadas. Este lenguaje soporta datos numéricos, booleanos, arreglos, cadenas de caracteres y archivos. En variables y constantes, Fortrán no es sensible a mayúsculas y minúsculas, o sea que por ejemplo si escribes una variable llamada SUM y pones Sum después estarias refiriendote a la misma variable. 

  • El rango de caracteres que se puede usar para nombres de variables es de 6 a 31 caracteres máximo.
  • Los arreglos pueden tener hasta 7 dimensiones y se guardan por columnas.
  • Para almacenar datos se usa COMMON para los datos que son compartidos y EQUIVALENCE para cuando se almacenan variables que están en la misma dirección de memoria.
  • Se utiliza DATA para inicializar constantes.
Control de Secuencia.
*Expresiones, se da prioridad a los operadores.
*Enunciados
             -Enunciados de asignación. 
             -Enunciados condicionales. 
                            IF..... ELSE IF
                            SELECT CASE CASE .... CASE DEFAULT.... END SELECT
             -Enunciado de iteración.
                           DO .... END DO
             -Enunciado Nulo
                           CONTINUE
*Control de subprogramas. 
                           CALL  llama al subprograma 
                           RETURN devuelve un valor al programa que llama.

Existen dos tipos de archivos: secuenciales y de acceso directo. Algunos comandos que se utilizan en archivos son : READ, WRITE, OPEN, CLASE, INQUIRE, REWIND, ENDFILE.

Esto es lo que investigue acerca de el lenguaje Fortran, espero que les sea útil y que esté bien explicado.

Aquí les dejo un manual de Fortran está muy completo, vienen los elementos, estructura, como y cuando se usan algunos comandos, como escribir operadores, comentarios, líneas, etc. Es muy útil para aprender algo básico acerca del lenguaje Fortran.


Aquí un link para descargar un editor y compilador de Fortran


Ejemplo de programa en lenguaje Fortran.

IMPLICIT  NONE
REAL  a,b, area
PRINT*,´DAME EL LADO a´
READ*,a
PRINT*,´DAME EL LADO b´
READ*,b
area=a*b
PRINT*,´AREA=´,area
END

Este programa está sencillo solo calcula el área de un rectángulo. Explicaré cada uno de los comandos y sentencias.
IMPLICIT NONE. Es una sentencia que se utiliza para obligar al programador a declarar todas las variables que se utilizarán en el código.
REAL. Es el tipo de variable que se declara en este caso son números reales.
PRINT. Se usa para imprimir en pantalla.
READ. Lee los datos ingresados por el usuario.
END. Significa que ahí termina el programa.

Les dejo también un video que encontré que te introduce a programar en lenguaje Fortran por si a alguien le interesa. 




Bueno eso es todo lo que investigué acerca de el lenguaje Fortran y la verdad me ayudo mucho todo lo que investigué porque me gusta conocer más lenguajes de programación y más porque todos tienen cosas similares que te hace entenderlos más facilmente. Espero que les sirva de algo y que aprendan más asi como yo.

Los links los pondré tambien en la sidebar para que los encuentren más facilmente.

Saludos :)

Bibiografía.
Aedo Contreras, Guillermo. "Que es Fortran." Desarrollo Web. DesarolloWeb.com, 01 Jul 2004. Web. 16 Aug 2010. <http://www.desarrolloweb.com/articulos/1550.php>. 



miércoles, 11 de agosto de 2010

~Introducción Emacs

Materia: Laboratorio de Lenguajes de Programación


Hora: Jueves V1

Emacs es un editor de texto extensible, personalizable y se puede utilizar para muchas cosas desde editar un fichero de texto, navegar por internet hasta jugar.

El área donde editamos texto se llama buffer principal, esto es porque en emacs nunca se trabaja con el archivo original sino con una copia llamada buffer.

El editor de texto tiene un área abajo llamada área de eco, la cual muestra mensajes al usuario, por ejemplo cuando guardas el archivo. Ahí tambien se muestran los comanos que vamos tecleando.

Si deseamos trabajar en emacs desde la terminal podemos usar la opcion -nw que sirve para que trabajes en emacs dentro de la terminal.

Aqui les dejo una lista de comandos que les pueden ser útiles.

Moverse a traves del texto



Ctrl-f - avanza un caracter

Ctrl-b - retrocede un caracter

Esc-f - avanza una palabra
Esc-b - retrocede una palabra
Ctrl-a - va al principio de la linea

Ctrl-e - va al final de la linea

Ctrl-v - avanza una pantalla

Esc-v - baja una pantalla
Esc-x - goto-line ir a una linea especifica


Buscar


Ctrl-s - busca hacia abajo

Ctrl-r - busca hacia arriba

Ctrl-s Ctrl-s - repite la busqueda

Esc-Ctrl-s - busca utilizando como patron una expresion regular
Esc-x replace-string - reemplazo de texto



Borrar


Esc-d - borra una palabra
Esc-del - borra palabra anterior
Ctrl-k - borra toda la linea

Esc-k - borra todo el parrafo
Ctrl-g - cancela la ejecucion de un comando
Ctrl-x u - deshace el ultimo cambio


Trabajo con ventanas


Ctrl-x 2 - divide la ventana en dos (horizontalmente)

Ctrl-x 3 - divide la ventana en dos (verticalmente)

Ctrl-x o - para cambiar de ventana

Ctrl-x k - cierra la ventana actual


Biblografía.
Garcia, Jesus. "Introduccion a GNU Emacs." Exal. Exal, 05 feb 2008. Web. 11 Aug 2010. <http://exal.0x2.org/emacs/emacs.html#sec3>.

Encontré un manual de introducción a emacs, esta un poco largo pero esta bien explicado lo que llevo leido, puede que les sirva :).

Manual de introducción a emacs

Aqui les dejo un breve tutorial de emacs en inglés, la mayoría de lo que aparece en el video lo vimos la clase pasada en laboratorio de lenguajes de programación. Les sirve para que repasen o para que lo tengan de apoyo :).

martes, 10 de agosto de 2010

~Referencias para el uso de emacs

La doctora nos recomendo el uso de tarjetas de referencia para el uso de emacs, las pueden imprimir y enmicar para traerlas a clase. 


Espero que les sirva de algo, saludos :)

lunes, 9 de agosto de 2010

~Introducción a Ensambladores

Materia: Lenguajes de Programación
Hora: Martes M1-M3

Un ensamblador es un programa utilizado para transformar lenguaje Assembly a código máquina. El lenguaje Assembly fue creado para facilitar el entendimiento y la escritura del lenguaje, ya que contiene palabras relacionadas con lo que se desea hacer.




Los ensambladores trabajan en forma de línea cuando se quiere unir una sola línea y en forma de archivo cuando unen todo un programa fuente que ya fue almacenado en un archivo.


También pueden clasificarse de acuerdo a la información que procesan en:







  • Propios. Unen programas que tienen el mismo lenguaje que el procesador de la computadora. Permiten que el programa se ejecute rápidamente. Estos ensambladores deben de permanecer en la memoria principal de la computadora.







  • Cruzados. A diferencia de los ensambladores propios, estos ensambladores unen programas que tienen diferente lenguaje al del procesador de la computadora.







  • Macroensambladores. Estos ensambladores permiten secuencias de instrucciones, las cuales son muy útiles para instrucciones que se repiten o que están muy complicadas, y ahorran tiempo.


Los ensambladores en ciertos casos no son necesarios, se recomienda usarlos cuando el programa debe controlar los componentes internos de la computadora o cuando deseas que el programa sea muy rápido.

Esta imagen muestra un poco de como es el lenguaje Assembly.

http://upload.wikimedia.org/wikipedia/commons/f/f3/Codigo_de_maquina.png

Esta es como una introducción que hice para el tema de ensambladores. Espero que le entiendan y que les haya ayudado en algo :)

~Tarea 1.

Lenguajes de Programación


Materia: Lenguajes de Programación
Hora: Martes M1-M3


• Mapa Conceptual



Hola a todos, esta es mi primera tarea de lenguajes de programación. Un mapa conceptual acerca de los lenguajes de programación en el cual se encuentra los conceptos que se me hicieron más importantes.

Estuve investigando aparte de lo que nos explico la Dra. Elisa en clase más información acerca de este tema. Les explicaré mi mapa conceptual a continuación.

Definicion. Los lenguajes de programación son un lenguaje diseñado para describir acciones que deben ser realizadas por la máquina.

En cuanto a la historia que antecede a éstos lenguajes de programación está en un principio el lenguaje máquina que se podría decir binario ya que solo manejaba el 0 y 1. Despúés con el objetivo de facilitar el entendimiento del lenguaje se hizo un nuevo lenguaje de bajo nivel, el cual se caracterizaba por que también contenía letras y palabras en inglés que se relacionaban con la acción que deseabas realizar . Por ejemplo, si querias restar, usabas SUB de subtract (en español restar). Con el paso del tiempo se fueron mejorando los lenguajes hasta llegar a los lenguajes de programación, los cuales tenían reglas sintácticas y semánticas para que fuera más facil de entender para el ser humano y se podían ejecutar en diferentes equipos.  Éstos lenguajes de programación ya se decían de alto nivel.


Las caraterísticas de un lenguaje de programación es que debe ser legible, claro, natural, eficiente, portable, etc. Todo esto para beneficio de que se entienda mejor y que no  se batalle a la hora de leerlo. Para lograr todo esto debe de tener ciertas reglas de sintáxis y semántica.


Sintáxis.  Es la forma en la que se debe escribir un enunciado, varia dependiendo del lenguaje.
Semántica. Es la interpretación de las expresiones. Las expresiones son funciones que producen valores.
Las herramientas necesarias para programación se relaciona con todo lo que se necesita para programar. Lo físico que es el hardware, el sistema operativo que en el cual programas, el software o programa que estés haciendo y el usuario.
Por último puse las clasificaciones de los paradigmas.
Los paradigmas son métodos utilizados para la construcción de programas. Los paradigmas se clasifican en:


  • Programación Imperativa. Se caracteriza por una serie de comandos detallados de forma clara y específica que una máquina ejecutará en un orden específico.


  • Programación Funcional. Esta basada en definiciones de funciones matemáticas. Tiene ciertos parámetros que son las entradas que pueden tener y los resultados que serían todas las salidas posibles.


  • Programación Lógica. En esta categoría, el problema se resuelve mediante inferencias basadas en el conocimiento de la lógica. No se indica como hacerlo, sino que hacer.


  • Programación orientada a objetos. Es la más popular en la actualidad. Su objetivo es tratar de simular los objetos de la vida real.


Espero que todo este claro y que le entiendan (:, ojalá les sirva de algo y comenten que les pareció.
Saludos a todos.