domingo, 29 de agosto de 2010

MORE SCRIPTS

Lenguajes de Programacion - Semana 5 - Tarea 4

AWK

Contador
#!/usr/bin/awk -f
BEGIN {
    i = 0; 
    do {print i; i ++} 
    while ( i < 11 ) 
}

DESCARGA Contador.awk

SHELL

Calculadora en SHELL
#!/bin/sh
echo "******CALCULADORA 1.0******"
echo "Primer valor = "
read v1
echo "Operacion: Suma +, Resta -, Producto *, Cociente /"
read op
echo "Segundo valor = "
read v2
echo "Resultado ="
expr $v1 $op $v2
exit 0;

DESCARGA Calculadora.sh

PYTHON

Potencia de un numero
#!/usr/bin/python

print "\t\tObtener la potencia de un numero\n"
x = int(input("Dame el valor de la base -> "))
y = int(input("Dame el valor del exponente -> "))
i = 0
potencia = 1
for i in range (y):
    potencia = potencia * x
print "El numero "
print x
print "elevado a la "
print y
print "es igual a "
print potencia

DESCARGA Cuadrado.py

Promedio
#!/usr/bin/python

print "\t\tOBTENER UN PROMEDIO\n"

valores = float(input("Cuantos valores vamos a promediar? -> "))
contador = 1
total = 0
promedio = 0
while(contador <= valores):
   numero = float(input("Dame un valor -> "))
   total = total + numero
   contador = contador + 1
promedio = total / valores
print "El promedio es -> "
print promedio

DESCARGA Promedio.py

SCRIPTS

Laboratorio de Lenguajes de Programacion - Semana 3

AWK

Es un lenguaje tipo script que es interpretado, tiene una amplia funcionalidad puesto que puede combinarse con las expresiones de la terminal Unix.
Suele utilizarse para modificar archivos.

Ejemplos:

SHELL

Es otro tipo de lenguaje script interpretado, al igual que AWK puede interpretar las instrucciones de la terminal Unix y ejecutarlas

Ejemplos

Programa que registra personas en una agenda y las guarda en un archivo
#!/bin/sh
echo "****REGISTROS AGENDA 1.0****"
seguir=1
while[$seguir -eq 1]; do
  echo "------Nuevo Registro:-------"
  echo "Escribe Nombre"; read nombre
  echo "Escribe Numero"; read numero
  echo "$nombre\t$numero" >> agenda.dat
  echo "SEGUIR? (SI=1, NO=0)"; read seguir
done
exit 0

DESCARGA ragenda.sh

Programa que busca personas en la agenda e imprime si el dato es encontrado
#!/bin/sh
echo "****BUSQUEDA AGENDA 1.0****\n"
echo "Elige una opcion"
echo "1. Nombre\n2. Numero\n3. Salir"; read opcion
case $opcion in
  1)
echo "Escribe Nombre"; read nombre
grep $nombre agenda.dat
break
;;
  2)
echo "Escribe Numero"; read numero
grep $numero agenda.dat
break
;;
  3)
;;
esac
exit 0

DESCARGA bagenda.sh

PYTHON
Es un tipo de lenguaje mutiparadigma, interpretado o de script. La sintaxis de Python es muy sencilla y clara por lo que aprenderlo es muy sencillo.

Ejemplos

Numero Par o Impar
#!/usr/bin/python
print "\t\tSaber si un numero es Par o Impar\n"
x = input ("Dame el numero -> ")
y = x/2
if(x%2==0):
  print "El numero es par"
else:
  print "El numero es impar"

DESCARGA Parimpar.py

Obtener un Porcentaje
#!/usr/bin/python
print "\t\tOBTENER EL PORCENTAJE DE UN TOTAL\n"
x = float(input("Dame el valor total ->  "))
y = float(input("Porcentaje  obtener ->  "))
porcentaje = x*y/100
print "El resultado es -> "
print porcentaje


DESCARGA Porcentaje.py

lunes, 23 de agosto de 2010

CARGADORES

Lenguajes de Programacion - Semana 4 - Tarea 3: Presentacion

Miembros del Equipo:
- Juan Carlos Espinosa Ceniceros
- Rolando Javier Benitez Segura









Estas imagenes corresponden a la parte del tema que se me asigno, no acostumbro a colocar mucho texto en las diapositivas asi que lo explicare en la clase.

