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

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

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;
}

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

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++.

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::




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;  
}



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;
}

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?
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
En Powershell los archivos tienen la extensión *.ps1, en Perl *.pl
1. Hola mundo
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
ACTUALMENTE SE PUEDE USAR POWERSHELL EN ENTORNOS LINUX & MAC OS





Pattern Matching en sencillas palabras (o no tanto)

El pattern matching es una técnica para comparar estructuras de datos contra un patrón y, si coincide, extraer valores o ejecutar lóg...

Etiquetas

Archivo del blog