[Powered by Google Translate] [الأسبوع 2، تابع]
[ديفيد J. مالان، جامعة هارفارد]
[هذا CS50. - CS50.TV]
حسنا. هذا هو CS50، وهذا هو نهاية أسبوع 2.
إذا كنت تتوقع أن تكون جائعا في هذا الوقت غدا،
نعلم أننا ذاهبون الى عقد وغدا مجموعة صغيرة، الخميس، 1:15 مساء.
هناك هذا URL هنا إذا كنت ترغب في أجبني لو سمحت.
مساحة محدودة، لذا يرجى يغفر إذا كان النموذج قد يملأ بحلول الوقت الذي ملء ذلك.
رابط آخر، على الرغم من أن قد تكون ذات فائدة هو هذا.
في غضون حوالي غضون شهر، وبالطبع سوف تتاح
ومما يزيد من نطاق واسع من خلال EDX، والتي سوف عبر الناس على شبكة الإنترنت تكون قادرة على متابعة على طول،
الانخراط بنشاط في سياق جدا، في الواقع.
وأنها سوف تستخدم الجهاز CS50 CS50 وناقش
ومعظم أدوات البرمجيات المختلفة التي لدينا بالفعل تم استخدام هذا الفصل الدراسي.
واحدة من المبادرات نود أن تأخذ على كتجربة هذا العام
هو أن نرى فقط كم المحتوى الذي يمكن أن تترجم
في لغات أخرى تحدثا وكتابة.
إذا كان الأمر كذلك قد يكون لديك مصلحة في المشاركة في هذا المشروع
حيث سوف نقدم النصوص الإنجليزية والترجمة للمحاضرات الدورة في
والسراويل القصيرة والحلقات الدراسية والأقسام وما شابه ذلك،
إذا كنت تتحدث بطلاقة والكتابة بطلاقة بعض اللغات الأخرى،
نحب أن المشاركة لكم في هذا المشروع حيث كنت تأخذ على واحد أو أكثر من أشرطة الفيديو،
ترجمتها إلى لغة تعلمون جيدا جدا.
>> لإعطائك فكرة عن واجهة، وهناك واجهة المستخدم هذه على شبكة الإنترنت
أن سنكون باستخدام التي من شأنها خلق أساسا UI مثل هذا.
كان هذا لي تدريس بعض هالوين قبل
وعلى الجانب الأيمن باللون الأسود هناك إلى جانب هذه الطوابع الزمنية،
سترى الأشياء المختلفة التي خرجت من فمي ذلك اليوم،
ثم تحته عليك أن تكون قادرا على ترجمة في بعض اللغات الأخرى
بالضبط ما هو التعيين بين، في هذه الحالة والإنجليزية و، ويقول، الإسبانية.
لذلك في الواقع جدا سهل الاستعمال الأداة.
يمكنك الترجيع وسريعة إلى الأمام بسهولة جدا مع اختصارات لوحة المفاتيح.
حتى إذا كنت ترغب في المشاركة في هذه التجربة ويكون كلامك مشاهدتها وقراءتها
من قبل الآلاف من الناس يحتمل أن تكون هناك، رجاء لا تتردد في المشاركة.
كلمة واحدة عن القط الصغير من يوم الاثنين.
لئلا أرسلنا رسالة مخيفة أكثر من اللازم، أدرك أنه، كما تشير الساعات المكتبية
وتشير إلى أقسام، وتصميم المسار إلى حد كبير
قد يتعاون الطلاب والتحدث مع مجموعات العمل من خلال المشكلة
والمشاكل معا، وحقا خط يأتي فقط الى،
مرة أخرى، يجب أن يقدم العمل الذي يكون في نهاية المطاف بنفسك.
وهكذا بصراحة، في ساعات الدوام أنه من الطبيعي تماما،
انها تماما أنه من المتوقع حتى، على أن يتجاذب أطراف الحديث مع بعض الأصدقاء إلى جانبك.
>> إذا كان هو أو هي تكافح مع بعض الموضوع وكنت مثل،
"أوه، حسنا، اسمحوا لي أن أقدم لكم لمحة عن بعض سطر من التعليمات البرمجية التي كتبت،" هذا شيء طيب،
يحدث ذلك، وهذا يؤدي بكثير جدا، كما أعتقد، في عملية التعلم.
حيث يحصل عبرت خط هو عندما الرأس هو نوع من يميل إلى هنا لمدة ثانية كثيرة جدا
أو دقائق لذلك حقا لكان مجرد فرصة لرفع الحظر صديقك،
وبالتأكيد عندما تحصل على تبادل الأشياء عبر البريد الإلكتروني ودروببوإكس وما شابه ذلك،
هناك أيضا خط.
لذلك بكل الوسائل تشعر بالراحة ويشعر تشجيع للدردشة مع الأصدقاء
وزملاء الدراسة حول psets وأكثر من ذلك وفقط ندرك أن ما يقدم في نهاية المطاف
ينبغي أن يكون حقا نتاج خلقك وليس شخص آخر.
واحدة من المشاكل حتى المجال محددة لpset2،
والتي سوف تأتي في وقت متأخر ليلة الغد، هو يغوص في عالم التشفير،
وهو فن تشفير أو الهرولة المعلومات،
وهذا يتعلق في نهاية المطاف إلى عالم الأمن.
الآن، والأمن بالنسبة لمعظمنا يأتي في شكل آليات الدنيوية إلى حد ما.
كل منا لديه أسماء المستخدمين وكلمات السر،
وعلينا جميعا أسماء المستخدمين وكلمات المرور سيئة للغاية، وعلى الأرجح.
>> إذا كانت كلمة المرور هي نفسها في مواقع متعددة، وهذا ربما لا يكون أفضل فكرة،
كما سنناقش نحو نهاية الفصل الدراسي ل.
إذا هو مكتوب كلمة المرور الخاصة بك على مذكرة لزجة - ليس مزحة - على الشاشة،
وهذا هو أيضا ليس بالضرورة أفضل تصميم ولكن ظاهرة شائعة جدا.
وإذا كنت لا تستخدم التشفير لتشفير كلمات السر الخاصة بك،
هم عرضة بوجه خاص.
حتى إذا كنت تعتقد أنك ذكي سوبر يجري من خلال وجود مستند Word المخفية
في مكان ما على القرص الصلب الذي يحتوي جميع كلمات السر الخاصة بك
ولكن هذا في المجلد الذي لا أحد سوف ننظر في، وهذا هو أيضا ليس آلية آمنة للغاية.
وذلك ما سوف يعرض هو pset2 هذا الفن من التشفير
والهرولة المعلومات بحيث أشياء مثل كلمات السر كلها أكثر أمنا.
سياق هنا هو أنه مع البيانات غير آمنة
يأتي فرصة لتشفيرها ويتبارى فيه.
وحتى هذا، على سبيل المثال، هو مثال على رسالة مشفرة.
هذا يقول في الواقع شيئا باللغة الإنجليزية، ولكن من الواضح ليس واضحا تماما.
وسوف نأتي اليوم لدائرة كاملة ندف بصرف النظر عن هذه الرسالة السرية ما هو هنا.
ولكن في العالم الحقيقي من أجهزة الكمبيوتر، حتى الأشياء لا تبدو أنها قد تكون العبارات الإنجليزية.
على سبيل المثال، وهذا هو ما يمكن أن تجد على لينكس أو ماك أو معيار الكمبيوتر UNIX
في ملف هو أن ذات مرة يسمى ملف كلمة المرور.
>> في الوقت الحاضر انه تم نقله إلى أماكن أخرى.
ولكن اذا نظرتم في المكان المناسب على النظام، سترى ليس فقط اسم المستخدم الخاص بك
أو أن الآخرين على النظام، ولكن سترى نسخة مشفرة من كلمة المرور الخاصة بهم.
والواقع أن هناك سرداب كلمة تشير إلى أن الاشياء التالية مشفرة،
وهذه السلسلة من رسائل عشوائية والحروف والأرقام وهكذا دواليك
يمكن فك تشفيرها فقط من خلال معرفة بعض عموما سرية -
كلمة سر، سر عدد -
وبالفعل كان الأمر كذلك، فن التشفير الدمامل وصولا الى نهاية المطاف ثقة نوعا
ومعرفة أن شخصا آخر شيئا لم يكن.
لذلك سنقوم استكشاف هذا بالتفصيل أكثر قليلا في الحاضر وpset القادمة.
والآن كلمة عن النجاح / الفشل.
خاصة أن انخفض بعضا منكم في pset1، والأجهزة،
وعالم جديد جدا لنفسك، ندرك أن مشاعر الإحباط والارتباك
والصعوبات التقنية فقط لا بأس به من المتوقع،
خاصة مع pset الأولى، حيث هناك فقط الكثير من الجديد،
مجرد الحصول على دراية LS و CD وجميع هذه الأوامر غامضة
وبيئة جديدة، وهذا منفصل عن المواد الفعلية والبرمجة نفسها.
ندرك ذلك أيضا أن هناك بالتأكيد أوقات العمل الموجودة كبنية الدعم.
>> أقسام تبدأ يوم الأحد القادم.
ولكن الأهم من ذلك، إذا كنت تشعر أن هذا ليس فقط في العالم بالنسبة لك،
ندرك أنه حقا لا تأخذ فقط الوقت.
وأنه لولا هذه الفرصة منذ سنوات بالنسبة لي من تمريرة فئة / تفشل،
بصراحة، أنا لن حتى وضعت القدم في الفصول الدراسية.
ويمكنك تغيير هذا حتى، يقول، يوم الاثنين الخامس من الدورة،
إذا كان الأمر كذلك كنت على حافة الآن، يدرك أنه بدلا من التوجه إلى بعض المياه الأخرى تماما،
لا تنظر بالتأكيد مجرد تغيير لتمرير / تفشل.
مرة أخرى، ليس هناك حقا هذه الثقافة هنا في جامعة هارفارد من أخذ الأمور تمر / فشل
لأن الجميع يريد فعلا تحقيق أو overachieve،
ولكن بصراحة، هذا هو وسيلة رائعة لمحاولة شيء من
التي قد لا تكون مألوفة بالنسبة لك، وعليك في نهاية المطاف القيام، في معظم الحالات، ودفع غرامة تماما،
ربما الكثير لمفاجأة الخاص بك.
وبعبارات أكثر تحديدا، ما أعتقد تمرير / تفشل عموما لا،
خاصة وأنكم قد شهدت مع pset0،
إذا كنت وضعت في 10 ساعة، 15 ساعة، 25 ساعة في بعض pset
وكنت ضجيجا رأسك فقط ضد الجدار وانها السوبر الحصول على وقت متأخر من الليل
ولكن كنت قد اتخذت pset 90٪ من الطريق وأنت فقط لا يمكن معرفة شيء واحد،
تمرير / تفشل يأخذ حقا على حافة الخروج من فئة من هذا القبيل،
حيث يمكنك فرز من يقول لحسن الحظ، "حسنا، أنا أعلم أنها ليست مثالية،
ولكنني عملت قبالة مؤخرتي على هذا، وأنا سعيدة جدا مع حيث انتهى "
وسوف تلبي توقعات النجاح / الفشل.
لذلك إبقاء ذلك في الاعتبار. حسنا.
>> حتى أولئك منكم الذين يصارعون لاستخدام جامعة هارفارد واي فاي،
أعرف أن هناك SSID CS50، اتصال واي فاي، وتطوف
قد يكون لديك أفضل حظا ل.
انها سخرية قليلا أن كلمة السر لهذا، إذا كنت ترغب في محاولة الاتصال هذا
لتحسين سرعات - وعلينا أن نعرف ما اذا كان ليس أفضل - هو 12345، وصولا إلى 8
لأن 8 هو أكثر أمنا من 5.
حتى إذا كنت في حاجة إلى كلمة واي فاي، الاتصال CS50 هنا لاسلكيا، 12345678،
ومشاركة في مناقشة CS50 إذا كان لديك مشكلات في الاتصال تزال متقطعة،
وسوف ندع القوى التي تعرف أن لهذا الفضاء. حسنا.
حتى دعابة سريعة، خصوصا بالنسبة لأولئك منكم الذين هم الفتيان أو الفتيات مروحة أبل جميع الأشياء.
ما حفرت من قبل بضع سنوات كان هذا الملف هنا، iUnlock.c،
فقط لنوع من بذل المزيد من الخرسانة وأكثر تعقيدا
بعض البرامج الأساسية C أكثر كنا الكتابة.
لذلك فتحت هذا الملف، iUnlock.c. لأنها متاحة على الصفحة محاضرات لهذا اليوم.
على الجانب الأيمن سترى لائحة طويلة من الوظائف.
كتب ذلك الزميل الذي كتب هذا الأمر الكثير من الوظائف، وأكثر من مجرد الرئيسي.
لكنه كان في مجمله مجموعة من المكتبات هنا، وإذا بدأنا من خلال التمرير
هذا هو في الواقع ما هو الأولى، على ما أعتقد، الكراك لفون الأصلي.
>> عندما أردت الهروب من السجن اي فون الأصلي، وهو ما يعني أنه من untether AT & T
وتثبيت برنامج خاص في الواقع عليها، وتفعل أشياء أن أبل لا تريد الناس أن تفعل،
استغرق الوقت شخص لمعرفة بالضبط كيف أنها يمكن أن تستغل عيوب البرمجيات،
ولدت أخطاء، والبق، في برامج أبل، وبالتالي iUnlock.c--
أنه إذا جمعت على جهاز الكمبيوتر الخاص بك، وتثبيته على جهاز iPhone
أن كان على علاقة بجهاز الكمبيوتر عن طريق، مثلا، كبل USB،
هذا من شأنه أن يوفر لك امتيازات إدارية أو الجذر على اي فون الخاص بك
وتتيح لك القيام الى حد كبير ما تريد.
وهكذا كان هناك هذا القط لعبة الفأر ورائعة
بين أبل وبقية العالم لا سيما ما، مثل العديد من الشركات،
محاولة لقفل الاشياء أسفل بحيث يمكنك القيام بذلك إلا أنه مع ما تنوي.
ولكن بفضل الناس مثل هذا وفهم وانخفاض مستوى التفاصيل -
وفي هذه الحالة C البرمجة - والكثير من بنيات مألوفة
أننا قد بدأت اللعب مع، وكنت قادرا على الاستفادة حقا الأجهزة
بطريقة الذي تراه مناسبا وليس بالضرورة كيان بعض الشركات.
هكذا على سبيل المثال، ليس لدي أي فكرة عما تقوم به كل هذا،
ولكن يبدو GetVersion جميلة واضحة،
ويبدو أن هذه هي وظيفة أن هذا الشخص كتب.
الأمر يحتاج إلى بعض نوع من عدد صحيح كوسيطة، لا يرجع أي شيء،
ولكن يبدو أن حلقة مع حلقة For هنا واذا كان الشرط، إذا كسر حالة،
وعلى نحو ما يتصل أرقام إصدار إذا كنا بالتمرير لأسفل،
على الرغم من أن الكثير من هذه الكلمات الرئيسية سوف تكون جديدة.
وهناك مجموعة كبيرة من وظائف هنا لم نرها مطلقا من وقد لا نرى أي وقت مضى
على مدار الفصل الدراسي.
>> في نهاية اليوم، ويترتب على نفس القواعد والمنطق الذي كنا اللعب مع حتى الآن.
لذلك هذا هو الآن قديمة جدا للقضاء 3S الخاص بك iPhone 4S أو قريبا أو 5S هذه الأيام،
ولكن أعلم أن جميع كثيرا مشتقة من هذا العالم بعد أن قمنا اتجه الى.
دعونا نلقي نظرة على مثال بسيط أكثر قليلا:
هذا واحد، لمجرد الحصول استعد مع بعض بناء الجملة، وكذلك بعض نوع بيانات آخر
أنه قد تحدثنا عن ولكن لم أر حقا في C.
هذا هو ملف يسمى positive1.c، وفقا للتعليق في أعلى
هذه المطالب العادلة التي يمكن للمستخدم توفير رقم موجب.
لذلك فمن مثال على حلقة افعل الوقت، التي هي لطيفة لبرامج المستخدم التفاعلي
حيث كنت في حاجة لنقول للمستخدم أن تفعل شيئا،
وإذا لم تتعاون أنت تصيح عليهم أو رفض مدخلاتها.
مثال على ذلك: انا ذاهب الى القيام خطوط 19 إلى 24
طالما أن المستخدم لم أعطاني رقم موجب.
هذا التفصيل هنا على خط 18، لماذا أعلن ن فوق هذا كله بناء حلقات
على عكس بجوار السطر 22 حيث أهتم فعلا للحصول على ن؟ نعم.
[طالب] نطاق. نعم >>، لذلك هذه المسألة من نطاق.
وفي شروط للشخص العادي، ماذا نطاق الرجوع إلى؟
نعم. هل >> [استجابة الطالب غير مسموع] >> تتحدث بصوت أعلى قليلا و؟
[طالب] حيث يمكنك الوصول إلى هذا المتغير. الكمال >>.
حيث يمكنك الوصول إلى متغير معين.
وعموما، وبحكم التجربة حتى الآن وكان ذلك في نطاق بعض متغير
تم تعريفها بواسطة الأقواس المتعرجة والأحدث التي كنت قد رأيت.
>> وحتى في هذه الحالة، إذا كنت أخطأت في إعلان ن على خط 22، وهذا الخط يعمل.
وأود أن الحصول على كثافة العمليات، وأود أن وضعه في أن ن المتغير في السطر 22،
ولكن الأمر الذي سطر من التعليمات البرمجية دينا الآن أي فكرة عما أتحدث عنه؟ >> [طالب] 25.
[مالان] 25، واتضح أيضا 24 كما أنه في هذه الحالة فإنه يقع خارج الأقواس المتعرجة.
لذلك قليلا من الإزعاج ولكن من السهل جدا حلها ببساطة من خلال الإعلان المتغير
خارج الدالة نفسها.
سنرى اليوم في وقت لاحق يمكنك أن يخطو خطوة إضافية
ويمكن أن تحصل حتى كسول قليلا.
وهذا لا يمكن التوصية بشكل عام، ولكن يمكن أن تحصل حتى كسول
ووضع متغير على مستوى العالم، إذا جاز التعبير، وليس داخل دالة، وليس داخل حلقة،
ولكن في الملف نفسه، خارج كل من وظائف قد كتبت لك، كما فعلت هنا على الخط 15.
وعموما هذا تثير الامتعاض، ولكن تحقيق هذا هو الحل في بعض الأحيان إلى مشاكل أخرى،
كما سنرى في نهاية المطاف.
حتى الآن سنقوم ترك الأمر مثل هذا، ولكن دعونا نرى ما اذا كنا نستطيع إعادة كتابة هذا
فقط لبدء التعبير عن أنفسنا بشكل مختلف قليلا.
هذا البرنامج، لمجرد أن يكون واضحا، هو positive1.
اسمحوا لي هنا والمضي قدما في إطار المحطة الطرفية بلدي جعل positive1، أدخل.
يجمع بخير. أنا ذاهب لتشغيل positive1، هاهنا.
أطالب أن تعطيني عدد صحيح موجب. أنا أقول -1. هذا لم ينجح.
0، 99. ويبدو أن العمل.
ربما ليس الاختبار الأكثر صرامة، ولكن على الأقل أنها لطيفة التعقل الاختيار
أننا على الطريق الصحيح.
>> لذلك اسمحوا لي الآن المضي قدما وفتح الإصدار 2 من هذا،
وبالفعل ما هو مختلف؟
فإنه يطبق نفس الشيء، ولكن ما والقفز هذه المرة مختلفة بشكل واضح؟
هذا BOOL باللون الأخضر. ومن ابرز باللون الأخضر، هذه الكلمة الرئيسية المعروفة باسم BOOL، وهو نوع البيانات.
لا حان إنشاؤها في كافة إصدارات C.
تحتاج إلى تضمين مكتبة محددة.
في حالتنا، وشملت I مكتبة CS50 حتى نتمكن من الوصول إلى BOOL.
ولكن في خط 18، يبدو أننا نعاني قيمة منطقية هنا دعا شاكرين.
يمكن أن يكون أي شيء دعوت هذا، ولكن أنا ممتن يطلق عليه
فقط لنوع من نقل بعض المعنى الدلالي.
في البداية حتى على الخط 18، على ما يبدو أنا لا شاكرين
لأن تتم تهيئة قيمة منطقية شاكرين إلى false في خط 18.
ومن ثم يبدو ما فعلته هنا في خطوط 21 من خلال 23
ولقد مجرد نوع من إعادة كتابة منطق بلدي.
لذلك لا يختلف وظيفيا، ولكن في السطر 22 وأنا الآن معرفة ما اذا كان الباحث المستخدم قدمت
أكبر من 0، ثم انني ببساطة تغيير قيمة شاكرين إلى true.
ولماذا أفعل ذلك؟ لأنه في السطر 25، على ما يبدو أنا ذاهب للتحقق من حالة.
القيام بذلك حلقة في حين شاكرين غير صحيح.
لذلك أنا اقترح هذا كبديل للالإصدار 1
لأنه على الأقل أكثر من ذلك بقليل بديهية ربما، انها أكثر من ذلك بقليل على الارض باللغة الإنجليزية.
تفعل ذلك ما يلي حين كنت لا شاكرين أو أثناء شاكرين غير صحيح.
وهذه المرة أيضا على ما يبدو أنا لا يهمني أن نتذكر ما المستعمل في طباعة
لأن ليس هناك إشعار ن متغير، في الواقع كذلك، كذبة بيضاء صغيرة هناك.
>> عمليا، إلا أن البرنامج يختلف قليلا مرة واحدة نصل الى الجزء السفلي منه
لأنني لا تذكر ما n هو.
ولكن أردت أن تثبت ذلك أيضا هنا حتى ولو رأينا GetInt
وGetString تستخدم على الجانب الأيمن من علامة يساوي حتى الآن
بحيث نتذكر قيمة، من الناحية الفنية، وهذا ليس ضروريا تماما.
إذا كنت لأي سبب من الأسباب لا يهتمون لحفظ القيمة،
أنت فقط تريد أن تحقق قيمة، لاحظ أننا يمكن ببساطة كتابة هذا النحو GetInt،
PAREN مفتوحة، PAREN إغلاق.
هذه الوظيفة هو الذهاب لإرجاع قيمة، كما نقوله في مجالسنا.
انها سوف تعطيك عودة إلى الباحث.
وهكذا إذا كنت تعتقد عقليا حدوث ذلك،
عندما كنت اكتب في 99، GetInt إرجاع عدد 99،
والمفهوم جدا .. انه كما لو كانت في الواقع قانون بلدي هذا.
إذا كان الأمر كذلك في الواقع أكبر 99 غير من 0، ثم شاكرين يصبح صحيحا،
ثم السطر 25 يدرك أوه، سننتهي من ذلك لأنني الآن شاكرين،
وتمشيا 26، نقول ببساطة: "شكرا لعدد صحيح موجب!"
كل ما حدث أن يكون.
الآن دعونا نفعل السكر النحوية طفيفة هنا، إذا جاز التعبير.
دعونا نرى ما اذا كنا نستطيع تنظيف هذا الخط 25 مع هذا البديل الثالث والأخير في positive3.
>> لاحظ الفرق الوحيد الآن هو ما سطر من التعليمات البرمجية؟ >> [طالب] 25. >> [مالان] نعم، 25.
ولقد لا ينظر إليها في الحقيقة هذه الخدعة فقط حتى الآن، ولكننا لم نرى علامة تعجب يوم الاثنين،
الذي يدل على ماذا؟ >> [طالب] لا. غير النفي أو >>.
حتى تأخذ قيمة منطقية والوجه قيمته.
صحيح يصبح كاذبة، كاذبة يصبح صحيحا.
لذلك هذا، وأود أن أقترح، بل أكثر من ذلك بقليل بديهية وسيلة لكتابة التعليمات البرمجية
لأنني لا تزال تهيئة نشكر كاذبة، وأنا لا تزال تفعل ما يلي،
أنا وضعت الشكر إلى true عندما يحين الوقت،
ولكن الآن يمكنك حقا ترجمة هذا الرمز فقط ترك شفهيا إلى اليمين،
في حين أن (شاكرين!) بسبب الانفجار أو تعجب نقطة يدل على فكرة لا،
وذلك في حين لا شاكرين.
ذلك مرة أخرى، ونحن لم أدخل أي مفاهيم جديدة في حد ذاتها.
تحدثنا عن القيم المنطقية مرة عندما لعبنا مع سكراتش،
ولكن ندرك الآن فقط نستطيع أن نبدأ كتابة التعليمات البرمجية لدينا في العديد من الطرق المختلفة.
لذلك لا سيما في pset1 إذا كنت تكافح من أجل نوع من معرفة الطريق إلى كتابة بعض البرامج،
الاحتمالات هي كنت في الحظ لأن هناك يمكن أن يكون أي عدد من الحلول
يمكن أن يحدث لك عليها.
على سبيل المثال، وهذا هو فقط 3 لأبسط حتى من البرامج. حسنا.
وأذكر الآن يوم الاثنين غادرنا على هذه المذكرة مع قيم الإرجاع.
ذلك للمرة الأولى كتبنا البرنامج الذي لا يكون مجرد الرئيسية؛
كما أن لديها وظيفتها المخصصة الخاصة التي كتبت هنا.
حتى في خط 31 الى 34 لقد نفذت I وظيفة المكعب.
انها ليست معقدة. انها مجرد * A * A في هذه الحالة.
ولكن ما هو مهم في ذلك هو أن أنا أخذ المدخلات في شكل
وأنا العودة الناتج في شكل * A * A.
حتى الآن لدي القدرة، مثل الكثير كنت مع وحده prinf،
استدعاء هذه الدالة عن طريق استدعاء الدالة مكعب.
>> وظيفة مكعب يأخذ بعض المدخلات، والدالة بإرجاع بعض المكعب الناتج.
على النقيض من ذلك، لم يفعلوا شيئا printf.
فإنه لم يرجع أي شيء أننا يهتم، على الرغم من بوصفها جانبا فإنه إرجاع قيمة؛
أنت فقط تجاهل عموما.
لم يفعلوا شيئا Printf. وكان من الآثار الجانبية لطباعة على الشاشة.
وعلى النقيض من هنا، لدينا وظيفة مكعب، والتي ترجع في الواقع شيئا.
حتى بالنسبة لمن هم يعرفون هذا، انها فكرة اضحة إلى حد ما.
لكن بالنسبة لأولئك غير مألوفة مع هذه الفكرة من تمرير المدخلات في المخرجات والعودة،
دعونا نحاول مجرد شيء بسيط عظمى.
وأي شخص مريحة الخروج على خشبة المسرح لفترة وجيزة؟
عليك أن تكون مريحة مع كاميرا عليك أيضا. نعم؟ حسنا.
ما هو اسمك؟ >> [طالب] كين. كين >>. حسنا. كين، وتأتي على ما يصل.
كين ستكون وظيفة من نوع ما هنا.
دعونا نمضي قدما ونفعل ذلك. دعونا الحصول على يتوهم قليلا.
تشرفت بمقابلتك. مرحبا بك في مركز المرحلة. حسنا.
دعونا ضرب هذا الزر هنا. حسنا.
حتى هنا لديك السبورة الحديثة،
وأنا ما هي الوظيفة الرئيسية، على سبيل المثال،
وأنا لم يكن لديك أي باد في يدي.
>> أنا لا أتذكر حقا كيف يمكنني أن - حسنا، لا أستطيع أن أقول ذلك.
ليس لدي حقا الكتابة اليدوية الجيدة،
وهكذا ولذلك أريدك أن طباعة شيء ما على الشاشة بالنسبة لي.
أنا يجري البرنامج الرئيسي، وأنا ذاهب لأقول لكم هذا
من خلال كتابة الصفر في بلدي الدجاج ثم تمرير لك مدخلا.
على الرغم من ذلك سخيفة هذه العملية هو أن مفهوم المهام واستدعاء دالة
وتعود وظيفة يغلي في الواقع إلى هذا.
أنا الرئيسي، وقد كتبت فقط printf، واقتبس، نهاية الاقتباس شيء على الشاشة،
وأنا على تشغيل هذا البرنامج، وبمجرد دعا printf يحصل،
فإنه يأخذ وسيطة واحدة أو معلمة واحدة في بعض الأحيان بين علامات اقتباس مزدوجة.
هنا هو أن الحجة. أنا فمررها الى كين.
وهو الصندوق الاسود كتب بعض عدة سنوات
على ما يبدو أن يعرف فقط كيفية طباعة الأشياء على الشاشة.
تنفيذ ذلك.
وهذا ليس سيئا. جيدة جدا.
حتى الآن يتم تنفيذ كين. لا يحتاج إلى تسليم لي أي شيء مرة أخرى؟
لا أن شاهدنا حتى الآن.
مرة أخرى، لا يعود في الواقع printf عدد، لكننا ذاهبون الى تجاهل ذلك في الوقت الحالي
لاننا لم تستخدم. هذا كل شيء حتى لكين.
وهكذا الرئيسية الآن يأخذ السيطرة على البرنامج مرة أخرى
لأن هذا السطر من التعليمات البرمجية، printf، ويتم تنفيذ.
ونحن نسير في طريقنا، وتنفيذ خطوط أخرى مهما كانت هناك.
حتى الآن دعونا نحاول مثال مختلفة قليلا.
دعونا هذه المرة من الواضح هنا أولا الشاشة، وهذه المرة سنفعل وظيفة التكعيب،
ولكن هذه المرة، أنا أتوقع قيمة الانتاج.
>> لذلك دعونا نمضي قدما ونفعل ذلك.
الآن لدي سطر من التعليمات البرمجية التي تقول X يحصل مكعب العاشر.
السطر من التعليمات البرمجية، استدعاء، يبدو مثل هذا: س = مكعب (خ)؛
فكيف يتم هذا الذهاب إلى العمل؟ دعونا نمضي قدما وتعطيك شاشة بيضاء مرة أخرى.
وانا ذاهب لكتابة الآن قيمة x،
والتي في هذه اللحظة من الزمن يحدث أن تكون، دعنا نقول، من 2 إلى يبقيه بسيط.
وقد كتبت على قطعة من الورق قيمة 2، الذي هو بلدي X القيمة.
I بتسليمها الى كين. وأنا أكتب >> مجرد الإجابة؟ نعم >>، دعونا مجرد كتابة الجواب.
حسنا. والآن عليه أن يعود لي شيئا. الكمال. لطيفة يواصل..
الآن حتى انه يسلم لي مرة أخرى بقيمة 8 في هذه الحالة، وماذا أفعل معها؟
في الواقع - دعونا نرى، والحصول على هذا الحق. ما أنا ذاهب لتفعله حيال ذلك؟
الآن انا ذاهب الى اتخاذ هذه القيمة وتخزينها فعلا في هذه البتات نفسه في الذاكرة.
ولكن لاحظت أنا نوع من الكفاح هنا.
أنا بشيء من الارتباك لان ما يمكنني الكتابة فعلا قيمة x،
لأن ما قمت به فقط هو كين جسديا اليد على قطعة من الورق التي لديها قيمة 2،
الذي كان العاشر، والواقع، وهذا هو بالضبط ما حدث.
لذلك تبين أنه عند استدعاء الدالة والتي تمرر في حجة
مثل مرحبا، العالم أو يمكنك تمرير وسيطة في مثل 2،
عموما، كنت تمر على نسخة من هذه الحجة.
وذلك تماما كما كتبت أسفل رقم 2 هنا وسلمها إلى كين،
يجب أن يعني ذلك أن لا يزال لدي نسخة من القيمة 2 في مكان ما
لأن في الواقع، الآن بعد أن قمت حصلت مرة أخرى على قيمة 8، ولست بحاجة للذهاب مرة أخرى في RAM
والكتابة في الواقع بنسبة 8 حيث كانت لدي عدد 2.
حتى بصريا، وتذكر هذه الفكرة من تمرير في، حرفيا، على نسخة من القيمة.
>> كين لا شيء له، والأيدي لي مرة أخرى شيئا - في هذه الحالة قيمة مثل 8 -
ومن ثم لا بد لي من القيام بشيء ما مع تلك القيمة إذا كنت تريد أن تبقي حولها.
ذلك أن كل هذا يعود إلى أن تكون مألوفة جدا قبل فترة طويلة.
شكرا جزيلا على هذا العرض هنا، كين. [تصفيق]
جيد جدا القيام به.
دعونا نرى كيف أن يتصل في نهاية المطاف إلى بعض من وظيفة الدعوة التي كنا نقوم به هنا.
اسمحوا لي أن تمضي قدما وتعيدنا إلى مثال التكعيب هنا.
تلاحظ أن إذا كنا نريد أن تبدأ فعلا مع هذا المزيد،
ونحن في طريقنا لدينا لأن تضع في اعتبارها حقيقة أن x عدد الذي يتم تمريره هنا
يختلف عما في الواقع يتم تمريرها إلى الدالة.
ذلك مرة أخرى، وهذا تمريرة من نسخة ستصبح ثيق جدا في لحظة واحدة.
دعونا نلقي نظرة على ما لا يعمل تماما بعد الحق.
انا ذاهب الى المضي قدما وفتح سبيل المثال عربات التي تجرها الدواب الثالث، الذي معيبة بطبيعتها،
وهذا يدعى buggy3 وتنفذ وظيفة مبادلة.
هنا لدينا المهمة الرئيسية التي x و y لتهيئة تعسفا 1 و 2 على التوالي.
يمكن أن نستخدم GetInt، ولكن كل ما نحتاجه هو عملية بسيطة،
لذلك فمن الثابت ترميز ك 1 و 2.
في خطوط 21 و 22، ونحن على ما يبدو من طباعة X و Y، 1 في كل سطر.
ثم على خط 23، أزعم أنني مبادلة هذه القيم، نقطة، نقطة، نقطة.
أعطي الكلمة على ما يبدو وظيفة في خط 24 مبادلة يسمى الحجج التي يأخذ 2.
انها شرعي تماما لأنها وظائف لاتخاذ 2 الحجج. لقد شهدنا بالفعل القيام printf.
>> حتى يأخذ المبادلة على ما يبدو x و y، وكما يوحي اسمها،
وآمل أن يحدث لمبادلة هذه القيم 2.
لذلك أطالب ثم على السطر 25 "مقايضة!" وأنا طبع x و y
على افتراض أنه قد تم بالفعل أنها تبادلت.
ولكن إذا كنت بالفعل تشغيل هذا البرنامج - اسمحوا لي أن تفتح نافذة الصالة،
اسمحوا لي أن buggy3 - وكما يوحي اسمها، وهذا لن ينتهي به
لأنني عندما أدخل ضرب، لاحظ أن x هو 1، ص 2،
ولكن في نهاية البرنامج، إلا أنها لا تزال، في الواقع، هو نفسه.
مستندا في ذلك على مظاهرة الآن فقط مع كين، ما يحدث في الواقع على؟
دعونا الغوص في هذه الوظيفة المبادلة. انها فائقة قصيرة. انها فقط بضعة أسطر من التعليمات البرمجية طويلة.
ولكن ما هي المشكلة الأساسية على أساس قصة بسيطة هنا وقال كين مع؟
لماذا كسر المبادلة؟
[طالب] أنت تخزين لنسخة، وليس المتغير.
بالضبط. نحن لتخزين نسخة، وليس المتغير نفسه.
وبعبارة أخرى، يبدو مبادلة يأخذ 2 الحجج، وكثافة العمليات،
وهذا يدعى تعسفا من ألف وباء،
وهنا قد مررت في x و y، والتي هي 1 و 2 على التوالي،
ولكن أنا لا يمر حرفيا في العاشر، وأنا لا يمر حرفيا في Y،
أنا تمرير نسخة من X ونسخة من ذ.
انها تقريبا كما لو كنت نسخ ولصق في مبادلة
القيم التي تريد أن التلاعب في الواقع.
إذا كان الأمر كذلك كان هذا هو الحال، عندما كنت بدء تنفيذ برنامج خط ثم 35 36،
عندما أحصل على خط 37، في هذه المرحلة من القصة، ما هو قيمة؟
في هذه المرحلة من القصة، خط 37، ما هو قيمة في هذه المرحلة؟ >> [طالب] (1).
[مالان] وينبغي أن يكون فقط 1، حق، لأن صدر في العاشر كوسيطة الأولى،
وهذه الوظيفة بشكل تعسفي فقط تدعو حجتها لأول مرة.
وبالمثل يتم ذ الوسيطة الثانية، وانها مجرد استدعاء تعسفي ب الحجة الثانية.
>> هذا هو في الواقع الانقسام إلى حد ما أوضح ببساطة. التفكير في الامر.
لا أحد منا قد التقى الشخص الذي كتب printf،
بالتأكيد كان الأمر كذلك، كان لديه أي فكرة عما لدينا المتغيرات 30 عاما في وقت لاحق سوف يتم استدعاؤها.
لذلك يجب أن يكون هناك تمييز بين ما تسمونه المتغيرات في وظائف كنت تكتب
وما تسمونه المتغيرات في وظائف كنت تتصل أو استخدام.
لذلك وبعبارة أخرى، لقد كتبت المتغيرات بصفتي X و Y،
ولكن إذا كان شخص آخر كان قد كتب وظيفة المبادلة، وقال انه أو انها بالتأكيد لن تعرف
ما هي المتغيرات بلدي سوف يتم استدعاؤها،
ندرك ذلك أن هذا هو السبب لديك هذه الازدواجية في الأسماء.
من الناحية الفنية، يمكن أن أفعل هذا من قبيل المصادفة،
لكنهم كانوا تمريرها في شكل نسخ.
سيكون من مجرد محض صدفة إذا جماليا ذلك الشخص الذي كتب المبادلة
استخدمت نفس الأسماء.
حتى في هذه المرحلة من القصة، خط 37، و1، ب 2، وأنا الآن المضي قدما لمقايضتهم.
بادئ ذي بدء، اسمحوا لي أن تفعل أكثر من ذلك بكثير في الواقع هذا ببساطة.
أنا لا أعرف ما هي تلك الخطوط 3 من قانون تفعل.
اسمحوا لي أن تفعل هذا فقط: B = A؛ أ = ب، القيام به.
لماذا هذا مكسورة، منطقيا؟
انها نوع من الشيء البديهي، أليس كذلك؟
لذلك يصبح وب ب يصبح،
ولكن المشكلة هي أن بمجرد تنفيذ خط 37، ما قيمة ألف وباء؟
نفسه، 1، لأنك مضروب، إذا جاز التعبير، لقد قمت بتغيير ب يساوي أ.
حتى مرة واحدة خط 37 وأعدم، وهذا عظيم، لديك الآن 2 نسخ من الرقم 1
داخل هذه الوظيفة، ثم عندما تقول ذلك تمشيا 38 ألف = ب،
كنت نوع من مشدود لك لأنك فقط تعيين 1 إلى 1.
كنت قد فقدت نوع من القيمة التي يهتم.
حتى في النسخة الأصلية من هذا، لاحظ ما فعلته.
كان لي بدلا من ذلك السطر الثالث من التعليمات البرمجية التي بدت مثل هذا.
I تعريف متغير مؤقت.
>> TMP هو الاسم الشائع للغاية بالنسبة للمتغير مؤقت، وانها INT
لأنه يحتوي لمطابقة ما أريد أن نسخة من.
I تخزين نسخة من داخل TMP، مرة واحدة حتى خط 37 نفذت،
قيمة هو - الاختيار السريع التعقل - 1، وقيمة ب 2،
وقيمة TMP أيضا 1.
حتى الآن أنا تنفيذ خط 38.
مرة واحدة ينفذ خط 38، ويأخذ على قيمة ب. وكان ب 2، لذلك هو الآن 2.
حتى في هذه المرحلة من القصة، و2، ب 2، و TMP 1،
ذلك منطقيا الآن، يمكننا أن قيمة صوت نزول المطر فقط TMP حيز ب وننتهي.
حتى لقد حللنا هذه المشكلة.
لسوء الحظ، عندما كنت تشغيل هذا البرنامج في هذا الشكل، فإنه لا تبديل في الواقع أي قيم.
ولكن أن تكون واضحة، لماذا؟
I إصلاح مشكلة منطقية من مجرد لحظة مضت،
ولكن مرة أخرى، إذا قمت بتشغيل هذا البرنامج، x و y لم تتغير
في نهاية تنفيذ البرنامج.
[تعليق الطالب غير مسموع] >> ونحن لم يعودوا أي شيء، لذلك كان هذا صحيحا.
ولكن تبين أن هناك قليلا من مشكلة هنا لأن حتى الآن،
الشيء الوحيد كنا قادرين على العودة هو شيء واحد، وهذا هو تقييد C.
يمكنك العودة فقط حقا قيمة واحدة، وفي هذه الحالة أنا نوع من عالقة هنا
لأنني يمكن إرجاع قيمة جديدة من X أو يمكن أن أعود القيمة الجديدة من Y،
ولكن أريد العودة على حد سواء.
العودة بحيث لا يتم الحل بسيط هنا.
ولكن المشكلة هي في الأساس لماذا؟ ونحن ما تبادلت فعلا؟
[طالب] أ و ب. >> أ و ب.
ولكن ألف وباء هي نسخ من X و Y، وهو ما يعني أننا لم يفعلوا كل هذا العمل،
قضينا 3 دقائق فقط الحديث عن مبادلة وظيفة وجميع 3 من هذه المتغيرات،
وهذا أمر عظيم، صحيحة تماما في عزلة،
لكن ونطاق ب هو فقط في هذه السطور هنا.
>> لذلك تماما مثل حلقة For، إذا قمت بتعريف عددا صحيحا أنا داخل لحلقة،
وبالمثل، إذا كنت معلنا داخل أ و ب وظيفة التي كنت قد كتبت،
انهم داخل صالحة فقط لهذه المهمة، وهو ما يعني في أقرب وقت كما هو الحال مبادلة تنفيذ
وننتقل من سطر 24 إلى السطر 25، x و y لم تتغير على الإطلاق.
كنت مجرد إهدار الكثير من الوقت كله مبادلة نسخ من المتغيرات.
لذلك تبين أن الحل لهذا هو في الواقع غير واضحة.
انها ليست كافية تماما لإرجاع القيم لأننا لا نستطيع العودة فقط 1 القيمة،
وأنا حقا تريد مبادلة كل من X و Y في نفس الوقت،
لذلك نحن ستكون لدينا لنعود إلى هذا.
لكن في الوقت الراهن، ندرك أن المسألة مستمدة أساسا من حقيقة أن أ و ب هي نسخ
وهما في نطاقها الخاص.
دعونا نحاول حل هذا بطريقة أو بأخرى.
اسمحوا لي أن انتقل فعلا إلى هنا وفتح، دعنا نقول، البديل الرابع من هذا، buggy4.
ماذا عن هذا؟
هذه مشكلة مماثلة ولكن أبسط للنظر في قبل أن نتخذ طعنة في حلها.
ويسمى هذا البرنامج طريقة، وأنه على ما يبدو تهيئة عدد صحيح X إلى 1 في خط 18.
أزعم ثم x هو 1، ثم أزعم "تزايد ..."
I ثم استدعاء الزيادة، ولكن بعد ذلك في خطوط 22 و 23، وأنا ما كان يدعي أنه زيادة،
أزعم X الآن كل ما هو - 2، ويفترض - ولكن هذا البرنامج هو عربات التي تجرها الدواب.
ما هي المشكلة؟
نعم. >> [استجابة الطالب غير مسموع] >> بالضبط.
لذلك أعلنت X، بالطبع، على خط 18.
وهذا هو داخل الأقواس الرئيسية للمجعد.
وبالتالي فإن الجواب البسيط هنا هو أنه في حين X موجود هنا،
لم يكن موجودا في السطر 32، لذلك هذا البرنامج في الواقع لن تجميع أكبر.
المترجم عندما أحاول تجميع هذا الرمز هو الذهاب الى الصراخ في وجهي
عن بعض معرف غير معروفة أو شيء بهذا المعنى. في الواقع، دعونا نحاول.
هذا هو جعل buggy4. هناك هو عليه.
استخدام 'س' معرف غير معروفة في السطر 32.
وفعلا، دعونا نكون أكثر وضوحا هنا اليوم بحيث يكون هذا مفيدا
في ساعات العمل والمنزل.
>> لاحظت أنه مكتوب بشكل غامض قليلا.
ولكن حقيقة أن صاح ضجيج وعلينا قائلا buggy4.c: 32:5، هو في الواقع مفيدة.
فهذا يعني أن الخطأ هو في السطر 32 في موضع الحرف 5.
1 حتى و 2 و 3 و 4 و 5. وهذا، في الواقع، أين تكمن المشكلة.
وأيضا، أيضا، أن نضع في اعتبارنا في ساعات العمل والمنزل، وأنا محظوظ هنا.
لدي خطأ واحد. انها سوف يكون من السهل نسبيا لإصلاح.
ولكن إذا كنت تحصل على كامل الشاشة بأكملها من رسائل الخطأ الساحقة،
ندرك مرة أخرى أن واحد قد يكون مجرد bottommost أعراض واحدة الأعلى.
لذلك دائما مطاردة أسفل البق الخاص بك من أعلى إلى أسفل
لأنه قد يكون هناك مجرد أثر سلسلة ديزي
أن يقترح لديك مشاكل أكثر مما تفعله الطريقة في الواقع.
لذلك كيف يمكن لنا إصلاح هذه إذا هدفي هو زيادة X؟ >> [طالب] جعل X العالمي.
حسنا، لذلك يمكننا أن نجعل X العالمي.
دعونا نلقي الاختصار الذي حذر في وقت سابق عن I، ولكن هيك، كل ما نحتاجه هو حل سريع،
لذلك دعونا نقول فقط X الباحث هنا حتى. الذي يجعل X العالمي.
حتى الآن الرئيسي لديه حق الوصول إليها وطريقة الوصول إليها،
ولذا اسمحوا لي أن تمضي قدما وترجمة هذا الآن.
جعل buggy4، أدخل. يبدو أن تجمع الآن.
دعونا تشغيل buggy4. ويبدو فعلا العمل.
هذا هو واحد من هذه الأمور هذا ما افعل كما أقول لك وليس كما أفعل أنا،
كما فعلت هنا فقط، لأنه في عام،
برامجنا سوف تحصل على الكثير أكثر إثارة للاهتمام وقتا أطول من ذلك،
وإذا كان الحل لمشاكل الحياة وضعت للتو جميع المتغيرات في الجزء العلوي من الملف الخاص بك،
بسرعة كبيرة لم تحصل على برامج لإدارة الصعب مروع.
ستكون أكثر صعوبة في التفكير حتى أسماء المتغيرات الجديدة،
ستكون أكثر صعوبة لفهم ما يقوم به متغير ما،
وهكذا بشكل عام، وهذا ليس حلا جيدا.
لذلك دعونا نفعل ذلك بشكل أفضل.
نحن لا نريد استخدام متغير عمومي هنا.
>> أريد أن زيادة X، حتى أتمكن من الواضح -
في نهاية اليوم، وهذا هو نوع من قصة سخيفة لأننا نقوم فقط هذا -
ولكن إذا لم أكن أعرف عن ذلك المشغل أو لم يسمح لي لتغييره في الرئيسي نفسه،
كيف يمكن تنفيذ كين أخرى أنا أكثر من هنا هذه المرة ليس لزيادة مكعب ولكن ل؟
كيف يمكنني تغيير هذا الشيء هنا؟ نعم.
[طالب] ممر في العاشر ثم يعود [غير مسموع] >> حسنا، جيد.
فلماذا لا أمرر في العاشر ومن ثم بدلا من إعادتها،
لماذا لا استطيع العودة فقط لا X + 1.
وقبل بضعة أشياء أكثر تضطر إلى تغيير هنا. أنا على الطريق الصحيح.
ماذا أحتاج لقرص؟ شخص آخر. نعم.
[رد الطالب غير مسموع]
ولست بحاجة لتغيير نوع عودة الزيادة لأنها ليست باطلة.
ويجري عاد الفراغ لا يعني شيئا، ولكن الآن بوضوح هو عليه،
ولذلك فإن هذا يحتاج إلى تغيير ل- >> [طالب] INT.
الباحث إلى أن تكون متسقة مع ما أنا العودة في الواقع.
الآن شيء آخر لا يزال عربات التي تجرها الدواب هنا. نعم.
[رد الطالب غير مسموع] >> [مالان] لذا أنا بحاجة لزيادة X؟
[رد الطالب غير مسموع] >> [مالان] آه، لذلك أنا بحاجة لتمرير X.
لذلك أنا بحاجة للقيام بذلك هنا. >> [تعليق الطالب غير مسموع]
[مالان] لذلك النموذج، لا بد لي من تغيير هذا الأمر هنا.
ولذلك فإن هذا يجب أن تصبح كثافة العمليات، وهذا يجب أن تصبح -
هم، أنا فعلا الشوائب إلى هنا. دعونا إصلاح هذه أول واحد.
ما ينبغي أن يكون هذا الواقع؟ انها حصلت على أن يكون الباحث شيئا.
يمكن أن يكون العاشر، ولكن بصراحة، إذا كنت بدء الدعوة كل المتغيرات X الخاص بك،
انها سوف تحصل على أقل وأقل واضحة ما هو الذي.
>> لذلك دعونا فقط اختيار تعسفي اصطلاح تسمية مختلفة لوظائف مساعد بلدي،
وظائف أنا أكتب. سنقوم نسميها، أو أننا يمكن أن نسميها -
دعنا نسميها العدد إلى أن تكون أكثر وضوحا.
حتى ذلك الحين لا بد لي من العودة مهما كان عدد زائد 1،
والآن لا بد لي من التغيير 1 الشيء الآخر هنا وشيء آخر هنا.
ما لا بد لي من تغيير على خط ال 21 الأولى؟ >> [استجابة الطالب غير مسموع]
[مالان] لا بد لي من إسناد ذلك إلى X. لا أستطيع أن مجرد دعوة الزيادة (العاشر).
ولست بحاجة لتذكر الإجابة عن طريق تغيير قيمة x على الجانب الأيمن.
وعلى الرغم من أن x هو الآن على اليسار واليمين، فلا بأس تماما
لأن يعدم الجانب الأيمن أولا ثم يحصل شيء ساقط في اليسرى -
س في هذه الحالة.
ثم أخيرا، وهذا هو حل سهل الآن.
يجب أن تتطابق هذه فقط ما هو في الأسفل، عدد الباحث.
حتى في مجمله مجموعة من التغييرات لوظيفة غبي حقا
لكن ممثل الأشياء التي سنقوم تريد على نحو متزايد للقيام به.
لذلك buggy4. لقد ثمل أنا في مكان ما.
أوه، يا إلهي. خمسة أخطاء في برنامج خط 6.
فما هو الخطأ في السطر 18، حرف 5؟
لذلك يجب أن يعلن هذا الباحث.
دعونا نرى. هناك مجموعة كاملة من أخطاء أخرى.
أوه، يا إلهي - 19 و 18 و 21 - ولكن مرة أخرى، دعونا مسح الشاشة فقط، L التحكم هنا،
ثم أعد تشغيل ضجيج.
حتى 5 مشاكل هو في الواقع مجرد أن 1.
حتى الآن دعونا تشغيل buggy4، أدخل. يا للعجب، لقد تم زيادة X بشكل صحيح.
حسنا. أي أسئلة حول كيفية زيادة الأرقام؟ نعم.
[سؤال الطالب غير مسموع] >> سؤال جيد.
كيف يتم ذلك فقط يمكنني تغيير x إلى عدد وهذا البرنامج سوف نعرف على الفور؟
>> مرة أخرى، التفكير في الأمر لأن هذا التجريد.
حتى لو كنت أم مين و كين هو طريقة، وبصراحة، لا يهمني ما يدعو باد كين له.
لا يهمني ما يسميه أي شيء له علاقة له من تنفيذ هذه الوظيفة.
هذا هو تفصيل تطبيق أنني، الرئيسي، لم يكن لديك ليهمك.
وذلك ببساطة تغيير ذلك باستمرار داخل وظيفة - عدد هنا وهنا عدد -
هي كل ما يلزم طالما أنا إعادة ترجمة.
انها نوع من مثل إذا كنت تعتقد كثيرة حول منا، تلك التي كنت مع رخص القيادة
دفعت منظمة الصحة العالمية أو إذا كنت قد دفعت حتى في السيارة،
معظمنا ليس لديهم فكرة عن كيفية سيارة تعمل تحت غطاء محرك السيارة.
وحرفيا، إذا كنت فتح غطاء محرك السيارة، ومعظمنا - وأنا منهم -
لن تعرف حقيقة ما نحن نبحث في،
نوع من مثل قد تشعر مع مثل هذه الاشياء في الوقت الحالي.
ولكن ليس لدينا حقا كيف لرعاية السيارة يعمل،
ليس لدينا لرعاية كل ما من قضبان والمكابس والكابلات داخل السيارة
يفعلون في الواقع.
شيء من هذا القبيل حتى ما تسمونه مكبس لا يهم هنا في هذه الحالة. نفس الفكرة.
نعم. >> [سؤال الطالب غير مسموع]
إذا كان هناك أكثر من استخدامات لحظة XA متغير قبل
لك، مبرمج، سوف تضطر إلى تغيير في كل مكان.
أو هل يمكن أن تفعل حرفيا ملف، قائمة، ثم البحث، استبدال - شيء من هذا القبيل -
ولكن كنت ستكون لدينا لجعل هذه التغييرات نفسك.
عليك أن تكون متسقة. >> [طالب] إذا كان هناك متغيرات متعددة (غير مسموع)
ترتيب معين مثل هنا، إذا كان هذا الباحث رقم آخر؟ >> [طالب] تصحيح.
[مالان] نعم. أجل يهم عند استدعاء الدالة.
>> وإذا كان الأمر كذلك كنت تدعو بشيء هنا مقدار فاصلة شيء،
هناك رسم الخرائط مباشرة.
يتم إجراء المتغير الأول، أيا كان اسمها، نسخة من الوسيطة الأولى أكثر من هنا.
آسف. هذا لا ينبغي أن يكون قوس.
خطوط الحجة الثانية مع ثانية واحدة. ذلك النظام، نعم، الأمور. حسنا.
آسف. أخذت شوطا طويلا للوصول إلى هناك. أسئلة أخرى؟ حسنا.
لذلك دعونا نرى ما اذا كنا لا يمكن رسم صورة لما يجري في الواقع على هنا
تحت غطاء محرك السيارة، إذا جاز التعبير.
هذا هو المستطيل الذي قد يمثل ذاكرة الكمبيوتر الخاص بك.
حتى لو كان لديك أي فكرة عن كيفية الذاكرة يعمل أو كيفية عمل RAM،
على الأقل نفترض أن لديك باقات من ذلك في هذه الأيام.
كنت قد حصلت ميغابايت من ذلك، كنت قد حصلت على غيغابايت من ذلك،
ونحن نعرف أن من الأسبوع 0 بايت هو فقط ما؟ >> [طالب] 8 بت.
8 بت، أليس كذلك؟ حتى 8 أصفار و 1.
إذا كان الأمر كذلك جهاز الكمبيوتر الخاص بك لديه أزعج من ذاكرة الوصول العشوائي، 2 العربات من ذاكرة الوصول العشوائي في هذه الأيام،
لديك مليار أو 2 مليار بايت من الذاكرة أو بت تقريبا 8000000000 أو 16 مليار
داخل جهاز الكمبيوتر الخاص بك.
على عكس المثال قليلا ويلي صوفي، انها ليست بعد الآن الجزيئات المغناطيسية عادة.
على نحو متزايد - على الأقل في أجهزة الكمبيوتر المحمولة - انها الأقراص الصلبة، محركات الأقراص الصلبة،
أن يكون مجرد عدم وجود أجزاء متحركة. كل شيء الإلكترونية. كل شيء الكهرباء مقرا لها.
أعتقد ذلك لأنها تمثل هذا المستطيل فقط 1 أو 2 غيغابايت من الذاكرة التي لديك.
>> لذلك فإن جزءا من الذاكرة.
العالم في علوم الحاسب الآلي ونوع من ينفصل
قطع من الذاكرة أن تفعل أشياء مختلفة.
على سبيل المثال، إذا كان هذا هو RAM جهاز الكمبيوتر الخاص بك، كما اقترح المستطيل هناك،
كما تبين أنه من خلال الاتفاقية، في الجزء العلوي من RAM الخاص بك، إذا جاز التعبير،
عموما ما يسمى قطعة النص.
تلك هي 0S و1S التي قمت المترجمة.
لذلك عندما بحثنا تحت غطاء محرك السيارة على ما هو a.out،
كل هذه 0S و1S، عند تشغيل البرنامج،
يتم تحميل تلك 0S و1S من محرك القرص الثابت إلى ما يسمى RAM،
وكنت في RAM وضعوا في الجزء العلوي.
وفي الوقت نفسه، لديك أشياء أخرى: تهيئة البيانات، إلغاء تهيئة البيانات.
تلك مساحات الذاكرة 2 من الرجوع إلى المتغيرات العالمية، والتي لا تستخدم في كثير من الأحيان
لكن في بعض الأحيان إذا قمت بذلك، أنهم في نهاية المطاف ما يصل هناك أيضا.
ثم هناك بعض الأشياء الأخرى: متغيرات البيئة، ونحن لن تنفق الكثير من الوقت على،
ولكن ثم 2 الأمور الهامة التي سوف تعود على مدار الفصل الدراسي،
كومة كومة و.
بحيث يتم محفوظة معظم ذاكرة الكمبيوتر الخاص بك عند تشغيل برنامج
لشيء يسمى المكدس وما يسمى كومة.
نحن لن نتحدث عن كومة اليوم، ولكننا سوف نتحدث عن المكدس.
والمقصود المكدس لتستحضر المرئي من صواني الطعام وجبة في قاعة البيت ماثر
أو في أي مكان كنت يحدث ليكون فيها الموظفين قاعة الطعام تنظيفها كل يوم،
أنها كومة لهم حتى من الكلمة على ما يصل،
وبالمثل، في الذاكرة، هناك فكرة وضع هذا شيء على كومة،
وضع شيء على كومة، ووضع شيء على كومة.
وماذا نعني بذلك؟
>> دعونا التكبير في أقل من نصف فقط من هذه الصورة، RAM جهاز الكمبيوتر الخاص بك،
اقتراح ما يلي.
تبين أنه عند تشغيل برنامج مثل a.out أو مرحبا -
أيا كان هذا البرنامج هو ان كنت قد كتبت -
مرة أخرى، يتم تحميل تلك 0S و1S من محرك القرص الثابت، والذي هو على المدى الطويل تخزين،
يبقى هناك حتى عند سحب القابس، تحميلها في ذاكرة الوصول العشوائي.
RAM أسرع من محركات الأقراص الصلبة - انها أصغر من محركات الأقراص الصلبة -
ولكن من حيث البرامج في الوقت الذي كنت تعيش تشغيلها.
حتى النقر المزدوج برنامج على نظام التشغيل Mac أو PC، انها تحميله من القرص الصلب إلى ذاكرة الوصول العشوائي.
بمجرد انها تحميل إلى RAM، أثناء التنقل و 0s 1s في أعلى الطريق،
الجزء نص يسمى، ولكن بعد ذلك في أقرب وقت بدء تشغيل البرنامج فعلا على التوالي،
يتم استدعاء الدالة الرئيسي، والرئيسي، كما رأينا، في كثير من الأحيان المتغيرات المحلية،
ولها رجات وخيوط وحرف وما شابه ذلك.
إذا كان الأمر كذلك البرنامج الذي كنت قد كتبت أو البرنامج الذي قمت بالنقر المزدوج
استخدام بعض المتغيرات داخل الرئيسي،
أنهم في نهاية المطاف في الجزء السفلي من الكدسة من الذاكرة، إذا جاز التعبير.
بشكل أكثر تحديدا، ماذا يعني هذا في الواقع؟
هذا يعني فقط أنه إذا نحن ذاهبون إلى عدد البايتات من ذاكرة الوصول العشوائي في جهاز الكمبيوتر الخاص بك،
تلاحظ أن هذا قد يكون عدد بايت 0، وهذا قد يكون عدد البايت 1، 2، 3، 4، 5، 6،
وعلى طول الطريق حتى إلى 2 مليار تكون كل وسيلة تصل هناك في الأعلى.
لذلك وبعبارة أخرى، عندما نتحدث عن الذاكرة RAM أو من حيث بايت،
بل يعني فقط أن شخصا ما قرر لعدد كل من هذه القطع من الذاكرة.
حتى عندما كنت في حاجة للحصول على 32 بت أو الباحث تحتاج ل8 بت شار،
حيث أنها لا ينتهي في الذاكرة؟
>> من الناحية النظرية، أنها فقط في نهاية المطاف في الجزء السفلي من هذا الشيء يسمى المكدس.
ولكن ما يثير الاهتمام هو عندما الرئيسي الآن يستدعي دالة -
لنفترض أن دالة يسمى فو، مجرد اسم عشوائية -
ما يحدث هو الرئيسي هو في الجزء السفلي من هذا كومة من الذاكرة؛
فو الآن يوضع على رأس الرئيسي في الذاكرة.
لذلك أي أن المتغيرات المحلية وفو في نهاية المطاف نوعا من المفهوم أعلاه في تلك الرئيسي.
إذا فو يدعو ظيفة أخرى تسمى نقابة المحامين، وهذه المتغيرات في نهاية المطاف هنا.
إذا حجب المكالمات شيء آخر، هنا، هنا، هنا.
فما هو المثير للاهتمام حول تشغيل برنامج هو أنه عند استدعاء وظائف
ولأن تلك المهام استدعاء وظائف وظائف الاتصال مثل تلك الوظائف،
يمكنك بناء هذا كومة من الوظائف في الذاكرة.
ومرة واحدة في ترجع الدالة هل البدء في الحصول على تلك الذاكرة الى الوراء.
حتى واحدة من أسهل الطرق لنفاد الذاكرة في برنامج كمبيوتر
هي كتابة الوظائف التي لن يعودوا أبدا.
هكذا على سبيل المثال، دعونا إظهار قدر مع برنامج عربات التي تجرها الدواب عمدا.
اسمحوا لي أن نمضي قدما ونفعل # تشمل ،
الباحث الرئيسي (الفراغ)،
وانا ذاهب الى القيام به في حين (2> 1)، والتي ربما لن تغير من أي وقت مضى علينا،
واسمحوا لي الآن المضي قدما والقيام printf.
في الواقع، وهذا سيكون أقل إثارة للاهتمام بصريا. دعونا نفعل هذا.
لكثافة العمليات ط = 0؛ ط> 0 - دعونا جعل هذا الخطأ - ط + +.
ودعونا لا printf هنا. دعونا ممارسة ما كنت الوعظ.
دعونا يكون لديك طريقة هنا، جوقة باطلة، وسوف نقوله كثافة العمليات ط،
ثم انا ذاهب الى القول printf - لا، دعونا نجعل هذا أكثر إثارة للاهتمام.
دعونا الواقع لا تتم طباعة أي شيء على الإطلاق. دعونا نفعل هذا فقط: جوقة (ط).
حسنا. لذلك هذا هو عربات التي تجرها الدواب لماذا؟
أنا جعل هذا الأمر وأنا أذهب لأن البرنامج لا يفعل اي شيء في الواقع من الاهتمام.
>> ولكن هذا ليس الهدف.
والهدف من ذلك هو كتابة برنامج تتمثل وظيفتها الرئيسية يفعل ما، على ما يبدو؟
الكلمة نفسها. وفعلا، نحن لسنا بحاجة الحلقة.
دعونا تبسيط حتى هذا فقط حتى لا يفقد البصر من الشوائب وحقا الأساسية.
مكالمات الرئيسية جوقة الغناء جوقة بعض،
ثم فعلت شيئا غبيا I، وكان لي جوقة جوقة الدعوة
لأن توليت شخص آخر كان على وشك تنفيذه ربما،
والآن هذا لن تجميع حتى الآن. يجب أن أفعل ماذا؟
أنا في حاجة إلى النموذج، تذكر.
لذلك أنا في حاجة الى هنا جوقة باطلة (كثافة العمليات ط)؛
حتى الآن إذا ذهبت إلى هنا - في الواقع، دعونا استخدام أكبر النافذة.
دعونا نمضي قدما وجعل جوقة.
استخدام معرف غير معروفة ط.
أوه، كان من الغباء. نحن لسنا بحاجة لحجة. دعونا فقط القيام بذلك.
وأتمنى أننا قد بدأت بهذه الطريقة. كان يمكن أن يكون أسهل بكثير برنامج الكتابة.
هناك. الآن دعونا نذهب الى بلدي نافذة طرفية، أعد تشغيل ضجيج، وتذهب هنا نحن.
كان ذلك بسرعة.
في الواقع ما حدث للتو، على الرغم من؟
حسنا، الآن سأضيف خط الطباعة حتى يمكننا أن نرى.
اسمحوا لي أن أقول printf ("أنا هنا في") - لا المتغيرات. سوف نترك هذا القبيل.
اسمحوا لي أن أعد بها. اسمحوا لي أن أعد جوقة.
و... هيا. الاستمرار.
بوصفها جانبا، لماذا لا تحطمت بعد؟
حدث خطأ تجزئة بسرعة فائقة من قبل.
[رد الطالب غير مسموع] >> بالضبط. لذلك يستغرق وقتا طويلا لطباعة، أليس كذلك؟
والامر لا يتطلب مزيد من العمل على الجزء الخاص بجهاز الكمبيوتر.
وهناك هو: خطأ الإنقسام.
>> لاحظت ذلك مدى سرعة تشغيل البرامج.
إذا كنت لا تطبع أي شيء، بسرعة فائقة.
لكن ليس لدينا ما زال هذا الخطأ تجزئة لأن ما كان يحدث؟
إذا كنت تفكر في الكيفية التي وضعت ذاكرة جهاز الكمبيوتر بها،
هذا يحدث ليكون الهدف الرئيسي، ولكن دعونا نطلق هنا فقط هذه الجوقة، ودعونا نطلق على هذا الكورس.
والآن إذا كنت تفعل جماليات حقي، وهذا هو مجرد الذهاب الى القول جوقة، جوقة، جوقة،
جوقة، جوقة، جوقة، جوقة، nauseum الإعلانية، وفي النهاية، ما الذي سيحدث؟
إذا كانت الصورة كبيرة، حرفيا، هو هذا، ما يحدث لمجرد المفهوم؟
وتجاوز كومة كومة.
أو ما هو أسوأ، أنت فقط تجاوز كل شيء، بما في ذلك الجزء النص،
وهو 0S و1S التي تمثل البرنامج.
باختصار، هذا هو مجرد فائقة، فائقة سيئة.
وتصاعدت البرنامج خارج نطاق السيطرة.
كنت تستخدم أكثر من وسيلة الذاكرة التي ترغب
كل ذلك بسبب خطأ غبي في هذه الحالة،
أو في هذه الحالة وظيفة عمدا جدا القيام به تطلق على نفسها.
الآن، هذه ليست كلها سيئة.
وظائف تطلق على نفسها قوة عظمى في الواقع عند استخدامه بشكل صحيح.
أنا لم تستخدم بشكل صحيح هنا.
لذلك هذا ليست كلها سيئة، ولكن الحقيقة أنني لم تتوقف أبدا عن الواقع يدعو نفسي
هو نقطة الضعف الأساسية هنا من هذا البرنامج.
فأين نحن ذاهبون مع كل هذا؟ ما يحدث حقا؟
عندما كنت استدعاء الدالة مثل الزيادة كنا نفعل في تلك الأمثلة،
لدي قيمة مثل 1 أن أمرر فيها
أمرر على نسخة من الرقم 1، لذلك يحدث ما يلي.
دعونا نذهب إلى الزيادة سبيل المثال، هذا الرجل حق أكثر من هنا.
هنا هو ما يحدث في الواقع.
عندما أعطي الكلمة الزيادة وأمرر في العاشر، بالصور، ما يجري هنا هو هذا.
>> إذا كان لدي قيمة من 1 المخزنة هنا وأدعو فعلا الزيادة،
التي تسمى الآن جوقة - تطلب الشركة هو رمي قبالة لي هنا.
دعونا نسمي هذا الزيادة، ونحن لا نعرف ما هذه الوظيفة القادمة ستكون.
ذلك ما يحدث في الواقع هو هنا في مكان ما في الرئيسية لدي قطعة من الذاكرة
التي يتم تخزين الرقم 1.
عندما أعطي الكلمة الزيادة، أنا باستخدام قطعة أخرى من الذاكرة،
ولكن الآن لدي نسخة من 1.
عندما كنت زيادة تلك القيمة، وهذا يصبح 2،
ولكن بعد ذلك ماذا يحدث في أقرب وقت عوائد الزيادة؟
هذه الذاكرة فقط يحصل على تسليم عودة إلى نظام التشغيل،
وهو ما يعني كل ما قمت به هو شيء مفيد.
ال 1 التي كانت واردة أصلا في الرئيسية لا يزال هناك في الواقع.
فأين نحن ذاهبون مع هذا؟
تبين أن في الذاكرة لديك هذا التسلسل عودة إلى الوراء وحدات البايت
أن يمكنك وضع الاشياء في، وتبين أن رأيناه بالفعل شيء
التي تنطوي على وضع الامور العودة إلى الوراء إلى العودة إلى الوراء.
ما هو جملة مبنية على أسبوع 1 والآن 2 أسبوع؟
انها مجرد مجموعة من الأحرف.
لذلك تبين تماما كما يمكنك وضع الأرقام في الذاكرة،
وبالمثل يمكن كنت وضعت الحروف في الذاكرة.
وبمجرد أن تبدأ الشخصيات وضع في الذاكرة العودة إلى الوراء إلى العودة إلى الوراء،
كما تبين أن استخدام أبسط الأشياء مثل لحلقة أو حلقة في حين،
يمكننا تكرار من اليسار إلى اليمين على الأحرف في سلسلة
وتبدأ تلفيق لهم إلى أحرف مختلفة تماما -
ويمكن أن تصبح ب، ج يمكن أن تصبح ب -
بحيث في نهاية المطاف، لا يمكننا اتخاذ جملة في اللغة الإنجليزية الذي يجعل الشعور فعلا
وتحويل كل من تلك الرسائل في وقت واحد
من خلال السير ذاكرة الكمبيوتر لدينا من اليسار إلى اليمين لتشفير الواقع.
لذلك دعونا نلقي دينا خمس دقائق استراحة هنا،
وعندما نعود، سوف نبدأ هذه العملية من الهرولة المعلومات.
>> حسنا.
قبل أن يغوص في بعض التشفير وهذه الأمور تسمى المصفوفات،
اسمحوا لي أن نتوقف لأية أسئلة لأنني أشعر أنني حقا نوع من مشوش
بعض من هذه المواضيع. لذلك دعونا الآن إصلاح إذا ما في وسعنا.
تحدثنا تحدثنا فقط عن قيم الإرجاع، عن الحجج،
وتحدثنا عن هذه الفكرة، التي سنعود إليها في الأسابيع القادمة،
عرض من الذاكرة كما في مجمله مجموعة من هذه الصواني مكدسة، إذا جاز التعبير،
من أسفل على ما يصل، مثل أن كل علبة أن يحصل على وضعه على كومة
يمثل دالة هذا ما يسمى حاليا.
أي أسئلة؟
اسمحوا لي أن أطرح سؤالا هنا.
اسمحوا لي أن تبسيط هذه العودة إلى ما كان عليه قبل بعض Q & A. لدينا في وقت سابق
إغلاق حقيقة أن لديه طريقة قوس فتح، وعدد الباحث، قوس -
ماذا تمثل عدد الباحث؟
[طالب] حجة. >> حجة. حسنا. ولكن ما هو حجة؟
[رد الطالب غير مسموع] >> ما هذا؟ >> [طالب] ما كنت تمر فيها
حسنا، لذلك ما كنت تمر فيها وبصورة أعم، انها مجرد الإدخال.
إذا كنت كتابة وظيفة والغرض أن وظيفة في الحياة
هو أن تفعل شيئا مختلفا قليلا في كل مرة كنت تستخدم ذلك،
ثم فإن السبيل الوحيد لذلك أن يحدث حقا ويبدو أن لتزويدها مدخلات
بحيث يمكن أن تفعل شيئا مختلفا مع هذا الإدخال في كل مرة.
>> لذلك تحتاج إلى تحديد أمرين عندما يأخذ وظيفة الإدخال.
تحتاج إلى تحديد الاسم الذي تريد أن تعطي لهذا المدخل
فقط لراحتك بحيث يمكنك الرجوع إليها
في الدالة التي قمت بكتابتها نفسك، كما فعلت هنا في السطر 32.
ولكن تحتاج أيضا إلى تحديد نوعه لC هي لغة برمجة
يتطلب فقط أنه إذا كنت تريد متغير، لديك لمعرفة ما هي البيانات الكمبيوتر نوع كان،
في جزء كبير منه بحيث يعرف كم عدد البتات على تخصيص لهذا المتغير
لأنه يمكن أن يكون 6 - آسف، لن يكون 6.
يمكن أن يكون 16، أنه يمكن أن يكون 8، يمكن أن يكون 32، حتى 64،
لكن الكمبيوتر يحتاج إلى معرفة.
الآن، والباحث في الجانب الأيسر يمثل ما، على النقيض من ذلك؟
[رد الطالب غير مسموع] >> ما هذا؟ >> [طالب] نوع الوظيفة.
نوع وظيفة وبشكل أكثر تحديدا، ونوع من انتاجها. الحق.
ذلك في حين أن الشيء بين قوسين تمثل مدخلاته، إن وجدت،
الشيء إلى اليسار يمثل انتاجها.
وفي هذه الحالة، يعود على ما يبدو طريقة الباحث،
وذلك هو نوع الباحث عودة هذه الوظيفة.
ماذا يعني ذلك للعودة؟
حرفيا، يمكنك استخدام الكلمة ومن ثم العودة إذا ما كنت تعود
إلى يمين الكلمة هو عدد صحيح،
ثم وهذا هو في الواقع متسقة مع ما وعدنا.
هل يمكن أن تفعل شيئا من هذا القبيل - مرحبا، العالم - لأن ذلك هو سلسلة.
>> ومن الواضح، أنه ليس صحيحا.
لذلك وباختصار، فإن العبء يقع علينا حقا، مبرمج، على أن تكون محددة
كما أن ما نقوم العودة إلى وثم انتقل فعلا عن إعادته.
سياق هنا الآن هو أن ذاكرة الكمبيوتر الخاص بك هو غيغا بايت، 2 غيغا بايت -
أيا كان - ربما هو أكثر من ذلك، وربما انها أقل،
لكن الكمبيوتر تعتبره وجود أقسام مختلفة.
شيء وتنخفض هناك، شيء آخر يذهب إلى هناك،
الاشياء المختلفة يذهب في الوسط، واليوم نبدأ فقط يحكي قصة،
ولكن سوف نعود إلى هذا الوقت انتهى.
في الوقت الراهن، سوى قطعة من الذاكرة ونحن نكترث هو جزء النص
لأن ذلك يمثل فقط و 0s 1s التي قد أنتج ضجيج.
لذلك عندما قمت بتشغيل الأمر على لوحة المفاتيح مثل a.out
أو النقر المزدوج على أيقونة OS ماك أو ويندوز،
يتم تحميل البرنامج من القرص الصلب الخاص بك في RAM
وانها ساقط ذلك في الجزء العلوي من جهاز الكمبيوتر الخاص بك RAM، إذا جاز التعبير.
وفي الوقت نفسه، ويبدأ تشغيل البرنامج ويحصل على استدعاء الرئيسية
في برنامج كتب لك أو كتب أو برنامج Microsoft أبل،
أي من المتغيرات المحلية الخاصة به في نهاية المطاف الى هناك في الجزء السفلي من ذاكرة الكمبيوتر الخاص بك.
ولكن إذا المكالمات الرئيسي وظيفة أخرى أن المتغيرات نفسها أو الحجج، أنهم في نهاية المطاف فوقه.
وإذا كان ذلك وظيفة يدعو شيء، أنهم في نهاية المطاف فوقه، وقبل ذلك، فوقه.
>> ومرة واحدة فقط ويتم تنفيذ وظيفة لا كومة من الأدراج، إذا جاز التعبير،
تبدأ في الحصول على أقل وأقل.
وهذا ما ثم، باختصار، ما يفسر لماذا عند استدعاء مكعب
أو استدعاء الزيادة، وأنت تمر على نسخة من القيمة.
وماذا يعني ذلك بالصور هو أن كنت تكتب حرفيا الرقم 1
في جزء آخر من الذاكرة، وتغيير أن 1 إلى 2 في حالة الزيادة
أو إلى 8 في حالة المكعب ثم رمي بعيدا تلك الذاكرة
بمجرد أن الزيادة ترجع الدالة أو المكعب. السؤال.
[طالب] المكان الذي تخزن المتغيرات العالمية؟
يتم تخزين المتغيرات العالمية في ما يسمى حاليا تهيئة البيانات أو البيانات غير مهيأ،
الفرق يكون إذا كان لديك متغير عمومي وتعيين على الفور قيمة
مع علامة يساوي، فإنه ينتهي في الجزء العلوي هناك،
وإذا كنت أقول X الباحث، مع أية قيمة، فإنه ينتهي انخفاض طفيف في RAM
ببساطة عن طريق الاتفاقية.
أسئلة أخرى؟ حسنا.
لذلك سوف يعود هذه الصورة كلما تقدمنا ​​أكثر قوة
مع ما يمكننا القيام به مع جهاز الكمبيوتر،
لكن في الوقت الراهن، دعونا لها مقدمة قصيرة لالترميز،
نوع معين من التشفير التي لا تحل كل المشاكل في العالم
ولكن لا حل بعض منها.
في هذه الحالة هنا، لدينا ما يسمى الترميز بالمفتاح السري.
سر مفتاح التشفير، وكما يوحي اسمها، تستمد أمنها من السرية.
>> على سبيل المثال، إذا كنت قد عادوا إلى المدارس الابتدائية وكنت تمرير رسالة حب سرية قليلا
إن كان صبيا أو فتاة كنت على سحق، إذا أردت لتمرير تلك المذكرة من خلال الجمهور،
كنت على الارجح لن كتابة مثل مذكرة باللغة الإنجليزية أو أيا كان لغتك الأم هي.
بدلا من ذلك، قد تشفيرها أو قد ترسل فقط لهم رسالة نصية في هذه الأيام.
ولكن قد تمر فعلا لهم مذكرة في جميع أنحاء الفصول الدراسية.
والقيام بذلك بشكل آمن في مثل هذه الطريقة التي أصدقائك والمعلم
لا أعرف ما كنت تكتب، قد تأتي مع خوارزمية بسيطة إلى حد ما،
الشباب لو كنت قد يكون، فقط لتغيير معالم الكلمات.
وذلك بدلا من كتابة قد تكتب ب،
بدلا من أن تكتب ب قد ج،
بدلا من أن تكتب ج د قد، وهكذا دواليك.
أو هل يمكن أن توصل إلى ترجمة أكثر تطورا
من الرسائل إلى رسائل مختلفة.
لكن الصيد هو الصبي أو الفتاة الذين كنت ترسل هذه المذكرة
يحتاج إلى معرفة شيء ما، وهو ما، من الواضح؟ >> [طالب] ما كنت الإرسال.
ما هو السر الخاصة بك، مثل ما هو رسم الخرائط التي بين وللب ج وعلى وق ديفوار.
هل هو مجرد إضافة 1 إلى كل من الرسائل للذهاب من أ إلى ب، ج ب ل؟
هل هو أكثر تعقيدا من ذلك؟
>> لذلك أنت وسحق الخاص في حاجة الى هذه المعلومات سرية،
ولكن هناك نوع من الصيد 22-هنا.
إذا كانت هذه هي المرة الأولى التي تقوم بإرسال هذه الرسالة من خلال الطبقة الحب،
كيف ذلك الصبي أو الفتاة أن تعرف ما يجري في السر هو حتى؟
حتى مفتاح التشفير السري لا يحل جميع المشاكل في العالم،
وهناك في الواقع علاقة هنا أننا سوف نعود إلى نحو نهاية الفصل الدراسي ل.
وبالمثل لا معظمنا لا يعرف أحد ما الذي يعمل، على سبيل المثال، في Amazon.com،
وحتى الآن قد اشترى الكثير منا ربما الاشياء في Amazon.com،
ولقد تعلمنا أن نفترض أن هذه المعاملات والتجارة الإلكترونية آمنة.
وربما يقول URL HTTPS، وهناك ربما سخيفة رمز القفل قليلا في مكان ما،
هناك نوع من الترميز تأمين معلومات بطاقتك الائتمانية
بينك و Amazon.com.
وبعد ما اذا كانت تنطوي على الترميز معرفة بعض السرية
وحتى الآن لا أعرف أي شخص في الأمازون ولقد رتبت بالتأكيد ليس أي نوع من السرية
مع شخص في الأمازون، وكيف هو جهاز الكمبيوتر الخاص بي أو متصفحي القيام بذلك؟
كما تبين أن هناك أنواع أخرى من الترميز تماما أن حل هذه المشكلة.
ولكن لهذا اليوم، سوف نركز على واحد بسيط
حيث يمكنك ترتيب مقدما لمعرفة بعض السرية
مثل +1 أو بعض الخرائط بين لوب.
وعملية الترميز عموما ينطوي هذا.
لديك بعض النص العادي، يصور هنا في اليسار،
تشغيل من خلال نوع من خوارزمية تشفير أو إجراءات ذلك -
ربما هذا مجرد يصبح ب، ج ب يصبح -
ومن ثم ينتهي بك الأمر مع النص المشفر.
وفي الوقت نفسه، مرة واحدة سحق الخاص يتلقى هذه المذكرة السرية،
هو أو هي يجب أن ثم فك تشفيرها بواسطة خوارزمية عموما عكس ذلك
وذلك للحصول على دعم النص العادي.
هناك التجسيد المادي لهذا.
>> على سبيل المثال، وهذا هو السر الصغير فك الطوق،
وهذا هو خاتم بمعنى أن هناك وهما بطلب هنا.
على هامش خارج هذا الشيء، وهناك رسائل من A إلى Z،
على الرغم من انهم في ترتيب عشوائي،
وعلى الداخل، وهناك في الواقع بعض الأرقام
بحيث مع هذه العصابة يمكنك تحويل نوع من الخارج ولكن ليس داخل
من أجل اصطفاف الأرقام مع الحروف.
من فيلم يحمل اسم قصة عيد الميلاد، سترى أن قليلا Ralphie
كان متحمسا جدا لمعرفة ما هي الرسالة يتل آني اليتيم السرية كان له
تم إبلاغ ذلك، أعتقد، في شكل رسائل رقمية على مربع الحبوب
وكان عليك أن تتراكم كل الأوراق الصغيرة التي جاءت في مربع الحبوب،
هل كان لديك كان لديك إلى البريد لهم في، لاستعادة خاتم يحل الشفرات
بحيث يمكنك معرفة ما أخيرا تعيين ما بين الحروف والأرقام
أو رسائل وخطابات.
كيف يمكن في كمبيوتر نحن نسير في تنفيذ أو تمثيل الأشياء مثل هذا؟
نحن بحاجة إلى وسيلة للتعبير عن أنفسنا قليلا أكثر مرونة
من المتغيرات لدينا حتى الآن سمحت.
لدينا رجات، لقد كان حرف، لقد كان يطفو والزوجي وعدد قليل من الآخرين،
ولكن تلك هي قطع من الذاكرة الفردية التي لا تسمح لنا حقا في التعبير عن الأشياء
مثل الكلمات والجمل والعبارات.
في الواقع، لقد دعونا هذه الأشياء السلاسل،
ولكن نعد أن هذا هو حقا مجرد تبسيط في مكتبة CS50
أننا تنوي قشر الظهر.
وذلك دعونا نبدأ على القيام بذلك هنا.
اسمحوا لي أن تمضي قدما وفتح ملف -
كل هذه الملفات متوفرة، كما جرت العادة، على شبكة الإنترنت - array.c يسمى
من أجل حل مشكلة لا علاقة لها سلاسل ولكن هذا يرسم صورة هنا
كيف يمكننا استخدام ما يسمى صفيف.
>> مجموعة هو نوع البيانات.
انها نوع من أنواع متغير من لديه عدة أنواع أصغر البيانات داخل منه
العودة إلى الوراء إلى العودة إلى الوراء.
هكذا على سبيل المثال، إذا أردنا كتابة برنامج القليل الذي يمنحك المتوسط ​​الذي حددته مسابقة
لدورة مثل ال 50 التي يوجد 2 مسابقات،
هل يمكن بسهولة جدا اكتب هذا البرنامج يعتمد حتى على بعض المواد الأسبوع الماضي
باستخدام GetInt واثنين من المتغيرات: الباحث quiz1، وكثافة العمليات quiz2.
وانها جميلة واضحة.
انها ربما 10، 20 خطوط الحد الأقصى رمز لتنفيذ برنامج
أن يطلب من المستخدم لعشرات مسابقة 2 ثم يحسب متوسطها
بإضافة بعضهم البعض، وتقسيم بنسبة 2، ومن ثم طباعة النتائج.
ربما يمكن أن نفعل ذلك بسهولة جدا الآن بعد بعض عدد الدقائق.
ولكن المشكلة هي أن نفترض أن 50 مسابقات زيارتها 3 أو 4.
افترض أنك تريد استخدام نفس البرنامج لفئة الأسبوعية التي كان المسابقات.
التفكير في الفئة التي والمسابقات الأسبوعية.
إذا كان هناك 16 أو حتى أسابيع في الفصل الدراسي، والآن لديك 16 المتغيرات:
الباحث quiz1، وكثافة العمليات quiz2، وكثافة العمليات quiz3، وكثافة العمليات quiz4.
بمجرد البدء في رؤية هذا التكرار، وهذا النسخ واللصق من التعليمات البرمجية،
وينبغي أن تبدأ لجعل لكم أتمنى كان هناك طريقة أفضل.
ولله الحمد، وذلك بسبب صفائف هناك. لذلك دعونا نفعل ذلك.
أولا، اسمحوا لي أن أعرض شيء بسيط جدا أن لدينا لا تستخدم حتى الآن،
ولكن سترى من حين لآخر في التعليمات البرمجية.
>> هذا هو ما يسمى عموما ثابت.
لذلك فمن ثابت، بمعنى أن هذه القيمة لم تتغير.
اتفاقية الإنسان عند إنشاء ثابت
هو استخدام جميع حروف فقط حتى أنه يقف حقا في التعليمات البرمجية،
والكلمة الخاصة التي تستخدمها في C # تعريف و.
ولذلك نقول # تعريف، ثم مسافة، ثم الكلمة التي تريد استخدامها لاسم ثابت في
ثم قيمة ثابتة.
تلاحظ هذا يختلف عن تعيين شيء إلى متغير.
ليس هناك علامة التساوي، وليس هناك فاصلة منقوطة.
هذا هو ما يعرف عموما بأنه توجيه المعالج،
ولكن أكثر في الوقت المحدد آخر ذلك.
في الوقت الراهن، وهذا يخلق قيمة ثابتة تسمى مسابقات المنتدى
القيمة الفعلية التي رقمية هو 2.
في أي مكان حتى ترى مسابقات، مسابقات، مسابقات في جميع أنحاء هذا الملف،
هذا مجرد رقم 2.
إذا كنت تبحث في الرئيسية الآن، دعونا نرى كيف يعمل هذا.
لأول مرة يبدو قليلا خفي، ولكن من جميع الاشياء من الأسبوع 1.
تطلب من المستخدم للصفوف. كيف نفعل ذلك؟
في السطر 22 - وهذا هو حقا الجزء العصير - أعلن عدد عشري
ولكن ليس مجرد تعويم واحدة. أنا يعلن، بدلا من ذلك، مجموعة من القيم الفاصلة العائمة.
هذا المتغير سوف يتم استدعاؤها الدرجات، وضمنا هنا،
لكن قطعة فقط من جملة الجديدة ثم هذه الأقواس المربعة.
حقيقة أن قلت الدرجات تعويم ثم قوس فتح ثم رقم أ -
تلاحظ ما إذا كان هذا هو ثابت هذا هو تماما مثل فعلنا هذا -
هذا يعني، "يا الكمبيوتر، وإعطاء لي 2 العائمة ودعونا ندعو بشكل جماعي الدرجات."
>> هذا هو على النقيض من عملية شاقة أكثر من هذا القبيل: تعويم grade1؛
تطفو grade2، وهكذا دواليك.
حتى مجموعة يسمح لنا لتنفيذ هذه الفكرة ولكن أقل بكثير بقذارة،
في مثل هذه الطريقة التي يمكننا الكتابة 1 خط من التعليمات البرمجية بدلا من، يقول، 16 لمدة فصل دراسي لمدة 16 أسبوعا.
لم أكن أريد أن يصعب الكود 2 لأنه إذا كنت تفكر في هذا الآن منطقيا،
لنفترض العام المقبل CS50 التغييرات إلى 3 مسابقات بدلا
كان لي وكان لي هنا رقم 2، ورقم 2 هنا،
كان لي هنا رقم 2، ورقم 2 هنا.
يصبح مملا جدا وسهلة جدا لالمسمار
وتغيير بطريق الخطأ 1 القيمة إلى 3 وفقدان بعض قيمة أخرى من 2.
لذلك أنا ذاهب الى مجردة بعيدا وهذا بدلا استخدام هذا الثابت أنه،
كما يوحي اسمها، لم يتغير.
والآن لا يهم ما إذا لدينا مختلف المسابقات هذا العام أو العام المقبل،
أنا فقط يجب أن تغييره في مكان واحد هنا في الأعلى.
ذلك أن كل ثابت هو.
وفي الوقت نفسه، ميزة مفاهيمي جديد هو أن من صفيف.
لذلك بين قوسين معقوفين تعطيني هذه العوامات كثيرة ويتيح لي الاتصال بشكل جماعي الدرجات هنا.
حتى الآن دعونا نرى ما انا ذاهب الى القيام به.
هنا في السطر 24 هو بداية لحلقة.
>> هذا هو حقا يتوهم شيئا. انها فقط باستخدام مسابقات بدلا من رقم الثابت تلوينها.
ولكن لا يوجد شيء مختلف فكريا هناك من الأسبوع الماضي.
هذا هو printf فقط، لذلك printf ("# مسابقة د٪ من٪ د:")
لأنني أريد فقط أن تعطيني طباعة مسابقة رقم 1 من 2 ثم 2 من 2.
لذلك هذا هو الشيء جمالية بحتة.
ولكن الجزء المثير للاهتمام هو الآن في خط 27.
من أجل سد في واحدة من العناصر النائبة اثنين مع قيمة نقطة عائمة،
استخدام الأقواس المربعة مرة أخرى.
في هذه الحالة، أنا باستخدام ط لأن هذا لحلقة بدأت مع أنا ما يعادل قيمة، على ما يبدو؟
[طالب] 0. >> [مالان] 0.
إلى ذلك التكرار الأول من هذه الحلقة، كما هي على الرغم من أنني كتبت هذا في التعليمات البرمجية،
ولكن على التكرار الثاني من هذه الحلقة، كما هي على الرغم من أنني كتبت هذا في قانون بلدي.
ولكن الحقيقة أن أنا باستخدام متغير على ما يرام لأنه، وكما يوحي اسمها،
انها متفاوتة القيمة على كل التكرار،
لذلك أنا ملء هذه المجموعة بقعة واحدة في كل مرة.
ماذا تبدو مثل هذه المجموعة؟
السبب وجهت المستطيل سوبر بسيطة على الشاشة هنا كان قبل لهذا السبب.
مجموعة هو مجرد جزء من الذاكرة يليه آخر قطعة من الذاكرة
يليه آخر قطعة من الذاكرة وهكذا دواليك.
إذا كان الأمر كذلك مجموعة من بلدي هو حجم 2 في هذه الحالة هنا، وأود أن كل ما تقوم به
عن طريق الكتابة في عشرات مسابقة بلادي هنا - حصلت 100 على هذا واحد وبعد ذلك حصلت على 99 على هذا واحد -
قد لا ثم هذه الذاكرة حتى أن تستخدم لأنني طلبت الكمبيوتر فقط
لمجموعة من حجم 2.
تلك الساحات لا تزال هناك، أليس كذلك؟
لا يزال لديك 2 غيغابايت من ذاكرة الوصول العشوائي حتى لو كنت طالبا فقط لمدة 2 يطفو.
وبالتالي فإن الفكرة وراء صفائف هو أن الكمبيوتر لا يستغرق سوى قطعة من الذاكرة
ويقسم أجزاء أصغر ثم العودة إلى الوراء إلى العودة إلى الوراء.
وهكذا هذا كل مجموعة هو.
>> انها قطعة متجاورة من الذاكرة داخل منه يمكنك وضع الأشياء.
هذا يحدث لثم القيام ببعض العمليات الحسابية فقط مملة.
إذا كنت انتقل لأسفل هنا، وهذا هو المكان الذي أعاد ثم أكثر من الصفيف.
I الخروج مع الجمع من كافة القيم في الصفيف،
وبعد ذلك استخدم الدالة هنا لجولة فعلا المبلغ مقسوما مسابقات.
ولكن اسمحوا لي أن موجة يدي في ذلك النوع من الحسابات ويكفي في الوقت الراهن.
ولكن كل ذلك يفعل بالنسبة لي في نهاية المطاف يتم حساب متوسط.
لذلك الاختبار الأول بالإضافة إلى مسابقة 2 مقسوما على 2 والطباعة بعد ذلك من الباحث باعتبارها.
ولكن دعونا الآن الانتقال إلى مثال آخر يسمى string1،
الذي يرسم صورة مماثلة ولكن باستخدام السلاسل.
اسمحوا لي أن تمضي قدما وتبسيط هذه لحظة فقط.
يغفر المسافة البادئة في الوقت الراهن.
إشعار في خط 19 من هذا المثال، يمكنني الحصول على سلسلة من المستخدم.
ولكن لاحظ ما أفعله المقبل في خطوط 22 فصاعدا.
أنا في الواقع بالتكرار من أنا حتى - وهذا هو خدعة جديدة - التوابع strlen طول السلسلة.
هذه هي وظيفة الذي يأتي مع C أنه إذا كنت تمر عليه سلسلة،
فإنه يخبرك كم عدد الأحرف في هذه السلسلة. هذا كل شيء.
وحقيقة أنه من التوابع strlen بدلا من طول السلسلة لمجرد أنها أكثر دقة في التعبير.
قبل ثلاثين عاما، يحب الناس أن يكتب الأشياء كما بإيجاز قدر الإمكان،
حتى لقد أبقينا تلك الاتفاقية هنا.
ط + + يعني فقط زيادة في كل تكرار ط.
وتلاحظ الآن هذه، والتي هي مثيرة للاهتمام حقا.
في خط 24، وأقول، "الكمبيوتر، أعطني حرف، 8 بت، والذي يطلق عليه C".
ولكن ما هو هذا على الجانب الأيمن تقول؟
في اللغة الإنجليزية، ماذا تمثل؟
[طالب] الحرف الأول في الصفيف.
بالضبط. أعطني الحرف الأول في الصفيف.
أو، بشكل أعم، أعطني الطابع إيث في الصفيف.
وندرك أنه من المهم الآن أن وعلماء الكمبيوتر،
نحن في الواقع العد من 0.
>> لم يكن لديك السلطة التقديرية الآن أن تبدأ في فعل ذلك.
الآن عليك أن تتصرف وفقا للتوقعات للكمبيوتر والاعتماد من 0
لأن [0] سوف يكون الحرف الأول في السلسلة،
[1] ستكون الثانية، [2] ستكون ثالث، وهكذا دواليك.
لذلك هذا البرنامج، إذا كنت ترجمة عليه، وهذا هو مرة أخرى string1، لذلك string1،
والآن لقد كنت string1 تشغيل في إطار المحطة الطرفية بلدي.
انها تنتظر الإدخال، لذلك أنا ذاهب لكتابة ديفيد، أدخل،
والآن فإنه يطبع كل شيء على ديفيد خطوط مختلفة لإشعار ما أفعله.
أنا طباعة حرف واحد في كل مرة.
ونحن لن أخوض في التفاصيل على هذا اليوم، ولكن أنا حذفت قبل لحظة الاختيار هذه هنا.
تبين أنه إذا كان المستخدم الفاسقة،، الخصومة، أو الخلط فقط
يمكنك تفشل في الواقع لإعطاء سلسلة من بعض الطول.
إذا كنت أصاب مفتاح خاطئ على لوحة المفاتيح، قد لا تعطي سلسلة على الإطلاق،
أو إذا كنت الخبيثة، قد حاولت لصق تستحق في لوحات GIGABYTE الرئيسية من مقال
لملء هذه السلسلة، وإذا كان الكمبيوتر نفدت الذاكرة،
تبين أن ونحن في طريقنا للحصول على هذه القيمة مرة أخرى خاصة تسمى NULL.
حتى الآن، أعرف فقط أن هناك قيمة خاصة تسمى هذه NULL
وسوف تسمح لنا للتحقق عندما نكون خارج الذاكرة، من بين أمور أخرى.
ولكن إذا كنت تفتح الآن string2، لاحظ فارق واحد هنا.
تلاحظ واحد مع الفرق هنا string2.
مع string2، وهذا هو لحلقة مختلفة قليلا.
>> اسمحوا لي أن حذف بالقيم الفارغة حتى نتمكن من الحديث عن تلك وقت آخر.
ما هو مختلف عن لحلقة هذا الوقت؟
يمكن أعود إلى المثال السابق.
بحيث هذا الإصدار 2، وهذا هو الإصدار 1. 1، 2.
1، 2.
الدعوة التوابع strlen هو أين؟
انها في الجزء الأول من حلقة ل.
أي أفكار لماذا أنا أفعل ذلك؟ نعم.
[طالب] لذلك أنت لا استدعاء الدالة في كل مرة واحدة.
[مالان] لذلك نحن لا استدعاء الدالة في كل مرة واحدة. بالضبط.
أذكر من الحلقات لانهم بسيطة السوبر
بمجرد نوع من فهم أن هذه هي التهيئة، حالة، والتحديث.
المشكلة هي أن حالة يحدث في كل التكرار من الحلقة.
وحتى في هذا المثال هنا، ما هو سيئ عن حقيقة أن هذا هو وضعي؟
[طالب] كنت تتصل التوابع strlen.
[مالان] كنت تتصل التوابع strlen مرارا وتكرارا وتكرارا.
ولكن بمجرد لقد كتبته في ديفيد، وطول هذه السلسلة هي 5،
وانها لن تتغير على كل التكرار من الحلقة
لأن السلسلة لا يزال D-A-V-I-د.
لذلك هذا هو تلميح على ما يحدث لتصبح فكرة ذات أهمية متزايدة
المعروف باسم قرار تصميم فقط حيث لا تجعل جهاز الكمبيوتر القيام بعمل لا لزوم لها.
>> كما معاينة التسلل من pset2، pset2 في الإصدار القياسي
سوف تحد لكم لتنفيذ عدد من الواقع بعض الاصفار،
بعض خوارزميات التشفير عدد، بحيث يمكنك على حد سواء تشفير
وفك تشفير رسائل سرية مثل الكثير من Ralphie 1 فك الشفرة هناك.
في طبعة من القراصنة pset2، ونحن في طريقنا للذهاب أبعد قليلا.
ونحن في طريقنا لتسليم لكم ملف من نظام الكمبيوتر الفعلي
الذي يحتوي على مجموعة كاملة من أسماء المستخدمين وكلمات السر المشفرة الفعلية،
والتحدي الذي يواجه القراصنة الطبعة ستكون للقضاء تلك كلمات السر
ومعرفة ما الترميز أو ما سر واستخدامها لتوليد كلمات السر تلك في الواقع.
ونحن في طريقنا للقيام بذلك عن طريق استخدام ميزة جديدة من هنا C
أن سأعطيك مجرد عرض للتعرف باسم وسائط سطر الأوامر.
كما تبين، كما البعض منكم قد شهدت في القسم أو في الكتب المدرسية،
الرئيسية ليس لديها دائما أن يكون الفراغ بين قوسين.
تبين أنه يمكن أيضا أن تكون مكتوبة الرئيسي من هذا القبيل، مع اثنين من الحجج،
argc argv و، حيث argc هو عدد الكلمات
أن تكتب بعد اسم البرنامج على سطر الأوامر الخاص بك
وargv هو عبارة الفعلية.
وكما تشير الأقواس المربعة هناك، على ما يبدو argv صفيف.
انها سوف تكون سلسلة بعد سلسلة بعد سلسلة في الذاكرة.
>> فما نحن في طريقنا لتكون قادرة على القيام بدءا pset 2 هو شيء من هذا القبيل.
إذا قمت بعمل argv1، الذي هو مثال سنعود إلى يوم الاثنين، وتشغيله،
لاحظت أنه لا يبدو أن تفعل أي شيء حتى الآن.
فإنه يطبع للتو باسمه.
ولكن إذا قلت وداعا الطبقة، لاحظ أن هذا البرنامج يبدو بالتكرار
على كل من الكلمات التي تم كتابتها في موجه.
والوسيلة التي سوف وصول إلى الكلمات التي قام المستخدم بكتابتها في موجه
هو من خلال تغيير الرئيسية بدءا من نهاية هذا الأسبوع الباحث الرئيسي (الفراغ) إلى الباحث الرئيسي (argc، argv)
وسوف تكون ولدت هكذا وسائط سطر الأوامر.
وبمجرد الحصول متطورة حقا في هذا، عليك أن تكون قادرا على كتابة برامج trippy حقا
مثل هذا واحد هنا، والتي يذهب يتجاوز
بعض وظائف فعلناه حتى الآن ولكن كل قوية جدا.
>> وهكذا لن نترك هذا مع هذا على الشاشة، وسوف نرى لك يوم الاثنين.
>> [CS50.TV]