درس ۱۸ از ۲۵ · برنامه‌های بزرگ‌تر

بسته‌ها و پرونده‌ها

برنامه‌های بزرگ در چند پرونده نوشته می‌شوند. هر پرونده یک بسته است و چیزهایی را که همگانی کرده با بقیه‌ی برنامه شریک می‌شود.

بسته

پرونده‌ای که با بسته نام شروع شود یک بسته است. فقط روال‌ها، پایاها و گونه‌هایی که همگانی شده‌اند بیرون از بسته دیده می‌شوند؛ بقیه جزئیات درونی بسته‌اند.

pkg-lib.salam
بسته ابزار

همگانی پایا نسخه := "۱.۰"

روال دوبرابر(ع: صحیح): صحیح:
    برگشت ع * ۲
پایان

همگانی روال چهاربرابر(ع: صحیح): صحیح:
    برگشت دوبرابر(دوبرابر(ع))
پایان

فراخوانی پرونده

فراخوانی نام "پرونده.salam" پرونده‌ای از پروژه‌ی خودتان را با یک نام کوتاه به برنامه می‌آورد و با نام.چیزی به عضوهای همگانی‌اش دسترسی پیدا می‌کنید. مسیر نسبت به پرونده‌ی فعلی است.

pkg-include.salam
فراخوانی ابزار "pkg-lib.salam"

روال ریشه:
    سرچاپ ابزار.چهاربرابر(۵)
    سرچاپ "نسخه‌ی ابزار:", ابزار.نسخه
پایان
خروجی20 نسخه‌ی ابزار: ۱.۰

واردسازی کتابخانه

کتابخانه‌های استاندارد با نام فارسی‌شان و بدون نقل‌قول وارد می‌شوند، مثل واردسازی رشته یا واردسازی سیستم عامل، و روال‌هایشان هم نام فارسی دارند. واردسازی برای کتابخانه‌هاست و فراخوانی برای پرونده‌های خودتان.

pkg-import.salam
واردسازی رشته
واردسازی ریاضی

روال ریشه:
    متن := "  سلام دنیا  "
    سرچاپ رشته.پیرایش(متن)
    سرچاپ رشته.شامل است(متن، "دنیا")
    سرچاپ ریاضی.جذر(۸۱.۰)، ریاضی.توان(۲.۰، ۱۰.۰)
پایان
خروجیسلام دنیا true 9 1024

در پرونده‌ی فارسی باید نام‌های فارسی را به کار ببرید و نام انگلیسی مثل رشته.Len خطاست. نام فارسی هر روال کنار نام انگلیسی‌اش در کد کتابخانه (پوشه‌ی std) با @fa نوشته شده است. شما هم می‌توانید روال‌های همگانی خودتان را دوزبانه کنید تا از پرونده‌های انگلیسی هم صدا زده شوند:

pkg-bilingual.salam
@en "Twice"
@fa "دوبار"
همگانی روال دوبار(ع: صحیح): صحیح:
    برگشت ع * ۲
پایان

روال ریشه:
    سرچاپ دوبار(۲۱)
پایان
خروجی42

ترتیب تعریف‌ها

سلام ترتیب مشخصی برای تعریف‌های سطح بالای هر پرونده می‌خواهد تا همه‌ی پرونده‌ها یک‌جور خوانده شوند:

  1. بسته
  2. واردسازی‌ها، سپس فراخوانی‌ها
  3. پایاها و متغیرهای سراسری
  4. گونه‌ها، ساختارها، جداشمارها و میانجی‌ها
  5. روال‌ها، و در پایان روال‌های همگانی

فرمان salam format کد را مرتب می‌کند و خیلی از این جابه‌جایی‌ها را خودش انجام می‌دهد.