domingo, 14 de noviembre de 2010

Tarea 7 - Lenguajes Imperativos

Aqui mis programas de Lenguajes Imperativos.



Fortran

Este programa, realiza las tablas de multiplicar , empezando desde la que quieras ,hasta la que quieras terminar, y puedes seleccionar cuantas veces multiplicará en cada tabla, por ejemplo , si  quieres que nadamas muestre la tabla del 2 y 3 y que solo llegue a 5 es decir 

2x1 = 2
2x2 = 4
2x3 = 6
2x4 = 8
2x5 = 10

3x1 = 3
3x2 = 6
3x3 = 9
3x4 = 12
3x5 = 15

Ejecución




Codigo







Lenguaje C




El programa que hice, deposita las calificaciones de los examenes de medio curso y examenes finales, de un grupo de alumnos, los almacena en un arreglo y al final saca el promedio de los alumnos , les dice cuantos aprobaron y cuantos reprobaron, y muestra el promedio final del grupo.
Ejecución

Ejecución





Codigo

El codigo fuente es un poco largo, se los pondré aquí en varias imagenes:






PASCAL

Bueno, ahora hice este pero con Windows porque no pude instalar el paquete ( ni tampco sabia cual era) , el que me permite compilar en Pascal, asi que utilicé el unico compilador que vi por la red para Windows, está algo "viejo" pero me funcinó para hacer mi programa.

El programa es simple, solo hace una sumatoria de N numeros y muestra la suma y saca el promedio, es un programa muy simple, pero me ayudó a entender la estructura de Pascal.


Ejecución


Codigo


El ejemplo mas sencillo de todos,  solo te pide tus datos y los muestra por pantalla, ademas de pedirte 2 numeros y realizar una suma , una resta y una multiplicación. Lo compilé con SmallBasic ya que seguia con el mismo problema de no saber como compilarlo ni que programa descargar para ubuntu.

Ejecución


 Codigo


Link de Small Basic




Codigos Fuente

Los codigos fuente los pueden descargar desde aqui:  Codigos Fuente




Comentarios

Si tienen duda de como funciona alguno de mis programas, diganme para explicarlos en otra entrada, sobre todo el de C, que está un poco largo.

miércoles, 27 de octubre de 2010

Tarea 5 - Problema Logico

Esta es mi entrada acerca del problema logico que habiamos escogido en clase, yo escogí el problema llamado "Crates of fruit" (Cajas de Fruta)

PROBLEMA

El problema dice así:

"You are on an island and there are three crates of fruit that have washed up in front of you. One crate contains only apples. One crate contains only oranges. The other crate contains both apples and oranges.

Each crate is labeled. One reads "apples", one reads "oranges", and one reads "apples and oranges". You know that NONE of the crates have been labeled correctly - they are all wrong.

If you can only take out and look at just one of the pieces of fruit from just one of the crates, how can you label ALL of the crates correctly?"


Bueno pues mi problema planteado es que estoy en una isla y hay cajas de fruta  enfrente de mi, una caja contiene solo manzanas, otra caja contiene solo naranjas y otra caja contiene ambas ( manzanas y naranjas.)

Cada caja está etiquetada, una dice "manzanas" , otra dice "naranjas" y otra dice "manzanas y naranjas". Tu sabes que NINGUNA de las cajas está etiquetada correctamente, todas ellas están etiquetadas incorrectamente.

Si solo puedes tomar y mirar una de las piezas de solo una de las cajas, ¿como puedes etiquetar las cajas correctamente?

ANÁLISIS

Bien pues analizando esta situación puedo decir lo siguiente:

Primero si sabemos que las cajas estan etiquetadas incorrectamente podemos afirmar que la caja con la etiqueta:

Caja etiquetada "Manzanas" --> Puede contener  naranjas  o  manzanas y naranjas

Caja etiquetada "Naranjas" --> Puede contener manzanas  o  manzanas y naranjas

Caja etiquetada "Manzanas y Naranjas" --> Puede contener manzanas o naranjas



Ilustrativamente podriamos decirlo con la siguiente imagen



Si ustedes se preguntan ¿por qué ésto? , es porque TODAS LAS CAJAS ESTAN ETIQUETADAS INCORRECTAMENTE.

