PDF de programación - FP05 - Tipos de datos estructurados

Filtrado por el tag: fibonacci recursivo
<<>>
Imágen de pdf FP05 - Tipos de datos estructurados

FP05 - Tipos de datos estructuradosgráfica de visualizaciones

Actualizado el 15 de Junio del 2021 (Publicado el 17 de Noviembre del 2018)
1.204 visualizaciones desde el 17 de Noviembre del 2018
2,2 MB
34 paginas
Creado hace 10a (03/09/2013)
Fundamentos de la programación

5

Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Facultad de Informática
Luis Hernández Yáñez/Pablo Moreno Ger
Universidad Complutense

Tipos de datos
Arrays de nuevo
Arrays y bucles for
Más sobre arrays

Inicialización de arrays
Enumerados como índices
Paso de arrays a subprogramas

Implementación de listas
Cadenas de caracteres
Cadenas de caracteres de tipo string

Entrada/salida con string
Operaciones con string

Estructuras

Estructuras dentro de estructuras
Arrays de estructuras
Arrays dentro de estructuras

Listas de longitud variable
Un ejemplo completo
El bucle do..while

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: Tipos de datos estructurados

514
517
520
522
523
524
525
528
531
535
539
541
543
549
550
551
552
558
562

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: Tipos de datos estructurados

Página 514

Clasificación de tipos

Simples
 Estándar: int, float, double, char, bool
Conjunto de valores predeterminado
 Definidos por el usuario: enumerados
Conjunto de valores definido por el programador
Estructurados
 Colecciones homogéneas: arrays
Todos los elementos del mismo tipo
 Colecciones heterogéneas: estructuras
Los elementos pueden ser de tipos distintos






Fundamentos de la programación: Tipos de datos estructurados

Página 515

Colecciones o tipos aglomerados

Agrupaciones de datos (elementos):
Todosdelmismotipo: arrayo tabla
Detiposdistintos: estructura, registroo tupla
Arrays (tablas)
Elementos organizados por posición: 0, 1, 2, 3, ...
Acceso por índice: 0, 1, 2, 3, ...
Una o varias dimensiones
Estructuras (tuplas, registros)
Elementos (campos) sin orden establecido
Acceso por nombre

Fundamentos de la programación: Tipos de datos estructurados

Página 516

Fundamentos de la programación: Tipos de datos estructurados

Página 517

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Estructura secuencial

Cada elemento se encuentra en una posición (índice):
Los índices son enteros positivos
El índice del primer elemento siempre es 0
Los índices se incrementan de uno en uno
A cada elemento se accede a través de su índice:
ventas[4]accede al 5º elemento (contiene el valor 435.00)
Datos de un mismo tipo base:
Datos de un mismo tipo base:
Se usan como cualquier variable
Se usan como cualquier variable

cout << ventas[4];
ventas[4] = 442.75;

328.80 254.62 435.00 164.29

ventas 125.40

76.95

0.00

0

1

2

Acceso directo

3

4

5

6

[]

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: Tipos de datos estructurados

Página 518

const int Dias = 7;
typedef double tVentas[Dias];

Declaración de tipos de arrays
const int Dimensión = ...;
typedef tipo_base tNombre[Dimensión];

Ejemplo:
Declaración de variables de tipos array: como cualquier otra
¡NO se inicializan los elementos automáticamente!
¡Es responsabilidad del programador usar índices válidos!
No se pueden copiar arrays directamente (array1 = array2)
Hay que copiarlos elemento a elemento

tVentas ventas;

Fundamentos de la programación: Tipos de datos estructurados

Página 519

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Procesamiento de arrays

Recorridos
Búsquedas
Ordenación
Arrays: tamaño fijo Bucles de recorrido fijo (for)

etcétera...

Recorrido de arrays con bucles for

tVentas ventas;
double media, total = 0; 
...
for (int i = 0; i < Dias; i++) {

total = total + ventas[i];

}
media = total / Dias;

const int Dias = 7;
typedef double tVentas[Dias];

Fundamentos de la programación: Tipos de datos estructurados

Página 520

12.40

10.96

8.43

11.65

13.70

13.41

14.07

0

1

2

3

4

5

6

tVentas ventas;
double media, total = 0; 
...
for (int i = 0; i < Dias; i++) {

total = total + ventas[i];

}

i = 0

true
true

false
false

i<Dias

total+=ventas[i]

i++

......

Dias
ventas[0]
ventas[1]
ventas[2]
ventas[3]
ventas[4]
ventas[5]
ventas[6]
media
total
i

Memoria

7
12.40
10.96
8.43
11.65
13.70
13.41
14.07
?
84.62
23.36
31.79
12.40
0.00
43.44
3
2
7
0
4
1

Fundamentos de la programación: Tipos de datos estructurados

Página 521

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: Tipos de datos estructurados

Página 522

const int DIM = 10;
typedef int tTabla[DIM];
tTabla i = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

