ترجمة آلية تحت المراجعة
الأسبوع 0: سكراتش
المصدر الأصلي على CS50المحاضرة 0 (Lecture 0)
- مرحبًا!
- Visual Studio Code وchat.py
- علوم الحاسوب وحل المشكلات
- ASCII
- يونيكود
- RGB
- الخوارزميات
- الشيفرة شبه البرمجية
- ما الذي ينتظرنا
- سكراتش
- مرحبًا بالعالم
- مرحبًا، أنت
- المواء والحلقات والتجريد
- الشروط
- وقت الأوسكار
- أصعب لعبة لـ Ivy
- التلخيص
مرحبًا! (Welcome!)
- يوفر الذكاء الاصطناعي (AI) تطورات جديدة وإثارة في علوم الحاسوب والعالم الواسع!
- بينما يوفر الذكاء الاصطناعي تطورات هائلة، وفي بعض الأحيان يزيل الاختناقات البشرية التي يمكن أن تبطئ العمليات، فإن القدرة على فهم الشيفرة وإنشائها وتنظيمها تسمح لك بأن تكون سائقًا وطيارًا ومبدعًا متمكنًا من خلال البرمجة.
- لذلك، بدلاً من التفكير في الذكاء الاصطناعي كوسيلة للتخلص من الحاجة إلى تعلم الأساسيات، فكر في كيف أن معرفة الأساسيات وتمكينك بشكل أكبر بواسطة الذكاء الاصطناعي سيؤدي إلى فرص جديدة تمامًا لك ولمن تخدمهم.
Visual Studio Code وchat.py (Visual Studio Code and chat.py)
- VS Code هو بيئة تطوير متكاملة أو بيئة تطوير متكاملة، حيث يمكن إنشاء الشيفرة.
- لإعطائك فكرة عما سيأتي، يمكننا برمجة برنامج الدردشة الآلي الخاص بنا والذي يسمى
chat.py. - في نظام تم تكوينه بالفعل لاستخدام مكتبات OpenAI، يمكننا البرمجة على النحو التالي.
-
في محرر النصوص، يمكن كتابة الشيفرة التالي:
from openai import OpenAI client = OpenAI() response = client.responses.create( input="In one sentence, what is CS50?", model="gpt-5" ) print(response.output_text)لاحظ كيف يتم استيراد مكتبة من OpenAI لتزويدنا بقدرات من تلك المكتبة. يتم إنشاء عميل الدردشة. ثم دعا سؤال يتم تمرير
inputإلى الدردشةclientللحصول على إجابة. ال تتم بعد ذلك طباعةresponse. -
يمكننا تحسين هذا الرمز من خلال السماح للمستخدم بطرح سؤال. قم بتعديل الشيفرة الخاص بك كما يلي:
from openai import OpenAI client = OpenAI() prompt = input("Prompt: ") response = client.responses.create( input=prompt, model="gpt-5" ) print(response.output_text)لاحظ ذلك تم الآن إنشاء
prompt، مما يسمح للمستخدم بطرح سؤال. -
والأكثر من ذلك، يمكن تحسين هذا البرنامج من خلال توفير
system_promptلتوفير المزيد من السياق والتعليمات لبرنامج الدردشة الآلية:from openai import OpenAI client = OpenAI() user_prompt = input("Prompt: ") system_prompt = "Limit your answer to one sentence. Pretend you're a cat." response = client.responses.create( input=user_prompt, instructions=system_prompt, model="gpt-5" ) print(response.output_text)لاحظ كيف يتم استخدام
system_promptلتوفير المزيد من السياق والتعليمات. - مع البرمجة، لديك القدرة في عشرة أسطر من النص على بناء برامج قوية جدًا!
- لقد أنشأنا منتجنا الخاص البطة المطاطية, CS50 بطة، للحصول على مساعدة في عملك في هذه الدورة.
- ضع في اعتبارك سياسة الصدق الأكاديمي، والذي يحظر استخدام أي أداة للذكاء الاصطناعي إلى جانب CS50 بطة.
علوم الحاسوب وحل المشكلات (Computer Science and Problem Solving)
-
في الأساس، برمجة الكمبيوتر تدور حول أخذ بعض المدخلات وإنشاء بعض المخرجات - وبالتالي حل المشكلة. ما يحدث بين المدخلات والمخرجات، ما يمكن أن نسميه صندوق أسود، هو محور هذه الدورة.
flowchart LR in["input"] --> BOX[" ??? "] BOX --> out["output"] - على سبيل المثال، قد نحتاج إلى تسجيل حضور الفصل الدراسي. يمكننا استخدام نظام يسمى أحادي (يُسمى أيضًا القاعدة 1) لعد إصبع واحد في كل مرة.
- تعتمد أجهزة الكمبيوتر اليوم على نظام يسمى ثنائي (يُسمى أيضًا القاعدة 2). انها من المصطلح رقم ثنائي أن نحصل على مصطلح مألوف يسمى بت. أ بت هو صفر أو واحد: تشغيل أو إيقاف.
- أجهزة الكمبيوتر تتحدث فقط من حيث الأصفار والآحاد. تمثل الأصفار متوقف. الآحاد تمثل على. أجهزة الكمبيوتر عبارة عن ملايين، وربما مليارات، من الترانزستورات التي يتم تشغيلها وإيقاف تشغيلها.
- إذا كنت تتخيل استخدام مصباح كهربائي، فإن المصباح الواحد يمكنه العد من صفر إلى واحد فقط.
- ومع ذلك، إذا كان لديك ثلاثة مصابيح كهربائية، فهناك المزيد من الخيارات المتاحة لك!
- يوجد داخل أجهزتك، مثل جهاز iPhone أو جهاز الكمبيوتر، ملايين من مصابيح الإضاءة المجازية تسمى الترانزستورات التي تمكن الأنشطة التي يتم إجراؤها على هذه الأجهزة والتي قد يعتبرها المرء أمرا مفروغا منه كل يوم.
-
كدليل إرشادي، يمكننا أن نتخيل أن القيم التالية تمثل كل مكان ممكن في منطقتنا رقم ثنائي:
4 2 1 -
باستخدام ثلاثة مصابيح كهربائية، يمكن أن يمثل ما يلي صفرًا:
4 2 1 0 0 0 -
وبالمثل، فإن ما يلي يمثل واحدًا:
4 2 1 0 0 1 -
وبهذا المنطق، يمكننا أن نقترح أن ما يلي يساوي اثنين:
4 2 1 0 1 0 -
ولتوسيع هذا المنطق بشكل أكبر، يمثل ما يلي ثلاثة:
4 2 1 0 1 1 -
أربعة ستظهر على النحو التالي:
4 2 1 1 0 0 -
يمكننا، في الواقع، استخدام ثلاثة مصابيح كهربائية فقط بعدد يصل إلى سبعة!
4 2 1 1 1 1 -
تستخدم أجهزة الكمبيوتر قاعدة 2 للعد. ويمكن تصوير ذلك على النحو التالي:
2^2 2^1 2^0 4 2 1 - لذلك، يمكنك القول إن الأمر يتطلب ثلاث بتات (مكان الأربعة، ومكان الاثنين، ومكان الواحد) لتمثيل رقم يصل إلى سبعة.
-
وبالمثل، لحساب رقم يصل إلى ثمانية، سيتم تمثيل القيم على النحو التالي:
8 4 2 1 1 0 0 0 -
تستخدم أجهزة الكمبيوتر عمومًا ثمانية بتات (تُعرف أيضًا باسم a بايت) لتمثيل رقم. على سبيل المثال، يمثّل
00000101العدد 5 بالنظام الثنائي.11111111يمثل الرقم 255. يمكنك تخيل الصفر كما يلي:128 64 32 16 8 4 2 1 0 0 0 0 0 0 0 0
ASCII
- مثلما أن الأرقام عبارة عن أنماط ثنائية من الآحاد والأصفار، يتم تمثيل الحروف باستخدام الآحاد والأصفار أيضًا!
- نظرًا لوجود تداخل بين الآحاد والأصفار التي تمثل الأرقام والحروف، فإن ASCII تم إنشاء معيار لتعيين أحرف محددة لأرقام محددة.
-
مثلا الحرف
Aتقرر تعيينه للرقم 65.01000001يمثل الرقم 65 بالنظام الثنائي. يمكنك تصور ذلك على النحو التالي:128 64 32 16 8 4 2 1 0 1 0 0 0 0 0 1 -
إذا تلقيت رسالة نصية، فقد يمثل الثنائي الموجود أسفل تلك الرسالة الأرقام 72، و73، و33. ومن خلال تعيين هذه الأرقام إلى ASCII، ستبدو رسالتك كما يلي:
H I ! 72 73 33 - شكرًا لله على معايير مثل ASCII التي تسمح لنا بالاتفاق على هذه القيم!
-
فيما يلي خريطة موسعة لقيم ASCII:
0 NUL 16 DLE 32 SP 48 0 64 @ 80 P 96 ` 112 p 1 SOH 17 DC1 33 ! 49 1 65 A 81 Q 97 a 113 q 2 STX 18 DC2 34 ” 50 2 66 B 82 R 98 b 114 r 3 ETX 19 DC3 35 # 51 3 67 C 83 S 99 c 115 s 4 EOT 20 DC4 36 $ 52 4 68 D 84 T 100 d 116 t 5 ENQ 21 NAK 37 % 53 5 69 E 85 U 101 e 117 u 6 ACK 22 SYN 38 & 54 6 70 F 86 V 102 f 118 v 7 BEL 23 ETB 39 ’ 55 7 71 G 87 W 103 g 119 w 8 BS 24 CAN 40 ( 56 8 72 H 88 X 104 h 120 x 9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 i 121 y 10 LF 26 SUB 42 * 58 : 74 J 90 Z 106 j 122 z 11 VT 27 ESC 43 + 59 ; 75 K 91 [ 107 k 123 { 12 FF 28 FS 44 , 60 < 76 L 92 \ 108 l 124 | 13 CR 29 GS 45 - 61 = 77 M 93 ] 109 m 125 } 14 SO 30 RS 46 . 62 > 78 N 94 ^ 110 n 126 ~ 15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o 127 DEL - إذا كنت ترغب في ذلك، يمكنك معرفة المزيد عنه ASCII.
- إذا تم تخزين كل حرف في بايت واحد بحجم 8 بت، فيمكنك تشفير 256 رمزًا مميزًا على الأكثر. يستخدم ASCII 128 فقط من تلك (0-127).
يونيكود (Unicode)
- مع مرور الوقت، هناك المزيد والمزيد من طرق التواصل عبر الرسائل النصية.
- نظرًا لعدم وجود أرقام كافية في النظام الثنائي لتمثيل جميع الشخصيات المختلفة التي يمكن أن يمثلها البشر، يونيكود قام المعيار بتوسيع عدد البتات التي يمكن نقلها وفهمها بواسطة أجهزة الكمبيوتر. لا يتضمن Unicode أحرفًا خاصة فحسب، بل يشتمل أيضًا على رموز تعبيرية.
-
هناك رموز تعبيرية ربما تستخدمها كل يوم. قد يبدو ما يلي مألوفًا لك:
😀 😃 😄 😁 😆 😅 😂 🙂 🙃 😉 😊 😇 😍 😘 😗 😙 😚 😋 😛 😜 😝 🤑 🤓 😎 🤗 😏 😶 😐 😑 😒 🙄 😬 😕 ☹️ 😟 😮 😯 😲 😳 😦 😧 😨
- على الرغم من أن نمط الأصفار والواحدات موحد ضمن Unicode، إلا أن كل شركة مصنعة للجهاز قد تعرض كل رمز تعبيري بشكل مختلف قليلاً عن الشركة المصنعة الأخرى.
- تتم إضافة المزيد والمزيد من الميزات إلى معيار Unicode لتمثيل المزيد من الأحرف والرموز التعبيرية.
- إذا كنت ترغب في ذلك، يمكنك معرفة المزيد عنه يونيكود.
- إذا كنت ترغب في ذلك، يمكنك معرفة المزيد عنه الرموز التعبيرية.
RGB
- يمكن استخدام الأصفار والآحاد لتمثيل اللون.
-
الأحمر والأخضر والأزرق (يسمى
RGB) عبارة عن مزيج من ثلاثة أرقام.72 73 33
-
بأخذ الأرقام 72 و 73 و 33 المستخدمة سابقًا والتي تقول
HI!عبر النص، سيتم تفسيره بواسطة قارئي الصور على أنه ظل فاتح من اللون الأصفر. ستكون القيمة الحمراء 72، والقيمة الخضراء ستكون 73، والقيمة الزرقاء ستكون 33. - البايتات الثلاث المطلوبة لتمثيل ألوان مختلفة من الأحمر والأزرق والأخضر (أو RGB) يشكلون كل منهما بكسل (أو نقطة) من اللون في أي صورة رقمية. الصور هي ببساطة مجموعات من قيم RGB.
- يمكن استخدام الأصفار والواحدات لتمثيل الصور ومقاطع الفيديو والموسيقى!
- مقاطع الفيديو عبارة عن تسلسلات للعديد من الصور المخزنة معًا، تمامًا مثل كتاب الصور المتحركة.
- يمكن تمثيل الموسيقى بالمثل باستخدام مجموعات مختلفة من البايتات.
الخوارزميات (Algorithms)
- يعد حل المشكلات أمرًا أساسيًا في علوم الحاسوب وبرمجة الكمبيوتر. ان خوارزمية عبارة عن مجموعة من الإرشادات خطوة بخطوة لحل مشكلة ما.
- تخيل المشكلة الأساسية المتمثلة في محاولة تحديد موقع اسم واحد في دليل الهاتف.
- كيف يمكن للمرء أن يفعل هذا؟
- يمكن أن يكون أحد الأساليب هو القراءة ببساطة من الصفحة الأولى إلى التي تليها حتى الوصول إلى الصفحة الأخيرة.
- قد يكون هناك أسلوب آخر يتمثل في البحث في صفحتين في المرة الواحدة.
- الطريقة الأخيرة وربما الأفضل هي الذهاب إلى منتصف دليل الهاتف والسؤال، "هل الاسم الذي أبحث عنه موجود على اليسار أم على اليمين؟" ثم كرر هذه العملية، وقسم المشكلة إلى نصفين ونصف ونصف.
-
يمكن تسمية كل طريقة من هذه الطرق خوارزمية، ويمكن تمثيل كفاءة كل خوارزمية باستخدام ما يُسمّى ترميز Big-O:
لاحظ أن الخوارزمية الأولى، الممثلة باللون الأحمر، لها زمن تشغيل من الرتبة
O(n)، لأن العثور على الاسم الصحيح في دليل يحوي 100 اسم قد يتطلب ما يصل إلى 100 محاولة. والخوارزمية الثانية، التي تبحث في صفحتين كل مرة، لها زمن تشغيل من الرتبةO(n/2)لأننا نتصفح الدليل بسرعة مضاعفة. أما الخوارزمية الأخيرة فزمن تشغيلها من الرتبةO(log₂ n)، إذ إن مضاعفة حجم المسألة لا تضيف إلا خطوة واحدة إلى حلها. - يقوم المبرمجون بترجمة التعليمات البشرية المستندة إلى النص إلى كود لحل المشاكل.
الشيفرة شبه البرمجية (Pseudocode)
- الشيفرة شبه البرمجية عبارة عن تعليمات يمكن قراءتها بواسطة الإنسان والتي غالبًا ما تصف خطوات الخوارزمية.
- القدرة على الإنشاء الشيفرة شبه البرمجية يعد أمرًا أساسيًا لنجاح الفرد في كل من هذا الفصل وفي برمجة الكمبيوتر.
-
على سبيل المثال، بالنظر إلى الخوارزمية الثالثة أعلاه، يمكننا إنشاء كود زائف على النحو التالي:
1 Pick up phone book 2 Open to middle of phone book 3 Look at page 4 If person is on page 5 Call person 6 Else if person is earlier in book 7 Open to middle of left half of book 8 Go back to line 3 9 Else if person is later in book 10 Open to middle of right half of book 11 Go back to line 3 12 Else 13 Quit - تعتبر البرمجة الزائفة مهارة مهمة لسببين على الأقل. أولاً، عندما تقوم بالتشفير الكاذب قبل إنشاء كود رسمي، فهذا يسمح لك بالتفكير في منطق مشكلتك مسبقًا. ثانيًا، عندما تقوم بتشفير زائف، يمكنك لاحقًا تقديم هذه المعلومات للآخرين الذين يسعون إلى فهم قرارات الترميز الخاصة بك وكيفية عمل الشيفرة الخاصة بك.
- لاحظ أن اللغة الموجودة في الشيفرة الكاذب الخاص بنا تحتوي على بعض الميزات الفريدة. أولا، بعض هذه السطور تبدأ بأفعال مثل التقط، مفتوح، أنظر. لاحقًا، سوف نقوم بتسمية هذه الأسماء وظائف .
- ثانيا، لاحظ أن بعض السطور تتضمن عبارات مثل
ifأوelse if.يتم استدعاؤهم الشرطية. - ثالثًا، لاحظ كيف أن هناك تعبيرات يمكن ذكرها على أنها صحيح أو خطأ، مثل "الشخص موجود في وقت سابق من الكتاب." نحن نسمي هذه التعبيرات المنطقية.
- أخيرًا، لاحظ كيف توجد عبارات مثل "الرجوع إلى السطر 3." نحن نسمي هذه حلقات.
- هذه العناصر الأساسية هي أساسيات البرمجة.
- في سياق سكراتش، والتي تمت مناقشتها أدناه، سوف نستخدم كلًا من العناصر الأساسية للبرمجة المذكورة أعلاه.
ما الذي ينتظرنا (What’s Ahead)
- ستتعلم هذا الأسبوع عن لغة Scratch، وهي لغة برمجة مرئية.
-
بعد ذلك، في الأسابيع المقبلة، ستتعرف على لغة C. سيبدو ذلك على النحو التالي:
#include <stdio.h> int main(void) { printf("hello, world\n"); } - من خلال تعلم لغة C، ستكون أكثر استعدادًا للتعلم المستقبلي في لغات البرمجة الأخرى مثل بايثون.
- لاحظ كيف استخدم المبرمجون التجريد للبناء على عمل المبرمجين الآخرين. بدلاً من البرمجة بالآحاد والأصفار، تم إنشاء لغات البرمجة لـ مجردة بعيدا من مهمة البرمجة الثنائية الصعبة للغاية إلى المزيد والمزيد من لغات البرمجة سهلة الاستخدام. يمكننا أن نقف على أكتاف الآخرين!
سكراتش (Scratch)
- سكراتش هي لغة برمجة مرئية تم تطويرها بواسطة معهد ماساتشوستس للتكنولوجيا.
- سكراتش يستخدم نفس العناصر الأساسية للبرمجة التي تناولناها سابقًا في هذه المحاضرة.
- يعد Scratch طريقة رائعة للدخول في برمجة الكمبيوتر لأنه يسمح لك باللعب مع وحدات البناء هذه بطريقة مرئية، دون الحاجة إلى القلق بشأن بناء جملة الأقواس المتعرجة والفواصل المنقوطة والأقواس وما شابه.
-
سكراتش
IDE(بيئة التطوير المتكاملة) تبدو كما يلي:
لاحظ أنه على اليسار، توجد لوحة من اللبنات الأساسية التي يمكنك استخدامها في برمجتك. على يمين الكتل البرمجية الإنشائية مباشرةً، توجد المنطقة التي يمكنك سحب الكتل إليها لإنشاء برنامج. على يمين ذلك ترى المرحلة حيث تقف قطة. المرحلة هي حيث تنبض الحياة ببرمجتك.
-
يعمل برنامج Scratch على نظام الإحداثيات كما يلي:

لاحظ أن مركز المسرح يقع عند الإحداثي (0,0). وفي الوقت الحالي، يكون وضع القطة في نفس الوضع.
مرحبًا بالعالم (Hello World)
-
للبدء، اسحب الكتلة البرمجية الإنشائية "عند النقر على العلم الأخضر" إلى منطقة البرمجة. ثم اسحب
sayكتلة البناء إلى منطقة البرمجة وإرفاقها بالكتل السابقة.when green flag clicked say [hello, world]لاحظ أنه عند النقر فوق العلم الأخضر الموجود الآن على المسرح، تقول القطة، "مرحبًا بالعالم".
-
يوضح هذا جيدًا ما كنا نناقشه سابقًا فيما يتعلق بالبرمجة:

لاحظ أن الإدخال يتم تمرير
hello, worldإلى الوظيفةsayو الآثار الجانبية من تلك الوظيفة قيد التشغيل هو قول القطةhello, world.
مرحبًا، أنت (Hello, You)
-
يمكننا أن نجعل برنامجك أكثر تفاعلية من خلال جعل القطة تقول ذلك
helloلشخص محدد. قم بتعديل برنامجك كما يلي:when green flag clicked ask [What's your name?] and wait say (join [hello,] (answer))لاحظ أنه عند النقر على العلم الأخضر، تختفي الوظيفة تم تشغيل
ask. يطالبك البرنامج، أيها المستخدم،What's your name?ثم يقوم بتخزين هذا الاسم في ملف متغير تم الاتصال بـanswer. ثم يمر البرنامجanswerإلى وظيفة خاصة تسمىjoin، الذي يجمع بين سلسلتين من النصhello، وأيًا كان الاسم الذي تم تقديمه. قيمة يتم تمريرanswerكوسيطة إلىjoin. يتم تمرير هذه بشكل جماعي إلى وظيفةsay. يقول القط،Hello,واسم. برنامجك الآن تفاعلي. -
خلال هذه الدورة التدريبية، ستوفر مدخلات إلى الخوارزمية وستحصل على المخرجات. ويمكن تصوير ذلك من حيث البرنامج أعلاه على النحو التالي:

لاحظ أن المدخلات
hello,وanswerمقدمة إلىjoin، والذي يُرجعhello, David. ثم يتم تمرير قيمة الإرجاع هذه إلىsay، الذي ينتج الآثار الجانبية القطة تتحدث. -
وبشكل مشابه تمامًا، يمكننا تعديل برنامجنا على النحو التالي:
when green flag clicked ask [What's your name?] and wait speak (join [hello,] (answer))لاحظ أن هذا البرنامج، عند النقر على العلم الأخضر، يمرر نفس المتغير، مرتبطًا بـ
hello، إلى وظيفة تسمىspeak.
المواء والحلقات والتجريد (Meow, Loops, and Abstraction)
- جنبًا إلى جنب مع التشفير الزائف، التجريد هي مهارة ومفهوم أساسي في برمجة الكمبيوتر.
- التجريد هو عملية تبسيط المشكلة إلى مشاكل أصغر فأصغر.
- على سبيل المثال، إذا كنت تستضيف حفل عشاء ضخم لأصدقائك، فإن مشكلة قد يكون الاضطرار إلى طهي الوجبة بأكملها أمرًا مرهقًا للغاية! ومع ذلك، إذا قمت بتقسيم مهمة طهي الوجبة إلى مهام (أو مشاكل) أصغر فأصغر، فقد تبدو المهمة الكبيرة المتمثلة في إعداد هذه الوجبة اللذيذة أقل صعوبة.
-
في البرمجة، وحتى داخل لغة Scratch، يمكننا رؤية التجريد أثناء العمل. في مجال البرمجة الخاص بك، قم بالبرمجة على النحو التالي:
when green flag clicked play sound (Meow v) until done wait (1) seconds play sound (Meow v) until done wait (1) seconds play sound (Meow v) until doneلاحظ أنك تفعل نفس الشيء مرارًا وتكرارًا. في الواقع، إذا رأيت نفسك تقوم بتشفير نفس العبارات بشكل متكرر، فمن المحتمل أنك تستطيع البرمجة بشكل أكثر براعة - وتجريد هذا الشيفرة المتكرر.
-
يمكنك تعديل الشيفرة الخاص بك كما يلي:
when green flag clicked repeat (3) play sound (Meow v) until done wait (1) secondsلاحظ أن الحلقة تعمل تمامًا كما فعل البرنامج السابق. ومع ذلك، يتم تبسيط المشكلة عن طريق تجريد التكرار إلى كتلة يتكرر الشيفرة الخاص بنا.
-
يمكننا أيضًا تطوير هذا الأمر بشكل أكبر باستخدام كتلة
define، حيث يمكنك إنشاء الكتلة الخاصة بك (وظيفتك الخاصة)! اكتب الشيفرة كما يلي:define meow play sound (Meow v) until done wait (1) seconds when green flag clicked repeat (3) meowلاحظ أننا نقوم بتعريف الكتلة الخاصة بنا والتي تسمى
meow. تقوم الوظيفة بتشغيل الصوتmeow، ثم ينتظر ثانية واحدة. أدناه، يمكنك أن ترى أنه عند النقر على العلم الأخضر، يتم تكرار وظيفة المواء ثلاث مرات. -
يمكننا أيضًا توفير طريقة يمكن للوظيفة من خلالها تلقي مدخلات
nوكرر ذلك عدة مرات:define meow n times repeat (n) play sound [meow v] until done wait (1) secondsلاحظ كيف
nمأخوذ من "meow n times." يتم تمريرnإلى وظيفة المواء من خلال كتلةdefine. - بشكل عام، لاحظ كيف أدت عملية التحسين هذه إلى كود برمجي أفضل وأفضل تصميمًا. علاوة على ذلك، لاحظ كيف أنشأنا خوارزمية خاصة بنا لحل مشكلة ما. سوف تمارس هاتين المهارتين طوال هذه الدورة.
الشروط (Conditionals)
- الشروط هي لبنة أساسية في البرمجة، حيث يبحث البرنامج لمعرفة ما إذا كان قد تم استيفاء شرط معين. إذا تم استيفاء الشرط، فإن البرنامج يفعل شيئا.
-
لتوضيح شرط شرطي، اكتب الشيفرة كما يلي:
when green flag clicked forever if <touching (mouse-pointer v)?> then play sound (Meow v) until doneلاحظ أن يتم استخدام كتلة
foreverبحيث يتم استخدام يتم تشغيل كتلةifمرارًا وتكرارًا، بحيث يمكنها التحقق بشكل مستمر مما إذا كانت القطة تلمس مؤشر الماوس. -
يمكننا تعديل برنامجنا على النحو التالي لدمج استشعار الفيديو:
when video motion > (10) play sound (Meow v) until done - تذكر أن البرمجة غالبًا ما تكون عبارة عن عملية تجربة وخطأ. إذا شعرت بالإحباط، خذ وقتًا للتحدث مع نفسك حول المشكلة المطروحة. ما هي المشكلة المحددة التي تعمل عليها الآن؟ ما العمل؟ ما الذي لا يعمل؟
وقت الأوسكار (Oscartime)
-
وقت الأوسكار هو أحد برامج Scratch الخاصة بـ David - على الرغم من أن الموسيقى قد تطارده بسبب عدد الساعات التي استمع إليها أثناء إنشاء هذا البرنامج. خذ بضع دقائق للعب من خلال وقت الأوسكار العب بنفسك.
-
أثناء بناء حفل توزيع جوائز الأوسكار بأنفسنا، قمنا أولاً بإضافة عمود المصباح.

-
ثم اكتب الشيفرة كما يلي:
when green flag clicked switch costume to (oscar1 v) forever if <touching (mouse-pointer v)?> then switch costume to (oscar2 v) else switch costume to (oscar1 v)لاحظ أن تحريك الماوس فوق أوسكار يغير زيه. يمكنك معرفة المزيد عن طريق استكشاف كتل الشيفرة هذه.
-
بعد ذلك، قم بتعديل الشيفرة الخاصة بك على النحو التالي لإنشاء قطعة متساقطة من المهملات:
when green flag clicked set drag mode [draggable v] go to x: (pick random (0) to (240)) y: (180) forever change y by (-1) endلاحظ أن موضع سلة المهملات على المحور y يبدأ دائمًا عند 180. الموضع x عشوائي. عندما تكون سلة المهملات فوق الأرض، تنخفض بمقدار 1 بكسل في كل مرة. يمكنك معرفة المزيد عن طريق استكشاف كتل الشيفرة هذه.
-
بعد ذلك، قم بتعديل الشيفرة الخاص بك على النحو التالي للسماح بإمكانية سحب سلة المهملات.
when green flag clicked forever if <touching [Oscar v] ?> then go to x: (pick random (0) to (240)) y: (180) end endيمكنك معرفة المزيد من خلال استكشاف كتل الشيفرة هذه.
-
بعد ذلك، يمكننا تنفيذ متغيرات التسجيل على النحو التالي:
when green flag clicked set drag mode [draggable v] go to top forever change y by (-1) endwhen green flag clicked forever if <touching [Oscar v] ?> then go to top end enddefine go to top go to x: (pick random (0) to (240)) y: (180)يمكنك معرفة المزيد من خلال استكشاف كتل الشيفرة هذه.
-
اذهب لتجربة اللعبة الكاملة وقت الأوسكار.
أصعب لعبة لـ Ivy (Ivy’s Hardest Game)
- بالانتقال من حفل توزيع جوائز الأوسكار إلى لعبة Ivy’s Hardest Game، يمكننا الآن تخيل كيفية تنفيذ الحركة داخل برنامجنا.
- يتكون برنامجنا من ثلاثة مكونات رئيسية.
-
أولاً، قم بكتابة الشيفرة كما يلي:
when green flag clicked go to x: (0) y: (0) forever listen for keyboard feel for wallsلاحظ أنه عند النقر على العلم الأخضر، يتحرك الكائن إلى منتصف المسرح عند الإحداثيات (0,0) ثم يستمع إلى لوحة المفاتيح ويتحقق من الجدران إلى الأبد.
-
ثانيًا، أضف هذه المجموعة الثانية من كتل الشيفرة:
define listen for keyboard if <key (up arrow v) pressed?> then change y by (1) end if <key (down arrow v) pressed?> then change y by (-1) end if <key (right arrow v) pressed?> then change x by (1) end if <key (left arrow v) pressed?> then change x by (-1) endلاحظ كيف أنشأنا مخصصًا
listen for keyboardالبرنامج النصي. لكل من مفاتيح الأسهم لدينا على لوحة المفاتيح، فإنه سيتم تحريك الكائن حول الشاشة. -
أخيرًا، أضف هذه المجموعة من كتل الشيفرة:
define feel for walls if <touching (left wall v) ?> then change x by (1) end if <touching (right wall v) ?> then change x by (-1) endلاحظ كيف أن لدينا أيضًا عادة
feel for wallsالبرنامج النصي. عندما يلمس الكائن جدارًا، فإنه يعيده إلى موضع آمن - مما يمنعه من الخروج من الشاشة. - يمكنك معرفة المزيد من خلال استكشاف كتل الشيفرة هذه.
- يسمح برنامج Scratch بوجود العديد من الكائنات المتحركة على الشاشة في وقت واحد.
-
بإضافة كائن آخر، أضف كتل الشيفرة التالية إلى برنامجك:
when green flag clicked go to x: (0) y: (0) point in direction (90) forever if <<touching (left wall v)?> or <touching (right wall v)?>> then turn right (180) degrees end move (1) steps endلاحظ كيف يبدو أن كائن Yale يعيق كائن Harvard عن طريق التحرك ذهابًا وإيابًا. وعندما يصطدم بالحائط، فإنه يستدير حتى يصطدم بالحائط مرة أخرى. يمكنك معرفة المزيد عن طريق استكشاف كتل الشيفرة هذه.
-
يمكنك أيضًا جعل كائن يتبع كائنًا آخر. بإضافة كائن آخر، أضف كتل الشيفرة التالية إلى برنامجك:
when green flag clicked go to (random position v) forever point towards (Harvard v) move (1) stepsلاحظ كيف يبدو شعار معهد ماساتشوستس للتكنولوجيا الآن وكأنه يتبع شعار جامعة هارفارد. يمكنك معرفة المزيد عن طريق استكشاف كتل الشيفرة هذه.
- اذهب لتجربة اللعبة الكاملة أصعب لعبة لـ Ivy.
التلخيص (Summing Up)
في هذا الدرس، تعلمت كيف تتناسب هذه الدورة مع عالم علوم الحاسوب والبرمجة الواسع. تعلمت…
- على الرغم من أن الذكاء الاصطناعي يمكن أن يساعد في إزالة الاختناقات البشرية، فإن تعلم الأساسيات في علوم الحاسوب واللبنات الأساسية للبرمجة سيمكنك من الاستفادة من التقنيات الناشئة بشكل أفضل وأفضل.
- الطرق المعقولة وغير المعقولة لاستخدام الذكاء الاصطناعي في هذه الدورة.
- حل المشكلات هو جوهر عمل علماء الكمبيوتر.
- كيف يتم فهم الأرقام والنصوص والصور والموسيقى والفيديو وتمثيلها بواسطة أجهزة الكمبيوتر.
- مهارة البرمجة الأساسية للتشفير الزائف.
- كيف سيلعب التجريد دورًا في عملك المستقبلي في هذه الدورة.
- اللبنات الأساسية للبرمجة بما في ذلك الوظائف والشروط والحلقات والمتغيرات.
- كيفية بناء مشروع في سكراتش.
كان هذا هو CS50! مرحبا بكم على متن الطائرة! نراكم في المرة القادمة!