مقدمه آموزشی
pawn زبان برنامهنویسی سادهای است با نحوی که یادآور زبان برنامهنویسی "C" است. برنامه pawn شامل مجموعهای از توابع و مجموعهای از متغیرها است. متغیرها اشیاء داده هستند و توابع حاوی دستورالعملهایی (به نام "statement" ها) هستند که روی اشیاء داده عمل میکنند یا وظایفی انجام میدهند.
اولین برنامه در تقریباً هر زبان کامپیوتری برنامهای است که رشته سادهای چاپ میکند؛ چاپ "Hello world" مثال کلاسیکی است. در pawn، برنامه اینگونه خواهد بود:
فهرست: hello.p
main()
printf "Hello world\n"
این کتابچه راهنما فرض میکند که میدانید چگونه برنامه pawn اجرا کنید؛ اگر نمیدانید، لطفاً کتابچه راهنمای برنامه کاربردی را مطالعه کنید (راهنماییهای بیشتر در صفحه 168 است).
برنامه pawn اجرا را در تابع "ورودی"∗ شروع میکند —در تقریباً همه مثالهای این کتابچه راهنما، این تابع ورودی "main" نامیده میشود. اینجا، تابع main فقط شامل یک دستور است که در خط زیر خود سر تابع قرار دارد. شکست خط و تورفتگی بیاهمیت هستند؛ فراخوانی تابع print میتوانست به همان خوبی در همان خط سر تابع main باشد.
تعریف تابع نیاز دارد که جفت پرانتز بعد از نام تابع بیاید. اگر تابع پارامتر میگیرد، اعلانهایشان بین پرانتزها ظاهر میشوند. تابع main هیچ پرانتزی نمیگیرد. قوانین برای فراخوانی تابع (یا فراخوانی تابع) متفاوت هستند؛ پرانتزها در فراخوانی تابع print اختیاری هستند.
آرگومان تکی تابع print رشتهای است که باید در گیومه دوتایی محصور شود. کاراکترهای \n نزدیک انتهای رشته دنباله escape تشکیل میدهند، در این مورد آنها نماد "newline" را نشان میدهند. وقتی print با دنباله escape newline برخورد میکند، مکاننما را به اولین ستون خط بعدی میبرد. باید از دنباله escape \n برای درج "newline" در رشته استفاده کرد، چون رشته نمیتواند روی چند خط پیچیده شود.
∗ این نباید با توابع ورودی "state" که entry نامیده میشوند اشتباه گرفته شود، اما منظور متفاوتی دارند — صفحه 42 را ببینید.
کامپایل و اجرای اسکریپتها: صفحه 168 را ببینید
رشتههای literal: 99 دنباله Escape: 99
pawn زبان "حساس به case" است: حروف بزرگ و کوچک حروف متفاوت در نظر گرفته میشوند. اشتباه خواهد بود اگر نام تابع printf در مثال بالا را "PrintF" بنویسید. کلمات کلیدی و نمادهای از پیش تعریف شده، مثل نام تابع "main"، باید با حروف کوچک تایپ شوند.
اگر زبان C میدانید، ممکن است احساس کنید مثال بالا زیاد شبیه برنامه معادل "Hello world" در C/C++ نیست. اما pawn میتواند بسیار شبیه C نیز باشد. مثال برنامه بعدی نیز نحو pawn معتبر است (و همان معناشناسی مثال قبلی را دارد):
فهرست: hello.p — سبک C
#include <console>
main()
{
printf("Hello world\n");
}
این مثالهای اول همچنین چند تفاوت بین pawn و زبان C را آشکار میکنند:
-
معمولاً نیازی به شامل کردن هیچ "فایل header" تعریف شده توسط سیستم نیست؛
-
نقطه ویرگولها اختیاری هستند (به جز وقتی چند statement روی یک خط مینویسید)؛
-
وقتی بدنه تابع یک دستور تکی است، آکولادها (برای دستور مرکب) اختیاری هستند؛
-
وقتی نتیجه تابع را در عبارت یا اختصاص استفاده نمیکنید، پرانتزها دور آرگومان تابع اختیاری هستند.
به عنوان نکته جانبی، چند نکته قبلی به نحوهای اختیاری اشاره میکنند. انتخاب شما است که کدام نحو را میخواهید استفاده کنید: هیچ سبکی "منسوخ شده" یا "مضر تلقی شده" نیست. مثالهای این کتابچه راهنما آکولادها را قرار میدهند و تورفتگیای استفاده میکنند که به عنوان "سبک Whitesmith" شناخته میشود، اما pawn زبان فرمت آزاد است و سبکهای تورفتگی دیگر نیز به همان خوبی هستند.
چون pawn برای زبان توسعه برنامههای کاربردی طراحی شده، مجموعه توابع/کتابخانهای که برنامه pawn در اختیار دارد به برنامه میزبان بستگی دارد. در نتیجه، زبان pawn هیچ دانش ذاتی از هیچ تابعی ندارد. تابع print، که در این مثال اول استفاده شده، باید توسط برنامه میزبان در دسترس قرار گیرد و برای تحلیلگر pawn "اعلان" شود.