SlideShare una empresa de Scribd logo
1 de 26
Introducción a la Algoritmia
I N T R O D U C C I Ó N A L O S A R R E G L O S
Profesor: MSc. José Luis Alonso
Correo: jl.alonso@ce.pucmm.edu.do
Objetivos de la clase
 Definición y construcción de arreglos
unidimensionales.
 Operaciones básicas sobre arreglos
unidimensionales.
 Recorrido de un arreglo.
 Inserción al principio, en determinada posición o al final.
 Eliminar un elemento del arreglo.
Arreglos en una dimensión
Arreglos
 El arreglo es un tipo de dato estructurado formado por un
conjunto de elementos de un mismo tipo de datos.
 En las unidades anteriores trabajamos con tipos de datos enteros,
flotantes, char, etc., los cuales son considerados como datos de
tipo simple ya que existe una relación de uno a uno entre la
variable y el número de elementos (valores) que es capaz de
almacenar.
 En cambio un dato de tipo estructurado como el arreglo, puede
almacenar a más de un elemento (valor) a la vez, con la condición
de que todos los elementos deben ser del mismo tipo de dato, es
decir, que se puede tener un arreglo de datos enteros, flotantes,
etc.
 Los arreglos se clasifican de acuerdo con el número de
dimensiones que tienen. Así, se tienen los arreglos
unidimensionales (una dimensión), los bidimensionales (dos
dimensiones) y los multidimensionales ( de más de dos
dimensiones ), etc.
Definición de arreglo
 Un arreglo se define como una colección finita, homogénea y
ordenada de elementos:
Finita.- todo arreglo tiene un limite, es decir se sabe determinar
cuál será el número máximo de elementos que podrán formar
parte del arreglo.
Arreglos en una dimensión
Homogénea.- todos los elementos de un arreglo son del mismo
tipo.
Ordenada.- se puede determinar cuál será el primer elemento, el
segundo, el tercero, … , y el n-ésimo elemento.
 Un arreglo puede representarse gráficamente como se muestra a
continuación:
Arreglos en una dimensión
Arreglo
Primer elemento Segundo elemento N-ésimo elemento
Jamás olvidar
que un arreglo
tiene un tipo
NO EXISTEN ARREGLOS “MEZCLADOS”
int, float,char
 Al declarar una variable cualquiera siempre indicamos: tipo y nombre. Por ejemplo: int a;
 Para declarar un arreglo, se debe indicar
 Tipo
 Nombre y
 Tamaño
 Un arreglo de 10 elementos enteros, se declara:
 int ArregloEnteros[10];
 Y lo podemos visualizar:
 Cada elemento del grupo va a estar identificado por un valor numérico, llamado índice.
 En C el primer elemento de un arreglo tiene el índice 0.
 Siempre, para indicar el tamaño de un arreglo, se utilizara una constante, jamás una variable.
Declaración de Arreglos
0 1 2 3 4 5 6 7 8 9
ArregloEnteros
Jamás olvidar,
el tamaño de
un arreglo es
una constante
Operaciones sobre arreglos
Las operaciones que se pueden realizar con vectores o arreglos
durante el proceso de resolución de un problema usando la
programación son:
1. Recorrido (acceso secuencial)
2. Lectura/escritura
3. Asignación
4. Actualización (añadir, borrar insertar)
5. Ordenación
6. Búsqueda
1- Recorrido (acceso secuencial)
 Se puede acceder a cada elemento de un vector para introducir
datos (leer) en él o bien para visualizar su contenido (escribir).
 A la operación de efectuar una acción general sobre todos los
elementos de un vector se le denomina recorrido del vector.
 Estas operaciones se realizan utilizando estructuras repetitivas,
cuyas variables de control (por ejemplo i) se utilizan como
subíndices del vector (por ejemplo S[i]).
 El incremento del contador del bucle producirá el tratamiento
sucesivo de los elementos del vector.
1- Recorrido (acceso secuencial)
 Normalmente se utiliza la estructura de repetición desde, ya que
se conoce de antemano la cantidad de veces que se desea repetir el
bucle:
desde i  1 hasta n hacer
escribir(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’)
leer(F[i])
fin_desde
 También se pueden utilizar las estructuras de repetición mientras
