[Powered by Google Translate] DAVID J. مالان: حسنا، هذا هو CS50 وهل هذا هو
نهاية الأسبوع 1، بطاقات الدراسة حتى في والعدد الإجمالي لل
زملاء الدراسة أن لديك هذا العام هو 745.
وكنت سعيدة لذلك نحن لدينا العديد منكم في سياق
في هذا الفصل الدراسي، ولكن على الرغم من هذه الدورة هو كبير جدا،
ندرك أنه من هذه الأشياء مثل وجبات غداء الجمعة، مثل
ساعات العمل والأقسام 15-الشخصي، وهكذا دواليك
وتهدف حقا إلى إنشاء هذا أكثر حميمية
البيئة.
على الرغم من ذلك قد نجتمع مرة أو مرتين في الأسبوع، وهنا في
ساندرز، ونعرف أن الكثير من تجربتك في هذه الدورة
وسوف يكون كثيرا على التدريب العملي على جانب من زملائك
وأعضاء هيئة التدريس.
>> حتى هنا نذهب، خريف 2012.
يذكر أن آخر مرة حتى انتهى بنا على علما
عدم الدقة، والحديث عن تمثيل الأرقام.
ونحن ننظر في واحدة من الفشل الذي حدث، في
العالم الحقيقي، وعندما جاء لسوء الفهم
كيف تعمل أجهزة الكمبيوتر.
حسنا، اليوم سوف نعيد النظر آخر واحد من تلك الأفكار كما
كذلك مواصلة مناقشتنا للعميل CS50
وC وماذا يعني حقا أن البرنامج.
ولكن أولا، فقط بضع الإعلانات زوبعة.
>> أقسام تبدأ هذا الأحد، والأسبوع الأول دائما
قليلا من سرعة البدء، لأننا فقط حصلت في
أشكال القسم الخاص بك.
نقوم به هو نفسه، الآن، مع زملاء التدريس، والآن
أنهم يعرفون جداول أعمالهم، لذلك نهدف، من خلال
صباح اليوم السبت، لمتابعة معكم مع القسم الخاص
تعيين وتمويل الإرهاب.
يدركون أنهم سوف تبدأ في اليوم التالي، يوم الأحد
أو الاثنين أو الثلاثاء.
ومن ثم فإننا سوف تستوعب التغييرات التي تنشأ القسم
في الأيام القادمة.
ساعات العمل، وفي الوقت نفسه، هي، مرة أخرى، هذه الليلة، 8 م إلى 11، في
أننبرغ، وكذلك ليلة الغد.
على الرغم من أن المشكلة هي مجموعات عموما بسبب يوم الخميس
عند الظهر، وتحقيق لديك ما يصل إلى خمسة أيام لقضاء وقت متأخر،
وبالتالي توفر ساعات العمل يوم الخميس اذا
كنت النقدية في واحدة من تلك الأيام في وقت متأخر، ويقدم بذلك،
شيء يوم الجمعة.
اسمحوا لي أن أقترح أن الصفر هو من بين أكثر متعة، بين
أكثر مجموعات منخفضة المشكلة الرئيسية.
وأود أن تشبث تلك الأيام أواخر استراتيجيا، فقط
في وقت لاحق في الحياة الفصل الدراسي عندما يبدأ في الحصول على الطريق
مع انتخابات التجديد النصفي والفئات الأخرى.
تعيين المشكلة 1، وفي الوقت نفسه، سيتم نشر على البرنامج الدراسي
موقع يوم الجمعة، إذ سيتم في المشي في مسار
من خلال الفيديو، سيتم تصويره التي الساعة 2:30 بعد الظهر يوم الجمعة
ونشرت على الانترنت من قبل ثم في اليوم التالي.
>> حتى لقد انتهى يوم الاثنين.
أريد أن - في الواقع، واحدة نلاحظ هنا.
لأن الطبقات - بسبب ساندرز لا تقرض بالضبط
س عارضة نفسها والعودة A وإيابا جيدا بشكل رهيب، كنت نحن
الذهاب لمحاولة شيء جديد يذكر هذا العام، حيث
إذا كنت غير مريحة رفع يدك أو لك فقط
لا ترغب في رفع يدك في غرفة من هذا القبيل،
نحن ستكون لدينا بعض الزملاء التدريس والمصدقة
cs50.net/discuss يحرسون خلال المحاضرة.
إذا كان الأمر كذلك لديك سؤال لأنني كنت تماما
غير واضح أو عن شيء كنت غريبة عن بعض
الموضوع، في محاولة نشرها هناك.
علامة مع علامة من محاضرة، ونحن سوف نبذل قصارى جهدنا
اليوم والاسبوع القادم - we'll محاولة ذلك - لأنه الميدان
إما إلكترونيا أو عبر الإنترنت أو إذا كان يشعر وكأنه ينبغي لنا
معالجة حقا بشكل جماعي، واحدة من الزملاء أو التدريس
سوف المصدقة رفع أيديهم واطلب
مجهول نيابة عنك.
وهكذا لن نعطي هذه محاولة ونرى مدى نجاح هذه الأعمال.
ولكن، وبكل الوسائل، ومواصلة رفع اليدين كما تحب.
>> حتى آخر مرة كشفت لنا أن 10٪ أو واحد عشر لم يكن، في
الواقع، 0.1، مثل التي كانت تدرس منذ سنوات عديدة.
انها في الواقع، قيمة مثل هذا.
ولكن هذا ليس صحيحا تماما، أليس كذلك؟
لدينا فقط هذا القيد في أجهزة الكمبيوتر حيث، إذا كنت
لديك سوى كمية محدودة من الذاكرة، RAM، أو أكثر
بت على وجه التحديد، وأيضا، لا يوجد سوى عدد محدود
من الأشياء التي يمكن أن تمثل.
على سبيل المثال، إذا كان لدينا الرقم صفر، ونريد أن
تمثل في ثنائي، وذلك باستخدام ثمانية بت، حيث قليلا،
مرة أخرى، هو صفر أو واحد ل، ونحن قد
أنها تمثل 00000000.
وهذا قليلا مطول دون داع.
مثلما هو الحال في النظام العشري في العالم الحقيقي،
عموما، إذا كنت تريد أن تكتب 123 عدد، ونحن
البشر ربما لا تكتب حتى ولو 00000123،
وظيفيا، وهذا هو بالضبط نفس عدد.
نحن مجرد قطرة الأصفار البادئة، إذا جاز التعبير.
>> في ثنائي، يمكننا أن نفعل نفس الشيء.
وثنائي صفر، صفر هو صفر وثنائية فقط.
ما عليك سوى بت واحد.
ولكن مرة أخرى، وحدة القياس الأكثر شيوعا في العالم
الحوسبة بايت، وثمانية بت.
لمجرد حرف واحد، لا طائل منه جدا.
ثمانية بت، وليس مفيدا بشكل رهيب، ولكن على الأقل هو أكثر من ذلك
فائدة من وحدة واحدة للقياس.
حتى مع ثمانية بت، سوف نمثلها عادة ثنائي.
حتى هنا لدينا أرقام صفر، واحد، اثنين، وبعد ذلك، كما
نيت به في الفيديو لدينا يوم الأربعاء الماضي، لا يمكننا الاستمرار
عد تصل إلى سبعة، وثمانية.
ثم إذا كنا استخدام بت أكثر وأكثر، ونحن
حتى يمكن الاعتماد إلى ما لا نهاية.
ولكن إذا كان لديك سوى عدد محدود من هذه القطع، كما هو
الحال في أي نظام حاسوبي، أو حتى الصواريخ
النظام، حسنا، في الواقع لديك فقط
كمية محدودة من الدقة.
حتى إذا كنت تريد لتمثيل عدد مثل 0.1، حسنا،
الكمبيوتر لانتقاء واختيار.
وإذا كان لديه سوى عدد محدود من الأرقام ما في وسعها
تمثل، يمكن أن تقترب إلى 0.1 بالنسبة لك، ولكن لا يمكن
تعطي بالضرورة لك بالضبط القيمة التي تريدها.
وهذا هو مجرد واحدة من التحديات من أجهزة الكمبيوتر،
تحت غطاء محرك السيارة، والحمد لله.
>> ونحن نمضي أبعد في الفصل الدراسي، وهذه أقل مستوى
تفاصيل أصبحت أقل إثارة للاهتمام، ولكن بالتأكيد
يمكن تطبيق هذه الأفكار على بعض العالم الحقيقي جدا
تداعيات.
هو واحد من المرح قليلا.
شهدت كم منكم مكتب الفيلم مذهلة الفضاء؟
إذا كان لديك لا، هذا غير الرسمية الخاصة بك
الواجبات المنزلية هذا الأسبوع.
ولكن في مكتب الفضاء، والزملاء في هذا الفيلم تأخذ
فكرة الاستفادة من هذا على وجه التحديد، ولكن في الواقع سرقوا
ذلك أن من فيلم آخر قد تكون لديكم
ينظر، حتى قبل سنوات.
لذلك اسمحوا لي أن أقدم لكم بضع ثوان من هذه المقطورة من
هذا الفيلم المدهش وهذا هو إلى حد كبير
ذات الصلة أكاديميا.
>> [يلعب MOVIE]
في الواقع أنا يجري الترويج I.
يمكنني برمجة الفيروس الذي سوف مزق أن
المركز قبل وقت كبير.
حسنا، كيف يعمل؟
في كل مرة هناك المعاملات المصرفية حيث الفائدة
محسوب، وهناك الآلاف يوميا، الكمبيوتر ينتهي
مع هذه أجزاء من المائة.
ولكن أنا لن تفعل أي شيء غير قانوني.
غير قانونية؟ سمير، هذه هي أميركا.
عليك أن أقسم الله.
إذا كان لا أحد يعرف عن هذا ولكن لنا، كل الحق؟ أي من أفراد الأسرة، لا
صديقات، لا أحد.
[غير مسموع].
لا تقلق يا رجل، أنا لن تخبر أحدا أيضا.
[ينتهي الفيلم]
>> كل الحق، ولذلك ربما وجدت هذا الفيلم أفضل من معظم
الناس هنا، ولكن في أي حال، فإن الفيروس الذي كانوا
تحاول خلق -
وفي السينما، في أي وقت تريد شيئا يسمونه فيروس،
انها عموما يست في الواقع الفيروس.
انها مجرد أن شخصا ما كتب برنامج لعمل شيء.
وفي هذه الحالة، وكان الرجال في محاولة لكتابة برنامج
استغرق أن تستفيد من شركتهم دعا في Innotech
نظام الحوسبة، حيث أجهزة الكمبيوتر، أيضا، حتى عندما
يتعلق الأمر بالمال، لا يمكن بالضرورة
تمثل المال على وجه التحديد.
على الرغم من ذلك قد يكون لديك 0،10 $ في حسابك المصرفي،
0.10، حسنا، قد تعتقد الكمبيوتر في الواقع أن لديك
هذا سنتا كثيرة في حسابك المصرفي.
وذلك ما كان هؤلاء الرجال تطمح إلى القيام به - وهم
سرق فكرة، كما تبين من سوبرمان الثالث، حيث
لم ريتشارد بريور نفس الشيء - كانت أساسا
كتابة البرامج التي تطمح إلى اتخاذ كافة زائدة
أرقام، كل من صغيرة، والكسور، صغيرة صغيرة من
بنسات، وشفط تلك قبالة بحيث البشر فقط
الفكر، أوه، انها فقط 0،10 $ هناك، ولكن كل هذه
أرقام زائدة تضيف في نهاية المطاف.
حتى فكرة رائعة وأتت بنتائج عكسية بفرح شديد في تلك
خاص الفيلم.
>> ولكن في العالم الحقيقي، أيضا، وهناك أكثر من ذلك بكثير فيما يتعلق
الآثار المترتبة على هذا النوع من الأشياء.
وأحد الأسباب ليغوص في مجال الكمبيوتر
العلم هو، مرة أخرى، لا تطبيقه على
العلوم الهندسية وحدها، ولكن لمجرد
غيرها من المجالات أيضا.
لذلك هذا هو نظرة أقل مرح في ما يمكن ان تتعرض له، ولكن
كما انها افتتاح تماما العين، كما أعتقد، عندما يتعلق الأمر
فهم بالضبط كيف منتشرة في كل مكان مثل تكنولوجيات
أجهزة الكمبيوتر والبرمجة أو في هذه الأيام،
في شكل البرنامج.
لذلك هذا هو مقطع القادمة فقط عن ست دقائق، ما زال
حيث تركنا من آخر مرة، ولكن يسمح لنا أن ننظر قليلا
أكثر تعمقا في واحدة من هذا القبيل من هذه القضايا.
اسمحوا لي أن التجاوز الى حيث توقفنا،
الذي كان هنا.
ونحن لدينا الجزء الثاني من اثنين، لنحو ست دقائق هنا.
>> [PLAY MOVIE]
تعاني الحديثة تكنولوجيا الصواريخ.
في عام 1991، مع بداية حرب الخليج الأولى، وباتريوت
شهدت صاروخ نوع مماثل من
عدد تحويل المشكلة.
ونتيجة لذلك، قتل 20 شخصا، 20 جنديا أمريكيا،
وحوالي 100 آخرين بجروح، عندما باتريوت، والتي كان من المفترض
للحماية من صواريخ سكود واردة،
فشل إطلاق صاروخ.
>> عندما غزا العراق الكويت وأطلقت أمريكا الصحراء
العاصفة في أوائل عام 1991، كانت بطاريات صواريخ باتريوت
نشرت لحماية المملكة العربية السعودية وإسرائيل من العراقية
هجمات سكود صاروخ.
باتريوت هو متوسطة المدى سطح الولايات المتحدة إلى الجو النظام،
المصنعة من قبل شركة رايثيون.
حجم اعتراضية باتريوت نفسها، ولكن عن
حوالي 20 أقدام طويلة ويزن حوالي 2،000 جنيه.
ويحمل رأسا حربية من حوالي - اعتقد انه من تقريبا
150 جنيه.
والرأس الحربي نفسه هو الذي شديدة الانفجار
شظايا من حوله.
تم تصميم غلاف الرأس الحربي لعمل مثل رصاص.
وتنفذ هذه الصواريخ أربعة في الحاويات وهي
نقل من قبل نصف المقطورة.
>> باتريوت المضادة للصواريخ يعود على الأقل إلى
20 عاما حتى الآن.
كان مصمما أصلا على أنها صاروخ الدفاع الجوي ل
اسقاط الطائرات العدو، في حرب الخليج الأولى.
أراد الجيش أن الحرب عندما جاء على طول، لاستخدامه لاطلاق النار
أسفل صواريخ سكود، وليس الطائرات.
وكان سلاح الجو العراقي وليس ذلك بكثير على وجود مشكلة، ولكن الجيش
يشعر بالقلق بشأن صواريخ سكود.
وحاولت حتى لترقية باتريوت.
اعتراض صاروخ عدو تسير بسرعة 5 ماخ ذاهبا
ليكون تحديا بما فيه الكفاية.
ولكن لحظة نقل باتريوت في الخدمة، والجيش
لم يكن لديها علم بأي تعديل العراقية التي جعلت من
صواريخ سكود من المستحيل تقريبا ليصل.
>> ما حدث هو صواريخ سكود التي كانت
القادمة في غير مستقرة.
كانوا متذبذب.
وكان السبب في ذلك العراقيين، من أجل الحصول على 600
كم من صاروخ نطاق كيلو متر 300، استغرق
الوزن من الرؤوس الحربية والجبهة
جعل الرؤوس الحربية أخف وزنا.
حتى الآن باتريوت يحاول أن يأتي في سكود، وأكثر من
الوقت، فإن الغالبية العظمى من الوقت، فإنه
تطير به للتو سكود.
مرة واحدة أدركت مشغلي نظام باتريوت باتريوت
اخطأ هدفه، فجروا الرأس الحربي باتريوت.
ممكن لتجنب سقوط ضحايا، وسمح لها
ليسقط على الأرض.
وكان معظم الناس أن ما رأى، كما نارية كبيرة في السماء،
ويساء فهمها وقراءتها والرؤوس الحربية سكود.
>> وعلى الرغم من في السماء ليلا، يبدو أن الوطنيين
صواريخ سكود دمرت بنجاح، في الظهران، يمكن أن يكون هناك أي
خطأ حول أدائها.
هناك، فقدت نظام باتريوت للرادار مسار أحد
واردة أبدا سكود أطلقت بسبب
لعيب البرمجيات.
كان الإسرائيليون الذين اكتشفت لأول مرة أن يعد
وكان النظام على، وزيادة التفاوت الوقت أصبح،
بسبب مدار الساعة المضمنة في الكمبيوتر النظام.
نحو أسبوعين قبل المأساة في الظهران، في
ذكرت الإسرائيليين إلى وزارة الدفاع أن
كان نظام اضاعة الوقت.
بعد حوالي ثماني ساعات من التشغيل، لاحظوا أن
وقد أصبح نظام ملحوظ أقل دقة.
رد وزارة الدفاع بقوله جميع
وبطاريات باتريوت لعدم ترك نظم
لفترة طويلة.
وقال انهم لم ما كان وقتا طويلا - 8 ساعات، 10
ساعات، 1،000 ساعة.
لم يعرف أحد.
>> البطارية باتريوت المتمركزة في ثكنة في الظهران
وكان ساعته الداخلية معيبة كان على أكثر من 100 ساعة على
ليلة 25 فبراير.
تعقب حان الوقت لدقة حوالي عشر من الثانية.
الآن عشر والثاني هو مثير للاهتمام لأن عدد
لا يمكن أعرب في ثنائي، بالضبط، وهو ما يعني
لا يمكن التعبير عن تماما في أي
الكمبيوتر الرقمية الحديثة.
من الصعب أن نعتقد.
ولكن استخدام هذا على سبيل المثال.
>> دعونا نلقي رقم واحد ثالث.
لا يمكن ثلث يمكن التعبير عنها في عشري، بالضبط.
وثلث 0،333 مستمرة لا نهاية.
ليس هناك طريقة للقيام بذلك مع الدقة المطلقة في العشرية.
هذا هو بالضبط نفس النوع من المشكلة التي وقعت في
باتريوت.
ويعد ركض النظام، والأسوأ في الوقت الخطأ أصبح.
بعد 100 ساعة من العملية، وكان الخطأ في المرة الوحيدة
حوالي ثلث من الثانية.
ولكن من حيث استهدفت الصواريخ السفر في MACH 5،
أدى ذلك في خطأ تتبع أكثر من 600 متر.
سيكون من خطأ فادح للجنود في الظهران.
>> تم الكشف عن ما حدث هو إطلاق صواريخ سكود من الإنذار المبكر
عرف الأقمار الصناعية وقالوا إن سكود كانت قادمة في بهم
الإدارة العامة.
لكنها لم تعرف أين هو آت.
كان عليه الآن حتى الرادار مكون من باتريوت
نظام، والدفاع عن الظهران، لتحديد وتتبع لل
واردة العدو الصواريخ.
كان رادار ذكية جدا.
كنت في الواقع تتبع موقف سكود ثم
التنبؤ حيث ربما ستكون المرة القادمة
أرسلت رادار نبضة بها.
ودعا إلى أن البوابة النطاق.
ثم، مرة واحدة باتريوت يقرر ما يكفي من الوقت للذهاب مرت
دعم ومراجعة الموقع التالي لهذا المكتشفة
كائن، فإنه يذهب إلى الخلف.
لذلك عندما عاد إلى المكان الخطأ، ثم تراه لا
الاعتراض، وتقرر أنه لا يوجد أي كائن.
وكان الكشف كاذبة ويسقط الأغنية.
>> اختفى سكود الواردة من شاشة الرادار.
وبعد ثوان، انتقد عليه في الثكنات. وسكود
مقتل 28 وكان آخر واحد أطلقت خلال
حرب الخليج الأولى.
مأساوي، وصل البرنامج المحدث في الظهران
في اليوم التالي.
وكان قد حدد الخلل البرمجيات، وإغلاق فصل واحد في
تاريخ المضطربة من صواريخ باتريوت.
PATRIOT هو في الواقع اختصار ل "تتبع مجموعة مراحل
اعتراض من الهدف. "
>> كل الحق، لذلك نتائج أكثر من محزن ليس تماما
فهم هذا العالم.
والوجبات الجاهزة، حقا، من الفيلم هو أن الحل
كان هناك إعادة تمهيد النظام الدفاع الصاروخي
كل مرة واحدة في حين لاخر.
وذلك مرة أخرى، واحدة من أهداف هذه الدورة، وبالتأكيد
على نطاق أكثر تواضعا من هذه التطبيقات، هو
الجميع حقا عيون مفتوحة لبالضبط كيف يمكنك أن تذهب نحو
آلات صنع تفعل ما تريد منهم أن يفعلوا وكيف تذهب
عن القيام بذلك بشكل صحيح، في حين أن طول الطريق يفعل ذلك
حسنا، أنيق، وهكذا دواليك.
وحتى اليوم، دعونا الغوص في أكثر قليلا قليلا من هذا، ولكن
ذلك أننا لا تذهب بسرعة كبيرة، لا سيما بالنسبة لأولئك أقل
مريحة، ولكن أيضا حتى نتمكن من الحفاظ على مصلحة
تلك أكثر راحة، دعونا نبدأ بسرعة فقط قليلا
من خلاصة بعض هذه الأفكار.
ومرة أخرى، اسأل بعيدا، سواء شخصيا أو عبر الإنترنت، وإذا كان لديك
الأسئلة حتى نتمكن من ابقاء الجميع على نفس الصفحة.
>> وبالتالي فإن الأجهزة CS50، خطوة سريعة الى الوراء، هو
ما، في الكلمات الخاصة بك؟
انه موافق إذا كان لديك أي فكرة عما قد تكون هذه الكلمات بعد.
[غير مسموع]
حسنا، لذلك واجهة عالمية لل-
التي يمكن أن نشترك فيها جميعا.
على الاطلاق.
حتى نتمكن من، على سبيل المثال، أخبر لك أن تذهب إلى بعض
الموقع، قم بتحميل هذا البرنامج لنظام التشغيل ماك.
تحميل هذا البرنامج لنظام التشغيل Windows، تكوين في
وبهذه الطريقة ذلك.
ولكن الواقع هو ثم واجهتنا الفنية لا تعد ولا تحصى
دعم القضايا.
وأيضا في هذه الأيام، فإن الكثير من ما يجري القيام به جانب الملقم،
في عالم الحوسبة، وخصوصا عندما يتعلق الأمر
تطوير الشبكة والتطبيقات القائمة على شبكة الإنترنت، هو في الواقع
في كثير من الأحيان القيام به على أجهزة الكمبيوتر يونكس أو لينكس، على عكس
ماك أو أجهزة الكمبيوتر ويندوز.
>> حتى بين الإيجابيات، بعد ذلك، من استخدام هذا الشيء يسمى
CS50 هو جهاز علينا كل نفس البيئة.
لذلك الجميع في نفس الصفحة بغض النظر عن الجهاز الذي
جاء إلى الحرم الجامعي ولكن أيضا مع سيتم تجريب في بالضبط
نفس البيئة التي سوف تستخدم نحو
الفصل الدراسي في نهاية فضلا عن تطوير الشبكة، وكذلك في
المستقبل لتطبيقات العالم الحقيقي لها.
أكثر من ذلك عمليا، فإن جهاز CS50 هو قطعة خالية من
البرمجيات التي تسمح لك بتشغيل نظام تشغيل آخر،
لينكس، في هذه الحالة، على جهاز الكمبيوتر الخاص بك، في إطار.
الآن لا يمكنك فقط تحميل الجهاز.
كنت في حاجة الى البرنامج الذي للعب أو تشغيل الجهاز.
وكما هو معروف عموما أن قطعة من البرمجيات ويهدف الى
برنامج مراقبة الأجهزة الافتراضية.
برامج Hypervisor تأتي في شكل من المنتجات مثل إم وير،
صندوق الظاهري، المتوازيات.
جميع أنواع الشركات المصنعة للبرمجيات، على حد سواء حرة و
التجارية، على حد سواء.
ما سترى في مشكلة هي مجموعة 1 على تعليمات حول كيفية
الحصول على البرمجيات الحرة التي ل
تشغيل جهاز CS50.
وبمجرد القيام بذلك، سيكون لديك، في إطار على جهاز Mac أو PC،
بيئة سطح المكتب التي تبدو تماما مثل هذا، حيث
أنه يحتوي على قائمة ابدأ مثل الشيء في
أسفل الزاوية اليسرى.
أنه يحتوي على مجلد الرئيسية، أو الدليل الصفحة الرئيسية، في أعلى اليسار
هناك، يمكن لسلة المهملات، وهكذا دواليك.
ولذا فإننا سوف ندف بصرف النظر عن التفاصيل اللازمة ونحن نمضي.
>> ولكن دعونا نبدأ الآن ليغوص C.
ذلك هو هذا C لغة البرمجة، مماثلة لل
الصفر، ولكن أقل بكثير رسومية، ولكن ويا للسخرية، حتى
أقوى تحصل مرة واحدة والدهاء معها.
حتى في C، نكتب البرامج من خلال كتابة شفرة المصدر، الذي هو
بناء الجملة هذا مثل اللغة الإنجليزية، على غرار الجوارب
مظاهرة فعلنا المرة الأخيرة التي يسمح لك
التعبير عن نفسك بدقة إلى حد ما، إذا
arcanely، إلى الكمبيوتر.
>> لذلك أي نوع من البرمجيات المنتج لا تحتاج في الواقع
لكتابة برامج بلغة C مثل، استنادا لدينا
المحادثة يوم الاثنين؟
[غير مسموع]
OK، تحتاج فقط محرر النص.
أنت لا تحتاج إلى أي برامج خاصة
في حد ذاته لكتابة برامج.
كل ما تحتاجه هو محرر نصي مثل المفكرة، على ويندوز،
برنامج TextEdit على ماك، أو ما يسمى gedit، في عالم
لينكس، والتي سنستخدم هنا.
وهذا كل شيء، لكتابة البرامج.
>> ولكن الكتابة فقط نصف المعادلة.
ثم تحتاج لتشغيلها.
ولكن من أجل تشغيل البرامج -
لا يمكنك تشغيل التعليمات البرمجية المصدر.
لديك بدلا من ذلك إلى فعل ما عليه أولا؟
نعم.
DAVID J. مالان: أنت بحاجة إلى
ترجمة عليه.
و، شخص آخر، ترجمة التعليمات البرمجية المصدر يعني -
[غير مسموع]
DAVID J. مالان: بالضبط.
ترجمتها إلى أصفار ومنها.
لأن كل واحد منا، في هذه الأيام، لديك أجهزة الكمبيوتر التي تحتوي وحدات المعالجة المركزية،
تقريبا مصنوعة كلها من قبل شركة تدعى شركة إنتل، و
إنتل في الداخل، يعني هناك داخل هذا الدماغ الخاص بك
الكمبيوتر، والمعروفة باسم وحدة المعالجة المركزية.
واحدة من الأشياء التي أن يفعله هو الدماغ، فهو يعرف
كيفية فهم أنماط الآحاد والأصفار و.
فهو يعرف ما يمثل نمط بت بالإضافة إلى ذلك، ما
نمط يمثل الطرح، ما نمط
بت تمثل الطباعة، وخلق صوت مسموع.
>> لذلك باختصار، وحدة المعالجة المركزية، بالإضافة إلى نظام التشغيل،
الذي هو قطعة من البرامج التي يتم تشغيلها على أعلى وحدة المعالجة المركزية،
إذا جاز التعبير.
معا، تلك قطعتين معرفة كيفية تشغيل البرامج التي
نحن البشر الكتابة.
>> إذا كان الأمر كذلك أذهب إلى جهاز CS50 هنا، ولست بحاجة لفتح
يصل محرر النص ويمكن الوصول إلى هذا أنا
في عدة طرق.
أستطيع أن أمضي إما إلى القائمة، البرمجة،
ومن ثم يمكن تحديد I -
كلا، لا تلك القائمة.
يمكنني أن أذهب إلى البرامج الملحقة / gedit هنا لفتح
محرر النص الخاص بي قليلا.
أو أكثر ببساطة، لا أستطيع فوق هذا الرمز قليلا في الجزء السفلي
الزاوية اليد اليسرى.
والآن يمكنني الحصول على هذه البيئة هنا.
انها تذكرنا جميلة من محرر نص بسيط، مع فقط
واحد أو اثنين الخلافات.
في الجزء العلوي، حيث يومض المؤشر الآن، هذا هو المكان
أستطيع أن أبدأ كتابة قانون بلدي.
في الجزء السفلي يسمى هذا الشيء إطار المحطة الطرفية.
وماذا يمكن أن أنواع الأشياء أفعل في هذا
ما يسمى إطار المحطة الطرفية؟
[غير مسموع]
>> حسنا، لذلك سوف أقوم بتشغيل الأوامر.
وكانت بعض الأوامر هربنا يوم الاثنين قليلا
خفي في البداية، ولكن ليرة سورية لقائمة، قرص لتغيير الدليل،
RM، لإزالته.
حتى انها نوع من طريقة المدرسة القديمة من التنقل الخاص بك
الكمبيوتر، وذلك باستخدام لوحة المفاتيح فقط والأوامر النصية،
وليس، عموما، وذلك باستخدام الماوس.
ولكن سنرى، قبل وقت طويل، وهذا يعطي لنا الواقع
أكثر من ذلك بقليل الطاقة والدقة أكثر من ذلك بقليل مع أي أن
التعبير عن أنفسنا.
ثم أكثر من هنا على اليسار، ونحن في طريقنا لمجرد أن نرى،
ونحن نبدأ برنامج الكتابة، ملخصا القليل من
البرنامج الذي لدينا كتب في أعلى اليسار.
ولكن سنرى ذلك مرة أخرى قبل مرور وقت طويل.
>> لذلك دعونا نفعل شيئا بسيطا نوعا ما هنا.
اسمحوا لي أولا الذهاب قدما وانتقل إلى ملف، حفظ، وأنا فقط
الذهاب الى الضغط على jharvard هنا، في أكثر من اليسار، و
jharvard هو، مرة أخرى، اسم للمجلد بيتي، بلدي
ملفات شخصية، لي، والآن يجري جون هارفارد، ولكم جميعا
قريبا جون هارفارد في هذه البيئة.
انه حصل على هذا الدليل الرئيسي، المستندات وهكذا دواليك،
الذي أريد حفظ، الآن، هذا الملف.
لذلك أنا ذاهب الى نسميها hello.c. ثم انا ذاهب للذهاب
انقر فوق حفظ وقبل، والآن ما لدي هنا هو علامة تبويب
دعا hello.c، مثل الكثير من نوع آخر من المحرر.
>> لذلك اسمحوا لي الآن المضي قدما والبدء في كتابة البرنامج.
الباحث الرئيسي (الفراغ).
ثم أنا فقط لم آخر مرة، printf، للطباعة تنسيق،
("مرحبا، العالم!"
)؛
كامل تقريبا.
ولكن أنا في عداد المفقودين بضعة تفاصيل.
ما هو مفقود من هذا البرنامج الذي أنا فعلا بحاجة لل
لتجميع فعلا؟
نعم.
[غير مسموع]؟
>> DAVID J. مالان: نعم، لذلك أنا بحاجة لتضمين معيار
I / O مكتبة.
حتى هذا يحتاج إليها أعلاه الرئيسية، لذلك أنا مجرد الذهاب الى
جعل بعض الغرف هناك.
وانا ذاهب الى القيام # تشمل .
وتلاحظ الأقواس الزاوية هناك.
وبوصفها جانبا، gedit هو مستخدم قليلا ودية، إذا
في بعض الأحيان مربكة قليلا، لأنه يحاول أن يساعد الخاص بك
عيون تلاحظ ما يصطف مع ما.
ذلك أن بلدي هو المؤشر بجوار الزاوية هذا
قوس، لاحظ كيف انها تسلط الضوء على الزاوية الأخرى
قوس زائد واحد هذا.
وهذا فقط للفت انتباهي إلى أن الأول
يكون التماثل.
والتماثل في البرمجة عموما هو شيء جيد.
وبالمثل، إذا كنت تحرك المؤشر إلى نهاية بلدي، لاحظ كيف أن
الأقواس المتعرجة يصطفون لإظهار أن، نعم، لدي واحدة مفتوحة
واحد مغلق، إذا جاز التعبير.
>> يمكن لجميع الحق، وأنا تفعل شيئا واحدا الأخرى.
انها ليست ضرورية تماما، ولكن الممارسة السليمة، أن أقول
العودة 0.
و 0 عودة يفعل ما بالنسبة لنا هنا؟
أو يدل على ماذا؟
[غير مسموع]
DAVID J. مالان: ولكن لا شيء من الخطأ.
وبصراحة فإنه من الصعب لكثير على غير ما يرام في
هذا البرنامج القصير.
لذلك أنا مجرد كونها سوبر صريح بأن كل شيء على ما يرام.
سوف أنا، الإنسان، عند تشغيل هذا البرنامج، ربما أبدا
نرى أن 0.
عموما، يتم إرجاع هذه الأرقام التي من أهم
الخلفية فقط رؤوسهم إلى البشر عندما
سارت الامور بشكل خاطئ.
وتحصل على البوب ​​قليلا حتى خطأ في النظام قائلا: واحد،
اثنان، ثلاثة، أو كان مهما أن عدد
وقد عاد فعلا.
لذلك أي خطأ آخر في هذا؟
[غير مسموع]
>> DAVID J. مالان: إذن هذا ليس كثيرا من الخطأ وظيفية
ولكن واحدة الجمالية.
ربما يجب أن أضع في حرف السطر الجديد هناك في
نهاية هذه السلسلة حتى يتسنى لنا نقل المؤشر إلى الواقع
السطر التالي، وبرنامج يبدو أجمل قليلا.
>> لذلك اسمحوا لي الآن النزول الى بلدي نافذة طرفية
والتكبير مرة أخرى.
وهذا الشيء هنا، وانه دعا موجه.
انها تذكير فقط لي من أنا، jharvard @ الأجهزة، حيث
الأجهزة هو اسم جهاز الكمبيوتر أنا على.
بين قوسين هو هذا تيلدا، رمز تمايل، التي
يمثل ما؟
AUDIENCE: الدليل الرئيسي.
DAVID J. مالان: الدليل الرئيسي.
ذلك أن مجرد تدوين اختزال لقوله كنت في
مجلد الشخصية حيث كل من الملفات الخاصة بك الذهاب بشكل افتراضي.
حتى الآن، هنا، ويمكنني أن اكتب ليرة سورية لقائمة.
والشيء الوحيد الذي أراه هنا في هذه اللحظة هو hello.c.
وهذا امر جيد لأنني كتبت هذا فقط.
>> لذلك اسمحوا لي نمضي قدما ونفعل جعل مرحبا.
وتلاحظ انا لا تجعل كتابة hello.c.
بدلا من ذلك، أنا فقط بكتابة اسم قاعدة من الملف، مرحبا.
وجعل، كما رأينا يوم الاثنين، سوف نستنتج فقط أن أريد
ملف ج.
حتى الآن لقد كتبته أنا جعل مرحبا.
الآن أرى هذا الأمر طويلة نسبيا وستستمر
رؤية هذا مرارا وتكرارا.
ولكن أن تكون واضحة، رنة، الكلمة التي ظهرت للتو،
هذا هو المترجم الفعلي.
جعل مجرد أداة بناء.
انها مجرد برنامج أكثر ملاءمة للمستخدمين أن يوفر لي، في
المدى البعيد، من الحاجة إلى كتابة مملة بشكل لا يصدق طويلة من
أوامر من هذا القبيل واحد.
لذلك يمكن تشغيل ضجيج يدويا.
يمكنك كتابة كل ذلك يدويا.
يحصل فقط مملة جدا.
لذلك ومجرد البرنامج الذي يبسط حياتنا و
يدير أوامر أكثر تعقيدا بالنسبة لنا.
>> كل الحق، وذلك ما ينبغي الآن لدي ملف
في الدليل الحالي بلدي؟
لا hello.c فقط، ولكن أيضا مرحبا.
حتى لو كنت تريد تشغيل مرحبا، أذكر بأن أقول نقطة مائل،
حيث الوسائل دوت تذهب إلى المجلد الحالي، أينما كنت
هي، ثم قم بتشغيل برنامج يسمى مرحبا، وبالفعل، الآن،
مرحبا لدي العالم.
حسنا، على أية أسئلة على سير العمل أو بناء جملة
ما فعلناه للتو؟
>> كل الحق، لذلك دعونا نأخذ الأمور فوق خدش مرة أخرى.
لذلك كان هذا مخيب لمجرد كتابة برنامج فقط
يقول من أي وقت مضى مرحبا، العالم.
تغيرت لذلك نحن فيه، يوم الاثنين، أن يقول، مرحبا، ديفيد.
انها أكثر من ذلك بقليل الشخصية، ولكن فقط من الصعب كما ترميز كما
أول نسخة.
لذلك ليس كل ما مقنعة.
ولكن هناك، في C، إلى جانب وظائف بالتأكيد
الطباعة والوظائف التي تتيح لك الحصول على مدخلات المستخدم.
وكان الطريق فعلنا هذا، واليوم الآخر، كما يلي.
قبل أن طباعة فعلا شيء، وأنا حصلت على أول
شيء من المستخدم.
لذلك اسمحوا لي أن تفعل هذا مرة أخرى.
>> سلسلة ثانية، حيث s هو مجرد اسم عشوائية، هنا، عن
سلسلة، يساوي GetString.
لذلك كان ما GetString؟
من الواضح ان يحصل سلسلة، على أساس اسمها.
ولكن ما هو أكثر من الناحية الفنية؟
انها وظيفة.
لذلك فمن وظيفة لا تأتي مع C في حد ذاتها.
كتب هذا CS50 الموظفين.
وذلك لاستخدام هذا، لا يمكنك تضمين فقط stdio.h،
تحتاج أيضا لتشمل ماذا؟
نعم.
حتى cs50.h، الذي هو مجرد ملف كتبنا قبل بضع سنوات.
قمنا بتركيب الجهاز على جنبا إلى جنب مع لك
كافة الملفات القياسية.
وذلك في الأسابيع القليلة الأولى من هذه الطبقة، سنستخدم
هذا فقط لتبسيط عملية أساسية جدا للقيام
الحصول على أشياء مثل إدخال المستخدم.
لأنه كما سنرى في غضون بضعة أسابيع، إدخال المستخدم في الحصول على
اللغة مثل C هو في الواقع معقدة من المستغرب،
لا سيما وأنت لا تعرف مسبقا، وعادة، وكيف
الكثير من الاشياء المستخدم هو الذهاب الى اكتب فيها
وعندما كنت لا تعرف مقدار البيانات يمكن توقعه، كنت لا
تعرف مقدار الذاكرة لتخصيص.
وإذا كان لديك بالفعل مستخدم الخصومة الذي يحاول
الإختراق في النظام الخاص بك، وتحطم جهاز الكمبيوتر الخاص بك، وأيضا،
عموما الأسلوب الأول من الهجوم هو، تماما كما فعلت في
الاثنين، اكتب تسلسل كامل طويلة من أحرف عشوائية،
هاهنا، ونرى ما يكسر.
لأن عموما، إذا كان برنامج فواصل، يلوح في
عيب الأمن، يحتمل.
انها بالتأكيد يلمح إليك، مبرمج، بعد أن قدم
خطأ، ولكن الاخطر، قد كنت قد قدمت
المتصلة بالأمن الخطأ، وعموما سنرى أن
هذه هي الطريقة التي يتم المساس آلات حتى يومنا هذا، على حد سواء
في العالم على شبكة الإنترنت والبرامج على
سطر الأوامر، مثل هذا.
>> حسنا.
حتى سلسلة ليالي يساوي GetString.
أكثر من ذلك الآن تحديدا، ماذا تفعل هنا السطر 6؟
وبالتالي فإن الدالة على الحق يحصل السلسلة،
كم يأخذ الحجج؟
حسنا.
لذلك لا شيء.
A التعقل قليلا الوصول.
حجة، مرة أخرى، هو مجرد وظيفة لإدخال تغيير
السلوك الافتراضي لها بطريقة أو بأخرى.
ولكن في هذه الحالة، لا أريد لتغيير
سلوك GetString.
أردت فقط أن تحصل على السلسلة.
ولذلك وضعت شيئا في الأقواس، ثم أضع
منقوطة ترسيم نهاية السطر من التعليمات البرمجية.
الآن، علامة التساوي لا يعني المساواة، في حد ذاتها.
وهو ما يعني تخصيص، مما يعني وضع كل ما يحصل
أنتج في الداخل حق كل ما هو على اليمين.
>> لذلك على اليسار، ونحن نقول بأننا قد أعلنت
ودعا سلسلة ق.
وبشكل أكثر تحديدا، لقد خصصنا داخل الذاكرة
الذي سوف نضع البتات الذي يمثل سلسلة من
حرفا.
ولكن لهذا اليوم، وقد خصصنا
أو أعلنت سلسلة.
حسنا.
حتى الآن مرة واحدة لقد فعلت هذا، أريد أن سد العجز في قيمة
ق، لا قيمة ديفيد.
لذلك هذا هو الخطأ لماذا؟
لذلك هذا هو حرفيا فقط ليالي الثابت تلوينها.
انها ليقول "مرحبا، s،" والذي هو ليس ما أريد.
حتى أتمكن من القيام بذلك.
النسبة المئوية هو عنصر نائب، ولكن الآن أنا بحاجة إلى
تنتقل إلى طباعة الحجة الثانية.
نذكر بأن يتم فصل الحجج إلى وظائف عن طريق
الفواصل، وبالتالي فإن الفاصلة القادمة هنا أضع هذه الصورة بعد هذه الرسالة.
والآن في هذا السياق، ق هو المتغير، وprintf،
لدى استقباله تلك المدخلات اثنين -
السلسلة على اليسار واسم متغير على الحق -
فإنه سيتم سد هذا الأخير في السابق بالنسبة لنا، و
طباعة للتو سلسلة لطيفة جميلة تحتوي على
كل ما هو نحن فيه كتابة
>> لذلك دعونا نحاول ذلك.
الذهاب الى المضي قدما والتصغير، والعودة
نافذة طرفية لبلدي.
تكبير في أسفل هنا.
أعد كتابة جعل مرحبا.
رنة يبدو أنه قد تم إعادة تشغيل.
أنا ذاهب إلى كتابة. / مرحبا أدخل.
لا شيء يبدو أنه يحدث حتى الآن، لكنه في هذه المطالبة
أستطيع أن اكتب شيئا مثل نيت، أدخل، والآن لدينا نحن
مرحبا، نيت.
وأستطيع أن أفعل ذلك مرة أخرى مع روب، وهكذا دواليك.
لذلك نأمل الآن هذا البرنامج يتصرف وأعتزم.
>> الآن، وليس كل ما سهلة الاستعمال.
ليس لدي فكرة عما يجري متوقع مني.
حتى نتمكن من تنظيف بالتأكيد هذا الأمر قليلا.
اسمحوا لي أن أعود هنا أعلى، وبدلا من الغوص فقط، و
يطلب المستخدم عن سلسلة، واسمحوا لي أن أقول صراحة
مستخدم ما أتوقع.
printf ذلك ("أدخل سلسلة:"
)؛
لذلك لا المتغيرات هنا.
أي علامات في المئة.
مجرد عبارة بسيطة الإنجليزية.
اسمحوا لي أن أذهب الآن إلى أسفل هنا ثم أعد تشغيل برنامجي.
ولكن لا يبدو أن شيئا تغير.
لماذا؟
لا بد لي من إعادة ترجمة عليه.
ذلك خطأ من السهل القيام بها.
ولكن عليك أن لا حفظ الملف ولكن
إعادة ترجمة البرنامج.
وحتى لو كنت إعادة تشغيل جعل مرحبا، الآن ضجيج تشغيله.
الآن يمكنني تشغيل / مرحبا. والآن أرى "أدخل سلسلة:".
حسنا.
الآن حان قليلا أكثر سهولة.
نيت، أدخل، مرحبا، نيت.
>> حسنا، دعونا نحاول مرة أخرى هذا ونبدأ في التفكير
حول قضايا الركن.
تماما مثل ذلك في سكراتش، كنت أنت أو يجري تشجيع يتم
شجع في المواصفات لنوع من التفكير في ما يمكن أن تذهب
خطأ إذا كنت لا نتوقع كل شيء للمستخدم قد تفعل.
البق، ولذلك، قد تترتب على ذلك.
أدخل ذلك سلسلة -
ما هو قضية الزاوية هنا؟
ما هو السيناريو الذي أنا، مبرمج، قد لا يكون
المتوقع؟
نعم.
حسنا.
حتى ما إذا كنت اكتب في عدد مثل هذه؟
حسنا.
لذلك لا يزال يعمل.
Gramatically يجعل لا معنى له.
ولكن على الأقل يعمل البرنامج.
>> ما هو قضية أخرى الزاوية؟
شيء لم أكن أتوقع.
نعم؟
حسنا.
لذا فإننا يمكن أن تفعل شيئا مثل عدد حقا، حقا كبيرة.
لذلك دعونا نفعل ذلك هنا.
اسمحوا لي تصغير للمرة الثانية، اسمحوا لي أن أسلط الضوء عليها.
لا يمكن نسخ ولصق الى هنا.
حسنا.
لذلك أنا لا يمكن نسخ ولصق في هذا الإطار محطة، لذلك سنقوم
فقط محاكاته.
اسمحوا لي التصغير، والذهاب إلى التفاف.
أنا لن تفعل هذا لفترة طويلة جدا، لأنه لن
كسر فعلا في هذا البرنامج.
ولكن يمكن ذلك.
دخول.
لكنها لم تنته.
حسنا.
ولكن من زاوية قضية حقيقية.
والسبب الوحيد الذي تصرف بشكل صحيح، وذلك ل
الكلام، لأن وظيفة GetString CS50 هو في الواقع
صممت تحت غطاء محرك السيارة، كما سنرى في غضون بضعة أسابيع،
تخصيص تلقائيا RAM أكثر وأكثر، وأكثر وأكثر
الذاكرة من نظام التشغيل، عندما يدرك، نجاح باهر،
كتبته حقا في شيء طويلة جدا.
الآن، وهذا هو جزء من كذبة بيضاء.
إذا كنا فعلا توقفت لبعض الوقت وأنا كتبته في
شيء مثل 5 بليون حرف على لوحة المفاتيح
هنا، أو ضرب حقا النسخ واللصق لا بأس به، ونحن من المحتمل جدا
يمكن أن تسبب البرنامج لتحطم الطائرة.
قليلا من الصعب محاكاة ذلك مع محدود
فترة من الوقت.
>> ما هو قضية أخرى الزاوية يمكننا أن نحاول؟
نعم؟
نعم.
فلماذا لا نجيب شيئا؟
لذلك لدينا في الواقع إلى اتخاذ بعض الإجراءات، لأن خلاف ذلك
البرنامج سوف الجلوس هناك وامض طوال اليوم.
ولكن إذا كنت مجرد ضرب أدخل -
حسنا، الآن، ما زالت تبدو خاطئة.
لم يتلف، ولكن ربما هناك الآن فرصة ل
البدء في تنفيذ برنامج أكثر صرامة
يتحقق في الواقع.
وإذا كانت السلسلة، الجملة، الكلمة التي أنا
وكتبته في طول 0، حسنا، ربما يجب أن يصيح في
المستخدم، أو أقول له أو لها للدخول في سلسلة مرة أخرى، بحيث
ونحن في الواقع الحصول على ما يشبه السلوك الصحيح وليس
الرقابة فقط كاملة من جانبي.
>> السؤال في الظهر؟
عدد عشري.
حتى نتمكن من محاولة ذلك أيضا.
1،10000005.
يبدو أن يحدث فقط للعمل حسنا فعلا.
والواقع أن من المتوقع.
على الرغم من أننا قد كتبته هذا العدد هناك، أو
أكبر عدد في وقت سابق، عندما ندرك أن نقوم بكتابة المستخدم
المدخلات ونستخدمه وظيفة GetString، لا
يهم إذا ما أنا بكتابة يشبه الرقم.
يذكر أنه وفقا لASCII، كل شيء على الخاص
لوحة المفاتيح يحتوي على قيمة العددية التي يمكن تعيينها إلى
حرف وحرف.
حتى في هذه الحالة، على الرغم من أنني قد اكتب رقما، على
الكمبيوتر هو الذهاب الى التفكير في الأمر، إذا جاز التعبير، كسلسلة -
شيء يشبه عددا، ولكن
ليس في الواقع عدد.
ولكن هذا في الواقع يواصل. الكمال، لأنه الآن في وسعنا
الانتقال فعلا لكتابة البرامج التي
استخدام أنواع البيانات الأخرى.
>> وإلى جانب ذلك باستخدام حرف، أو بالأحرى، إلى جانب استخدام السلاسل،
ندرك أن لدينا غيرها من أنواع البيانات في C وكذلك في
لغات أخرى.
A حرف، وكما يوحي اسمها، هو مجرد حرف واحد.
A تعويم قيمة النقطة العائمة، وهذا مجرد نزوة
طريقة للقول عدد حقيقي - وهو الشيء الذي لديه العشرية
نقطة فيه مع بعض الأرقام إلى اليسار و / أو اليمين.
والباحث هو عدد صحيح، وهو مجرد رقم مثل 123.
ومن المثير للاهتمام، والآن أكثر من الأشياء مثل مزدوج.
ماذا نقول مزدوج كان آخر مرة؟
انها 64، الحق.
ذلك في حين عادة ما تطفو هو 32 بت -
لذلك فمن هذا الوقت الطويل في الذاكرة، فإنه يستخدم 32 الآحاد والأصفار ولل
تمثل القيم - مزدوج هو حرفيا أن مرتين، والذي
يعني أنك يمكن أن تمثل إما أعداد أكبر، أو
يمكنك تمثيل أرقام أكثر دقة.
حتى تتمكن من الحصول على مزيد من الأرقام بعد الفاصلة العشرية، ولكن
كما قال زميل في شريط الفيديو، وحتى شيء بسيط
المفهوم يمكن مثل 1/3 لا تكون ممثلة على وجه التحديد من قبل
الكمبيوتر، وذلك لأن في نهاية المطاف نفاد بت، و
لذا يمكنك القيام بذلك إلا .33333333 مرات عديدة، في
هذه النقطة لديك فقط أن أقول أنا من التمثيل
الفضاء، لا بد لي من أن مجرد دعوة في اليوم وتمثيله
غير دقيق الى حد ما مثل ذلك.
ومنذ فترة طويلة طويلة -
اسم غبي، ولكن هذا لأنه لا يوجد نوع بيانات يعرف باسم
C طويلة في كثير من الأحيان من قبيل الصدفة التي هي 32 بت، تماما مثل
الباحث هو 32 بت، ولكن هو عملية طويلة طويلة
عموما 64 بت.
لذلك يعني فقط كنت يمكن أن تمثل أكبر
أرقام من هذا.
>> حسنا.
إذا كان الأمر كذلك نريد فعلا لبدء تمثل الأشياء، ونحن
قد تحتاج إلى أكثر أنواع متطورة، و
هذا هو السبب لدينا سلسلة.
حتى في مكتبة CS50، أن ملف يسمى cs50.h، لدينا
أعلن في الواقع نوع البيانات، إذا جاز التعبير، ودعا سلسلة،
ولكن سلسلة غير موجود في الواقع.
هذا هو، مرة أخرى، واحدة من هذه الطبقات ونحن في طريقنا إلى قشر
مرة أخرى في غضون أسبوع أو أسبوعين ورميها بعيدا، وفعلا
ننظر تحت غطاء محرك السيارة على ما هو في الواقع سلسلة، و
كيف تعبر عن ذلك.
ونحن في طريقنا أيضا أن ننظر إلى قيم منطقية.
>> فما كان BOOL في سياق خدش؟
هذا صحيح أو خطأ.
حتى انها مجرد قيمة هذا صحيح أو خطأ، أو إيقاف تشغيله، 1 أو
0، ولكن هل تريد عرض العالم.
حتى في C، وذلك بفضل مكتبة CS50، والتي بدورها
يتضمن مكتبة أخرى تحت غطاء محرك السيارة، لدينا
وصول إلى نوع البيانات التي يطلق BOOL، والتي سوف
تسمح لنا حرفيا لتعيين قيم صحيحة أو خاطئة ل
أشياء في البرنامج.
>> لذلك دعونا المضي قدما هنا وكتابة برنامج القليل الذي
لا شيء التي تشمل عددا بدلا من ذلك.
لذلك اسمحوا لي أن أعود إلى جهاز CS50، اسمحوا لي أن المضي قدما في
إنشاء ملف جديد يسمى هنا -
دعنا نقول فقط شيء بسيط، مثل math.c.
حسنا.
والآن ترتفع إلى أعلى برنامجي، وأنا
تنوي القيام به في المعتاد -
# تشمل ، حتى أستطيع أن استخدام
printf، وكثافة العمليات الرئيسية (الفراغ) -
سوف نعود إلى، في نهاية المطاف، ما يعني كثافة العمليات
هنا، ما يعني الفراغ هنا، ولكن في الوقت الراهن، ونعرف ذلك تماما
عليك أن تبدأ مثل هذه البرامج.
الآن انا ذاهب الى المضي قدما وأقول شيئا قليلا
مختلفة - printf ("أعطني رقم:"
)؛
ثم انا ذاهب الى القيام الباحث ن = GetInt، لأنه
يتحول إلى وظيفة أخرى هي GetInt في مكتبة CS50
إلى جانب GetString.
والآن انا ذاهب الى القيام بشيء غبي، مثل "شكرا
لد٪ "، لعدد صحيح عشري، ومن ثم لا يوجد فاصلة، و
ثم العودة 0.
ذلك مرة أخرى، بإرجاع 0 لا علاقة له مع عدد أنا
يطلب المستخدم ل.
يعني فقط في نهاية أن جميع، ويفترض، على ما يرام.
>> لذلك اسمحوا لي ان اذهب الى بلدي نافذة طرفية هنا.
اسمحوا لي أن اكتب جعل الرياضيات، أدخل.
وشيء من الخطأ.
جعل الرياضيات لم تنجح.
وهنا أول من رسائل الخطأ لدينا.
لماذا؟
A خفي قليلا، ولكن -
نعم.
حتى cs50.h.
ذلك مرة أخرى، في وقت مبكر وخاصة في، سوف تكتب اسمك الأول
برنامج لpset 1 في أقسام، في ساعات العمل، و
بصراحة، وأنها سوف تكون ساحقة في بعض الأحيان ما هذه الأشياء
يقولون في الواقع.
ولكن عليك إدراك بسرعة كبيرة أن تبدأ في الانخفاض
إلى مجموعات حيث هذا واحد يعني أن كنت قد تركت مرة واحدة
من يشمل # في الجزء العلوي من الملف.
وضجيج، ومترجم، وتخبرك من ذلك
وقال: هميا بدلا من ذلك، الإعلان الضمني
GetInt ظيفة غير صالح.
>> حسنا.
فماذا يعني ذلك؟
بل يعني فقط كنت قد أعلنت ضمنا في GetInt
بمعنى أنك لم تعلن بشكل صريح.
أن تعلن صراحة الباحث، لديك لتعليم
رنة أنه موجود.
والحل بسيط جدا لذلك هو تعليم من قبل
بما في ذلك هذا ملف آخر، cs50.h، في
الجزء العلوي من الملف.
لأن حرفيا، ما لا تشمل # هو يحكي ضجيج
الى حد كبير للذهاب العثور على ملف يسمى cs50.h، نسخة،
لصق تلقائيا الى اعلى من برنامجي بالنسبة لي،
ومن ثم تحويل التعليمات البرمجية المصدر إلى الآحاد والأصفار و.
ولكن ذلك سيكون من الواضح شاقة للغاية إذا كان نحن البشر
للذهاب نسخ ولصق هذه الملفات كبيرة في كل وقت،
حتى لا تشمل فقط # كل ما تلقائيا دون
نشوش قانون بلدي مع مكتبة شخص آخر.
والمكتبة هي مجرد ملف يحتوي على وظائف و
أشياء أخرى أن شخصا آخر قد كتب، وأننا
الاستفادة من أجلنا الخاصة.
>> حسنا.
دعونا نحاول مرة أخرى.
جعل الرياضيات.
دخول.
جيدة.
بحيث يبدو أن يعمل.
لذلك اسمحوا لي الآن تشغيل الرياضيات؛ / الرياضيات.
أدخل يعطيني رقم، 123.
شكرا لل123.
الآن دعونا نحاول قضية أخرى الزاوية.
A السلسلة سخية جدا، لأن
يمكن أن يكون أي شيء سلسلة.
يمكن أن ننظر مثل الأرقام، تبدو وكأنها
حرفا، تبدو الكلمات.
لكن الباحث هو الباحث.
حتى الآن إذا أنا المستخدم صعبة، وانها قائلا "أعطني
رقم، "ماذا لو كنت تحاول أن تفعل شيء من هذا القبيل 0،1؟
حسنا، هذا هو العدد، وانها تتفق مع
النحو كنت هنا، ولكن تحت غطاء محرك السيارة، وأنا من
بالطبع باستخدام GetInt ظيفة.
>> لذلك دعونا نرى ما سيحدث.
أدخل، إعادة المحاولة.
حسنا.
اسمحوا لي أن أكون صعبة ومجرد ضرب أدخل مرة أخرى.
أدخل، أدخل.
حتى الآن يبدو أن GetInt هو أكثر من ذلك بقليل
قوة من GetString.
ونحن، الموظفين، نفذت في مثل هذه الطريقة التي اذا لاحظنا
أنت لم تعط لنا الباحث - وكثافة العمليات هو رقم عشري
تحتوي الأصفار، منها، ثنائي، الثلاثات، أربع، الأطفال دون سن الخامسة، الستات،
السبعات، ثمانى، في التاسعة أو.
وهذا كل شيء.
لا الفواصل العشرية، لا حرفا، لا علامات الترقيم.
يبدو أن علينا أن نتعاون.
لذلك اسمحوا لي أن أحاول أربعة، خمسة، ستة، والذي يحصل لي من خلال.
ذلك حقا، ليكون الشرج هنا، أود أن أقول ربما "أعطني
عدد صحيح "من أجل أن تنقل إلى المستخدم
بالضبط ما أنوي.
>> الآن دعونا نفكر تحت غطاء محرك السيارة.
نحن لن ننظر في كيفية تنفيذ cs50.h اليوم،
هذه المكتبة.
ولكن إذا كان يحتفظ قائلا إعادة المحاولة، إعادة المحاولة، إعادة المحاولة، ما البرمجة
أنا باستخدام بناء يفترض تحت غطاء محرك السيارة ل
تنفيذ ذلك؟
حتى مجرد حلقة، أليس كذلك؟
واحدة من أبسط الأفكار التي رأيناها على الصفر.
وبناء للأبد، وكرر بناء.
ويفترض في هذا البرنامج، تحت غطاء محرك السيارة، وحتى
على الرغم من انه مكتوب في C وليس الصفر، فإنه يفعل
ودعا شيء يعادل الأبد إذا كان لدى المستخدم لا
كتبته في عدد صحيح، ويقول إعادة المحاولة، إعادة المحاولة، إعادة المحاولة، إعادة المحاولة، لذلك
ثم أخيرا عندما نفعل الحصول على عدد صحيح، فإنك
الخروج من تلك الحلقة.
>> لذلك يمكن ظائف أخرى ما نستخدمها هنا في مكتبة CS50 على ذلك؟
حسنا، نوع من تلك واضحة، على الأقل استنادا إلى
أنواع البيانات التي نعرفها الآن موجودة.
نفذنا GetString، GetInt، ولكن في جميع أنحاء
الأسابيع الأولى للمصطلح، يمكنك أيضا استخدام وGetFloat
GetDouble وGetLongLong من أجل الحصول على وجه التحديد
أنواع البيانات التي تريدها.
لأن التفاصيل المفتاح هنا هو أنه على عكس بعض اللغات،
مثل بايثون وروبي، حيث لم يكن لديك بالضرورة إلى
تعلن نوع بيانات متغير -
لم يكن لديك لنقول للكمبيوتر أي نوع من الاشياء
وأنت تسير لوضعها في متغير -
في C، عليك أن تكون دقيقة حتى من أي وقت مضى.
حتى إذا كنت ترغب في متغير يسمى N، قطعة من التخزين
أنه في هذه الحالة يحدث أن تكون 32 بت من الاتفاقية، التي
يجب أن نقول للكمبيوتر هذه البتات
الذهاب لتخزين عدد -
ليس حرف، وليس سلسلة، وليس عدد عشري.
وهذا يعالج المشكلة بشكل فعال ونحن
واجهت الأسبوع الماضي.
إذا نحن باستخدام الأصفار والأرقام منها لتمثيل ليس فقط
أرقام ولكن مع الإفطار وخدمات العملاء، وكيف في العالم هو
الكمبيوتر سوف نعرف أن هذا النمط من البتات في الواقع
يمثل عدد 65، بدلا من تمثيل
الرسالة A، التي من قبيل الصدفة، وفقا ل
ASCII، أذكر، كان يعادل 65؟
>> حتى هذه الأنواع من البيانات توفير البيئة المناسبة لجهاز الكمبيوتر، لذلك
أنه يعرف ما إذا كان ينبغي أن تفسر هذه البتات على أنها
الباحث أو كسلسلة.
أي أسئلة، ثم على هذا؟
نعم؟
DAVID J. مالان: سؤال جيد.
إذا أخذنا من stdio.h، ونحن حفظ الملف -
اسمحوا لي أن انتقل لأسفل إلى إطار المحطة الطرفية وتشغيل جعل الرياضيات، والتكبير
وأدخل في -
الآن أحصل على خطأ مختلفة، لأنني ضمنيا
معلنا من هو يعمل الآن؟
Printf.
حتى الآن لقد خلق مشكلة جديدة، هي التي حل
أساسا نفس.
ولست بحاجة لوضع هذه العودة.
AUDIENCE: [غير مسموع]
DAVID J. مالان: أوه.
حتى لو كنت تأخذ بها -
حسنا، نعم.
إذا كان الأمر كذلك يمكنني إزالة إدراج معيار I / O مكتبة لتصل
هنا، وبعد ذلك كنت تقول لو كنت تخلص لل printf، والحصول على
تخليص لل printf؟
نعم.
يجب أن هذا العمل، لأنني لم يعد استخدام أي - يصيح.
أنا لم يكذب فقط؟
أوه، حسنا.
هذا لن يعمل بسبب خطأ جديد قدمنا ​​للتو.
وهذا واحد هو أكثر من ذلك بقليل تحتاج إلى شرح.
>> ما هي المشكلة؟
ن المتغير غير المستخدمة.
لذلك هذا الخطأ هو نتيجة لدينا بعد تكوين
الأجهزة لتكون متحذلق خاصة، ليصيح حقا في
لكم على كل خطأ ممكن، حتى لو كان في نوع من
خطأ غير فادح مثل هذا - هل هو حقا مثل هذا كبيرة
صفقة I تخصيص الباحث، وطرح عددا في ذلك، ومن ثم
لم يفعلوا شيئا حيال ذلك؟
وظيفيا لذا، لا.
هذا لن كسر البرنامج.
انها مجرد نوع من الحق، يا غبي؟
ليس هناك قيمة لأنها طلبت هذا العدد، تخزين
في متغير، إذا كنت لن تفعل أي شيء ل
مع ذلك، ما إذا كان طباعته أو حفظه.
حتى في هذه الحالة، ضجيج، الإقرار بقدر، و
قائلا انها غير متغير غير المستخدمة.
>> حتى نتمكن من إصلاح هذا إذا كنا نريد حقا.
ولكن مرة أخرى، هذه ليست برمجة جيدة الآن.
لذلك يمكن أن تفعل هذا فقط -
النزول هنا، اسمحوا لي أن مسح الشاشة، وجعل الرياضيات.
أن يعمل.
الآن يمكنني تشغيل برنامجي الرياضيات، ويأخذ المدخلات -
حسنا، كان سيئا.
يأخذ المدخلات، وهذا هو كل ما يفعله، في هذه الحالة.
>> في الواقع كان الأمر كذلك، دعونا نحاول حالة واحدة الزاوية الأخرى التي نحن
لم يفكروا في وقت سابق.
في هذه الحالة - وهنا، دعونا نعود إلى واحد وهذا هو
أكثر من ذلك بقليل سهل الاستعمال.
اسمحوا لي أن أعود هنا وجعل تشغيل الرياضيات مرة أخرى.
يصيح، ماذا فعلت بك؟
حصلت لدحر أخرى.
حسنا.
الآن نعود في الحالة الأصلية، حيث كل
شيء على ما يرام نأمل.
والآن إذا قمت بتشغيل الرياضيات، 123 يبدو للعمل.
ولكن هذا ليس دليلا حقا فعالة، لنقول فقط
حسنا، أن يعمل.
789، الذي يعمل.
الوقت لتقديم.
لأن هناك حالات الزاوية الأخرى هنا.
لم سلسلة لا تعطي حقا لنا الكثير من المتاعب عن طريق كتابة في
كله الكثير من الشخصيات.
ولكن ماذا لو كنت اكتب في هذا؟
ضرب الرقم 1 في مجموعها الكثير، الكثير هنا -
كل الحق، هو الحصول على مملة قليلا، لذلك أنا ذاهب إلى
نتوقف هنا، وانا ذاهب الى ضرب أدخل.
>> الجحيم ما حدث للتو؟
حتى يمكن فعلا هذا يمكن تفسيره.
حتى أنها لم تأخذ على أنها ثنائي؟
فكرة جيدة، ولكن لا، انها ليست حقيقة أنه استغرق
كما ثنائي، لأن في الواقع، كان هذا النوع فقط من
صدفة.
يمكننا أن نفعل ذلك مرة أخرى.
لذلك ليس هناك 2 في النظام الثنائي، وهذا
ربما يكفي على أي حال.
دخول.
وكان بحيث لا مشكلة.
وماذا ايضا؟
بالضبط.
>> أعتقد ذلك إلى ما وكثافة العمليات هو في الواقع.
انها 32 بت التي يتم تفسير جماعي
كرقم.
إذا كان لديك 32 بت، وهذا يعني كل من البتات يمكن أن يكون
A 0 أو 1، 0 أو 1
بحيث يعني هناك احتمالين لهذا الشيء،
احتمالين لهذا، احتمالين لهذا
بت - ذلك أن 2 مرات 2 مرات -
ذلك أن 2 إلى قوة 32 هو العدد الإجمالي لل
التباديل من الآحاد والأصفار وإذا كان لديك 32
النائبة، أو تلك الأصفار، أمامك.
إذا كان الأمر كذلك لدي 2 إلى 32، رياضيا، وهذا ما؟
لذلك الكثير.
انها 4 مليارات و يعطي أو يأخذ.
و 4 مليارات لا يبدو أن ما طبع من هنا.
في الواقع، وهذا يبدو أقرب إلى 2 مليار دولار.
ولكن هذا ليس من قبيل الصدفة.
حقيقة أن الكمبيوتر قد يساء تفسيرها رقم هاتفي ضخمة،
بلدي تسلسل ضخمة من تلك ومن ثم تسلسل بلدي ضخمة من ثنائي،
كما حوالي 2 مليار دولار، وأوضح كيف؟
هناك سقف لكثافة العمليات.
هناك بالتأكيد قيمة الحد الأقصى الذي يمكن أن تمثل.
ولكن هذا عادة 4 مليار أليس كذلك؟
إذا 2 إلى ال 32 هو نحو 4 مليار يبدو أن
هذا هو أكبر عدد.
حتى لا تبقى ل، ولكن فكرة جيدة.
الأرقام السالبة.
إذا كان الأمر كذلك لديك 4000000000 الأمور المحتملة التي يمكن
تمثل مع هذه التباديل المختلفة من 32 0S و
1S، حسنا، فمن المنطقي أن نحن البشر قد ترغب في
لا تمثل الأعداد الصحيحة فقط إيجابية
لكن الأعداد الصحيحة السالبة.
وبالفعل، هذا على افتراض أن يجعل C.
حتى مع 32 بت، يمكنك تمثيل سلبية تقريبا 2
مليار وصولا إلى 2 مليار إيجابية.
وحتى في هذه الحالة، ما نراه حقا هو مجرد
هامش قدرة عدد صحيح لدينا، ونحن لدينا، لذلك
في الكلام، وفاض عدد صحيح.
لقد حاولنا أن الالزام أكثر من بت في ذلك من يمكن أن يصلح في الواقع.
وبالتالي فإن النتيجة النهائية هي أساسا لدينا كل بت 1.
لقد انقلبت كل من البتات لدينا على، لقد حاولنا لتمثيل
أكبر عدد ممكن، ولكن من الواضح أنه لا تقريبا
كبيرة بما يكفي لتمثيل الأمرين لقد كتبته للتو فيها
نعم؟
AUDIENCE: [غير مسموع]
>> DAVID J. مالان: سؤال جيد.
لماذا لا نستطيع فقط أن تمثل السلبية
توقيع كحرف واحد فقط؟
حتى نتمكن من الاطلاق، ونحن يمكن أن ينقذ ثم
وبت إضافية.
ولكن كنت لا تزال جارية لديهم لتمثيل ذلك اندفاعة، و
وهذا سوف يكلفك شيئا على الأقل،
يفترض قليلا.
لذا نعم، يمكن أن لدينا 32 بت تستخدم لدينا عدد، ولكن الآن
نحن بحاجة إلى بت تستخدم لاندفاعة لدينا
رمز أو علامة الطرح.
حتى الآن لدينا 33 بت القيم، وهو ما يمكن أن تفعله، ولكن كل ما في الأمر
ليس فقط الطريقة التي فعلت ذلك.
التي قطعناها على أنفسنا حكم سنوات الدعوة قبل 32 بت هو نوع من
وحدة القياس هنا.
لذلك نحن ذاهبون الى استخدام واحدة من هذه البتات بشكل فعال في
تمثل السلبية، و 31 بت لتمثيل الرقم.
أسئلة أخرى؟
حسنا.
وهذا كثيرا.
لماذا لا نذهب إلى الأمام وتأخذ لدينا خمس دقائق استراحة هنا؟
>> حسنا.
ذلك مرة أخرى، وليس لالمبالغة في التشديد على التطبيقات الرياضية
البرمجة، دعونا نتف قبالة هذا مثال واحد
قبل أن ننتقل إلى بنيات أخرى، فقط لأنها
وتوضح بعض النقاط المشتركة عثرة على بعض
أساسيات عندما يتعلق الأمر برامج الكتابة.
في هذه الحالة، والقيام التعبيرات الحسابية التي لديها بعض
مثيرة للاهتمام لأهمية بناء الجملة.
>> لذلك هذا هو مجرد صيغة التي يمكننا تحويل
درجات الحرارة من فهرنهايت إلى درجة مئوية.
إذا كنت لا أذكر، وهذا هو الصيغة فقط.
إذا كان الأمر كذلك فإننا سد العجز في قيمة فهرنهايت 32 درجة، وهو
تجميد، وهذا سيكون سالب 32 32 هو 0، وبالفعل،
0 في مئوية أيضا تجميد.
حتى التعقل سريعة تحقق هناك - هذا هو صيغة مألوفة.
اسمحوا لي ان اذهب الى الجهاز، على الرغم من وبدء
كتابة برنامج يسمى، مثل، f2c؛ "فهرنهايت إلى
ج مئوية نقطة ".
وحتى في أعلى هنا، وانا ذاهب تبدأ مع تضمين #
stdio.h، وانا ذاهب الى القيام الباحث الرئيسي (الفراغ)، و
مرة أخرى، سوف نعود في المستقبل على ما INT يعني
وهناك ما يعني الفراغ هناك.
واسمحوا لي الآن المضي قدما وتنفيذ برنامج
لا أساسا هذا التحويل بالنسبة لنا.
>> printf ذلك، دعنا نقول، ودرجة الحرارة في فهرنهايت.
وثم اسمحوا لي أن تمضي قدما والحصول على قيمة من المستخدم.
ما هو نوع يمكنني الحصول على قيمة من المستخدم إذا أريد
لهم أن تعطيني درجة الحرارة في فهرنهايت؟
نعم؟
ماذا تقترحون؟
نعم.
حتى تطفو يشعر معقولة جدا.
لدينا، مرة أخرى، فقط عدد قليل من الخيارات التي
لقد رأينا حتى الآن.
لدينا أشياء مثل شار، تطفو، مزدوجة، وكثافة العمليات طويلة جدا،
BOOL، السلسلة.
حتى من هذه، تطفو يشعر معقولة جدا.
يمكننا استخدام مزدوج، والحق، لأنه إذا كنا نريد حقا أن
تمثل درجة حرارة الانسان -
98،60000 -
يمكن أن نستخدم 64 بت للقيام بذلك، ولكن بدا الامر وكأننا
مبالغة لدرجة الحرارة.
لذلك دعونا فقط الذهاب مع عدد عشري.
الان انا بحاجة متغير.
فقط للحفاظ على الأشياء البسيطة، انا ذاهب الى يطلق عليه و لكنني
يمكن تماما كما ندعو بشكل صحيح درجة الحرارة،
ولكن هو إما غرامة.
تطفو حتى F = GetFloat.
بمجرد أن الآن قد قررت استخدام GetFloat، على الرغم من أنني
تحتاج إلى إجراء واحد التصحيح.
نعم.
لذلك نحن بحاجة إلى تضمين # ، وإلا فإن المترجم هو
سوف يصيح علينا.
الآن أن لدي تعويم، اسمحوا لي أن نمضي قدما ونفعل في
التحويل.
>> ذلك أولا، اسمحوا لي أيضا الحصول في العادة من هنا
التعليق قانون بلدي.
ذلك مرة أخرى، تعليقا مجرد تدوين لهذا الإنسان
ليست جزءا من برنامج في حد ذاته، ولكن واحدة منه، يساعدك
فهم ما فعلتم في صباح اليوم التالي، أو القادمة
الشهر، فإنه يساعد على فهم زملائك التدريس ما فعلت
أو ما كنت تنوي القيام به، لذلك فمن
عموما جيدة جدا الممارسة.
كل بضعة اسطر من التعليمات البرمجية، أكتب تعليق على
نفسك أو زميلك.
حتى هنا، وانا ذاهب ليقول "اسأل المستخدم للحصول على درجة الحرارة."
ليس من الضروري أن تكون الجملة كاملة، مجرد عبارة قصيرة.
ولكن الفكرة وراء تعليقه في C هي أن كل من لديك
يجب تمكين لكم تعليقات - أو، مثلا، TF أو زميل أ -
لالمقشود البرنامج وتعرف بالضبط ما تقوم به، من خلال عدم
حتى قراءة الكثير من التعليمات البرمجية، ولكن من خلال قراءة التعليقات التي،
يجب أن تكون موجزة وواضحة.
كل الحق، لذلك اسمحوا لي الآن المضي قدما ويقول: "تحويل
فهرنهايت إلى درجة مئوية ". لذلك أنا ذاهب الى المضي قدما والقيام،
دعنا نقول، تطفو ج.
سوف نستمر مئوية كقيمة النقطة العائمة.
>> واسمحوا لي أن أغتنم طعنة في ذلك.
الصيغة هي، مرة أخرى، إلى هنا.
كما 5/9 مرات F ناقص 32.
لذلك دعونا نفعل ذلك.
5 حتى مقسوما 9، ناقص -
يصيح، I عابث عنه بالفعل.
مرات.
حتى 5/9 مرات F ناقص 32.
حتى F ناقص 32، منقوطة.
والآن، إلى هنا، أنا ذاهب إلى المضي قدما
ويقول: طباعة نتيجة.
وهذا الجزء من السهل. Printf.
كيف أذهب حول طباعة هذا؟
حسنا، يمكن أن أقول "هذا الرقم هو في مئوية و٪ \ ن"،
فقط لبعض الجماليات.
ثم ما قيمة لا أريد أن سد العجز في هنا في printf
الحجة الثانية؟
حسنا.
حتى ج فقط.
لذلك سنبدأ مع هذا ومن ثم العودة فقط 0.
مرة أخرى، فإنه لا علاقة له مع الرياضيات.
بل يعني فقط كل شيء على ما يرام.
>> الآن، فهل هذا صحيح، وهذا البرنامج؟
حسنا.
حتى لقد جعل بعض الأخطاء.
حتى لو كان لديك أي فكرة عما هو البرمجة، يمكنك فرز
يستنتج من العودة إلى المدرسة الصف ما
قد تكون أخطاء هنا.
ما هو واحدة من أولى؟
AUDIENCE: [غير مسموع]
DAVID J. مالان: نعم.
لذلك نحن في عداد المفقودين أقواس.
كان متعمدا أن فعلت قوسين في الكلمة الرئيسية
الشريحة هنا، لأنه لا يوجد في الواقع هذه الفكرة من أجل
العمليات، أو الأسبقية، حيث بعض العمليات -
الضرب -
وارتفاع ملزمة، وارتفاع الأسبقية، من الأمور
مثل إضافة أو الطرح.
حتى لقد فعلنا هذا لسنوات فقط لجعل واضحة تماما
ما ينبغي القيام به العملية الحسابية الأولى.
لذلك ينبغي I تقليد ربما هذا بالضبط.
خلاف ذلك، فإن الكمبيوتر هو الذهاب يفترض أن تحاول أن تفعل
شيء من هذا القبيل الفجوة 5 من 9، ثم تتضاعف F، ثم طرح
32 من كل شيء.
وهي ليست، في الواقع، ما نريد القيام به.
لذلك دعونا parenthesize.
دعونا نضيف قوسين بلدي هنا، هنا قوسين.
دعونا نضع هذا هنا.
هنا، لاحظت مجرد خطأ الذي أدليت به على طول الطريق.
نعم؟
AUDIENCE: [غير مسموع]
>> DAVID J. مالان: آه.
جيدة.
لذلك لدينا في الواقع العدد الصحيح نفس
مسألة تقسيم من قبل.
I تصحيح ذلك، دعونا نرى ما هو أعراض.
ولكن ونحن في طريقنا لدينا لتصحيح واحد
خطأ أخرى هنا.
نعم؟
AUDIENCE: [غير مسموع]
DAVID J. مالان: نعم.
لذلك، خطأ غبي قدم لي، ولكن مهم للغاية.
الكمبيوتر لن يتحول مجرد غض البصر وترك
لي استخدام F رأس المال، وعندما أعلن بالفعل المتغير
كما و صغيرة هنا، في السطر 8.
لذلك أنا بحاجة إلى تصحيح في القيمة خطي 11 التي ل
منذ اللحظة كانت لF رأس المال عن طريق الخطأ.
ماذا عن هنا؟
هذا ينبغي أن يكون صغيرة كذلك؟
ينبغي أن يكون، ولكن هذا من قبيل المصادفة.
و أن٪ ليس لديها ما تفعله مع المتغير.
لذلك لمجرد أن يكون واضحا هنا السوبر، اسمحوا لي أن المضي قدما في
إعادة تسمية هذا، لفترة وجيزة، "درجة الحرارة". اسمحوا لي أن إعادة تسمية
هذه "الحرارة". اسمحوا لي أن لا إعادة تسمية هذا.
لأنه، مرة أخرى، و٪ يعني على الصعيد العالمي، "تطفو قيمة النقطة."
ليس له اي علاقة مع متغير بلدي.
ولكن "درجة الحرارة" في جميع أنحاء المكان قليلا الالفاظ،
لذلك أنا ذاهب الى العودة الى بلدي صغيرة S "و".
>> الآن، اسمحوا لي أن تمضي قدما وصولا الى نافذتي هنا.
جعل f2c -
الذي كان، مرة أخرى، اسم التعسفي I
أعطى لهذا الملف.
ويبدو أن المترجمة.
اسمحوا لي أن تشغيل f2c.
دخول.
درجة الحرارة في فهرنهايت - دعونا نفعل سهلة.
32.
OK، تصحيح.
ولكن، إذا كنت تفعل الآن 212 للغليان -
لعنة.
حسنا.
لذلك، من الواضح غير صحيح، إذا TF الخاص يحاول
اثنين على الأقل من القيم.
فما هي المشكلة هنا؟
حسنا، كنت وضعت بالفعل إصبعك على ما المسألة.
ولكن لماذا هو أن هذه القضية؟
هنا، عندما كنت أقوم بعمل الرياضيات من 5 مقسوما على 9.
من الناحية المفاهيمية، لدرجة أن هذا صحيح تماما.
يتفق تماما مع الصيغة.
ولكن أجهزة الكمبيوتر فقط القيام بالضبط ما كنت
نقول لهم القيام به.
وماذا نحن نقول بشكل فعال الكمبيوتر هنا هو
تقسيم عدد صحيح من قبل ال 5 في 9 عدد صحيح
وتعطيني النتيجة.
المشكلة هي، مع ذلك، عندما كنت تقسيم باستخدام بيانات
أنواع، والناتج هو نفس نوع البيانات والمدخلات.
وحتى إذا كان كل من المدخلات هما رجات، والناتج هو الذهاب
أن يكون الباحث.
وحتى 5 مقسوما على 9 هو شيء النقطة.
ولكن ما هو أقرب عدد صحيح للإشارة شيئا؟
لذلك، فإنه في الواقع 0.
وذلك يوم الاثنين ناقشنا كل شيء بعد العلامة العشرية
يحصل اقتطاع نقطة.
هو فقط يحصل بعيدا.
لذلك هذا هو الخطأ التام، لأنني قد وكذلك فقط
تتضاعف كل شيء هنا من قبل 0.
>> الآن، لا أستطيع إصلاح هذا في عدة طرق.
يمكنني أن أفعل هذا.
5.0 مقسوما على 9.0.
من الناحية الفنية، وأنا لا تحتاج حتى للقيام بذلك.
فإنه لا يكفي لجعل مجرد واحد من عدد عشري الأرقام -
أو مزدوجة - عن طريق وضع الفاصلة العشرية هنا.
لأن ما يحدث الآن هو عند تقسيم عدد صحيح من قبل
عدد عشري، أو مزدوج ل، الكمبيوتر الذي يحدث لتحقيق
أوه، هو واحد من تلك أكثر دقة.
اسمحوا لي أن يخطئ على جانب مما يتيح لك المزيد من الدقة من
يقصد لك.
لذلك فإنه سيتم تحويل النتيجة -
فإنه سيعود النتيجة كقيمة النقطة العائمة أيضا.
ذلك أن هذا العمل.
ومن شأن هذا العمل.
وهناك آلية واحدة الأخرى التي سنرى في
بمزيد من التفصيل في الأسبوع القادم.
يمكنك في الواقع، ومبرمج، ونقول للكمبيوتر
لعلاج في الواقع واحدة نوع البيانات كما
على الرغم من أنها كانت آخر.
>> لذلك يمكن القيام به في الواقع أنا هذا.
بين قوسين، أستطيع أن أقول شيء من هذا القبيل (تعويم)، مفتوحة
PAREN، PAREN إغلاق.
وهذا ما يسمى "الصب". مرة أخرى، وأكثر
على هذا في الأسبوع القادم.
ولكن هذا هو مجرد وسيلة لإخبار البرنامجية
الكمبيوتر، نعم أنا أعلم 9 هو عدد صحيح أو لفترة طويلة.
وأنا أعلم أنه لا قيمة النقطة العائمة.
ولكن التعامل معها على هذا النحو على أي حال.
ذلك ليلقي نوع البيانات يعني لتحويل
من واحدة إلى أخرى.
بصراحة، هذا هو قليلا القبيح، لذلك أقترح أن نذهب
عودة إلى اقتراح الأصلي لتحويل فقط
هذه الأشياء لتطفو القيم نقطة يدويا.
لأنه الآن انها مجرد سوبر واضحا ما الذي يحدث، و
انها ليست كل ما يلهي.
>> لذلك دعونا الآن نعود إلى إطار المحطة الطرفية بلدي.
جعل f2c.
اسمحوا لي أن تمضي قدما وتشغيل هذا.
و، بوصفها جانبا، والحصول على بالملل من كتابة هذه الأوامر
مرارا وتكرارا، ندرك أن أجهزة الكمبيوتر، مثل لينكس هنا،
تميل إلى أن تكون ذكية جدا.
وإذا كنت تصل إلى أعلى، يمكننا أن نذهب من خلال تاريخ بلادي كامل
الأوامر، صعودا وهبوطا.
حتى في هذه الحالة هنا، يمكنني أن أذهب للتو لتشغيل جعل f2c.
أنا يجري I صرخ في و، لأنني فعلت ذلك ثانية مضت.
انها بالفعل حتى الآن.
حتى الآن لا أستطيع تشغيل f2c مرة أخرى.
دعونا نحاول 32 فهرنهايت.
الآن دعونا نحاول 212 فهرنهايت.
>> تفو.
يبدو للعمل.
الآن، وهذا أمر جيد، لكنه يشعر قليلا التعسفية التي
أنا تظهر بعد ستة أرقام النقاط العشرية.
أليس كذلك؟
إذا كنت الشخص الطقس على شاشة التلفزيون، وكنت نوع من doofus
إذا كنت تقرأ درجة الحرارة إلى
هذه الدرجة من الدقة.
لذلك دعونا تبسيط هذه.
لذلك دعونا نذهب فعلا إلى هنا، إلى printf بلدي.
ونعم، أريد أن تطفو.
ولكن أريد أن تحديد الآن الدقة.
وانا ذاهب الى أن تكون مقتضبة قليلا.
انا ذاهب الى القول، أعطني نقطة واحدة بعد منزلة عشرية.
وذلك بدلا من القول و٪، انا ذاهب الى القول٪ .1 و.
وهذا يعني فقط أن تعطيني وظيفة واحدة
بعد العلامة العشرية.
حسنا.
دعونا نحاول هذا مرة أخرى.
اسمحوا لي أن أعيد تشغيله بعد تجميع.
واكتب الآن وأنا في 32، وأعود ل
أكثر اقتضابا القيمة.
وأستطيع أن اكتب في، الآن، 212، والعودة لأكثر اقتضابا
قيمة كذلك.
وهناك أشياء أخرى يمكنك القيام به مع printf.
يمكنك تحديد كيفية واسعة في الواقع عدد ينبغي أن يكون.
إذا كنت تريد أن يكون الحشو على ذلك، لذلك يمكنك النقر بزر الماوس أو محاذاة
اليسار محاذاة كل الأرقام الخاصة بك أو من
محاولة الأمور الوسط.
تحقيق ذلك هناك القليل الحيل يمكنك القيام به هناك.
ولكنها تغلي فقط وصولا الى رموز تنسيق،
لدينا مثل هناك.
>> لذلك من حيث هذا العدد من الأسبقية.
هذا هو جدول مملة جدا للذهاب من خلال منهجية.
ولكن ندرك أن واضعي C قد حان حتى مع
القواعد التي تحدد المشغلين أعلى
الأسبقية، والسلطة، أكثر إلزاما، أكثر من غيرها.
ذلك في حين أنه في المدارس الابتدائية، كنا نعرف أنه كان عموما
الضرب والقسمة، ثم الجمع والطرح،
ثم بعض الأشياء الأخرى.
في عالم البرمجة، وهناك الكثير
قائمة طويلة من الأشياء.
وهذا ليس شيئا يستحق حفظ الآن.
سوف تحصل على تأقلم لك ذلك قبل فترة طويلة.
ولكن مثلما هو الحال في المدارس الابتدائية، حل عموما قوسين
قضايا الأسبقية، من خلال جعل سوبر واضحة لل
الكمبيوتر والإنسان على حد سواء المقصود.
والنظر في ذلك الأمر مجرد ورقة الغش قليلا هناك.
ولكن معظم هذه التفاصيل فإننا لن نصل إلى لبعض الوقت.
>> حسنا.
الآن، دعونا نبنى والابتعاد عن هذه قليلا سخيفة
أمثلة الرياضية.
لا تزال تستخدم نفس الأسس، ولكن بدء
معربا عن أنفسنا أكثر من ذلك بقليل مثل الصفر.
حتى في سكراتش، كان لدينا هذه التعبيرات المنطقية.
وباللغة الإنجليزية، تعبير منطقي ما هو؟
صحيحة أو خاطئة.
انه شيء يقيم إلى صواب أو خطأ.
1 أو 0.
أو إيقاف تشغيله.
كل ما تريد أن نسميها.
الآن في سكراتش، بدا قطع اللغز مثل هذا.
وهذا هو الجمع، وعلى الجزء السفلي هناك، من ثلاثة
لغز قطعة.
واحد جنبا إلى جنب -
شيء له فارغة وفارغة.
ثم تعبيرين منطقية داخل منه.
حتى تتمكن من التعبير عش منطقية للحصول على مزيد من
معقدة التعبيرات المنطقية.
على سبيل المثال، إذا كان هو يوم السبت، وأنه من الجيد
الطقس، ثم انتقل خارج.
أو شيء من هذا القبيل التعسفي.
حتى تتمكن من الانضمام إلى التعبيرات المنطقية التوصل إلى
ويستند قيمة أكبر الحقيقة، التي الجواب
على أصغر.
>> الآن، في C، والحمد لله، هذا التعيين هو
في الواقع بسيط جدا.
مساعدة قوسين يكون الامر واضحا هنا.
&& هو ما يعني "و". لذلك هذه هي الطريقة
ونحن في طريقنا لتحويل تلك الكتل من الصفر لC.
وبالنسبة للظروف رأينا في سكراتش، على اليد اليسرى
هناك الجانب، ويمكنني أن رصها وبالمثل في C. إذا كانت x غير أقل
من Y، ثم القيام بذلك.
والا اذا X أكبر من Y، ثم القيام بذلك.
آخر منطقيا يجب أن تكون على قدم المساواة، يقول ذلك
أن تكون على قدم المساواة.
لذلك يمكننا أن نبدأ الآن لبناء هذه الامور.
>> لذلك دعونا نفعل مثال على ذلك.
اسمحوا لي أن تفتح ملف هذا على الموقع الإلكتروني للدورة بأن
كتبت مسبقا.
ويسمى هذا nonswitch.c.
وسوف نرى لماذا في لحظة واحدة.
حتى في هذا الملف - nonswitch.c--
ندرك أولا أن هناك مجموعة كاملة من
تعليقات في الأعلى.
هذا ما يفسر فقط اسم الملف، ما
لا، وهكذا دواليك.
ويظهر على ما يبدو استخدام منطقية AND جي -
مشاركا تعبيرين.
>> لذلك دعونا نرى كيف يعمل هذا البرنامج.
I تشمل بلدي اثنين من الملفات، وcs50.h stdio.h.
إذا كنت انتقل لأسفل، الآن، إلى البرنامج، انها لفترة أطول قليلا
لقد كتبنا من قبل، ولكن قراءة جميلة.
لذلك أنا أول من طباعة المستخدم، على خط 18،
"أعطني عددا صحيحا بين 1 و 10". هكذا
وهذا حق هناك.
الآن يمكنني الحصول على عدد صحيح.
ولكن ندرك أن GetInt - بسيطة جدا.
انها مجرد الذهاب للحصول على كثافة العمليات.
انه سيكون للتأكد من أنها لا تحصل على الباحث وليس
سلسلة أو طوف.
ولكنها لن تفعل أي نوع من التدقيق الحدود.
انها ليست الذهاب الى تصفية الأرقام لتكون بين
بعض النطاق.
لذلك لدينا لتنفيذ ذلك أنفسنا.
تماما مثل ذلك في سكراتش، حيث يمكن القيام اقتران
تعبيرين، ويمكنني أن نفعل ذلك في C على النحو التالي.
إذا كانت n أكبر من أو تساوي 1، و n هو أقل من و
أو يساوي 3، وانا ذاهب الى المرسوم تعسفية جدا أن
عدد أن يكون عدد قليل.
لمجرد بيان.
والا اذا n هو بين 4 و 6 و الطباعة "اختار لك وسيلة
عدد. "آخر إذا n هو ما بين 7 و 10، الطباعة" التقطت أنت
عدد كبير. "آخر طباعة" يمكنك اختيار عدد غير صالح. "
لأن منطقيا، الذي يتبع إذا قمنا
لدينا مجموعة استنفدت.
>> ندرك حتى هذه ليست تماما كيف نكتب أكبر من أو
يساوي في فئة الرياضيات.
أليس كذلك؟
عادة ما ترسمه من هذا القبيل، مع خط تحتها.
ولكن لا يوجد مفتاح على لوحة المفاتيح مثل بلدي.
وبالتالي فإن الرمز في التعبير عن C أكبر من أو
هو يساوي حرفين، ورمز لأقل من
أو يساوي هو حرفين أيضا.
حسنا.
حتى إذا قمت بتشغيل هذا البرنامج، يمكنك تخمين ما ربما انها
تنوي القيام به.
إذا ذهبت إلى الأمام وجعل nonswitch، أدخل.
ثم قم بتشغيل nonswitch.
أعطني رقما بين 1 و 10.
أنا ذاهب لاعطائها 11.
وقد اخترت عددا غير صالحة.
اسمحوا لي أن أحاول الرقم 3.
وقد اخترت عدد قليل.
ذلك اضحة إلى حد ما هناك.
>> ماذا لو كنت ترغب في تغيير سلوك هذا البرنامج و
القيام بشيء مختلف قليلا بدلا من ذلك؟
اسمحوا لي أن تمضي قدما وأقول هذا.
اسمحوا لي أن تخلص من كل هذا.
واسمحوا لي أن أقول إذا (ن == 42).
ثم انا ذاهب الى المضي قدما ويقول الطباعة "التقطت يمكنك
الجواب الصحيح. "آخر ونحن ذاهبون الى المضي قدما ويقول:
printf ("التقطت لك في
إجابة خاطئة ")؛ حسنا.
لمجرد.
>> الآن، بعض النقاط يمكننا أن نجعل هنا.
واحدة، لم أكن اكتب الرمز الذي كنت اعتقد هو
معقولة جدا.
عندما كنت تريد أن تحقق المساواة وتبين لك لا تستخدم
علامة المساواة.
بدلا من ذلك يمكنك استخدام علامة المساواة على قدم المساواة.
وربما يكون السبب في ذلك، حدسي فقط؟
نعم.
AUDIENCE: [غير مسموع]
DAVID J. مالان: تصحيح.
ويستخدم بالفعل علامة المساواة للتعيين.
لم لا تعتقد حقا شخص من خلال هذا.
وحتى الآن، عندما يتعلق الأمر اختبار المساواة، علينا أن
تكون أكثر وضوحا، ويقول يساوي يساوي.
وهناك خطأ شائع جدا هو أن تفعل هذا.
، وإذا كان في ساعات العمل أو في وقت ما الاسبوع المقبل أو في
الاسبوعين المقبلين تفعل شيئا من هذا القبيل ومن ثم
النضال معها لمدة 10، 20 دقيقة في محاولة لمعرفة
ما هو علة لعنة، ندرك أن كنت واحدا من هؤلاء
الناس الذين جعلوا هذا خطأ.
لذلك، سوبر سهلة لجعل.
ولكن الهدف الآن هو درء هذا الخطأ.
وهذا يمكن تقييم، لأن ما هذا القول حقا؟
إذا كانت n يحصل 42.
وبالتالي فإن استخدام الفعل الناس، لفظيا، للتعبير عن
فكرة الاحالة "يحصل". إذا كان الأمر كذلك ن يحصل 42.
وهذا يعني تعيين 42 إلى ن.
الآن لدي التعبير المنطقية بين قوسين،
داخل هذا الشرط، وقيمة وهو 42.
أليس كذلك؟
لأنه إذا كنت تقييمها من الداخل الى الخارج، ومجموع
الجواب، الآن، هو 42.
>> إذا كان الأمر كذلك طلبت منك هذا السؤال: "إذا (42)،" ما هو
هذا القول حقا؟
حسنا، يمكن أن تكون التعبيرات المنطقية فقط صحيحة أو خاطئة.
1 أو 0.
أو إيقاف تشغيله.
لذلك نحن يبدو أن لديها حالة الزاوية هنا، حيث كل من
فجأة، أنا أقول "إذا (42)". ليست قيمة منطقية.
فما أجهزة الكمبيوتر القيام به، رغم ذلك، هو أنه يعادل أساسا
يتم تفسير أي شيء غير 0 ليكون صحيحا.
1.
على.
انهم جميعا ما يعادل وظيفيا.
فقط القيمة 0، أو الكلمات الرئيسية كاذبة، لأننا سنقوم
انظر في نهاية المطاف، هو في الواقع زائفة.
حتى "لو (42)" سيكون في الواقع الحقيقي، لأنه غير الصفر.
بحيث تكون أكثر دقة هنا، قيمة منطقية في الحقيقة ليست هكذا
صحيح كثيرا أو كاذبة، ولكن لهذا
الحالة، إذا هي 0 أو غير صفرية.
كاذبة كاذبة ذلك أم لا.
والذي يسمح لنا ليشمل جميع المزيد
الاحتمالات في التعبير بين قوسين.
لذلك نحن بحاجة إلى ذلك، بحرص شديد، أقول هذا -
إذا (ن == 42).
لأنه ببساطة نحن بحاجة إلى تحديد اختبار المساواة،
لا احالة قيمة.
>> ماذا الجدير بالذكر هنا؟
هذه الأقواس المتعرجة هي في الواقع ليست ضرورية.
لقد تم القيام بها لمجرد أن يكون أحمق من الصعب إرضاءه هنا.
ولكن عندما يكون لديك شرط أن لديه سطر واحد فقط من
رمز، للسهولة، المبرمجين لا تحتاج إلى استخدام
الأقواس المتعرجة.
يكفي لوضع مسافة بادئة للتو، لأسباب جمالية، و
ثم كتابة سطر من التعليمات البرمجية الخاصة بك.
فقط عندما كنت تريد أن تكتب سطرين من التعليمات البرمجية - ل
المثال، عدا ذلك printf ("وداعا!"). إذا كنت تريد أن تفعل
أن ما تم كسر هذا.
يمكنك البادئة كل ما تريد، ولكن الحقيقة أن لديك
كتابة سطرين من دون استخدام رمز الأقواس المتعرجة
يعني أن هذا البرنامج لن يعمل بشكل صحيح أو قد
لا ترجمة حتى بشكل صحيح.
حتى الآن، أن نكون صادقين، وأعتقد أن أفضل هو مجرد عادة
استخدام الأقواس المتعرجة، وستجد أنها تجعل
سوبر واضحة ما يجري.
>> أيضا، بوصف ذلك جانبا - وخاصة إذا كنت من بين أولئك الذين يستخدمون
الكتب الموصى بها أو الموارد على الإنترنت -
ندرك أن هناك هذه الفكرة في أسلوب
البرمجة.
وبعض الناس يفضلون في الواقع لوضع متعرج
أكثر من هنا على الخط.
بعض الناس يفضلون أن تفعل أشياء سخيفة،
مثل وضعها هنا.
ليس هناك إجابة خاطئة عندما يتعلق الأمر
النمط، ولكن هذا خطأ.
ولكن بعض الناس يفعل ذلك.
[ضحك]
DAVID J. مالان: وهكذا وأذكر هذا الآن، وذلك ببساطة لأنه كما
أنت تقرأ على الأشياء في الكتب أو عبر الإنترنت، وأنت تسير في الحصول على
رسائل مختلفة من المعلمين ومختلفة
مؤلفين مختلفين.
وندرك ذلك تماما، وظيفيا، وانهم
تعادل عموما، ولكن أن تكون متسقة.
حتى في هذه الحالة، سنقوم على توحيد مجعد
الأقواس يصطفون هنا على اليمين.
>> حسنا.
لذلك دعونا الآن المضي قدما وتشغيل هذا، ونرى ما سيحدث
مع هذا البرنامج.
جعل nonswitch.
ثم تشغيل nonswitch.
أعطني عدد صحيح بين 0 و - حتى هذا لا ينطبق
بعد الآن، ولكن انا ذاهب فقط أن أقول بشكل تعسفي 42.
والتقطت الجواب الصحيح.
حسنا الآن، دعونا نلقي هذا الواقع في اتجاه مختلف.
اتضح أن هناك بعض بناء الجملة الأخرى التي
يمكنك استخدامها في البرنامج.
وهنا قطعة جديدة من بناء جملة غير وظيفيا نفسه،
ولكن فقط يقدم وسيلة أخرى للتعبير عن أنفسنا.
لذلك هذا هو ما يسمى "بيان التبديل." وعلى
بيان التبديل تعمل على النحو التالي.
فإنه يأخذ، بين قوسين، وهو القيمة التي تريد
"التبديل" على.
تريد تتصرف بشكل مختلف يعتمد على قيمتها.
لذلك هذا يعني التبديل على قيمة n.
وماذا يعني هذا؟
حسنا، إذا كان n هو 1 أو 2 أو 3، والمضي قدما وطباعة "أنت
اختار عدد كبير "وكسر ذلك الحين.
سبب انقطاع هو أن الطريقة C يعمل كما هو
في أقرب وقت ما عثرت على حالة يطابق، ويبدأ تنفيذ
كافة التعليمات البرمجية تحته.
إذا كان الأمر كذلك لدي سطر واحد من التعليمات البرمجية، كما أفعل أنا هنا على الخط 27، أنه
يعدم.
إذا أضيف خط آخر هنا، ويحصل على تنفيذه.
هنا خط آخر، ويحصل على تنفيذه.
يتوقف البرنامج عن تنفيذ ما هو إلا أقل من
ينطبق بيان الحالة عندما كنت صراحة
ويقول "كسر". ذلك خطأ.
الحق، في هذه الحالة، نتيجة لذلك.
4 حالة أو 5 أو 6، وبالمثل، يجري
لطباعة رسالة.
في هذه الحالة، عدد المتوسطة.
كسر.
حالة 7، 8، 9، 10، انه سيكون لطباعة "أنت التقطت كبيرة
عدد. "فاصل.
وبعد ذلك هناك حرفيا كلمة رئيسية بعنوان "الافتراضية"
وهذا على نحو فعال مثل "آخر" بناء.
بناء جملة ذلك جديد، ولكن فكريا،
لا شيء على الإطلاق هنا جديد.
انها مجرد مثل الصفر.
إذا، الا اذا، الا اذا، نوع من كتلة.
>> ذلك أن النسخة تحولت من هذا البرنامج.
ولكن لاحظت أن فعلنا ذلك مع أرقام هنا.
اسمحوا لي أن فتح نسخة ثانية، فقط لاظهار
أكثر من ذلك بقليل شيء ملموس.
حتى هنا لدينا درجات بدلا من ذلك.
تبين أن تتمكن من استخدام مفاتيح ليس فقط على أعداد صحيحة، ولكن على
حرفا.
ليس في كل أنواع البيانات، ولكن على الأقل حرفا.
حتى هنا، يمكن أن نفعل شيء من هذا القبيل إذا كانت قيمة C التي
المستعمل في طباعة، في السطر 19، وذلك باستخدام وظيفة GetChar،
هي عاصمة A أو صغيرة ل، دعونا تفسر على أنها الصف،
ويقولون انهم على درجة التقطت ممتازة.
ونزولا على طول بيان التبديل، لدينا أخرى
حالات ليالي "B" و "C" ليالي، وهكذا دواليك.
ولكن دعونا الآن من أصل واحد على مدار الشيء الآخر.
ومرة أخرى، من خلال نوع من الطيران
بعض من هذه الأمثلة.
ولكن هذا حقا حتى نتمكن من تطبيقها، والآن -
أو حقا، ترجمة منهم فقط الآن -
لC.
>> لذلك اسمحوا لي نمضي قدما ونفعل ذلك.
أنا ذاهب لفتح ملف جديد.
وانا ذاهب الى القيام تشمل .
ثم انا ذاهب الى القيام الباحث الرئيسي (الفراغ).
اسمحوا لي أن حفظ هذا الملف كملف loop.c.
كما مجرد مثال.
وانا ذاهب الى المضي قدما والقيام بما يلي.
أريد أن أكتب برنامج شاقة للغاية.
حتى 10.
دعونا نفعل هذا.
9.
حسنا.
بمجرد البدء في القيام بذلك في البرمجة، وكنت
ربما يفعل شيئا خاطئا.
ولكن سنبدأ هناك على أي حال.
عفوا.
ما هو خطأ في الواقع.
7.
6.
5.
4.
لا شيء سيحدث عندما نصل إلى 0.
3.
2.
1.
حسنا.
0.
حذف.
>> حسنا.
العودة حتى 0.
ولذلك فإن هذا البرنامج سيكون من الواضح أن تفعل ما جدا
يقول مضجر انها تنوي القيام به.
انه سيكون لطباعة كل تلك
القيم، من الأعلى إلى الأسفل.
لذلك اسمحوا لي أن تفعل جعل حلقة.
وبعد ذلك - يصيح.
جعل حلقة.
كنت في الدليل خاطئ.
واسمحوا لي الآن تشغيل الحلقة.
دخول.
Woohoo.
لطيفة جدا.
لطيفة، برنامج طويل.
>> كل الحق، ولكن الآن دعونا نفعل ذلك بشكل أفضل.
مثلما هو الحال في سكراتش، عندما بدأت باستخدام حلقات
بناء، بدلا من مجرد نسخ ولصق كل من
قطع اللغز، اسمحوا لي أن أعرض هذا الشيء.
حتى في C، وهناك بنيات حلقات مختلفة،
واحدة من التي تبدو مثل هذا.
A "ل" حلقة لديه ثلاثة أشياء، فصل من قبل اثنين من منقوطة.
وبعد ذلك، داخل الجسم من الحلقة، إذا جاز التعبير - لل
داخل الاشياء من الأقواس المتعرجة -
يمكننا أن نفعل شيئا مرارا وتكرارا.
ذلك ما قلته هنا على الشاشة، وهذا هو
حرفيا مجرد تعليق.
و/ / يعني هنا يأتي تعليقا.
هذه ليست تعليمات برمجية.
هذا هو وصف مجرد الإنجليزية، بالنسبة لي، فإن الإنسان.
>> حتى التهيئة والشروط والتحديثات.
حسنا، دعونا نرى كيف يعمل هذا.
هذا يتيح لي الفرصة لإعادة كتابة هذا البرنامج على النحو التالي.
ل-
حتى هنا يأتي حلقة بلدي -
كثافة العمليات ط -
هنا يأتي متغير يسمى "أنا" -
يحصل تهيئة إلى 10.
حتى لا يكون هناك تهيئة بلدي.
أريد أن أفعل هذه الحلقة ما دام "أنا" هي أكبر من أو
يساوي 0.
وعلى كل التكرار من هذه الحلقة، أريد
للقيام ط -.
حتى رأينا + + يوم الاثنين.
- هو عكس ذلك.
من التناقصات القيمة بمقدار 1.
داخل هذه الحلقة، أريد أن أفعل شيئا في الواقع.
لذلك أنا ذاهب لأقول شيئا مثل printf.
أنا لا أريد أن أقول 10 الآن، لأن هذا هو الواضح فقط
الذهاب لطباعة نفس القيمة.
ماذا أريد لطباعة بدلا من ذلك، ربما؟
نعم.
حتى "أنا". د٪ حتى، ط.
>> لذلك أنا ذاهب لسرقة واحدة من تلك الأفكار من قبل -
هذا عوضا عن رموز شكل -
ثم إلى هنا، في الأسفل، سوف أعود 0، فقط
لحسن التدبير.
ولكن الآن، ولدي برنامج أكثر اقتضابا.
انها فقط بضعة أسطر، وخطوط لا نحو 10 أو 11.
اسمحوا لي أن انتقل إلى موجه إلى أسفل هنا.
طبعة جديدة الحلقة.
أعد تشغيل الحلقة.
ويبدو أن تكون هي نفسها.
الآن، البرنامج لا أكثر إثارة للاهتمام.
ولكن الآن لا أستطيع كتابة شيء من هذا القبيل.
يمكنني تغيير هذا إلى 100.
لا أستطيع إعادة ترجمة ثم برنامجي.
وبعد ذلك يمكنني أن أعد تشغيل برنامجي.
والآن يذهب بسرعة فائقة على أجهزة الكمبيوتر اليوم.
ولكن هناك لدي -
وفعلا، عازلة بلدي لا scrollback
حتى الذهاب إلى هذا الحد.
هناك نذهب.
هناك لذلك لدينا كل 100.
ولكن من السهل أن يخطئ هنا.
ما يحدث ليكون السلوك المتوقع إذا كنت
القيام بطريق الخطأ ذلك؟
حتى بدا الامر وكأننا لا نهائية.
لذلك دعونا نرى ما اذا كان الكمبيوتر يتصرف.
>> لذلك اسمحوا لي المضي قدما وجعل حلقة.
واسمحوا لي أن تشغيل الحلقة.
لذلك دعونا نعود إلى ذلك في لحظة واحدة.
سنقوم ترك هذا المدى.
لأن ما ينبغي أن نعول حتى، الحد الأدنى؟
ربما لا يقل عن 2 مليار دولار، اذا كان لدينا أن العديد من معاهدات الاستثمار الثنائية، و
نستخدمه القيم الإيجابية.
لذلك دعونا القفز إلى هنا.
وإلى جانب هذه الأنواع من الحلقات، لدينا ما يسمى في حين
الحلقات. لذلك، تماما كما في سكراتش، كان عليك للأبد
كان كتل، كتل وكنت كرر.
وبالمثل، في C، عليك بطرق أخرى
للتعبير عن نفسك.
بحيث يكون لديك هذه الفكرة من حلقة في حين تسمح لك
التعبير عن نفسك بشكل مختلف قليلا.
ثم لديك ما يسمى حلقة افعل حين،
التي تعمل بشكل مختلف قليلا أيضا.
وسنقوم بصرف النظر ندف هذه مع مرور الوقت.
>> ولكن دعونا نلقي نظرة على هذا واحد آخر هنا.
إذا دخلنا -
يزال قيد التشغيل.
انها لا نهائية جميلة.
لذلك اسمحوا لي أن انتقل إلى إيجابية، وتبين كيف يمكننا فعلا
تحكم إدخال المستخدم قليلا على نحو أكثر فعالية.
انها قصيرة جدا البرنامج.
وهنا لدينا، في الرئيسية، وكثافة العمليات ن الإعلان.
حتى تعطي لي متغير يسمى ن. الآن، أقول حرفيا
"لا." ومن ثم أنا عندي مفتوحة مجعد
قوس، متعرج إغلاق.
وتلاحظ ذلك الحين، الحق بعد ذلك، في حين تقول ن
أقل من 1.
تلاحظ هذه الخطوط بحيث -
19 حتي 24 -
يؤلف جماعيا حلقة افعل الوقت.
ومرة أخرى، بناء جملة جديدة، ليست فكرة جديدة.
انها مجرد طريقة أخرى للحلقات، ذو بناء جملة.
فماذا تفعل هذه؟
قم بما يلي في حين أن n هو أقل من 1.
فماذا أريد القيام به؟
أطالب أن تعطيني عدد صحيح موجب.
ثم أحاول فعلا للحصول على عدد صحيح من المستخدم.
ولكن من حيث ترتيب العمليات هنا، وذلك لأن
بينما الشرط هو إلى هنا، أنا ذاهب للتحقق من ثم، هو ن
أقل من 1؟
لنفترض بحيث يمكن للمستخدم -
بعد أن طالب بهذه الطريقة -
أنواع في القيمة 0.
هذا الشرط ستكون صحيحة أو خاطئة؟
حسنا، انها في طريقها فعلا ليكون صحيحا.
لأن n هو 0، و0 أقل من 1.
فماذا يعني أن؟
نفعل ذلك مرة أخرى.
مرة واحدة فقط هذا الشرط يقيم إلى FALSE.
إذا كان نوع I في 42.
حسنا لا، 42 ليست أقل من 1.
لذلك يتم تنفيذ هذه الحلقة.
وحتى في تلك المرحلة، سيقوم البرنامج يقول، شكرا ل
ال 42، في هذه الحالة.
والآن بعد أن لديك هذه الطريقة في التعبير عن نفسك -
لا ينبغي لنا أن ننتظر هذا حتى النهاية.
انها سوف يستغرق بعض الوقت.
أن تستمر في المرة القادمة، ربما.
>> ولكن الآن، لديك القدرة على أمل لفهم
قليلا من الفكاهة المهوس.
الاعتذار.
هذا لا يمثل النكتة في علوم الكمبيوتر
العالم، لكنه لطيف.
[ضحك] دعونا نهاية على تلك المذكرة.
وسوف نرى لك يوم الاثنين.
[تصفيق]