Archivos Adjuntos: Presentacion (PowerPoint y OpenDocument) asi como el texto en el que me base para cada diapositiva (Word y OpenDocument)

Presentacion Cargadores (Open Document)
Presentacion Cargadores (PowerPoint 2007)
Texto Cargadores (WORD 2007)
Texto Cargadores (Open Document)

Referencias para la clase:

Cargadores (Google Docs)

domingo, 22 de agosto de 2010

TERMINAL

Laboratorio de Lenguajes de Programación – Semana 2

Se trata de un entorno no grafico de secuencias de comandos nativo de los sistemas Unix-Linux.

Antes de los entornos gráficos todas las operaciones eran ejecutadas en distintos tipos de Shell (Consolas o Terminales), esta es la forma más directa para comunicarnos con nuestro equipo ya que nosotros introducimos una serie de comandos y operadores, y el equipo actúa en consecuencia. Trabajar en un ambiente de línea de comandos no es una tarea imposible y no se necesitan conocimientos muy avanzados para realizar tareas sencillas, desde la terminal podemos hacer todo lo que un entorno grafico nos permite.

Lo primero que veremos será una ventana como esta:


La primera secuencia escrita tiene la siguiente sintaxis: nombreusuario@nombreequipo: ~ $

Por lo general también al iniciar la terminal siempre nos ubicamos en la carpeta /home/nombreusuario/

PRIMEROS COMANDOS

ls = Este comando mostrara un listado de las carpetas o archivos que están en nuestra ubicación actual
ls – a = Nos muestra un listado de los archivos (incluyendo los ocultos) contenidos en nuestra ubicación actual
ls – l = Muestra un listado con información sobre permisos, fecha de creación, tamaño, nombre de los archivos contenidos en nuestra ubicación actual
cd = Cambiar de directorio, por ejemplo: cd /home/usuario/Música
cd .. = Regresar un directorio atrás
mkdir = Crear un directorio. Sintaxis: mkdir nombrenuevacarpeta
rmdir = Borra una carpeta. SintaxiS igual a mkdir
cp = Copiar un archivo o carpeta. Sintaxis: cp nombrearchivo.extension /home/usuario/carpetadestino
cp –r = Copiar un directorio a otro. Sintaxis: cp –r nombrecarpeta /home/usuario/carpetadestino
mv = Mueve un archivo o carpeta y también cambia el nombre de un archivo o carpeta. Sintaxis (mover) mv archivo /destino/
Sintaxis (cambiar nombre): mv nombreactual nuevonombre

ATAJOS CON EL TECLADO

Ctrl + A = Mueve el cursor al principio de línea
Ctrl + E = Mueve el cursor al final de línea
Ctrl + C = Mata el proceso que se ha iniciado desde ese Terminal
Ctrl + U = Elimina la línea donde está el cursor
Alt + F = Mueve el cursor una palabra hacia adelante
Alt + B = Mueve el cursor una palabra hacia atrás
Ctrl + W = Elimina la palabra delante del cursor
Ctrl + L = Borra todo el contenido del Terminal
Shift + Ctrl + C = Copia el fragmento seleccionado al portapapeles
Shift + Ctrl + V (o Shift + Insert) = Pega en la línea de comandos el contenido del portapapeles
Shift + Ctrl + N = Abrir otro terminal
Shift + Ctrl + T = Abrir una pestaña en la ventana actual del terminal
Shift + Ctrl + W = Cerrar la pestaña actual
Shift + Ctrl + Q = Cerrar la terminal
Flecha Arriba / Abajo = Recupera comandos escritos con anterioridad

PRIVILEGIOS

sudo = Escribir esta palabra antes de algún comando nos proporciona privilegios de administrador, haciéndote pasar por root. No siempre colocando “sudo” la terminal hará todo lo que le digas, para aumentar la seguridad regularmente después te aparecerá la palabra PASSWORD pidiéndote la contraseña del administrador del equipo.

COMANDOS AVANZADOS

less = Muestra en la ventana de la terminal el contenido de un archivo.
cat = Muestra el contenido del archivo. (Concatenado, es decir, relacionado a otro).
sort = Ordenar archivos de texto, y/o, clasificar, combinar o comparar todas las líneas de los archivos dado.
grep = Buscar un archivo, por texto especifico
cut = Dividir archivo en partes
echo = Mostrar mensaje en pantalla
kill = Si una aplicación se ha colgado, este comando nos ayudara a matarla, se usa junto con el comando “ps”
which = Busca el “user’s path” de un programa
man = Manual, muestra un instructivo de ayuda para el uso de los comandos.

A la derecha en Recursos les dejo un link llamado "Comandos bash en Terminal", es un listado completo de todos los comandos de la terminal, y la forma de escribir su sintaxis, opciones, ect.

VIDEO

EMACS

Laboratorio de Lenguajes de Programación - Semana 1

A grandes rasgos, Emacs es el editor más potente existente para sistemas Unix-Linux, esto es fácilmente comprobable. Vamos a conocer algunas de sus funciones

Emacs es un editor que reconoce una gran cantidad de formatos de ficheros, desde un simple archivo de texto, hasta los complejos códigos fuente de diferentes lenguajes de programación en donde nos proporciona la posibilidad de detectar y resaltar la sintaxis del código.
Asi mismo, se trata de un editor muy flexible, casi todo es personalizable, colores, crear comandos nuevos, asignar combinaciones de teclas distintas; esto es un dato curioso ya que el nombre EMACS proviene de Editor Macros.

Emacs está escrito en 2 lenguajes: C y Emacs Lisp, Lisp le proporciona la posibilidad de manejar múltiples tareas, es por ello que esta aplicación sirve desde un editor de archivos, compilar programas hasta navegar en internet

En fin, tardaríamos en listar todo lo que Emacs nos ofrece, pero para mayor información vean la liga “Introducción a EMACS” en los Recursos de la derecha.

Veamos algunos comandos utiles:

Para iniciar nuestro trabajo en Emacs, escribiremos en la terminal esta fórmula:
emacs nombredelarchivo.extension comando
Donde “comando” se sustituye ya sea por un & , o por la combinación –nw.

&: Permite iniciar un archivo en emacs sin dejar ocupada la terminal.
-nw: técnicamente No Window, iniciar un archivo en emacs en la misma ventana del terminal.

Ejemplo: emacs archivo.txt –nw

Esto generara un archivo “archivo.txt” en la carpeta donde estemos posicionados y el archivo lo visualizaremos en la ventana de la terminal.

CTRL– A = Nos posicióna al inicio de la línea
CTRL– E = Nos posiciona al final de la línea
CTRL - K = Corta la línea desde donde está ubicado el cursor
CTRL – Y = Pega la línea cortada
CTRL – X = Deshace la ultima modificación

CTRL – B = Carácter atrás
CTRL – F = Carácter adelante
ALT - B = Palabra atrás
ALT - F = Palabra adelante
CTRL - P = Línea atrás
CTRL - N = Línea adelante
ALT – U = Letras a mayúscula
ALT – L = Letras a minúsculas
CTRL – X CTRL – U = Palabras a mayúscula
CTRL – X CTRL – L = Palabras a minúscula

CTRL – S = Búsqueda adelante
CTRL – R = Búsqueda atrás

CTRL – X 2 = Divide la pantalla arriba y abajo
CTRL – X 3 = Divide la pantalla lado a lado

En fin, para cada acción existe un comando en EMACS, claro que recordarlos todos es casi imposible, pero siempre podemos recordar aquellos que nos faciliten nuestro trabajo personal. Para ello les dejo en la sección de Recursos un link a las Tarjetas de Referencia de EMACS y también una pequeña Introduccion a EMACS.

Saludos

domingo, 15 de agosto de 2010

OBJECTIVE-C

Lenguajes de Programación – Semana 3 - Tarea 2

“Objective-C es un lenguaje de programación orientado a objetos creado como un superconjunto de C pero que implementase un modelo de objetos parecido al de Smalltalk. Originalmente fue creado por Brad Cox y la corporación StepStone en 1980. En 1988 fue adoptado como lenguaje de programación de NEXTSTEP y en 1992 fue liberado bajo licencia GPL para el compilador GCC. Actualmente se usa como lenguaje principal de programación en Mac OS X y GNUstep.” (1) (2)

