Computadoras y Programación · ENES Juriquilla · UNAM
9
8
10
7
6
Sesión 7 · Computadoras y Programación

Guardar un dato
es fácil. ¿Quinientos?

Arreglos y cadenas: muchas casillas, un solo nombre.
Por
Walter Rosales
Con lo que ya sabes
Guardar 500 calificaciones
nota1 ← 9nota2 ← 8nota3 ← 10nota4 ← 7nota5 ← 6… 494 variables más …nota500 ← 8
Técnicamente funciona. Humanamente, no.
¿Y si una sola variable
tuviera varias casillas?
Arreglo

Un arreglo es una variable
con muchas casillas.

notas
9
8
10
7
6
un nombre: notas mismo tipo: números tamaño fijo: 5
Índice

Se cuenta desde cero.

9
0
8
1
10
2
7
3
6
4
5 casillas, índices del 0 al 4.
El índice no es el lugar: es cuántas casillas te saltas desde la primera.
Declarar y usar
Arreglo notas[5]notas[0] ← 9notas[1] ← 8notas[2] ← 10notas[3] ← 7notas[4] ← 6ESCRIBIR notas[2]
notas
9
0
8
1
10
2
7
3
6
4
Pantalla10
Para que el usuario la llene: LEER notas[3].
Acceso por índice
notas[304]
9
0
8
1
10
2
7
3
6
4
notas[3] = 7
notas[0] = 9
notas[4] = 6
El número entre corchetes es la llave de la casilla.
Fuera de rango

¿Y la casilla 5?

notas[5]
9
0
8
1
10
2
7
3
6
4
?
5
No existe. El arreglo tiene 5 casillas: de la 0 a la 4.
En C no hay aviso: se lee basura o se rompe el programa.
Arreglo + PARA
PARA i DESDE 0 HASTA 4 HACER
  ESCRIBIR notas[i]
FIN PARA
i empieza en 0 i termina en 4 (n − 1) notas[i] cambia de casilla
HASTA 4, no HASTA 5: la última casilla es la 4.
Paso a paso · el diagrama corre
Inicio
i ← 0
Sí, vuelve
¿i <= 4?
No
Fin
ESCRIBIR notas[i]
i ← i + 1
i = 01234
9
0
8
1
10
2
7
3
6
4
notas[0] = 9
notas[1] = 8
notas[2] = 10
notas[3] = 7
notas[4] = 6
Pantalla981076
Ejemplo resuelto 1 · suma y promedio
suma ← 0
PARA i DESDE 0 HASTA 4 HACER
  suma ← suma + notas[i]
FIN PARA
promedio ← suma / 5
ESCRIBIR promedio
i = 01234
9
0
8
1
10
2
7
3
6
4
suma ← 0 + 9 = 9
suma ← 9 + 8 = 17
suma ← 17 + 10 = 27
suma ← 27 + 7 = 34
suma ← 34 + 6 = 40
promedio = 40 / 5 = 8
Ejemplo resuelto 2 · buscar el mayor
mayor ← notas[0]
PARA i DESDE 1 HASTA 4 HACER
  SI notas[i] > mayor ENTONCES
    mayor ← notas[i]
  FIN SI
FIN PARA
ESCRIBIR mayor
i = —1234
9
0
8
1
10
2
7
3
6
4
mayor ← notas[0] = 9
8 > 9 ? no · mayor = 9
10 > 9 ? sí · mayor = 10
7 > 10 ? no · mayor = 10
6 > 10 ? no · mayor = 10
El mayor es 10
¿Siempre un arreglo?

Estos dos no lo necesitan. Este sí.

i
No necesita arreglo
Imprimir del 1 al 20.
Cada número se usa y se suelta.
suma
No necesita arreglo
Sumar hasta que escriban 0.
Solo importa el acumulado.
9
8
10
7
6
Sí necesita arreglo
¿Cuántas notas superan el promedio?
Primero las tienes todas; luego vuelves a cada una.
La pregunta: ¿voy a volver a mirar este dato?
Caracteres

Un carácter es un valor.

H
'H'
7
'7'
?
'?'
Una letra, un dígito o un símbolo — entre comillas simples.
Por dentro es un número: 'A' → 65 (ASCII).
Cadenas

Una cadena es un arreglo de caracteres.

\0 · fin de la cadena
H
0
O
1
L
2
A
3
\0
4
'HOLA' = 4 letras + 1 cierre palabra[2] → 'L'
Adelanto de C: char palabra[] = "HOLA"; ocupa 5 casillas.
Dos dimensiones
01230
2
7
1
4
1
6
3
5
8
2
9
0
2
6

Una matriz es un arreglo de arreglos.

Arreglo tabla[3][4]
tabla[1][2] ← 5
Primero la fila, luego la columna. Las dos se cuentan desde 0.
Del aula al trabajo

Una imagen
es una matriz.

En mi trabajo con modelos de clasificación y segmentación de imágenes oftalmológicas, cada imagen entra al programa así: una tabla de números (una por canal de color) con filas y columnas.
Ilustración abstracta, no es un estudio real.
Gracias
Walter Rosales
CEO & Co-Founder, iGalenus
walter.rosales@igalenus.com
@walterr_rosales
walter-rosales.com
Escanear · esta charla