آموزش پاسكال - چند مثال
ادامه مطلب
آموزش برنامه نويسي
حلقه هاي تكرار معين:
راهنماي كد:
حلقه هايي هستن كه ما تعداد دفعات تكرار اونها رو مي دونيم. مثلاً مي دونيم كه حلقه چند بار قراره تكرار بشه. براي همين منظور از دستور For استفاده مي كنيم. شكل كلي دستور For به دو شكل زير است:
حلقه صعودي
حلقه نزولي
راهنماي كد:
FirstFoot: منظور از اين كلمه عبارت حد اول هستش.
LastFoot: منظور از اين كلمه عبارت حد آخر هستش.
نكات:
حلقه هاي تكرار نامعين:
اين نوع حلقه زماني به كار مي ره كه ما نمي دونيم حلقه ي ما چند بار قراره تكرار بشه و بر اساس يك شرط اجراي دستورات حلقه انجام مي پذيره.
دستور While:
دستور While يك حلقه تكرار نامعين هستش كه در ابتدا يك شرط رو تست مي كنه و در صورت درستي شرط درستورات درونش اجرا ميشن. در درون اين حلقه بايد يك متغير شمارنده قرار داده بشه تا شرط حلقه رو نقص كنه.(حتماً نبايد يك متغير شمارنده باشه هر عبارتيكه باعث False شدن جواب شرط بشه.) اگر شرط حلقه نقص نشه، حلقه بينهايت بار تكرار ميشه و كنترل اجراي برنامه درون حلقه گير مي كنه كه بايد با كليد تركيبي Ctrl + Break از حلقه خارج شد. شكل كلي استفاده از دستور While به صورت زير هستش:
نكات:
دستور Repeat ... Until:
اين دستور نيز مانند دستور While عمل مي كنه اما با اين تفاوت كه براي اجراي دستورات درون حلقه جواب شرط بايد False بشه. اگه True بشه دستورات اجرا نميشن و كنترل اجراي برنامه از حلقه خارج ميشه. همچنين نكته اي كه بايد بگم اين هستش كه دستورات درون حلقه اول يكبار اجرا ميشن و بعد شرط تست ميشه. يعني شرط در انتهاي حلقه تست ميشه. شكل كلي استفاده از دستور Repeat ... Until به شكل زير است:
نكات:
دستور Break:
اين دستور سبب ميشه كه ما در وسط حلقه از حلقه خارج بشيم. يعني كنترل اجراي برنامه رو از درون حلقه خارج و به بعد از آخرين دستور بدنه حلقه مي بره. اگر درون يه حلقه داخلي يا تودر تو باشيم از داخلي ترين حلقه خارج ميشه.
دستور Countinue:
اين دستور باعث ميشه تا كنترل اجراي برنامه به ابتداي حلقه جاري بره و دستورات دوباره اجرا ميشن.
بدليل نزديكي كنكور خيلي كم به اينترنت ميام. اگر دير به دير آپ مي كنم شرمنده!
دستور شرطي If:
به وسيله اين دستور مي توان يکسري شرط را تست کرد و براساس نتيجه شرط توسط کنترل اجراي برنامه دستورات اجرا مي شوند. ساختار کلي استفاده از دستور زير در حالت زير است:
* در حالت اول ابتدا شرط مورد نظر يعني Condition تست مي شود و در صورت درستي شرط (True بودن) دستور بعد از Then اجرا مي شود و در صورت نادرستي شرط دستور بعد از Else اجرا مي شود.
* حالت دوم زماني به کار مي رود که تعداد دستورات ما بيش از 1 دستور باشد اون وقته که بايد اونها رو به صورت بلوک بندي بنويسيم يعني درون يه Begin و ;End قرار بديم بازم مي گم که فقط END پاياني به نقطه ختم ميشه و اين دوستورات بلوک بندي شده به سميکالون ختم ميشن.
شرط هاي متداخل يا If هاي تودرتو:
بعضي اوقات نياز هستش که ما از چند شرط تودرتو استفاده کنيم يعني در يک شرط بخواهيم دو سه شرط ديگر را نيز تست کنيم. شکل کلي استفاده از اين نوع شرط به صورت زير است:
* نکته 1 : استفاده از سميکالون در دستوري که بعد از آن Else قرار دارد مجاز نمي باشد و پيغام خطا صادر مي گردد. آره داداش اينجوريه.
* نکته 2 : استفاده از دستور1، Else و دستور 2 اختياري مي باشد.
* نکته 3 : اگر دستورات بيش از 1 دستور بود بايد درون بلوک قرار بگيرند
* نکته 4 : نتيجه شرط هميشه مقداريست منطقي
دستور شرطي Case:
استفاده از شرط هاي تودرتو باعث کاهش خوانايي کد برنامه ميشه و در برخي مواقع براي برنامه نويس دچار دردسر ميشه . پس روشي براي استفاده از شرطهاي تودرتو در پاسکال وجود داره که کار ما رو رااحت مي کنه و اونم استفاده از دستور Case هستش. حالت کلي استفاده از دستور Case به صورت زير هستش
Case و OF دو کلمه کليدي هستن و Condition عبارت مورد شرط ما هستش. کنترل اجراي برنامه شرط رو تست مي کنه و در صورت درست بودن شروع به مقايسه مقادير مختلف در Caseهاي مختلف مي کنه. اگر عبارت مورد شرط با مقدار اول(FirstValue) برابر بود دستورات بعد از اين مقدار اجرا مي شوند. اگر عبارت مورد شرط با مقدار دوم برابر بود دستورات بعد از اين مقدار اجرا مي شوند و اين مقايسه اين قدر انجام ميگيرد تا به
;END برسد و کنترل اجراي برنامه از شرط خارج ميشه.
* نکته 1 : عبارت مورد شرط حتماً بايد از نوع اسکالر و يا 1 يا 2 بايتي باشه در غير اينصورت پيغام خطا صادر ميشه.
1 يا 2 بايتي ها: Byte-Integer - Boolean - Word - Char و غيره...
اسکالر يعني مقداري که قابل شمارش باشه.
* نکته 2 : حتماً در انتهاي دستور بايد از ;END استفاده بشه. هميني که هست مي خواي بخواه نمي خواي ...
* نکته 3 : در صورتي که دستورات بعد از مقادير بيش از 1 دستور باشه بايد به صورت بلوک بندي نوشته بشن. مثل:
*
نکته 4 : در صورتيکه عبارت مورد شرط با اولين مقدار مطابقت داشت دستور بعد از آن اجرا مي شود
در دستورات بالا اولين Case اجرا مي شود و دستورات بعدي حتي كامپايل هم نمي شوند.
| کد رنگ |
نام ثابت |
رنگ |
| 0 |
Black |
سياه |
| 1 |
Blue |
آبي |
| 2 |
Green |
سبز |
| 3 |
Cyan |
فيروزه اي |
| 4 |
Red |
قرمز |
| 5 |
Magenta |
صورتي |
| 6 |
Brown |
قهوه اي |
| نمي دونم |
Yellow |
زرد |
| نمي دونم |
White |
سفيد |
برنامه اي بنويسي تا دو عدد را از ورودي دريافت کند و آنها را مستقيماً در خروجي چاپ کند.
برنامه اي بنويسيد تا از ورودي يک عدد اعشاري، يک عدد صحيح، يک رشته و يک کاراکتر دريافت و در خروجي چاپ نمايد.
برنامه اي بنويسيد تا از ورودي نام، نام خانوادگي، سن و معدل را از ورودي دريافت و هر کدام را جداگانه چاپ کند.
برنامه اي بنويسيد تا شعاع يک دايره را از ورودي دريافت و محيط و مساحت آن را محاسبه و در خروجي چاپ نمايد.
|
نام عملگر |
وظيفه عملگر |
اولويت اجرا |
مثال |
|
* |
ضرب |
1 |
12 = 6 * 2 |
|
/ |
تقسيم |
1 |
12 = 2 / 24 |
|
Mod |
باقيمانده |
2 |
3 = 3 Mod 11 |
|
Div |
خارج قسمت |
3 |
11 Div 3 = 3 |
|
+ |
جمع |
4 |
5+4=9 |
|
- |
تفريق |
4 |
11-9=2 |
| نام عملگر |
مفهوم |
مثال |
نتيجه |
| < |
بزرگتر از |
12 > -4 |
درست |
| > |
کوچکتر از |
9 < 52 |
درست |
| < = |
بزرگتر يا مساوي |
5 <=5 |
درست |
| > = |
کوچکتر يا مساوي |
0 >= 0 |
درست |
| <> |
مخالف |
12<> 3 |
درست |
| = |
مساوي |
4 = 4 |
درست |
| نام عملگر | وضيفه عملگر | اولويت اجرا |
| NOT | نقص | 1 |
| AND | و | 2 |
| OR | يا | 3 |
| XOR | يا انحصاري | 3 |
نحوه عمل اين عملگرها به اينصورت هستند:
NOT: نتيجه يک مقدار منقي را نقص مي کنيد و آن را مخالف نتيجه موجود قرار مي دهد. يعني اگر يک مقدار منطقي عبارتي برابر True باشد آن را False مي کند و اگر يک مقدار منطقي عبارتي False باشد آن را True مي کند.
AND: يک مقدار منطقي را در يک مقدار منطقي ديگر ضرب مي کند.
OR: يک مقدار منطقي را با يک مقدار منطقي ديگر جمع مي کند.
XOR: مقادير مشابه به هم دو مقدار منطقي را False ميدهد و مقادير غير مشابه به هم را True مي دهد.
مقدار منطقي چيست؟
مقدار منطقي مقداري است که داراي يکي از حالات درستي يا نادرستي (True,False) مي باشد. توجه شود که فقط يکي از اين مقادير را مي تواند بپذيرد زيرا کامپيوتر فقط اين مقادير را مي فهمد و يکي را قبول مي کند.
مقدار عددي يک مقدار منطقي به اينصورت است که False برابر 0 (False=0) و True برابر 1 است (True=1) و هر مقدار غير 0 در محور مختصات برابر Trueمي شود.
اگر x و y دو مقدار منطقي باشند نتيجه آنها با توجه به مقادير داده شده در پاسکال به اينصورت خواهند بود:
| x XOR y | x OR y | x AND y | NOT x |
y | x |
| F | T | T | F | T | T |
| T | T | F | F | F | T |
| T | T | F | T | T | F |
| F | F | F | T | F | F |
تمرين: اگر A و B دو مقدار منطقي باشند با توجه به عبارت زير کدام يک از گزينه هاي زير صحيح است؟
A = False , B = False
NOT (A OR B) { PAS
الف) A <= B ) > B
ب) A AND NOT(B)
ج) A OR B
د) NOT (A) AND B
جواب صحيح گزينه الف!
| نوع داده |
محدوده تغییر |
میزان حافظه اشغالی |
| Byte |
0 تا 255 |
1 بایت |
| ShortInt |
-127 تا +127 |
1 بایت |
| Integer |
-32768 تا +32767 |
2 بایت |
| Word |
0 تا 65535 |
2 بایت |
| LongInt |
نمی دونم ولی خیلی زیاد |
4 بایت |
| نوع داده |
محدوده تغییر |
میزان حافظه اشغالی |
| Single |
7 تا 8 رقم اعشار |
4 بایت |
| Real |
11 تا 12 رقم اعشار |
6 بایت |
| Double |
15 تا 16 رقم اعشار |
8 بایت |
| نوع داده |
محدوده |
میزان حافظه اشغالی |
| Char |
1 کاراکتر |
1 بایت |
| نوع داده |
محدوده |
میزان حافظه اشغالی |
| String {طول ثابت} |
80 کارااکتر |
طول رشته |
| String {طول متغیر} |
255 کاراکتر |
طول رشته |
| نوع داده |
محدوده تغییر |
میزان حافظه اشغالی |
| Boolean |
True - False |
1 بایت |