BIL106E
Introduction to
Scientific & Engineering Computing
Hüseyin TOROS, Ph.D.
istanbul Technical University Faculty of Aeronautics and Astronautics Dept.
of Meteorological Engineering
Voice: 285 31 27
E-mail: [email protected]
http://atlas.cc.itu.edu.tr/~toros
An important fraction of our interaction will be via e-mail
Useful Pages:
http://www.be.itu.edu.tr/
http://atlas.cc.itu.edu.tr/~toros/bil106e.htm
http://atlas.cc.itu.edu.tr/~F90/mainindex.html
http://www.fortran.com/
http://www.foldoc.org (Free OnLine Dictionary of Computing)
F Compiler: Read this first, Full installer (3.4Mb): win95nt.exe
For more information syllabus_F
Introduction to Scientific & Engineering Computing
07/26/09
History & Background
•Fortran was originally created by a team lead by John
Backus at IBM in 1957. Originally, the name was in all
capital letters, but current usage is only requiring that the
first letter be capitalized.
•The name Fortran stands for FORmula TRANslator. It
was originally aimed at scientific calculation and had
limited support for working with characters.
•Until the C language became popular, it was one of the
few high level languages with a high level of portability
between different computer systems.
•Several websites indicate that the work on Fortran was
started in 1954 and released commercially in 1957.
•20 September 1954 may have been the day that a
small Fortran program was first successfully compiled.
Introduction to Scientific & Engineering Computing
07/26/09
2
History & Background
There have been several versions of Fortran. Fortran I,
II and III are considered obsolete.
The oldest Fortran versions which are considered of
much use today were Fortran IV, and Fortran 66, which,
as the name implies, was released in 1966.
All later versions of Fortran are numbered after the year
the standard was released.
The versions of Fortran most commonly remaining in
use are Fortran 77, Fortran 90, and Fortran 95.
•It was the first High Level or Third Generation
programming language.
•Before it, all Programs were written in Assembler,
where one Program Instruction corresponded to a
single machine operation, and each model of computer
featured its own Instruction Set.
Why Fortran?
• Among many computer scientists Fortran is the
most widely used language in scientific
computing, especially when high performance is
required.
• Concise language
• Good compilers producing efficient machine code
• Legacy: high-quality mathematical libraries
available
• New version have features helpful for
parallelization
Introduction to Scientific & Engineering Computing
07/26/09
4
The F language
F is a subset of FORTRAN.
The F compiler was written
by Walt Brainerd
Easy to
• learn
• implement
• understand
Fortran 90
Fortran 77
F
Powerful enough for use in large programs
Download F_World compiler, Installed
F_World
Introduction to Scientific & Engineering Computing
07/26/09
5
GNU Fortran and GCC
GNU Fortran is a part of GCC, the GNU Compiler Collection. GCC
consists of a collection of front ends for various languages, which
translate the source code into a languageindependent form called
GENERiC. This is then processed by a common middle end which
provides optimization, and then passed to one of a collection of back ends
which generate code for different computer architectures and operating
systems.
Functionally, this is implemented with a driver program (gcc) which
provides the command-line interface for the compiler. it calls the relevant
compiler front-end program (e.g., f951 for Fortran) for each file in the
source code, and then calls the assembler and linker as appropriate to
produce the compiled output. in a copy of GCC which has been compiled
with Fortran language support enabled, gcc will recognize files with ‘.f’,
‘.for’, ‘.ftn’, ‘.f90’, ‘.f95’, ‘.f03’ and ‘.f08’ extensions as Fortran source code,
and compile it accordingly.
Introduction to Scientific & Engineering Computing
07/26/09
7
GNU Fortran and GCC
A gfortran driver program is also provided, which is identical to gcc except
that it automatically links the Fortran runtime libraries into the compiled
program.
Source files with ‘.f’, ‘.for’, ‘.fpp’, ‘.ftn’, ‘.F’, ‘.FOR’, ‘.FPP’, and ‘.FTN’
extensions are treated as fixed form. Source files with ‘.f90’, ‘.f95’, ‘.f03’,
‘.f08’, ‘.F90’, ‘.F95’, ‘.F03’ and ‘.F08’ extensions are treated as free form.
The capitalized versions of either form are run through preprocessing.
Source files with the lower case ‘.fpp’ extension are also run through
preprocessing.
More information about gfortran
Introduction to Scientific & Engineering Computing
07/26/09
8
Introduction to Scientific & Engineering Computing
07/26/09
9
Basic statements
 A program is just a sequence of lines of text.
 Execution of the program is a separate process that goes on
inside the computer when the program is executed.
 The program statements are static, or fixed, while the
execution process is dynamic, or changing.
 The statements exists in space, and the execution occurs in a
