مسیرها
/
AWK
AWK
/
تمرین‌ها
/
گزارش ساده
گزارش ساده

گزارش ساده

تمرین یادگیری

مقدمه

عدد و رشته

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

عدد

اعداد در AWK به صورت اعداد اعشاری با دقت مضاعف پیاده‌سازی می‌شوند. میان عدد صحیح، عدد اعشاری و عدد double هیچ تفاوتی وجود ندارد.

AWK ثابت‌های عددی مبنای هشت (که با 0 شروع می‌شوند) و ثابت‌های عددی مبنای شانزده (که با 0x یا 0X شروع می‌شوند) را می‌شناسد.

عملیات عددی

می‌توانید از عملگرهای حسابی استاندارد +، -، *، /، % استفاده کنید. عملگر توان ^ است. چند تابع عددی توکار وجود دارد، از جمله توابع مثلثاتی، تولید اعداد تصادفی، و int(x) که یک عدد را به نزدیک‌ترین عدد صحیح میان x و صفر می‌بُرد.

رشته

رشته‌های AWK دنباله‌ای از کاراکترها هستند. یک ثابت رشته‌ای را با علامت نقل‌قول دوگانه مشخص کنید.

عملیات رشته‌ای

فقط یک عملیات رشته‌ای وجود دارد: اتصال. عملیات اتصال عملگر ویژه‌ای ندارد؛ کافی است دو رشته را کنار هم بگذارید تا به هم بچسبند:

BEGIN {
    hw = "Hello" "World"
    print hw
}
# => HelloWorld
Note

print یک دستور است، نه یک تابع. print به پرانتز نیازی ندارد.

AWK توابع متعددی برای دستکاری رشته‌ها دارد. در ادامه‌ی مسیر، به‌تدریج و به‌طور عمیق با آن‌ها آشنا خواهیم شد.

تبدیل میان عدد و رشته

هیچ عملگر صریحی برای تبدیل میان عدد و رشته وجود ندارد. AWK این کار را بر اساس بافت برنامه به‌صورت ضمنی انجام می‌دهد. این باعث می‌شود کار با مقادیر فیلدهای ورودی بسیار ساده شود: AWK معمولاً همان کاری را می‌کند که شما می‌خواهید.

  • print x + y مقدار متغیرهای x و y را به لطف عملیات عددی + به عدد تبدیل می‌کند.
  • print x y مقدار متغیرهای x و y را به لطف عملیات اتصال به رشته تبدیل می‌کند.

اگر می‌خواهید صریح عمل کنید، 0 + x نمایش عددی x را می‌دهد و "" x نمایش رشته‌ای x را.

از رشته به عدد

روشی که AWK یک رشته را به عدد تبدیل می‌کند می‌تواند گیج‌کننده باشد. یک راه ساده برای فکر کردن به آن این است که AWK از ابتدای رشته «کاراکترهای عددی» را می‌خواند تا به یک کاراکتر «غیرعددی» برسد. چند نمونه:

  • "2.5" به عدد 2.5 تبدیل می‌شود؛
  • "1e3" به عدد 1000 تبدیل می‌شود (نماد علمی)؛
  • "456abc" به عدد 456 تبدیل می‌شود (چون a یک «رقم» نیست، تبدیل همان‌جا متوقف می‌شود).
  • "abc789" به عدد 0 تبدیل می‌شود (در ابتدای رشته هیچ عددی وجود ندارد).

دستورالعمل‌ها

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

شماره‌ی فیلد معنا
۱ شماره‌ی شناسه
۲ مکان
۳ خوانش اول، رقم دهگان
۴ خوانش اول، رقم یکان
۵ خوانش دوم، رقم دهگان
۶ خوانش دوم، رقم یکان

برای یک سطر ورودی مانند 101,house,4,2,5,4

  • خوانش اول 42 است،
  • خوانش دوم 54 است.

وظیفه ۱: تهیه‌ی گزارش

وظیفه‌ی شما این است که میانگین دو خوانش را پیدا کنید و نتیجه‌ی هر سطر را در قالب زیر خروجی دهید

#<id>, <label> = <average>

از آنجا که میانگین ۴۲ و ۵۴ برابر ۴۸ است، خروجی برای سطر نمونه باید به این صورت باشد:

#101, house = 48
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
AWK Exercism

آماده‌اید گزارش ساده را شروع کنید؟

در Exercism ثبت‌نام کنید تا AWK را همراه با 3 مفهوم92 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.