y repetir:
i  1
mientras i <= 20 hacer
escribir(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’)
leer(F[i])
i  i + 1
fin_mientras
for(i = 0; i < 10; i++)
{
arregloEntero[ i ] = 0;
}
//-------------------------------//
for(i = 0; i < 10; i++)
{
scanf(“%d”,&a);
arregloEnteros[i] = a;
}
//----------------------------//
for(i = 0; i < 10; i++)
{
printf(“Elemento %d:%dn”, i, ArregloEnteros[i]);
}
2- Lectura/escritura
 La lectura/escritura de datos en arreglos normalmente
se realiza con estructuras repetitivas (usando un
recorrido secuencial).
 Las instrucciones simples de lectura/escritura se
representarán como:
 leer(A[5]) lectura del elemento 5 del vector A
 escribir(A[8]) escribir el elemento 8 del vector A
 Generalmente se desea leer o escribir el vector completo,
para lo cual se debe hacer un recorrido del vector:
desde i1 hasta n hacer
escribir(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’)
leer(F[i])
fin_desde
2- Lectura/escritura
 Para escribir el vector nombres:
desde i1 hasta n hacer
escribir(nombres[i])
fin_desde
 Para facilitar futuras operaciones con el vector, se
recomienda inicializar el vector antes de operar con
él. Puede usarse cualquier valor que respete el tipo
de dato del vector:
desde i  1 hasta n hacer
nombre[i]  ‘*’
fin_desde
3- Asignación
 La asignación de valores a un elemento del vector se
realizará con la instrucción de asignación:
 A[29]  5 asigna el valor 5 al elemento 20 del vector A
 Suma  A[1] + A[3]
 A[3]  A[3] + 10.8
 A[1]  A[4] + A[5]
 Si se desea asignar valores a todos los elementos de un
vector, se debe recurrir a estructuras repetitivas e
incluso selectivas.
 Ejemplo: si se desea dar el mismo valor a todos los
elementos del vector A de tipo entero:
desde i  1 hasta 5 hacer
A[i]  8
fin_desde
4- Actualización
 La operación de actualización de un vector consta a su
vez de tres operaciones más elementales:
 Añadir elementos:
 Insertar elementos
 Borrar elementos
4- Actualización: Añadir elementos
Añadir elementos: es la operación de agregar un nuevo elemento
al final del vector. La única condición necesaria para esta operación
consistirá en la comprobación de espacio de memoria suficiente
para el nuevo elemento, dicho de otra manera, que el vector no
contenga todos los elementos con que fue definido.
Ejemplo: se tiene un vector de edades definido para 7 elementos,
pero ya tiene almacenado 5 elementos EDADES(1), EDADES(2),
EDADES(3), EDADES(4) y EDADES(5). Se podrán añadir dos
elementos más al final del vector con una simple operación de
asignación:
 EDADES(6)  23
 EDADES(7)  20
