SlideShare una empresa de Scribd logo
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

02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
Juan Rodríguez
 
Visual basic.net
Visual basic.netVisual basic.net
Visual basic.net
Daybi Montoya
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
Carlos Alberto Cuervo Cardenas
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacion
ashildir
 
Arreglos en pseint Tutorial Basico
Arreglos en pseint Tutorial BasicoArreglos en pseint Tutorial Basico
Arreglos en pseint Tutorial Basico
Chobe69
 
Base de datos con Netbeans
Base de datos con NetbeansBase de datos con Netbeans
Base de datos con NetbeansRandy
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
innovalabcun
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Paquetes De Programacion
Paquetes De ProgramacionPaquetes De Programacion
Paquetes De Programaciontibu85
 
Manual de PSeInt
Manual de PSeIntManual de PSeInt
Manual de PSeInt
Cristian C
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosMario Villaseñor
 
Método por plegamiento Hash
Método por plegamiento HashMétodo por plegamiento Hash
Método por plegamiento Hash
Christopher Bonilla Noguera
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
HEIVER CUESTA
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
Johnny Paucar
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
Angel Vázquez Patiño
 
Entendiendo estructura de datos
Entendiendo estructura de datosEntendiendo estructura de datos
Entendiendo estructura de datos
yacomas
 
Funciones (subprocesos) en pseint
Funciones (subprocesos) en pseintFunciones (subprocesos) en pseint
Funciones (subprocesos) en pseint
Erick Navarro
 
Vectores y matrices
Vectores y matricesVectores y matrices
Vectores y matrices
letty20151998
 

La actualidad más candente (20)

02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
 
Visual basic.net
Visual basic.netVisual basic.net
Visual basic.net
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacion
 
Arreglos en pseint Tutorial Basico
Arreglos en pseint Tutorial BasicoArreglos en pseint Tutorial Basico
Arreglos en pseint Tutorial Basico
 
Base de datos con Netbeans
Base de datos con NetbeansBase de datos con Netbeans
Base de datos con Netbeans
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Paquetes De Programacion
Paquetes De ProgramacionPaquetes De Programacion
Paquetes De Programacion
 
Manual de PSeInt
Manual de PSeIntManual de PSeInt
Manual de PSeInt
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
Método por plegamiento Hash
Método por plegamiento HashMétodo por plegamiento Hash
Método por plegamiento Hash
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Entendiendo estructura de datos
Entendiendo estructura de datosEntendiendo estructura de datos
Entendiendo estructura de datos
 
Funciones (subprocesos) en pseint
Funciones (subprocesos) en pseintFunciones (subprocesos) en pseint
Funciones (subprocesos) en pseint
 
Vectores y matrices
Vectores y matricesVectores y matrices
Vectores y matrices
 

Similar a arreglos.ppt

Tipo de Arreglos
Tipo de ArreglosTipo de Arreglos
Tipo de Arreglos
Jesùs Osorio
 
Arreglos
ArreglosArreglos
Arreglos
Orija Zenemij
 
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.pptx
juan gonzalez
 
Arreglos
ArreglosArreglos
Arregloslichic
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
Ronny Parra
 
Daniel lugoalgoritmica
Daniel lugoalgoritmicaDaniel lugoalgoritmica
Daniel lugoalgoritmica
Danieel Ricardo
 
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
salomonaquino
 
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
 
Matrices unidimensional
Matrices unidimensionalMatrices unidimensional
Matrices unidimensional
Robert Vicente
 

Similar a arreglos.ppt (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 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
 
Matrices unidimensional
Matrices unidimensionalMatrices unidimensional
Matrices unidimensional
 

Último

Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
JhenryHuisa1
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
Arquitectura de Sistema de Reservaciones
Arquitectura de Sistema de ReservacionesArquitectura de Sistema de Reservaciones
Arquitectura de Sistema de Reservaciones
AlanL15
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
eliersin13
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
KatiuskaDominguez2
 

Último (6)

Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
Arquitectura de Sistema de Reservaciones
Arquitectura de Sistema de ReservacionesArquitectura de Sistema de Reservaciones
Arquitectura de Sistema de Reservaciones
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
 

arreglos.ppt

  • 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