160 likes | 292 Views
دستور های منطقی مقايسه ای LOGICAL COMPARISON EXPRESION. مقدمه. در فرترن متغير های منطقی با کلمه کليدی LOGICAL مشخص می شوند در C++ با کلمه bool مشخص می شوند اگر bool نباشد: اگر درست باشد مقدار1 و نادرست 0
E N D
دستور های منطقی مقايسه ایLOGICAL COMPARISON EXPRESION دستور های منطقی، عباسپور
مقدمه • در فرترن متغير های منطقی با کلمه کليدی LOGICAL مشخص می شوند • در C++ با کلمه bool مشخص می شوند • اگر bool نباشد: اگر درست باشد مقدار1 و نادرست 0 • فقط دو مقدار .TRUE. و .FALSE. را می گيرند تا اطلاعات بولی Boolean يک متغير را ذخيره نمايند. LOGICAL :: guess, date guess = .true. date = (today_date==5) دستور های منطقی، عباسپور
مثال هايي از دستور های منطقی 5 < 6 !True 5 > 6 !False 5 == 6 !False 5 /= 6 !True 5 <= 6 !True 5 >= 6 !False age > 34 !a variable compared with a constant age /= my age !two variables are compared 45 == your age !a variable can appear in any side name== 'Smith' !characters are allowed alpha(3) /= 33 !array elements are allowed (age*3) /= your_age !expressions are allowed دستور های منطقی، عباسپور
رابط های منطقی در فرترنBoolean Operators • .AND. دو يا چند عبارت منطقی را به هم پيوند می دهد موقعی نتيجه عبارت .TRUE. است که تمام بخش های آن عبارات .TRUE. باشد (.TRUE. ) .AND. (.TRUE.) .TRUE. (.TRUE. ) .AND. (.FALSE.) .AND.(.TRUE.) .FALSE. (salary*0.4>0.0).AND.(age<45) دستور های منطقی، عباسپور
رابط های منطقیBoolean Operators • .OR. جهت پيوند دو يا چند عبارت به گونه ای که موقعی .TRUE. است که حتی اگر تنها يک بخش عبارت .TRUE. باشد (.TRUE. ) .OR. (.TRUE.) .TRUE. (.TRUE. ) .OR. (.FALSE.) .OR.(.TRUE.) .TRUE. IF (name =='Dimitris') .or. (name=='James') .or. (name=='Jim') دستور های منطقی، عباسپور
رابط های منطقیBoolean Operators • .NOT. اين عملگر ارزش منطقی يک عبارت منطقی را عکس می کند. به عبارتی اگر نتيجه عبارتی .TRUE. باشد خروجی عبارت اگر حاوی .NOT. باشد؛ .FALSE. خواهد بود و بر عکس LOGICAL:: date, today Date=.false. Today=.true. IF (.NOT. Date) today=.false. !today set to false دستور های منطقی، عباسپور
رابط های منطقیBoolean Operators • .EQV. جهت اتصال چند عبارت منطقی و نتيجه .TRUE. است اگر ارزش عبارات منطقی يکسان باشد (فرق نمی کند .TRUE. يا .FALSE. ) (5*3>12) .EQV. (6*2>8) نتيجه اين عبارت .TRUE. است دستور های منطقی، عباسپور
رابط های منطقیBoolean Operators • .NEQV. جهت اتصال چند عبارت منطقی و نتيجه .TRUE. است اگر ارزش تنها يکی از عبارات منطقی متفاوت از ديگر عبارات باشد (5*3>12) .NEQV. (6*2>13) نتيجه اين عبارت نيز .TRUE. است در اتصال عبارات منطقی می توان از هر ترکيبی دلخواه از اين عملگر ها استفاده کرد دستور های منطقی، عباسپور
عملگر های منطقی در فرترن و C دستور های منطقی، عباسپور
رابط های منطقی درC دستور های منطقی، عباسپور
عملگر سه تايی شرطی در C • فرم کلی <condition> ?<exp1> :<exp2> اگر شرط درست باشد <exp1> و اگر نادرست باشد <exp2> هر دو می توانند یک کميت و یا یک عبارت محاسباتی باشند a=(k<10) ? 100 :50; اگر k کوچکتر از 10 باشد a برابر 100 در غیر اینصورت برابر 50 خواهد بود معادل: if(k<10) a=100; else a=50; مثال پیچیده تر: c+=(a>0&&a<10) ? a++ : a/b; چنانچه a بین 0 و 10 باشد مقدارc با a جمع شده و سپس به a یک واحد اضافه می شود در غیر اینصورت به c حاصل تقسیم a بر b اضافه خواهد شد. معادل if زیر if(a>0 && a<10){ c=c+a; a=a+1; } else c=c+a/b; بدلیل ناخوانایی برنامه چنین دستوراتی توصیه نمی شود دستور های منطقی، عباسپور
چند نکته در مورد عملگر هادر C • استفاده از فضای اضافی بین عملگر و عملوند مجاز است و باعث خوانایی برنامه می شود • استفاده از جفت پرانتز حتی بصورت اضافی مجاز است و باعث خواناتر شدن برنامه می شود • آگاهی از اولویت عملگر ها نسبت بهم دستور های منطقی، عباسپور
قوانين مربوط به مقايسه کميتهای نويسه ای • ابتدا رشته نويسه ای کوچکتر (از نظر تعدادکاراکتر) با کاراکتر “ “ در سمت راست پر می شود تا طول آنها با هم برابر شود • از سمت چپ کاراکتر، کاراکتر با هم مقايسه می شوند • مقايسه موقعی به پايان می رسد که يا به انتهای رشته ها رسيده باشيم ( با هم برابر هستند) و يا اينکه اولين اختلاف بروز کند دستور های منطقی، عباسپور
ترتيب مقايسه نويسه ها • A < B < ... < Z • a < b < ... < z • 0 < 1 < 2 ... < 9 • همانطور که ملاحظه می شود ارقام قبل از حروف قرار می گيرند • حروف کوچک قبل از حروف بزرگ قرار می گيرند • جا خالی قبل از همه قرار می گيرد • هر چه کاراکتری کوچکتر باشد قبل تر (ديرتر) قرار می گيرد • بر اين اساس Hassani از Hassan بزرگتر است دستور های منطقی، عباسپور
توابع آماده مرتبط با مقايسه متغير های نويسه ایدر فرترن • LGT(string1, string2) !greater than • LGE(string1, string2) !greater than or equal to • LLE(string1, string2) !less than or equal to • LLT(string1, string2) !less than • خروجی تمام اين توابع يک کميت منطقی (.TURE./.FALSE.) است • مقايسه بر اساس توالی در کد ASCII انجام می گيرد • American Standard Code for Information Interchange • کد استاندارد آمريکايي برای تبادل اطلاعات دستور های منطقی، عباسپور
فایل سرآمد توابع نويسه ای در C • String.h توابع مربوط به رشته های نويسه ای را نگهداری می کند دستور های منطقی، عباسپور