(Si conoce los espacio del vector que están libres.)
4- Actualización: Añadir elementos
Si no se sabe si el vector tiene espacios disponibles, primero debe
determinarse esto antes de intentar añadir elementos al vector:
desde i  1 hasta n hacer
si (edades[i]=-1) entonces
escribir(‘Introduzca una edad:’)
leer(edades[i])
si_no
cont  cont + 1
fin_si
si (cont=n) entonces
escribir(‘El vector no tiene espacio para añadir más elementos’)
fin_si
fin_desde
4- Actualización: Añadir elementos
Si no se sabe si el vector tiene espacios disponibles, primero debe
determinarse esto antes de intentar añadir elementos al vector:
desde i  1 hasta n hacer
si (edades[i]=-1) entonces
escribir(‘Introduzca una edad:’)
leer(edades[i])
si_no
cont  cont + 1
fin_si
si (cont=n) entonces
escribir(‘El vector no tiene espacio para añadir más elementos’)
fin_si
fin_desde
4- Actualización: Insertar elementos
Insertar elementos: consiste en introducir un elemento en el interior
de un vector ordenado. En este caso se necesita un desplazamiento
previo hacia abajo para colocar el nuevo elemento en su posición
relativa.
Ejemplo: se tiene un vector de 8 elementos que contiene nombres
ordenados alfabéticamente y se desea insertar dos nuevos nombres:
Fernando y Luis.
4- Actualización: Insertar elementos
Como Fernando está entre Carlos y Gerardo se deben desplazar hacia
abajo los elementos 3, 4 y 5 que pasarán a ocupar las posiciones
relativas 4, 5 y 6.
Posteriormente debe realizarse la misma operación con el nombre
Luis que ocupará la posición 6.
4- Actualización: Insertar elementos
El algoritmo que realiza esta operación para un vector de n elementos
es el siguiente, suponiendo que hay espacio suficiente en el vector:
algoritmo insertar_elemento
Const
n=500
Tipo
array [1 .. n] de cadena[50]: vector
var
vector: NOMBRES
cadena[50]:nuevo
entero: Pos, ocupada, cont
inicio
leer(nuevo)
desde i  1 hasta n hacer
si (NOMBRES[i]<nuevo) entonces
cont  cont + 1
fin_si
fin_desde
Pos  cont + 1
desde i  1 hasta n hacer
si (NOMBRES[i]<>’vacio’) entonces
ocupada  ocupada + 1
si_no
cont  cont + 1
fin_si
fin_desde
si (cont=n) entonces
escribir(‘No se pueden añadir elementos’)
si_no
i ocupada
mientras (i >= Pos) hacer
NOMBRES[i+1]  NOMBRES[i]
i  i - 1
fin_mientras
NOMBRES[Pos]  nuevo
ocupada  ocupada + 1
fin_si
fin
4- Actualización: Borrar elementos
Borrar elementos: la operación de borrar el último elemento de un
vector no representa ningún problema.
El borrado de un elemento del interior del vector provoca el
movimiento hacia arriba de los elementos inferiores a él para
reorganizar el vector.
4- Actualización: Borrar elementos
Si desea borrar elemento 3 (Gerardo), debe desplazar hacia arriba los
elementos de las posiciones 4 (Lorena) y 5 (Marcos).
4- Actualización: Borrar elementos
Ejemplo: en el vector del ejemplo anterior NOMBRES, borrar el
elemento que el usuario desee.
algoritmo borrar_elemento
const
N=500
tipo
array [1 .. N] de cadena[50]: vector
var
vector: NOMBRES
entero: j,ocupada
cadena[50]: nom
Inicio
escribir(‘Introduzca el nombre a borrar:’)
leer(nom)
4- Actualización: Borrar elementos
Ejemplo: en el vector del ejemplo
anterior NOMBRES, borrar el
elemento que el usuario desee.
algoritmo borrar_elemento
const
N=500
tipo
array [1 .. N] de cadena[50]:
vector
var
vector: NOMBRES
entero: j,ocupada
cadena[50]: nom
Inicio
escribir(‘Introduzca el nombre
a borrar:’)
leer(nom)
desde i  1 hasta N hacer
si (NOMBRES[i]=nom)entonces
j  i
fin_si
fin_desde
desde i=j hasta N hacer
NOMBRES[i]  NOMBRES[i+1]
fin_desde
ocupada  ocupada -1
fin
¿Cómo calcular el tamaño de un arreglo?
Operador sizeof
 Un char ocupa un byte.
 ¿Cuantos bytes ocupa un entero?, ¿un real?, ¿una cadena?
 Depende de cada máquina
Podemos averiguarlo usando el operador sizeof.sizeof(int)
devuelve el número de bytes que necesita un dato de tipo int.
 CUIDADO: sizeof es un operador, no una función.
¿Cómo calcular el tamaño de un arreglo?
1000
1008
1016
1024
1032
Arreglo[0]
Arreglo[1]
Arreglo[2]
Arreglo[3]
Arreglo[4]
 Si inicializamos una arreglo
sin indicar su tamaño…
¿Cómo podemos saber
el tamaño, para futuros
usos en el programa?
sizeof(Arreglo) devuelve 32
sizeof(Arreglo[0]) devuelve el desfase: 8
sizeof(Arreglo)/sizeof(Arreglo[0])
devuelve 4, justo el número de elementos
del arreglo.
Introducción a la Algoritmia
I N T R O D U C C I Ó N A L O S A R R E G L O S
Profesor: MSc. José Luis Alonso
Correo: jl.alonso@ce.pucmm.edu.do

Más contenido relacionado

La actualidad más candente

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)Fuerza Auriazul
 
