loading...
read more
سینا خرسند بازدید : 290 سه شنبه 16 تیر 1394 نظرات (0)

درس سوم- آشنایی با شرط ها و عملگرها

 

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

حال می خواهیم به آشنایی شرط ها بپردازیم و از آنها برای ارزیابی فرم و کادرهایش بهره ببریم به طوری که اگر کادری توسط کاربر خالی ماند، سیستم  هشداری بدهد تا آن کادر پر شود.

برای انجام این مهم لازم است که از توابع شرطی و عملگرها استفاده کنیم که موضوع این درس است.

 

 

آشنایی با شرط ها و عملگرها
شرط در برنامه نویسی به زبان ساده، قرار دادن یک شرط برای انجام عملی است. ما در زبان روزمره بارها در موقعیت های متفاوت از آنها استفاده می کنیم. به طور مثال «اگر باران بیاید» (شرط) «ما به گردش نخواهیم رفت» (عمل مرتبط به شرط).

این یک شرط است که در صورت درستی شرط٬ عمل بعد از آن «نرفتن به گردش» اتفاق می افتد. البته این فقط یک شرط بود. ما می توانیم چند شرط را تعیین کنیم و یا از شرط های تو در تو استفاده کنیم. به مثال قبلی از این منظر نگاه کنید: «اگر باران بیاید» و «اگر ماشین نداشته باشیم» (دو شرط) «به گردش نخواهیم رفت».

خب با این مثال ها فکر می کنیم که به منظور استفاده از شرط ها پی بردید. نحوه کار با شرط ها در زبان برنامه نویسی هم دقیقا مثل همان مثال بالاست با این تفاوت که در زبان برنامه نویسی ما این «اگرها» را تبدیل به عبارتی می کنیم که برنامه آن را بفهمد.

مهمترین عباراتی که در ساخت شرط ها از آنها استفاده می کنیم if و else و else if هستند.

if: همان «اگر» خودمان است.

else: در غیر این صورت

else if: معنی آن می شود٬ در غیر این صورت اگر

شروع کار از عبارت if است٬ بعد از آن شرط ما قرار می گیرد البته در پرانتز٬ به دنبال آن هم عمل هایی که می خواهیم در صورت درستی یا نادرستی شرط اتفاق افتد.

if(شرط) {
//عملی که در صورت درستی باید انجام شود
}

خب حالا کمی با شرط ها آشنا شدیم اما قبل از بیشتر وارد شدن به بحث شرط ها لازم است که ما با عملگرها هم آشنا شویم.

عملگرها در اصل عباراتی هستند که درون پرانتز بعد از if قرار می گیرند تا شرط ما را پیاده سازی کنند. در زیر به لیست عملگرها و کارایی آنها توجه کنید:

- عملگرهای مقایسه ای: این دسته عملگرها برابری دو طرف عملگر را مقایسه می کنند:

  • == : برای ارزیابی برابری دو طرف عملگر است که در صورت برابری پاسخ درست می شود.
  • =! : این عملگر عدم برابری دو طرف را بررسی می کند که در صورت برابر نبودن پاسخ درست است.
  • < : این علامت کوچک تر است، یعنی اگر طرف چپ کوچک تر از طرف راست عملگر است، پاسخ درست می شود.
  • > : این درست برعکس کوچک تر یعنی بزرگ تر است. در صورتی که طرف چپ عملگر بزرگ تر باشد، پاسخ درست می شود.
  • <= : کوچک تر یا مساوی٬ هر دو صورت بررسی می شود.
  • >= : بزرگ تر یا مساوی.

