Functions allow programmers to organize code into reusable blocks. There are two types of functions: pre-defined/library functions which are provided for use and user-defined functions which are created by the programmer. User-defined functions help reduce code length and make debugging easier. Functions can receive input parameters, return values, or do both. Arrays allow storing and accessing related data through indexes. One-dimensional arrays store data in a single list while multi-dimensional arrays can represent tables of data through multiple indexes.