Java Mapa mental
Java Mapa mentalJava Mapa mental
Java Mapa mentalmarimallol
 
Busquedas binarias y secuenciales
Busquedas binarias y secuencialesBusquedas binarias y secuenciales
Busquedas binarias y secuencialesLuis Igoodbad
 
Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)Javier Alvarez
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Simeon Bordones
 
Sintaxis funciones c++
Sintaxis funciones c++Sintaxis funciones c++
Sintaxis funciones c++Fabiola Cortes
 
Variables y Constantes en C++
Variables y Constantes en C++Variables y Constantes en C++
Variables y Constantes en C++ivanjvic
 
Impacto social, económico y cultural del las telecomunicaciones
Impacto social, económico y cultural del las telecomunicacionesImpacto social, económico y cultural del las telecomunicaciones
Impacto social, económico y cultural del las telecomunicacionesSandy Ortega
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 

La actualidad más candente (20)

BASES DE DATOS
BASES DE DATOSBASES DE DATOS
BASES DE DATOS
 
Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Tutorial PSEINT
Tutorial PSEINT Tutorial PSEINT
Tutorial PSEINT
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Java Mapa mental
Java Mapa mentalJava Mapa mental
Java Mapa mental
 
Busquedas binarias y secuenciales
Busquedas binarias y secuencialesBusquedas binarias y secuenciales
Busquedas binarias y secuenciales
 
Integridad de base de datos
Integridad de base de datosIntegridad de base de datos
Integridad de base de datos
 
Manual pseint
Manual pseintManual pseint
Manual pseint
 
Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)Introduccion a la administracion de los procesos y el procesador (S.O)
Introduccion a la administracion de los procesos y el procesador (S.O)
 
LENGUAJE TRANSACT SQL
LENGUAJE TRANSACT SQLLENGUAJE TRANSACT SQL
LENGUAJE TRANSACT SQL
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos
 
Sintaxis funciones c++
Sintaxis funciones c++Sintaxis funciones c++
Sintaxis funciones c++
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Variables y Constantes en C++
Variables y Constantes en C++Variables y Constantes en C++
Variables y Constantes en C++
 
Impacto social, económico y cultural del las telecomunicaciones
Impacto social, económico y cultural del las telecomunicacionesImpacto social, económico y cultural del las telecomunicaciones
Impacto social, económico y cultural del las telecomunicaciones
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 

Similar a Introducción a los arreglos unidimensionales

Semana 4 arreglos simples (1)
Semana 4   arreglos simples (1)Semana 4   arreglos simples (1)
Semana 4 arreglos simples (1)Julie Suazo
 
Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimensionyperalta
 
Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimensionyperalta
 
Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)jairml
 
Vectores en power point [recuperado]
Vectores en power point [recuperado]Vectores en power point [recuperado]
Vectores en power point [recuperado]herminiajimenez123
 
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptxOBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptxjuan gonzalez
 
Arreglos
ArreglosArreglos
Arregloslichic
 
Clase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y ArreglosClase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y Arreglossalomonaquino
 
Utp pti_s5_arreglos
 Utp pti_s5_arreglos Utp pti_s5_arreglos
Utp pti_s5_arreglosjcbenitezp
 
Utp pti_s5_arreglos 2012-2
 Utp pti_s5_arreglos 2012-2 Utp pti_s5_arreglos 2012-2
Utp pti_s5_arreglos 2012-2jcbenitezp
 

Similar a Introducción a los arreglos unidimensionales (20)

Tipo de Arreglos
Tipo de ArreglosTipo de Arreglos
Tipo de Arreglos
 
Arreglos
ArreglosArreglos
Arreglos
 
Unidad5
Unidad5Unidad5
Unidad5
 
Semana 4 arreglos simples (1)
Semana 4   arreglos simples (1)Semana 4   arreglos simples (1)
Semana 4 arreglos simples (1)
 
Array
Array Array
Array
 
Trabajo en grupo
Trabajo en grupo Trabajo en grupo
Trabajo en grupo
 
Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimension
 
Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimension
 
Uso vectores
Uso vectoresUso vectores
Uso vectores
 
71
7171
71
 
Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)
 
Vectores y matrices
Vectores y matricesVectores y matrices
Vectores y matrices
 
