قراءة موجّهة · الملاحظات

الأسبوع 0: سكراتش

اقرأ للفهم، ثم دوّن المصطلحات الإنجليزية التي تحتاج إلى تذكّرها أثناء التطبيق.

جلسة دراسة مقترحة: حتى 55 دقيقةWeek 0
محاور هذه الخطوة
  • التفكير الحاسوبي
  • التمثيل الثنائي
  • الخوارزميات
  • Scratch

ترجمة آلية تحت المراجعة

الأسبوع 0: سكراتش

المصدر الأصلي على CS50

المحاضرة 0 (Lecture 0)

مرحبًا! (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:

    n n/2 log₂ n حجم المشكلة حان الوقت للحل

    لاحظ أن الخوارزمية الأولى، الممثلة باللون الأحمر، لها زمن تشغيل من الرتبة 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 interface

    لاحظ أنه على اليسار، توجد لوحة من اللبنات الأساسية التي يمكنك استخدامها في برمجتك. على يمين الكتل البرمجية الإنشائية مباشرةً، توجد المنطقة التي يمكنك سحب الكتل إليها لإنشاء برنامج. على يمين ذلك ترى المرحلة حيث تقف قطة. المرحلة هي حيث تنبض الحياة ببرمجتك.

  • يعمل برنامج Scratch على نظام الإحداثيات كما يلي:

    scratch coordinate system

    لاحظ أن مركز المسرح يقع عند الإحداثي (0,0). وفي الوقت الحالي، يكون وضع القطة في نفس الوضع.

مرحبًا بالعالم (Hello World)

  • للبدء، اسحب الكتلة البرمجية الإنشائية "عند النقر على العلم الأخضر" إلى منطقة البرمجة. ثم اسحب say كتلة البناء إلى منطقة البرمجة وإرفاقها بالكتل السابقة.

    when green flag clicked
    say [hello, world]
    

    لاحظ أنه عند النقر فوق العلم الأخضر الموجود الآن على المسرح، تقول القطة، "مرحبًا بالعالم".

  • يوضح هذا جيدًا ما كنا نناقشه سابقًا فيما يتعلق بالبرمجة:

    scratch with black box

    لاحظ أن الإدخال يتم تمرير 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, واسم. برنامجك الآن تفاعلي.

  • خلال هذه الدورة التدريبية، ستوفر مدخلات إلى الخوارزمية وستحصل على المخرجات. ويمكن تصوير ذلك من حيث البرنامج أعلاه على النحو التالي:

    scratch as algorithm

    لاحظ أن المدخلات 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 - على الرغم من أن الموسيقى قد تطارده بسبب عدد الساعات التي استمع إليها أثناء إنشاء هذا البرنامج. خذ بضع دقائق للعب من خلال وقت الأوسكار العب بنفسك.

    محتوى خارجي من Scratch

    لن نتصل بهذه الخدمة قبل موافقتك. يمكنك فتح المصدر في نافذة مستقلة بدل تحميله هنا.

    فتح المصدر
  • أثناء بناء حفل توزيع جوائز الأوسكار بأنفسنا، قمنا أولاً بإضافة عمود المصباح.

    oscartime interface

  • ثم اكتب الشيفرة كما يلي:

    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)
    end
    
    when green flag clicked
    forever
      if <touching [Oscar v] ?> then
        go to top
      end
    end
    
    define 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! مرحبا بكم على متن الطائرة! نراكم في المرة القادمة!

أنهيت قراءة الملاحظات؟

يمكنك قراءة الدورة كاملة دون حساب. يصبح حفظ التقدم متاحًا بعد تفعيل الحساب، ويبقى محفوظًا بعد انتهاء العضوية.