Mostrando entradas con la etiqueta programas. Mostrar todas las entradas
Mostrando entradas con la etiqueta programas. Mostrar todas las entradas

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

domingo, 7 de julio de 2013

Programando en Java ... no. 3

Java sigue siendo el lenguaje más usado para desarrollo de aplicaciones, le busquen donde le busquen sigue manteniendo el top de los lenguajes de programación.

Aunque no es del todo bueno usar solo uno.



Manejo de Excepciones

Alguna vez tuve que hacer una clase que manejara errores (o los gestionara), el código más o menos era algo como esto:
// clase Principal
public class Codemonkey{

  public Codemonkey(){}

  private TestMiExcepcion test=new TestMiExcepcion();

  public static void main(String[] args)throws MiExcepcion{
     // en esta parte se encuentra el método "manejaExcepcion"
      new Codemonkey().test.manejaExcepcion(args);
   
  }
}
//esta es la "clase Exception" definida
class MiExcepcion extends Exception{
  public MiExcepcion(String msg){
    super(msg);
  }
}
/* esta es la clase que contiene la información del error, en este caso se trata de un vector nulo o con tamaño cero*/
class TestMiExcepcion{
  public TestMiExcepcion(){}

  public void manejaExcepcion(String[] vector)throws MiExcepcion{
    if(vector.length==0){
      // esta es la información del error
      throw new MiExcepcion("el tamanyo del arreglo no debe ser cero");
    }
    else if(vector==null){
      throw new MiExcepcion("el vector no debe ser nulo");
    }
  }
}

Todo en un archivo llamado "Codemonkey.java" , es un ejemplo de crear tus propias excepciones. Aqui hay más ejemplos http://stackoverflow.com/questions/1754315/how-to-create-our-own-exceptions-in-java



En muchos casos es bueno definir nuestras propias excepciones, así tendremos una mejor perspectiva de como resolver los problemas en nuestro código (a veces no basta poner try-catch en cada línea de código).

Aquí más código
1. Otro ejemplo de uso de interfaces, clases abstractas y herencia

public class Ejemplos{
  public static void main(String[] args) {
    Persona deportista= new Deportista("Homero","Simpson","Thompson",36,2,"Futbol");
    deportista.ver();
  }
}

abstract class Persona implements Servicios{

  public static final boolean VALOR=true;

  private String nombre;
  private String apellidoPaterno;
  private String apellidoMaterno;
  private int edad;

  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 boolean setNombre(String nombre){
    this.nombre=nombre;
    return VALOR;
  }

  public boolean setEdad(int edad){
    this.edad=edad;
    return VALOR;
  }

  public boolean setApellidoPaterno(String apellidoPaterno){
    this.apellidoPaterno=apellidoPaterno;
    return VALOR;
  }

  public boolean setApellidoMaterno(String apellidoMaterno){
    this.apellidoMaterno=apellidoMaterno;
    return VALOR;
  }

  public String getNombre(){
    return nombre;
  }

  public int getEdad(){
    return edad;
  }

  public String getApellidoPaterno(){
    return apellidoPaterno;
  }

  public String getApellidoMaterno(){
    return apellidoMaterno;
  }

  public abstract String verTodo();

}


interface Servicios{
public abstract void ver();
}

class Deportista extends Persona{
  private int horas;
  private String deporte;

  public Deportista colocarDatos(int horas,String deporte){
    this.deporte=deporte;
    this.horas=horas;
    return this;
  }

  public Deportista(){}

  public Deportista(String nombre,String apellidoPaterno,String apellidoMaterno,int edad,int horas,String deporte){
    super(nombre,apellidoPaterno, apellidoMaterno,edad);
    this.horas=horas;
    this.deporte=deporte;
  }

  @Override
  public void ver(){
    System.out.printf("%s\n",verTodo());
  }

  @Override
  public String verTodo(){
    return "nombre: "+getNombre()+"\napellido paterno: "+getApellidoPaterno()+"\napellido materno: "+getApellidoMaterno()+"\nedad: "+getEdad()+"\nhoras: "+horas+"\ndeporte: "+deporte;
  }

}

2. Cálcular el Imc
import java.util.List;
import java.util.ArrayList;

public class Ejemplos{
  public static void main(String[] args) {
    Imc horacio=new Imc();
    horacio.setPeso(45.0);
    horacio.setTalla(1.60);
    Imc andres= new Imc(67.0,1.66);
    List<Imc> listaImc=new ArrayList<Imc>();
    listaImc.add(horacio);
    listaImc.add(andres);

    for(Imc imc: listaImc){
      System.out.printf("peso: %f - talla: %f  - imc obtenido: %f\n",imc.getPeso(),imc.getTalla(),imc.getIMC());
    }
 
  }
}

class Imc{
  private double peso;
  private double talla;

  public Imc(){}
  public Imc(double peso,double talla){
    this.talla=talla;
    this.peso=peso;
  }

  public double getIMC(){
    return peso/(talla*talla);
  }

  public boolean setPeso(double peso){
    this.peso=peso;
    return true;
  }

  public double getPeso(){
    return peso;
  }

  public boolean setTalla(double talla){
    this.talla=talla;
    return true;
  }

  public double getTalla(){
    return talla;
  }
}
3. Calcular la frecuencia cardíaca máxima:
import java.util.Scanner;

public class Codemonkey{
  public static void main(String[] args)throws MiExcepcion {
      int edad=0;
      double porc=0.0;
      Scanner teclado=new Scanner(System.in);
      do{
        System.out.println("Introduce tu edad:");
        edad=teclado.nextInt();
      }while(edad<=0);

      do{
        System.out.println("Introduce % de esfuerzo a realizar: ");
        porc=teclado.nextDouble();
      }while(porc<=0.0);

      System.out.println("frecuencia cardiaca maxima obtenida: "+porcentaje(obtenerFcmax(edad),porc));
  }

