Array sections let a program operate on part of an array without copying each element by hand.

Program

Play the program to choose how many leading values participate in the section sum.

count
array_section_sum.f90
Replay: real traced execution (multi-file project)
program array_section_sum_demo
    implicit none
    integer :: values(5)
    integer :: count
    integer :: total

    values = [2, 4, 6, 8, 10]
    count = 3
    total = sum(values(1:count))
    print '(I0)', total
end program array_section_sum_demo
program array_section_sum_demo
    implicit none
    integer :: values(5)
    integer :: count
    integer :: total

    values = [2, 4, 6, 8, 10]
    count = 4
    total = sum(values(1:count))
    print '(I0)', total
end program array_section_sum_demo
program array_section_sum_demo
    implicit none
    integer :: values(5)
    integer :: count
    integer :: total

    values = [2, 4, 6, 8, 10]
    count = 5
    total = sum(values(1:count))
    print '(I0)', total
end program array_section_sum_demo
  1. values ← [2, 4, 6, 8, 10]

    7values = [2, 4, 6, 8, 10]8count = 3
    values this step[2, 4, 6, 8, 10]values
  2. count ← 3

    7values = [2, 4, 6, 8, 10]8count = 39total = sum(values(1:count))
    values this step3count
  3. total ← 12

    8count = 39total = sum(values(1:count))10print '(I0)', total
    values this step12total3count
  4. print '(I0)', total

    9    total = sum(values(1:count))10    print '(I0)', total11end program array_section_sum_demo
    output12
    values this step12total
  1. values ← [2, 4, 6, 8, 10]

    7values = [2, 4, 6, 8, 10]8count = 4
    values this step[2, 4, 6, 8, 10]values
  2. count ← 4

    7values = [2, 4, 6, 8, 10]8count = 49total = sum(values(1:count))
    values this step4count
  3. total ← 20

    8count = 49total = sum(values(1:count))10print '(I0)', total
    values this step20total4count
  4. print '(I0)', total

    9    total = sum(values(1:count))10    print '(I0)', total11end program array_section_sum_demo
    output20
    values this step20total
  1. values ← [2, 4, 6, 8, 10]

    7values = [2, 4, 6, 8, 10]8count = 5
    values this step[2, 4, 6, 8, 10]values
  2. count ← 5

    7values = [2, 4, 6, 8, 10]8count = 59total = sum(values(1:count))
    values this step5count
  3. total ← 30

    8count = 59total = sum(values(1:count))10print '(I0)', total
    values this step30total5count
  4. print '(I0)', total

    9    total = sum(values(1:count))10    print '(I0)', total11end program array_section_sum_demo
    output30
    values this step30total
section `values(1:count)` selects a contiguous part of the array.
sum `sum(section)` reduces the selected elements to one value.
bounds The section bounds are expressions, so a variable can choose the range.