La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE WWW.NETWORKINGAPURE.COM.VE Introducci Ó n a los Arreglos (“arrays”) en C++

Presentaciones similares


Presentación del tema: "PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE WWW.NETWORKINGAPURE.COM.VE Introducci Ó n a los Arreglos (“arrays”) en C++"— Transcripción de la presentación:

1 PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE WWW.NETWORKINGAPURE.COM.VE Introducci Ó n a los Arreglos (“arrays”) en C++

2 Tipos de datos en C++ Simple data types Structured data types Pointers data types

3 Structured data types Variables definidas que pueden almacenar en memoria varios valores al mismo tiempo  Arreglos (arrays)

4 Arreglos (Arrays) Colección de un número fijo de componentes que son del mismo tipo de dato. Forma general para declarar un arreglo de una dimensión:  dataType arrayName[intExp];  Donde intExp es cualquier expresión constante que al evaluarse produce un número positivo entero. También, intExp especifica el número de componentes del arreglo.

5 Arrays Ejemplos:  La instrucción: int num[5]; declara un arreglo llamado num de cinco componentes, cada uno de tipo int. num[0] num[1] num[2] num[3] num[4] num

6 Arrays Para acceder a los componentes de un arreglo, la forma general utilizada es:  arrayName[indexExp]  Donde indexExp, también llamado el index, es cualquier expresión cuyo valor debe ser un entero positivo. Especifica la posición de un componente dentro del arreglo.  Ejemplo:  int list[10]; // declara un arreglo llamado list de 10 componentes  list[5] = 34; // almacena el valor 34 en la sexta posición del arreglo list 34 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

7 Arrays aint. Suponer que a es una variable de tipo int. Las instrucciones:  a = 3;  list[a] = 63; asignan el valor de 3 a la variable a, y luego le asigna el valor 63 a la cuarta posición del arreglo list. De la misma forma, si el valor de la variable a es 4, entonces la instrucción list[2 * a – 3] = 58; list[5] almacena el valor 58 dentro de list[5] porque 2*a-3 evalua a cinco.

8 Arrays Analice las siguientes instrucciones:  list[3] = 10; list  list[3] = 10; //asigna el valor de 10 al cuarto componente de list  list [6] = 35; list  list [6] = 35; //asigna el valor de 35 a la posición siete de list  list [5] = list[3] + list [6] = 35;  list [5] = list[3] + list [6] = 35; //añade el contenido de list[3] y de list[6] a list[5] 104535 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

9 Arrays Uso práctico de arreglos en C++  Problema: hacer un programa que en C++ que lea cinco números, los sume, y luego los escriba en el orden inverso como se entraron.  Se necesitan declarar al menos cinco variables todas del mismo tipo para almacenar en memoria los números que se van a entrar.

10 Arrays Flowchart: start Entrar 5 numeros a,b,c,d,e sum = a+b+c+d+e Mostrar e,d,c,b,a stop

11 Arrays Programa #1 #include using namespace std; int main() { int num1, num2, num3, num4, num; int sum; cout << “Enter five integers: “; cin >> num1, num2, num3, num4, num5; cout << endl; sum = num1 + num2 + num3 + num4 + num5; cout << “The sum of the numbers = “ << sum << endl; cout << “The numbers in reverse order are: “; cout << num5 << “ “ << num4 << “ “ << num3 << “ “ << num2 << “ “ << num1<< endl; system(“pause”); return 0; }

12 Arrays Hacer el mismo programa pero para que lea 100 números en lugar de solo cinco.  En vez de definir cien variables del mismo tipo en el programa, es más conveniente definir un arreglo de cien posiciones donde se pueda acumular cada valor en su lugar correspondiente, leerlos, sumarlos, y por último escribirlos en el orden inverso como se entraron.

13 Arrays Solución: #include using namespace std; int main() { int list[100]; int sum = 0; cout << “Enter 100 integers: “; for (int i = 0; i < 100; i ++) { cin >> list[i]; sum = sum + list[i]; } cout << endl; cout << “The sum of the numbers = “ << sum << endl; cout << “The numbers in reverse order are: “; for(int i = 99; i >=0; i --) cout << list[i] << “ “; cout << endl; system(“pause”); return 0; }

14 Cómo declarar un array: Un array se declara de forma parecida a una variable de tipo simple añadiéndole al nombre el número de elementos que contendrá el array. De forma general, un array se declara así: tipo_dato nombre_array[elementos1][elementos2]…..; elementos1, elementos2, etc. son los índices del array. Deben ser números enteros positivos o expresiones con un resultado entero positivo. Indican el número de elementos del array. En el ejemplo anterior, el array notas se declara como: double notas[20]; El array es unidimensional, se llama notas y contiene 20 elementos de tipo double. Arrays