Bueno y si nos centramos en el problema de esa persona, que quiere saber que hay en las 3 cajas con tan solo agarrar una fruta de una caja.

Caso I
Caja etiquetada manzanas

Si la persona agarrara una fruta de la caja que dice manzanas puede tocarle o naranjas o manzanas y naranjas.

Si le toca naranja entonces esa persona no sabria si en esa caja solo hay naranjas o si hay manzanas y naranjas, y no podria decidir por alguna de las dos opciones. Entonces no es la respuesta correcta.

En caso de agarrar una manzana sabria que en esa caja hay manzanas y naranjas ya que no puede haber solo manzanas porque las etiquetas están mal y quedarian 2 cajas , una que tiene la etiqueta de naranajas y manzanas y otra que tiene la etiqueta de naranjas , en la de naranjas tendria que haber manzanas  y en la de manzanas y naranjas habria naranjas.

En este caso podriamos saber que hay en las 3 cajas en el caso de que de la caja que dice manzanas sacaramos una manzana. Habria dos posibilidades y en solo una de esas se cumpliria.


Caso II
Caja etiquetada naranjas

Si la persona agarra una fruta de la caja marcada como naranjas y le sale una naranja el sabria que en esa caja hay manzanas y naranjas porque ambas van en conjunto , entonces le quedarian 2 cajas  una que tiene una etiqueta de manzanas en la que habria naranjas y otra que tiene que la etiqueta de manzanas y naranjas en la que hay manzanas entoces vuelve a suceder lo mismo que arriba, ¿que pasaria si en lugar de salir naranja sale una manzana ? volvemos al mismo caso anterior hay dos posibles respuestas y de esas dos solo 1 es correcta.

Caso III
Caja etiquetada Manzanas y naranjas

La tercera opcion seria agarrar de la caja manzanas y naranjas aqui solo habria dos posiblidades: o es la caja de manzanas nadamas o es la caja de naranjas nadamas porque no puede contener ambas, entonces digamos que tomamos una naranja, entonces en esa caja sabremos que solo hay naranjas,  y por lo tanto  en las otras cajas quedan manzanas o naranjas o manzanas

nos quedaria algo asi

Caja de manzanas y naranjas  = Caja de naranjas

Caja de manzanas = ???? 

Caja de naranjas = ????


Entonces, nos quedan dos caja (Caja de manzanas y Caja de naranjas )  , y nos quedan dos tipos de respuestas , manzanas y naranjas o manzanas , entonces si sabemos que en la de naranjas no puede haber naranjas porque estan etiquetadas incorrectamente, tiene que haber manzanas porque en la de manzanas no puede haber manzanas por estar mal etiquetada entonces en la caja de manzanas tiene que haber naranjas y manzanas porque es lo ultimo que nos queda.


Caja de manzanas y naranjas  = Caja de naranjas


Caja de manzanas = Caja de manzanas y naranjas


Caja de naranjas = Caja de Manzanas


Igualmente en el caso de que saque una manzana de la caja de manzanas y naranjas seria lo mismo, nadamas que en la caja de manzanas no habria manzanas sino naranjas con lo que nos sobraria una caja  que dice naranjas en la que habria manzanas y naranjas.

Entonces se cumple que en caso de sacar una naranja o una manzana se puede saber que hay en las otras dos cajas.

Bueno a todo esto puedo concluir con la siguiente respuesta:


RESPUESTA

De la caja de manzanas y naranjas tomo una fruta , si es naranja entonces en la caja de naranjas hay manzanas y en la de manzanas hay naranjas y manzanas.

Si fuera un manzana la que saco de la caja de manzanas y naranjas  entonces en la de manzanas hay naranjas y en la de naranjas hay manzanas y naranjas.



Nota: Lo mas probable esque se confundan con el razonamiento, yo tambien tuve esos problemas pero luego analice bien la situación y me di cuenta como estaba esto.
espero le entiendan.

1.¿Por qué no elegi los otros dos casos como respuesta?
R= Porque en los primeros dos casos hay 2 opciones en ambos y solo una opcion lleva a la respuesta y el tercer caso son 2 opciones y las dos llevan a la respuesta.

2.¿Por qué usé muchos colores?
Para diferenciar entre frutas, las verdes eran ambas (manzanas y naranjas).


Mi problema fué este

