Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 CS 415: Programming Languages Fortran Aaron Bloomfield Fall 2005.

Similar presentations


Presentation on theme: "1 CS 415: Programming Languages Fortran Aaron Bloomfield Fall 2005."— Presentation transcript:

1 1 CS 415: Programming Languages Fortran Aaron Bloomfield Fall 2005

2 2 The IBM 704

3 3 Standard Fortran joke “GOD is REAL (unless declared INTEGER)."

4 4 End of lecture on 26 Aug 2005  Between ‘Fortran I’ and ‘Fortran I program control’

5 5 Fortran I program control IF (arithmetic expression) N1, N2, N3 DO N1 variable = first_value, last_value

6 6 Punch cards

7 7 Fortran history reference http://www.ibiblio.org/pub/languages/fortran/ch1-1.html

8 8 Installing Fortran on Windows We’ll use Fortran 77 for this course The compiler has “some” Fortran 90 features The compiler has “some” Fortran 90 features Install Cygwin: http://www.cygwin.com/ http://www.cygwin.com/ It’s a Unix-like shell for Windows It’s a Unix-like shell for Windows In particular, when you install it: In particular, when you install it: Install the gcc-g77 package in the Devel section We may use Ocaml – if so, then you will need to install the ocaml package (also in Devel) This can be done later, too This can be done later, too Install a good editor I like Emacs: http://www.gnu.org/software/emacs/emacs.html I like Emacs: http://www.gnu.org/software/emacs/emacs.htmlhttp://www.gnu.org/software/emacs/emacs.html Quite a learning curve, but the best editor out there Binaries at http://ftp.gnu.org/pub/gnu/emacs/windows/ http://ftp.gnu.org/pub/gnu/emacs/windows/ You can also install and use it as part of Cygwin Tutorials can be found online

9 9 Compiling a Fortran program Edit the program using your favorite editor All program code must start on the 7 th column! All program code must start on the 7 th column! In Cygwin, change to that directory The c drive is at /cygdrive/c, etc. The c drive is at /cygdrive/c, etc. Enter the command: g77 –ff90 file.f g77 –ff90 file.f Then run the file:./a.exe./a.exe

10 10 Hello world in Fortran PROGRAM HelloWorld PROGRAM HelloWorld PRINT *,'Hello world!' PRINT *,'Hello world!' END PROGRAM HelloWorld END PROGRAM HelloWorld Column 7Column 1

11 11 Fortran syntax Lines can only be 72 characters long Comments start with a ! First 6 columns must be spaces Unless it’s a comment Unless it’s a comment No semi-colons after each line A newline is a statement terminator A newline is a statement terminator

12 12 Variable declaration The types are real, integer, etc. real :: x, y, z integer :: a, b, c character :: g Always put ‘implicit none’ at the beginning Right after the ‘program’ line Right after the ‘program’ line Prevents implicit variable declaration Prevents implicit variable declaration

13 13 Input and output Output statement: print *, "(", tri1x, ", ", tri1y, ")“ print *, "(", tri1x, ", ", tri1y, ")“ Input statement: read *, tri3x read *, tri3x There are ways to do nicely formatted output We aren’t going over them We aren’t going over them

14 14 Operators Boolean operators:.and.,.or.,.not., etc. Basically the name of the operation in periods Basically the name of the operation in periods Boolean values are.true. and.false. Boolean values are.true. and.false. Relational operators:, =, ==, /=

15 15 Built-in functions sqrt()log()sin()cos()exp()etc.

16 16 If statements Forms are (exp is a Boolean expression): if ( exp ) then......endif if ( exp ) then......else endif if ( exp ) then...... else if ( exp ) then...... else if ( exp ) then......endif

17 17 Case statement Form is: select case ( expr ) case ( value )...... case ( value )...... case ( value )...... case default...... end case Where value can be: A single value (300:) A range of values (200:400) Case default is not required

18 18 Looping Form is: do i = 1, 10...... end do do i = 1, 10, 2...... end do The first loops from 1 to 10 The second loops from 1 to 10, but odd numbers only

19 19 Loop control Exit Exits the loop, not the program Exits the loop, not the programCycle Similar to next or continue in other languages Similar to next or continue in other languages Starts the next iteration of the loop Starts the next iteration of the loop