  public static int obtenerFcmax(int edad)throws MiExcepcion{
    int frecuencia=0;
    if(edad<=0){
      throw new MiExcepcion();
    }
    frecuencia=(220-edad);
 
    return frecuencia;
  }

  public static double porcentaje(double puls,double porc)throws MiExcepcion{
    double porcen=0.0;
      if(puls==0.0 ||  porc==0.0){
        throw new MiExcepcion("no debe haber valores nulos, menores o iguales a cero");
      }

      porcen=(porc/100)*puls;
    return porcen;
  }

}

class MiExcepcion extends Exception{
  public MiExcepcion(){super("la edad no debe ser cero o nula");}
  public MiExcepcion(String msg){super(msg);}
}

El problema de los programadores es que nunca saben lo que están haciendo hasta que es demasiado tarde. ::Seymour Cray::

Links
http://www.arrakis.es/~abelp/ApuntesJava/GestionExcepciones.htm

domingo, 23 de junio de 2013

Programando en Ruby ... no. 1

["¿Qué es Ruby?","Un poco de historia"]
Ruby es un lenguaje de programación orientado a objetos, muy parecido a Perl y Python.

El creador del lenguaje (Yukihiro  Matsumoto) pretendía hacer un lenguaje "parecido al lenguaje humano".

#este es un comentario
puts "¡Hola, mundo!"

Ruby posee un REPL, si usas una terminal (Windows MS-DOS, Linux) teclea  "irb". Puedes probar como funciona en esta página: http://tryruby.org/levels/1/challenges/0


irb(main):001:0>7+43
=>50
irb(main):002:0>"Codemonkey".reverse
=>yeknomedoC
Ejecutar: ruby programa.rb
1. Mostrar el abecedario
letras=('a'..'z')
for letra in letras
  puts "#{letra}"

end

2. Identificar sistema operativo y ejecutar comando
sistema=ENV['os']

def escribeComando()
  puts "Escribe comando: "
  comando = STDIN.gets.chomp()
  puts "comando a ejecutar: "+comando
  system(comando)
end

if sistema=="Windows_NT"
  puts "Windows"
  escribeComando()
else
  puts "Otro"
  escribeComando()
end

3. Uso  de "try-catch"
begin #try
p "Libro de Ann: "+mapa["Ann"]
p "Libro de Lucio: "+mapa["Lucio"]
rescue #catch
@error_message="#{$!}"
ensure #finally
puts "Fin..."
end

4.Paso de parámetros, mostrar en mayúsculas
ARGV.each do |arg|
  arg=arg.upcase
  puts "hola #{arg}"

end

domingo, 2 de junio de 2013

Programando en Perl no. 4

Continuamos con esta serie de ejercicios de programación en Perl.

En esta ocasión veremos:

  1. Determinar el elemento menor de un arreglo o vector. 
  2. Determinar el elemento mayor y menor de un arreglo o vector y su suma. 
  3. Cómo recorrer un hash.   
  4. Una entrevista con Larry Wall, creador de Perl.
1. Llenar un vector, y determinar el elemento menor
$argumentos = $#ARGV;
$cont= 0;
my @vector;
for($i=0;$i<=$argumentos;$i++){
 print $ARGV[$i],"\n";
 $vector[$i]=$ARGV[$i];
 $cont++;
}
print "\nno. de parametros: ",$cont;
my $menor=$vector[0];
my $mayor=$vector[0];
my $suma=0;
foreach $v (@vector) {
   if($v<$menor){
    $menor=$v;
   }
   if($v>$mayor){
    $mayor=$v;
   }
   $suma=$suma+$v;
}

print "\nmenor: ",$menor;
print "\nmayor: ",$mayor;
print "\nsumatoria: ",$suma;

2. Llenar un vector, determinal el elemento mayor y menor, y la suma de todos los elementos (usando una función):
$argumentos = $#ARGV;
$cont= 0;
my @vector;
for($i=0;$i<=$argumentos;$i++){
 print $ARGV[$i],"\n";
 $vector[$i]=$ARGV[$i];
 $cont++;
}
print "no. de parametros: ",$cont,"\n";
print metodo(@vector);

sub metodo{
  my @vector=@_;
  my $resultado="";
  my $menor=$vector[0];
  my $mayor=$vector[0];
  my $suma=0;
  foreach $v (@vector) {
    if($v<$menor){
      $menor=$v;
    }
    if($v>$mayor){
      $mayor=$v;
    }
    $suma=$suma+$v;
  }

  $resultado="el menor es: $menor ,el mayor es: $mayor ,la suma es $suma\n";
  return $resultado;
}
3. Recorrer un hash
my %mapa=('Pedro',32,'Maria',31,'Horacio',65);
print "Recorrer con while\n";
while (($key, $value) = each(%mapa)){
     print $key.", ".$value."\n";
}

print "Recorrer con foreach\n";
foreach $key (%mapa)
{
 print $key.",".$mapa."\n";
}


¿Por qué Perl es como un lenguaje humano?
Aquí una entrevista(en inglés) al creador de Perl,  Larry Wall.


Links
http://bigthink.com/videos/hobbits-would-make-great-programmers
https://github.com/book/perlsecret

Jai un lenguaje de programación inspirado en C++

Hoy hablaremos de un nuevo lenguaje de programación llamado Jai . Se trata de un lenguaje de programación que está desarrolland...

Etiquetas

Archivo del blog