عملگرهای منطقی: عملگرهای منطقی عبارات را براساس منطق بررسی می کنند:

  • ! : این عملگر عبارت را منفی یا برعکس می کند مثلا درست می شود غلط
  • && : این همان «و» خودمان است٬ زمانی این عملگر نتیجه درست می دهد که دو طرف آن بررسی شود. مثلا اگر x=5 و y=7 باشد، در صورت درستی هر دو عبارت، خروجی صحیح می شود.
  • || : این همان «یا» می شود. در این عملگر هر کدام از دو طرف درست باشد، پاسخ صحیح می شود. مثلا اگر x=5 یا y=7 شود، هر کدام درست باشد، پاسخ صحیح می شود.
  • XOR: خروجی این عملگر زمانی درست است که فقط یکی از دو طرف درست باشد. اگر هر دو طرف درست یا هر دو طرف نادرست باشند٬ خروجی می شود ناصحیح.

نگران نباشید؛ ما با مثال های فراوان هر کدام از عملگرها و شرط ها را به طور مفصل شرح خواهیم داد. حال اجازه بدهید این را با خود عبارات شرطی بیشتر توضیح دهیم. از تک شرط شروع می کنیم:

if(شرط) {
//عملی که در صورت درستی باید انجام شود
}

این یک وضعیت تک شرطی است که تنها اگر شرط درست باشد، انجام می شود. مثلا:

if(باران بیاید) {
ما به گردش نمی رویم
}

یا مثلا اگر مقدار x با مقدار y برابر بود٬ x  را چاپ کن:

if($x== $y) {
print $x;
}

شرط همراه با  else:

if (شرط) {
//عملی که در صورت درستی باید انجام شود
}
else {
// عمل دیگری اتفاق افتد
}

این یک عبارت شرطی با یک شرط  همراه دو عمل است. این عبارت می گوید اگر شرط درست بود، این عمل اتفاق افتد، در غیر این صورت عمل دیگری اتفاق افتد. فرق این شرط با قبلی این است که ما از else برای زمانی که شرط نادرست بود استفاده کردیم. توجه کنید که در مثال قبلی اگر شرط نادرست بود، هیچ اتفاقی نمی افتد اما در این مثال در صورت نادرستی شرط، یک عمل دیگر اتفاق می افتد.

if (باران بیاید) {
به گردش نمیرویم
}
else {   // در غیر این صورت
به گردش می رویم
}

حال مثال را با متغیرها انجام می دهیم که اگر شرط درست بود یکی را چاپ کند و اگر شرط نادرست بود دیگری را.

if ($x == $y) {
print $x ;
}
else {
print $y ;
}

در مثال تک شرطی ما فقط به باران آمدن توجه کردیم که اگر بیاید به گردش نمی رویم یا اگر دو مقدار متغیرها برابر بود، یکی را چاپ کند. اما اینجا اگر باران بیاید نمی رویم و اگر نیاید ( در غیر این صورت) به گردش می رویم. و در مثال اگر متغیرها برابر بودند، x را چاپ کن٬ اگر برابر نبودند،  y را چاپ کن.

 

چند شرطی
حالا فرض کنید می خواهیم شرط هایی را به طور پشت سر هم قرار دهیم. توجه کنید:

if (شرط) {
//عملی که در صورت درستی باید انجام شود
}
else if ( شرطی دیگر) {
// عمل دیگری اتفاق افتد
}
else {
// در صورت اتفاق نیافتن هر کدام از شرطهای بالا این عمل صورت گیرد
}

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

if (باران نیاید) {
به گردش می رویم
}
else if ( ماشین داشته باشیم) {
به گردش می رویم
}
else {   // در غیر این صورت
به گردش نمی رویم
}

در این مثال اگر باران نیاید ما به گردش می رویم و شرط تمام می شود ٬ اگر باران بیاید و اگر ما ماشین داشته باشیم باز به گردش می رویم اما اگر باران بیاید و ماشین هم نباشد نمی رویم.

if ($x == $y) {
print $x +$y ;
}
else  if ( $x > $y) {
print $x ;
}
else {
print $y ;
}

حال بیایید به شرط های تو در تو بپردازیم. نگران نباشید؛ ما برای هر کدام مثال می آوریم تا خوب برای شما مشخص گردد.

حالا می خواهیم برای اتفاق افتادن یک عمل دو شرط بگذاریم٬ مثال «اگر باران بیاید» و «اگر ماشین نداشتیم» یادتان هست!

