Académique Documents
Professionnel Documents
Culture Documents
la Programación
Tema 3: Arreglos
6
Sumario
Arreglos. Declaración
Acceso a los elementos de un Arreglo.
Conclusiones.
7
¿Qué es un Arreglo?
Es un grupo de posiciones en memoria que
almacena bajo el mismo nombre
(identificador) una colección de datos del
mismo tipo. (Manual de la Asignatura)
ordenados.
Arreglos.
Un Arreglo es un grupo de posiciones en memoria
que almacena bajo el mismo nombre (identificador)
una colección secuencial de datos del mismo tipo.
Posiciones 1 2 3 4 5 6 7 8
Notas 2 3 4 5 4 2 3 5
Índices 0 1 2 3 4 5 6 7
Arreglo dinámico
<tipo> * <identificador>;
11
Arreglos: Reservar memoria.
Sintaxis:
<identificador> = new <tipo>[<exp_arit>];
int
Ejemplo: Creación del Arreglo notas con 30
espacios.
notas = new int[30];
12
Caso de estudio
//Programa que calcula el promedio de N notas
{
int N, suma = 0;
cin >> N;
int notas[N];
Conclusiones.
14
Acceso a los elementos de un Arreglo
Sintaxis:
<identificador>[<índice>]
exp_arit → int
15
Acceso a los elementos de un Arreglo
Sintaxis para obtener un valor:
<tipo> <ident_var> = <ident_arr>[<índice>];
Identificador Identificador
de la del arreglo
variable
Ejemplo:
int nota = notas[3];
Acceso a los elementos de un Arreglo
Sintaxis para modificar un valor:
<ident_arr>[<índice>] = <valor>;
Identificador
del arreglo
Ejemplo:
notas[3] = 5;
Sumario
Arreglos. Declaración y creación.
Acceso a los elementos de un Arreglo.
Conclusiones.
18
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
char vocales [5];
char * vocales = new char[5];
vocales ‘’ ‘’ ‘’ ‘’ ‘’
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
Ej1: char vocales [5];
Ej2: char * vocales = new char[5];
vocales[0] = ‘a’;
vocales ‘a’ ‘’ ‘’ ‘’ ‘’
20
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
Ej1: char vocales [5];
Ej2: char * vocales = new char[5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
21
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
Ej1: char vocales [5];
Ej2: char * vocales = new char[5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
vocales[2] = ‘i’;
22
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
Ej1: char vocales [5];
Ej2: char * vocales = new char[5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
vocales[2] = ‘i’;
vocales[3] = ‘o’;
23
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
Ej1: char vocales [5];
Ej2: char * vocales = new char[5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
vocales[2] = ‘i’;
vocales[3] = ‘o’;
vocales[4] = ‘u’;
24
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
Ej1: char vocales [5];
Ej2: char * vocales = new char[5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
vocales[2] = ‘i’;
vocales[3] = ‘o’;
vocales[4] = ‘u’;
vocales ‘a’ ‘e’ ‘i’ ‘o’ ‘u’
Lo anterior es equivalente a:
Ej1:char vocales[5] = {‘a’,‘e’,‘i’,‘o’,‘u’};
Ej2:
char * vocales = new char[5]{‘a’,‘e’,‘i’,‘o’,‘u’};
Caso de estudio
//Programa que calcula el promedio de N notas {
int N, nota, suma = 0;
cin >> N;
nota 3 5 4 2 2 5
0 1 2 3 4 5
Caso de estudio
//Programa que calcula la cantidad de notas por encima
del promedio. Recorrido de un arreglo.
int contador = 0;
for(int i = 0; i < N; i++) {
if(notas[i] > promedio){
contador++;
}
}
cout << "La cantidad de notas que superan el promedio
son: " << contador;
}
nota 3 5 4 2 2 5
0 1 2 3 4 5
Caso de estudio
//Programa que calcula la cantidad de notas por encima
del promedio. Recorrido de un arreglo.
int contador = 0;
for(int i = 0; i < N; i++) {
if(notas[i] > promedio){
contador++;
}
}
cout << "La cantidad de notas que superan el promedio
son: " << contador;
}
nota 3 5 4 2 2 5
0 1 2 3 4 5
Caso de estudio
//Programa que calcula la cantidad de notas por encima
del promedio. Recorrido de un arreglo.
int contador = 0;
for(int i = 0; i < N; i++) {
if(notas[i] > promedio){
contador++;
}
}
cout << "La cantidad de notas que superan el promedio
son: " << contador;
}
nota 3 5 4 2 2 5
0 1 2 3 4 5
Caso de estudio
//Programa que calcula la cantidad de notas por encima
del promedio. Recorrido de un arreglo.
int contador = 0;
for(int i = 0; i < N; i++) {
if(notas[i] > promedio){
contador++;
}
}
cout << "La cantidad de notas que superan el promedio
son: " << contador;
}
nota 3 5 4 2 2 5
0 1 2 3 4 5
Caso de estudio
//Programa que calcula la cantidad de notas por encima
del promedio. Recorrido de un arreglo.
int contador = 0;
for(int i = 0; i < N; i++) {
if(notas[i] > promedio){
contador++;
}
}
cout << "La cantidad de notas que superan el promedio
son: " << contador;
}
nota 3 5 4 2 2 5
0 1 2 3 4 5
Caso de estudio
//Programa que calcula la cantidad de notas por encima
del promedio. Recorrido de un arreglo.
int contador = 0;
for(int i = 0; i < N; i++) {
if(notas[i] > promedio){
contador++;
}
}
cout << "La cantidad de notas que superan el promedio
son: " << contador;
}
nota 3 5 4 2 2 5
0 1 2 3 4 5
Sumario
Arreglos. Declaración y creación.
Acceso a los elementos de un Arreglo.
Conclusiones.
36
Asignación de Arreglos
int primosE[] = {2, 3, 5, 7, 11, 13};
primosE 2 3 5 7 11 13
primosD 2 3 5 7 11 13
37
Asignación de Arreglos
int primosE[] = {2, 3, 5, 7, 11, 13};
primosE[3]=20; primosE 2 3 5 20 11 13
primosD[3]=20; primosD 2 3 5 20 11 13
38
Asignación de Arreglos
int primosE[] = {2, 3, 5, 7, 11, 13};
primosE[3]=20 primosE 2 3 5 20 11 13
int numerosE[];
numerosE
primosD[3]=20; primosD 2 3 5 20 11 13
int * numerosD = new int[6];
numerosD
39
Asignación de Arreglos
int primosE[] = {2, 3, 5, 7, 11, 13};
primosE[3]=20 primosE 2 3 5 20 11 13
int numerosE[];
numerosE
numerosE = primosE;
primosD[3]=20; primosD 2 3 5 20 11 13
int * numerosD = new int[6];
numerosD = primosD; numerosD
40
Asignación de Arreglos
int primosE[] = {2, 3, 5, 7, 11, 13};
primosE[3]=20 primosE 2 3 5 20 11 13
int numerosE[];
numerosE
primosD[3]=20; primosD 2 3 5 20 11 13
int * numerosD = new int[6];
numerosD = primosE; numerosD
41
Asignación de Arreglos
int primosE[] = {2, 3, 5, 7, 11, 13};
primosE[3]=20 primosE 2 3 5 20 11 13
int numerosE[];
numerosE
primosE[3]=20 primosE 2 3 5 25 11 13
int numerosE[];
numerosE
primosE 2 3 5 7 11 13
numDcopy
numEcopy
primosE 2 3 5 7 11 13
numDcopy
numEcopy
primosE 2 3 5 7 11 13
numDcopy 2
numEcopy 2
primosE 2 3 5 7 11 13
numDcopy 2 3
numEcopy 2 3
primosE 2 3 5 7 11 13
numDcopy 2 3 5 7 11 13
numEcopy 2 3 5 7 11 13
Conclusiones.
50
Algoritmos Básicos
1. Conteo y Suma
2. Búsquedas
Lineal.
De extremos (mayor/menor)
3. Ordenamiento
IP – Introducción a la Programación
Código Búsqueda lineal.
int BúsquedaLineal( int x ){
int i = 1; pos = -1;
bool encontrado = false;
while (i ≤ N && !encontrado){
if( x = notas[i]){
encontrado = true;
pos = i;
}
i = i + 1;
}
return pos;}
IP – Introducción a la Programación
Búsqueda del Mayor.
...
int mayorNota = notas[0];
int length = sizeof(notas)/sizeof(int);
for(int i = 1; i < length; i++){
if(notas[i] > mayorNota)
mayorNota = notas[i];
}
cout << mayorNota;
IP – Introducción a la Programación
Conclusiones
¿Qué hemos aprendido en la
clase de hoy?
Conclusiones
Un Arreglo se caracteriza por:
• Almacenar los elementos en posiciones de
memoria continuas.
• Tener un único nombre de variable que
representa a todos los elementos.
• Accederse a los elementos con los corchetes
[ ] y un índice que varía de 0 a la longitud.
• Acceso directo o aleatorio a los elementos.
• Ser de tamaño variable.
Estudio independiente
1. Estudiar como se pasa como parámetro un
arreglo y como se retorna en un sub-programa
(CP1)
2. Estudiar los metodos de Busqueda binaria sobre
arreglos en sus versiones iterativa y recursiva.
(CP3).
3. Estudiar los metodos de Ordenamiendo sobre
arreglos. (CP4).
Introducción a
la Programación
Tema 3: Arreglos