مسیرها
/
PHP
PHP
/
تمرین‌ها
/
لازانیای لذیذ لوسین
لازانیای لذیذ لوسین

لازانیای لذیذ لوسین

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

مقدمه

مبانی

برای اطلاعات دقیق‌تر درباره‌ی این موضوعات، به صفحه‌ی مفهوم سر بزنید.

نحوه‌ی نگارش کلی

تگ شروع PHP، یعنی <?php، آغاز کد PHP را مشخص می‌کند. همه‌ی دستورها باید با ; پایان یابند تا از یکدیگر جدا شوند.

<?php

$message = "Success!"; // Statement correctly ends with `;`
$message = "I fail." // PHP Parse error: syntax error, [...]

برای خواندن راحت‌تر، همه‌ی نمونه‌کدها تگ شروع <?php را حذف کرده‌اند.

کامنت‌ها

کامنت‌های تک‌خطی با // شروع می‌شوند.

// Single line comment

مقادیر و متغیرها

با استفاده از عملگر انتساب = می‌توان مقداری را به یک «متغیر» نسبت داد. اسم متغیرها باید با علامت دلار $ شروع شود و از قواعد نام‌گذاری پیروی کند.

$count = 1; // Assign value of 1

// Strings can be created by enclosing the characters
// within single `'` quotes or double `"` quotes.
$message = "Success!";

توابع و متدها

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

function window_height($height)
{
    return $height + 10;
}

window_height(100);
// => 110

توابعی که داخل کلاس‌ها و نمونه‌های آن‌ها قرار دارند، «متد» نامیده می‌شوند. برای فراخوانی یک متد، قبل از اسم آن، نمونه و -> می‌آید. متدها به متغیر ویژه‌ی $this دسترسی دارند که به نمونه‌ی جاری اشاره می‌کند.

<?php

class Calculator {
    public function sub($x, $y)
    {
        return $this->add($x, -$y); // Calls the method add() of the current instance
    }

    public function add($x, $y)
    {
        return $x + $y;
    }
}

$calculator = new Calculator(); // Creates a new instance of Calculator class
$calculator->sub(3, 1); // Calls the method sub() of the instance stored in $calculator
// => 2

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

در این تمرین قرار است کدی بنویسید که به شما کمک کند لازانیای عالی‌ای از کتاب آشپزی محبوبتان بپزید.

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

1. زمان مورد انتظار پخت در فر را بر حسب دقیقه تعریف کنید

تابع expectedCookTime را در کلاس Lasagna پیاده‌سازی کنید. این تابع هیچ آرگومانی نمی‌گیرد و برمی‌گرداند که لازانیا چند دقیقه باید در فر بماند. بر اساس کتاب آشپزی، زمان مورد انتظار در فر ۴۰ دقیقه است:

<?php
$timer = new Lasagna();
$timer->expectedCookTime()
// => 40

2. زمان باقی‌مانده‌ی پخت در فر را بر حسب دقیقه محاسبه کنید

تابع remainingCookTime را در کلاس Lasagna پیاده‌سازی کنید. این تابع تعداد دقایقی را که لازانیا تا کنون در فر بوده است به‌عنوان آرگومان می‌گیرد و بر اساس زمان مورد انتظار در فر از وظیفه‌ی قبلی، برمی‌گرداند که لازانیا چند دقیقه‌ی دیگر باید در فر بماند.

<?php
$timer = new Lasagna();
$timer->remainingCookTime(30)
// => 10

3. زمان آماده‌سازی را بر حسب دقیقه محاسبه کنید

تابع totalPreparationTime را در کلاس Lasagna پیاده‌سازی کنید. این تابع تعداد لایه‌هایی را که به لازانیا اضافه کرده‌اید به‌عنوان آرگومان می‌گیرد و برمی‌گرداند که چند دقیقه صرف آماده‌سازی لازانیا کرده‌اید، با این فرض که آماده‌سازی هر لایه ۲ دقیقه طول می‌کشد.

<?php
$timer = new Lasagna();
$timer->totalPreparationTime(3)
// => 6

4. مجموع زمان کار را بر حسب دقیقه محاسبه کنید

تابع totalElapsedTime را در کلاس Lasagna پیاده‌سازی کنید. این تابع دو آرگومان می‌گیرد: آرگومان اول تعداد لایه‌هایی است که به لازانیا اضافه کرده‌اید و آرگومان دوم تعداد دقایقی است که لازانیا در فر بوده است. این تابع باید برمی‌گرداند که در مجموع چند دقیقه روی پخت لازانیا کار کرده‌اید، یعنی مجموع زمان آماده‌سازی بر حسب دقیقه و زمانی که لازانیا تا این لحظه در فر گذرانده است.

<?php
$timer = new Lasagna();
$timer->totalElapsedTime(3, 20)
// => 26

5. اعلانی بسازید که نشان دهد لازانیا آماده است

تابع alarm را در کلاس Lasagna پیاده‌سازی کنید. این تابع هیچ آرگومانی نمی‌گیرد و پیامی برمی‌گرداند که نشان می‌دهد لازانیا آماده‌ی خوردن است.

<?php
$timer = new Lasagna();
$timer->alarm()
// => "Ding!"
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
PHP Exercism

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

در Exercism ثبت‌نام کنید تا PHP را همراه با 11 مفهوم122 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.