Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Índice
1. Diferencias entre C y C++.
2. Diferencias entre C++ y Java .
3. Ejemplos.
4. Funciones.
5. Memoria dinámica
6. Librería de funciones.
1
1. Diferencias entre C y
C++
Entrada / Salida
C++ introduce los flujos como mecanismo
unificado de E/S.
#include <stdio.h> #include <iostream.h>
2
Declaración de variables
C no tiene booleanos. C++ tiene bool y
true y false.
#include <stdio.h> #inlude <iostream.h>
#define TRUE 1
#definr FALSE 0 int main(void)
#typedef int BOOL {
int a = 5, b = 3;
void main() { bool compara;
int a = 5, b = 3;
BOOL compara; compara = (a > b);
Declaración de variables
C++ permite un nuevo tipo de casting.
3
Declaración de funciones
En C++ podemos utilizar referencias para
ahorrarnos los punteros.
#include <iostream>
Salida:
void f(int& r) {
cout << "r = " << r << endl;
x = 47
cout << "&r = " << &r << endl;
r = 5; &x = 0065FE00
cout << "r = " << r << endl; r = 47
} &r = 0065FE00
r=5
int main() { x=5
int x = 47;
cout << "x = " << x << endl;
cout << "&x = " << &x << endl;
f(x); cout << "x = " << x << endl;
}
Otras diferencias
1. C++ permite la sobrecarga de
operadores.
2. C++ incluye soporte para excepciones
(aunque las librerías del sistema no
trabajan con ellas).
3. C++ soporta namespaces.
4. C++ soporta plantillas.
4
2. Diferencias entre Java
y C++
5
Diferencias entre java y c++
Liberación
Liberación de
de Memoria:
Memoria:
CC yy C++:
C++: aa cargo
cargo del
del programador
programador (delete
delete))
((delete)
Java:
Java: automática; los objetos creados son
automática; los objetos creados son destruidos
destruidos automáticamente
automáticam
automáticamente ente
cuando se quedan sin referencias. Un proceso
cuando se quedan sin referencias. Un proceso de la JVM llamadode la JVM llamado
recolector
recolector de
de basura
basura (garbage
garbage collector)
((garbage collector
collector))
Punteros:
Punteros:
CC yy C++:
C++: existen
existen punteros
punteros concon una
una aritmética
aritmética bien
bien definida,
definida, yy entre
en tre otras
entre otras
cosas,
cosas, permiten programador explorar la memoria del computador físico
permiten programador explorar la memoria del computador ísico
ffísico
Java:
Java: no
no existe
existe el
el concepto
concepto de de puntero;
puntero; los
los objetos
objetos son
son accedidos
accedido
accedidos s
mediante referencias (una referencia se puede considerar como
mediante referencias (una referencia se puede considerar como el propio el propio
identificador
identificador del
del objeto);
objeto); nono existe
existe aritmética
aritmética dede referencias
referencias
Paquetes:
Paquetes:
CC yy C++:
C++: no
no existe
existe tal
tal concepto;
concepto; lolo más
más aproximado
aproximado sonson los
los archivos
archi vos de
archivos de
biblioteca (.h)
biblioteca (.h)
Java:
Java: un
un paquete
paquete es es una
una entidad
entidad organizativa
organizativa que
que permite
permite agrupar
agrupar clases,
clases,
interfaces
interfaces y excepciones, así como que sus elementos dispongan de
y excepciones, así como que sus elementos dispongan ddee una
una
determinada
determinada visibilidad
visibilidad con
con respecto
respecto aa elementos
elementos externos
externos alal paquete
paq uete
paquete
6
Diferencias entre java y c++
Estructuras
Estructuras dinámicas:
dinámicas:
C++:
C++: Librería
Librería STL
STL
Java:
Java: paquete
paquete java.util
java.util.. Los
Los nombres
nombres yy el el
funcionamiento son distintos.
funcionamiento son distintos.
Compiladores:
Compiladores:
C++:
C++: Muchos
Muchos compiladores.
compiladores. Pueden
Pueden ser
ser bastante
bastante
distintos.
distintos.
Java:
Java: Un
Un único
único compilador
compilador siempre
siempre igual.
igual.
Objetos:
Objetos:
C++:
C++: Ningún
Ningún ancestro
ancestro común.
común.
Java:
Java: Todos
Todos los
los objetos
objetos heredan
heredan automáticamente
automáticamente
de Object
de Object. .
Conclusión
Sabemos POO, Java y C:
7
Ejemplo
Leer un número por teclado y mostrarlo:
#include <iostream.h>
int main() {
int number;
cout << "Escribe un número: ";
cin >> number;
cout << "Tu número es: "
<< number << endl;
cout << "En octal es: "
<< oct << number << endl;
cout << "En hexadecimal es: "
<< hex << number << endl;
}
Ejemplo
Podemos usar las cadenas al estilo C,
pero STD nos da la clase string
#include <iostream.h>
int main() {
string s1, s2;
string s3 = "Hola";
cout << "Escribe tu nombre: ";
cin >> s2;
s1 = s3 + " " + s2 + "!";
cout << s1 + "." << endl;
} Ojo, el tipo de una cadena
sigue siendo char *
8
Ejemplo
¿Qué hace este programa?.
#include <iostream.h>
char cfunc(int i) {
if(i == 0) return 'a';
if(i == 1) return 'g';
if(i == 5) return 'z';
return 'c';
}
int main() {
cout << “Escribe un número: ";
int val;
cin >> val;
cout << cfunc(val) << endl;
}
Ejemplo
¿Qué hace este programa?.
#include <iostream.h>
int main() {
for(int i = 0; i < 128; i = i + 1)
cout << " Valor: " << i
<< " Caracter: "
<< char(i)
<< endl;
}
9
Ejemplo
#include <iostream.h>
3. Funciones
10
Funciones insertadas
Similar a las macros, en vez de llamarse se
insertan:
inline bool esPar(int n) { #include <iostream.h>
return !(n%2);
} int main() {
if (esPar(8))
cout << 8 << " es par. " << endl;
}
#include <iostream.h>
int main() {
if (!(8%2))
cout << 8 << " es par. " << endl;
}
11
Práctica
Volver a escribir programas hechos en C
al sabor C++.
5. Memoria dinámica
12
Memoria dinámica
Ya no usamos malloc !!!!
int *p; int *p;
p = (int
(int p = new int;
int;
*)malloc(sizeof(int
*)malloc(sizeof(int));
)); (*p)=5;
(*p)=5;
Memoria dinámica
#include <iostream.h
<iostream.h>
>
¿Cómo creamos una tabla int main() {
dinámica en C++)? int *p;
p = new int[4];
Exactamente igual que en int c;
Java. for (c = 0; c < 4; c++)
*(p+c
*(p+c)) = c;
Ejercicio: crear una tabla for (c = 0; c < 4; c++)
dinámica, inicializarla y cout << *(p+c
*(p+c)<<
)<< " ";
cout << endl;
endl;
mostrarla (hay que liberar
delete p;
la memoria al final). return 0;
}
13
6. Librería de funciones
14