DMarlon Studio

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.

Pascal · Arrays estáticos en DMarlon Studio: el código del ejemplo y su salida en la terminal

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 Integer declara siete enteros.
  • a[i] lee o cambia el elemento i.
  • Low, High y Length dan 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.