Sunteți pe pagina 1din 61

Introducción a

la Programación
Tema 3: Arreglos

Conf.: Arreglos unidimensionales


Personalidad
• Mark Zuckerberg.
• 14 de mayo de 1984.
• Programador, filántropo y empresario.
• Estudió en Harvard.
• Microsoft compro el 1,6 % de las acciones.
• Pelicula The Social Network (2010).
Basada en el libro Multimillonarios por
accidente.
• Robo de idea.
Recordando…
• ¿Qué es una variable?

• ¿Qué características tiene?

• ¿Para que la utilizamos?


Introducción
//Programa que calcula el promedio de N notas {
int N, nota, suma = 0;
cin >> N;

for(int i = 1; i <= N; i++) {


cout << "Entre una nota: ";
cin >> nota;
suma += nota;
}
double promedio = suma/N;
cout <<"El promedio de notas es:"<< promedio;
}

¿Qué sucede si se quiere un programa, que determine la


cantidad de notas que superan el promedio de las notas?
Objetivo

Caracterizar los arreglos unidimensionales a


partir de su definición y operaciones básicas;
así como su sintaxis y semántica en el
lenguaje C++, para la solución de problemas
que requieran de su empleo.
Bibliografía

 Colectivo de Autores. Manual de la


asignatura. Capítulo 7 y Capítulo 8.
 La Esencia de la Lógica de Programación.
Capítulo 9. pág. 195 – 206. Omar I. Trejos.
 Algoritmos de ordenación y búsqueda.
Capítulo 6, Páginas: 166-178 y 190-193

6
Sumario
 Arreglos. Declaración
 Acceso a los elementos de un Arreglo.

Ejemplo de problema resuelto.


 Inicialización de un Arreglo.
 Asignación de Arreglos. Algoritmo para copiar el

contenido de un Arreglo en otro.


 Algoritmos comunes sobre los Arreglos.

 Conclusiones.

 Orientación del estudio independiente.

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)

Es una colección finita de datos del mismo


tipo, almacenados de forma continua en la
memoria. Donde cada elemento puede ser
referenciado utilizando su posición relativa
respecto al primer elemento de dicha
colección y el nombre de la misma.
8
Diferencias
Arreglos Conjunto Vector

 Elementos de un  Elementos de  dirección (u


mismo tipo. diferentes tipos. orientación)
 Elementos que  Elementos no  módulo (o
pueden estar repetidos. longitud)
repetidos.  Elementos sin
 Elementos orden secuencial.
estructurados de
forma secuencial.
 Elementos que
pueden no estar 9

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

Identificador del Arreglo Tamaño


Valor
Posición = Índice +1
Índice = Posición - 1 Elemento
10
Arreglos: Declaración.
Sintaxis:
Arreglo estático
<tipo> <identificador>[tamaño];

Arreglo dinámico
<tipo> * <identificador>;

Ejemplos: Declaración de un Arreglo de notas


enteras.
Ej1: int notas [10];
Ej2: int * notas;

11
Caso de estudio
//Programa que calcula el promedio de N notas
{
int N, suma = 0;
cin >> N;
int notas[N];

for(int i = 1; i <= N; i++) {


IO.print("Entre una nota: ");
nota = IO.readlnInt();
suma += nota;
}
double promedio = suma*1.0/N;
IO.println("El promedio de notas es: " + promedio);
}
Sumario
 Arreglos. Declaración y creación.
 Acceso a los elementos de un Arreglo.

Ejemplo de problema resuelto.


 Inicialización de un Arreglo.
 Asignación de Arreglos. Algoritmo para copiar el

contenido de un Arreglo en otro.


 Algoritmos comunes sobre los Arreglos.

 Conclusiones.

 Orientación del estudio independiente.

13
Acceso a los elementos de un Arreglo
Sintaxis:
<identificador>[<índice>]

exp_arit → int

Los índices estarán en el rango 0..n-1 y las


posiciones de 1..n, donde n es la longitud o tamaño
del Arreglo.

14
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

Este tiene que ser compatible


con el tipo de lo que almacena
el arreglo

Ejemplo:
int nota = notas[3];
Acceso a los elementos de un Arreglo
Sintaxis para modificar un valor:
<ident_arr>[<índice>] = <valor>;

Identificador
del arreglo

Este tiene que ser


compatible con el tipo de
lo que almacena el arreglo

Ejemplo:
notas[3] = 5;
Sumario
 Arreglos. Declaración y creación.
 Acceso a los elementos de un Arreglo.

Ejemplo de problema resuelto.


 Inicialización de un Arreglo.
 Asignación de Arreglos. Algoritmo para copiar el

contenido de un Arreglo en otro.


 Algoritmos comunes sobre los Arreglos.

 Conclusiones.

 Orientación del estudio independiente.

17
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
char vocales [5];

vocales ‘’ ‘’ ‘’ ‘’ ‘’
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
char vocales [5];
vocales[0] = ‘a’;

vocales ‘a’ ‘’ ‘’ ‘’ ‘’

