sábado, 29 de diciembre de 2012

Aprende Python de manera divertida



Programar puede parecer difícil (a veces imposible), pero con un poco de ayuda podemos empezar desde el clásico programa "Hola mundo" hasta programas mucho más elaborados.

Una herramienta para iniciar con el lenguaje es Python Turtle, nos permite jugar un poco con el lenguaje mientras aprendemos a usarlo.


import turtle as tortuga

tortuga.setup(700,500)
raphael=tortuga.Screen()
raphael.bgcolor("lightblue")
raphael.title("Hola Leonardo")

leonardo=tortuga.Turtle()
leonardo.color("red")
leonardo.pensize(3)
leonardo.forward(300)
leonardo.left(120)
leonardo.forward(300)
leonardo.exitonclick()


Este código también puede correr en el IDLE (Windows) de Python. Existen además otras herramientas  gráficas como RUR-PLE y/o Guido Van Robot que parecen muy interesantes.


¿Estás herramientas me van enseñar a programar?
No, el fin es que conozcan el lenguaje, que leas, escribas notas y practiques mucho. Estas herramientas están enfocadas a principiantes.

Python Turtle
http://pythonturtle.org/

RUR-PLE (Python Learning Environment)
http://rur-ple.sourceforge.net/

Guido Van Robot
http://gvr.sourceforge.net/

swfk
http://code.google.com/p/swfk/


Referencias

Invent with Python
http://inventwithpython.com/makinggames.pdf


Teaching kids programming
http://baheyeldin.com/technology/teaching-kids-programming.html

viernes, 21 de diciembre de 2012

Visual Basic Script




Visual Basic Script


Alguna vez tuve que usar Visual Basic Script para ejecutar algunas tareas como abrir el navegador en una página en específico, abrir Excel y/o Word.

VBScript   básicamente es lo mismo que el VB tradicional.

Dim aviso As String

aviso="Hola este es un simple mensaje"

MsgBox aviso, vbInformation,"Aviso del sistema"

Estructuras de control


' Selectivas

If 9==0 Then
   'no es correcto

Else If 9==9 Then
   ' es correcto

Else
   ' hacer nada

End If

Dim numero As Integer

numero =12

Select Case numero
     Case 1:
             'hacer algo

     Case 2 To 12:
            ' hacer otra cosa

     Case Else:

          'hacer nada

End Select


' Repetitivas

For n=1 To 10
    ' hacer algo
Next n

Do  While variable < MAX
     'hacer otra cosa
Loop

While contador <90
   'repetir
Wend


For Each variable In grupo
   'repetir
Next variable


Se me ocurrió  hacer un programita en Java para ejecutar estos archivos y encontré este link http://www.ehowenespanol.com/ejecutar-script-vbs-java-como_111019/

Si quiero abrir una página creo un script que tenga lo siguiente:

set shell = CreateObject("Shell.Application")
shell.Open "http://codemonkeyjunior.blogspot.mx/"

MsgBox "Listo ventana abierta",vbInformation,"Aviso del sistema"


Se guarda con la extensión *.vbs  ahora crear la clase Java.

Ejecuta.java


import java.lang.Runtime;
import java.io.*;

public class Ejecuta{
public static void main(String[] args) {
try{
Runtime.getRuntime().exec("wscript C:\\prueba.vbs");
}catch(Exception ex){
ex.printStackTrace(System.err);
}
}
}

Algunos usos de VBScript es en la programación descriptiva (no sabía que existía), en la elaboración de pruebas de software (QTP), automatización de procesos,etc.

Ejemplo. Abrir el navegador y logearse a su cuenta de Hotmail.

1. Abrir navegador
2. Ingresar a hotmail
3. Introducir cuenta y password
4. Revisar los mensajes enviados
5. Borrar los mensajes de un contacto en específico
6. Cerrar sesión
7. Apagar sistema

Todo esto mediante un script.


Links:
http://www.visualbasicscript.com/
http://testingbaires.com/tag/programacion-descriptiva/
http://mercuryquicktestprofessional.blogspot.mx/2007/10/vb-script-and-qtp-part1.html

sábado, 24 de noviembre de 2012

Programando en Groovy al estilo Java no. 2



He aqui más ejemplos de Groovy.

1. Paso de parámetros desde Groovy (algo muy parecido a Java):


static void main(String ... args)throws Exception {
def cont=0
def listaVacia=[]
if(args){
args.each{it->
println "${it}, indice: ${cont}"
listaVacia[cont]=it
cont++
}
println "total: "+cont
println "lista: ${listaVacia}"
}else{
throw new Exception("ha ocurrido un error")
}
}
El código es muy sencillo así que no explico mucho sobre el.

2. Calcular el salario bruto y neto:
class Servicios{

def obtenerEntero(){
return (new Scanner(System.in).nextInt())
}

def obtenerReal(){
return (new Scanner(System.in).nextDouble())
}

def obtenerCadena(){
return (new Scanner(System.in).nextLine())
}

def salarioBruto(h,t,e){
return (h*t+e*t*1.5)
}

def salarioNeto(salB){
if(salB<=300){
return salB 
}else{
return salB*0.9
}
}

}

static void main(String ... args) {
def obj=new Servicios()
def extras=0
def horas=0
def tasa=0.0

  try{
println "Introduce horas: "
horas=obj.obtenerEntero()
println "Horas: ${horas}"
println "Introduce tasa: "
tasa=obj.obtenerReal()
println "tasa: ${tasa}"
}catch(ex){
println "error: ${ex}"+"  , causa: "+ex.getCause()
}


try{
if(horas<=38){
extras=0
}else{
   extras=horas-38
   horas=38
   }
}catch(ex){
println "error: ${ex}"+"  , causa: "+ex.getCause()
}

println "salario bruto: "+obj.salarioBruto(horas,tasa,extras)
println "salario neto: "+obj.salarioNeto(obj.salarioBruto(horas,tasa,extras))


}

