subroutinesused- they help to break up a large program into individual parts
- each subroutine can be tested separately to ensure that it works
- subroutines can be reused in other programs or multiple times in the same program
- if there is an error, it only has to be fixed once and it will work throughout the program