19
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
char vocales [5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;

vocales ‘a’ ‘e’ ‘’ ‘’ ‘’

20
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
char vocales [5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
vocales[2] = ‘i’;

vocales ‘a’ ‘e’ ‘i’ ‘’ ‘’

21
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
char vocales [5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
vocales[2] = ‘i’;
vocales[3] = ‘o’;

vocales ‘a’ ‘e’ ‘i’ ‘o’ ‘’

22
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
char vocales [5];
vocales[0] = ‘a’;
vocales[1] = ‘e’;
vocales[2] = ‘i’;
vocales[3] = ‘o’;
vocales[4] = ‘u’;

vocales ‘a’ ‘e’ ‘i’ ‘o’ ‘u’

23
Inicialización de un Arreglo
Si creamos el siguiente Arreglo:
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:
char vocales[] = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’};
Caso de estudio
//Programa que calcula el promedio de N notas {
int N, nota, suma = 0;
cin >> N;

for(int i = 0; i < N; i++) {


cout << "Entre una nota: ";
cin >> nota;
suma += nota;
}
double promedio = suma/N;
cout << "El promedio es: " << promedio;
}

¿Qué sucede si se quiere un programa, que


determine la cantidad de notas que superan el
promedio de las notas?
Caso de estudio
//Programa que calcula el promedio de N notas{
int N, suma = 0; int N, nota, suma = 0;
cin >> N ; cin >> N ;
int notas[N];

for(int i = 0; i < N; i++) {


cout << "Entre una nota:";
cin >> notas[i]; cin >> nota;
suma += notas[i]; suma += nota;
}
double promedio = (double) suma/N;
cout << "El promedio es: " << promedio;
… Continúa …
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;
}
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;
}

promedio 3.5 contador 0 N 6

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;
}

promedio 3.5 contador 0 N 6

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;
}

promedio 3.5 contador 1 N 6

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;
}

promedio 3.5 contador 2 N 6

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;
}

promedio 3.5 contador 2 N 6

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;
}

promedio 3.5 contador 2 N 6

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;
}

promedio 3.5 contador 3 N 6

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.

Ejemplo de problema resuelto.


 Inicialización de un Arreglo.
 Asignación de Arreglos. Algoritmo para copiar el

contenido de un Arreglo en otro.


 Algoritmos comunes sobre los Arreglos.

 Conclusiones.

 Orientación del estudio independiente.

35
Asignación de Arreglos
int primos[] = {2, 3, 5, 7, 11, 13};

primos 2 3 5 7 11 13

36
Asignación de Arreglos
int primos[] = {2, 3, 5, 7, 11, 13};

primos[3]=20 primos 2 3 5 20 11 13

37
Asignación de Arreglos
int primos[] = {2, 3, 5, 7, 11, 13};

primos[3]=20 primos 2 3 5 20 11 13
int numeros[];
numeros

38
Asignación de Arreglos
int primos[] = {2, 3, 5, 7, 11, 13};

primos[3]=20 primos 2 3 5 20 11 13
int numeros[];
numeros
numeros = primos;

39
Asignación de Arreglos
int primos[] = {2, 3, 5, 7, 11, 13};

primos[3]=20 primos 2 3 5 25 11 13
int[] numeros;
numeros
numeros = primos;
numeros[3] = 25;

40
Asignación de Arreglos
int primos[] = {2, 3, 5, 7, 11, 13};

primos[3]=20 primos 2 3 5 25 11 13
int[] numeros;
numeros
numeros = primos;
numeros[3] = 25;

A los elementos del


Arreglo primos se puede
acceder también mediante
el identificador numeros.
41
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};

primos 2 3 5 7 11 13

42
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

primos 2 3 5 7 11 13

numeros

43
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros

44
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros 2

45
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros 2 3

46
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros 2 3 5

47
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros 2 3 5 7

48
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros 2 3 5 7 11

49
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros 2 3 5 7 11 13

50
Copia de un Arreglo en otro
int primos[] = {2, 3, 5, 7, 11, 13};
int[] numeros = new int[6];

for(int i = 0; i < 6; i++)


numeros[i] = primos[i];

primos 2 3 5 7 11 13

numeros 2 3 5 7 11 13

51
Sumario
 Arreglos. Declaración y creación.
 Acceso a los elementos de un Arreglo.

Ejemplo de problema resuelto.


 Inicialización de un Arreglo.
 Asignación de Arreglos. Algoritmo para copiar el

contenido de un Arreglo en otro.


 Algoritmos comunes sobre los Arreglos

 Conclusiones.

 Orientación del estudio independiente.

52
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];


for(int i = 1; i < notas.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 hasta este
momento?
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 length-1.
• Acceso directo o aleatorio a los elementos.
• Ser de tamaño variable.
Conclusiones
¿Qué hemos aprendido en la
clase de hoy?
Estudio independiente
Desarrollar los ejercicios de la Guía de ejercicios
de arreglos unidimensionales del 1 al 8 para la
próxima clase práctica.

1. Leer en el Manual de la Asignatura, sección 7.5,


• Paso de parámetros que son arreglos.

2. Leer en el Manual de la Asignatura, sección 7.6,


• Algoritmos comunes sobre los arreglos.
Estudio independiente
Desarrollar un programa que dado un arreglo Arr de
N elementos enteros realice las siguientes acciones:

a)Determinar la cantidad de ceros en el arreglo.


b)Determinar la cantidad de elementos negativos y
positivos.
c)Invierta el signo a cada elemento del arreglo.
d)Calcule la diferencia entre la suma de los
elementos en posiciones pares y la suma de los
elementos en posiciones impares.
Introducción a
la Programación
Tema 3: Arreglos

Conf.: Arreglos unidimensionales

S-ar putea să vă placă și