31
رق ب و ب آ ت ع ن صاه گ ش ن دآ1 Introduction to Fortran 90/95 ز ی ی ا پ1390

Introduction to Fortran 90/95

  • Upload
    erwin

  • View
    117

  • Download
    7

Embed Size (px)

DESCRIPTION

Introduction to Fortran 90/95. پاییز 1390. مشخصات درس. نام : مبانی برنامه‌سازی کامپیوتر (فرترن) تعداد واحد : 3 پیش‌نیاز : ریاضی 1 اهداف درس : آشنایی با مبانی برنامه‌سازی تحلیل یک مساله تهیه الگوریتم آن تبدیل آن نمودن به کد ( code ) آشنایی با یک زبان‌ برنامه‌نویسی (فرترن) - PowerPoint PPT Presentation

Citation preview

Page 1: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 1

Introduction to Fortran 90/95

1390پاییز

Page 2: Introduction to Fortran 90/95

مشخصات درسمبانی برنامه سازی کامپیوتر )فرترن(نام :3: تعداد واحد1: ریاضی پیش نیازاهداف درس :

آشنایی با مبانی برنامه سازی•تحلیل یک مساله•تهیه الگوریتم آن•(codeتبدیل آن نمودن به کد )•آشنایی با یک زبان برنامه نویسی )فرترن(•حل مسایل علمی و مهندسی به شیوه عددی•

دانشگاه صنعت آب و برق 2

Page 3: Introduction to Fortran 90/95

نحوه ارزيابي درس .ارزیابی درس به صورت زیر انجام خواهد شد

امتحان میان ترم:•30درصد :1389/9/15تاریخ

امتحان پایان ترم•70درصد :1389/10/26تاریخ

Max{0.3midterm+0.7final, final}نمره نهایی: •

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

دانشگاه صنعت آب و برق 3

Page 4: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 4

مراجع و ماخذها، نوشته جعفرنژادقمی مبانی کامپیوتر و الگوریتم

پور، ناشر: علوم رایانه و کریم نوشته دکتر مشعل، انتشارات جهاد 90فرترن ،

دانشگاهی های علوم و مهندسی، برای رشته90فرترن

ترجمه: دکتر محمود صالح، ناشر: دانشگاه امام حسین

کتاب آموزشیFortran 90/95 ترجمه امید انتشارات ناقوس ناصرقدسی و امید ممتاز،

برنامه نویسی به زبانFortran 90/95 برای رشته های ندوشنی، ناشر: علوم و مهندسی تالیف: موسوی

دانشگاه صنعت آب و برق

Page 5: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 5

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

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

Page 6: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 6

فلوچارت )روندنما( جمع و ضرب دو عدد

c=a+bd=a*b

Page 7: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 7

Page 8: Introduction to Fortran 90/95

تاریخچه زبان فرترن 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)

دانشگاه صنعت آب و برق 8

Page 9: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 9

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

Page 10: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 10

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

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

کاراکتر باشد.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

Page 11: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 11

ها کننده انواع مشخصها اشیاء متفاوتی هستند که در کننده مشخص

نویسی به کار می رود. فرترن یک زبان برنامهکننده به بطور کلی دارای دو نوع مشخص90

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

صحیححقیقیمختلط

غیرعددیهای کننده مشخص•کاراکترمنطقی

Page 12: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 12

های عددی کننده انواع مشخص 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

Page 13: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 13

های غیرعددی کننده انواع مشخص 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.

Page 14: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 14

ها کننده اعالم نوع مشخص ها را معرفی کننده باید مشخصابتدای هر برنامهدر

