Your initial thoughts were an abstraction of what a tree is. The details didn't matter, at least not initially.
In computer programming, you will be building programs from modular pieces. You are going to give the pieces names that are descriptive of what they are or do. These names are abstractions and will be used as such.
For example, if you write a drawing program, you will probably write procedures which draw objects, e.g., drawHouse, drawTree, drawCloud, etc... With these procedures properly written, they can be used without thinking about how they do what they claim to do.
In summary, a good abstraction is descriptive enough for you to imagine what you are working with, but specifies as little detail as possible.
When a procedure or method is declared to have/expect parameters, the invocation must include things, one for each expected parameter. The things provided are called actual arguments. Think of an argument as some real thing that will be substituted for the parameters that were used in the method's declaration when the code is executed.
The trick is that an expression that results in a non-negative number, between zero (0) and the number of elements minus one, inclusive, identifies which element is being selected. This expression is placed in square brackets, following the array's identifier.
Back to Table of Contents