گشتی در زبان سلام

در این صفحه مهم‌ترین بخش‌های سلام را با نمونه‌های کوتاه می‌بینید. همه‌ی نمونه‌ها برنامه‌ی کامل و درست‌اند و خروجی واقعی‌شان زیرشان آمده است؛ می‌توانید آن‌ها را رونوشت کنید و در ویرایشگر آنلاین اجرا کنید.

نخستین برنامه

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

hello.salam
روال ریشه:
    سرچاپ "سلام دنیا!"
پایان
خروجیسلام دنیا!

برای اجرا، کد را در پرونده‌ای مثل سلام.salam ذخیره کنید و فرمان salam run سلام.salam را بزنید.

متغیرها و پایاها

با := نامی تعریف می‌کنید که گونه‌اش از مقدارش فهمیده می‌شود. نام‌ها به‌طور پیش‌فرض تغییرناپذیرند؛ اگر می‌خواهید مقدار را بعداً عوض کنید آن را با ناپایا تعریف کنید. مقدارهای ثابت سراسری با پایا تعریف می‌شوند.

variables.salam
پایا بیشینه := ۱۰۰

روال ریشه:
    نام := "مریم"
    ناپایا امتیاز := ۸۵
    امتیاز = امتیاز + ۱۰
    سرچاپ نام, "امتیاز گرفت:", امتیاز, "از", بیشینه
پایان
خروجیمریم امتیاز گرفت: 95 از 100

عددها را می‌توانید با رقم‌های فارسی یا انگلیسی بنویسید؛ مترجم هر دو را یکسان می‌فهمد. سرچاپ چند مقدار را با فاصله کنار هم چاپ می‌کند.

شرط‌ها

با اگر، وگرنه اگر و وگرنه تصمیم می‌گیرید. روال زیر یک عدد صحیح می‌گیرد و یک رشته برمی‌گرداند؛ گونه‌ی ورودی و خروجی بعد از دونقطه نوشته می‌شود.

conditions.salam
روال رده(نمره: صحیح): رشته:
    اگر نمره >= ۹۰:
        برگشت "عالی"
    وگرنه اگر نمره >= ۷۰:
        برگشت "خوب"
    وگرنه:
        برگشت "تلاش بیشتر"
    پایان
پایان

روال ریشه:
    سرچاپ رده(۹۵)
    سرچاپ رده(۷۲)
    سرچاپ رده(۴۰)
پایان
خروجیعالی خوب تلاش بیشتر

برای مقایسه‌ها از ==، !=، <، >، <= و >= استفاده کنید و شرط‌ها را با و و یا به هم وصل کنید.

حلقه‌ها

تکرار روی یک بازه می‌چرخد: تکرار ۱ تا ۱۰ هر ۳ در ک یعنی از ۱ تا ۱۰ با گام ۳ و شمارنده‌ی ک. حلقه‌ی تا هم تا وقتی شرطش برقرار است ادامه پیدا می‌کند.

loops.salam
روال ریشه:
    تکرار ۱ تا ۱۰ هر ۳ در ک:
        سرچاپ "دور", ک
    پایان
    ناپایا شمار := ۳
    تا شمار > ۰:
        سرچاپ شمار
        شمار = شمار - ۱
    پایان
    سرچاپ "پرتاب!"
پایان
خروجیدور 1 دور 4 دور 7 دور 10 3 2 1 پرتاب!

با بشکن از حلقه بیرون می‌روید و با گذر به دور بعدی می‌پرید.

روال‌ها

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

functions.salam
روال فیبوناچی(ن: صحیح): صحیح:
    اگر ن < ۲:
        برگشت ن
    پایان
    برگشت فیبوناچی(ن - ۱) + فیبوناچی(ن - ۲)
پایان

روال ریشه:
    تکرار ۱۰ در ک:
        چاپ فیبوناچی(ک), ""
    پایان
    سرچاپ ""
پایان
خروجی0 1 1 2 3 5 8 13 21 34

چاپ برخلاف سرچاپ به خط بعد نمی‌رود. ورودی‌ها می‌توانند مقدار پیش‌فرض هم داشته باشند، مثل روال مساحت(پهنا: صحیح, بلندی: صحیح = ۲).

آرایه‌ها

آرایه را با کروشه می‌سازید و با هر … در … روی عضوهایش می‌گردید. طول() تعداد عضوها را می‌دهد.

arrays.salam
روال ریشه:
    میوه‌ها := ["سیب", "انار", "انگور"]
    هر میوه در میوه‌ها:
        سرچاپ "من", میوه, "دوست دارم"
    پایان
    سرچاپ "تعداد:", میوه‌ها.طول()
پایان
خروجیمن سیب دوست دارم من انار دوست دارم من انگور دوست دارم تعداد: 3

به هر عضو با شماره‌اش هم می‌رسید، مثل میوه‌ها[۰]. شماره‌گذاری از صفر شروع می‌شود و دسترسی بیرون از آرایه پیش از آسیب زدن گرفته می‌شود.

ساختارها

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

structs.salam
ساختار مستطیل:
    همگانی پهنا: صحیح = ۱
    همگانی بلندی: صحیح = ۱
    همگانی روال مساحت(): صحیح:
        برگشت این.پهنا * این.بلندی
    پایان
پایان

روال ریشه:
    زمین := مستطیل { پهنا = ۱۲, بلندی = ۸ }
    سرچاپ "مساحت زمین:", زمین.مساحت()
پایان
خروجیمساحت زمین: 96

هنگام ساختن نمونه، هر فیلدی را که نگویید مقدار پیش‌فرضش را می‌گیرد؛ مستطیل {} یک مستطیل یک در یک است.

جداشمارها و همخوانی

جداشمار مجموعه‌ای بسته از حالت‌ها تعریف می‌کند و همخوان یک مقدار را با حالت‌ها مقایسه می‌کند. مترجم مطمئن می‌شود که هیچ حالتی از قلم نیفتاده باشد.

match.salam
جداشمار فصل:
    بهار، تابستان، پاییز، زمستان
پایان

روال هوا(ف: فصل): رشته:
    برگشت همخوان ف:
        بهار, پاییز => "معتدل"
        تابستان => "گرم"
        زمستان => "سرد"
    پایان
پایان

روال ریشه:
    سرچاپ "هوای بهار:", هوا(فصل.بهار)
    سرچاپ "هوای زمستان:", هوا(فصل.زمستان)
پایان
خروجیهوای بهار: معتدل هوای زمستان: سرد

چند حالت می‌توانند یک شاخه را با ویرگول شریک شوند، و همخوان خودش مقدار برمی‌گرداند؛ پس می‌توانید نتیجه‌اش را مستقیم برگردانید یا در متغیری بریزید.

قدم بعدی؟ سلام را نصب کنید یا نمونه‌ها را در ویرایشگر آنلاین تغییر دهید و نتیجه را ببینید. برای آشنایی با ابزارها و کتابخانه‌ی استاندارد به صفحه‌ی ابزارها سر بزنید.