Upload
erwin
View
117
Download
7
Embed Size (px)
DESCRIPTION
Introduction to Fortran 90/95. پاییز 1390. مشخصات درس. نام : مبانی برنامهسازی کامپیوتر (فرترن) تعداد واحد : 3 پیشنیاز : ریاضی 1 اهداف درس : آشنایی با مبانی برنامهسازی تحلیل یک مساله تهیه الگوریتم آن تبدیل آن نمودن به کد ( code ) آشنایی با یک زبان برنامهنویسی (فرترن) - PowerPoint PPT Presentation
Citation preview
دانشگاه صنعت آب و برق 1
Introduction to Fortran 90/95
1390پاییز
مشخصات درسمبانی برنامه سازی کامپیوتر )فرترن(نام :3: تعداد واحد1: ریاضی پیش نیازاهداف درس :
آشنایی با مبانی برنامه سازی•تحلیل یک مساله•تهیه الگوریتم آن•(codeتبدیل آن نمودن به کد )•آشنایی با یک زبان برنامه نویسی )فرترن(•حل مسایل علمی و مهندسی به شیوه عددی•
دانشگاه صنعت آب و برق 2
نحوه ارزيابي درس .ارزیابی درس به صورت زیر انجام خواهد شد
امتحان میان ترم:•30درصد :1389/9/15تاریخ
امتحان پایان ترم•70درصد :1389/10/26تاریخ
Max{0.3midterm+0.7final, final}نمره نهایی: •
تاریخ کالس حل تمرین به زودی مشخص خواهد شد.
دانشگاه صنعت آب و برق 3
دانشگاه صنعت آب و برق 4
مراجع و ماخذها، نوشته جعفرنژادقمی مبانی کامپیوتر و الگوریتم
پور، ناشر: علوم رایانه و کریم نوشته دکتر مشعل، انتشارات جهاد 90فرترن ،
دانشگاهی های علوم و مهندسی، برای رشته90فرترن
ترجمه: دکتر محمود صالح، ناشر: دانشگاه امام حسین
کتاب آموزشیFortran 90/95 ترجمه امید انتشارات ناقوس ناصرقدسی و امید ممتاز،
برنامه نویسی به زبانFortran 90/95 برای رشته های ندوشنی، ناشر: علوم و مهندسی تالیف: موسوی
دانشگاه صنعت آب و برق
دانشگاه صنعت آب و برق 5
مراحل ایجاد یک برنامهتعریف و شناخت کامل مسالهایجاد الگوریتم برنامه تبدیل الگوریتم به یک زبان برنامه نویسی )مثال
( codesفرترن( یا نوشتن کدها )( ترجمه کدها به زبان ماشینcompile)( ایجاد یک فایل اجرایی*.exe)اجرای برنامه و رفع خطاهای احتمالی آنمستند نمودن برنامه
دانشگاه صنعت آب و برق 6
فلوچارت )روندنما( جمع و ضرب دو عدد
c=a+bd=a*b
دانشگاه صنعت آب و برق 7
تاریخچه زبان فرترن 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
دانشگاه صنعت آب و برق 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
دانشگاه صنعت آب و برق 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
دانشگاه صنعت آب و برق 11
ها کننده انواع مشخصها اشیاء متفاوتی هستند که در کننده مشخص
نویسی به کار می رود. فرترن یک زبان برنامهکننده به بطور کلی دارای دو نوع مشخص90
شرح زیر است:عددیهای کننده مشخص•
صحیححقیقیمختلط
غیرعددیهای کننده مشخص•کاراکترمنطقی
دانشگاه صنعت آب و برق 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
دانشگاه صنعت آب و برق 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.
دانشگاه صنعت آب و برق 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 .از متغیرها می باشد
دانشگاه صنعت آب و برق 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
implicit noneدستور اگر در ابتدای یک برنامه دستورimplicit none
به کار گرفته شود. پیش فرض مربوط به اعالن انواع متغیرها کار نمی کند و باید تمام متغیرها را بدون استثناء اعالن نمود در غیر
اینصورت برنامه خطا می دهد. implicit none integer :: ice, coke real :: var, kind
دانشگاه صنعت آب و برق 16
مقدار اولیه یا آغازین متغیرها با مقادیر نامعین شروع می شوند و ممکن
است در مترجم های مختلف مقادیر متفاوتی اختیار کنند.
مقادیر اولیه خیلی شبیه مقادیر ثابت هستند، اما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
دانشگاه صنعت آب و برق 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'
دانشگاه صنعت آب و برق 19
عملگرها و ترتیب آنهاپذیر شرکتی
عملگرها نوع
راست به چپ
چپ به راست
چپ به راست
)**(توان )*( و ضرب )/(تقسیم )+( و جمع )-(تفریق حسابی
چپ به راست
چپ به راست
چپ به راست
)>(، کوچکتر )>=(کوچکتر یا مساوی )<(، بزرگتر )<=(بزرگتر یا مساوی
)==(، مساوی )/=(نامساوی نسبی
راست به چپ
چپ به راست
چپ به راست
.NOT.
.AND..OR. منطقی
دانشگاه صنعت آب و برق 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
دانشگاه صنعت آب و برق 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!
دانشگاه صنعت آب و برق 22
عبارت و نسبت دادن عبارت: ترکیبی از عملگرها و متغیرها
باشد. می a+2 b*b-4*a*c A>B
( میتوان یک عبارت را =با استفاده از عالمت )به متغیری نسبت داد.
Delta = b*b-4*a*c Area = pi*r**2 count = count+1
انواع عبارات عبارات صحیح
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
دانشگاه صنعت آب و برق 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
در اینجا باید توجه نمود که اگر عدد صحیح برعدد صحیح تقسیم شود، نتیجه آن صحیح خواهد بود اما اگر صورت یا مخرج کسر حقیقی باشد،
آنگاه نتیجه آن حقیقی می باشد.
دانشگاه صنعت آب و برق 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)
دانشگاه صنعت آب و برق 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)
دانشگاه صنعت آب و برق 27
نحوه نوشتن نتایج برنامه برای نوشتن از دستوراتprint و یا write استفاده
می شود. گرامر آنها به صورت زیر است:• print*, expr_1, expr_2, …
ستاره حاکی از این است که خروجی قالب خاصی(format).ندارد
• write(*,*) expr_1, expr_2, ….ستاره دوم مانند باال عمل می کند ستاره اول حاکی ازاین است که نتایج روی صفحه نمایش چاپ
می گردد.
در حاالت زیر چیزی چاپ نمی شود و فقط یک سطر خالی •ایجاد می گردد.
• Print*
• write(*,*)
دانشگاه صنعت آب و برق 28
(1ها ) نحوه خواندن دادهها داخل برنامه ارایه نشده باشد، باید اگر داده
ها را از صفحه نمایش و کلید خواند. داده گرامر دستور خواندنread.به شرح زیر است
read(*,*) var_1, var_2, … در اینجا ستاره دوم، مانند دستورwrite است و
ستاره اول بدین معنی است که داده از صفحه کلید خوانده می شود.
هر بار کهread اجرا می شود، برنامه به سطر جدید می رود.
گرامر ساده دستورreadبه شرح زیر است read*, var_1, var_2, …
ها بدون قالب که ستاره حاکی از آن است که داده(format).خاصی خوانده می شود
دانشگاه صنعت آب و برق 29
(2ها ) نحوه خواندن داده برنامه به محض رسیدن به دستورread
های مورد نظر را از شود تا داده متوقف میها را طریق صفحه کلید بخواند. این داده
می توان در یک سطر با فاصله تایپ نمود و یا آنها را در سطور مخلتف تایپ کرد.
تا تمام متغیرها در دستورread ،خوانده نشود برنامه به کار خود ادامه نخواهد داد و نشانگر
مرتب چشمک می زند.
دانشگاه صنعت آب و برق 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
دانشگاه صنعت آب و برق 31
Text Editor
Compiler
link
lib
Executable Code
Source Code
Object Code User
Library
system
Phase I: Translation
Phase II: Linkage
Phase III: Execution