الحاسب الآلي · الصف الثالث الثانوي · الترم الأول
إنتاج مشروع تحويل عدد بين النظم العددية باستخدام لغة PHP
بناء نفس مشروع تحويل الأعداد بين النظم العددية، لكن كصفحة ويب باستخدام لغة PHP من جانب الخادم: نموذج HTML لإدخال البيانات، ودوال PHP الجاهزة للتحويل بين الأنظمة.
آخر تحديث: · كيف نراجع المحتوى
مقدمة
- الشعبة: مشترك (كل الشُعب)
- الوحدة: الأولى — مشروع إنتاج برمجية لتحويل عدد بين النظم العددية / الموضوع: الثالث
- الصفحات: 37–50 من كتاب الطالب
في الموضوع السابق أنتجتَ برنامجًا يعمل على جهاز واحد. هنا تنتج صفحة ويب ديناميكية تُحوِّل عددًا بين النظم الثلاثة: يكتب المستخدم العدد ويضغط أحد ثلاثة أزرار فيعرض الخادم المكافئات على الصفحة نفسها. ستتعلم كيف يتعاون HTML وPHP في صفحة واحدة.
أهداف التعلم
- أن تشرح متطلبات إنتاج مشروع التحويل بلغة PHP على صفحة ويب.
- أن تحدد عناصر التحكم المناسبة (مربع نص، ثلاثة أزرار Submit، ثلاثة عناوين Label).
- أن تفسّر أجزاء الكود الأربعة وتستعمل دوال التحويل الجاهزة.
- أن تشغّل الصفحة وتتحقق من نتائجها.
شرح الدرس
1) متطلبات المشروع ومراحله
تتيح لغة PHP إنتاج صفحات ويب ديناميكية (Dynamic Web Pages) تُعالَج بياناتها وتعيد نتيجة المعالجة على الصفحة. ويعتمد التنفيذ على أساسيات HTML وتطبيق Expression Web الذي يُنشئ صفحة ساكنة (Static) ويُظهر كود HTML المقابل لها، ثم تضيف أنت كود PHP. المراحل:
- تصميم الصفحة: تحديد النصوص وعناصر التحكم، ثم إدراجها وضبط خصائصها.
- كتابة الكود: بالضغط على زر Code ثم إضافة كود PHP لمعالجة البيانات وعرض الناتج.
2) عناصر التحكم في الصفحة
| العنصر | الغرض |
|---|---|
| Form | يضم كل عناصر التحكم |
| Text (مربع نص) | إدخال العدد المراد تحويله |
| ثلاثة أزرار Submit | «تحويل ثنائي» ← العدد المدخل ثنائي فيُحسب مكافئه العشري والسداسي عشر، «تحويل عشري»، «تحويل السداسي عشر» |
| ثلاثة عناوين Label | تعرض المكافئ الثنائي، والمكافئ العشري، والمكافئ السداسي عشر |
3) الكود المستخدم وتفسيره
الجزء الأول — هيكل صفحة الويب: <html> و<head> و<title> لعنوان الصفحة، وسطر <meta … charset=utf-8> لظهور الحروف العربية سليمة، و<body dir='RTL'> لعرض النص من اليمين إلى اليسار، و<h1> لعنوان بحجم خط من 1 (الأكبر) إلى 6 (الأصغر)، ووسم <form method='post'> الذي يحدد طريقة نقل البيانات (method) والإجراء (action) عند الضغط على Submit فتظهر النتيجة على الصفحة نفسها.
الجزء الثاني — الإعلان عن المتغيرات والمعالجة (داخل <?php … ?>):
<?php
$numberconvert = ""; $numberbin = ""; $numberdec = ""; $numberhex = "";
if (isset($_POST['Submit1'])) { // زر "تحويل ثنائي"
$numberconvert = $_POST['num'];
$numberbin = $numberconvert;
$numberdec = bindec($numberconvert);
$numberhex = dechex($numberdec);
}
if (isset($_POST['Submit2'])) { // زر "تحويل عشري"
$numberconvert = $_POST['num'];
$numberbin = decbin($numberconvert);
$numberdec = $numberconvert;
$numberhex = dechex($numberdec);
}
if (isset($_POST['Submit3'])) { // زر "تحويل السداسي عشر"
$numberconvert = $_POST['num'];
$numberdec = hexdec($numberconvert);
$numberbin = decbin($numberdec);
$numberhex = $numberconvert;
}
?>
| الدالة | وظيفتها |
|---|---|
bindec() | ثنائي ← عشري |
decbin() | عشري ← ثنائي |
hexdec() | سداسي عشر ← عشري |
dechex() | عشري ← سداسي عشر |
ولأنه لا توجد دالة للتحويل المباشر بين الثنائي والسداسي عشر، يمر التحويل بينهما عبر النظام العشري (مثل bindec ثم dechex). وتختبر isset($_POST['Submit1']) هل ضُغط الزر المعني، وتلتقط $_POST['num'] القيمة من مربع النص.
الجزء الثالث — إدراج عناصر التحكم: وسم <input name='num' type='text' …> لمربع النص، وvalue='<?php echo $numberconvert; ?>' ليعيد عرض العدد المكتوب بعد كل تحديث للصفحة، وثلاثة وسوم <input type='submit' name='Submit1…3' value='…'> للأزرار، و لترك مسافة. ويمكن إدراج الزر بـ Input(button) أو Input(Submit) بحسب الحاجة، ولا يشترط ترتيب خصائص العنصر.
الجزء الرابع — عرض النتائج: تُستعمل echo لطباعة قيمة المتغير داخل Label: <label id='Label1'><?php echo $numberbin; ?></label> للثنائي، وLabel2 للعشري، وLabel3 للسداسي عشر، ثم تُغلق الوسوم </form></body></html>.
مثال تشغيل: إدخال 1011 والضغط على «تحويل ثنائي» يعرض: الثنائي 1011، العشري 11، السداسي عشر b. وإدخال 255 مع «تحويل عشري» يعرض 11111111 و255 وff.
أمثلة وتطبيقات
- ما وظيفة
isset($_POST['Submit2'])؟ تتحقق من أن المستخدم ضغط زر «تحويل عشري» فتُنفَّذ كتلة الكود الخاصة به. - ماذا يُنتج
decbin(12)؟ النص1100. - ماذا يُنتج
hexdec("1F")؟ العدد31. - لماذا نحتاج خطوة وسيطة عند التحويل من ثنائي إلى سداسي عشر؟ لأنه لا توجد دالة مباشرة، فنحوّل أولًا بـ
bindecثم نطبقdechexعلى الناتج. - ما فائدة
dir='RTL'؟ يجعل النص وعناصر التحكم تظهر من اليمين إلى اليسار.
ملاحظات مهمة
- PHP تُنفَّذ على الخادم، ولا يصل إلى المتصفح إلا صفحة HTML الناتجة.
- تُستعمل
<?php … ?>لفتح وإغلاق كود PHP داخل صفحة HTML. - أسماء المتغيرات في PHP تبدأ بالعلامة
$. - تُظهر دالة
dechexالحروف السداسية عشرية بصورة صغيرة (مثلff)؛ وهذا لا يغيّر قيمة العدد. - بين الدوال الجاهزة في PHP دالة
base_convert($number, $from, $to)التي تحوّل بين أي نظامين، لكن المشروع المقرر يعتمد الدوال الأربع أعلاه.
المفاهيم الأساسية
- صفحة ويب ديناميكية، وHTML وPHP وExpression Web.
- عناصر التحكم: Form، مربع نص، ثلاثة أزرار Submit، ثلاثة Label.
bindec،decbin،hexdec،dechex.isset($_POST[...])وechoوmethod='post'.
ملخص الدرس
يُنتج مشروع الويب بتصميم صفحة بمربع نص وثلاثة أزرار Submit وثلاثة عناوين، ثم كتابة كود PHP يلتقط القيمة بـ $_POST ويفحص الزر المضغوط بـ isset ويحوّل بالدوال bindec وdecbin وhexdec وdechex (مع المرور بالعشري بين الثنائي والسداسي عشر)، ثم يطبع النتائج في Label بـ echo.
أسئلة للتدريب
- ما الفرق بين صفحة الويب الساكنة والديناميكية؟
- ما وظيفة كل من
issetو$_POSTوechoفي الكود؟ - اكتب الدالة المناسبة للتحويل من عشري إلى ثنائي ومن سداسي عشر إلى عشري.
- ماذا يعرض المشروع عند إدخال
1011والضغط على «تحويل ثنائي»؟ - لماذا نحتاج خطوة وسيطة للتحويل من ثنائي إلى سداسي عشر؟