Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Info1 Notas de Clase 4
Info1 Notas de Clase 4
Estructuras de datos
ESTRUCTURA DE DATOS: Una estructura de datos es un conjunto de datos agrupados bajo un mismo nombre que
pueden ser caracterizados por su organización y por las operaciones que sobre ellos se definen.
Entero
Datos simples Estáticos Real
Carácter
Lógico
Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en la memoria se define antes de
que el programa se ejecute y no puede ser modificado durante la ejecución del programa.
Las estructuras de datos dinámicas son aquellas en las que el tamaño podrá modificarse durante la ejecución
del programa; teóricamente no hay límites a su tamaño, salvo el que impone la memoria disponible en la
computadora.
Página 1 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Sus elementos se identifican a través de un índice. También se denominan “vectores” por su similitud con los
vectores matemáticos, si son arreglos que sólo presentan una dimensión.
Por ejemplo: tenemos el conjunto de notas obtenidas por los alumnos durante un parcial.
Cada nota individual es guardada en un elemento Nota(i), donde “Nota” indica el nombre del arreglo y el índice i
significa a qué valor en particular nos estamos refiriendo.
Nota(1)
Nota(2)
Arreglo: Nota Elementos: ....
....
Nota(i)
....
Nota(50)
Página 2 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
MEMORIA
Página 3 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Operaciones
Consideremos el siguiente vector
Página 4 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
También se puede utilizar una estructura de repetición para asignar valores a varios o a todos los elementos de
un arreglo
Ejemplos:
Página 5 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Declaración
Algoritmo leer_vector1
Variables
Entero : F(20)
Entero : i
Inicio
Repetir Para i 1 , 20 Ejemplo: Lectura de 20 valores enteros. Acumular los
Leer (F(i)) datos en un arreglo de 20 elementos de nombre F.
Fin para
…….
Fin
Algoritmo leer_vector2
Variables
Real : Z(100)
Entero : i Ejemplo: no necesariamente tiene que utilizarse toda la
Inicio memoria reservada al inicio.
Repetir Para i 1 , 70
Leer (Z(i))
Fin para
…….
Fin
Página 6 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
En los arreglos de más de una dimensión cada uno de los elementos que lo componen se lo ubica por más de
un índice. En el caso de arreglos bi-dimensionales se requieren 2 índices para definir al elemento. En general en
el caso de n-dimensional habrá n índices para referirse al elemento.
Los arreglos bi-dimensionales también se denominan “matrices” por su similitud con las matrices matemáticas.
Página 7 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Los lenguajes de programación pueden almacenar en memoria los arreglos en dos formas diferentes: según el
orden de fila mayor o según el orden de columna mayor
Página 8 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I
Declaración y operaciones
Algoritmo leer_matriz
Variables
Entero: M(5,8)
Entero: i ,j Ej.: Se declara la matriz M como entero de 5 filas por 8
Inicio columnas. La lectura de sus elementos se realiza
Repetir Para i 1 , 5 utilizando 2 estructuras de repetición.
Repetir Para j 1 , 8
Leer ( M(i,j) ) También se deben utilizar 2 estructuras de repetición
Fin para para la asignación y escritura de los elementos.
Fin para
…….
Fin
Página 9 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I
Cadena de caracteres
CADENA DE CARACTERES: Una cadena de caracteres o string es un conjunto de caracteres – incluido el blanco –
que se almacenan en un área contigua de la memoria.
La longitud de una cadena es el número de caracteres que contiene. La cadena que no contiene ningún carácter
se denomina cadena vacía o nula, y su longitud es cero; no se debe confundir con una cadena compuesta sólo
de blancos – espacios en blanco -, ya que ésta tendrá como longitud el número de blancos de la misma.
La representación de las cadenas suele ser, en la mayoría de los lenguajes, con comillas simples o dobles.
E S T A C A S A E S U N A R U I N A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Se declaró con una dimensión de 24 caracteres y los dos últimos se rellenaron con valores nulos.
Página 10 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I
Las instrucciones básicas con cadenas se realizan de modo similar al tratamiento de las instrucciones ya vistas.
Declaración
Variables
Cadena(longitud) : nombre donde longitud hace referencia a la cantidad de caracteres máximo que
va contener la cadena
Asignar: la instrucción de asignación debe contener en el lado derecho de la asignación una constante tipo
cadena o bien otra variable del mismo tipo.
nombre ← ‘informática I’
Entrada / Salida
Página 11 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I
Cálculo de longitud
Comparación
Concatenación
Cálculo de la longitud de una cadena: la longitud de una cadena es el número de caracteres de la cadena.
Por ejemplo ‘Aprobaron el 55% el primer parcial’’ tiene 34 caracteres.
La operación de determinación de la longitud de una cadena se representará por la función longitud, cuyo
formato es
Longitud(cadena)
Página 12 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I
Comparación
La comparación de cadenas (igualdad y desigualdad) es una operación muy importante, sobre todo en la
clasificación de dato tipo carácter, que se utiliza con mucha frecuencia en aplicaciones de proceso de datos
(clasificación de listas, tratamiento de texto, etc). Los criterios de comparación se basan en el orden numérico
del código o juego de caracteres ASCII.
Dos cadenas son iguales si la longitud de ambas cadenas es la misma y si todos sus caracteres son iguales
entre si.
Los criterios para comprobar la desigualdad de cadenas utilizan normalmente los operadores de relación
usuales <, <=, >=, <> y se ajustan a una comparación sucesiva de caracteres correspondientes en ambas
cadenas hasta conseguir dos caracteres diferentes. De este modo, se puede conseguir clasificaciones
alfanuméricas
Ejemplos
‘LUIS’ < ‘LUISITO’ Verdadero
‘TOMAS’ < ‘LUIS’ Falso
‘LUIS’ < ‘LUIS ALBERTO’ Verdadero
Página 13 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Concatenación
La concatenación es la operación de reunir varias cadenas de caracteres en una sola, pero conservando el
orden de los caracteres de cada una ellas.
El símbolo que representa la concatenación varía de unos lenguajes a otros. Los más utilizados son: +, //, &, O.
En nuestro caso utilizaremos el símbolo +
Ejemplos
‘primer’ + ‘parcial’ + ‘informáticaI’ = ‘primerparcialinformáticaI’
Página 14 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
J U A N C A R L O S
A L B E R T O
A N A M A R I A
M A R C E L O
A L E J A N D R A
Ejemplos
Nombres(1) ‘JUAN CARLOS’
Escribir( Nombres(2) )
Repetir Para i 1 , 5
Leer(Nombres(I))
Fin Para
Página 15 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Un registro es una estructura de datos estática, porque el espacio de memoria que se reserva para todos sus
elementos no puede modificarse una vez que se lo haya fijado y heterogénea porque sus elementos pueden
ser de diferentes tipos, aunque esto no invalida que puedan ser de igual tipo.
Cada componente o elemento de un registro se llama campo y se identifica por un nombre. Los campos de un
registro se corresponden con lugares adyacentes de memoria y su funcionalidad es la misma que la de una
variable
campos
Para acceder a un campo, bastará con mencionar su nombre o identificador y el nombre del registro del que
forma parte. Se usa un operador especial para separar ambos nombres: generalmente el símbolo será el punto
Página 16 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Declaración de registros
La creación por parte del usuario de un registro requiere la creación de un nuevo tipo de dato estructurado. Se
debe colocar una nueva sección en el algoritmo denominada “Tipo”
Algoritmo EjemRegistro
Tipo
Registro Alumno
Cadena(longitud): nombre
Cadena(longitud):legajo
Real: Nota
Lógico: Trabaja
Fin
Variables
Alumno: R
…
Declaración del registro de un alumno cuyos campos son: Nombre, Legajo, Nota y Trabaja. La declaración
realizada ha creado un tipo de dato estructurado estático llamado “Alumno” con cuatro campos.
Una vez creado el tipo de dato por el usuario se lo utiliza en la declaración de variables. Hasta ese momento
no existía ninguna variable asociada a este nuevo tipo de datos. Ahora la variable “R” tiene asociado el tipo de
dato estructurado “Alumno” (la variable “R” almacena la información relativa a un alumno)
Página 17 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Operaciones básicas
Segmentos de algoritmos:
…
Leer (R.nombre)
Leer (R.legajo)
Leer (R.nota)
Leer (R.trabaja)
…
…
Escribir (‘El nombre del alumno es: ‘,R.nombre)
Escribir (‘Legajo: ‘,R.legajo)
Escribir (‘Nota primer parcial: ‘,R.nota)
Escribir (‘Situación laboral: ‘,R.trabaja)
Página 18 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Tipo
Registro Alumno
Cadena(longitud):nombre
Cadena(longitud):legajo
Real: Nota(7)
Lógico: trabaja
Fin
Variables
Alumno: R
Tipo
Registro Alumno
Cadena(longitud):nombre
Cadena(longitud):legajo
Real: Nota(7)
Lógico: trabaja
Fin
Variables
Alumno: com11(60)
Página 19 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
50 15 56 14 35 1 12 9
A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8)
Recurrencia:
1. Comparar A(1) y A(2); si están en orden, se mantienen como están, en caso contrario, se intercambian entre sí.
2. A continuación se comparan los elementos 2 y 3; de nuevo se intercambian si es necesario.
3. El proceso continúa hasta que cada elemento del vector ha sido comparado con sus elementos adyacentes y se han realizado los intercambios
necesarios.
A(1) 50 15 15 15 15 15 15 15
A(2) 15 50 50 50 50 50 50 50
A(3) 56 56 56 14 14 14 14 14
A(4) 14 14 14 56 35 35 35 35
A(5) 35 35 35 35 56 1 1 1
A(6) 1 1 1 1 1 56 56 12
A(7) 12 12 12 12 12 12 12 9
A(8) 9 9 9 9 9 9 9 56
Paso 1
Página 20 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
50 15 15
15 50 14
56 14 35
14 35 1
35 1 12
1 12 9
12 9 50
9 56 56
50 15 15 .... 1
15 50 14 9
56 14 35 12
14 35 1 14
35 1 12 15
1 12 9 35
12 9 50 50
9 56 56 56
Página 21 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Inicio
Escribir (‘ Ingrese número de elementos’)
Leer(N) // cantidad de elementos máxima es 100
Repetir Para i 1 , N
Leer( A(i) )
Fin para
Repetir Para i 1 , N
Escribir (A(i))
Fin para
Fin
Página 22 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
BÚSQUEDA
Dado: 50 15 56 14 35 9 12 19
Se trata de determinar si entre las componentes del vector aparece o no un determinado valor. En caso
afirmativo dar la o las posiciones donde ello ocurre.
Buscar si alguna componente es 9. El elemento 6 del vector satisface ese requerimiento. En cambio, si
buscamos el número 13, no hay ninguna componente con tal valor.
Métodos de búsqueda:
1) Búsqueda secuencial: .El algoritmo de búsqueda en un arreglo no necesariamente ordenado debe
recorrerlo componente por componente. Por esa razón el método se denomina secuencial.
2) Búsqueda dicotómica: El algoritmo de búsqueda requiere que el arreglo tenga sus componentes
ordenadas.
Sea n la cantidad de componentes de un vector ordenado de menor a mayor, en el cual queremos
encontrar un dato. Primero seleccionamos la componente cuyo subíndice es aproximadamente el punto
medio: int( (n+1) / 2 ). Si su valor es el del dato, se terminó la búsqueda. Si no, si el dato es menor que
esta componente, sabemos que habrá que seguir buscándolo en las componentes anteriores solamente, y
si es mayor, sólo en las componentes posteriores.
Página 23 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Inicio
leer (n)
Repetir Para i 1 , n
leer(x(i))
Fin para
leer (numero) // dato a buscar
izq ← 1 // comienza la búsqueda
der ← n
centro ← int((izq + der)/2)
Repetir Mientras x(centro) <> numero y izq <= der
Si numero < x(centro) entonces
der ← centro - 1
sino
izq ← centro + 1
Fin si
centro ← int((izq + der)/2)
Fin mientras
Si x(centro) = numero entonces
escribir (numero,’en posición’,centro)
sino
escribir (‘no aparece’, numero)
Fin si
Fin
Página 24 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Método de INTERCALACIÓN
Desarrollaremos un método que permita intercalar dos arreglos ordenados de igual forma, los cuales se
van a combinar para producir un único arreglo, también ordenado.
Dado A y B arreglos de un mismo tipo ordenados de igual manera (supongamos de menor a mayor), de
dimensiones N y M respectivamente, se pretende crear un nuevo arreglo C de dimensión N+M con los
elementos de A y B intercalados de manera tal que C resulte ordenado.
Por ejemplo:
A 9 B 7 C 7
35 20 9
41 25 20
Intercalación
35 = 25
35
35
41
Página 25 de 26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática
Página 26 de 26