Problema Lógico


Es todo.

Notación Backus-Naur


La notación de Backus-Naur, es una metasintaxis usada para expresar gramáticas libres de contexto: es decir, una manera formal de describir lenguajes formales.

El BNF se utiliza extensamente como notación para las gramáticas de los lenguajes de programación de la computadora, de los sistemas de comando y de los protocolos de comunicación, así como una notación para representar partes de las gramáticas de la lengua natural (por ejemplo, el metro en la poesía de Venpa). La mayoría de los libros de textos para la teoría o la semántica del lenguaje de programación documentan el lenguaje de programación en BNF.


Una especificación de BNF es un sistema de reglas de derivación, escrito como:
 
<simbolo> ::= <expresión con símbolos>
donde es un no terminal, y la expresión consiste en secuencias de símbolos o secuencias separadas por la barra vertical, '|', indicando una opción, el conjunto es una posible substitución para el símbolo a la izquierda. Los símbolos que nunca aparecen en un lado izquierdo son terminales.


Otros ejemplos:

<dirección postal> ::= <nombre> <dirección> 
<apartado postal> 
 
<personal> ::= <primer nombre> | <inicial> "."
 
  • Un dirección postal consiste de un nombre, seguido por una dirección, seguida por un apartado postal.
  • Una parte "personal" consiste en un nombre o una inicial seguido(a) por un punto.

Bueno pues esto es algo de lo que se habló en la clase de lenguajes de programación, sobre las diferentes grámaticas entre los lenguajes. este formato se utiliza comunmente para describir la la sintaxis de los diferentes lenguajes usados en la computación,.




Fuentes:
http://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Backus-Naur
http://www.worldlingo.com/ma/enwiki/es/Backus%E2%80%93Naur_Form
http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form

Tutorial para descargar e instalar Algol (Algol68) (Extra Points)

Bueno, esta es mi segundo tutorial , ahora les mostraré los pasos a seguir para instalar el Algol68 (Para poder compilar el lenguaje Algol).

1. Primero entramos a este sitio web:


Algol 68


2. Ahora damos clic en el boton verde "Download now!"  , los redireccionará a otra pagina, esperen unos segundos e inmediatamente verán la opcion de descargar, bajamos el archivo  "algol68g-2.0.0.tgz" , y lo movemos a nuestro escritorio o Desktop,


Ahora que lo tenemos aquí damos clic con el botón derecho en el archivo y seleccionamos la opción  "Extraer aquí" o "Extract here" ,  se creará una carpeta en nuestro escritorio con el mismo nombre del archivo:


Ahora esa carpeta que se creó le cambiamos el nombre por uno mas corto, en mi caso lo dejé como "algol68" ,para acceder a ella mas facilmente por medio del terminal.

Ahora que tenemos la carpeta renombrada, abrimos el terminal y nos movemos hacia la carpeta, en este caso mi ruta fué:

cd Desktop
cd algol68

Ahora que estamos dentro de nuestra carpeta, por medio del terminal,
ejecutamos el comando siguiente

sudo ./configure 

y damos enter, empezará a mostrar datos en la pantalla, hasta llegar a un mensaje que dice algo asi como "make install" , y luego podremos volver a introducir comandos, nos quedara algo asi la pantalla:


Ahora tendremos que instalar la libreria "libncurses5-dev" (creo que es libreria) ,  es necesario para poder continuar la instalación.

Introducimos el siguiente comando:

sudo apt-get install libncurses5-dev

y empezará otra vez a descargar paquetes para instalarla. esto puede tardar algo de tiempo, unos 10 minutos, se paciente.

Luego que termine de descargar y podamos escribir comandos,ahora escribimos

primero

sudo install make 

y luego

sudo apt-get install make


Si te pregunta algo le dices que si. (S)

Empezará a instalar... esperamos un momento

Luego ya despues de haber hecho esto, si gustan abran otra nueva ventana en la terminal y vuelvan a moverse hacia la carpeta del escritorio:

cd Desktop
cd algol68

Ahora que estamos en la carpeta de algol68
vamos a ejecutar un ejemplo que está dentro de la carpeta,
escribimos el comando siguiente

./a68g demo/sierpinski.a68

y finalmente obtendremos la siguiente imagen:




