جلسه هفتم PHP : آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته (جلسه اول حل تمرین)
در این جلسه از آموزش PHP با جلسه هفتم PHP در خدمت شما هستیم. در قسمت قبل در جلسه ششم پی اچ پی انواع حلقهها در PHP را بررسی کردیم. رسم فلوچارت برای حلقهها همیشه به فهم بهتر آنها کمک میکند. ازاینرو برای هرکدام از حلقههای for، while، do-while و foreach علاوه بر آوردن مثالی ساده، فلوچارتی نیز رسم کردیم. جلسه هفتم پی اچ پی را به حل تمرین اختصاص دادهایم. حتماً تکتک آنها را بررسی کرده و قبل از دیدن جواب، سعی کنید تا آن را حل کنید.
جلسه اول حل تمرین PHP
** جواب تمامی سؤالات در پایین صفحه قابلمشاهده است. **
توجه داشته باشید که ممکن است جوابهای شما دقیقاً همانند جوابهای این جلسه نباشد. ازاینرو نگران نباشید. اما لطفا بعد از نوشتن ِ جوابهای خودتان، حتما جوابهای موجود در این جلسه را با دقت بررسی کنید، چرا که ممکناست نکتهای در جوابها وجود داشتهباشد، که به یادگیری ِ عمیقتر ِ مساله کمک کند.
- برنامهای بنویسید، که خروجی زیر را نمایش دهد. این برنامه میتواند به فهم بهتر شما در مورد string ها کمک کند.
1 2 |
str1: this is a test /*8 str2: //congratulations |
تفاوت تک کوتیشن و دابل کوتیشن را در جلسه دوم PHP داشتیم.
2. برنامهای بنویسید که با استفاده از حلقه for خروجی زیر را تولید کند. حلقه for را در جلسه ششم PHP ملاحظه نمودید.
1 2 3 4 |
C00 C01 C02 C03 |
3. برنامهای بنویسید که مقدار دو متغیر را جابهجا کند. برای مثال: دو مقدار a= 12 و b=6 را به b=12 و a=6 تغییر دهد.
4. فرض کنید x=10 و y=7 باشد. ابتدا عملیاتهای زیر را انجام دهید و سپس با دستور echo آنها را به نمایش درآورید.
x+y ، x/y ، x-y ، x*y ، x%y
جواب هرکدام را در خطوط جداگانه در خروجی نمایش دهید.
با عملگرهای محاسباتی در جلسه سوم PHP آشنا شده بودیم.
5. مقدار value را در ابتدا 8 قرار دهید. سپس 2 واحد به آن اضافه کنید. حال 4 واحد کم کنید. در مرحلهی بعد 5 را در آن ضرب کنید. حال 3 را به آن تقسیم کنید. اکنون یک واحد افزایش دهید. سرانجام یک واحد کاهش دهید.
** توجه داشته باشید که حتماً باید مقدار value را در هر مرحله دچار تغییر کنید. و همچنین هرکدام را در خطوط جداگانه محاسبه نمایید. میتوانید از عملگرهای نسبتدهی در جلسه سوم PHP کمک بگیرید. **
6. در ششمین مورد فقط مثال ِ زیر را در نظر بگیرید. نیاز به حل کردن نیست.
در جلسه چهارم PHP آموختیم که توابع var_dump() و print_r() تمامی عناصر یک آرایه را نمایش میدهند. حال فرض کنید که برنامهای وسیع نوشتهاید. برای اینکه متوجه شوید اکنون فلان متغیر چه مقداری را اختیار کرده است، کافی است که از این دو تابع استفاده کنید. به مثال زیر توجه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $name='codepaz'; $number=123; var_dump ($name); echo "<br/>"; print_r ($name); echo "<br/>"; var_dump ($number); echo "<hr/>"; $name=null; var_dump ($name); |
خروجی کد بالا:
7. شعاع دایرهای برابر 5 میباشد. محیط و مساحت آن را حساب کنید. و در خروجی بهصورت زیر نمایش دهید.
Mohit = مقدار محیط
Masahat = مقدار مساحت
8. دانشگاهی قرار است بر اساس معدل ِ دانشجویان، به آنها مبلغی را واریز نماید. جدول زیر ترتیب مبالغ را نمایش میدهد. فرض کنید این مقادیر به نحوی وارد میشوند. شما با استفاده از if…else…elseif شروط جدول را تعیین کنید.
9. با استفاده از دستور switch برنامهای بنویسید که معادل عددی روزهای هفته را بگیرد سپس روز معادل آن را چاپ کند. روزهای هفته را با اعداد مشخص کنید فرض را بر این میگیریم که شنبه معادل 0 است. بنابراین جمعه 6 است. فرض کنید که کاربر عدد 0 را وارد کرده است. که یعنی امروز شنبه میباشد.
10. مجموع و میانگین اعداد 25 تا 35 را با استفاده از حلقهی for حساب کنید.
((25 + 26 + 27 + …. +35) / 10 )
11. اعداد 5- تا 5 را با طول گام 0.5 در خروجی چاپ کنید.
12. برنامهای بنویسید که با حلقهی for اعداد 1 تا 10 را به طور معکوس در خروجی چاپ کند.
13. با استفاده از for های تو در تو جدول ضرب 6*6 را به صورت زیر در خروجی چاپ کنید.
14. با استفاده از حلقهی while برنامهای بنویسید که مضارب 5 کوچکتر از عدد 36 را در خروجی نمایش دهد.
15.1. با استفاده از حلقهی for اعداد زوج بین 1 تا 10 را نمایش دهید.
15.2. (این سوال را یکبار با عبارت continue و یکبار بدون عبارت continue بنویسید.)
جواب تمرینها از جلسه هفتم PHP
توجه: ** اگر سوال، ایراد، نظر و یا هر چیز دیگری مدنظر شما بود، می توانید آن را در کامنتها مطرح کنید. **
جواب تمرین 1 :
1 2 3 |
<?php echo 'str1: this is a test /*8'."</br>".'str2: //congratulations'; ?> |
جواب تمرین 2 :
1 2 3 4 5 6 |
<?php for ($i=0 ; $i<=3 ; $i++) { echo "C0" . $i; echo "<br>"; } ?> |
جواب تمرین 2 به گونهای دیگر
1 2 3 4 5 6 7 |
<?php $d = 'C00'; for ($i=0 ; $i<=3 ; $i++) { echo $d++; echo "<br>"; } ?> |
جواب تمرین 3 :
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $a = 12; $b = 6; $temp = null; echo "at the first a = ".$a ." and b = ".$b ; $temp = $b; $b = $a; $a = $temp; echo "<br>"; echo "now a = ".$a ." and b = ".$b ; ?> |
نکته 1: تکنیک ِ این سؤال میتواند اینگونه باشد که مقدار متغیر b را بهصورت موقت به متغیر temp بدهیم، سپس مقدار متغیر ِ a را به b میدهیم. متأسفانه با این کار، مقدار متغیر ِ اصلی ِ b از بین رفت. اما جای ِ هیچگونه نگرانی نیست، چراکه در ابتدا مقدار متغیر b را در temp ذخیره کرده بودیم. حالا وقت آن است تا که مقدار ذخیرهشده در temp را به متغیر a بدهیم. با این کار مقدار متغیرهای a و b را جابهجا کردیم.
شما در حال آموزش و یادگیری جلسه هفتم PHP می باشید.
جواب تمرین 4 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $x = 10; $y = 7; $result=$x+$y; echo "$x + $y = $result<br>"; $result=$x-$y; echo "$x - $y = $result<br>"; $result=$x*$y; echo "$x * $y = $result<br>"; $result=$x/$y; echo "$x / $y = $result<br>"; $result=$x%$y; echo "$x % $y = $result<br>"; ?> |
نکته 1: در جواب این سؤال، چندین x و y را تعریف کردیم و چندین مرتبه آنها را در متغیر result قراردادیم. بااینحال هیچگونه اروری دریافت نکردیم. در این خصوص باید بدانیم که در PHP کدها بهصورت خط به خط توسط مفسر (interpreter) تفسیر و اجرا میشوند بنابراین در هر خط ممکن است x، y و یا result جدید تعریف شود و این مورد اگر در برنامهی ما خللی ایجاد نکند، اصلاً ایراد ندارد.
جواب تمرین 5 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $Value = 8; echo "Value is now $Value.<br/>"; $Value += 2; echo "Value is now $Value.<br/>"; $Value -= 4; echo "Value is now $Value.<br/>"; $Value *= 5; echo "Value is now $Value.<br/>"; $Value /= 3; echo "Value is now $Value.<br/>"; $Value++; echo "Value is now $Value.<br/>"; $Value--; echo "Value is now $Value.<br/>"; ?> |
نکته 1: در این سؤال هم مانند سؤال قبل، میتوانستیم حاصل را در متغیری مشابه result ذخیره کنیم. اما چرا کد زیادی بنویسیم؟!
بنابراین با استفاده از عملگرهای نسبتدهی، مستقیماً تغییرات را روی value اعمال میکنیم.
جواب تمرین 7 :
1 2 3 4 5 6 7 8 9 |
<?php $r = 5; $pi = 3.14; $mohit = 2*$pi*$r; $masahat = $pi * ($r**2); echo "mohit = ".$mohit; echo "masahat = ".$masahat; ?> |
جواب تمرین 8 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$input = null; if ($input >= 18 and $input <= 20) { echo "your money is 900,000"; } elseif ($input >= 15 and $input <= 17) { echo "your money is 600,000"; } elseif ($input >= 12 and $input <= 14) { echo "your money is 300,000"; } else { echo "your money is 100,000"; } ?> |
جواب تمرین 9 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php $x = 0; switch ($x){ case 0: echo "emroz shanbe ast."; break; case 1: echo "emroz 1shanbe ast."; break; case 2: echo "emroz 2shanbe ast."; break; case 3: echo "emroz 3shanbe ast."; break; case 4: echo "emroz 4shanbe ast."; break; case 5: echo "emroz 5shanbe ast."; break; case 6: echo "emroz jome ast."; break; default: echo "please exit"; } ?> |
جواب تمرین 10 :
1 2 3 4 5 6 7 8 |
<?php $sum = null; for ($i = 25; $i <= 35; $i++) { $sum += $i; // echo "i = $i and sum = " . $sum . "<br>"; } echo "sum = " . $sum . "<br/>"; echo "avg = " . $sum / 10; |
نکته 1: اگر خطی که کامنت شدهاست را از کامنت خارج کنید، خروجی را در هر مرحله نمایش میدهد.
جواب تمرین 11 :
1 2 3 4 5 |
<?php for ($i=-5 ; $i <= 5 ; $i = $i + 0.5){ echo $i ."</br>"; } ?> |
جواب تمرین 12 :
1 2 3 4 5 |
<?php for ($i=10 ; $i >= 1 ; $i--){ echo $i ."</br>"; } ?> |
نکته 1: همانطور که ملاحظه میکنید، حلقهی for را بهصورت برعکس هم میتوانیم بنویسیم. مقدار متغیر اولیه را یک عدد بالا در نظر بگیریم و سپس انتهای این حلقه که همان شرط ِ ما است را یک عدد پایین در نظر بگیریم. حال با استفاده از شمارنده، با طول ِ گام موردنظر، به سمت شرط (انتهای حلقه) حرکت میکنیم.
جواب تمرین 13 :
1 2 3 4 5 6 7 8 9 10 |
<?php echo '<pre>'; for ($row = 1; $row <= 6; $row++) { echo "</br>"; for ($col = 1; $col <= 6; $col++) { echo $row * $col . "\t"; } } // close pre tag echo '</pre>'; |
نکته 1 : از “\t” برای ایجاد tab استفاده میکنیم.
نکته 2: تگ pre برای نمایش بهتر، استفاده میشود. یکبار بدون آن تست کنید.
نکته 3: توضیح حلقههای for تودرتو در PHP
ابتدا برنامه وارد حلقهی for میشود. درون این حلقهی for یک حلقهی for دیگر نیز وجود دارد. حلقهی for داخلی 6 تکرار دارد. بنابراین 6 بار متغیرهای row و col را ضرب میکند و 6 ستون در ردیف اول میچیند. حال کار با حلقهی داخلی تمامشده است. وارد حلقهی اصلی میشود و دومین تکرار یا دومین ردیف را اجرا میکند. بازهم سراغ ِ حلقهی داخلی میرود و 6 بار تکرار میشود که یعنی 6 ستون در دومین ردیف را میچیند و سپس از حلقهی داخلی خارج میشود. این روند تا ششمین row تکرار میشود. تا یک جدولضرب 6*6 اجرا شود.
عکس زیر هم ممکن است برای درک بهتر حلقههای for تودرتو در پی اچ پی کمک کننده باشد.
جواب تمرین 14 :
1 2 3 4 5 6 7 8 9 |
<?php $i = 1; while ($i < 37){ if ($i % 5 == 0) { echo $i ."</br>"; } $i ++; } ?> |
نکته 1: شرط if برای بررسی مضرب 5 بودن اعداد است. زمانی شرط if بررسی خواهد شد که عدد ما مضرب 5 باشد.
نکته 2: حتماً دقت کنید که افزایندهی i باید بیرون حلقهی if و در حلقهی اصلی، یعنی حلقهی while قرار گیرد تا بتواند مقدار i را زیاد کند که حلقهی while بتواند اعداد بعدی را بررسی کند.
نکته 3: اگر افزایندهی i را درون if قرار دهید، فقط در مواردی i را زیاد میکند که عدد مضرب 5 باشد.
نکته 4: با افزاینده های محاسباتی در جلسه سوم PHP آشنا شدیم.
جواب تمرین 15.1:
1 2 3 4 5 6 7 |
<?php for ($i = 1; $i < 10; $i++) { $result = $i % 2; if ($result == 0) { echo $i . "<br>"; } } |
جواب تمرین 15.2:
1 2 3 4 5 6 7 |
<?php for ($i = 1; $i < 10; $i++) { if (($i % 2) != 0) { continue; } echo $i . "<br>"; } |
سخن پایانی
تبریک میگم شما موفق شدید تا جلسه هفتم PHP ، ( جلسه اول حل تمرین )را پشت سر بگذارید. اگر تمرین مناسبی در ذهن شما وجود دارد که تا این لحضه به موضوعات آن پرداختیم، لطفا آن را در کامنتها ثبت کنید. و یا از طریق ایمیل کدپز برای ما ارسال کنید. تا در این جلسه آنها را قرار دهیم.
در آینده 2 جلسه حل تمرین هم خواهیم داشت که میتوانید به آنها نیز دسترسی داشته باشید. البته که تمرینها سختتر خواهند بود، بنابراین در ابتدا نیاز است تا ادامهی جلسات آموزش PHP را پشت سر بگذارید.
همچنین در نظر داشته باشید خودتان هم میتوانید تمرینهای بیشتری را از اینجا ملاحظه کنید.
11 Comments
Join the discussion and tell us your opinion.
سلام خسته نباشید خیلی ممنون بابت مطالب خوبتون انشالله بتونیم جبران کنیم
قربان تو تمرین 7 یجا توانو حساب کردین من همونو به صورت ضرب نوشته بودم ولی نکته جالبی که هست جواب شما اشتباه درومد بعد رفتم نگاه کردم نمیدونم چرا توانو درست حساب نمیکنه
این کد
$masahat = $pi*(($r)^2);
جواب مساحتو 21.98 در میاره بعد توانشو جداگونه زدم 7 در میاره 5 به توان 2 رو
بعد تو تمرین 14 هم من متوجه اون علامت % و نحوه کارش نشدم من یه چیز دیگه درآوردم عددایی که با ضرب شدن در 5 زیر 36 در میومدن رو برنامه نوشتم که تایپ کنه یعنی 1 تا 7
اینجوری در اومد آخرش:
mazareb shamel
1 , 2 , 3 , 4 , 5 , 6 , 7 ,
mishavad
با تشکر از زحماتتون
سلام
در سوال 7 ایرادی وجود ندارد.
کدی که برای محاسبه مساحت نوشتید درست هستش.
بسته به میزان ورودی از طرف کاربر، مساحت محاسبه خواهد شد.
در تمرین 14 هم علامت % به کار گرفته شده است که بیان گر ” باقی مانده تقسیم ” می باشد.
اگر این مورد برای شما مفهوم نیست، می توانید آن را در جلسه سوم PHP فرا بگیرید. برای این منظور روی لینک زیر کلیک کنید.
آموزش علامت % در PHP
بعد جواب تمرین 5 هم مشکل داره وسطش از خط ۸ به بعد متغیرتونو به جای $value نوشتین $num
ممنون اصلاح شد.
سلام خسته نباشید بابت تمرین ها ممنون کمک بزرگیه ولی بعضی از سوالات کد های دیگه هم میشه نوشت که جواب یکسان باشه فقط مال شما جواب نیست و در سوال 8 هم باید یک الز دیگه اضافه کنید اخر که اگر نمره ها بین این 4تا نبود و تجدید بود انگار هیچ پولی تعلق نگیرد لطفا اصلاح کنید با تشکر
با سلام خدمت شما و سایت بسیار خوبتون…
خیلی خوب و کامل توضیح داده شده و بسیار مفید و ارزشمند بود
سپاس از شما
درود جناب حسین زاده .
تمرین ها عالی بود .
فقط ای کاش برای هر تمرین ، توضیحات مختصری درمورد عملیات های خاص(مثل مثال 13 ) داده بشه .
چون عملا برای حل تمرین ها ، باید از دانسته هایی که توی درسنامه های قبل از تمرین هاست استغفاده کرده و در اون درسنامه ها ، درمورد جزئیات ، اطلاع کاملی داده نشده و چه بهتر که توی تمرین ها توضیحاتتون رو کامل کنید .
مثلا در تمرین آخر ، دانشجو هیچ درکی از این قضیه نداره که چرا عملگر افزایشی شمارنده (++i$) چرا درون حلقه ی while قرار گرفته و چرا نباید درون کندیشن if قرار بگیره .
درکل واقعا ممنون بخاطر تدریس عالیتون و تمرین های عالی ترتون که هم برای یادگیری از صفر و هم مرور دانسته ها واقعا عالی هستش ! 3> 3> 3>
با سلام خدمت شما و ممنون از همراهیتان برای بهتر کردن محتواها
بعد از کامنت شما، در پاسخ تمامی سؤالات اصلاحاتی قرار داده شد. همچنین نکتههایی برای درک بهتر پاسخها قرار داده شد.
در جلسات آینده هم اگر نکتهای مدنظرتان بود، خوشحال میشویم که با ما در میان بگذارید.
قطعه کدی بنویسید ک عددهای زوج چاپ کند php
تمرین 15.1 و 15.2 از این جلسه را به این سوال اختصاص دادهایم.
سلام وقتتون بخیر ببخشید ی مسله ایی تو تمرین ۴ و ۵ داشتم اول اینکه تو پاسخ ۴ ک گذاشتید echoو دوباره عملیات نوشته شده پاسخ اشتباه در میاد چون من امتحان کردم تو اکو هم ی بار دیگ عملیات انجام میده
تو تمرین ۵ هم مسله ایی ک هست اینه مقدار ۸ نباید اپدیت بشه ؟؟
چون من داشتم حل میکردم حس کردم مثلا وقتی به ۸ ۲ واحد اضافه شد اون واحد اضافه شده باید کم بشه؟
ممنون میشم پاسخ بدید