• Tidak ada hasil yang ditemukan

Introduction to Fortran 90

N/A
N/A
Protected

Academic year: 2024

Membagikan "Introduction to Fortran 90"

Copied!
28
0
0

Teks penuh

(1)

Introduction to Fortran

90/95

(2)

همانرب کی داجیا لحارم

هلاسم لماک تخانش و فیرعت  همانرب متیروگلا داجیا  یسیون همانرب نابز کی هب متیروگلا لیدبت  (

رف لاثم نرت

)

ای )codes( اهدک نتشون نیشام نابز هب اهدک همجرت  compile(

) )*.exe( ییارجا لیاف کی داجیا  نآ یلامتحا یاهاطخ عفر و همانرب یارجا 

همانرب ندومن دنتسم 

(3)

تراچولف (

امندنور )

ددع ود برض و عمج

c=a+b d=a*b

(4)
(5)

نرترف نابز هچخیرات

 FORmula TRANslation invented 1954–8 by John Backus and his team at IBM

 FORTRAN 66 (ISO Standard 1972)

 FORTRAN 77 (1980)

 Fortran 90 (1991)

 Fortran 95 (1996)

 Fortran 2003 (2004)

 Fortran 2008 (ongoing)

(6)

Fortran Alphabets

فورح 

 A B C D E F…

 a b c d e f…

تسین ساسح گرزب و کچوک فورح هب تبسن نرترف

. دادعا 

 0 1 2 3 4 5 6 7 8 9

هسیون  صاخ یاهرتکاراک ای یاه

 , “ ( ) * + - / : = - ! & $ ; < >

? . % _ blank

(7)

اهریغتم

همانرب نابز رد یم هدافتسا ریغتم مان هب یرصانع زا یسیون

یارب عقاو رد هک دوش

دنک یم داجیا ار یلحم هریخذ .

دوش یم هتخاس ریز تروص هب اهریغتم

. .دشاب رتکاراک 31 یاراد رثکادح دناوت یم ریغتم کی

دشاب فرح دیاب امازلا ریغتم کی رتکاراک نیلوا

. یم اهرتکاراک هیقب

طخریز ای و فرح ،ددع طقف دناوت (underline)

دشاب

. یمن ریغتم مان ناونع هب ،اههژاو دیلک ای و هدش ورزر یاههژاو زا

دومن هدافتسا ناوت

. :تسرد یاه لاثم

Conut, Ali

X900g, I1025

R2_D2, R2D2_

طلغ یاه لاثم :

M.t.u, R2-D2

6feet

_system

A_name_made_up_of_more_than_31_letters

too long, 38 characters

(8)

صخشم عاونا هدننک

اه

صخشم  هدننک

نابز کی رد هک دنتسه یتوافتم ءایشا اه

همانرب دور یم راک هب یسیون

. نرترف 90

ود یاراد یلک روطب

صخشم عون تسا ریز حرش هب هدننک

: یددع یاههدننکصخشم

حیحص

یقیقح

طلتخم

صخشم

هدننک یاه

یددعریغ

رتکاراک

یقطنم

(9)

صخشم عاونا هدننک

یددع یاه

integer

correct: 0, -345, 789, +1234

incorrect: 12.0, --4, 5+

real

correct: 123.45, .123, 123., -0.12, +0.12

incorrect: 65

complex

x+iy

(10)

صخشم عاونا هدننک

یددعریغ یاه

character

correct: 'Ali' or "Ali" (content: Ali and length: 3), 'Ali is #2' (content: Ali is #2 and length: 9)

special case: 'Ali''s apple' (content: Ali’s

apple and length: 11)

incorrect: 'you and me, 'Tech's seminar', 'have a nice day"

Correct: "Ali's apple"

هتشر کی ،دریگ یم رارق فروتساپآ لخاد رد هک یبلطم

( string )

دوش یم هدیمان .

Logical

تسا طلغ ای تسرد رظن دروم یش هک دریگ یم رارق هدافتسا دروم یدراوم یارب

.

A<0 (True or False)

.TRUE., .FALSE.

(11)

صخشم عون ملاعا هدننک

اه

رد همانرب ره یادتبا صخشم دیاب

هدننک زا نرترف هنرگو دومن یفرعم ار اه

شیپ ضرف

دنک یم هدافتسا دوخ یاه .

رمارگ syntax(

) تسا ریز حرش هب

: Integer :: j, icount

Real :: wide, angle

Logical :: try

Character(Len = 5) :: name

Character(Len = 10) :: city, nation*20, box, bug*1

Character :: answer, marital_status

answer and marital_status are each of length 1

تملاع یاه هژاو هدننکادج ::

integer real ،

logical ،

و .دشاب یم اهریغتم زا character

(12)

صخشم عون ملاعا هلابند هدننک

اه

نلاعا زا رگا  integer

ای و دوشن هدافتسا Real

. ییاهریغتم

فورح اب هک i,j,k,l,m,n

رد ،دنتسه حیحص دنوش یم عورش

یم یقیقح تروصنیا ریغ دنشاب

. دینک هجوت ریز یاه لاثم هب :

 integer

ic, kzip, name, l_geo

 real

zip, code, geo

 Names starting with I–N are INTEGER

 Ones with A–H and O–Z are REAL

(13)

روتسد implicit none

روتسد همانرب کی یادتبا رد رگا  implicit none

راک هب

دوش هتفرگ .

ک اهریغتم عاونا نلاعا هب طوبرم ضرف شیپ را

من نلاعا ءانثتسا نودب ار اهریغتم مامت دیاب و دنک یمن رد دو

دهد یم اطخ همانرب تروصنیا ریغ .

 implicit none

 integer :: ice, coke

 real :: var, kind

(14)

نیزاغآ ای هیلوا رادقم

رد تسا نکمم و دنوش یم عورش نیعمان ریداقم اب اهریغتم دننک رایتخا یتوافتم ریداقم فلتخم یاه مجرتم .

اد نودب اما ،دنتسه تباث ریداقم هیبش یلیخ هیلوا ریداقم نتش

تیصوصخ parameter

Integer :: count = 0, I = 5, J = 100

Real :: max = 1005.25, min = -0.01

Character(Len=10) :: light = ’Amber’

Logical :: red = .TRUE., blue = &

.FALSE., green = .FALSE.

(15)

رتماراپ کی ملاعا

سد زا ناوت یم رتماراپ کی هب تباث ریداقم نداد تبسن یارب روت

Parameter دومن هدافتسا

.

integer, parameter :: limit = 100

real, parameter :: pi = 3.14159, twopi = 2*pi

integer, parameter :: month_in_a_year = 12

هجوت :

عون زا رگا integer, real

و ...

یتیصوصخ چیه نودب

نتشاذگ هاگنآ ،دوش هدافتسا (

::

) اب رگا اما ،تسا یرایتخا

یریگراک هب ،دوش ماوت رگید تایصوصخ (

)::

گو تسا یمازلا هنر

دهد یم اطخ همانرب .

Character(Len=*), parameter :: &

error = 'unknown'

(16)

اهنآ بیترت و اهرگلمع

عون اهرگلمع

تکرش یریذپ

یباسح ناوت

(**)

میسقت برض و (/)

(*)

قیرفت عمج و (-)

(+) پچ هب تسار

تسار هب پچ تسار هب پچ

یبسن یواسم ای رتکچوک

(<=) رتکچوک ،

(<)

یواسم ای رتگرزب (>=)

رتگرزب ، (>)

یواسمان یواسم ،(/=)

(==) تسار هب پچ

تسار هب پچ تسار هب پچ

یقطنم .NOT.

.AND.

.OR.

پچ هب تسار تسار هب پچ تسار هب پچ

(17)

اهنآ بیترت و اهرگلمع زا ییاهلاثم

لاثم 1

X + Y * Z is equivalent to X + (Y * Z):

X + Y / 7.0 is equivalent to X + (Y / 7.0)

A – B + C is equivalent to (A – B) + C

A + B ** C is equivalent to A + (B ** C)

– A ** 2 is equivalent to – (A ** 2)

A – ((( B + C))) is equivalent to A – (B + C)

You can force any order you like

(X + Y) * Z

Adds X to Y and then multiplies by Z

(18)

اهنآ بیترت و اهرگلمع زا ییاهلاثم

لاثم :2

A / B * C – is it A / (B * C) or (A / B) * C?

A ** B ** C – is it A ** (B ** C) or (A ** B) ** C?

Fortran specifies that:

A / B * C is equivalent to (A / B)

* C

A ** B ** C is equivalent to A **

(B ** C)

Yes, ** binds from right to left!

(19)

نداد تبسن و ترابع

ترابع  :

یم اهریغتم و اهرگلمع زا یبیکرت دشاب

.

 a+2

 b*b-4*a*c

 A>B

تملاع زا هدافتسا اب  (

= ) یریغتم هب ار ترابع کی ناوتیم

داد تبسن .

 Delta = b*b-4*a*c

 Area = pi*r**2

 count = count+1

(20)

تارابع عاونا

حیحص تارابع

Division always truncates towards zero

If K = 4 and L = 5, then K+L/2 is 6

(-7)/3 and 7/(-3) are both -2

یبیکرت تارابع

INTEGER :: K = 5

REAL :: X = 1.3

X = X+K/2

That will add 2.0 to X, not 2.5

K/2 is still an INTEGER expression

(21)

باستنا هب عجار صاخ یاه لاثم

N = 10./3 (value of N is 3)

X = 10/3 (value of X is 3.0)

Y = 10/3. (value of Y is 3.33333)

10./33.33333 N3

10/3 3 X 3.

10/3. 3.33333 Y 3.33333

یحص ددع رب حیحص ددع رگا هک دومن هجوت دیاب اجنیا رد  ح

ی تروص رگا اما دوب دهاوخ حیحص نآ هجیتن ،دوش میسقت ا

ب یم یقیقح نآ هجیتن هاگنآ ،دشاب یقیقح رسک جرخم دشا

.

(22)

شیپ عباوت هتخاس

( 1 )

عبات فیصوت

ناموگرآ عون خساپ عون

َ ABS(x)

رادقم قلطم ردق

integer x

real integer

real

SQRT(x)

مود هشیر

real x

real

SIN(x)

سونیس نایدار بسح رب x

real real

COS(x)

سونیسک نایدار بسح رب x

real real

TAN(x)

تناژنات نایدار بسح رب x

real real

EXP(x)

ییامن عبات

real x

real

LOG(x)

نیرپن متیراگل

real x

real

(23)

شیپ عباوت هتخاس

( 2 )

عبات فیصوت

ناموگرآ عون خساپ عون

LOG10(x)

یانبم متیراگل x 10

real real

INT(x)

حیحص ءزج

real x

integer

NINT(x)

هب حیحص ددع نیرتکیدزن

real x

integer

REAL(x)

لیدبت هب x

integer real

real

MAX(x1,…,xn)

رثکادح ات x1

real xn

real

MIN(x1,…,xn)

لقادح ات x1

real xn

real

MOD(x,y)

هدنامیقاب رب x

real y

integer real

integer

(24)

همانرب جیاتن نتشون هوحن

تاروتسد زا نتشون یارب print

ای و write

دوش یم هدافتسا .

رمارگ

تسا ریز تروص هب اهنآ :

print*, expr_1, expr_2, …

یصاخ بلاق یجورخ هک تسا نیا زا یکاح هراتس

(format) درادن

.

write(*,*) expr_1, expr_2, …

دنک یم لمع لااب دننام مود هراتس

.

ددرگ یم پاچ شیامن هحفص یور جیاتن هک تسا نیازا یکاح لوا هراتس

.

ددرگ یم داجیا یلاخ رطس کی طقف و دوش یمن پاچ یزیچ ریز تلااح رد .

Print*

write(*,*)

(25)

هداد ندناوخ هوحن اه

( 1 )

هداد رگا هداد دیاب ،دشاب هدشن هیارا همانرب لخاد اه

هحفص زا ار اه

دناوخ دیلک و شیامن

.

ندناوخ روتسد رمارگ تسا ریز حرش هب read

read(*,*) var_1, var_2, ….

روتسد دننام ،مود هراتس اجنیا رد write

نیدب لوا هراتس و تسا

دوش یم هدناوخ دیلک هحفص زا هداد هک تسا ینعم

. read هک راب ره

دور یم دیدج رطس هب همانرب ،دوش یم ارجا

. تسا ریز حرش هب read روتسد هداس رمارگ

read*, var_1, var_2, …

هداد هک تسا نآ زا یکاح هراتس هک بلاق نودب اه

(format) یصاخ

دوش یم هدناوخ .

(26)

هداد ندناوخ هوحن اه

( 2 )

روتسد هب ندیسر ضحم هب همانرب  یم فقوتم read

ات دوش

هداد دناوخب دیلک هحفص قیرط زا ار رظن دروم یاه

. هداد نیا اه

د ار اهنآ ای و دومن پیات هلصاف اب رطس کی رد ناوت یم ار ر

درک پیات فتلخم روطس .

روتسد رد اهریغتم مامت ات  راک هب همانرب ،دوشن هدناوخ read

دنز یم کمشچ بترم رگناشن و داد دهاوخن همادا دوخ .

(27)

لماک همانرب کی لاثم

Program solve_equation Real :: a,b,c

Real :: d

Real :: root1, root2

! read in coefficient a,b,c Print*,’a,b,c please:’

read*,a,b,c

! compute the square root of discriminant d d = sqrt(b*b-4*a*c)

! solve equation

root1 = (-b+d)/(2*a) ! first root root2 = (-b-d)/(2*a) ! second root

! display the results

write(*,*) ‘Roots are’, root1, ‘and’, root2 End Program solve_equation

(28)

Text Editor

Compiler

link

lib

Executable Code Source

Code

Object

Code User

Library Phase I:

Translation

Phase II:

Linkage

Phase III:

Execution

Referensi

Dokumen terkait

نیا رد نینچمه و هدش هتفرگ رظن رد میلست شنت یور رب شنرک خرن تارثا تلاح یم هدرب راک هب بآ تلاح هلداعم هک دراد تلاح هلداعم هب زاین دوش [ ]22 ج ؛ هدام لدم 2155 هیبش رد شنرک خرن هب

وکیاه رد یرگریوصت« ناوارف تروص هب » یم هدربراک هب ،اهوکیاه زا یرایسب .دوش فیصوت هک دنتسه ییابیز یملاک یاهریوصت یمن هدید نآ رد یئزج یاه هتفگن ؛دوش و اه هدماین شیدنا رد ار اهنآ ات

ًلاامتحا رد یناساس ۀرود هتخاس هدش تسا و یناوارف قاط یاه ،نآ راصح عیسو هب یبوخ یم ناشن دهد هک هناهاش و هوکشاب یرامعم یا و هتشاد شمارآ ۀرود کی رد یسایس هتخاس هدش هدافتسا دروم

،هدش هتفرگ نآ زا روباشین تانییزت و شوقن هک یعبانم هلمج زا روباشین رد هنیلافس یدادعت لاثم یارب ،دشاب یم فلتخم ِبهاذم دامن نایناماس ورملق رد عقاو رد .دوش یم هدید یهام شقن و بیلص شقن اب

یراگن ریوصت یاه یگژیو :یزاس اضف • داجیا و ییابیز یارب ریواصت رد دوجوم تعیبط هخسن نیا رد یعقاو تعیبط هب هجوت اب شاقن .تسا هدش هتفرگ راک هب امنرود یعون لک رد و دوش کیدزن ییاپورا یزادرپ

موس هلحرم.تسا لماع رسفم تکرش ای حارط تلاح نیا رد دوش یم رد دریگ یم رارق رظندم هعقاو کی ناونع هب لوصحم هک تسا ینامز یریگ میمصت ثعاب هک ارچ دراد تیمها رایسب لوصحم هقبط اجنیا .دوش یم هدنیآ

هب افوی کچوک هب شعاد طسوت و ادج شردام زا روز « ةفلاخلا لابشأ 1» یم هداتسرف یارب ات دوش هب ماجنارس افوی .دنیبب میلعت شعاد فوفص رد ندیگنج ز ادج شردام زا رو یم و دوش هب مادکره نادنز

دنك یم هراشا یياور یکینکت هب نهذ لایس نايرج كبس هب شراگن دوش یم هتشون یلکش هب تیصخش اي یوار كي فطاوع و راکفا ،نآ رد هك نآ ینهذ تیعضو رد هتسویپ تارییغت ریسم دنناوت یم نیبطاخم هك رد راب