20 20 Demo program ! This program allows the user to input the number of degrees in an angle ! and then computes the cosine, sine, and tangent. It continues until the ! user inputs "n" or "N". PROGRAM angle PROGRAM angle IMPLICIT none IMPLICIT none ! Type variables. REAL :: cosine, sine, tangent, degrees REAL :: cosine, sine, tangent, degrees REAL :: pi = 3.141592 REAL :: pi = 3.141592 CHARACTER :: choice CHARACTER :: choice DO DO ! Enter and read the number of degrees in the angle. PRINT *, "Enter the number of degrees in the angle." PRINT *, "Enter the number of degrees in the angle." READ *, degrees READ *, degrees ! Convert number of degrees in angle to radians. degrees = degrees*(pi/180) degrees = degrees*(pi/180) ! Use intrinsic functions to compute values. cosine=cos(degrees) cosine=cos(degrees) sine=sin(degrees) sine=sin(degrees) tangent=tan(degrees) tangent=tan(degrees) ! Print results. PRINT *, "cosine=", cosine, " sine=", sine, " tangent=", tangent PRINT *, "cosine=", cosine, " sine=", sine, " tangent=", tangent ! Give user chance to exit program. PRINT * PRINT * PRINT *, "Would you like to do this again?" PRINT *, "Would you like to do this again?" PRINT *,"(Press n to exit - any other key to continue.)" PRINT *,"(Press n to exit - any other key to continue.)" READ *, choice READ *, choice ! Exit loop if the value in choice is N or n. IF (choice == "N".or. choice == "n") EXIT IF (choice == "N".or. choice == "n") EXIT END DO END DO STOP STOP END PROGRAM angle END PROGRAM angle Computes the sin, cos, tan, etc.

21 21 Demo program ! This program averages a series of numbers input ! from the keyboard. PROGRAM average PROGRAM average IMPLICIT none IMPLICIT none ! Type variables. REAL :: data, sum, avg REAL :: data, sum, avg INTEGER num, i INTEGER num, i ! Prompt for and enter number of numbers to average. PRINT *,"Enter the number of numbers to average." PRINT *,"Enter the number of numbers to average." READ *,num READ *,num sum = 0.0 sum = 0.0 ! Loop goes from 1 to number of values to average. DO i = 1, num DO i = 1, num ! Prompt for and enter a number. PRINT *,"Enter a value for the number" PRINT *,"Enter a value for the number" READ *,data READ *,data ! Add number to total. sum = sum + data sum = sum + data END DO END DO ! Calculate average. avg = sum/real(num) avg = sum/real(num) ! Print results. PRINT *,"The average = ",avg PRINT *,"The average = ",avg STOP STOP END END Computes the average

22 22 Demo program ! This program uses a function to find the average of three numbers. PROGRAM func_ave PROGRAM func_ave ! Type variables in main program (a, b, and c are local variables). REAL :: a,b,c,average REAL :: a,b,c,average ! Prompt for and get numbers to be averaged. PRINT *,"Enter the three numbers to be averaged." PRINT *,"Enter the three numbers to be averaged." READ *, a,b,c READ *, a,b,c ! Invoke function average PRINT *,"The three numbers to be averaged are ",a,b,c PRINT *,"The three numbers to be averaged are ",a,b,c PRINT *,"The average of the three numbers is ", average(a,b,c) PRINT *,"The average of the three numbers is ", average(a,b,c) STOP STOP END PROGRAM func_ave END PROGRAM func_ave ! Function average REAL FUNCTION average(x,y,z) REAL FUNCTION average(x,y,z) ! Type variables in function (x, y, and z are local varialbes). REAL :: x,y,z REAL :: x,y,z ! Function name contains the average the function calculates and returns. average = (x + y + z)/3.0 average = (x + y + z)/3.0 RETURN RETURN END FUNCTION average END FUNCTION average Computes the average via a defined function

23 23 Fortran gotchas All variables must be declared at the beginning Remember line limit of 72 characters! Consider: Consider: The 8 th variable is named ‘ei’ The 8 th variable is named ‘ei’ There is no 9 th variable declared There is no 9 th variable declared No continuation lines in Fortran 77 == is comparison for if's Can’t seem to be able to change the values of parameters in functions integer :: first, second, third, fourth, fifth, sixth, seventh, eighth, ninth Column 72!

24 24 End of lecture on 29 Aug 2005  Next 3 slides gone over a few days later

25 25 John Backus Chemistry major at UVA (entered 1943) Flunked out after second semester Joined IBM as programmer in 1950 Developed Fortran, first commercially successful programming language and compiler

26 26 IBM 704 Fortran manual, 1956

27 27 Fortran issues… Fortran language was described using English Imprecise Imprecise Verbose, lots to read Verbose, lots to read Ad hoc Ad hoc DO 10 I=1.10 Assigns 1.10 to the variable DO10I Early Fortrans didn’t care about spaces! Early Fortrans didn’t care about spaces! DO 10 I=1,10 Loops for I = 1 to 10 (Often incorrectly blamed for loss of Mariner-I)


Download ppt "1 CS 415: Programming Languages Fortran Aaron Bloomfield Fall 2005."

Similar presentations


Ads by Google