Hay mas ejemplos dentro de la carpeta demo pero de este ultimo comando notemos algunas cosas

./a68g demo/sierpinski.a68


./a68g    =  Es lo se utilizaremos para compilar, pero recuerden estar dentro de la carpta de algol68, 

demo = Es una subcarpeta que está dentro de la carpeta algol68, pueden abrirla si gustan desde el explorador de ubuntu.


sierpinski.a68  =  Es el nombre del archivo que estamos ejecutando, en este caso se llama asi, tiene la extension .a68


y finalmente como resumen, pues , si quieren compilar algo, primero hacemos el codigo y luego lo metemos directamente a la carpeta algol68, luego nos desplazamos a la carpeta y ejecutariamos algo asi.


./a68g nombrearchivo.a68 


y ya podriamos ejecutar nuestro codigo.
 



Bueno eso es todo, esos fueron los pasos realizados en clase y los que seguí para hacer este tutorial.

Bueno es todo, espero que les sirva.

y espero recibir puntos :D , le dedique un buen ratito para hacer este tutorial y el anterior.

Tutorial para Instalar Fortran en Ubuntu (PUNTOS EXTRAS)

Bueno compañeros, esta es una entrada en donde les mostraré como instalar Gfortran,  para poder compilar codigos del lenguaje Fortran, en Ubuntu.

Los pasos a realizar, son los siguientes:


1. Abrimos la terminal de ubuntu:


2.Escribimos el comando siguiente y presionamos enter.

sudo apt-get install gfortran

3. Despues de haber hecho eso, aparecera informacion sobre la instalacion y te preguntara algo, tu contestas con la letra S y le das enter




 4. Luego de esto continuará la instalación , puede tardar entre 5 a 10 minutos a lo mucho, despues de la instalacion aparecera una pantalla como esta:



y te dejará seguir escribiendo comandos,

Nota: A mi me aparecia un error en initramfs-tools y en nvidia-current, esto puede que no te aparesca a ti, esto me aparecio por la falta de compatibilidad de ubuntu hacia mi tarjeta de gráficos, asi que lo que te aparesca despues de la instalación puede variar.



En este momento (cuando ya puedes seguir introduciendo comandos) , ya instalaste el Gfortran, ahora mostraré como compilar tus programas.


6. Utilizaré el código que está en esta página (La cual usamos en la clase)

http://www.scriptol.com/programming/fibonacci.php
 
En la parte del lenguaje fortran,  es la serie de fibonacci, para compilarlo lo tuve que dejar el código asi:


      I=35; K=I
      CALL F(I)
      PRINT *,K,'th Fibonacci number is',I
      STOP
      END PROGRAM

      SUBROUTINE F(I)
      DIMENSION A(I+1)
      A(1)=1; A(2)=1
      DO1J=3,I+1
      A(J)=A(J-1)+A(J-2)
1    CONTINUE
      I=A(I+1)
      RETURN
      END SUBROUTINE

Bueno pues ese codigo lo copian y pegan en emacs, y lo guardan como extensión .f  , yo lo guardé como codigo.f no olviden borrar las lineas rojas de arriba que salen cuando abres una ventana nueva en emacs, pues se puede interpretar como linea de codigo. Me refiero a estas lineas:


Las borran antes de guardar el codigo.


Ahora viene lo bueno,   despues de que guardamos nuestro archivo con extensión .f  ( lo puedes guardar en donde quieras, en mi ejemplo lo guarde en el escritorio), abrimos la terminal.

y si lo guardaste en tu escritorio o en desktop escribe el siguiente comando

cd Desktop

ahora te encuentras en desktop, osea, tu escritorio, luego escribes el siguiente comando:

gfortran codigo.f 

en la palabra codigo es el nombre de tu archivo, y como les mencioné , yo le puse codigo.f , luego de haber escrito eso notarás que en tu escritorio hay un archivo con el nombre de a.out.


Ahora escribes esto ya para compilar:

./a.out

y podrás ver el resultado

En la siguiente imagen verás lo que tienes que hacer:


y es todo, ahora te toca hacer a ti el resto.

Bueno fué todo, aun queda pendiente el segundo tutorial de como instalar el Algol,espero que esta guia les sirva, no solo para instalar el gfortran, si no también para saber como compilar un codigo de éste. Hice este tutorial orientado para los que talvez no sepan nada mucho de como usar ubuntu y/o los que faltaron ese dia de clases,es todo.