if (شرط) {
if (شرط) {
//عملی که در صورت درستی باید انجام شود
  }
             }
else {
// عمل دیگری اتفاق افتد
}

به این گونه از شرط گذاری شرط تو در تو می گوییم٬ که در صورت درستی شرط ابتدایی٬ برنامه به شرط داخل شرط ابتدایی یعنی شرط دوم می رود٬ اما در صورت نادرستی شرط ابتدایی٬ شرط داخل آن اصلا بررسی نمی شود و برنامه به سراغ else می رود.

if (باران بیاید) {
if ( ماشین نداشته باشیم) {
به گردش نمی رویم
}
}
else {   // در غیر این صورت
به گردش می رویم
}

به مثال زیر توجه کنید که از چند شرط به طور تو در تو استفاده شده است. این مثال می گوید که اگر متغیرها با هم برابر نیستند٬ هر کدام که بزرگ تر است را چاپ کن. در غیر این صورت یعنی اگر برابرند٬ جمع آنها را چاپ کن.

if ($x != $y)
{
if ( $x > $y){
print $x;
}
else {
print $y;
      }
}
else {
print $x +$y ;
      }

طبق مثال بالا اگر شرط ابتدایی برقرار نباشد یعنی اگر متغیرها برابر باشند به قسمت else آخر می رود و جمع آنها را چاپ می کند. اما در صورت برابر نبودن یعنی نادرست بودن شرط به داخل شرط ابتدایی رفته و شرط های دیگر را بررسی می کند.

نکته ۱: در زمانی که عمل بعد از درستی شرط یکی باشد، نیازی به گذاشتن { } نیست. این کاراکتر زمانی ضروری است که شما بخواهید چند دستور را بعد از درستی شرط انجام دهید. اما پیشنهاد می شود که شما همیشه از این کاراکترها استفاده کنید.

نکته ۲: تلاش کنید همیشه در زمان تعریف یک شرط هر دو کاراکتر {} را قبل از هر چیزی بگذارید چرا که در صورت استفاده از چندین شرط ممکن است ترتیب کاراکترها به هم بخورد که باعث ایجاد خطا می شود.

 

Switch
نوع دیگر شرط گذاری استفاده کردن از switch است که کارایی خود را دارد. نحوه نوشتن آن به شکل زیر است:

switch (متغیر)
{
     case  ‘مقدار ابتدایی’  :
     {
     // دستور
          break ;
}
      case  ‘مقدار دوم’  :
{
     // دستور
     break;
}
     default:
{
     // دستور
     break;
}
}

در این نوع شرطی، switch مقدار متغیر را با هر کدام از عبارات مقابل case مقایسه می کند. وقتی این مقدار برابر با هر کدام از عبارات شد، دستورات داخل آن case انجام می شود و بعد با کمک دستور break از داخل شرط خارج می شود. در درس های آینده از این نوع شرطی بیشتر حرف خواهیم زد و بهتر آن است که فعلا روی if تمرکز کنیم.

 

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

حال با فراگیری شرطی ها و عملگرها می خواهیم این نقض را برطرف کنیم به صورتی که اگر کاربر چبزی ننوشت یا موردی را خالی گذاشت در صورت نیاز به او تذکر داده تا برگردد و فرم را کامل کند.

لطفا برنامه WampServer خود را اجرا کرده و سه فایل با نام های form.php و form_handler.php و  style.css را ساخته و در پوشه www/php خود قرار دهید.

فایل form.php  را باز کرده و کدهای زیر را داخل آن قرار دهید.

<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>آموزش شرطی با ساخت فرم اچتیامال</title>
     <link rel="stylesheet" type="text/css" media="all" href="style.css" />
</head>
<body>
<!-- کد برای ساخت فرم - form.html -->

<form action="form_handler.php" method="post">
<fieldset>
<legend align="right">لطفا فرم زیر را پر کنید</legend>
<label> نام</label>
<input type="text" name="name" />
<label> رایانامه </label>
<input type="text" name="email" />
<label>دیدگاه</label>
<textarea name="comments" ></textarea>
</fieldset>
<input type="submit" name="submit" value="ارسال" class="submit"/>