El lenguaje de programación Objective-C fue el primer intento por integrar un ambiente de programación orientado a objetos al lenguaje C, es por eso que en su definición nos encontramos con que Objective-C es un superconjunto de C (3), es decir, todas las funciones de C, también forman parte de Objective-C.
Durante mucho tiempo estuvo en desuso siendo menos popular que C++, que fue la variante más difundida y aceptada para proporcionar programación orientada a objetos en C; pero, en la actualidad Objective-C ha recibido un empujón tremendo por parte de Apple convirtiéndose en el lenguaje de programación oficial de aplicaciones para MAC OS y iPhone. (4)

Les puedo platicar que aprender Objective- C es como el siguiente paso para los que ya hemos programado en C, la sintaxis es la misma tomando en cuenta que hablamos de un paradigma imperativo y estructurado, pero pasar al paradigma orientado a objetos nos debe ser tan familiar como aprender nuevas funciones de C.

Les puedo decir también que si quieren aprender a programar en este hermoso lenguaje lean el manual que Apple ha proporcionado (4) y a la vez observen los tutoriales en Youtube que les proporciono también (liga al primer video (5), los demás aparecen listados a la derecha del cuadro de reproducción de Youtube)

A mí se me hizo tan familiar como C, pero como les platico, al verlo por el lado de la programación orientada a objetos es algo completamente nuevo pero además con mucho potencial y camino por delante. Objective-C es uno de los lenguajes que mayor crecimiento han tenido en estos últimos años, lamentablemente no está muy difundido fuera del mundo de Apple (6), lo que le resta algo de alcance.

En Mac OS X se incluye un IDE llamado XCODE (7) suministrado gratuitamente por Apple Inc. El compilador GNU GCC (8) incluye la posibilidad de compilar archivos escritos en Objective-C (*.m), pero también se puede utilizar EMACS como lo hemos estado utilizando hasta ahora e instalar GCC en Ubuntu. (La ventaja del IDE es que contiene opciones de autocompletado de funciones por lo que es más fácil, EMACS no lo incluye lo que nos obliga a aprendernos los nombres de las numerosas funciones).

Mi recomendación es que si tienen la posibilidad se avienten a aprender este lenguaje, como les platico, tiene mucho potencial y un muy amplio campo de desarrollo, en la actualidad las aplicaciones para iPad – iPhone están muy de moda así que tenemos mucha tela de donde cortar.

EJEMPLO EN OBJECTIVE C
#import 

//creamos un objeto llamada Person, con las variables age y weight
@interface Person: NSObject {
 int age;
 int weight;
}
-(void) print;
-(void) setAge: (int) a;
-(void) setWeight: (int) w;
@end

//Aqui iniciamos la implementacion de los metodos
@implementation Person
-(void) print {
 NSLog(@"I am %i years old and weight %i pounds", age, weight);
}
-(void) setAge: (int) a {
 age = a;
}
-(void) setWeight: (int) w {
 weight = w;
}@end

// Funcion principal, iniciamos el objeto Person
// Le damos un nombre, separamos un poco de memoria en sistema,
// asignamos valores de edad y peso, despues llamamos a Print
// para mostrar en pantalla los datos, retiramos el objeto de
// memoria, vaciamos la memoria, cerramos la aplicacion.

int main (int argc, char *agrV[]) {
 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 Person *bucky;
 bucky = [Person alloc];
 bucky = [bucky init];
 [bucky setAge: 23];
 [bucky setWeight: 350];
 [bucky print];
 [bucky release];
 [pool drain];
 return 0;
}

El codigo lo que hace es generar un objeto persona, que tiene las variables edad y peso. Por medio de la implementacion de metodos llegaremos a la impresion de una linea de informacion que nos proporciona la edad y el peso que asignemos a las variables age y weight, aunque se ve un poco rudimentario nos ayuda a entender la estructura de Objective-C, por ello casi no inclui fuciones parecidas a C, porque de querer implementar este codigo cualquiera de nosotros lo pudiera hacer en C.

Muchas gracias por leer el artículo. ^_^

WIKI
(1) Objective C
(2) Smalltalk
(3) Superconjunto

(4) Manual Apple (Ingles)

(5) Tutorial en Video (Ingles)

(6) Documentacion

(7) IDE: XCODE
(8) Compilador GNU GCC

Manual Objective C Spanish [PDF]

Como instalar GCC en UBUNTU
Despues de instalar GCC correr en la terminal sudo apt-get install gobjc (libreria de Objective-C)

Otra forma de programar en Objective C en Ubuntu es con el IDE GNUStep, escribir en la terminal