Descarga el ejemplo codigo.f (Clic en la carpeta)


Descarga

lunes, 18 de octubre de 2010

Tercera Presentación - DFS En Grafos

Presentacion 3 - DFS - Busqueda en Profundidad

Bueno pues aqui está mi presentacion sobre DFS en grafos y su pseudocodigo y con ejemplos.

Expondré el tema junto con mis compañeros Jurgen Martinez Sanchez y Gustavo Rafael.

Descarga:
 (Clic en la carpeta)

En Power Point


En PDF



lunes, 27 de septiembre de 2010

Tarea 4

 Lenguaje R
Este es mi primer ejemplo sobre lenguajes funcionales, en este caso escogí el lenguaje R, me pareció un buen lenguaje para empezar esta tarea, ya que se ve muy sencillo, algunas de las caracteristicas que vi de este lenguajes, es que tiene la posibilidad de hacer graficas, hay varios tipos de graficas , una de ellas es la de puntos, tambien hay otra que es con lineas, historigramas entre otras, las cuales se pueden personalizar, bueno otra caracteristica es el uso de archivos, en este lenguaje para obtener los datos se necesita abrir primero un archivo para luego poder acceder a sus datos, y otra más fue que el lenguaje utiliza algo asi como arreglos, muy faciles de usar, inclusive pasar los datos de un archivo a una lista.


Este es mi ejemplo del Lenguaje R, es muy sencillo, tan solo muestra como graficar en R un arreglo, en este caso estoy graficando distancia contra tiempo, y una grafica de velocidad y el historigrama de la misma, es solo para mostrar como funciona la graficación.



Codigo



 Grafica Distancia contra tiempo

Grafica de Velocidad


 Historigrama

Se que no tiene muy que ver con relación al anterior pero es solo para que vean que en R se puede graficar un historigrama.


 Operaciones con vectores en R

Bueno aqui les dejo el ejemplo



Espero que entiendan como se realizan operadores con vectores(o un arreglo unidimensional como en C) , solo usamos dos vectores, el a y el b, para definir vectores se utiliza lo siguiente:

nombrevector = c ( 20, 30 , 40, 50)

o también

nombrevector <- c (20, 30 , 40 ,50)

la letra c , creo que significa concatenación, segun un tutorial que vi.





Erlang

Este es mi segundo programa de lenguajes funcionales hecho con Erlang, creo que significa Lenguaje Ericcson  (ERiccson LANGuage)  o algo asi que leí. Bueno aqui está mi ejemplo.

Este programa es un conversor de unidades de temperatura:


  • Centigrados a Farenheit
  • Centigrados a Kelvin
  • Farenheit a Centigrados
  • Farenheit a Kelvin
  • Kelvin a Centigrados
  • Kelvin a Farenheit

Para hacer una conversion, primero abres erlang, luego el archivo, c(temperatura.erl).


Ya habierto , para hacer una conversion tienes que escribir lo siguiente:

temperatura:convertir_tipo( X , tipo).

En donde

- El primer tipo puede ser cen (centigrados) , far (farenheit) o kel (kelvin).

- En  X es la cantidad de esa unidad.

- En el segundo tipo es la cantidad a la que vas a convertir.

por ejemplo , convertir 30 grados centigrados a farenheit

temperatura:convertir_cen(30, far).

tal y como está, no olvides el punto final, es muy importante en erlang.


Codigo Fuente


 Ejecución



1.¿Como funciona mi programa?
R= primero creamos el modulo llamado temperatura, luego sigue lo que es el nombre de la funcion , en este caso son 3, si notan en el codigo , todas tienen esto /2  , eso significa que la funcion va a recibir 2 parametros , el primero es la cantidad que se va a convertir y la segunda es para introducir un átomo (Atom), el cual puede ser cen, far, kel.  luego ya siguen las funciones,son 3, una para convertir centigrados , otra para farenheit y otra para kelvin. y pues ya lo demás es codigo,  si ven puntos al final de cada  linea es porque erlang termina cada sen tencia en un punto ".".


2.¿De que manual me apoyé?
R= De éste, está en inglés pero es un manual basico para que le entiendas.

Manual en PDF


