Arrays
Array Slice
Picking a Range
nums(2:4) selects three elements as a new array. Slices participate in whole-array operations.
Program
Play the program to take a middle slice and sum it.
array_slice.f90
Replay: real traced execution (multi-file project)
program array_slice
implicit none
integer :: nums(6)
integer :: middle(3)
nums = [10, 20, 30, 40, 50, 60]
middle = nums(2:4)
print '(I0)', sum(middle)
end program array_slice
nums ← [10, 20, 30, 40, 50, 60]
4integer :: middle(3)5nums = [10, 20, 30, 40, 50, 60]6middle = nums(2:4)values this step[10, 20, 30, 40, 50, 60]numsmiddle ← [20, 30, 40]
5nums = [10, 20, 30, 40, 50, 60]6middle = nums(2:4)7print '(I0)', sum(middle)values this step[20, 30, 40]middle[20, 30, 40]nums(2:4)print '(I0)', sum(middle)
6 middle = nums(2:4)7 print '(I0)', sum(middle)8end program array_sliceoutput90values this step[20, 30, 40]middle
Slice the Middle
numsstarts as[10, 20, 30, 40, 50, 60].nums(2:4)selects positions2,3, and4.middlereceives[20, 30, 40].sum(middle)prints90. | Source position | Source value | Inmiddle? | | --- | --- | --- | |1|10| no | |2|20| yes | |3|30| yes | |4|40| yes | |5|50| no | |6|60| no |
slice
`nums(2:4)` selects elements 2, 3, and 4.
range syntax
`first:last` is a contiguous slice.
assignment
Array assignment copies element-wise into a same-shape target.
Exercise: array_slice.f90
Take a middle slice from a six-value array, sum the slice, and print the result