منتدى استراحات زايد

منتدى استراحات زايد (http://vb.ma7room.com/index.php)
-   منتدى أخبار المواقع والمنتديات العربية والأجنبية (http://vb.ma7room.com/forumdisplay.php?f=183)
-   -   الدرس الخامس من دورة y4$$3r n3t - المتغيرات والتعليمات الشرطية والتكرارية (http://vb.ma7room.com/showthread.php?t=227891)

محروم.كوم 09-09-2009 05:10 AM

الدرس الخامس من دورة y4$$3r n3t - المتغيرات والتعليمات الشرطية والتكرارية
 
نبدأ درسنا اليوم
بإضافة بسيطة عن المتغيرات كنا قد تجاوزناها...
وهي : كيفية التحكم بقيم المتغيرات من خارج الكود البرمجي..!

وهناك طريقتان..
أولاهما عن طريق النماذج Forms وسنتكلم عنها بالتفصيل بعد دروس قليلة
والثانية عن طريق الرابط حيث تقوم بتغيير أشياء بسيطة فيه ليعطيك نتائج جديدة

مثلاً في درسنا السابق عن for
وضعنا مثالاً عن استثناء سطر مثلاً أو عمود محدد.. وقد قمنا بتحديده من داخل الكود البرمجي









فما رأيكم لو أردنا التحكم بهذا العمود من الرابط؟؟









لقد استبدلنا القيم المستثناة بمتغيرات... ولكن هذه المتغيرات ليس لها قيمة
قيمها ستأخذها من الرابط!!... كيف؟؟... يجب أن يكون الرابط بهذا الشكل:
http://localhost/lesson5/test1.php?line1=3&line2=7
حيث 3 هي القيمة المفترضة لرقم السطر المستثنى الأول و7 للثاني...

لكن هناك مشكلة ستحدث اذا ما طلبنا الرابط بدون هذه المتغيرات فيه... حيث سيعتبر قيمها تساوي الفراغ ولن يستثني شيئاً... لذلك من الممكن أن نضيف على المثال شرطاً هو كالتالي:







مامعنى الشرط السابق...
معناه "إذا لم تجد أن للمتغير line1 قيمه فاعطه القيمة 3"
وهنا وفي البرمجة بشكل عام: اشارة التعجب تعني النفي أو العكس...
واستغنينا عن قوس التعليمات في if لأننا وضعنا فيها تعليمة واحدة... ومن الممكن وضعه وليس بالمشكلة...

وعكس هذا الشرط:
{ }(if($line1 وهنا يتحقق الشرط اذا كان هناك أي قيمة لهذا المتغير


أمر أخير بالنسبة للمتغيرات وهو بعض ملاحظات فيها
- نفصل بين أسماء المتغيرات وقيمها بإشارة =
- ونفصل بين كل متغير وقيمته مع متغير اخر بإشارة &
- ونفصل بين أول متغير واسم الصفحة البرمجية بإشارة ؟
- اذا طلبنا رابط صفحة وذكرنا في الرابط عدة متغيرات بقيم متعددة... وكان في الكود البرمجي عملية تخزين لقيمة ضمن أحد المتغيرات فإن المتغير سيحتفظ بقيمته الأخيرة... وينفذ على أساسها... لذلك وضعنا الشرط قبل تخزين القيم الافتراضية في حال لم يكن للمتغير قيمه من الرابط في مثالنا الأخير

- المثال الأخير كما هو الآن سيعمل بدون مشاكل على كمبيوترك الشخصي...
لكن ارفعه على الانترنت ستجد انك مهما غيّرت من القيم من الرابط سيبقى يأخذ القيم الافتراضية 3 و 7
وسبب ذلك نوع حماية مستخدم اسمه register_global لا يهمنا ... لكنه يرفض التعامل مع المتغيرات بأسمائها كما هي في الرابط...
وعند فحص قيمتها يخبرك بأنها فارغة
فالمتغيرات التي تريد أخذها من الرابط للتعامل معها عليك أن تأخذها بالشكل

الكود $_GET['line1']
$_GET['line2']


ولكي يصبح مثالنا صحيحاً... نقوم فيه بالتعديل :









وطبعاً الرابط لا يتغير ويبقى كما هو..
http://localhost/lesson5/test1.php?line1=3&line2=7
الآن .. أصبح يعمل على كمبيوترك الشخصي وعلى الانترنت بشكل سليم...


تكلمنا عن التعليمة الشرطية if .. elseif .. else
وأنها تأخذ عدداً غير محدود من elseif

لكن في هذه الدالة مشكلة... وهي أنك مثلاً إذا وضعت فيها 50 قسم من elseif
وكانت القيم المعطاة لا تتحقق الا بالقسم الأخير فالبرنامج سينجبر أن يفحص الشروط السابقة كلها ليجدها غير محققة ليصل إلى القسم الأخير المحقق وينفذ تعليماته
وهذا قد يتطلب وقتاً... غير محبذ في البرمجة!

لذلك يمكنك الاستعاضة عن هذه الدالة الشرطية بالدالة switch التي تساعدك اذا كنت تفحص قيمة متغير واحد

ولها الشكل الآتي







تقرأ جميع الاحتمالات التي تم اعدادها من قبل المبرمج وتنفذ المحققة فوراً وتخرج من الدالة
وكمثال عملي...
نفرض ان المتغير var1 سنبعثه عن طريق الرابط








- تعليمة break هنا من أصل تعليمة switch ولا يمكن الاستغناء عنها..
- يمكن الاستغناء عن القسم الأخير صاحب القيمة default ولا مشكلة..
- وطبعاً رأينا التمييز في المعاملة مابين القيم النصية والقيم الرقمية

وجدنا في for أنه علينا تحديد القيمة الابتدائية والنهائية وطبيعة التكرار هل هو في زيادة أو في نقصان لتتم عملية التكرار...
واستخدمنا على سبيل المثال...









قد يقول البعض إن for معقدة!! ولو أنها بسيطة... وهناك دالة تقوم بعملها نفسه بكل سهولة إنها while

نتكلم عن شكلها اولاً







وكمثال عليها إذا ما أحببنا استخدامها بدل for في المثال السابق








طبعاً هنا في قوس التعليمات يمكنك وضع أي شيء تريده
ووضعنا أن فيه المتغير يأخذ قيمة متزايدة .. وإلا ستكون while غير منتهية

ما أهمية استخدام while
أحيانا تواجهنا مواقف قد لانعرف فيها القيمة النهائية التي نريد الوصول إليها او طبيعة التكرار وقد يكون التكرار عشوائياً لمجرد الوصول إلى شرط معين...
وهذا ما لا تؤمنه تعليمة for .!

مثلاً أريد تكرار مجموعة تعليمات معينة لمدة ثانيتين من الزمن (ينصح بعدم التجربة)!







حيث أن الدالة time() لمعرفة الزمن الحالي بالثانية وهي عدد الثواني منذ عام 1970 وحتى الآن وكل ثانية تزداد بمقدار واحد
والشرط كان : اذا كان الوقت الذي قمنا بتخزينه لحظة البدء بعد اضافة ثانيتين عليه أكبر من الوقت الحالي قم يتنفيذ مابين قوسي التعليمات... وبمجرد مرور ثانيتين سيصبح اصغر وستنتهي تعليمة while

من الممكن أن نستخدم تعليمة break ضمن while وتعني اقطع التنفيذ واخرج من while
مثال:






وهنا سيقطع التنفيذ عند بعد أن تصبح قيمة المتغير i عشرة ويكمل التعليمات الموجودة خارج while


ملاحظة على الهامش..








الوظيفة...
نريد الوظيفة السابقة الخاصة بـ for باستخدام while... بعد تحويل جميع القيم فيها إلى متغيرات يمكننا تعديل قيمها عن طريق الرابط...
وهذه هي الوظيفة السابقة ::








وبالنسبة للوظايف اتبحبحوا بالأسطر والفراغات... يعني اللوح أد الحيط http://it.jamaa.cc/smilies/38.gif



-=-=-=-

أرجو ان وفقت بنقل هذا الدرس لكم
لأي سؤال عن هذه الدرس او اي استفسار أو لتقديم الوظيفة ان احببتم
يمكنكم زيارة الرابط التالي :

http://it.jamaa.cc/art247572.html

إلى اللقاء موعدنا في الدرس التالي
وهو الدرس السادس
تحيــاتي


الساعة الآن 09:46 AM

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir


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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227