</form>
</body>
</html>

این دقیقا برابر همان فرمی است که در درس قبل ساختیم، البته با کمی از تغییرات مثلا تغییر متد.

حال ما نیاز به یک ارزیاب فرم با کدهای پی اچ پی داریم. فایل form_handler.php را باز کنید و کدهای پی اچ پی را در آن قرار دهید.

<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title> پاسخ  </title>
     <link rel="stylesheet" type="text/css" media="all" href="style.css" />
</head>
<body>
<div id="contain">
<?php // قرار دادن داده ها در متغیر
$name = $_POST['name'];
$email = $_POST['email'];
$comments = $_POST['comments'];
if ( !empty($_POST['name']) && !empty($_POST['comments']) && !empty($_POST['email']) )
{
echo 'با سپاس <br /><span> ' . $name . '</span><br />برای این نوشته <br />' ;
?>
<div class="comment"> <?php echo $comments ; ?> </div>
ما با شما تماس می گیریم توسط این رایانامه <br />
<div class="email">
<?php echo $email . '<br /><br />' ;?>
</div>
<?php
}
else
{
echo '<div class="error">لطفن برگردید و فرم را کامل پر کنید</div>';
}
?>
<a href="form.php">برگشت</a>
</div>
</body>
</html>

بررسی کدهای form_handler.php
در این کدها ابتدا ما داده های فرستاده شده از فرم را گرفته و در داخل متغیرها می گذاریم. سپس از شرطی ها برای بررسی داده ها استفاده می کنیم. کاری که انجام می شود این است که با یک «اگر» بررسی می کنیم که آیا همه کادرها پر شده یا نه.

$name = $_POST['name'];
$email = $_POST['email'];
$comments = $_POST['comments'];

این سه خط٬ داده ها را از فرم توسط متغیرهای پر شده $_POST گرفته و در متغیرهای تعریفی جدید می گذارند. حال می توانیم با بررسی مقدار داشتن یا نداشتن این متغیرها به خالی بودن یا پر بودن کادرها پی ببریم. این کار را با شرطی زیر انجام می دهیم:

if ( !empty($name) && !empty($_POST['comments']) && !empty($_POST['email']) )

این شرطی بررسی می کند که اگر متغیرهای نام٬ رایانامه و دیدگاه خالی نیست، دستورهای بعدی انجام شوند. در صورتی که پاسخ این شرط منفی باشد، به قسمت else می رود و هشدار خالی بودن را می دهد.

else
{
echo '<div class="error">لطفا برگردید و فرم را کامل پر کنید</div>';
}

همانطور که ملاحظه می کنید در داخل پرانتز if از هر دو نوع متغیر استفاده شده تا به شما گوناگونی این کاربرد را نشان دهیم. به طور مثال یکجا از خود متغیر ($_POST['comments']) استفاده شده و در جای دیگر متغیر $_POST['name'] را درون متغیر دیگری با نام $name ریخته و از آن استفاده کردیم.

در داخل این شرط از دو عملگر && و ! برای مطمئن شدن از خالی نبودن متغیرها استفاده شده است.

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

برای نمایش بهتر داده ها در صفحه مرورگر می توانید فایل سوم را هم به پوشه اضافه کنید. این فایل همان فایل سی اس اس است که در درس قبلی داشتیم.

نکته: ممکن است که شما نخواهید کاربر را مجبور کنید که  برای همه کادرها داده ای وارد کند. در این صورت می توانید آن قسمت را از شرط حذف کنید.

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

در درس بعدی ما به یکی دیگر از انواع داده ها یعنی آرایه ها می پردازیم. آرایه ها دقیقا مانند دیگر متغیرها هستند با این تفاوت که آنها می توانند بیش از یک مقدار را برای ما نگهداری کنند.

پس تا درس بعد بدرود.

مطالب مرتبط
ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو