Buscar este blog

8 de febrero de 2010

Diferencias entre C++ y Java

En C++ se pueden escribir programas orientados a objetos, no
orientados a objetos, o mezcla de ambos (por ejemplo, tener clases
con funciones globales en el mismo programa)
Java es puramente orientado a objetos; cualquier función debe pertenecer
a alguna clase (es un método). Existe la función main, pero es un método,
pero es un método estático de una clase (la clase principal)
Control sobre la plataforma (hardware+S.O.):
C y C++: el programador tiene control del procesador.
Java: el programa se ejecuta sobre un procesador virtual (JVM) que
abstrae al programador de la plataforma concreta
Código de máquina generado:
C y C++: el compilador genera código de máquina para una plataforma
concreta
Java: el compilador genera código de máquina (bytecode) para el
procesador JVM; dicho código debe ser interpretado a posteriori
Liberación de Memoria:
C y C++: a cargo del programador (delete)
Java: automática; los objetos creados son destruidos automáticamente
ente cuando se quedan sin referencias. Un proceso de la JVM llamado
recolector de basura (garbage collector)
Punteros:
C y C++: existen punteros con una aritmética bien definida, y entre otras
cosas, permiten programador explorar la memoria del computador físico
Java: no existe el concepto de puntero; los objetos son accedidos
mediante referencias (una referencia se puede considerar como el propio
propio identificador del objeto); no existe aritmética de referencias.
Paquetes:
C y C++: no existe tal concepto; lo más aproximado son los archivos de
biblioteca (.h)
Java: un paquete es una entidad organizativa que permite agrupar clases,
interfaces y excepciones, así como que sus elementos dispongan de una
determinada visibilidad con respecto a elementos externos al paquete
Conversión implícita de tipos:
C y C++: existe (flexibilidad para el programador)
Java: no existe por considerarse un mecanismo objeto de errores
potenciales
Sobrecarga de funciones y operadores:
C++: existen ambos tipos de sobrecarga
Java: sólo existe la sobrecarga de funciones (métodos); Los
operadores que existen ya vienen sobrecargados por el compilador,
(p.e. + para sumar números o concatenar cadenas).
Herencia múltiple:
C++: existe
Java: no existe por considerarse poco eficiente (esto implicó algunas
críticas a Java desde ciertos sectores)
Interfaces:
C++: no existen este concepto
Java: existe el concepto de interfaz como conjunto de especificaciones
de métodos y de atributos constantes.
Estructuras dinámicas:
C++: Librería STL
Java: paquete java.util. Los nombres y el funcionamiento son distintos.
Compiladores:
C++: Muchos compiladores. Pueden ser bastante distintos.
Java: Un único compilador siempre igual.
Objetos:
C++: Ningún ancestro común.
Java: Todos los objetos heredan automáticamente de la clase Object.
Visual Basic
Es un lenguaje de programación  gráfico que facilitará la creación de interfaces gráficas y en cierta medida también la programación misma.
C++
Es un lenguaje de programación la intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
JAVA
Java es un lenguaje de programación orientado a objetos  El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

Diferencias entre C++, Java y Visual Basic

Diferencias entre C++ y Java