Se los dejo por si les interesa.


Bueno es todo.


Descargar 
temperatura.erl





lunes, 13 de septiembre de 2010

Temas de Ayuda y Tutoriales de Lenguajes Script

Bueno, esta entrada es por parte mia , aqui voy a poner los enlaces de algunas paginas que me sirvieron para hacer mis programas en AWK , Shell o Bash de linux y en Phyton



AWK

Enlace 1 - Es una guia de AWK, tiene informacion introductoria acerca del lenguaje, tiene un ejemplo pero el problema es que está en inglés.


Enlace 2 - Es un manual de AWK está en español , pero como su autor dice, es el resumen que hizo el, de un libro, por lo que pueden encontrar explicaciones moderadas sobre el lenguaje, inclusive maneja un ejemplo en el cual trabaja para enseñar awk.  Esta en formato TXT.

Enlace 3 - Es un manual en PDF sobre AWK, lo encontre mientras buscaba por internet, no recuerdo de donde lo saqué pero lo guarde en mi computadora para leerlo, no es mio , tiene autor en la portada dice quien es el autor y de donde es , yo solo lo resubiré , tiene 119 paginas y está en español.



Shell

Enlace 1 - Es una pagina en donde puedes encontrar informacion sobre shell, está en español por ejemplo en este enlace viene como declarar variables en bash ,entre mediados o a finales de la pagina, me sirvió para mi programa que hice.

Enlace 2 - Es una pagina que contiene informacion sobre shell al parecer es un manual rapido de bash, aunque está en inglés , lo util de esta pagina fue que me enseñó como se usan los operadores logicos en bash , por ejemplo si recuerdan en C para decir que un numero es mayor que otro usabamos el simbolo  > , pero en bash no es asi, en bash se utiliza una palabra llamada -gt que significa en ingles ( Greater Than )  osea "Mayor que" asi que no intenten utilizar los signos > < = etc.. consultenlos en esa pagina vienen casi al final , o mas o menos a media pagina, nadamas de que la chequen, también tiene informacion de como declarar strings y mostrarlos. No recuerdo en donde encontre lo del if pero pongan en google "if en bash" y ahi vienen ejemplos , por el momento no podre la pagina de donde saque lo del if pero si la encuentro la pongo.


Phyton

Enlace 1 - Aqui hay buena información en Español (Mexicano) de Phyton , aqui tome lo que es "como se declaran las variables", tiene buena información muy entendible, no creo que batallen con phyton.

Enlace 2 - Aqui encontre información del modulo math(equivalente a libreria en C math.h), es de la pagina oficial de Phyton, viene que funciones tiene el modulo math y como se usan, está en ingles pero creo que es entendible (al menos para mí)

Enlace 3 - Se llama "Phyton Instantaneo", como lo dice su nombre es un manual instantaneo, puede servirles de algo. En español

Enlace 4 - Aqui encontre informacion sobre control de flujo (Para los if , while , for etc.. ) en phyton, en español.

Enlace 5 - Es una pagina que contiene informacion sobre como llamar a los "modulos" en phyton, ya sea a todo el modulo completo o parte de el , por ejemplo para llamar a la funcion pi de math en phyton es from math import pi  , esto significa en español "del modulo math importa el valor de pi" espero que sea entendible, tomen en cuenta que phyton tiene muchos modulos , con diferentes funciones, inclusive phyton soporta numeros complejos ( numeros imaginarios "i" ) eso chequenlo en los modulos, tambien tiene potencia, seno, coseno etc.. (el modulo math pero hay mas). En español

Enlace 6 - Podría decir que es un manual de phyton, solo lo estoy re-subiendo , no recuerdo  donde lo encontre pero me parecio interesante y lo pondré , aunque como les digo ,no es mio y tiene autor en su portada. se llama "Phyton para todos". En español


Bueno es todo lo que les pudo ofrecer, estas son algunas de las paginas y/o manuales que consulte para realizar mis programas.

Información adicional:  
Los scripts de shell de linux son muy estrictos en algunas cosas por ejemplo para declarar variables tienes que declararlas asi variable=5   pero cuidado! , si haces esto variable = 5 , ya no lo toma como variable, por haber dejado un espacio entre la palaba variable y el signo de igualdad , hay otras cosas que vi tambien pero no recuerdo.

