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
  1. 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]nums
  2. middle ← [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)
  3. print '(I0)', sum(middle)

    6    middle = nums(2:4)7    print '(I0)', sum(middle)8end program array_slice
    output90
    values this step[20, 30, 40]middle

Slice the Middle

  1. nums starts as [10, 20, 30, 40, 50, 60].
  2. nums(2:4) selects positions 2, 3, and 4.
  3. middle receives [20, 30, 40].
  4. sum(middle) prints 90. | Source position | Source value | In middle? | | --- | --- | --- | | 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