En C++ se pueden escribir programas orientados a objetos, no
orientados a objetos, o mezcla de ambos (por ejemplo, tener clases
con funciones globales en el mismo programa)
Java es puramente orientado a objetos; cualquier función debe pertenecer
a alguna clase (es un método). Existe la función main, pero es un método,
pero es un método estático de una clase (la clase principal)
Control sobre la plataforma (hardware+S.O.):
C y C++: el programador tiene control del procesador.
Java: el programa se ejecuta sobre un procesador virtual (JVM) que
abstrae al programador de la plataforma concreta
Código de máquina generado:
C y C++: el compilador genera código de máquina para una plataforma
concreta
Java: el compilador genera código de máquina (bytecode) para el
procesador JVM; dicho código debe ser interpretado a posteriori
Liberación de Memoria:
C y C++: a cargo del programador (delete)
Java: automática; los objetos creados son destruidos automáticamente
ente cuando se quedan sin referencias. Un proceso de la JVM llamado
recolector de basura (garbage collector)
Punteros:
C y C++: existen punteros con una aritmética bien definida, y entre otras
cosas, permiten programador explorar la memoria del computador físico
Java: no existe el concepto de puntero; los objetos son accedidos
mediante referencias (una referencia se puede considerar como el propio
propio identificador del objeto); no existe aritmética de referencias.
Paquetes:
C y C++: no existe tal concepto; lo más aproximado son los archivos de
biblioteca (.h)
Java: un paquete es una entidad organizativa que permite agrupar clases,
interfaces y excepciones, así como que sus elementos dispongan de una
determinada visibilidad con respecto a elementos externos al paquete
Conversión implícita de tipos:
C y C++: existe (flexibilidad para el programador)
Java: no existe por considerarse un mecanismo objeto de errores
potenciales
Sobrecarga de funciones y operadores:
C++: existen ambos tipos de sobrecarga
Java: sólo existe la sobrecarga de funciones (métodos); Los
operadores que existen ya vienen sobrecargados por el compilador,
(p.e. + para sumar números o concatenar cadenas).
Herencia múltiple:
C++: existe
Java: no existe por considerarse poco eficiente (esto implicó algunas
críticas a Java desde ciertos sectores)
Interfaces:
C++: no existen este concepto
Java: existe el concepto de interfaz como conjunto de especificaciones
de métodos y de atributos constantes.
Estructuras dinámicas:
C++: Librería STL
Java: paquete java.util. Los nombres y el funcionamiento son distintos.
Compiladores:
C++: Muchos compiladores. Pueden ser bastante distintos.
Java: Un único compilador siempre igual.
Objetos:
C++: Ningún ancestro común.
Java: Todos los objetos heredan automáticamente de la clase Object.

7 de febrero de 2010

En C++ se pueden escribir programas orientados a objetos, no
orientados a objetos, o mezcla de ambos (por ejemplo, tener clases
con funciones globales en el mismo programa)
Java es puramente orientado a objetos; cualquier función debe pertenecer
a alguna clase (es un método). Existe la función main, pero es un método,
pero es un método estático de una clase (la clase principal)
Control sobre la plataforma (hardware+S.O.):
C y C++: el programador tiene control del procesador.
Java: el programa se ejecuta sobre un procesador virtual (JVM) que
abstrae al programador de la plataforma concreta
Código de máquina generado:
C y C++: el compilador genera código de máquina para una plataforma
concreta
Java: el compilador genera código de máquina (bytecode) para el
procesador JVM; dicho código debe ser interpretado a posteriori
Liberación de Memoria:
C y C++: a cargo del programador (delete)
Java: automática; los objetos creados son destruidos automáticamente
ente cuando se quedan sin referencias. Un proceso de la JVM llamado
recolector de basura (garbage collector)
Punteros:
C y C++: existen punteros con una aritmética bien definida, y entre otras
cosas, permiten programador explorar la memoria del computador físico
Java: no existe el concepto de puntero; los objetos son accedidos
mediante referencias (una referencia se puede considerar como el propio
propio identificador del objeto); no existe aritmética de referencias.
Paquetes:
C y C++: no existe tal concepto; lo más aproximado son los archivos de
biblioteca (.h)
Java: un paquete es una entidad organizativa que permite agrupar clases,
interfaces y excepciones, así como que sus elementos dispongan de una
determinada visibilidad con respecto a elementos externos al paquete
Conversión implícita de tipos:
C y C++: existe (flexibilidad para el programador)
Java: no existe por considerarse un mecanismo objeto de errores
potenciales
Sobrecarga de funciones y operadores:
C++: existen ambos tipos de sobrecarga
Java: sólo existe la sobrecarga de funciones (métodos); Los
operadores que existen ya vienen sobrecargados por el compilador,
(p.e. + para sumar números o concatenar cadenas).
Herencia múltiple:
C++: existe
Java: no existe por considerarse poco eficiente (esto implicó algunas
críticas a Java desde ciertos sectores)
Interfaces:
C++: no existen este concepto
Java: existe el concepto de interfaz como conjunto de especificaciones
de métodos y de atributos constantes.
Estructuras dinámicas:
C++: Librería STL
Java: paquete java.util. Los nombres y el funcionamiento son distintos.
Compiladores:
C++: Muchos compiladores. Pueden ser bastante distintos.
Java: Un único compilador siempre igual.
Objetos:
C++: Ningún ancestro común.
Java: Todos los objetos heredan automáticamente de la clase Object.
Visual Basic 
Es un lenguaje de programación  gráfico que facilitará la creación de interfaces gráficas y en cierta medida también la programación misma.

