[موسيقى] ديفيد جيه مالان: حسنا. هذا هو CS50 وهذا هي بداية الأسبوع 2. وعليك أن تتذكر أن أكثر من في الأسبوعين الماضيين، لقد تم إدخال الكمبيوتر العلم وبدوره، البرمجة. وبدأنا القصة عن طريق الصفر، تلك اللغة الرسومية من مختبر وسائل الإعلام معهد ماساتشوستس للتكنولوجيا. ثم آخرها، في الأسبوع الماضي، لم نحن إدخال higher-- ل لغة ذات مستوى أقل معروفة كما C، شيء أن يكون نصية بحتة. وبالفعل، آخر مرة نحن استكشاف ضمن هذا السياق عدد من المفاهيم. هذا، أذكر، كان جدا البرنامج الأول ونحن ننظر في. وهذا البرنامج، بكل بساطة، بطباعة "مرحبا، العالم". ولكن هناك الكثير يبدو السحر مستمرة. هناك هذا # تشمل مع هذه الأقواس. هناك كثافة العمليات. هناك (الفراغ). هناك أقواس، الأقواس المعقوفة، شبه كولون، وأكثر من ذلك بكثير. وهكذا، أذكر أن قدمنا ​​خدش حتى نتمكن، من الناحية المثالية، انظر الماضي ذلك التركيب، والاشياء التي في الحقيقة لا كل ما فكريا مثيرة للاهتمام ولكن في وقت مبكر يوم هو، على الاطلاق، صعبة بعض الشيء للالتفاف حول عقلك. و، في الواقع، واحدة من الاكثر شيوعا أشياء في وقت مبكر من فئة البرمجة، خصوصا بالنسبة لأولئك أقل مريحة، هو الحصول على بالاحباط بسبب وتعثرت من قبل نحوي معين الأخطاء، ناهيك عن الأخطاء المنطقية. وهكذا بين أهدافنا اليوم، في الواقع، سوف يكون لتجهيز لكم مع بعض تقنيات حل المشاكل لكيفية حل أفضل المشاكل أنفسهم في شكل التصحيح. وسوف أذكر أيضا أن البيئة التي قدمنا ودعا آخر مرة CS50 IDE. هذا هو برنامج على شبكة الإنترنت أن يسمح لك البرنامج في السحابة، إذا جاز التعبير، مع الاحتفاظ بكل بك ملفات معا، وهذا ما سنقوم مرة أخرى اليوم. وأذكر أننا إعادة النظر في هذه المواضيع هنا، من بينها وظائف، والحلقات، و المتغيرات، والتعبيرات المنطقية، والشروط. وفعلا عدد قليل من أكثر أننا ترجم من عالم خدش في عالم C. ولكن المبنى الأساسي كتل، إذا جاز التعبير، كانت لا تزال في الحقيقة نفس الأسبوع الماضي. في الواقع، ونحن في الحقيقة مجرد لديها آخر قطعة اللغز، اذا صح التعبير. بدلا من أن الأرجواني حفظ الكتلة، ونحن بدلا من ذلك قد printf، الذي هو هذه وظيفة في C التي يسمح لك لطباعة شيء وتهيئته على الشاشة. قدمنا ​​CS50 المكتبة، حيث كنت لدينا الآن في get_char تصرفكم، وget_int، وget_string، وعدد قليل من الوظائف الأخرى كذلك، عبر التي يمكن أن تحصل المدخلات من لوحة المفاتيح المستخدم الخاصة. واتخذنا أيضا نظرة على الأشياء مثل these- منطقي، وشار، ومزدوجة، تطفو، كثافة العمليات، سلسلة long_long. وهناك حتى أنواع البيانات الأخرى في C. وبعبارة أخرى، عندما تقوم بتعريف متغير لتخزين بعض القيمة، أو عند تنفيذ وظيفة وترجع بعض القيمة، يمكنك تحديد ما نوع من قيمة. أنها ليست سلسلة، مثل تسلسل الأحرف؟ هو رقم، مثل عدد صحيح؟ هل هي النقطة العائمة قيمة، أو ما شابه ذلك؟ وذلك في C، على عكس خدش، ونحن في الواقع بدأ لتحديد أي نوع من البيانات كنا عائدين أو استخدام. ولكن، بطبيعة الحال، ركضنا أيضا إلى بعض القيود الأساسية للحوسبة. وعلى وجه الخصوص، هذه لغة C، استدعاء أن أخذنا نظرة على تجاوز عدد صحيح، واقع اذا كانت لديك فقط كمية محدودة من الذاكرة أو، على وجه التحديد، وعدد محدود البتات، يمكنك الاعتماد فقط عالية جدا. وحتى ونحن ننظر في هذا المثال هنا حيث عداد في طائرة،، في الواقع، إذا تشغيلها لفترة طويلة بما فيه الكفاية أن تجاوز، ويؤدي إلى البرمجيات خطأ محتمل المادي الفعلي. بحثنا أيضا في عائم نقطة عدم الدقة، فإن الواقع هذا مع وجود عدد محدود البتات، سواء كان 32 أو 64، يمكنك فقط تحديد أعداد كثيرة جدا بعد العلامة العشرية، وبعد ذلك كنت تبدأ في الحصول على غير دقيقة. هكذا على سبيل المثال، وثلث في العالم هنا، في عالمنا الإنساني، ما نعرفه هو مجرد عدد لا حصر له من 3S بعد العلامة العشرية. ولكن جهاز الكمبيوتر لا يمكن بالضرورة تمثل عدد لانهائي من الأرقام إذا كنت لا تسمح له بعض كمية محدودة من المعلومات. وذلك ليس فقط أننا لم تجهيز لكم سلطة أكبر من حيث عن الكيفية التي قد تعبر عن نفسك في لوحة مفاتيح من حيث البرمجة، نحن أيضا محدودة ما يمكنك القيام به في الواقع. وبالفعل، والبق والأخطاء يمكن تنشأ عن هذه الأنواع من القضايا. والواقع، بين الموضوعات اليوم ستكون موضوعات مثل التصحيح وفعلا تبحث تحت غطاء محرك السيارة في كيف تم إدخال أشياء في الأسبوع الماضي تنفذ في الواقع حتى يتسنى لك أفضل فهم كل من قدرات و القيود المفروضة على لغة مثل C. في واقع الأمر، فإننا سوف قشر العودة طبقات من أبسط هياكل البيانات، ما يسمى مجموعة، التي خدش يحدث للدعوة الى "القائمة." انها قليلا مختلفة في هذا السياق. وبعد ذلك سنقوم أيضا إدخال أحد أول من المشاكل مجال معين لدينا في CS50، عالم الترميز، فن الهرولة أو في التشفير المعلومات حتى يمكنك إرسال رسائل سرية وترجم رسائل سرية بين شخصين، A و B. حتى قبل أن الانتقال إلى ذلك العالم الجديد، دعونا نحاول تجهيز لكم مع بعض التقنيات التي يمكنك قضاء أو الحد من بعض على الأقل من الإحباطات هذا وربما كنت قد واجه خلال الأسبوع الماضي وحده. في الواقع، قبل كنت such-- بعض أولى المشاكل الخاصة بك في C. والاحتمالات، إذا كنت مثلي، لأول مرة حاولت اكتب برنامجا، حتى لو كنت تعتقد منطقيا البرنامج بسيط جدا، قد ضرب بشكل جيد للغاية الجدار، و المترجم لن تتعاون. إجراء أو رنة لن إلى القيام به في الواقع المناقصة. وماذا يمكن أن يكون؟ حسنا، دعونا نلقي نظرة على، ربما، وهو برنامج بسيط. انا ذاهب الى المضي قدما وحفظ هذا في ملف يسمى عمدا buggy0.c، لأنني أعلم أنه ل تكون معيبة مقدما. ولكني قد لا يدركون أنه إذا كان هذا هو البرنامج الأول أو الثاني أو الثالث انني في الواقع جعل نفسي. لذلك أنا ذاهب إلى المضي قدما و اكتب بها، كثافة العمليات الرئيسي (الفراغ). ثم داخل بلدي الأقواس المعقوفة، مألوفة جدا ( "مرحبا، world-- مائل، ن ") - ومنقوطة. أنا قد قمت بحفظ الملف. الآن انا ذاهب الى النزول لنافذتي المحطة ونوع جعل buggy0، لأنه، مرة أخرى، اسم الملف اليوم هو buggy0.c. لذلك أنا اكتب جعل buggy0، أدخل. و، أوه، يا الهي، أذكر من آخر مرة عدم وجود رسائل الخطأ هو شيء جيد. لذلك لا الإخراج هو شيء جيد. ولكن هنا لا بد لي بوضوح بعض عدد من الأخطاء. حتى السطر الأول من الانتاج بعد كتابة جعل buggy0، أذكر، يتم إخراج رنة ومطول إلى حد ما. تحت غطاء محرك السيارة، تم تكوين IDE CS50 لاستخدام مجموعة كاملة من خيارات مع هذا المترجم بحيث لم يكن لديك للتفكير فيها. وهذا كل ما السطر الأول الوسائل التي تبدأ مع رنة. ولكن بعد ذلك، والمشاكل البدء في جعل مظهرهم. Buggy0.c على السطر 3، شخصية 5، هناك خطأ حمراء كبيرة. ما هذا؟ يعلن ضمنا وظيفة المكتبة printf مع نوع int (CONST شار *، ...) [-Werror]. أعني، أنه بسرعة كبيرة يحصل غامضة جدا. وبالتأكيد، في البداية لمحة، ونحن لن أتوقع منك أن نفهم مجمل تلك الرسالة. وحتى واحد من الدروس لهذا اليوم يسير أن تكون في محاولة لاحظت أنماط، أو أشياء مماثلة، إلى أخطاء قد تكون لديكم واجهت في الماضي. لذلك دعونا ندف بعيدا فقط تلك الكلمات التي تبدو مألوفة. و، خطأ أحمر كبير هو واضح رمزية من شيء يجري على خطأ. يعلن ضمنا مكتبة وظيفة printf. لذلك حتى لو كنت لا أفهم تماما ما يعلن ضمنا وظيفة المكتبة الوسائل، والمشكلة بالتأكيد يتصل printf بطريقة أو بأخرى. ومصدر هذه المسألة لديها ما تفعله مع إعلانها. إعلان الوظيفة يذكر أنه للمرة الأولى. واستخدمنا المصطلحات الأسبوع الماضي إعلان نموذج وظيفة، و إما مع سطر واحد في أعلى صفحتك الملف الخاص أو في ما يسمى ملف الرأس. وفي ما فعله ملف نقول الاسبوع الماضي ان printf هو الاقتباس، قوسي، أعلن؟ في ملف ما هو النموذج الأولي؟ حتى إذا كنت تذكر، وأول شيء أنا المكتوب، وتقريبا كل برنامج آخر time-- وبالصدفة لحظة منذ بدأ كتابة myself-- كان هذا here-- واحد hash-- # تشمل