های خود استفاده فرض نمود وگرنه فرترن از پیش( به شرح زیر است: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 .از متغیرها می باشد

Page 15: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 15

ها کننده دنباله اعالم نوع مشخص اگر از اعالن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

Page 16: Introduction to Fortran 90/95

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

به کار گرفته شود. پیش فرض مربوط به اعالن انواع متغیرها کار نمی کند و باید تمام متغیرها را بدون استثناء اعالن نمود در غیر

اینصورت برنامه خطا می دهد. implicit none integer :: ice, coke real :: var, kind

دانشگاه صنعت آب و برق 16

Page 17: Introduction to Fortran 90/95

مقدار اولیه یا آغازین متغیرها با مقادیر نامعین شروع می شوند و ممکن

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

مقادیر اولیه خیلی شبیه مقادیر ثابت هستند، اما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.

دانشگاه صنعت آب و برق 17

Page 18: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 18

اعالم یک پارامتر برای نسبت دادن مقادیر ثابت به یک پارامتر

استفاده نمود.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'

Page 19: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 19

عملگرها و ترتیب آنهاپذیر شرکتی

عملگرها نوع

راست به چپ

چپ به راست

چپ به راست

)**(توان )*( و ضرب )/(تقسیم )+( و جمع )-(تفریق حسابی

چپ به راست

چپ به راست

چپ به راست

)>(، کوچکتر )>=(کوچکتر یا مساوی )<(، بزرگتر )<=(بزرگتر یا مساوی

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

راست به چپ

چپ به راست

چپ به راست

.NOT.

.AND..OR. منطقی

Page 20: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 20

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

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

Page 21: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 21

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

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!

Page 22: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 22

عبارت و نسبت دادن عبارت: ترکیبی از عملگرها و متغیرها

باشد. می a+2 b*b-4*a*c A>B

( میتوان یک عبارت را =با استفاده از عالمت )به متغیری نسبت داد.

Delta = b*b-4*a*c Area = pi*r**2 count = count+1

Page 23: Introduction to Fortran 90/95

انواع عبارات عبارات صحیح

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

دانشگاه صنعت آب و برق 23

Page 24: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 24

مثال های خاص راجع به انتساب 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

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

آنگاه نتیجه آن حقیقی می باشد.

Page 25: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 25

( 1ساخته ) توابع پیشنوع پاسخ

نوع آرگومان توصیف تابع

integer

real

integer

realxقدر مطلق مقدار xَABS(x)

real real xریشه دوم SQRT(x)

real real SIN(x) بر حسب رادیانxسینوس

real real COS(x) بر حسب رادیانxکسینوس

real real TAN(x) بر حسب رادیانxتانژانت

real real xتابع نمایی EXP(x)

real real xلگاریتم نپرین LOG(x)

Page 26: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 26

(2ساخته ) توابع پیشنوع پاسخ

نوع آرگومان توصیف تابع

real real x 10لگاریتم مبنای LOG10(x)

integer real xجزء صحیح INT(x)

integer real xنزدیکترین عدد صحیح به NINT(x)

real integer real به xتبدیل REAL(x)

real real xn تا x1حداکثر MAX(x1,…,xn)

real real xn تا x1حداقل MIN(x1,…,xn)

real

integer

real

integery بر xباقیمانده MOD(x,y)

Page 27: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 27

نحوه نوشتن نتایج برنامه برای نوشتن از دستوراتprint و یا write استفاده

می شود. گرامر آنها به صورت زیر است:• print*, expr_1, expr_2, …

ستاره حاکی از این است که خروجی قالب خاصی(format).ندارد

• write(*,*) expr_1, expr_2, ….ستاره دوم مانند باال عمل می کند ستاره اول حاکی ازاین است که نتایج روی صفحه نمایش چاپ

می گردد.

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

• Print*

• write(*,*)

Page 28: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 28

(1ها ) نحوه خواندن دادهها داخل برنامه ارایه نشده باشد، باید اگر داده

ها را از صفحه نمایش و کلید خواند. داده گرامر دستور خواندنread.به شرح زیر است

read(*,*) var_1, var_2, … در اینجا ستاره دوم، مانند دستورwrite است و

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

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

گرامر ساده دستورreadبه شرح زیر است read*, var_1, var_2, …

ها بدون قالب که ستاره حاکی از آن است که داده(format).خاصی خوانده می شود

Page 29: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 29

(2ها ) نحوه خواندن داده برنامه به محض رسیدن به دستورread

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

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

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

مرتب چشمک می زند.

Page 30: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 30

مثال یک برنامه کاملProgram solve_equationReal :: a,b,cReal :: dReal :: root1, root2! read in coefficient a,b,cPrint*,’a,b,c please:’read*,a,b,c! compute the square root of discriminant dd = sqrt(b*b-4*a*c)! solve equationroot1 = (-b+d)/(2*a) ! first rootroot2 = (-b-d)/(2*a) ! second root! display the resultswrite(*,*) ‘Roots are’, root1, ‘and’, root2End Program solve_equation

Page 31: Introduction to Fortran 90/95

دانشگاه صنعت آب و برق 31

Text Editor

Compiler

link

lib

Executable Code

Source Code

Object Code User

Library

system

Phase I: Translation

Phase II: Linkage

Phase III: Execution