3. Conexión  MySQL y Groovy usando el  "gestor de dependencias" @Grapes:
import groovy.sql.*
import groovy.grape.Grape


static void main(String ... args)throws Exception {
if(args.size()==0){
throw new Exception("error: debes introducir datos")
}else{
def usuario=args[0]
def clave=args[1]
println "usuario: "+args[0]
inicio(usuario,clave)

}
}

@Grapes([
@Grab('mysql:mysql-connector-java:5.1.12'),
@GrabConfig(systemClassLoader=true)
])
def inicio(usuario,clave){
println "bienvenido: ${usuario}"
                Sql sql=Sql.newInstance("jdbc:mysql://localhost/agenda",usuario,clave,"com.mysql.jdbc.Driver")
                sql.eachRow("select * from usuarios") {
                        println "Usuarios de la base: ${it.nomb_us}"
                }
}

sábado, 17 de noviembre de 2012

Un programa sencillo con Lazarus Pascal



Se trata de una aplicación que pide genera dos números aleatorios y pide al usuario introducir la suma de esos dos números, y cuenta el número de intentos, aciertos y fallos.

El código.

unit Unit1;
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
  Elementos=record
    aciertos:integer;
    fallos:integer;
    intentos:integer;
    end;
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
var
  Form1: TForm1;
  elemento:Elementos;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
elemento.aciertos:=0;
elemento.fallos:=0;
elemento.intentos:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  alea1,alea2:integer;
begin
    randomize;
    alea1:=random(102)-25;
    alea2:=random(102)-22;
    Edit1.Text:=inttostr(alea1);
    Edit2.Text:=inttostr(alea2);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  numero,suma:integer;
begin
    numero:=strtoint(InputBox('Introduce resultado','Aqui:',''));
    {ShowMessage('Introduciste: '+ inttostr(numero));  }
    suma:=strtoint(Edit1.Text)+strtoint(Edit2.Text);
  if suma = numero then
    begin
{aqui deberia incrementarse el valor}
    elemento.aciertos:=elemento.aciertos+1;
    elemento.intentos:=elemento.intentos+1;
    Edit4.Text:=inttostr(elemento.aciertos);
   Edit5.Text:=inttostr(elemento.fallos);
   Edit6.Text:=inttostr(elemento.intentos);
    end
  else
     begin
{aqui deberia incrementarse el valor}
     elemento.fallos:=elemento.fallos+1;
    elemento.intentos:=elemento.intentos+1;
     Edit4.Text:=inttostr(elemento.aciertos);
   Edit5.Text:=inttostr(elemento.fallos);
   Edit6.Text:=inttostr(elemento.intentos);
     end
end;
end.


domingo, 28 de octubre de 2012

NoSQL ... alternativas a las BD relacionales

Mongo DB

Ahora que tuve un poco de tiempo decidí probar MongoDB, ya que me cansé un poco de MySQL y los demás SGBD pseudo-relacionales.

¿Cómo se instala?

1. Descomprimes el archivo en un directorio.
2. Creas otro directorio donde se almacenarán los datos (yo le puse mongodbTest)
3. Vas al directorio bin, y desde terminal tecleas: mongod --dbpath C:\mongodbTest
4. Si todo va bien puedes acceder a http://localhost:28017
5. Además puedes acceder al shell tecleando: mongo

Puedes usar JS (javascript) para programar.
> a=45; 
> b=32; 
> print(a+b);
> cadena='hola usuario';
> typeof(cadena); 

Hay mucha información para aprender.




Enlaces
http://try.mongodb.org/
http://nosql-database.org/
Una pequeña introducción a MongoDB
Tutorial MongoDB (Mkyong)


sábado, 13 de octubre de 2012

Conociendo HTML5


Estructura básica de una página HTML5


<!DOCTYPE html>
 <html lang="es">
 <head>
  <meta charset="utf-8"> 
  <title>Mi primer página HTML5</title>
</head>
<body>
<header><h1>Título del post</h1></header>
<section id="contenedor">
<article>
Aquí va el contenido
</article>
<aside>puedes poner botones u otros elementos</aside>
<article>Un contenido</article>
</section>
<footer>@alguien</footer>
</body>
</hml>

Ahora es necesario definir el idioma de la página, en este caso es el español (es), también definir la codificación (utf-8), además de tener una estructura más formal.

Al igual que las páginas "HMTL clásicas" debes guardar el documento con la extensión *.html. 

Características de HTML5
  • Se puede crear contenido interactivo sin necesidad de FLASH
  • Incrustrar audio y vídeo.
  • Acceso a datos
  • Comprobar conectividad a Internet
  • Geolocalización
  • etc.
El único inconveniente que veo es que (al parecer) hay una división entre el HTML5 de la W3 y el HTML5 de la http://www.whatwg.org/ y según yo si puede haber problemas en cuanto compatibilidad en los navegadores.

25 sitios para empezar con HTML5 (http://mejorando.la/)



Algunos links para aprender HTML5:






lunes, 8 de octubre de 2012

Matemáticas para programadores



Navegando por Internet encontré dos sitios muy interesantes para aprender matemáticas. Explican muy bien los conceptos y técnicas de las matemáticas (cálculo,estadística, etc.).

El primero es http://www.math2me.com/ muy recomendable para cualquier nivel académico.


El segundo sitio es http://www.khanacademy.org/intl/es.




¿Por qué Erlang sigue vivo en 2026 ... ?

En una anterior entrega ya habíamos hablado sobre el tema. Mencionamos que el lenguaje Erlang había nacido para problemas que aún s...

Etiquetas

Archivo del blog