Lección 11 · 11 de 20
Arrays estáticos · Pascal
Guarde varios valores del mismo tipo en un array de Pascal: las temperaturas de una semana, con su media y el día más caluroso.

Un array guarda varios valores del mismo tipo bajo un solo nombre. Se declara con sus índices: array[1..7] of Integer son siete enteros numerados del 1 al 7. Es estático: su tamaño se fija al compilar y ya no cambia.
Days es un array constante, con sus valores entre paréntesis, y temps es una variable que empieza con las temperaturas de la semana. A cada elemento se llega con su índice entre corchetes: temps[4] := 20 corrige el jueves.
`Low` y `High` dan el primer y el último índice, y `Length`, cuántos elementos hay. Con ellos el for recorre el array sin escribir números a mano, y sigue funcionando aunque cambie el tamaño.
Dentro del bucle se hacen tres cosas: escribir cada día con su temperatura, sumarla en total y recordar en hottest el índice del día más caluroso. Al final, total / Length(temps) da la media.
Usar un índice que no existe, como temps[8], es un error. Si el índice es una constante, el compilador ya avisa; si es una variable, active la comprobación al ejecutar con {$R+} al principio del programa.
Código · main.pas
program main;// A constant array: the names of the days.const Days: array[1..7] of String = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');// A variable array of 7 integers, with initial values.var temps: array[1..7] of Integer = (18, 21, 24, 19, 26, 28, 22); i, hottest, total: Integer;begin temps[4] := 20; // change one element total := 0; hottest := 1; // Low and High give the first and last index. for i := Low(temps) to High(temps) do begin WriteLn(Days[i], ': ', temps[i]:3, ' C'); total := total + temps[i]; if temps[i] > temps[hottest] then hottest := i; end; WriteLn('Average: ', total / Length(temps):0:1, ' C'); WriteLn('Hottest day: ', Days[hottest], ' (', temps[hottest], ' C)');end.Salida · fpc main.pas && ./main
Mon: 18 C Tue: 21 C Wed: 24 C Thu: 20 C Fri: 26 C Sat: 28 C Sun: 22 C Average: 22.7 C Hottest day: Sat (28 C)
Para recordar
array[1..7] of Integerdeclara siete enteros.a[i]lee o cambia el elementoi.Low,HighyLengthdan los límites y el tamaño.- Un array estático no cambia de tamaño.
Ejercicio
Añada un array rain con los litros de lluvia de cada día y escriba cuántos días llovió y cuál fue el más lluvioso.