البرمجة والذكاء الاصطناعي · الصف الأول الثانوي · الترم الأول
تطوير تطبيق اختبارات بالذكاء الاصطناعي ومراجعته
تطوير تطبيق ويب لاختبار من متعدد بلغات HTML وCSS وJavaScript بمساعدة الذكاء الاصطناعي التوليدي: تخزين الأسئلة في مصفوفة، وعرض الخيارات أزرارًا، والتحقق من الإجابة بعبارة if وelse، وحساب النسبة المئوية للنتيجة، ثم مراجعة ما تعلمته من التطبيق.
آخر تحديث: · كيف نراجع المحتوى
مقدمة
- الوحدة الثالثة عشرة: الذكاء الاصطناعي التوليدي — الموضوعان 13-7 و13-8
الاختبارات الإلكترونية التي تحلها على الإنترنت تطبيقات ويب: تعرض سؤالًا وخيارات، وتخبرك فورًا هل أجبت صحيحًا، ثم تعرض نتيجتك. في هذا الدرس نطلب من الذكاء الاصطناعي التوليدي تطبيق اختبار بسيطًا، ثم نفهم كوده سطرًا بسطر، ونطوره، ونراجع ما تعلمناه.
أهداف التعلم
- أن تستخدم الذكاء الاصطناعي التوليدي لإنشاء تطبيق اختبار من متعدد وتطويره.
- أن تشرح كيف تُخزن الأسئلة والخيارات في مصفوفة.
- أن تتتبع كيف يتحقق التطبيق من الإجابة بعبارة
if ~ elseويحسب النتيجة. - أن تصنف ما تعلمته إلى ما كنت تعرفه وما لم تكن تعرفه، وتستكمل فهمك.
شرح الدرس
خطوات التطوير
- أمر توجيهي: “أنشئ تطبيقًا بسيطًا لاختبار من متعدد (Quiz App) يحتوي على سؤال واحد فقط”.
- شغّل الكود، وعدّل نص السؤال والإجابات، واطلب: “اشرح هذا الكود”.
- تطوير: “اجعل الاختبار يتكون من 3 أسئلة”، ثم شغّل واطلب الشرح مجددًا.
- تخصيص: أضف ميزات مثل زيادة عدد الخيارات، وعرض نسبة الإجابات الصحيحة، وجعل ترتيب الأسئلة عشوائيًّا.
فكرة التطبيق
| الجزء | دوره |
|---|---|
مصفوفة questions | تخزن كل سؤال: نصه، وخياراته (مصفوفة choices)، ورقم الإجابة الصحيحة |
المتغير current | رقم السؤال الحالي (يبدأ من 0) |
المتغير score | عدد الإجابات الصحيحة |
الدالة showQuestion | تعرض السؤال الحالي وتنشئ زرًّا لكل خيار |
الدالة checkAnswer | تقارن اختيار المستخدم بالإجابة الصحيحة، ثم تنتقل للسؤال التالي أو تعرض النتيجة |
أمثلة وتطبيقات
ملف HTML:
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<title>اختبار سريع</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>اختبار سريع</h1>
<p id="question"></p>
<div id="choices"></div>
<p id="result"></p>
<script src="script.js"></script>
</body>
</html>
ملف JavaScript:
const questions = [
{ text: "ما عاصمة مصر؟", choices: ["الإسكندرية", "القاهرة", "أسوان"], answer: 1 },
{ text: "كم عدد البتات في البايت؟", choices: ["4", "8", "16"], answer: 1 },
{ text: "أي لغة تبني هيكل صفحة الويب؟", choices: ["HTML", "CSS", "Python"], answer: 0 }
];
let current = 0;
let score = 0;
const questionEl = document.getElementById("question");
const choicesEl = document.getElementById("choices");
const resultEl = document.getElementById("result");
function showQuestion() {
const q = questions[current];
questionEl.textContent = q.text;
choicesEl.innerHTML = "";
q.choices.forEach((choice, i) => {
const btn = document.createElement("button");
btn.textContent = choice;
btn.className = "choice";
btn.addEventListener("click", () => checkAnswer(i));
choicesEl.appendChild(btn);
});
}
function checkAnswer(i) {
if (i === questions[current].answer) {
score = score + 1;
resultEl.textContent = "إجابة صحيحة!";
resultEl.style.color = "green";
} else {
resultEl.textContent = "إجابة خاطئة";
resultEl.style.color = "red";
}
current = current + 1;
if (current < questions.length) {
showQuestion();
} else {
questionEl.textContent = "انتهى الاختبار";
choicesEl.innerHTML = "";
const percent = Math.round(score / questions.length * 100);
resultEl.textContent = "نتيجتك: " + score + " من " + questions.length + " (" + percent + "%)";
resultEl.style.color = "black";
}
}
showQuestion();
تتبع التنفيذ: إذا أجاب الطالب “القاهرة” ثم “16” ثم “HTML”:
| السؤال | اختيار الطالب | الإجابة الصحيحة | النتيجة المعروضة | score |
|---|---|---|---|---|
| 1 | القاهرة (رقم 1) | 1 | إجابة صحيحة! | 1 |
| 2 | 16 (رقم 2) | 1 | إجابة خاطئة | 1 |
| 3 | HTML (رقم 0) | 0 | — | 2 |
في النهاية: “نتيجتك: 2 من 3 (67%)”؛ لأن وتقريبها بالدالة Math.round يعطي 67.
أفكار للفهم:
questions.lengthعدد الأسئلة (3)، فالشرطcurrent < questions.lengthيعني “ما زالت هناك أسئلة”.document.createElement("button")تنشئ زرًّا جديدًا، وappendChildتضيفه إلى الصفحة.choicesEl.innerHTML = ""تمسح أزرار السؤال السابق.- الترتيب العشوائي: يمكن خلط الأسئلة قبل عرضها باستخدام الدالة
Math.random()التي تولد عددًا عشوائيًّا من 0 إلى أقل من 1، مثل الدالة RAND في جداول البيانات.
مراجعة تطبيق الاختبارات (الموضوع 13-8)
لخّص ما فهمته من تطبيقك وفق النقاط الآتية:
- موضوع الاختبار: مثل “اختبار عن الفضاء” أو “اختبار عن الحيوانات”.
- ما تعلمته في HTML: مثل تحديد عنوان التطبيق بالوسم
<title>، وتعيينclassللعنصر للإشارة إليه في CSS. - ما تعلمته في CSS: مثل تحديد لون الخلفية والخط للمحدد
body، وتنسيق حجم أزرار الخيارات ولونها بالمحدد.choice. - ما تعلمته في JavaScript: مثل التعامل مع الخيارات بمصفوفة اسمها
choices، وتغيير لون النص للإجابة الصحيحة أو الخاطئة بعبارةif ~ else.
ثم صنّف ما لخصته إلى “أشياء كنت أعرفها” و”أشياء لم أكن أعرفها”، واسأل الذكاء الاصطناعي عن الثانية، مثل: “ماذا يفعل الكود <p id="result"></p>؟” أو “ماذا يعني background: #f5f5f5;؟”.
ملاحظات مهمة
- ترقيم الخيارات في المصفوفة يبدأ من 0 كما في Python؛ فالإجابة
answer: 1تعني الخيار الثاني. - في JavaScript تُستخدم
===للمقارنة بين اختيار الطالب ورقم الإجابة. - اختبر تطبيقك بإجابات صحيحة وخاطئة للتأكد من أن النتيجة تُحسب بدقة، وتأكد من صحة معلومات الأسئلة نفسها.
- اطلب من زميل تجربة تطبيقك؛ فالمستخدمون الآخرون يكتشفون مشكلات لم تنتبه لها.
المفاهيم الأساسية
- تطبيق الاختبار: مصفوفة أسئلة + عرض السؤال والخيارات + التحقق من الإجابة + حساب النتيجة.
if ~ elseللتحقق من صحة الإجابة وتغيير لون الرسالة.- النسبة المئوية = عدد الإجابات الصحيحة ÷ عدد الأسئلة × 100.
- المراجعة: تلخيص ما تعلمته في HTML وCSS وJavaScript، وتصنيفه إلى معروف وجديد.
ملخص الدرس
طورنا بمساعدة الذكاء الاصطناعي التوليدي تطبيق اختبار من متعدد: نخزن الأسئلة وخياراتها في مصفوفة، ونعرض كل خيار زرًّا، ونتحقق من الإجابة بعبارة if وelse، ونحسب النتيجة ونسبتها المئوية. ثم راجعنا ما تعلمناه في HTML وCSS وJavaScript، وسألنا عما لم نكن نعرفه لنعمّق فهمنا.
أسئلة للتدريب
- في مصفوفة الأسئلة، ماذا تعني
answer: 0؟ - ما وظيفة المتغيرين
currentوscore؟ - طالب أجاب إجابة صحيحة عن 4 أسئلة من 5. ما النسبة المئوية التي يعرضها التطبيق؟
- أضف سؤالًا رابعًا إلى المصفوفة عن موضوع تختاره.
- اذكر شيئًا تعلمته من التطبيق كنت تعرفه، وشيئًا لم تكن تعرفه.