Podemos inicializar los elementos de los arrays en la declaración
Asignamosuna serie de valores al array:
Se asignan los valores por su orden:
Si hay menos valores que elementos, los restantes se ponen a 0

i[0] i[1] i[2] i[3] i[4] ... i[9]

5º  ...  10º









tTabla i = { 0 }; // Pone todos los elementos a 0

Fundamentos de la programación: Tipos de datos estructurados

Página 523

const int Colores = 3,
typedef enum { rojo, verde, azul } tRGB;
typedef int tColor[Colores];
tColor color;
...
cout << "Cantidad de rojo (0‐255): ";
cin >> color[rojo];
cout << "Cantidad de verde (0‐255): ";
cin >> color[verde];
cout << "Cantidad de azul (0‐255): ";
cin >> color[azul];

Recuerda que internamente se asignan enteros a partir de 0

a los distintos símbolos del enumerado
rojo 0 verde 1 azul 2

Fundamentos de la programación: Tipos de datos estructurados

Página 524

Simulación de paso de parámetro por referencia

Sin poner & en la declaración del parámetro
Los subprogramas reciben la dirección en memoria del array
Las modificaciones del array quedan reflejadas en el argumento
Si inicializa()modifica algún elemento de tabla,
automáticamente queda modificado ese elemento de array

const int Max = 10;
typedef int tTabla[Max];
void inicializa(tTabla tabla); // Sin poner &

inicializa(array);

¡Son el mismo array!

Fundamentos de la programación: Tipos de datos estructurados

Página 525

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

const int Dim = 10;
typedef int tTabla[Dim];
void inicializa(tTabla tabla); // no se usa &

void inicializa(tTabla tabla) {
for (int i = 0; i < Dim; i++)

tabla[i] = i;

}
int main() {

tTabla array;
inicializa(array); // array queda modificado
for (int i = 0; i < Dim; i++)

cout << array[i] << " ";

...

0 1 2 3 4 5 6 7 8 9

Fundamentos de la programación: Tipos de datos estructurados

Página 526

¿Cómo evitar que se modifique el array?

Usando el modificador consten la declaración del parámetro:
Un array de constantes
El argumento se tratará como un array de constantes
Si en el subprograma hay alguna instrucción que intente
modificar un elemento del array: error de compilación

void muestra(const tTabla tabla);

const tTabla tabla

void muestra(const tTabla tabla) {
for (int i = 0; i < Dim; i++) {

cout << tabla[i] << " ";
// OK. Se accede, pero no se modifica

}

}

Fundamentos de la programación: Tipos de datos estructurados

Página 527

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: Tipos de datos estructurados

Página 528

const int NUM = 100;
typedef double tLista[NUM]; // Exactamente 100 double
tLista lista;

Listas con un número fijo de elementos

Array con el nº de elementos como dimensión
Recorrido de la lista:
Búsqueda en la lista:

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

...

while ((i < NUM) && !encontrado) { 

...

Fundamentos de la programación: Tipos de datos estructurados

Página 529

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Listas con un número variable de elementos

Array con un máximo de elementos + Contador de elementos
Recorrido de la lista:
Búsqueda en la lista:

const int MAX = 100;
typedef double tLista[MAX]; // Hasta 100 elementos
tLista lista; 
int contador = 0; // Se incrementa al insertar

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

...

while ((i < contador) && !encontrado) {

¿Array y contador por separado? Estructuras

...

Fundamentos de la programación: Tipos de datos estructurados

Página 530

Fundamentos de la programación: Tipos de datos estructurados

Página 531

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

 

 

l

r
e
G
o
n
e
r
o
M
o
b
a
P
/
z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Arrays de caracteres

"Hola" "Adiós" "Supercalifragilístico" "1234 56 7"

Cadenas: secuencias de caracteres de longitud variable
Variables de cadena: contienen secuencias de caracteres
Se guardan en arrays de caracteres: tamaño máximo (dimensión)
No todas las posiciones del array son relevantes:
Longitud de la cadena: número de caracteres, desde el
primero, que realmente constituyen la cadena:
Longitud actual: 4

H o l a
3
0

12

10

11

13

16

17

18

19

20

14

15

2

5

1

4

6

7

8

9

21

Fundamentos de la programación: Tipos de datos estructurados

Página 532

Longitud de la cadena

3

5

6

1

2

7

8

15

14

17

16

13

11

10

12

A d i ó s
4
0

Longitud: 5
Longitud: 21
Necesidad de saber dónde terminan los caracteres relevantes:
Mantener la longitud de la cadena como dato asociado
Colocar un carácter de terminación al final (centinela)

S u p e r c a l i f r a g i l í s t i c o
0
20

12

10

11

13

16

17

18

19

18

19

20

14

15

2

1

3

4

7

8

5

6

9

9

21

21

A
0
  • Links de descarga
http://lwp-l.com/pdf14242

Comentarios de: FP05 - Tipos de datos estructurados (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad