Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



martes, 31 de enero de 2012

C++: ejemplo de uso de clase

Un pequeño ejemplo de uso de clases:

#include <iostream>
#include <string>
using namespace std;
class pareja {
private:
// Datos miembro de la clase "pareja"
int a, b;
string cad;
public:
// Funciones miembro de la clase "pareja"
void Lee(int &a2, int &b2);
void Guarda(int a2, int b2) {
a = a2;
b = b2;
}
void leeCadena(string &cadena) {
cadena=cad;
}
void guardaCadena(string cadena){
cad=cadena;
}
string anadir(string cadena){
cad += cadena;
return cad;
}
};
// añadiendo un método a la clase
void pareja::Lee(int &a2, int &b2) {
a2 = a;
b2 = b;
}
int main() {
pareja par1;
int x, y;
string cadenatrabajada;
par1.guardaCadena("hola");
par1.leeCadena(cadenatrabajada);
par1.Guarda(12, 32);
par1.Lee(x, y);
cout << "Valor de par1.a: " << x << endl;
cout << "Valor de par1.b: " << y << endl;
cout << "Valor de la cadena: " << cadenatrabajada << endl;
cadenatrabajada=par1.anadir(" voy a anadir un texto");
cout << "Texto sumado: " << cadenatrabajada << endl;
par1.leeCadena(cadenatrabajada);
cout << "texto de la clase: " << cadenatrabajada << endl;
//system ("PAUSE");
//EXIT_SUCCESS;
return 0;
}

Fuente: 

lunes, 30 de enero de 2012

C++: Ejemplo de guardar texto en un archivo y leerlo.


Manejo de un archivo tipo TXT en c++:
Guardar y Abrir archivo


Este es un simple ejemplo de como trabajar con un fichero de texto en cpp:
Crea un archivo tipo TXT, y le añade unas cadenas de caracteres,y luego las lee.
Para mostrar lo que he leido, primero en el bucle de lectura lo va escribiendo y ademas va definiendo un array. Este array se mostrará luego otra vez por pantalla.



#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int main() {
char cadena[3128];
char linea[50][3000];
string texto;
string lineacadena;
int a=0;
int b=0;
// Crea un fichero de salida
cout <<"-------------------------------------\n";
cout <<"Escribiendo y leyendo un fichero\n";
cout <<"-------------------------------------\n";
ofstream fs("nombre.txt");
char* mensaje="hola esto es un mensaje\0";
char* mensaje2="hola 2\0";
char* mensaje3="un mensaje3\0";
cout << mensaje<<"\n";
cout <<mensaje2<<"\n";
cout <<mensaje3<<"\n";
// Enviamos una cadena al fichero de salida:
fs << mensaje << endl;
fs << mensaje2 << endl;
fs << mensaje3 << endl;
// Cerrar el fichero,
// para luego poder abrirlo para lectura:
fs.close();
// Abre un fichero de entrada
ifstream fe("nombre.txt");
// Leeremos mediante getline, si lo hiciéramos
// mediante el operador << sólo leeríamos
// parte de la cadena:
cout <<"-------------------------------------\n";
cout <<"\nContenido del fichero:\n";
cout <<"-------------------------------------\n";
a=-1;
while (!fe.eof()){
fe.getline(cadena,3000);
a++;
string lineacadena (cadena); // añadido: convierto array de char a cadena
texto +=lineacadena + '\n';  // añado a la cadena texto.
strcat(linea[a],cadena); //añadido trabajando con cadenas 
cout << cadena << endl; // añadido: escribo.
}
cout <<"-------------------------------------\n";
cout <<"Contenido del fichero, en un array guardado\n";
cout <<"-------------------------------------\n";
for(b=0;b<=a;b++){
cout << linea[b];
cout << "\n";
}
cout <<"----------------------------------------\n";
cout <<"imprimo una cadena\n";
cout <<"----------------------------------------\n";
cout << texto;
//system ("PAUSE");
//EXIT_SUCCESS;
return 0;
}

Nota:
31 de enero de 2012
He añadido también como trabajar con cadenas 

martes, 24 de enero de 2012

Algoritmos: Para Juegos (IA) y dibujo 2d

Os dejo 2 enlaces donde os podeis descargar unos documentos .pdf, donde podeis ver algunos algoritmos para juegos- Inteligencia Artificial (minimax, por ejemplo), y dibujo 2d (relleno de areas)



Saludos

domingo, 22 de enero de 2012

Calculadora de Expresiones en Gambas: usando script realizados en Gambas


Calculadora De Expresiones


Este es un ejemplo de como realizar una calculadora de expresiones. He usado un script en gambas. Con gambas también podemos hacer script para ejecutarlo en la terminal.
Podeis ver más información en la siguiente pagina: Scripting_con_Gambas


Esta es una captura del programa funcionando:



Este es el enlace de descarga del código fuente:  calculadora-0.0.1.tar.gz




El programa es muy simple:

Tiene un archivo tipo ".gbs" (el script):
#!/usr/bin/env gbs2
DIM a,b,c,x,y AS float
a=<a>
b=<b>
c=<c>
x=<x>
y=<y>
PRINT <formula>


que es copiado al disco duro y modificado por las siguientes funciones:
' Gambas module file
PUBLIC FUNCTION ecuacion(expresion AS String, OPTIONAL a AS String, OPTIONAL b AS String, OPTIONAL c AS String, OPTIONAL x AS String, OPTIONAL y AS String) AS String
    DIM cadena AS String
    DIM comando AS String
    DIM valor AS String
    TRY KILL User.home & "/programa.gbs"
    COPY "programa.gbs" TO User.home & "/programa.gbs"
    cadena = File.Load(User.home & "/programa.gbs")
    IF a <> NULL THEN
          cadena = Replace(cadena, "<a>", var.ConvierteComaaPto(a))
      ELSE
          cadena = Replace(cadena, "<a>", "0")
    ENDIF

    IF b <> NULL THEN
      cadena = Replace(cadena, "<b>", var.ConvierteComaaPto(b))
    ELSE
      cadena = Replace(cadena, "<b>", "0")
    ENDIF
    IF c <> NULL THEN
      cadena = Replace(cadena, "<c>", var.ConvierteComaaPto(c))
    ELSE
      cadena = Replace(cadena, "<c>", "0")
    ENDIF
 
    IF x <> NULL THEN
      cadena = Replace(cadena, "<x>", var.ConvierteComaaPto(x))
    ELSE
      cadena = Replace(cadena, "<x>", "0")
    ENDIF
   
    IF y <> NULL THEN
      cadena = Replace(cadena, "<y>", var.ConvierteComaaPto(y))
    ELSE
      cadena = Replace(cadena, "<y>", "0")
    ENDIF

    cadena = Replace(cadena, "<formula>", expresion)

    File.Save(User.home & "/programa.gbs", cadena)
    WAIT 0.1
    EXEC ["chmod", "777", User.home & "/programa.gbs"] WAIT
    EXEC [User.home & "/./programa.gbs"] TO valor
    IF valor <> "" THEN
           RETURN Replace(valor, "\n", "")
    ENDIF
   Message.Info("Posible error en en la expresión, o al realizar la operación")
   RETURN 0
END


PUBLIC FUNCTION ConvierteComaaPto(cadena AS String) AS String
 
  RETURN Replace(cadena, ",", ".")
 
END

En el formulario principal:

' Gambas class file

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
ME.Center
END

PUBLIC SUB ToolButtonCalcular_Click()
DIM lista AS String

 TextBoxResultado.text = var.ecuacion(TextBoxExpresion.text, ValueBoxA.value, ValueBoxB.Value, ValueBoxC.value, ValueBoxX.value, valueboxy.value)

lista = Str$(ListViewExpresiones.Count + 1)

ListViewExpresiones.Add(lista, TextBoxExpresion.text & " = " & TextBoxResultado.text)
END

Nota:

Gambas tiene un componente gb.eval, que es usado expresamente para evaluar expresiones. Podéis ver el ejemplo que trae de Calculadora, para verlo como se usa.