sudo apt-get -y install build-essential
sudo apt-get -y install gnustep
sudo apt-get install gobjc
sudo apt-get install gnustep-make
sudo apt-get install libgnustep-base-dev

Y en GNUmakefile agregar: GNUSTEP_MAKEFILES=/usr/lib/GNUstep/System/Makefiles


Vinculo a GNUStep

martes, 10 de agosto de 2010

EMACS - BASH

Laboratorio de Lenguajes de Programacion - Semana 1 - Puntos extra

La compañera Carmen me gano XD, pero yo encontre un pequeño PDF donde se da una pequeña Introduccion a EMACS, esta muy bien explicado y espero que a cada uno le pueda servir
Se incluye tambien la Tarjeta de Referencia de EMACS
Un listado de los comandos Bash de la Terminal y una vez dentro de la direccion si se quita el /bash/ entraran a un listado de otros sistemas operativos donde tambien se pueden ver los comandos de cada S.O.
LINKS en mis Recursos en la SIDEBAR derecha

Suerte a todos!!!

domingo, 8 de agosto de 2010

ASSEMBLY

Lenguajes de Programacion - Puntos Extra

Lenguaje Ensamblador

Que tal compañeros, bueno aqui les traigo un pequeño resumen sobre lenguajes ensambladores (lo que he entendido con lo que he estado investigando)

Assembly (es el nombre del lenguaje por lo que no podemos traducirlo) es un lenguaje que trabaja intimamente con nuestras maquinas, es decir, para poder escribir Assembly hay que conocer practicamente la arquitectura del procesador para el cual programaremos, pero no se confien porque muchas veces hay que reescribir un codigo Assembly si queremos implementarlo en otra maquina aunque esta otra tenga el mismo procesador que la primera.

Son lenguajes mas rapidos y eficientes puesto que la maquina los entiende mas facilmente, pero para nosotros son mas dificles de entender porque al contrario de un lenguaje de alto nivel Assembly casi no contiene palabras o funciones entendibles para nosotros.

Ustedes diran -Bueno, eso ya lo leimos pero aun no entendemos que es un assembly-

Yo tampoco, necesitaria leer un poco mas e inclusive practicar para entender mas, les sigo contando.

Basicamente un Assembly trabaja con numeros binarios, pero tambien son utilizados numeros hexadecimales, ademas de utilizar un set de instrucciones que vienen por default en cada CPU. La maquina asigna y mueve registros dentro de la memoria una y otra vez (bloques o direcciones de memoria), y aplica un poco de logica para manipular estos registros, es decir, (los que ya llevaron Mate discretas y los que apenas la estamos llevando) la maquina trabaja con operadores como AND, OR, NOT, XOR, etc... para lograr asi una operacion aritmetica (esto viene siendo como asignar una variable en un lenguaje de alto nivel, darle un valor, despues asignar una accion u operacion).

Como pueden ver la maquina solo aplica logica para trabajar, es por eso que los assembly son mas rapidos, porque trabajamos al nivel de lo que la maquina entiende nativamente, como el principio de los bulbos, ON y OFF, 1 y 0, esto es la base de la computacion; una persona que maneja Assembly pienso debe ser mejor pagada, aunque hay ciertos inconvenientes: es mas probable cometer errores sobretodo en la lógica del programa, ademas de que cada arquitectura de CPU es diferente por lo que cada Assembly puede ser diferente.

Seguire leyendo más y tratare de explicarlo de una manera más sencilla, pueden replicar, debatir, regañar

SALUDOS A TODOS

Citas de lo leido y Enlaces:

Lenguaje Ensamblador

Tutorial Lenguaje Ensamblador

BIENVENIDOS

Como estan compañeros, este blog apartir de ahora sera referente a la materia de Lenguajes de Programacion que imparte la DR. Elisa Shaeffer en la FIME.

Como pueden ver debajo el motivo anterior de este blog estuvo enfocado a JAVA (posiblemente encuentren algo que les ayude).

Espero y les guste, espero tambien poder ayudarlos, aclarar dudas, etc, etc, etc

Tambien estare publicando en la SIDEBAR a la derecha algunos links interesantes

^_^

PD: Tratare de evitar links de Wikipedia ya que supongo es el primer lugar en el que habemos de buscar algo, pero agregare links de otros recursos que encuentre y que complementen lo leido en wiki.