Otra nota es que Phyton es un lenguaje script muy bueno para aprender ofrece sintaxis clara y entendible.


PROGRAMAS UTILIZADOS

Dado que no uso linux (aún) para hacer mis programas utilicé varios programas para compilar:

Mis herramientas fueron 3:

1.Cygwin: Lo que hace este programa es algo asi como imitar la terminal de linux en windows, ahi fue en donde trabaje con AWK y Shell , por si lo quieren bajar aqui dejo el link

Si quieren el sitio oficial (en inglés): Aquí está http://www.cygwin.com/


2.Emacs: El editor de linux que usamos en clase, no pondre un link directo para bajarlo porque la manera de instalarlo es un poco "extraña" a comparacion de cuando instalamos un programa en windows , aqui les dejo un manual de como instalar emacs en windows, sigan el tutorial al pie de la letra :


3.Phyton: Phyton ofrece un interprete para windows 
Aqui esta la pagina para descargarlo Phyton - Descarga 
Ahi verán varios link , yo usé este Python 2.7 Windows installer , luego de que lo descargan lo ejecutan y lo instalan, ya teniendo ese ustedes van a inicio / todos los programas / phyton y verán dos programas uno que se llama Phyton (Command Line ) ese es el interprete o si les gusta mas ( el que yo usé ) el Phyton IDLE , en ese tambien pueden ejecutar los comandos que ustedes introduzcan y si quieren hacer un programa , vayan a donde dice "file" y luego "new window" les abre una ventana blanca y ahi pueden escribir su codigocuando ya quieran compilarlo presionen F5 y va a mandar el codigo al IDLE de phyton  , asegurense de guarda su código en .py o el formato que viene ahi , para que puedan ver los colores que les indican las funciones que usan mientras escriben.

Antes de acabar, si usan el primer programa (Cygwin) para ejecutar awk necesitan introducir el comando así:

awk -f nombrearchivo.awk texto.txt 

en el caso de que awk ocupe un archivo , 

ahora en Shell es asi

bash nombrearchivo.sh 

y ejecutara el codigo.

Nota: Para ejecutar esos codigos tienen que meterlos en la carpeta siguiente (en el caso de que usen Cygwin), la direccion es asi mas o menos 


C:\cygwin\home\tuusuario

En este caso en lugar de tuusuario será su nombre, ahi los meten y pueden ejecutarlos o sino , pueden usar los comandos como si fuera linux , por ejemplo cd .. ( para regresar a la carpea anterior) ,los devolveria a C:\cygwin\home\ (como si fuera linux). 




Bueno es todo, es una entrada un poco larga pero se las dejo por si ustedes ocupan algo de lo anterior.
 
Es todo.




Factorial de un número y Serie de Fibonacci Recursivo

Bien, pues aqui pondré lo que son los codigos de dos programas ya conocidos , el del factorial de un numero y el de la serie de Fibonacci, estos los estuvimos desarollando antes de la seguna presentación, y después de la primera, no habia subido mi trabajo a causa de problemas con el tiempo y otras tareas, pero finalmente aqui lo pongo, ambos codigos están diseñados para resolver el problema recursivamente,  por medio de la llamada a una función que se llama a si misma.

Bien aqui los pongo:

Serie de Fibonacci 
Codigo en C
Ejecución del programa




Factorial de un numero
Codigo en C


Ejecución del programa



Bueno ahi está el ejemplo arriba, ahora pondré los codigos aqui abajo:

Fibonacci


Factorial

Click en la carpeta para descargar.

Información Adicional:

¿Como funciona la serie de fibonacci de manera recursiva? 
El programa simplemente envia un numero a la funcion recursiva, si es 1 o 0  devuelve el numero sin hacer cambios, sino entonces llama la funcion de fibonacci en la cual se realiza la multiplicación del numero -1 +  vuelve a repetir el proceso de la multiplicacion pero ahora con el numero-2 y es lo que muestra por resultado al llamar a la funcion desde la función main, esto lo hacer hasta llegar al caso base.

¿Como funciona el factorial de un numero de manera recursiva?
Funciona de manera similiar al programa anterior solo que este en la funcion recursiva pone la condicion de que si el numero es menor o igual a 1 devuelve el numero, osea si es 1 nos devuelve un uno, sino entonces nos regresa lo que es la multiplicacion del numero * el resultado de llamar a la funcion factorial introduciendo o tomando como argumento el numero-1 y al final muestra el producto de el numero * funcion de factorial.