Vectores en power point [recuperado]
Vectores en power point [recuperado]Vectores en power point [recuperado]
Vectores en power point [recuperado]
 
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptxOBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
Daniel lugoalgoritmica
Daniel lugoalgoritmicaDaniel lugoalgoritmica
Daniel lugoalgoritmica
 
Clase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y ArreglosClase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y Arreglos
 
Utp pti_s5_arreglos
 Utp pti_s5_arreglos Utp pti_s5_arreglos
Utp pti_s5_arreglos
 
Utp pti_s5_arreglos 2012-2
 Utp pti_s5_arreglos 2012-2 Utp pti_s5_arreglos 2012-2
Utp pti_s5_arreglos 2012-2
 

Introducción a los arreglos unidimensionales

  • 1. Introducción a la Algoritmia I N T R O D U C C I Ó N A L O S A R R E G L O S Profesor: MSc. José Luis Alonso Correo: jl.alonso@ce.pucmm.edu.do
  • 2. Objetivos de la clase  Definición y construcción de arreglos unidimensionales.  Operaciones básicas sobre arreglos unidimensionales.  Recorrido de un arreglo.  Inserción al principio, en determinada posición o al final.  Eliminar un elemento del arreglo.
  • 3. Arreglos en una dimensión Arreglos  El arreglo es un tipo de dato estructurado formado por un conjunto de elementos de un mismo tipo de datos.  En las unidades anteriores trabajamos con tipos de datos enteros, flotantes, char, etc., los cuales son considerados como datos de tipo simple ya que existe una relación de uno a uno entre la variable y el número de elementos (valores) que es capaz de almacenar.  En cambio un dato de tipo estructurado como el arreglo, puede almacenar a más de un elemento (valor) a la vez, con la condición de que todos los elementos deben ser del mismo tipo de dato, es decir, que se puede tener un arreglo de datos enteros, flotantes, etc.
  • 4.  Los arreglos se clasifican de acuerdo con el número de dimensiones que tienen. Así, se tienen los arreglos unidimensionales (una dimensión), los bidimensionales (dos dimensiones) y los multidimensionales ( de más de dos dimensiones ), etc. Definición de arreglo  Un arreglo se define como una colección finita, homogénea y ordenada de elementos: Finita.- todo arreglo tiene un limite, es decir se sabe determinar cuál será el número máximo de elementos que podrán formar parte del arreglo. Arreglos en una dimensión
  • 5. Homogénea.- todos los elementos de un arreglo son del mismo tipo. Ordenada.- se puede determinar cuál será el primer elemento, el segundo, el tercero, … , y el n-ésimo elemento.  Un arreglo puede representarse gráficamente como se muestra a continuación: Arreglos en una dimensión Arreglo Primer elemento Segundo elemento N-ésimo elemento Jamás olvidar que un arreglo tiene un tipo NO EXISTEN ARREGLOS “MEZCLADOS” int, float,char
  • 6.  Al declarar una variable cualquiera siempre indicamos: tipo y nombre. Por ejemplo: int a;  Para declarar un arreglo, se debe indicar  Tipo  Nombre y  Tamaño  Un arreglo de 10 elementos enteros, se declara:  int ArregloEnteros[10];  Y lo podemos visualizar:  Cada elemento del grupo va a estar identificado por un valor numérico, llamado índice.  En C el primer elemento de un arreglo tiene el índice 0.  Siempre, para indicar el tamaño de un arreglo, se utilizara una constante, jamás una variable. Declaración de Arreglos 0 1 2 3 4 5 6 7 8 9 ArregloEnteros Jamás olvidar, el tamaño de un arreglo es una constante
  • 7. Operaciones sobre arreglos Las operaciones que se pueden realizar con vectores o arreglos durante el proceso de resolución de un problema usando la programación son: 1. Recorrido (acceso secuencial) 2. Lectura/escritura 3. Asignación 4. Actualización (añadir, borrar insertar) 5. Ordenación 6. Búsqueda
  • 8. 1- Recorrido (acceso secuencial)  Se puede acceder a cada elemento de un vector para introducir datos (leer) en él o bien para visualizar su contenido (escribir).  A la operación de efectuar una acción general sobre todos los elementos de un vector se le denomina recorrido del vector.  Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por ejemplo i) se utilizan como subíndices del vector (por ejemplo S[i]).  El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos del vector.
  • 9. 1- Recorrido (acceso secuencial)  Normalmente se utiliza la estructura de repetición desde, ya que se conoce de antemano la cantidad de veces que se desea repetir el bucle: desde i  1 hasta n hacer escribir(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’) leer(F[i]) fin_desde  También se pueden utilizar las estructuras de repetición mientras y repetir: i  1 mientras i <= 20 hacer escribir(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’) leer(F[i]) i  i + 1 fin_mientras for(i = 0; i < 10; i++) { arregloEntero[ i ] = 0; } //-------------------------------// for(i = 0; i < 10; i++) { scanf(“%d”,&a); arregloEnteros[i] = a; } //----------------------------// for(i = 0; i < 10; i++) { printf(“Elemento %d:%dn”, i, ArregloEnteros[i]); }
  • 10. 2- Lectura/escritura  La lectura/escritura de datos en arreglos normalmente se realiza con estructuras repetitivas (usando un recorrido secuencial).  Las instrucciones simples de lectura/escritura se representarán como:  leer(A[5]) lectura del elemento 5 del vector A  escribir(A[8]) escribir el elemento 8 del vector A  Generalmente se desea leer o escribir el vector completo, para lo cual se debe hacer un recorrido del vector: desde i1 hasta n hacer escribir(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’) leer(F[i]) fin_desde
  • 11. 2- Lectura/escritura  Para escribir el vector nombres: desde i1 hasta n hacer escribir(nombres[i]) fin_desde  Para facilitar futuras operaciones con el vector, se recomienda inicializar el vector antes de operar con él. Puede usarse cualquier valor que respete el tipo de dato del vector: desde i  1 hasta n hacer nombre[i]  ‘*’ fin_desde
  • 12. 3- Asignación  La asignación de valores a un elemento del vector se realizará con la instrucción de asignación:  A[29]  5 asigna el valor 5 al elemento 20 del vector A  Suma  A[1] + A[3]  A[3]  A[3] + 10.8  A[1]  A[4] + A[5]  Si se desea asignar valores a todos los elementos de un vector, se debe recurrir a estructuras repetitivas e incluso selectivas.  Ejemplo: si se desea dar el mismo valor a todos los elementos del vector A de tipo entero: desde i  1 hasta 5 hacer A[i]  8 fin_desde
  • 13. 4- Actualización  La operación de actualización de un vector consta a su vez de tres operaciones más elementales:  Añadir elementos:  Insertar elementos  Borrar elementos
  • 14. 4- Actualización: Añadir elementos Añadir elementos: es la operación de agregar un nuevo elemento al final del vector. La única condición necesaria para esta operación consistirá en la comprobación de espacio de memoria suficiente para el nuevo elemento, dicho de otra manera, que el vector no contenga todos los elementos con que fue definido. Ejemplo: se tiene un vector de edades definido para 7 elementos, pero ya tiene almacenado 5 elementos EDADES(1), EDADES(2), EDADES(3), EDADES(4) y EDADES(5). Se podrán añadir dos elementos más al final del vector con una simple operación de asignación:  EDADES(6)  23  EDADES(7)  20 (Si conoce los espacio del vector que están libres.)
  • 15. 4- Actualización: Añadir elementos Si no se sabe si el vector tiene espacios disponibles, primero debe determinarse esto antes de intentar añadir elementos al vector: desde i  1 hasta n hacer si (edades[i]=-1) entonces escribir(‘Introduzca una edad:’) leer(edades[i]) si_no cont  cont + 1 fin_si si (cont=n) entonces escribir(‘El vector no tiene espacio para añadir más elementos’) fin_si fin_desde
  • 16. 4- Actualización: Añadir elementos Si no se sabe si el vector tiene espacios disponibles, primero debe determinarse esto antes de intentar añadir elementos al vector: desde i  1 hasta n hacer si (edades[i]=-1) entonces escribir(‘Introduzca una edad:’) leer(edades[i]) si_no cont  cont + 1 fin_si si (cont=n) entonces escribir(‘El vector no tiene espacio para añadir más elementos’) fin_si fin_desde
  • 17. 4- Actualización: Insertar elementos Insertar elementos: consiste en introducir un elemento en el interior de un vector ordenado. En este caso se necesita un desplazamiento previo hacia abajo para colocar el nuevo elemento en su posición relativa. Ejemplo: se tiene un vector de 8 elementos que contiene nombres ordenados alfabéticamente y se desea insertar dos nuevos nombres: Fernando y Luis.
  • 18. 4- Actualización: Insertar elementos Como Fernando está entre Carlos y Gerardo se deben desplazar hacia abajo los elementos 3, 4 y 5 que pasarán a ocupar las posiciones relativas 4, 5 y 6. Posteriormente debe realizarse la misma operación con el nombre Luis que ocupará la posición 6.
  • 19. 4- Actualización: Insertar elementos El algoritmo que realiza esta operación para un vector de n elementos es el siguiente, suponiendo que hay espacio suficiente en el vector: algoritmo insertar_elemento Const n=500 Tipo array [1 .. n] de cadena[50]: vector var vector: NOMBRES cadena[50]:nuevo entero: Pos, ocupada, cont inicio leer(nuevo) desde i  1 hasta n hacer si (NOMBRES[i]<nuevo) entonces cont  cont + 1 fin_si fin_desde Pos  cont + 1 desde i  1 hasta n hacer si (NOMBRES[i]<>’vacio’) entonces ocupada  ocupada + 1 si_no cont  cont + 1 fin_si fin_desde si (cont=n) entonces escribir(‘No se pueden añadir elementos’) si_no i ocupada mientras (i >= Pos) hacer NOMBRES[i+1]  NOMBRES[i] i  i - 1 fin_mientras NOMBRES[Pos]  nuevo ocupada  ocupada + 1 fin_si fin
  • 20. 4- Actualización: Borrar elementos Borrar elementos: la operación de borrar el último elemento de un vector no representa ningún problema. El borrado de un elemento del interior del vector provoca el movimiento hacia arriba de los elementos inferiores a él para reorganizar el vector.
  • 21. 4- Actualización: Borrar elementos Si desea borrar elemento 3 (Gerardo), debe desplazar hacia arriba los elementos de las posiciones 4 (Lorena) y 5 (Marcos).
  • 22. 4- Actualización: Borrar elementos Ejemplo: en el vector del ejemplo anterior NOMBRES, borrar el elemento que el usuario desee. algoritmo borrar_elemento const N=500 tipo array [1 .. N] de cadena[50]: vector var vector: NOMBRES entero: j,ocupada cadena[50]: nom Inicio escribir(‘Introduzca el nombre a borrar:’) leer(nom)
  • 23. 4- Actualización: Borrar elementos Ejemplo: en el vector del ejemplo anterior NOMBRES, borrar el elemento que el usuario desee. algoritmo borrar_elemento const N=500 tipo array [1 .. N] de cadena[50]: vector var vector: NOMBRES entero: j,ocupada cadena[50]: nom Inicio escribir(‘Introduzca el nombre a borrar:’) leer(nom) desde i  1 hasta N hacer si (NOMBRES[i]=nom)entonces j  i fin_si fin_desde desde i=j hasta N hacer NOMBRES[i]  NOMBRES[i+1] fin_desde ocupada  ocupada -1 fin
  • 24. ¿Cómo calcular el tamaño de un arreglo? Operador sizeof  Un char ocupa un byte.  ¿Cuantos bytes ocupa un entero?, ¿un real?, ¿una cadena?  Depende de cada máquina Podemos averiguarlo usando el operador sizeof.sizeof(int) devuelve el número de bytes que necesita un dato de tipo int.  CUIDADO: sizeof es un operador, no una función.
  • 25. ¿Cómo calcular el tamaño de un arreglo? 1000 1008 1016 1024 1032 Arreglo[0] Arreglo[1] Arreglo[2] Arreglo[3] Arreglo[4]  Si inicializamos una arreglo sin indicar su tamaño… ¿Cómo podemos saber el tamaño, para futuros usos en el programa? sizeof(Arreglo) devuelve 32 sizeof(Arreglo[0]) devuelve el desfase: 8 sizeof(Arreglo)/sizeof(Arreglo[0]) devuelve 4, justo el número de elementos del arreglo.
  • 26. Introducción a la Algoritmia I N T R O D U C C I Ó N A L O S A R R E G L O S Profesor: MSc. José Luis Alonso Correo: jl.alonso@ce.pucmm.edu.do