Un programa que probara todo esto en C# podría ser así:
1: using System; 2: using System.Collections.Generic; 3: 4: class DatosArraysListas 5: { 6: 7: public static void Main() 8: { 9: // Algunos tipos de datos simples 10: int i = 1; 11: short s = 2; 12: byte b = 3; 13: long l = 4; 14: 15: float f = 1.0f; 16: double d = 2.0; 17: 18: bool z = true; 19: 20: // Lectura de reales desde teclado 21: Console.Write("Introduce un real (simple precisión): "); 22: float f2 = Convert.ToSingle(Console.ReadLine()); 23: Console.Write("Y uno de doble: "); 24: double d2 = Convert.ToDouble(Console.ReadLine()); 25: 26: // Arrays 27: int[] a1 = new int[3]; 28: a1[0] = 200; // Les damos valores 29: a1[1] = 150; 30: a1[2] = 100; 31: Console.WriteLine("a1 contiene: "); 32: foreach (int n in a1) 33: Console.WriteLine(n); 34: 35: int[] a2 = { 50, 30, 10}; 36: Console.WriteLine("a2 contiene: "); 37: for (int j=0; j<a2.Length; j++) 38: Console.WriteLine(a2[j]); 39: 40: int[,] a3 ={ 41: { 10, 20, 30}, 42: { 11, 21, 31} 43: }; 44: 45: Console.WriteLine("El primer dato de la segunda fila de a3 es "+ 46: a3[1,0]); 47: 48: // Lista de varios datos 49: List<string> datos = new List<string>(); 50: datos.Add("Hola"); 51: datos.Insert(0,"Como estas?"); 52: datos.Add("Adios"); 53: datos.RemoveAt(1); 54: Console.WriteLine("La lista contiene: "); 55: foreach (string dato in datos) 56: Console.WriteLine(dato); 57: 58: } 59: }
En C++ los cambios son:
- Ya sabemos usar "cin" para entrada y "cout" para salida.
- En general, los tipos de datos básicos se llaman igual en C++ que en C#.
- En los arrays, los corchetes se ponen después del nombre de la variable y no se usa "new" para reservarles espacio: int a[2];
- No hay una forma directa de saber el tamaño (cantidad de elementos) de un array: deberemos memorizarlo en una variable o constante, o bien calcular los bytes que ocupa toda la estructura y dividirlo entre los bytes que ocupa cada dato: (sizeof(a)/sizeof(*a))
- Los arrays bidimensionales se separan con corchetes, no con comas: "int b[5][3];" Si vamos a especificar los valores, aun así habrá que indicar el tamaño de todas las partes (excepto, como mucho, la primera): "int b[][3] = { ... } "
- Las estructuras dinámicas en general son más incómodas de manejar en C++: El equivalente a una "List" de C# es un "vector". Se añade un elemento al final con "push_back", se podrían quitar del final con "pop_back", se inserta en una posición específica con "insert" y se borra con "erase". En estas operaciones, la posición se deberá indicar usando iteradores, a partir de "miVector.begin()". No existe "foreach", así que habrá que recorrer el vector con un "for" (el tamaño se obtiene con ".size()") o con un iterador. La clase "vector" internamente usa un array, de modo que se puede acceder con [] y este acceso es muy rápido, pero a cambio las operaciones "insert" son costosas porque hay que copiar todo el array. Como alternativa, también existe una clase "list", que se usaría de manera muy similar pero que no permite el acceso con [], sino que hay que recorrer de forma secuencial empleando iteradores.
El resultado sería:
1: #include <iostream> 2: #include <vector> 3: using namespace std; 4: 5: int main () 6: { 7: // Algunos tipos de datos simples 8: int i = 1; 9: short s = 2; 10: char b = 3; 11: long l = 4; 12: 13: float f = 1.0f; 14: double d = 2.0; 15: 16: bool z = true; 17: 18: // Lectura de reales desde teclado 19: cout << "Introduce un real (simple precisión): "; 20: float f2; 21: cin >> f2; 22: cout << "Y uno de doble: "; 23: double d2; 24: cin >> d2; 25: 26: // Arrays 27: int a1[3]; 28: a1[0] = 200; // Les damos valores 29: a1[1] = 150; 30: a1[2] = 100; 31: cout << "a1 contiene: " << endl; 32: for (int j=0; j<3; j++) 33: cout << a1[j] << endl; 34: 35: int a2[] = { 50, 30, 10}; 36: cout << "a2 contiene: " << endl; 37: int tamanyo = (sizeof(a2)/sizeof(*a2)); 38: for (int j=0; j<tamanyo; j++) 39: cout << a2[j] << endl; 40: 41: int a3[][3] ={ 42: { 10, 20, 30}, 43: { 11, 21, 31} 44: }; 45: 46: cout << "El primer dato de la segunda fila de a3 es " << 47: a3[1][0] << endl; 48: 49: // Lista de varios datos 50: vector<string> datos; 51: vector<string>::iterator iterad; 52: datos.push_back("Hola"); 53: datos.insert(datos.begin(),"Como estas?"); 54: datos.push_back("Adios"); 55: iterad=datos.begin(); 56: iterad++; 57: datos.erase(iterad); 58: cout << "La lista contiene: " << endl; 59: for (unsigned j=0; j<datos.size(); j++) 60: cout << datos[j] << endl; 61: cout << "O con iteradores: " << endl; 62: 63: for (iterad=datos.begin(); iterad<datos.end(); iterad++) 64: cout << *iterad << endl; 65: }
Dentro de poco, acceso a ficheros en C++...