Licenciatura en Ciencia de la Computación COMPUTACIÓN I ARREGLOS Rosa Barrera Capot [email protected] ¿Qué es un arreglo? Es un conjunto de datos donde: Cada dato tiene su posición Todos los datos son del mismo tipo Unidimensionales, bidimensionales, etc. NO EXISTEN ARREGLOS DE TIPOS “MEZCLADOS” ARREGLOS UNIDIMENSIONALES Declaración de Arreglos Formato : TIPO Nom_var[longitud entera]; Donde Tipo puede ser: int (entero) long (entero largo) short (entero corto) float (real) double (real double) char (carácter) Otros ….. Notas Importantes El índice del primer elemento del arreglo es 0 La longitud del arreglo siempre es una constante entera positiva. Se generan n espacios de memoria de tipo <tipo>, independiente que se ocupen o no todos. El índice del elemento no es el valor (contenido) de dicho elemento El nombre del arreglo indica donde se localiza el grupo en la memoria de la computadora Dato 0 0 Dato 1 1 Dato 2 2 Dato 3 3 Dato 4 4 Dato 5 5 ….. Dato n …. n Manejo de Arreglos (1) • Si se define un arreglo int a[5]; En memoria se generan 5 espacios de memoria de tipo entero a[3] a[0] a[1] a[4] a[2] Manejo de Arreglos (2) • a[0] = 5 • a[3]= a[0] + 6; • a[2] = a[0] * a[3]; 11 5 a[3] a[0] a[1] 55 a[2] a[4] Manejo de Arreglos (3) Para Mayor simplicidad en el manejo, trabajaremos visualmente un arreglo como: a = 5 0 1 55 11 2 3 ¿Qué contiene a[1] y a[4]? 4 Primeros programas en C++ Programa que ingresa elementos a un arreglo y luego los muestra. #include <iostream.h> int main() { int i,n, a[20]; // def. de variables cout <<“Cuantos datos desea ingresar”; cin >> n; for( i=0; i < n; i ++) { cout << “ Ingrese dato” << i+1 <<“: “; cin >> a[i]; } cout << “ Los datos que usted ingreso son:” << endl; for( i=0; i < n; i ++) cout << a[i] << “\t”; return 0; } Dato 0 0 Dato 1 1 Dato 2 2 Dato 3 3 Dato 4 4 Dato 5 5 ….. Dato n …. 19 Datos Prácticos: Si se desea inicializar un arreglo en elementos conocidos la forma se puede ver por los siguientes ejemplos: 1. Si se desea inicializar el arreglo en los elementos 7, 17 y 21, hay dos formas de hacerlo: int a[]={7,17,21}; int a[3]={7,17,21}; 2. Si se desea inicializar todos los elementos del arreglo en un mismo valor, por ejemplo 0: int a[10]={0}; Datos Prácticos: Conviene definir una variable de tipo constante para el máximo en los arreglos: #define MAX 20 Para pasar como parámetro un arreglo, sólo se envía el nombre de la variable, pues esta contiene la dirección del primer elemento del arreglo. Por defecto, al pasar un arreglo a una función, este es un parámetro por referencia Programa que ingresa elementos a un arreglo y luego los muestra. #include <iostream.h> #define MAX 20 void llenar (int a[MAX], int n); //función en la que se ingresan valores al arreglo void Mostrar (int a[MAX], int n); //función en la que se muestran los valores del arreglo int main() { int n, a[MAX]; // def. de variables cout <<“Cuantos datos desea ingresar (MAX”<<MAX<<“ )”; cin >> n; llenar(a,n); cout << “ Los datos que usted ingreso son:” << endl; Mostrar(a,n); return 0; } void llenar (int a[MAX], int n) { int i; for( i=0; i < n; i ++) { cout << “ Ingrese dato” << i+1 <<“: “; cin >> a[i]; } void Mostrar (int a[MAX], int n); { int i; for( i=0; i < n; i ++) cout << a[i] << “\t”; } ¿CÓMO NOS ASEGURAMOS QUE EL USUARIO INGRESE SÓLO HASTA EL MÁXIMO QUE TENEMOS? Programa que ingresa elementos a un arreglo y luego los muestra. #include <iostream.h> #define MAX 20 void llenar (int a[MAX], int n); //función en la que se ingresan valores al arreglo void Mostrar (int a[MAX], int n); //función en la que se muestran los valores del arreglo int pide_n() // Función que retorna largo válido del arreglo int main() { int n, a[MAX]; // def. de variables n= pide_n(); llenar(a,n); cout << “ Los datos que usted ingreso son:” << endl; Mostrar(a,n); return 0; } void llenar (int a[MAX], int n) { int i; for( i=0; i < n; i ++) { cout << “ Ingrese dato” << i+1 <<“: “; cin >> a[i]; } void Mostrar (int a[MAX], int n); { int i; for( i=0; i < n; i ++) cout << a[i] << “\t”; } int pide_n() { int n; do{ cout << “Ingrese natural <= ” << MAX; cin >> n; if (n < 0 || n > MAX) cout << “No valido, intente nuevamente”; }while(n < 0 || n >MAX); return n; }