martes, 31 de diciembre de 2013
Codemonkey: Feliz año 2014
import java.util.Calendar;
public class Feliz2014{
public static void main(String[] args)throws Exception{
Calendar cal=Calendar.getInstance();
int anyo=cal.get(Calendar.YEAR);
int mes=cal.get(Calendar.MONTH)+1;
int dia=cal.get(Calendar.DAY_OF_MONTH);
int hora=cal.get(Calendar.HOUR_OF_DAY);
int minuto=cal.get(Calendar.MINUTE);
while(true){
if((anyo==2014) && (mes==1) && (dia==1)){
System.out.println("Feliz año 2014");
}else{
System.out.println("Un dia comun");
System.exit(0);
}
}
}
}
miércoles, 25 de diciembre de 2013
Patrones de diseño
¿Para qué sirven?
Básicamente nos ayudan a crear código limpio, ordenado y reutilizable.
¿Dónde los ocuparía?
- En sistemas donde se emplea distintos esquemas de bases de datos,etc.
- En proyectos (muchos de ellos heredados) donde se requiere tener una visión clara de las clases (qué y para qué se usan)
- En el diseño y desarrollo de APIs
- Etc.
Existen tres categorías. Cada una con un objetivo claro. Los patrones de diseño es una ayuda al desarrollador, para tratar de resolver problemas a los que se enfrentan (mala o nula documentación de sistemas, código mal escrito o desordenado, etc.).
Links:
jueves, 12 de diciembre de 2013
¿Todos deberían aprender a programar?
Todos deberían aprender a programar
Hace tiempo apareció este vídeo para motivar a las "personas comunes" a que aprendieran a programar.
A mi parecer fue una buena idea, lo que muchos nos hace falta es tener iniciativa, aprender de la prueba y el error.
No esperar a que (auto mágicamente) alguien nos enseñe y nos resuelvan los problemas. Se vale preguntar, todos alguna vez necesitaremos ayuda, pero no delegar nuestra responsabilidad a otros.
sábado, 30 de noviembre de 2013
Scala ... ejemplos sencillos no. 5
Herencia y clase abstracta en Scala
Herencia: Es la propiedad que permite definir nuevas clases a partir de clases base ya existentes.
Las clases abstractas nos ayudan a representar objetos generales de un objeto,es decir, sus propiedades comunes. Como puede ser el nombre, el tamaño, el tipo, etc.
Las clases abstractas no pueden ser instanciadas. Solo las clases que extienden de ella.
En este ejemplo se define una clase base llamada Vehiculo y una clase hija llamada Moto. La clase Vehiculo tendra las siguientes características:
- marca
- tipo y
- color
[Sintaxis]
class ClaseHija extends ClaseBase{ ... }
Definimos la clase Vehiculo:
abstract class Vehiculo(val _marcax:String=null,val _tipox:String=null,val _colorx:String=null){
private var _marca:String=_marcax
private var _tipo:String=_tipox
private var _color:String=_colorx
//getter
def marca = _marca
//setter
def marca_= (value:String):Unit = _marca = value
def tipo=_tipo
def tipo_=(value:String):Unit=_tipo=value
def color=_color
def color_=(value:String):Unit=_color=value
def getInfo():String={"marca: "+_marca+" ,tipo: "+_tipo+" , color: "+_color}
}
Definimos la clase Moto:
class Moto(override val _marcax:String,override val _tipox:String,override val _colorx:String,val _tamanyox:String=null) extends Vehiculo(_marcax,_colorx,_tipox){
private var _tamanyo:String=_tamanyox
def tamanyo = _tamanyo
def tamanyo_= (value:String):Unit = _tamanyo = value
override def getInfo():String={super.getInfo+" ,tamaño: "+_tamanyo}
}
Como se puede ver esto es similar a Java. La clase base y la clase hija tendrán código en común. Por último creamos la instancia de la clase Moto:
object Codemonkey extends App{
val moto=new Moto("Toyota","rojo","sencilla","pequeña")
println(moto.getInfo)
}
Código: http://www.pasteall.org/47735/java
lunes, 18 de noviembre de 2013
Scala ... ejemplos sencillos no. 4
Si tuviera que escribir código sería con un lenguaje de programación que tuviera soporte, una comunidad y documentación adecuada.
Ningún lenguaje es perfecto es cierto, Scala puede parecer bastante complejo de aprender en un principio.
Empiezas a conocer Java y la programación orientada a objetos y de repente aparece este lenguaje extraño, que pretende unir dos paradigmas:
Lo que llama la atención es que podemos utilizarlo sin necesidad de abandonar Java. Reutilizar código hecho en ese lenguaje en nuevos desarrollos.
1. Crear un menú para realizar operaciones de suma, resta, multiplicación y división:
object Codemonkey extends App{
println("Introduce primer numero: ")
var num1=readInt
println("Introduce segundo número:")
var num2=readInt
while(true){
var opcion=Menu.menu
opcion match {
case 1 => println("suma: "+Menu.suma(num1,num2))
case 2 => println("resta: "+Menu.resta(num1,num2))
case 3 => println("producto: "+Menu.producto(num1,num2))
case 4 => println("division: "+Menu.division(num1,num2))
case 5 => Menu.salida
}
}//fin while
} //fin CodeMonkey
object Menu{
def menu:Int={
var opc:Int=0
println("\tMenu")
println("1. Suma")
println("2. Resta")
println("3. Producto")
println("4. División")
println("5. Salir")
do{
println("Elije una opción: ")
opc=readInt()
}while(opc <0 || opc >5)
return opc
}//fin función menu
def suma(n1:Int,n2:Int)={n1+n2}
def resta(n1:Int,n2:Int)={n1-n2}
def producto(n1:Int,n2:Int)={n1*n2}
def division(n1:Int,n2:Int):Double={n1/n2}
def salida={System.exit(0)}
}//fin object Menu
Links
http://www.javamexico.org/categorias/lenguajes_jvm/scala
https://github.com/Sergey80/scala-samples
http://scalatutorials.com/
Ningún lenguaje es perfecto es cierto, Scala puede parecer bastante complejo de aprender en un principio.
Empiezas a conocer Java y la programación orientada a objetos y de repente aparece este lenguaje extraño, que pretende unir dos paradigmas:
- La programación funcional y
- La programación orienta a objetos
Lo que llama la atención es que podemos utilizarlo sin necesidad de abandonar Java. Reutilizar código hecho en ese lenguaje en nuevos desarrollos.
1. Crear un menú para realizar operaciones de suma, resta, multiplicación y división:
object Codemonkey extends App{
println("Introduce primer numero: ")
var num1=readInt
println("Introduce segundo número:")
var num2=readInt
while(true){
var opcion=Menu.menu
opcion match {
case 1 => println("suma: "+Menu.suma(num1,num2))
case 2 => println("resta: "+Menu.resta(num1,num2))
case 3 => println("producto: "+Menu.producto(num1,num2))
case 4 => println("division: "+Menu.division(num1,num2))
case 5 => Menu.salida
}
}//fin while
} //fin CodeMonkey
object Menu{
def menu:Int={
var opc:Int=0
println("\tMenu")
println("1. Suma")
println("2. Resta")
println("3. Producto")
println("4. División")
println("5. Salir")
do{
println("Elije una opción: ")
opc=readInt()
}while(opc <0 || opc >5)
return opc
}//fin función menu
def suma(n1:Int,n2:Int)={n1+n2}
def resta(n1:Int,n2:Int)={n1-n2}
def producto(n1:Int,n2:Int)={n1*n2}
def division(n1:Int,n2:Int):Double={n1/n2}
def salida={System.exit(0)}
}//fin object Menu
Links
http://www.javamexico.org/categorias/lenguajes_jvm/scala
https://github.com/Sergey80/scala-samples
http://scalatutorials.com/
sábado, 16 de noviembre de 2013
Scala ... ejemplos sencillos no. 3
Más ejemplos de código en Scala
1. Ejecutar un comando (Linux) desde una aplicación en Scala (Ejecuta.scala)
import scala.sys.process._
object Ejecuta extends App{
"ls -la"!
}
Este código nos mostrara el contenido del directorio en el que estemos.
2. Guardar el resultado de la ejecución de un comando (Guarda.scala)
//"esto es un comentario en Scala"
import scala.sys.process._
object Guarda extends App{
val comando:String="ls -la"
val res=comando!!
Console.print("resultado: "+res.toString)
}
Guardamos el resultado del comando en la variable "res" y visualizamos su contenido.
3. Uso de package en Scala (Paquete.scala)
object Paquete extends App{
val hombre=new bunbury.calamaro.loquillo
hombre.ver
}
package bunbury{
package calamaro{
package loquillo{
class HombreDeNegro{
private var nombre:String="Hugo"
def ver(){
Console.println("hola "+nombre);
}
}//fin HombreDeNegro
}//fin loquillo
}//fin calamaro
}//fin bunbury
4. Uso de if - else (Elegir.scala)
object Elegir extends App{
val cadena=if (3==6) "Es correcto" else "Es incorrecto"
Console.print(cad) // imprime "Es incorrecto"
val resultado={
if(3==8)
"Esto no se vera"
else
"Esto si se vera"
}
Console.println(resultado);
}
5. Ver propiedades del sistema (Sistema.scala)
object Sistema extends App{
val obj=new InfoCompu()
println("Nombre del PC: " + obj.nombrePC());
println("Nombre usuario: " + obj.usuario());
println("Procesador: " + obj.procesador());
println("Sistema operativo: " + obj.SO());
println("Version JDK: " + obj.JDK());
println("Directorio actual: " + obj.dir());
}
class InfoCompu{
def nombrePC():String={
System.getenv("COMPUTERNAME");
}
def usuario():String={
System.getProperty("user.name");
}
def procesador():String={
System.getenv("PROCESSOR_IDENTIFIER");
}
def SO():String={
System.getProperty("os.name");
}
def JDK():String={
System.getProperty("java.version");
}
def dir():String={
System.getProperty("user.dir");
}
}
1. Ejecutar un comando (Linux) desde una aplicación en Scala (Ejecuta.scala)
import scala.sys.process._
object Ejecuta extends App{
"ls -la"!
}
Este código nos mostrara el contenido del directorio en el que estemos.
2. Guardar el resultado de la ejecución de un comando (Guarda.scala)
//"esto es un comentario en Scala"
import scala.sys.process._
object Guarda extends App{
val comando:String="ls -la"
val res=comando!!
Console.print("resultado: "+res.toString)
}
Guardamos el resultado del comando en la variable "res" y visualizamos su contenido.
3. Uso de package en Scala (Paquete.scala)
object Paquete extends App{
val hombre=new bunbury.calamaro.loquillo
hombre.ver
}
package bunbury{
package calamaro{
package loquillo{
class HombreDeNegro{
private var nombre:String="Hugo"
def ver(){
Console.println("hola "+nombre);
}
}//fin HombreDeNegro
}//fin loquillo
}//fin calamaro
}//fin bunbury
4. Uso de if - else (Elegir.scala)
object Elegir extends App{
val cadena=if (3==6) "Es correcto" else "Es incorrecto"
Console.print(cad) // imprime "Es incorrecto"
val resultado={
if(3==8)
"Esto no se vera"
else
"Esto si se vera"
}
Console.println(resultado);
}
5. Ver propiedades del sistema (Sistema.scala)
object Sistema extends App{
val obj=new InfoCompu()
println("Nombre del PC: " + obj.nombrePC());
println("Nombre usuario: " + obj.usuario());
println("Procesador: " + obj.procesador());
println("Sistema operativo: " + obj.SO());
println("Version JDK: " + obj.JDK());
println("Directorio actual: " + obj.dir());
}
class InfoCompu{
def nombrePC():String={
System.getenv("COMPUTERNAME");
}
def usuario():String={
System.getProperty("user.name");
}
def procesador():String={
System.getenv("PROCESSOR_IDENTIFIER");
}
def SO():String={
System.getProperty("os.name");
}
def JDK():String={
System.getProperty("java.version");
}
def dir():String={
System.getProperty("user.dir");
}
}
sábado, 2 de noviembre de 2013
Programando en Perl ... no. 5
Sencillo convertidor de temperaturas web en Perl
En esta ocasión vamos a crear un convertidor de temperaturas fahrenheit y celsius en Perl.
¿Qué necesito para crear una aplicación web usando Perl?
Puedes descargar XAMPP (http://www.apachefriends.org/en/xampp.html), contiene lo necesario para crear aplicaciones web con Perl.
Puedes crear una carpeta en: C\xampp\htdocs\xampp\miPerl
Creamos el formulario HTML:
form.html
< option value="celsius">Celsius </ option>
< /select>
< /form>
Ahora creamos el programa perl (.pl):
conversor.pl
#!"C:\xampp\perl\bin\perl.exe"
use strict;
use warnings;
use CGI::Carp;
use CGI;
my $form= CGI->new();
my $valor=$form->param('valor');
my $conversion=$form->param('conversor');
print $form->header('text/html');
if($valor=~/[^\d+]/){
print "Error, debes introducir valor numerico";
exit;
}
my $resultado;
if($conversion eq "fahrenheit"){
$resultado=(1.8*$valor)+32;
}
if($conversion eq "celsius"){
$resultado=($valor-32)/1.8;
}
print "Conversion a grados $conversion:";
print "$resultado";
Esto es el formulario:
En esta ocasión vamos a crear un convertidor de temperaturas fahrenheit y celsius en Perl.
¿Qué necesito para crear una aplicación web usando Perl?
Puedes descargar XAMPP (http://www.apachefriends.org/en/xampp.html), contiene lo necesario para crear aplicaciones web con Perl.
Puedes crear una carpeta en: C\xampp\htdocs\xampp\miPerl
Creamos el formulario HTML:
form.html
< form method="POST" action="conversor.pl">
Introduce valor: < input name="valor" type="text" value="" />
< input type="submit" value="Convertir a">
< select name="conversor">
< option value="fahrenheit">Fahrenheit </ option>
< option value="celsius">Celsius </ option>
< /select>
< /form>
Ahora creamos el programa perl (.pl):
conversor.pl
#!"C:\xampp\perl\bin\perl.exe"
use strict;
use warnings;
use CGI::Carp;
use CGI;
my $form= CGI->new();
my $valor=$form->param('valor');
my $conversion=$form->param('conversor');
print $form->header('text/html');
if($valor=~/[^\d+]/){
print "Error, debes introducir valor numerico";
exit;
}
my $resultado;
if($conversion eq "fahrenheit"){
$resultado=(1.8*$valor)+32;
}
if($conversion eq "celsius"){
$resultado=($valor-32)/1.8;
}
print "Conversion a grados $conversion:";
print "$resultado";
Esto es el formulario:
Esto obtenemos:
Etiquetas:
celsius,
cgi,
convertidor,
fahrenheit,
perl,
web
domingo, 20 de octubre de 2013
Programando en Java ... no. 6
Más ejemplos de programas en Java
1. Ejemplo de uso de clases Externas e Internas. Creamos un archivo llamado Persona.java
public class Persona{
private String nombre;
private int edad;
private String apellidoPaterno;
private String apellidoMaterno;
public Persona(){}
public Persona(String nombre,String apellidoPaterno,String apellidoMaterno,int edad){
this.nombre=nombre;
this.edad=edad;
this.apellidoPaterno=apellidoPaterno;
this.apellidoMaterno=apellidoMaterno;
}
}
Definimos dos constructores, uno de ellos con parámetros. Ahora escribimos su getters y setters, y el método toString() para mostrar los datos.
public class Persona{
private String nombre;
private int edad;
private String apellidoPaterno;
private String apellidoMaterno;
public Persona(){}
public Persona(String nombre,String apellidoPaterno,String apellidoMaterno,int edad){
this.nombre=nombre;
this.edad=edad;
this.apellidoPaterno=apellidoPaterno;
this.apellidoMaterno=apellidoMaterno;
}
public void setNombre(String nombre){
this.nombre=nombre;
}
public void setEdad(int edad){
this.edad=edad;
}
public void setApellidoPaterno(String apellidoPaterno){
this.apellidoPaterno=apellidoPaterno;
}
public void setApellidoMaterno(String apellidoMaterno){
this.apellidoMaterno=apellidoMaterno;
}
public String getNombre(){
return nombre;
}
public int getEdad(){
return edad;
}
public String getApellidoPaterno(){
return apellidoPaterno;
}
public String getApellidoMaterno(){
return apellidoMaterno;
}
public String toString(){
return "nombre: "+nombre+"\napellido paterno: "+apellidoPaterno+"\napellido materno: "+apellidoMaterno+"\nedad: "+edad;
}
}//fin clase Persona
Una vez hecho esto dentro de la clase Persona vamos a crear una "clase interna" llamada Alumno:
//clase Interna
class Alumno extends Persona{
private String ID;
public Alumno(){}
public Alumno(String ID){
this.ID=ID;
}
public Alumno(String nombre,String apellidoPaterno,String apellidoMaterno,int edad,String ID){
super(nombre,apellidoPaterno,apellidoMaterno,edad);
this.ID=ID;
}
public void setID(String ID){
this.ID=ID;
}
public String getID(){
return ID;
}
@Override
public String toString(){
return super.toString()+"\nid: "+ID;
}
}//fin clase Alumno
Finalmente creamos una clase llamada TestPersona.java:
public class TestPersona{
public static void main(String[] args){
System.out.println(new Persona("Andrea","Calamaro","Nava",31));
//nos imprime sus datos
//para hacer uso de la clase interna "Alumno" hacemos esto:
Persona persona=new Persona();
Persona.Alumno andrea=persona.new Alumno("Andrea","Calamaro","Nava",31,"12-D2209");
System.out.println("id: "+andrea.getID());
System.out.println("\n"+andrea.toString());
}
}
Código Completo:
Etiquetas:
aprender java,
ejemplos,
externa,
interna,
java
domingo, 29 de septiembre de 2013
Probando un poco de Ceylon
Nueva versión: "Virtual Boy": http://ceylon-lang.org/download/
Compilar:
ceylon compile source\programa.ceylon
Ejecutar:
ceylon run default
1. Crear una simple clase:
void run(){
Prueba code=Prueba();
print(code.getUsuario());
}
shared class Prueba(){
shared String getUsuario(){
String usuario="Andrea";
return "Hola ``usuario``";
}
}
2. Uso de interface en Ceylon:
shared void run(){
miObjeto.imprime();
}
interface Servicio{
shared String ver{
return "tratando de conquistar el mundo";
}
}
//algo parecido a: class MiClase implements Interface ,en Java
object miObjeto satisfies Servicio{
shared void imprime(){
print(ver);
}
}
Más de Ceylon
Links
https://gist.github.com/HiroNakamura/4731442
Compilar:
ceylon compile source\programa.ceylon
Ejecutar:
ceylon run default
1. Crear una simple clase:
void run(){
Prueba code=Prueba();
print(code.getUsuario());
}
shared class Prueba(){
shared String getUsuario(){
String usuario="Andrea";
return "Hola ``usuario``";
}
}
2. Uso de interface en Ceylon:
shared void run(){
miObjeto.imprime();
}
interface Servicio{
shared String ver{
return "tratando de conquistar el mundo";
}
}
//algo parecido a: class MiClase implements Interface ,en Java
object miObjeto satisfies Servicio{
shared void imprime(){
print(ver);
}
}
Más de Ceylon
Links
https://gist.github.com/HiroNakamura/4731442
domingo, 22 de septiembre de 2013
Programando en Java ... no. 5
"Mientras tanto el programador trata de entender el mundo a través de código, olvidando que puede hacerlo con un simple vistazo"
1. Creando nuestras propias excepciones, creamos una clase llamada "MyNumberException" que extiende de la clase Exception, si el número es mayor a 500 o menor a 0 ocurrirá la excepción
public class Codemonkey{
static void setValor(int x)throws MyNumberException{
if(x>500 || x<0)
throw new MyNumberException("debes introducir un valor menor a 500 y mayor a 0");
// se ejecutará si el número es mayor a 500 o menor a 0
}
public static void main(String[] args)throws MyNumberException{
System.out.println(" c0D3m0Nk3Y ");
try{
setValor(501);
}catch(MyNumberException me){
System.err.println("Ha ocurrido un error: "+me.getMessage());//mostramos el mensaje
}finally{
System.out.println("finally: esto siempre se ejecutara");
}
System.out.println("esto esta fuera del try-catch-finally");
}
}
class MyNumberException extends Exception{
public MyNumberException(String message){
super(message);
}
}
Para ejecutar es necesario habilitar las "assertions" en java con "-ea":
javac -g Codemokey.java
java -ea Codemonkey
2. En este ejemplo se usa la clase HashSet para insertar un valor de tipo "Persona", si el valor es un duplicado no se podrá insertar.
import java.util.HashSet;
import java.util.Objects;
public class Codemonkey {
public static void main(String[] args){
HashSet persons=new HashSet();
persons.add(new Persona("Laura",31));
persons.add(new Persona("Hortencia",21));
persons.add(new Persona("Laura",31));//duplicado
persons.ass(new Persona("Hortencia",39)); //este valor si se agrega
for(Object p: persons){
Persona per=(Persona)p;
System.out.println(per.getNombre()+" - "+per.getEdad());
}
System.out.println(persons.toString());
}
}
//aquí creamos la clase Persona
class Persona{
private String nombre;
private int edad;
public Persona(String nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setEdad(int edad) {
this.edad = edad;
}
public String getNombre() {
return nombre;
}
public int getEdad() {
return edad;
}
@Override
public String toString(){
return "nombre: "+nombre+" edad: " +edad;
}
@Override
public int hashCode() {
int hash = 3;
hash = 79 * hash + this.edad;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Persona other = (Persona) obj;
if (!Objects.equals(this.nombre, other.nombre)) {
return false;
}
if (this.edad != other.edad) {
return false;
}
return true;
}
}
3. Ejecutando un hilo en java swing
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Codemonkey{
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
new Ventana();
}
});
}
}
class Ventana extends JFrame{
private JPanel panel;
private JButton btnSalir,btnActiva;
Ventana(){
setTitle("Iniciando hilos");
setSize(450,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(getGUI());
}
public JPanel getGUI(){
panel=new JPanel();
panel.setVisible(true);
panel.setSize(700,400);
panel.setBackground(Color.black);
panel.add(new JLabel("<html><h1><font color='white'>Ejecutando un hilo</font></h1></html>"));
panel.add(getBtnActiva());
panel.add(getBtnSalir());
return panel;
}
public JButton getBtnActiva(){
btnActiva=new JButton("<html><font color='white'>Iniciar hilo</font></html>",new ImageIcon("mono.jpg"));
btnActiva.setToolTipText("quitar ventana ...");
btnActiva.setBackground(Color.blue);
btnActiva.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new Thread(new Runnable(){
public void run(){
int cont=0;
System.out.println("Inicia hilo");
while(cont<4){
try{
Thread.sleep(1000);
System.out.println("Hola no. "+(cont+1));
cont++;
}catch(InterruptedException ex){
System.err.println(ex.toString());
}
System.out.println("Termina hilo");
}
}
}).start();
}
});
return btnActiva;
}
public JButton getBtnSalir(){
btnSalir=new JButton("<html><font color='white'>Salir</font></html>",new ImageIcon("mono.jpg"));
btnSalir.setToolTipText("quitar ventana ...");
btnSalir.setBackground(Color.red);
btnSalir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
return btnSalir;
}
}
sábado, 14 de septiembre de 2013
Programando en C# ... no.1
El lenguaje C# es una respuesta al popular lenguaje de programación Java por parte de Microsoft, es bastante similar (algunos dicen es una "copia exacta" a Java).
Hola mundo en Java
System.out.println("¡Hola, mundo en Java!");
Hola mundo en C#
Console.WriteLine("¡Hola, mundo en C#!");
Los archivos deben tener la extensión *.cs, puedes usar MonoDevelop, SharpDevelop o Visual Studio para programar en C#.
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
// AQUÍ COLOCAS EL CÓDIGO
}
}
}
Si ya haz usado Java la sintaxis te parecerá muy familiar.
1. Creando una clase llamada "Persona"
using System;
namespace Codemonkey.cs
{
//aquí inicia la clase Persona
class Persona{
string nombre;
int edad;
public Persona(){}
public void SetNombre(string n){
nombre=n;
}
public void SetEdad(int d){
edad=d;
}
public int GetEdad(){
return edad;
}
public string GetNombre(){
return nombre;
}
}//aquí termina la clase Persona
class Program
{
public static void Main(string[] args)
{
Persona persona=new Persona();
persona.SetNombre("Antonio");
persona.SetEdad(28);
Console.WriteLine("nombre: "+persona.GetNombre()+" , edad: "+persona.GetEdad());
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
El código resulta muy familiar y fácil de entender a los que ya han usado Java.
2. Introducir datos, los tipos de datos son prácticamente iguales a Java.
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
float flotante;
int entero;
double real;
string cadena;
char car;
Console.WriteLine("Introduce un numero flotante: ");
flotante=float.Parse(Console.ReadLine());
Console.WriteLine("Introduce un numero entero: ");
entero=int.Parse(Console.ReadLine());
Console.WriteLine("Introduce un numero real: ");
real=double.Parse(Console.ReadLine());
Console.WriteLine("Introduce una cadena: ");
cadena=Console.ReadLine();
Console.WriteLine("Introduce un caracter: ");
car= char.Parse(Console.ReadLine());
Console.WriteLine("entero: "+entero);
Console.WriteLine("flotante: "+flotante);
Console.WriteLine("real: "+real);
Console.WriteLine("cadena: "+cadena);
Console.WriteLine("caracter: "+car);
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
3. Usando constantes
using System;
namespace Codemonkey.cs
{
class Prueba{
//se define la constante "TAM"
public const int TAM=10;
//en Java sería
//public static final int TAM=10;
}
class Program
{
public static void Main(string[] args)
{
int tam=Prueba.TAM;
for(int i=0;i<tam;i++){
Console.WriteLine("valor de i: "+i);
}
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
4. Comparar dos cadenas
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
string cad1="Yo programo en Java";
string cad2="Yo prefiero usar C#";
//en Java podríamos usar el método cad1.equals(cad2);
if(cad1==cad2){
Console.WriteLine("son idénticas las cadenas");
}else{
Console.WriteLine("NO son idénticas las cadenas");
}
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
Links
http://eqcode.com/wiki/CSharp
http://msdn.microsoft.com/es-es/library/67ef8sbd(v=vs.90).aspx
Hola mundo en Java
System.out.println("¡Hola, mundo en Java!");
Hola mundo en C#
Console.WriteLine("¡Hola, mundo en C#!");
Los archivos deben tener la extensión *.cs, puedes usar MonoDevelop, SharpDevelop o Visual Studio para programar en C#.
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
// AQUÍ COLOCAS EL CÓDIGO
}
}
}
Si ya haz usado Java la sintaxis te parecerá muy familiar.
1. Creando una clase llamada "Persona"
using System;
namespace Codemonkey.cs
{
//aquí inicia la clase Persona
class Persona{
string nombre;
int edad;
public Persona(){}
public void SetNombre(string n){
nombre=n;
}
public void SetEdad(int d){
edad=d;
}
public int GetEdad(){
return edad;
}
public string GetNombre(){
return nombre;
}
}//aquí termina la clase Persona
class Program
{
public static void Main(string[] args)
{
Persona persona=new Persona();
persona.SetNombre("Antonio");
persona.SetEdad(28);
Console.WriteLine("nombre: "+persona.GetNombre()+" , edad: "+persona.GetEdad());
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
El código resulta muy familiar y fácil de entender a los que ya han usado Java.
2. Introducir datos, los tipos de datos son prácticamente iguales a Java.
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
float flotante;
int entero;
double real;
string cadena;
char car;
Console.WriteLine("Introduce un numero flotante: ");
flotante=float.Parse(Console.ReadLine());
Console.WriteLine("Introduce un numero entero: ");
entero=int.Parse(Console.ReadLine());
Console.WriteLine("Introduce un numero real: ");
real=double.Parse(Console.ReadLine());
Console.WriteLine("Introduce una cadena: ");
cadena=Console.ReadLine();
Console.WriteLine("Introduce un caracter: ");
car= char.Parse(Console.ReadLine());
Console.WriteLine("entero: "+entero);
Console.WriteLine("flotante: "+flotante);
Console.WriteLine("real: "+real);
Console.WriteLine("cadena: "+cadena);
Console.WriteLine("caracter: "+car);
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
3. Usando constantes
using System;
namespace Codemonkey.cs
{
class Prueba{
//se define la constante "TAM"
public const int TAM=10;
//en Java sería
//public static final int TAM=10;
}
class Program
{
public static void Main(string[] args)
{
int tam=Prueba.TAM;
for(int i=0;i<tam;i++){
Console.WriteLine("valor de i: "+i);
}
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
4. Comparar dos cadenas
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
string cad1="Yo programo en Java";
string cad2="Yo prefiero usar C#";
//en Java podríamos usar el método cad1.equals(cad2);
if(cad1==cad2){
Console.WriteLine("son idénticas las cadenas");
}else{
Console.WriteLine("NO son idénticas las cadenas");
}
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
Links
http://eqcode.com/wiki/CSharp
http://msdn.microsoft.com/es-es/library/67ef8sbd(v=vs.90).aspx
domingo, 8 de septiembre de 2013
Un vistazo a ... C#
Instalar SharpDevelop
Comenzamos descargando e instalando este IDE http://www.icsharpcode.net/opensource/sd/ para programar en C#. Es una herramienta Open Source para crear aplicaciones .Net.
Una vez instalado, creamos un proyecto File -> New -> Solution, elegimos "Console Application".
Le damos un nombre al proyecto.
1. Entrada y salida
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
String nombre;
Console.WriteLine("Introduzca tu nombre");
nombre=Console.ReadLine();
Console.WriteLine("Hola " + nombre);
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
2. Calcular el valor futuro dada una cantidad invertida
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
double valor=4500.0;
double tasa=7.0/12.0;
int plazo=4;
double valorFuturo;
for(int i=0;i<plazo;i++){
valorFuturo=valor*Math.Pow(1+tasa,i);
Console.WriteLine("valor futuro generado: "+valorFuturo+" para el periodo: "+(i+1));
}
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
Links
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
String nombre;
Console.WriteLine("Introduzca tu nombre");
nombre=Console.ReadLine();
Console.WriteLine("Hola " + nombre);
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
2. Calcular el valor futuro dada una cantidad invertida
using System;
namespace Codemonkey.cs
{
class Program
{
public static void Main(string[] args)
{
double valor=4500.0;
double tasa=7.0/12.0;
int plazo=4;
double valorFuturo;
for(int i=0;i<plazo;i++){
valorFuturo=valor*Math.Pow(1+tasa,i);
Console.WriteLine("valor futuro generado: "+valorFuturo+" para el periodo: "+(i+1));
}
Console.Write("Presiona una tecla para continuar . . . ");
Console.ReadKey(true);
}
}
}
Links
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
lunes, 2 de septiembre de 2013
Programando en C++ ... no.2
1. Clases, crear una clase llamada "Fecha" y mostrar sus propiedades.
#include "iostream.h"
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
class Fecha{
private:
int dia;
int mes;
int anyo;
public:
Fecha();
virtual ~Fecha();
Fecha(int dia,int mes, int anyo){
this->dia=dia;
this->mes=mes;
this->anyo=anyo;
}
void setDia(int dia){this->dia=dia;}
void setMes(int mes){this->mes=mes;}
void setAnyo(int anyo){this->anyo=anyo;}
int getDia(){return this->dia;}
int getMes(){return this->mes;}
int getAnyo(){return this->anyo;}
};
Fecha::Fecha(){
cout<<"Se ha creado objeto Fecha"<<endl;
}
Fecha::~Fecha(){cout<<"Se ha destruido objeto Fecha"<<endl;}
int main(){
Fecha fecha(18,12,1981);
cout<<"dia: "<<fecha.getDia()<<" mes: "<<fecha.getMes()<<" anyo: "<<fecha.getAnyo()<<endl;
system("PAUSE");
return 0;
}
#include "iostream.h"
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
class Fecha{
private:
int dia;
int mes;
int anyo;
public:
Fecha();
virtual ~Fecha();
Fecha(int dia,int mes, int anyo){
this->dia=dia;
this->mes=mes;
this->anyo=anyo;
}
void setDia(int dia){this->dia=dia;}
void setMes(int mes){this->mes=mes;}
void setAnyo(int anyo){this->anyo=anyo;}
int getDia(){return this->dia;}
int getMes(){return this->mes;}
int getAnyo(){return this->anyo;}
};
Fecha::Fecha(){
cout<<"Se ha creado objeto Fecha"<<endl;
}
Fecha::~Fecha(){cout<<"Se ha destruido objeto Fecha"<<endl;}
int main(){
Fecha fecha(18,12,1981);
cout<<"dia: "<<fecha.getDia()<<" mes: "<<fecha.getMes()<<" anyo: "<<fecha.getAnyo()<<endl;
system("PAUSE");
return 0;
}
Links:
Libro C/C++/Java
viernes, 9 de agosto de 2013
Linux bash
En esta ocasión vamos a crear un sencillo menú para realizar algunas tareas sencillas en shell linux.
Puedes utilizar cualquier editor de notas para realizarlo.
El archivo se llamará "menu.sh", lo guardamos en un directorio (ej. /home/usuario) le damos los permisos necesarios para ejecución.
Creamos una función:
menu(){
# ... aquí el código
# ...
}
Colocamos las opciones:
echo "1. Mandar un ping a codemokeyjunior.blogspot.com"
echo "2. Ver que usuarios están conectados a mi máquina"
echo "3. Ver procesos en ejecución"
echo "4. Salir"
Pedimos al usuario elija alguna opción:
echo "Elije opción:"
read opc
Usamos la estructura "case":
case $opc in
1) ping -c 3 codemonkeyjunior.blogspot.com ;;
2) who ;;
3) top ;;
*) echo "salir" ;;
esac
Sin embargo el menú solo permite ejecutar una acción, para que el menú permanezca activo crearemos otra función que servirá para invocarlo.
activa(){
usuario=$(whoami)
if [ "$USER"="$usuario" ]; then
menu #invocamos el menú
else
echo usuario no registrado
fi
}
activa
Modificamos el menú:
case $opc in
1) ping -c 3 codemonkeyjunior.blogspot.com
activa
;;
2) who
activa
;;
3) top
activa
;;
*) echo "salir" ;;
esac
Listo ya tenemos un menú. Código completo http://www.pasteall.org/44716/bash
El archivo se llamará "menu.sh", lo guardamos en un directorio (ej. /home/usuario) le damos los permisos necesarios para ejecución.
Creamos una función:
menu(){
# ... aquí el código
# ...
}
Colocamos las opciones:
echo "1. Mandar un ping a codemokeyjunior.blogspot.com"
echo "2. Ver que usuarios están conectados a mi máquina"
echo "3. Ver procesos en ejecución"
echo "4. Salir"
Pedimos al usuario elija alguna opción:
echo "Elije opción:"
read opc
Usamos la estructura "case":
case $opc in
1) ping -c 3 codemonkeyjunior.blogspot.com ;;
2) who ;;
3) top ;;
*) echo "salir" ;;
esac
Sin embargo el menú solo permite ejecutar una acción, para que el menú permanezca activo crearemos otra función que servirá para invocarlo.
activa(){
usuario=$(whoami)
if [ "$USER"="$usuario" ]; then
menu #invocamos el menú
else
echo usuario no registrado
fi
}
activa
Modificamos el menú:
case $opc in
1) ping -c 3 codemonkeyjunior.blogspot.com
activa
;;
2) who
activa
;;
3) top
activa
;;
*) echo "salir" ;;
esac
Listo ya tenemos un menú. Código completo http://www.pasteall.org/44716/bash
sábado, 27 de julio de 2013
Programando en C++ ... no. 1
main(Una reseña)
Antes de Java el lenguaje C era considerado el mejor lenguaje del mundo, con el paso del tiempo tuvo varios cambios importantes.
Nuevos paradigmas de programación aparecieron y entonces C++ salió a la luz.
El C++ se considera como una extensión del lenguaje C. Permite la programación orientada a objetos.
Todo lo que programabas en C lo puedes hacer en C++.
Antes de que un software pueda ser reusable, primero ha de ser usable. ::Ralph Johnson::
1. Este código solo funciona en sistemas Windows, usamos la función system() para obtener el nombre del usuario del sistema.
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
int main(){
system("echo Hola %USERNAME%"); // aqui se muestra el nombre del usuario
system("pause");
return 0;
}
2. Uso de clases, creamos un método (dentro de la clase) que imprima un texto
#include <iostream.h>
#include <stdlib.h>
#define TAM 8
//definimos la clase Prueba
class Prueba{
public:
Prueba(){} // definimos el constructor
~Prueba(){} // aqui esta el destructor
void ver(); // método sin parámetro
void ver(char msg[TAM]); //método con parámetro
};
void Prueba::ver(){
cout<<"Hola"<<endl;
}
void Prueba::ver(char msg[TAM]){
puts(msg);
}
int main(){
Prueba p; //
char frase[TAM];
p.ver();
cout<<"Escribe frase: "<<endl;
gets(frase);
p.ver(frase);
system("pause");
return 0;
}
3. Manejo de excepciones
#include "stdio.h"
#include "iostream.h"
#include "conio.h"
int main(){
float a,b,c,d,e,f,denominador,x,y;
try{
cout<<"Introduce valor de a,b y c:"<<endl;
cin>>a;cin>>b;cin>>c;
cout<<"Introduce valor de d,e y f:"<<endl;
cin>>d;cin>>e;cin>>f;
denominador=a*e-b*d;
if(denominador==0){
throw denominador;
}else{
x=(c*e-b*f)/denominador;
y=(a*f-c*d)/denominador;
cout<<"x= "<<x<<" ,y="<<y<<endl;
}
}catch (float e){
cout<<"el denominador no es valido"<<endl;
}
system("pause");
return 0;
}
Links
https://es.wikipedia.org/wiki/C%2B%2B
http://codigoc.org/708-diferencias-entre-c-y-c
Antes de Java el lenguaje C era considerado el mejor lenguaje del mundo, con el paso del tiempo tuvo varios cambios importantes.
Nuevos paradigmas de programación aparecieron y entonces C++ salió a la luz.
El C++ se considera como una extensión del lenguaje C. Permite la programación orientada a objetos.
Todo lo que programabas en C lo puedes hacer en C++.
Ya tenía bastante tiempo en no usar C++, y aprovechando el tiempo libre empecé a probar DevC++.
Antes de que un software pueda ser reusable, primero ha de ser usable. ::Ralph Johnson::
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
int main(){
system("echo Hola %USERNAME%"); // aqui se muestra el nombre del usuario
system("pause");
return 0;
}
2. Uso de clases, creamos un método (dentro de la clase) que imprima un texto
#include <iostream.h>
#include <stdlib.h>
#define TAM 8
//definimos la clase Prueba
class Prueba{
public:
Prueba(){} // definimos el constructor
~Prueba(){} // aqui esta el destructor
void ver(); // método sin parámetro
void ver(char msg[TAM]); //método con parámetro
};
void Prueba::ver(){
cout<<"Hola"<<endl;
}
void Prueba::ver(char msg[TAM]){
puts(msg);
}
int main(){
Prueba p; //
char frase[TAM];
p.ver();
cout<<"Escribe frase: "<<endl;
gets(frase);
p.ver(frase);
system("pause");
return 0;
}
3. Manejo de excepciones
#include "stdio.h"
#include "iostream.h"
#include "conio.h"
int main(){
float a,b,c,d,e,f,denominador,x,y;
try{
cout<<"Introduce valor de a,b y c:"<<endl;
cin>>a;cin>>b;cin>>c;
cout<<"Introduce valor de d,e y f:"<<endl;
cin>>d;cin>>e;cin>>f;
denominador=a*e-b*d;
if(denominador==0){
throw denominador;
}else{
x=(c*e-b*f)/denominador;
y=(a*f-c*d)/denominador;
cout<<"x= "<<x<<" ,y="<<y<<endl;
}
}catch (float e){
cout<<"el denominador no es valido"<<endl;
}
system("pause");
return 0;
}
4. Llenar un vector con números aleatorios
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#define TAM 6
int main()
{ system("color 4f");
int vector[TAM];
cout<<"\t[Vector]\n";
try{
for (int i=0; i<TAM; i++) {
vector[i]=rand()*10;
}
if(vector==NULL){
throw vector;
}else{
for (int i=0; i<TAM; i++) {
cout<<"elemento no. "<<i+1<<" ,valor:"<<vector[i]<<endl;
}
}
}catch(int e[TAM]){
cout<<"el vector no se pudo llenar"<<endl;
}
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#define TAM 6
int main()
{ system("color 4f");
int vector[TAM];
cout<<"\t[Vector]\n";
try{
for (int i=0; i<TAM; i++) {
vector[i]=rand()*10;
}
if(vector==NULL){
throw vector;
}else{
for (int i=0; i<TAM; i++) {
cout<<"elemento no. "<<i+1<<" ,valor:"<<vector[i]<<endl;
}
}
}catch(int e[TAM]){
cout<<"el vector no se pudo llenar"<<endl;
}
system("pause");
return 0;
}
5. Jugando con cadenas.
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <ctype.h>
#include <string.h>
int main(){
char cadena[9];
system("color 1f");
cout<<"Introduce cadena: "<<endl;
cin>>cadena;
for(int i=0;i<strlen(cadena);i++){
cout<<" "<<cadena[i]<<endl;
}
cout<<"tamaño de la cadena: "<<strlen(cadena)<<endl;
cout<<"cadena en minusculas: "<<strlwr(cadena)<<endl;
cout<<"cadena en mayusculas: "<<strupr(cadena)<<endl;
cout<<"cadena al reves: "<<strrev(cadena)<<endl;
char otra[6];
strlwr(cadena);
strncat(otra," viaja a un lugar distante",45);
strncat(cadena, otra, 45);
puts (cadena);
system("pause");
return 0;
}
Los código aquí mostrados no son muy complejos.
Links
https://es.wikipedia.org/wiki/C%2B%2B
http://codigoc.org/708-diferencias-entre-c-y-c
jueves, 25 de julio de 2013
Programando en Java ... no. 4
Más ejemplos de programas en Java, son muy sencillos. No hay gran ciencia en ellos.
Hay dos formas de escribir programas sin errores; sólo la tercera funciona. ::Alan J. Perlis::
1. Instancia a una interface, nos imprimirá "prueba"
package codemonkey;
public class Codemonkey{
public static void main(String[] args) {
System.out.println(new Servicio(){public String toString(){return "prueba";}});
}
}
interface Servicio{
public abstract String toString();
}
2. Modificamos el anterior código para obtener una cadena al revés, definimos un nuevo método getReverse() dentro de la interface.
package codemonkey;
public class Codemonkey{
public static void main(String[] args) {
System.out.println(new Servicio(){public String getReverse(){
// usamos StringBuffer para obtener la cadena al revés
StringBuffer reversa = new StringBuffer("esto es un ejemplo del uso de interfaces Java");
reversa = reversa.reverse();
return reversa.toString();
}
});
}
}
interface Servicio{
public abstract String getReverse();
}
3. Ejemplo de una clase usando el Patrón Singleton; la clase tendrá un método que nos devolverá un número aleatorio.
package codemonkey;
import java.util.Random;
public class Codemonkey{
public static void main(String[] args) {
Aleatorio miNumero=Aleatorio.getAleatorio();
System.out.println("numero: "+miNumero.aleatorio());
}
}
//patrón singleton
class Aleatorio{
private static Aleatorio aleatorio=null;
private Aleatorio(){}
public static Aleatorio getAleatorio(){
if(aleatorio==null){
aleatorio=new Aleatorio();
}
return aleatorio;
}
public int aleatorio(){
int numero=0;
Random rand=new Random();
numero=(int)rand.nextInt()*100;
return numero;
}
}
4. Uso de subList
package codemonkey;
import java.util.List;
import java.util.ArrayList;
public class Codemonkey{
public static void main(String[] args) {
List<Integer> listaPrincipal=new ArrayList<Integer>();
//llenamos la lista con números enteros
listaPrincipal.add(1);
listaPrincipal.add(2);
listaPrincipal.add(3);
listaPrincipal.add(4);
listaPrincipal.add(5);
listaPrincipal.add(6);
listaPrincipal.add(7);
listaPrincipal.add(8);
//definimos 2 listas
List<Integer> listaA=listaPrincipal.subList(0,4); // iniciara en 0 y finalizara en el índice 4
List<Integer> listaB=listaPrincipal.subList(4,listaPrincipal.size()); // inicia en 4 y termina hasta el final de la lista
System.out.println("lista principal: "+listaPrincipal);
System.out.println("lista A: "+listaA);
System.out.println("lista B: "+listaB);
}
}
¿Quieres ver más ejercicios de programación?package codemonkey;
import java.util.List;
import java.util.ArrayList;
public class Codemonkey{
public static void main(String[] args) {
List<Integer> listaPrincipal=new ArrayList<Integer>();
//llenamos la lista con números enteros
listaPrincipal.add(1);
listaPrincipal.add(2);
listaPrincipal.add(3);
listaPrincipal.add(4);
listaPrincipal.add(5);
listaPrincipal.add(6);
listaPrincipal.add(7);
listaPrincipal.add(8);
//definimos 2 listas
List<Integer> listaA=listaPrincipal.subList(0,4); // iniciara en 0 y finalizara en el índice 4
List<Integer> listaB=listaPrincipal.subList(4,listaPrincipal.size()); // inicia en 4 y termina hasta el final de la lista
System.out.println("lista principal: "+listaPrincipal);
System.out.println("lista A: "+listaA);
System.out.println("lista B: "+listaB);
}
}
http://ejerciciosdeprogramacion.com
domingo, 21 de julio de 2013
Perl: Comparativa con Powershell
Powershell es la respuesta (bastante tardada) de Microsoft al shell de Unix/Linux debido a las limitantes del batch MS-DOS.
Tanto Perl como Powershell permiten automatizar tareas, por ejemplo, mediante un script podemos ejecutar un proceso del sistema operativo, buscar un archivo en directorios, encender/apagar el sistema, entre otras cosas más.
Para hacer uso de Powershell debemos tener instalado el .Net framework http://www.microsoft.com/es-mx/download/details.aspx?id=17851
Abrir la terminal de comandos y teclear: powershell o bien abrirlo directamente--> Ejecutar: powershell
hola.ps1
# esto es un comentario
"Hola, mundo desde powershell !!"
#también se puede hacer esto
Write-Host "Hola, mundo desde powershell !!"
hola.pl
#esto es un comentario
print "Hola, mundo desde Perl !!\n";
2. Paso de parámetros desde terminal
argumentos.ps1
#la declaración de variables es muy parecida a Perl
$args
"no. de parametros: $($args.count)"
argumentos.pl
use strict;
use warnings;
my $tam=scalar(@ARGV);
print "no. de parametros: $tam\n";
3. Uso de for
for.ps1
$args
"no. de parametros: $($args.count)"
foreach($arg in $args){
write-host "$1"
}
for.pl
use strict;
use warnings;
my $tam=scalar(@ARGV);
print "no. de parametros: $tam\n";
for(@ARGV){
print "$_\n";
}
4. Introducir datos
entrada.ps1
$nombre= Read-Host "Introduce tu nombre: "
Write-Host "Hola $nombre"
entrada.pl
print "Tu nombre: ";
chomp(my $nombre=<STDIN>);
print "Hola $nombre\n";
5. Una simple función
funcion.ps1
function mensaje{
"soy un simple mensaje"
}
#invocar
mensaje()
funcion.pl
sub mensaje{
print "soy otro simple mensaje\n";
}
#invocar
mensaje();
6. Uso de if
if.ps1
$valor=18
$edad=read-host "Tu edad es "
if($edad -ge $valor){
write-host "correcto, puedes votar"
}else{
write-host "incorrecto, no puedes votar todavia"
}
if.pl
my $valor=18;
print "Tu edad: ";
chomp(my $edad=<STDIN>);
if($edad ge $valor){
print "correcto, puedes votar\n";
}else{
print "incorrecto, no puedes votar todavia\n";
}
7. Conocer la ubicación del directorio donde se encuentra el script
ubicacion.ps1
<#
esto
es un comentario
multilínea en PS
#>
$ubicacion=gl
write-host $ubicacion
ubicacion.pl
=comment
este es
un comentario
multilínea en Perl
=cut
my $dir=`cd`;
print $dir;
ACTUALIZACIÓN:La desventaja principal que tiene Powershell es que solo funciona en entornos Windows.
Tanto Perl como Powershell permiten automatizar tareas, por ejemplo, mediante un script podemos ejecutar un proceso del sistema operativo, buscar un archivo en directorios, encender/apagar el sistema, entre otras cosas más.
Para hacer uso de Powershell debemos tener instalado el .Net framework http://www.microsoft.com/es-mx/download/details.aspx?id=17851
Abrir la terminal de comandos y teclear: powershell o bien abrirlo directamente--> Ejecutar: powershell
En Powershell los archivos tienen la extensión *.ps1, en Perl *.pl
1. Hola mundohola.ps1
# esto es un comentario
"Hola, mundo desde powershell !!"
#también se puede hacer esto
Write-Host "Hola, mundo desde powershell !!"
hola.pl
#esto es un comentario
print "Hola, mundo desde Perl !!\n";
2. Paso de parámetros desde terminal
argumentos.ps1
#la declaración de variables es muy parecida a Perl
$args
"no. de parametros: $($args.count)"
argumentos.pl
use strict;
use warnings;
my $tam=scalar(@ARGV);
print "no. de parametros: $tam\n";
3. Uso de for
for.ps1
$args
"no. de parametros: $($args.count)"
foreach($arg in $args){
write-host "$1"
}
for.pl
use strict;
use warnings;
my $tam=scalar(@ARGV);
print "no. de parametros: $tam\n";
for(@ARGV){
print "$_\n";
}
4. Introducir datos
entrada.ps1
$nombre= Read-Host "Introduce tu nombre: "
Write-Host "Hola $nombre"
entrada.pl
print "Tu nombre: ";
chomp(my $nombre=<STDIN>);
print "Hola $nombre\n";
5. Una simple función
funcion.ps1
function mensaje{
"soy un simple mensaje"
}
#invocar
mensaje()
funcion.pl
sub mensaje{
print "soy otro simple mensaje\n";
}
#invocar
mensaje();
6. Uso de if
if.ps1
$valor=18
$edad=read-host "Tu edad es "
if($edad -ge $valor){
write-host "correcto, puedes votar"
}else{
write-host "incorrecto, no puedes votar todavia"
}
if.pl
my $valor=18;
print "Tu edad: ";
chomp(my $edad=<STDIN>);
if($edad ge $valor){
print "correcto, puedes votar\n";
}else{
print "incorrecto, no puedes votar todavia\n";
}
7. Conocer la ubicación del directorio donde se encuentra el script
ubicacion.ps1
<#
esto
es un comentario
multilínea en PS
#>
$ubicacion=gl
write-host $ubicacion
ubicacion.pl
=comment
este es
un comentario
multilínea en Perl
=cut
my $dir=`cd`;
print $dir;
ACTUALIZACIÓN:
ACTUALMENTE SE PUEDE USAR POWERSHELL EN ENTORNOS LINUX & MAC OS
Etiquetas:
comparativa,
ejemplos,
perl,
powershell,
scripts,
shell
sábado, 13 de julio de 2013
Otros lenguajes de programación
No todo es Java, ni C, ni C++ ni mucho menos .Net.
Existen muchas otras alternativas como:
Existen muchas otras alternativas como:
- Ceylon
- Clojure
- Erlang
- Go
- Haskell
- Kotlin
- R
- Entre otros más
¿Por qué usar un nuevo lenguaje de programación?
Todo cambia (no es bueno confiarse), antes se usaba lenguajes como COBOL, Fortran y hasta Pascal para realizar cálculos matemáticos, científicos, en las empresas, etc. Sin embargo, surgían nuevos lenguajes que facilitaban el aprendizaje y enseñanza de la programación.
- Los programadores buscaban (buscan) algo más fácil de aprender y usar (si todo fuera tan fácil ...)
- Evitar depender de un solo sistema operativo o plataforma (ups .Net)
- Hacer más rápido el trabajo (...)
- cientos de cosas más (jeje)
Cuando te pidan cambiar de lenguaje de programación es bueno estar siempre preparado.
No vaya ser que dejen de usar Java donde trabajas y te pidan usar Python.
--Editado
Hay muchas razones más para usar otros lenguajes a parte de Java, C, C++ y .Net, no solo porque hay más:
--Editado
Hay muchas razones más para usar otros lenguajes a parte de Java, C, C++ y .Net, no solo porque hay más:
- El cliente elije la plataforma de desarrollo, a veces aunque no exista un análisis previo del por que lo hacen
- Los sistemas se migran a la tecnología más actual
- El framework que se usaba dejo de tener soporte
- etc.
"Si los constructores construyeran edificios como los programadores programan aplicaciones, un pájaro carpintero podría destruir toda la civilización." ::Gerald Weinberg::
¿Cuál es el propósito?
Conocer cual es el propósito de tu aplicación, ¿se trata de una aplicación web?, ¿una aplicación móvil?, etc.
- R: Si necesitas realizar cálculos estadísticos
- Python: Aplicaciones clásicas(por terminal), GUI, y hasta aplicaciones web
- Processing: Aplicaciones multimedia
- Entre otros más
¿Cuánto tiempo me va llevar aprenderlo?
El tiempo necesario, esto es relativo depende de cada persona y el tiempo invertido. Hay personas que en poco tiempo ya son capaces de crear sus propias aplicaciones y otras a quienes les lleva mucho más tiempo.
La práctica constante da resultados.
Links
Suscribirse a:
Entradas (Atom)