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