lecture 6.pdf

‫دستور‬
‫‪Case‬‬
‫انواع داده‬
‫تکمیل مطالب گذشته‬
‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﭘﺎﺳﻜﺎل ‪ -‬ﺟﻠﺴﻪ ﺷﺸﻢ‬
‫ﻣﺪرس‪ :‬ﻧﻮري‬
‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫آﺑﺎن‬
‫‪1 / 26‬‬
‫آبان ‪88‬‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫‪Case‬‬
‫انواع داده‬
‫تکمیل مطالب گذشته‬
‫انواع داده‬
‫انواع مختلف داده‬
‫‪• Integer‬‬
‫‪• Real‬‬
‫‪• Boolean‬‬
‫‪• Char‬‬
‫‪• String‬‬
‫‪2 / 26‬‬
‫آبان ‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫نوع داده‬
‫•‬
‫•‬
‫•‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫انواع داده‬
‫نوع داده‬
‫‪Char‬‬
‫ﻛﻮﭼﻚﺗﺮﻳﻦ ﻧﻮع داده اﺳﺖ )ﻳﻚ ﺑﺎﻳﺖ(‪.‬‬
‫ﺑﺮاي ذﺧﻴﺮه ﻛﺎراﻛﺘﺮﻫﺎي ﻧﻤﺎﻳﺸﻲ )ﻣﺜﻞ ﺣﺮف‪ ،‬رﻗﻢ و ﻋﻼﻳﻢ ﺧﺎص(‬
‫اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬
‫ﻫﺮ ﻛﺎراﻛﺘﺮ در داﺧﻞ ﻳﻚ ‪ (’) Signle Quote‬ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬
‫•‬
‫از ﻧﻤﻮﻧﻪﻫﺎي ﻛﺎراﻛﺘﺮ ﻣﻲﺗﻮان ﺑﻪ‬
‫و ’&’ اﺷﺎره ﻛﺮد‪.‬‬
‫•‬
‫ﻓﺎﺻﻠﻪ ﺧﺎﻟﻲ ﻳﻚ ﻛﺎراﻛﺘﺮ اﺳﺖ و ﺑﺎ‬
‫•‬
‫ﻳﻜﻲ از ﭘﺮﻛﺎرﺑﺮدﺗﺮﻳﻦ ﻣﺠﻤﻮﻋﻪ ﻛﺎراﻛﺘﺮﻫﺎ‪ ،‬ﻣﺠﻤﻮﻋﻪ اﺳﻜﻲ )‪(ASCII‬‬
‫اﺳﺖ‪.‬‬
‫‪3 / 26‬‬
‫‪Char‬‬
‫آبان ‪88‬‬
‫’‪’$’ ’+’ ،’*’ ،’0’ ،’a’ ،’A‬‬
‫’‬
‫’ ﻧﺸﺎن داده ﻣﻲﺷﻮد‪.‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫‪Case‬‬
‫جدول‬
‫‪4 / 26‬‬
‫تکمیل مطالب گذشته‬
‫نوع داده‬
‫کاراکترهای ‪ASCII‬‬
‫آبان ‪88‬‬
‫انواع داده‬
‫برنامهنویسی پاسکال‬
‫‪Char‬‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫مجموعه کاراکترهای‬
‫انواع داده‬
‫نوع داده‬
‫‪ASCII‬‬
‫•‬
‫ﻫﺮ ﻳﻚ از ‪ 128‬ﻣﻘﺪار ﻣﺠﻤﻮﻋﻪ ﻛﺎراﻛﺘﺮﻫﺎي ‪ ASCII‬ﻧﺸﺎندﻫﻨﺪه‬
‫ﻳﻜﻲ از ﻛﺎراﻛﺘﺮﻫﺎﺳﺖ‪.‬‬
‫•‬
‫ﻣﺜﻼً ﻣﻘﺪار ‪ 65‬ﻧﻤﺎﻳﻨﺪه ’‪ ’A‬و ﻣﻘﺪار ‪ 43‬ﻧﻤﺎﻳﻨﺪه ’‪ ’+‬اﺳﺖ‪.‬‬
‫•‬
‫ﻫﺮ ﻛﺎراﻛﺘﺮ‪ ،‬ﻣﺤﻞ ﻣﺸﺨﺼﻲ در ﺗﺮﺗﻴﺐ ﺑﻴﻦ ﻛﺎراﻛﺘﺮﻫﺎ در اﻳﻦ‬
‫ﻣﺠﻤﻮﻋﻪ دارد‪.‬‬
‫‪5 / 26‬‬
‫آبان ‪88‬‬
‫‪Char‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫مجموعه کاراکترهای‬
‫انواع داده‬
‫نوع داده‬
‫‪ASCII‬‬
‫•‬
‫ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ ﻣﻘﺪار ﻣﻲﺗﻮان ﻛﺎراﻛﺘﺮﻫﺎ را ﺑﺎ ﻫﻢ ﻣﻘﺎﻳﺴﻪ ﻛﺮد‪.‬‬
‫•‬
‫ﻣﺜﻼً ’‪ ’B‬ﻛﻪ ﺑﺎ ﻣﻘﺪار ‪ 66‬ﻣﺸﺨﺺ ﻣﻲﺷﻮد از ’‪ ’A‬ﺑﺰرﮔﺘﺮ اﺳﺖ‪.‬‬
‫•‬
‫’‪ ’+‬از ’‪ ’A‬ﻛﻮﭼﻜﺘﺮ اﺳﺖ زﻳﺮا ‪ 43‬از ‪ 65‬ﻛﻮﭼﻜﺘﺮ اﺳﺖ‪.‬‬
‫•‬
‫‪ 32‬ﻛﺎراﻛﺘﺮ اول ﺟﺪول ﻛﺎراﻛﺘﺮﻫﺎي ‪ ASCII‬ﻗﺎﺑﻞ ﭼﺎپ ﻧﻴﺴﺘﻨﺪ‪.‬‬
‫•‬
‫‪14‬اﻣﻴﻦ ﻛﺎراﻛﺘﺮ )ﻛﺎراﻛﺘﺮ ‪ (13‬ﻛﺎراﻛﺘﺮ ﺧﻂ ﺟﺪﻳﺪ اﺳﺖ‪.‬‬
‫‪6 / 26‬‬
‫آبان ‪88‬‬
‫‪Char‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫مجموعه کاراکترهای‬
‫•‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫انواع داده‬
‫نوع داده‬
‫‪ASCII‬‬
‫ﺗﺎﺑﻊ ‪ Ord‬ﺷﻤﺎره ﺗﺮﺗﻴﺐ ﻳﻚ ﻛﺎراﻛﺘﺮ را در ﻣﺠﻤﻮﻋﻪ‬
‫ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫‪ASCII‬‬
‫•‬
‫ﻣﺜﻼً )’‪ Ord(’B‬ﻣﻘﺪار ‪ 66‬را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫•‬
‫ﺗﺎﺑﻊ ‪ Chr‬ﻛﺎراﻛﺘﺮ ﺑﺎ ﺷﻤﺎره ﺗﺮﺗﻴﺐ داده ﺷﺪه را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫•‬
‫ﻣﺜﻼً )‪ Chr(66‬ﻛﺎراﻛﺘﺮ ’‪ ’B‬را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫‪7 / 26‬‬
‫آبان ‪88‬‬
‫‪Char‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫‪Case‬‬
‫تکمیل مطالب گذشته‬
‫انواع داده‬
‫نوع داده‬
‫استفاده از متغیرهای کاراکتری‬
‫‪Char‬‬
‫‪var‬‬
‫;‪A, B : Char‬‬
‫;‪Ch : Char‬‬
‫‪begin‬‬
‫;’‪A := ’A‬‬
‫;’‪A := ’B‬‬
‫;’*’ =‪A :‬‬
‫;))‪WriteLn(Ord(A‬‬
‫;‪B := A‬‬
‫}’ ’{ ;)‪Ch := Chr(32‬‬
‫;)‪ReadLn(Ch‬‬
‫)‪Read(Ch‬‬
‫‪end.‬‬
‫‪8 / 26‬‬
‫آبان ‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫‪Case‬‬
‫انواع داده‬
‫تکمیل مطالب گذشته‬
‫نوع داده‬
‫نوع داده رشته‬
‫•‬
‫ﻳﻚ رﺷﺘﻪ دﻧﺒﺎﻟﻪاي ﺑﻪ ﻃﻮل ﺻﻔﺮ ﻳﺎ ﺑﻴﺸﺘﺮ از ﻛﺎراﻛﺘﺮﻫﺎﺳﺖ‪.‬‬
‫•‬
‫رﺷﺘﻪﻫﺎ در ﭘﺎﺳﻜﺎل در ﺑﻴﻦ دو ﻋﻼﻣﺖ ’ ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬
‫•‬
‫رﺷﺘﻪ ﺑﻪ ﻃﻮل ﺻﻔﺮ‪ ،‬رﺷﺘﻪ ﺗﻬﻲ )‪ (null‬ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد و ﺑﻪ ﺻﻮرت‬
‫” ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬
‫•‬
‫ﻫﺮ ﻛﺎراﻛﺘﺮ در ﻳﻚ رﺷﺘﻪ‪ ،‬ﻣﺤﻞ ﻣﺸﺨﺼﻲ دارد‪.‬‬
‫•‬
‫اوﻟﻴﻦ ﻛﺎراﻛﺘﺮ در رﺷﺘﻪ در ﻣﺤﻞ ‪ ،1‬دوﻣﻴﻦ ﻛﺎراﻛﺘﺮ در ﻣﺤﻞ ‪ 2‬و‬
‫‪ ...‬ﻗﺮار دارﻧﺪ‪.‬‬
‫•‬
‫ﻃﻮل ﻳﻚ رﺷﺘﻪ‪ ،‬ﺗﻌﺪاد ﻛﺎراﻛﺘﺮﻫﺎي ﺗﺸﻜﻴﻞ دﻫﻨﺪه آن اﺳﺖ‪.‬‬
‫‪9 / 26‬‬
‫آبان ‪88‬‬
‫برنامهنویسی پاسکال‬
‫‪Char‬‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫استفاده از متغیرهای کاراکتری‬
‫انواع داده‬
‫نوع داده‬
‫‪Char‬‬
‫‪var‬‬
‫;‪A, B : String‬‬
‫;‪St : String‬‬
‫‪begin‬‬
‫;’‪A := ’ABCDEF‬‬
‫;’‪A := ’B‬‬
‫;’)‪A := ’*(ABC‬‬
‫;)‪WriteLn(A‬‬
‫;‪B := A‬‬
‫;)‪ReadLn(A‬‬
‫)‪Read(A, B‬‬
‫‪end.‬‬
‫‪10 / 26‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫انواع داده‬
‫دستور شرط‬
‫تکمیل مطالب گذشته‬
Case
‫دستور‬
‫ چند انتخابی‬if ‫ تو در تو به‬if ‫تبدیل‬
if Single then
if Gender = ’M’then
if (Age >= 18) and Age <= 26) then
WriteLn(’Current person satisfies the critieria
if Single and (Gender = ’M’) and
(Age >= 18) and Age <= 26) then
WriteLn(’Current person satisfies the critieria.’)
‫ نوری‬:‫)دانشگاه صنعتی شریف( مدرس‬
‫برنامهنویسی پاسکال‬
88
‫آبان‬
11 / 26
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫انواع داده‬
‫دستور شرط‬
‫مثال‬
‫•‬
‫•‬
‫•‬
‫‪12 / 26‬‬
‫اﮔﺮ در ﺗﺎﺑﺴﺘﺎن ﺑﻴﺸﺘﺮ از ‪ 2000$‬درآﻣﺪ داﺷﺘﻴﺪ و ﻧﻤﺮه ﺷﻤﺎ از‬
‫‪ 1300‬ﺑﻴﺸﺘﺮ ﺷﺪ‪ ،‬ﻣﻲﺗﻮاﻧﻴﺪ ﺑﻪ داﻧﺸﮕﺎه ﻣﻮرد ﻋﻼﻗﻪ ﺧﻮد ﺑﺮوﻳﺪ‪.‬‬
‫اﮔﺮ ﻧﻤﺮه ﺷﻤﺎ از ‪ 1300‬ﻛﻤﺘﺮ ﺷﺪ وﻟﻲ ﺣﻘﻮق ﺷﻤﺎ ﺑﻴﺸﺘﺮ از‬
‫‪ 2000$‬ﺑﺎﺷﺪ‪ ،‬داﻧﺸﮕﺎه ﺧﻮد را ﺑﻪ ﺷﻤﺎ ﭘﻴﺸﻨﻬﺎد ﻣﻲﻛﻨﻨﺪ‪.‬‬
‫اﮔﺮ ﺣﻘﻮق ﺷﻤﺎ در ﺗﺎﺑﺴﺘﺎن از ‪ 2000$‬ﺑﻴﺸﺘﺮ ﻧﺒﻮد‪ ،‬ﻓﻘﻂ ﻣﻲﺗﻮاﻧﻴﺪ‬
‫ﺑﻪ داﻧﺸﮕﺎه ﻣﺤﻞ ﺳﻜﻮﻧﺖﺗﺎن ﺑﺮوﻳﺪ‪.‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫انواع داده‬
‫تکمیل مطالب گذشته‬
‫دستور شرط‬
Case
‫دستور‬
(‫ تو در تو‬if) ‫مثال‬
if Earning > 2000 then
if SAT > 1300 then
WriteLn(’Apply to first-choice college.’)
else
WriteLn(’Apply to parents alma mater.’)
else
WriteLn(’Apply to local college.’)
‫ نوری‬:‫)دانشگاه صنعتی شریف( مدرس‬
‫برنامهنویسی پاسکال‬
88
‫آبان‬
13 / 26
‫انواع داده‬
‫تکمیل مطالب گذشته‬
‫دستور شرط‬
Case
‫دستور‬
(‫ چند انتخابی‬if) ‫مثال‬
if (Earning > 2000) and (SAT > 1300) then
WriteLn(’Apply to first-choice college.’)
else if (Earning > 2000) then
WriteLn(’Apply to parents alma mater.’)
else
WriteLn(’Apply to local college.’)
‫ نوری‬:‫)دانشگاه صنعتی شریف( مدرس‬
‫برنامهنویسی پاسکال‬
88
‫آبان‬
14 / 26
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫نتیجه عبارات ریاضی‬
‫محاسبه عبارات‬
‫‪B‬‬
‫‪2‬‬
‫‪102 div 100‬‬
‫‪102 mod 100‬‬
‫‪Z - (A + B div 2) + W * Y‬‬
‫‪A div‬‬
‫‪+‬‬
‫‪W‬‬
‫‪Y‬‬
‫انواع داده‬
‫‪7 div 2 / 3‬‬
‫‪Z‬‬
‫‪7 / 2 div 3‬‬
‫‪-‬‬
‫*‬
‫‪+‬‬
‫‪15 / 26‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫نتیجه عبارات ریاضی‬
‫مدار کوتاه در عبارات بولی‬
‫•‬
‫•‬
‫‪16 / 26‬‬
‫انواع داده‬
‫در ﺗﻮرﺑﻮ ﭘﺎﺳﻜﺎل‪ ،‬ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض در اوﻟﻴﻦ زﻣﺎﻧﻲ ﻛﻪ ﻧﺘﻴﺠﻪ‬
‫ﻳﻚ ﻋﺒﺎرت ﺑﻮﻟﻲ ﻣﺸﺨﺺ ﺑﺎﺷﺪ‪ ،‬ﻛﺎر ﻣﺤﺎﺳﺒﻪ آن ﺧﺎﺗﻤﻪ ﻣﻲﻳﺎﺑﺪ‪.‬‬
‫در ﺻﻮرت ﻧﻴﺎز ﻣﻲﺗﻮان اﻳﻦ ﺗﻨﻈﻴﻢ را ﺗﻐﻴﻴﺮ داد‪.‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫انواع داده‬
‫نتیجه عبارات ریاضی‬
‫مدار کوتاه در عبارات بولی‬
‫‪if (X <> 0) and (Y / X > 50) then‬‬
‫‪. . .‬‬
‫•‬
‫•‬
‫اﮔﺮ ‪ X = 0‬و ﺷﺮط دوم ﺑﺮرﺳﻲ ﺷﻮد )ﻛﻪ در ﺣﺎﻟﺖ ﻋﺎدي ﺑﺮرﺳﻲ‬
‫ﻧﻤﻲﺷﻮد(‪ ،‬ﺧﻄﺎي ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ رخ ﻣﻲدﻫﺪ‪.‬‬
‫ﺑﺮاي ﻋﺪم ﺑﺮوز ﭼﻨﻴﻦ ﻣﺸﻜﻠﻲ ﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮﻫﺎي ﺑﺪون ﻣﺪار ﻛﻮﺗﺎه‪،‬‬
‫ﻣﻲﺗﻮان ﺷﺮط را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ داد‪.‬‬
‫‪if (X <> 0) then‬‬
‫‪if (Y / X > 50) then‬‬
‫‪. . .‬‬
‫‪17 / 26‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫انواع داده‬
‫دستور‬
‫دستور ‪Case‬‬
‫•‬
‫•‬
‫•‬
‫‪18 / 26‬‬
‫‪Case‬‬
‫اﻳﻦ دﺳﺘﻮر‪ ،‬ﻣﺎﻧﻨﺪ ‪ if‬ﻣﻲﺗﻮاﻧﺪ ﺑﺮاي اﻧﺘﺨﺎب ﻳﻜﻲ از ﭼﻨﺪ ﺣﺎﻟﺖ‬
‫اﺳﺘﻔﺎده ﺷﻮد‪.‬‬
‫زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮد ﻛﻪ اﻧﺘﺨﺎب ﺑﺮ اﺳﺎس ﻳﻚ ﻣﺘﻐﻴﺮ ﻳﺎ ﻋﺒﺎرت‬
‫ﺳﺎده از ﻧﻮع ﺗﺮﺗﻴﺒﻲ اﺳﺖ‪ .‬ﻳﻌﻨﻲ ﻣﻲﺗﻮان ﻫﻤﻪ ﻣﻘﺎدﻳﺮ آن را ﻟﻴﺴﺖ‬
‫ﻛﺮد‪.‬‬
‫ﻳﻌﻨﻲ ‪ Boolean ،Integer‬و ‪.Char‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫انواع داده‬
Case
‫تکمیل مطالب گذشته‬
‫دستور‬
Case
‫دستور‬
(‫روزهای هفته )عددی‬
case DayNumber of
1, 7 : Gross := Hours * 1.5 * DailyRate;
2, 3, 4, 5, 6 : Gross := Hours * DailyRate
end; {case}
if (DayNumber = 1) or (DayNumber = 7) then
Gross := Hours * 1.5 * DailyRate
else if (DayNumber = 2) or
(DayNumber = 3) or
(DayNumber = 4) or
(DayNumber = 5) then
Gross := Hours * DailyRate
‫ نوری‬:‫)دانشگاه صنعتی شریف( مدرس‬
‫برنامهنویسی پاسکال‬
88
‫آبان‬
19 / 26
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫انواع داده‬
‫دستور‬
‫روزهای هفته )عددی(‬
‫‪Case‬‬
‫‪case DayNumber of‬‬
‫;‪1, 7 : Gross := Hours * 1.5 * DailyRate‬‬
‫‪2, 3, 4, 5, 6 : Gross := Hours * DailyRate‬‬
‫‪2..6 : Gross ...‬‬
‫}‪end; {case‬‬
‫‪20 / 26‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫انواع داده‬
Case
‫تکمیل مطالب گذشته‬
‫دستور‬
Case
‫دستور‬
‫ با نوع کاراکتر‬case ‫دستور‬
case MomOrDad of
’M’, ’m’: WriteLn(’Hello Mom’);
’D’, ’d’: WriteLn(’Hello Dad’)
end; {case}
if (MomOrDad = ’M’) or (MomOrDad = ’m’) then
WriteLn(’Hello Mom’)
else if (MomOrDad = ’D’) or (MomOrDad = ’d’)
WriteLn(’Hello Dad’)
‫ نوری‬:‫)دانشگاه صنعتی شریف( مدرس‬
‫برنامهنویسی پاسکال‬
88
‫آبان‬
21 / 26
‫انواع داده‬
Case
‫تکمیل مطالب گذشته‬
Case
‫دستور‬
Case
‫دستور‬
‫ دستور‬Syntax
case selector of
label1 : Statement1;
label2 : Statement2;
.
.
.
labeln : Statementn
;
else
Statemente
end {case}
‫ نوری‬:‫)دانشگاه صنعتی شریف( مدرس‬
‫برنامهنویسی پاسکال‬
88
‫آبان‬
22 / 26
‫انواع داده‬
Case
‫تکمیل مطالب گذشته‬
‫دستور‬
Case
Case ‫در‬
‫دستور‬
‫دستورات ترکیبی‬
case N of
1, 2 : begin
Write(’1, 2, ’);
WriteLn(’Buckle my shoe’)
end; {1, 2}
3, 4 : WriteLn(’3, 4, Shut the door’);
5, 6 : WriteLn(’5, 6, Pick up sticks’)
else
WriteLn(N, ’is out of range’)
end; {case}
‫ نوری‬:‫)دانشگاه صنعتی شریف( مدرس‬
‫برنامهنویسی پاسکال‬
88
‫آبان‬
23 / 26
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫نکاتی در مورد‬
‫•‬
‫•‬
‫انواع داده‬
‫دستور‬
‫‪Case‬‬
‫اﮔﺮ ﻫﻴﭻﻳﻚ از ﺷﺮاﻳﻂ ﻗﺒﻞ از ‪ else‬ﺑﺮﻗﺮار ﻧﺒﻮدﻧﺪ‪ ،‬دﺳﺘﻮر ﺑﻌﺪ از‬
‫‪ else‬اﺟﺮا ﻣﻲﺷﻮد )در ﺻﻮرت وﺟﻮد ‪.(else‬‬
‫در ﭘﺎﺳﻜﺎل اﺳﺘﺎﻧﺪارد ‪ else‬وﺟﻮد ﻧﺪارد‪ ،‬و اﮔﺮ ﻫﻴﭻﻳﻚ از ﺷﺮاﻳﻂ‬
‫‪ case‬ﺑﺮﻗﺮار ﻧﺒﺎﺷﺪ‪ ،‬ﻳﻚ ﺧﻄﺎي زﻣﺎن اﺟﺮا رخ ﻣﻲدﻫﺪ‪.‬‬
‫•‬
‫ﻫﺮ ﻣﻘﺪار ﺣﺪاﻛﺜﺮ ﻣﻲﺗﻮاﻧﺪ در ﻳﻚ ‪ label‬ﻗﺮار ﺑﮕﻴﺮد‪) .‬اﮔﺮ ﺑﻴﺸﺘﺮ‬
‫ﺷﻮد ﭼﻪ اﺗﻔﺎﻗﻲ ﻣﻲاﻓﺘﺪ؟(‬
‫•‬
‫‪ case‬ﺧﻮاﻧﺎﺗﺮ و ﻛﺎراﺗﺮ اﺳﺖ‪ ،‬وﻟﻲ ‪ if‬ﻗﺪرت ﺑﻴﺸﺘﺮي دارد‪.‬‬
‫‪24 / 26‬‬
‫‪Case‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫محافظت از‬
‫•‬
‫انواع داده‬
‫دستور‬
‫دستور ‪case‬‬
‫‪Case‬‬
‫ﮔﺎﻫﻲ اوﻗﺎت ﻣﺤﺎﻓﻈﺖ از دﺳﺘﻮر ‪ case‬در ﻣﻘﺎﺑﻞ وروديﻫﺎي‬
‫ﻏﻴﺮﻣﻌﺘﺒﺮ ﺿﺮوري ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫‪if (DayNumber >= 1) and (DayNumber <= 7) then‬‬
‫‪case DayNumber of‬‬
‫;‪1, 7 : Gross := Hours * 1.5 * DailyRate‬‬
‫‪2..6 : Gross := Hours * DailyRate‬‬
‫‪end‬‬
‫‪else‬‬
‫)’‪WriteLn(’invalid day number.‬‬
‫‪25 / 26‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬
‫دستور‬
‫تکمیل مطالب گذشته‬
‫‪Case‬‬
‫تبدیل دستور‬
‫انواع داده‬
‫دستور‬
‫‪ if‬به ‪case‬‬
‫‪Case‬‬
‫‪case X = Y of‬‬
‫;)’‪True : WriteLn(’Equal‬‬
‫)’‪False : WriteLn(’Unequal‬‬
‫}‪end {case‬‬
‫‪26 / 26‬‬
‫آبان‬
‫‪88‬‬
‫برنامهنویسی پاسکال‬
‫)دانشگاه صنعتی شریف( مدرس‪ :‬نوری‬