C++
Es un lenguaje de programación la intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos

Java
Es un lenguaje de programación orientado a objetos  El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

Diferencias entre java y C++

En C++ (C) los arrays con bloques de memoria consecutivos, donde el nombre del array es un puntero al primer elemento.

Un puntero es una variable que guarda (apunta) una dirección de memoria.

En Java no existe el concepto "puntero", puesto que es la propia máquina virtual la encargada de las referencias y gestión de memoria.

Tipos de datos que soporta Visual Basic

TIPOS DE DATOS EN VISUAL BASIC
El tipo de datos de un elemento de programación hace referencia al tipo de datos que puede contener y a cómo se almacenan dichos datos. Los tipos de datos se aplican a todos los valores que pueden almacenarse en la memoria del equipo o participar en la evaluación de una expresión. Cada variable, literal, constante, enumeración, propiedad, parámetro de procedimiento, argumento de procedimiento y valor devuelto por un procedimiento tiene un tipo de datos.
TIPOS DE DATOS DECLARADOS
A menos que utilice la programación sin tipos, debe declarar los tipos de datos de todos los elementos de programación. (Para obtener más información, vea Programación sin tipos en Visual Basic).
Un elemento de programación se define con una instrucción de declaración y su tipo de datos se especifica con la cláusula As. La tabla siguiente muestra las instrucciones utilizadas para declarar diversos elementos.
Elemento de programación
Declaración de tipos de datos
Variable
Dim amount As Double
Static yourName As String
Public billsPaid As Decimal = 0
Literal
Con un carácter de tipo de literal; vea "Caracteres de tipo de literal" en Caracteres de tipo
Dim searchChar As Char = "." C
Constante
Const modulus As Single = 4.17825F
Enumeración
Public Enum colors
Propiedad
Property region() As String
Parámetro de procedimiento
Sub addSale(ByVal amount As Double)
Argumento de procedimiento
En el código de llamada; cada argumento es un elemento de programación que ya se ha declarado o una expresión que contiene los elementos declarados
subString = Left( inputString , 5 )
Valor devuelto por procedimiento
Function convert(ByVal b As Byte) As String


16 de enero de 2010

#include 
#include //malloc, free
#include 
//#include  //kbhit, clrscr (No es ANSIC)
#include 

enum boolean {FALSE, TRUE};

typedef struct _primos{  //Así lo puedo referenciar aquí dentro
  unsigned long int num;
  struct _primos *siguiente; //Aún no está definido el tipo
  } primos;  //Nombre del nuevo tipo

primos *primero, *ultimo; //Estas son las variables globales

void imprimir_primos ();
void liberar();
boolean esprimo (unsigned long int i);
boolean insertar_primo (unsigned long int x);
void leer_fichero_txt ();
void guardar_fichero_txt();
void menu();
void contar();


void main()
{
unsigned long int i=3, max;
char opcion;
boolean salir = FALSE;
clock_t start, end;
start = clock();


//1 primo//
primero = (primos *) malloc (sizeof (primos));
primero -> siguiente = NULL;
primero -> num = 1;
ultimo = primero;
/////
insertar_primo (2); /*caso raro, para tener referencia*/


do{
//   clrscr(); //No es ANSCI C
   menu();
   fflush (stdin);
   opcion = getc(stdin);

   switch (opcion)
      { 
//Esta función la he comentado por no ser ANSIC por el kbhit()//
/*      case '1':   puts ("CALCULANDO..."); 
        start = clock(); 

        for (; !kbhit(); i+=2 ) 
           { 
         if (esprimo(i)) 
            { 
            if (!insertar_primo (i)) break;; 
            } 
           } 
        end = clock(); 
 printf ("\aFINALIZADO\n\nÚltimo nº comprobado: 
 %li\nTiempo empleado: %f\nPresiona una tecla para continuar"
 , i, (end-start)/ CLK_TCK);
 fflush(stdin);
 getc(stdin);
      // break; */

      case '2':   printf ("\n Hasta qué nº quieres buscar?  ");
 scanf ("%li", &max);
 puts ("CALCULANDO...");
 start = clock();
 for (; i < max; i=i+2 )
    {
  if (esprimo(i))
     {
     if (!insertar_primo (i)) break;
     }
    }
       end = clock ();
       printf ("\aFINALIZADO\n\nÚltimo nº comprobado:
 %li\nTiempo empleado:
     %f\nPresiona una tecla para continuar", i, (end-star
t) / CLK_TCK);
       fflush(stdin);
       getc(stdin);
       break;
      case '3': leer_fichero_txt (); break;
      case '4': guardar_fichero_txt (); break;
      case '5': imprimir_primos (); break;
      case '6': salir = TRUE; break;
      case '7': contar(); break;
      default : puts ("OPCION INCORRECTA");
      }
  } while (!salir);
liberar();
}


boolean esprimo (unsigned long int i)
{
unsigned long int max;
primos *aux;
max = (long int) (sqrt (i)); 
//Probamos los menores o igual a la raíz

aux = primero->siguiente; /*apunto al 2*/

while (aux -> num <= max)
//aux no puede ser NULL pq nunca será el último elemento
  {
  if (i % aux -> num == 0) return FALSE;
  aux = aux -> siguiente;
  }
  return TRUE;
}


void imprimir_primos ()
{
primos *aux;
aux = primero;

while (aux -> siguiente != NULL)
  {
  printf ("%5li ",aux->num);
  aux = aux -> siguiente;
  }

getc(stdin);
}


boolean insertar_primo (unsigned long int x)
{
primos *aux;

if ((aux = (primos *) malloc (sizeof (primos)))!=NULL)
//reservo memoria para siguiente primo
   {
   ultimo -> siguiente = aux;      //último apunta al siguiente
   ultimo = aux;                   //último primo es el nuevo
   ultimo -> num = x;              //inserto el número en último
   ultimo -> siguiente = NULL;     //último apunta a NULL
   return TRUE;
   }
else
   {
   printf ("\n\nOUT OF MEMORY\n");
   return (FALSE);
   }
}


void liberar()
{
primos *aux, *ant;
ant = primero;
for (aux = primero->siguiente; aux != NULL; aux = aux->siguiente)
   {
   free (ant);
   ant = aux;
   }
}

void menu()
{
puts ("\nMenu");
puts ("====\n");
//puts ("1-Calcular números primos hasta que presionemos una tecla");
//La opción1 utiliza kbhit que no es ANSIC
puts ("2-Calcular hasta un nº primo");
puts ("3-Cargar fichero de números primos");
puts ("4-Guardar primos en fichero");
puts ("5-Imprimir números primos calculados hasta el momento");
puts ("6-Salir");
puts ("7-Contar memoria");
}


void leer_fichero_txt ()
{
unsigned long i;
FILE *f;

if ((f = fopen ("primos.txt", "rt")) != NULL)
   {
   fscanf (f, "%li ", &i);
   fscanf (f, "%li ", &i); //as¡ ya he leido hasta el 2
   printf ("\n\nLeyendo fichero primos.txt");
   while (!feof(f))
      {
      fscanf (f, "%li ", &i);
      insertar_primo(i);
      }
   printf ("\nFichero leido\nPresiona cualquier tecla 
para continuar");
   fclose(f);

   }
else printf ("\n\nERROR AL ABRIR EL FICHERO");
getc(stdin);
}


void guardar_fichero_txt ()
{
primos *aux;
FILE *f;

if ((f = fopen ("primos.txt", "wt")) != NULL)
   {
   printf ("\n\nGuardando primos.txt");
   for (aux = primero; aux != NULL; aux = aux -> siguiente)
      {
      fprintf (f, "%li ", aux -> num);
      }
   printf ("\nFichero guardado\nPresiona cualquier
   tecla para continuar");
   fclose(f);
   }
else (printf ("\n\nERROR AL GUARDAR EL FICHERO"));
getc(stdin);
}



void contar ()
{

primos *aux;
unsigned long i = 0;

for (aux = primero; aux != NULL; aux = aux -> siguiente)
   {
   i++;
   }

printf ("\n\nHay un total de %li nums primos\n
Ocupan %li * %i bytes = %li bytes", i, i, sizeof(primos),
 i*sizeof(primos));
getc(stdin);
}