15 int x[3]; char a[] = { 'a', 'b', 'c' }; // a es un array de 3 elementos, // a[0] = 'a', etc. float x[2] = { 1.2, 2.1, 3.2 }; // error, no se pueden iniciar más de dos elementos int y[3] = { 34, -10 }; // correcto, y[0] = 34, y[1] = -10, y[2] = 0 (valor por defecto) Unos arrays especiales son las cadenas de caracteres, que terminan con el carácter '\0'. Así: char s[] = "hola"; significa que s es una cadena de 5 caracteres: "hola" + '\0'. Ejemplos

16 Ejemplo: programa C++ que accede y modifica los elementos de un array Los elementos de un array se pueden utilizar igual que cualquier otra variable y se puede hacer con ellos las mismas operaciones que se pueden hacer con el resto de variables. #include using namespace std; int main () { int n, m = 5; int a[]={2,8,3,0,4}; //se declara un array de 5 elementos de tipo //int con esos valores iniciales n = a[0]; //n = 2 a[0]=a[1]+a[2]; //a[0]= 8 + 3 = 11 a[1]++; //a[1]= 9 a[n]=m+10; //a[2]= 15 a[n+1]=7; //a[3]= 7 if(a[0]>=a[1]) //if(11 >= 9) a[4]=a[0]; // a[4]= 11 cout << a[0]<<" "<< a[1]<< " "<< a[2]<< " "<< a[3]<< " "<< a[4]; cout << endl; system("pause"); } La salida de este programa es: 11 9 15 7 11 Ejemplos

17 Recorrer un array Para recorrer un array se utiliza una instrucción iterativa (normalmente una instrucción for) utilizando una variable entera como índice que tomará valores desde el primer elemento al último o desde el último al primero. El siguiente programa declara un array de 7 elementos de tipo double llamado notas y le asigna valores iniciales. A continuación recorre el array, utilizando la instrucción for, para mostrar por pantalla el contenido del array. #include using namespace std; int main () { int i; double notas[]={2.3,8.5,3.2,9.5,4,5.5,7.0}; //array de 7 elementos cout << fixed << setprecision(2); for(i=0; i<7; i++) cout << notas[i] << " "; //se muestra cada elemento del array cout << endl; system("pause"); } La salida que muestra este programa es: 2.30 8.50 3.20 9.50 4.00 5.50 7.00 Ejemplos

18 #include // ejemplo Arrays y Punteros using namespace std; int main() { char c[] = "veronica"; // 9 caracteres char *p = c; // p asociado al comienzo de c cout << "caracter c[0]: " << c << " - direccion c[0]: " << hex << long(&c[0]) << endl; cout << "puntero p: " << hex << long(p) << " - caracter en *p: " << *p << endl; ++p; cout << "puntero p+1: " << hex << long(p) << " - caracter en *(p+1): " << *p << endl; } Se observa en el ejemplo como se puede asignar el puntero p al principio de la cadena c, porque al declarar un array de cualquier tipo c[N], c es simplemente el puntero a la dirección de memoria del primer elemento c[0]. El ejemplo también ha introducido la conocida y "peligrosa" aritmética de punteros. Las siguientes operaciones están definidas:  Diferencia entre punteros del mismo array  Suma con un entero  Diferencia con un entero Ejemplos

19 Punteros ¡Error! Marcador no definido. Un puntero es un tipo de variable que apunta a una dirección de memoria. Se utiliza para apuntar a otros objetos. char c = 'a'; char *p = &c; En este caso, definimos una variable de tipo carácter, c, al que asignamos el carácter 'a'. En la segunda línea, mediante el operador de dereferencia, asignamos al puntero a carácter p, la dirección de memoria de c. Tenemos pues, los siguientes elementos:  T* puntero a tipo T  &var dirección de memoria de variable var (operador de de referencia) #include using namespace std; int main() { char c = 'a'; char *p = &c; cout << "Caracter c: " << c << endl; cout << "Puntero p (hexadecimal): " << hex << long(p) << endl; cout << "Contenido de p: " << *p << endl; } Ejemplos


Descargar ppt "PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE WWW.NETWORKINGAPURE.COM.VE Introducci Ó n a los Arreglos (“arrays”) en C++"

Presentaciones similares


Anuncios Google