اعداد در برنامهنویسی بسیار رایج هستند. از آنها برای نمایش چیزهایی مانند ابعاد صفحه نمایش، موقعیتهای جغرافیایی، پول، امتیازها، مدت زمان ویدیو، موقعیت آواتارهای بازی و رنگها از طریق اختصاص دادن کدهای عددی استفاده میشود.
توانایی انجام عملیات ریاضی به طور مؤثر در برنامهنویسی مهارتی مهم است زیرا اغلب با اعداد سر و کار دارید. اگرچه داشتن دانش کلی ریاضی میتواند به بهبود مهارت برنامهنویسی شما کمک کند، اما پیشنیاز نیست. اگر زمینه ریاضی ندارید، سعی کنید ریاضی را ابزاری برای رسیدن به هدفهای خود و تقویت تفکر منطقی خود ببینید.
ما با دو نوع داده عددی در PHP کار خواهیم کرد: اعداد صحیح (integers) و اعداد اعشاری (floats):
در این آموزش با اپراتورهای مختلفی که میتوان با دادههای عددی در PHP استفاده کرد، آشنا میشویم و همچنین نحوه مدیریت «تغییر نوع» (type juggling) توسط PHP و توابع ریاضی داخلی را بررسی خواهیم کرد.
اپراتور چیزی است که یک یا چند مقدار (یا عبارت در اصطلاح برنامهنویسی) میگیرد و مقداری دیگر برمیگرداند (به نحوی که خود آن ساختار تبدیل به یک عبارت میشود). اپراتورها برای تصمیمگیریهای ابتدایی کاربرد دارند، مثلاً وقتی برنامه را دستور میدهیم بر اساس مقدار، کاری انجام دهد.
سادهترین اپراتور، اپراتور انتساب است که با یک علامت مساوی نمایش داده میشود: =. این اپراتور برای اختصاص مقدار به یک متغیر استفاده میشود. متغیر مانند یک جعبه است که میتواند چیزهای مختلفی در خود نگهدارد و محتویات آن قابل تغییر است. در برنامهنویسی، متغیر نامیده میشود و به آن مقدار اختصاص داده میشود:
برای مشاهده نوع متغیر همراه با مقدار، از تابع var_dump() به جای echo استفاده میکنیم. مثلاً متغیر $box ابتدا مقدار عدد صحیح ۳ به آن اختصاص داده میشود، سپس مقدار جدیدی که رشته “Hello” است به آن داده میشود. این مانند خالی کردن جعبه و گذاشتن چیز جدید در آن است. در نتیجه وقتی var_dump() فراخوانی میشود، اطلاعات متفاوتی درباره متغیر نمایش داده میشود:
ابتدا $box مقدار عددی ۳ دارد. بعد از انتساب دوم، مقدار $box رشتهای ۵ کاراکتری با متن “Hello” است.
اکنون بیایید به اپراتورهای بعدی نگاهی بیندازیم تا متغیر $box مفیدتر شود.
PHP اپراتورهای حسابی دارد که مانند ماشین حساب یا قلم و کاغذ عمل میکنند. تنها نکته مهم، نشانهای است که برای عملیات استفاده میشود. شناختهشدهترین اپراتورهای حسابی را بررسی میکنیم:
- جمع (+): ابتدا مقدار اول گرفته شده و مقدار بعدی به آن اضافه میشود. میتوان این کار را با مقدار عددی یا متغیری که مقدار را در خود دارد انجام داد.
- تفریق (-): مقدار دوم از مقدار اول کم میشود.
- ضرب (*): مقدار اول در مقدار دوم ضرب میشود. این معادل افزودن مقدار اول به تعداد مقدار دوم است.
- تقسیم (/): مشخص میکند مقدار دوم چند بار میتواند در مقدار اول جای بگیرد. اگر تقسیم کامل نباشد، نتیجه به صورت عدد اعشاری بازگردانده میشود. میتوان با تبدیل نوع به عدد صحیح (int) فقط قسمت صحیح نتیجه را گرفت و بخش اعشار را نادیده گرفت.
- مدولو (%): باقیمانده تقسیم را برمیگرداند. کاربرد رایج آن در تعیین الگوهای زوج و فرد است، مانند شماره ردیفها. عدد زوج تقسیم بر ۲ باقیمانده ۰ دارد و عدد فرد باقیمانده ۱.
PHP توانایی انجام محاسبات پیچیده را دارد و توابع داخلی زیادی برای عملیات متنوع مانند توان، درصد، جذر و غیره ارائه میدهد.
اپراتورهای ترکیبی انتساب و ریاضی، مانند += کاربرد دارند. مثلاً اگر سبدی شامل ۱۰ سیب داشته باشیم ($basket = 10;) و ۵ سیب دیگر به آن اضافه کنیم، به جای نوشتن $basket = $basket + 5; میتوانیم $basket += 5; بنویسیم که کوتاهتر است و همان معنی را دارد.
شما میتوانید از همین روش با سایر اپراتورهای ریاضی نیز استفاده کنید.
با اپراتور افزایش (increment operator) که با دو علامت بعلاوه ++ نمایش داده میشود، میتوان مقدار عددی یک متغیر را به اندازه ۱ افزایش داد. این اپراتور میتواند قبل یا بعد از نام متغیر قرار بگیرد. زمانی که قبل از متغیر است (pre-increment)، مقدار متغیر قبل از انجام عملیات دیگر تغییر میکند و اگر بعد از متغیر باشد (post-increment)، ابتدا مقدار متغیر استفاده میشود و سپس مقدارش ۱ واحد افزایش مییابد.
اینگونه عملکرد برای اپراتور کاهش (decrement operator) هم با دو علامت منفی -- وجود دارد که مقدار متغیر را ۱ واحد کاهش میدهد و همین قانون ترتیب قبل یا بعد قرار گرفتن اپراتور صدق میکند.
ترتیب اعمال اپراتورها (precedence) مشخص میکند کدام عملیات زودتر انجام شود. البته مانند قواعد ریاضی، ضرب و تقسیم نسبت به جمع و تفریق اولویت دارند. برای مثال عبارت زیر با اولویت انجام عملیات ضرب موفق به رسیدن به نتیجه میشود:
1 + 5 * 3
در این نمونه ابتدا 5 * 3 = 15 محاسبه شده، سپس عدد ۱ جمع میشود که پاسخ نهایی ۱۶ خواهد بود.
پرانتز اولویت محاسبات را تغییر میدهد و آن بخش را زودتر محاسبه میکند:
(1 + 5) * 3
که حاصل آن ۱۸ خواهد بود چون ابتدا داخل پرانتز جمع انجام میشود.
PHP در زمان تعریف و مقداردهی متغیر نوع آن را مشخص نمیکند؛ نوع یک متغیر بر اساس متنی که استفاده میشود تعیین میگردد. میتوانیم با استفاده از var_dump() نوع و مقدار هر متغیر را مشاهده کنیم.
اگر متغیر مقداری از نوع رشته دریافت کند، نوع آن رشته میشود و اگر عدد صحیح دریافت کند، نوع آن عدد صحیح است.
PHP همچنین نوع متغیرها را بر اساس نتیجه ارزیابی عبارات تغییر میدهد. اگر هر کدام از دو مقدار سمت راست و چپ یک عملیات عدد اعشاری (float) باشد، نتیجه عملیات به صورت عدد اعشاری خواهد بود و در غیر این صورت عدد صحیح برگردانده میشود.
تغییر نوع (Type juggling) در PHP میتواند برخی اوقات باعث سردرگمی شود، چون انواع داده مانند رشتهها و بولینها ممکن است به صورت خودکار به عدد تبدیل شوند. بهتر است از این کار خودداری کنید تا مشکلات احتمالی کاهش یابد.
تابع مجموعهای از دستورات است که میتوان بارها از آنها استفاده کرد. PHP توابع داخلی زیادی دارد که برای انجام محاسبات مختلف ریاضی کمک میکند.
برای گرفتن قدر مطلق عدد از تابع abs() استفاده میشود که علامت مثبت یا منفی عدد را نادیده میگیرد و فقط مقدار عددی را برمیگرداند.
برای گرد کردن اعداد اعشاری چند گزینه وجود دارد:
round(): نزدیکترین عدد صحیح را باز میگرداند، و نیم به بالا گرد میشود.ceil(): همیشه عدد را به بالا گرد میکند.floor(): همیشه عدد را به پایین گرد میکند.
نسبت محیط دایره به قطر آن همیشه ثابت است و برابر عدد پی (π) است.
تابع pi() در PHP مقدار عدد پی با ۱۴ رقم اعشار را بازمیگرداند که میتوان از آن برای محاسبه محیط دایره استفاده کرد. مثلا برای قطر دایره ۴ خواهیم داشت:
circumference = pi() * 4;
در مواقعی که نیاز به اعدادی تصادفی داریم، مثل پرتاب سکه یا تاس، PHP تابع rand() را ارائه میدهد. این تابع عددی تصادفی بین ۰ و حداکثر مقدار تصادفی سیستم بازمیگرداند. میتوان بازه عددی مشخصی را هم به آن داد، مثلاً برای گرفتن عدد تصادفی ۳ رقمی:
rand(100, 999);
تابع rand() اعداد را به صورت کلی تصادفی برمیگرداند، اما اگر به اعداد تصادفی امن و رمزنگاری شده نیاز دارید که احتمال کمتری برای الگوریتمی بودن داشته باشد، میتوانید از random_int() استفاده کنید که یک عدد صحیح تصادفی رمزنگاری شده در بازه مشخص شده بازمیگرداند.
برای تولید مقادیر تصادفی رمزنگاری شده به صورت رشتههای بایتی (مانند مقادیر نمک، کلید یا وکتورهای اولیه)، از تابع random_bytes() با تعداد بایت مورد نظر استفاده میشود که رشتهای تصادفی برمیگرداند.
توابع متعددی دیگر در PHP برای عملیات ریاضی وجود دارد که برای کسب اطلاعات بیشتر میتوانید به مستندات پارمین کلود مراجعه کنید.
این آموزش اپراتورهای مورد استفاده برای اعداد صحیح و اعشاری را مطرح کرد، به اهمیت ترتیب عمل اپراتورها و جایگاه آنها اشاره کرد، و نحوه تغییر نوع متغیرها در PHP را توضیح داد. در پایان، مقدمهای بر توابع داخلی برای انجام محاسبات ریاضی مطرح شد.
از اینکه همراه پارمین کلود بودید سپاسگزاریم.
نظرات کاربران