En conclusión lo unico que hacen es llamar a su propia función para resolver el problema ,como lo vimos en clase y en alguna clase del semestre anterior (en el caso de que hayan visto algo de recursividad).

domingo, 12 de septiembre de 2010

Tarea 3 - Programas en Lenguaje Script

Aqui están los programas de tarea sobre los lenguajes script, realice estos programas en 3 lenguajes script , el primero en AWK, el segundo en SHELL de Linux , y el tercero en Python.

No fué resulto facil hacerlos , sobre todo el de shell que es muy estricto con respecto a la declaración de variables y algunas otras cosas.

Bueno aqui los expongo:



Programa 1 - (En AWK

Ejecución del programa


Para hacerlo ocupé un archivo de texto, aqui lo pongo como texto al final lo pondre como enlace por si lo quieren checar exactamente como lo tengo.

ENERO            50000
FEBRERO        54320
MARZO            60234
ABRIL              52345
MAYO              35634
JUNIO              40345
JULIO               34532
AGOSTO          70340
SEPTIEMBRE  45302
OCTUBRE        65304
NOVIEMBRE    88045
DICIEMBRE     45350

El codigo aqui está, es una imagen al final también pondre los codigos.




1.¿Que hace este programa?
Simplemente muestra los meses y las ventas que tuvo un negocio y al final muestra cual fue la venta total y cual fue el promedio de venta mensual de un negocio.

2.¿Como funciona el código? 
Primero se define una variable en el bloque begin, luego en el bloque del medio muestra los meses y las ventas y va sumando la segunda columna (las ventas) , y al final se muestran los resultados, y se hace un promedio al dividir la sumatoria entre "NR" . NR es el número de registros en el archivo de entrada es decír, cuantas filas tiene el archivo en total son 12, por lo cual dividide la suma entre 12 y saca el promedio.



Programa 2 (En Shell de Linux)
Ejecución del Programa


Código del Programa



1.¿Que hace el programa? 
El Usuario introduce 3 numeros, de esos tres numeros compara cual de los 3 es mayor, muestra la suma , la resta y la multiplicacion de los 3.Es un programa sencillo pero en este quiero demostrar algunas de las funciones de Shell.

2.¿Cómo funciona el programa?
Primero el programa pide al usuario 3 numeros usando read seguido de el nombre de la variable 3 veces para la variable NUMERO1, NUMERO2,NUMERO3 , después comprar NUMERO1 con NUMERO2 y NUMERO1 con NUMERO3, si se cumple la condicion entonces el numero mayor es NUMERO1, sino entonces se compara NUMERO2 con NUMERO3 si NUMERO2 es mayor entonces el numero mayor es NUMERO2, si no se cumple entonces NUMERO3 es el mayor, en este como se puede ver , se usa 2 if anidados, al final de eso muestra quien es mayor , luego hace una suma de los 3 numeros , luego una resta del primero numero introducido hasta el tercer número y luego hace una multiplicación y al final muestra los resultados.




Programa 3 ( En Python

Ejecución del Programa
Caso 1 - 3

Caso 4 - 5



Código del Programa

1.¿Que hace el programa? 
El programa calcula el area de figuras geometricas, el usuario introduce que figura quiere y el programa calcula el area, y si es rectangulo o cuadrado también calcula el perimetro

2.¿Como funciona el programa?
Primero el programa imprime las opciones, luego pide al usuario introducir una opción, luego segun la opcion que escoja pide los datos para al final calcular lo que el usuario pide.

Nota: En este programa al principio se ve una nota en rojo , es para que a la hora de compilar el codigo ese me muestre los acentos de las palabras, luego hay otra cosa que se llama from math import pi , lo que hace es importar el valor de pi del "modulo" math , equivalente a lo que es libreria en C.
ya lo demás es codigo del lenguaje.
Descargas:

 Codigo AWK

Documento de Texto

Codigo Shell


Codigo Python


Nota: Si es posible agregaré una entrada (o editaré ésta) con notas sobre los comandos que use y las paginas que consulte por si desean saber mas.