Week 3 Questions

The TAs forgot to ask for written 3 minute essays this week. My thanks to those of you who took the time to submit your essay via the Web or E-mail

Fortran Language

What does IMPLICIT NONE mean to the computer?

It tells the compiler to ignore the Fortran "Implicit" assumption that variables beginning with a-h or o-z are REAL and those beginning with I-n are INTEGER. As a result the compiler requires you to explicitly define the type for every variable that you use in your program.

How do you set up a function or more exactly how do you compose it, I don't understand exactly how a function works.

As to how it works, a function is just a way to isolate a group of instructions to the computer, and control the way data is provided to those instructions for processing. Remember that I am isolating a block of calculations to make it easier to read and debug, and because either:

  1. I will need to execute those same instructions using different data at several points in my program; or
  2. I will need to execute that same set of instructions in several of my programs.
To compose the function, you first be certain that you follow the basic Fortran syntax rules on how to properly mark the beginning and end of the function. The first statement of the function must be of the form

function ...

real function ...

implicit function ...

or several other possibilities to cover other possible types for results. Now what about that "...". Either you, or somebody directing you has picked a name for your function, and has determined the number and types of arguments to be passed to the function. For example in Homework 5 I tell you:

The real valued function must be named "dist" and must take two real arguments. The first argument is the angle of inclination of a cannon's barrel from horizontal, in radians. The second argument is the cannon's muzzle velocity in meters per second. The value returned by the function is the range of the cannon shell (in meters)
You are free to choose the names you will use for the two arguments (say "a" for angle, and "v" for velocity), but not free to choose the type (real, integer, ...), since I have mandated the types. Part of using any function correctly is to know the type for each argument. In this example, you end up with an opening statement for the function of

      function dist ( a, v )
Fortran syntax requires that if you need to use a module in a function, the next set of statements must be "USE" statements. However, we won't be doing that here. Usually you will be using FUNCTION subprograms for situations where all incoming information is routed through the argument list. With no modules to worry about, the second statement must be "implicit none" (see discussion above). After shutting off implicit data typing, you must next declare the types for all of your variables and the function itself. Next you include other non-executable statements such as PARAMETER. Then you include the block of code that does the actual work. This must have at least one line that assigns a value to the function. In the homework example, this means that at least one line begins with " dist = ". Once you've provided the function's value, you are usually done. Whenever, you've finished including all the statements that you want in your function, you must end the function with an END statement.

That's about all there is to the basic requirements. Do what Fortran requires to recognize a valid function, then you are free to include any combination of Fortran statements that you need to do the specific task.

I don't understand how to enter Intrinsic functions into a statement properly.

Pretty much the way you would enter a variable. If it helps you, temporarily represent the intrinsic function by a regular variable name (s1 = sin(t)). Write your statement that needs the intrinsic function, say:

      volts = 110.0*s1 + bias
then directly substitute "sin(t)" where "s1" appears to get the final form of the statement for your program

      volts = 110.0*sin(t) + bias
By the way it would have been perfectly legitimate Fortran to use two lines:

      s1 = sin(t)
      volts = 110.0*s1 + bias
With an optimizing compiler, the resulting machine code would not have been different, unless you used "s1" again later in the program unit.

Class Procedures

I'm having trouble deciphering what it is I should be concentrating on for the test. For example, I see questions on the practice tests that ask what a person discovered, which seems to me to be a little off the track of actual programming.

That isn't simply a practice test, it's an exam from 1995. We explicitly covered some history of computing that year, but that has been eliminated from the regular lectures (and hence exams). You should know the basic Unix commands presented in the Web pages for the 1st and 2nd recitations. You should know the basic components of a computer and how they work. You should have some understanding of the use of bits to represent data, including the concept of a byte, range of integers that can be represented with 32 bits (4 bytes), and the approximate range and precision of real (floating point) numbers that can be represented with 32 and 64 bits.

Is the text book enough to get me acquainted with the software for this course, or should I buy those UNIX and Fortran for dummies books?

The text box is inadequate for Unix, but the class notes plus Web material cover everything that you need. I am only trying to teach you enough Unix to get through the process of writing , executing, and debugging programs. You should consider the Unix for Dummies book if you want to develop more depth in Unix. You should find everything you need for Fortran in a combination of the text and the Web notes.

If we have had previous programming experience in a similar language such as C++ is it really necessary to buy the book? Would it hurt us if we just used the provided lectures on the web page?

Probably not. I look at my own Web examples when designing Homework, and the Web lecture (and recitation) notes when creating tests.

Back to other 1997 Questions and Answers / Home

Maintained by John Mahaffy : jhm@psu.edu