I use to place all my functions first out of habit, as my first training in programming was from Pascal. In Pascal you can't call a function or a procedure if it is listed below the function or procedure you are calling from. (that use to be the case anyway, haven't used that language for several years now, and Delphi doesn't require this sturcture)
It was explained to me (way back then) that the reason for this encumberance was that the programer had to give structure to his/her thoughts before writing code. I have to admit that because of this my "thought" on code is probably better than if I was taught first with a more "open" means of programming, such as Perl and C allows. You couldn't just say "hey, I need a function" and just throw it in there. It kept code clean and tight.. in my opinion anyway. I'm sure that others would have a more practical view point on this, such as "damn, I need a function here"
I have since changed to putting the main program above and functions below, for exactly the reasons you describe, its easier to go through the code, and most of my stuff is Object programming these days, so its more or less a mute point.
Update
I have since learned of the possiblity of unexpected Global variables, and I belive Globals are the seeds of the DEVIL :-) Out of habit I declare all variables with
my so this keeps the possiblity of Global variables sneaking into the effects of my scripts, but thought I would mention this, incase you don't read further down to some of the great posts below this one.
Glenn H.
webadept.net