time dimension.
First instruction
Execution of first instruction
Last instruction
Execution of last instruction
Correspondence between the program and its execution process
Introduction to Scientific & Engineering Computing
07/26/09
10
General Fortran Program Structure :
Fortran constitutes an Imperative High Level
programming language, in that the Source Code in
Programs is not directly understood, let alone executed
by the hardware. Instead, the Code is submitted to a
Compiler which writes out a Binary or Executable Module,
containing (Machine Code) Instructions appropriate (and
often peculiar to) the Hardware being used.
All Fortran Programs begin with a "Non Executable" Part,
where Variables, Arrays, and Constants may be declared
and initialized.
The "Executable" Part follows, in which all computations,
logic, and File handling take place.
Introduction to Scientific & Engineering Computing
07/26/09
Diagrammatic form of a Fortran Program :
PROGRAM Statement : Optional to Name Program
Non Executable Part : Non Executable Statements
Executable Part : Executable Statements
END : Completes Executable Part
!Our First Program
program hello
implicit none
!This is my first program
write (*,*) “Hello World!”
end program hello
! The bold keywords tell the compiler where the program begins and ends.
! A First Program -- Comments
program hello
implicit none
!This is my first program
write (*,*) “Hello World!“
end program hello
• !Comments are preceded by a “!”
• !All characters following the exclamation mark on that
line are ignored by the compiler
• !The “!” inside the Hello World ! string is not part of a
comment
Introduction to Scientific & Engineering Computing
07/26/09
•How Do I Run The Program?
•First, prepare the program using an editor to enter the
program text.
•A plain text editor such as Notepad, vi, nano,
•Save the program text with the suffix .f90 (e.g.
Hello.f90)
•Run the FORTRAN compiler taking its input from this file
and producing an executable program
• If you used a plain text editor, run the following from the
command window.
•gfortran –fimplicit-none –W hello.f90 -o hello.exe
•Run the executable program (in the .exe file)
• gfortran hello.f90  ./a.out
•From F_world menu run program commands
Introduction to Scientific & Engineering Computing
07/26/09
Comments
• Comments are used to signal the intent of the programmer
• Improve readability and understanding
• An important aid to debugging and maintaining code
• Comments can appear anywhere in the program
• When the compiler encounters a “!” (that is not contained inside a
string) it ignores the rest of the line
• Comments are only there for someone reading the program, not for
the compiler to use.
• Make Useful Comments
Useful Comments
• Not Useful:
! Add 1 to a
a=a+1
• More Useful:
! Increment to account for new user login
a=a+1
• Sometimes, Not Necessary:
NumUsersLoggedIn = NumUsersLoggedIn + 1
!READ iN THREE iNTEGERS FROM THE KEYBOARD AND
!PRINT THEM TO
!THE SCREEN IN A DIFFERENT ORDER
program number
integer:: num1, num2, num3
print *, 'Enter 3 integers: '
read *, num1, num2, num3
print *, num2, num3, num1
stop
end program number
! Write a program that reads in a temperature in Celsius and converts it
! to Fahrenheit, then prints result to the screen
! Read in the celsius temperature and print out the fahrenheit temp
program centigrade_to_fahrenheit
implicit none
! Variable declarations;
real :: temp_c, temp_f
! Ask for Centigrate temperature;
print *, "What is the Centigrade temperature? "
read *, temp_c
! Convert to Fahrenheit;
temp_f = 9.0 * temp_c / 5.0 + 32.0
! Print both temperatures;
print *, temp_c, "C=", temp_f,"F"
end program centigrade_to_fahrenheit
En iyi Buğday
Her yil yapilan "en iyi buğday" yarişmasini yine ayni çiftçi kazanmişti.
Çiftçiye bu işin sirri soruldu. Çiftçi:
-Benim sirrimin cevabi, kendi buğday tohumlarimi komşularimla
paylaşmakta yatiyor, dedi.
-Elinizdeki kaliteli tohumlari rakiplerinizle mi paylaşiyorsunuz? Ama
neden böyle bir şeye ihtiyaç duyuyorsunuz? diye sorulduğunda,
-Neden olmasin, dedi çiftçi.
-Bilmediğiniz bir şey var; rüzgâr olgunlaşmakta olan buğdaydan poleni
alir ve tarladan tarlaya taşir. Bu nedenle, komşularimin kötü buğday
yetiştirmesi demek, benim ürünümün kalitesinin de düşük olmasi
demektir. Eğer en iyi buğdayi yetiştirmek istiyorsam, komşularimin
da iyi buğdaylar yetiştirmesine yardimci olmam gerekiyor.
Kalkınmada süreklilik çevremizle beraber olduğunda mümkündür.
Sevgi ve paylaşmak en yakininizdan başlar. Sonra yayilarak
devam eder.
Kin, cimrilik, nefret kimsenin hoşlanacaği davranişlar değildir.
Introduction to Scientific & Engineering Computing
07/26/09
07
/2
6/
09
Int
ro
du
cti
on
to
Sc
ie
nti
fic
&
E
ng
in
ee
rin
g
C
o
m
pu
tin
g
! Write a program to calculates average of two number
program average
real::x,y,ave ! Type declarations
read*,x,y ! Read the values
Ave=(x+y)/2.0 !Calculation
print*,”x= “,x, ”y= “,y
print*,”average is= “,ave
endprogram average
Introduction to Scientific & Engineering Computing
07/26/09
22
Basic statements
Type declarations
The principal data types for F numerical data are:
1) real,
2) integer,
3) complex,
4) logical,
5) character.
Introduction to Scientific & Engineering Computing
07/26/09
23
Operators and assignment
The following operators are supported. Notice that the
relational operators of the form .op. (like .EQ.) have not
been included. The Fortran 90/95 feature that permits new
operator definition is included and allows the .op. form.
There is also a defined assignment capability. Arithmetic
operators +, -, * ,/,** (Addition, Subtraction, Multiplication, Division, Exponentiation)
Relational operators <, <=, ==, /=, >, >=
Logical operators .not., .and., .or., .eqv., .neqv. Character
concatenation //
Defined operator .letters.
Introduction to Scientific & Engineering Computing
07/26/09
24
program message
! variable declaration part
character (len=25):: name , surname
character(len=200):: my_message
!initial values
!read name
print *, “ Please input your name, then press enter”
read *, name
!read surname
print *, " Please input your surname, then press enter"
read *, surname
!
read * name surname
!read message
print *, " Please input your message, then press enter"
read *, my_message
!printing part
print*
print*, " Hello !"
print*
print *, " My name is :", name ," ", surname
print*
print *,my_message
pause
end
program message
Introduction to Scientific & Engineering Computing
07/26/09
25
! Write a program to calculate sum, multiplication and
division of three numbers
program numbers
real::real_1, real_2, real_3, sum1, multi, div1
!initial values
!reading numbers
print *, " Please input three numbers"
read *, real_1, real_2, real_3
!summation
sum1= real_1 + real_2 + real_3
print*, sum1
! multiplication part
multi= real_1 * real_2 * real_3
print *, multi
! division part
div1= real_1 / real_2 / real_3
print *, multi
!print new values
print*
end program
numbers
07/26/09
Introduction
to Scientific & Engineering
Computing
26
! This program adds two numbers and displays the result
program add
real:: a,b,c
print*,"Input two numbers (include a decimal point)"
read*,a,b
c=a+b
print*,"The sum of the numbers you entered is", c
end program add
program sumofnumbers
Introduction to Scientific & Engineering Computing
07/26/09
27
! Write a program to calculates area of a rectangle
program area_of_rectangle
real::x,y,area ! x and y are the edges of rectangle
read*,x,y
area=x*y
print*,”x=“,x, ”y=“,y
print*,”area of rectangle=“,area
endprogram area_of_rectangle
Introduction to Scientific & Engineering Computing
07/26/09
28
Introduction to Scientific & Engineering Computing
07/26/09
program Radioactive_Decay
! This program calculates the amount of a radioactive substance that
! remains after a specified time, given an initial amount and its half-life.
! Variables used are:
! InitalAmount : initial amount of substance (mg)
! HalfLife
: half-life of substance (days)
! Time
: time at which the amount remaining is calculated (days)
! AmountRemaining : amount of substance remaining (mg)
! Input: InitialAmount, HalfLife, Time
! Output: AmountRemaining
implicit none
real :: InitialAmount, HalfLife, Time, AmountRemaining
! Get values for InitialAmount, HalfLife, and Time.
print *, "Enter initial amount (mg) of substance, its half-life (days)"
print *, "and time (days) at which to find amount remaining:"
read *, InitialAmount, HalfLife, Time
! Compute the amount remaining at the specified time.
AmountRemaining = InitialAmount * 0.5 ** (Time / HalfLife)
! Display AmountRemaining.
print *, "Amount remaining =", AmountRemaining, "mg"
end program Radioactive_Decay
Introduction to Scientific & Engineering Computing
07/26/09
30
program kalp
print*," ---"
print*," -- - - --"
print*,"-- - - --"
print*,"-"
print*,"-"
print*," - '' ----"
print*," - '' -"
print*," -"
print*," - -"
print*," - -"
print*,"
- -"
print*,"
-"
endprogram kalp
Program fortran
print*," ****** oooo ++++ ttttttttt rrrr
AA
N
N"
print*," *
o o + +
t
r r
A A NN N"
print*," *
o o + + t
r r A A N N N"
print*," ****** o o + + t
r r A A N N N"
print*," *
o o +++++
t
rrrrr AAAAAAAA N N N"
print*," *
o o + +
t
r r A
A N N N"
print*," *
o o + +
t
r r A
A N NN"
print*," *
oooo + + t
r r A
A N
N“
endprogram fortran
Introduction to Scientific & Engineering Computing
07/26/09
31
Descargar

week 1