ROB: حسنا. مرحبا بكم في القسم الأول. أنا روب. جوزيف: أنا يوسف. ROB: لذلك نحن سوف الغوص الحق فيها. أول شيء للحديث عن هو جهاز. لذلك نأمل أن يكون لديك أكثر من تحميلها بالفعل. ولكن يمكنك الاطلاع على التعليمات في cs50.net/appliance. يا الله، أنا الآن الذاتي واعية. ما زلت أسمع ذلك. جوزيف: نجاح باهر، وهذا يبدو وكأنه انها مشوشا. ROB: حتى ان بعض الناس كان لديها القضايا معها، لذلك لا تنتظر حتى الدقيقة الأخيرة من مشكلة تعيين ل محاولة حل جهاز و معرفة أنه لا يعمل. جوزيف: وإذا كان هناك شيء لا يعمل وكنت بحاجة إلى مساعدة، يمكنك الذهاب إلى cs50.net/discussion أين نحن لديك المنتدى حيث يمكنك يمكن نشر الأسئلة الخاصة بك. وسنقوم الحصول عليها في نهاية المطاف. ROB: حسنا. لذلك هذا هو ما جهاز يبدو. مرة أخرى، انها مجرد منفصلة تماما تشغيل نظام التشغيل داخل أيا كان نظام التشغيل الذي يتم تشغيلها على جهاز الكمبيوتر المحمول. وأهم الأشياء عليك تستخدم هي gedit. لذلك نأمل هذا بالفعل أصبح موقع مألوفة. المحطة. ويمكنك أيضا تشغيل كروم داخل جهاز. كان هناك زوجين من الناس الذين ذكرت الإنترنت لا تعمل في الأجهزة. وبعض منهم قد تولى للتو أن هناك ليس من المفترض أن يكون الإنترنت في الأجهزة. ولكن نعم، فمن المفترض هناك أن يكون الإنترنت. سأقولها الآن، ولكن لم يحدث ذلك يعني أي شيء حقا. إذا لم يتم العمل على الإنترنت، هذا هو ما كنت تميل إلى حاجة لتشغيل لتصحيح الامر. إذا كنت تواجه مشاكل الإنترنت، لا تذكر ذلك، فقط بعد ذلك على مناقشة، وسوف نقول، أن تشغيل. ولكن ينبغي أن يعمل الإنترنت. وبالتالي فإن الشيء الوحيد الآخر - نعم، لا شيء هو آخر ذات الصلة حقا. ولكن أردت فقط أن أشير إلى أن - نرى في هذا الركن الأيمن السفلي. لذلك ينبغي لكل من الأجهزة الخاصة بك لديك عنوان IP. وبعد ذلك في الفصل الدراسي، وهذا IP سوف تصبح أكثر أهمية عنوان عندما كنت تعمل على شبكة الإنترنت ف مجموعة، ل عليك أن تكون قادرا على الوصول إلى الموقع الذي نعمل على من هاتفك الكروم المحلي باستخدام هذا العنوان IP. ولكن ما أود أن استخدام عنوان IP ل- وليس لديك للقيام بذلك، وأنا نريد فقط أن نشير بها - هو هنا. لذلك هذا هو نافذة على محطة بلدي ماك، وهذا ليس في الأجهزة على الإطلاق. ويمكنك البحث عن ما لا هذا الأمر. ولكن انا ذاهب الى SSH مباشرة لجهاز بلدي. أنا لا أعرف ما هو IP. جوزيف: 168 - 168.224.1.0. ROB: هكذا مرة واحدة وأنا انتهيت مع هذا، بتسجيل الدخول. الآن، في الأساس، وهذا مطابق ل نافذة طرفية داخل جهاز بلدي. لذلك أنا الى حد كبير لم يسبق لهم العمل في الواقع من داخل الأجهزة نفسها. أنا فقط دائما وتشغيله في الخلفية تصغير وSSHed في ذلك. هذه المسألة مع هذا أنك لن لتكون قادرة على استخدام gedit بسهولة مباشرة من هذا. ولكن إذا كنت تريد أن تكون باردة حقيقية القراصنة، ثم عليك أن تعتاد على و محرر النص سطر الأوامر على أي حال. لذلك فيم وإيماكس ونانو، كل هذه بدائل مختلفة. نانو يميل إلى أن يكون أسهل. وأعتقد أنه لا يوجد لديه تسليط الضوء على تركيب. أوه، لا، فإنه تماما. بحيث يمكنك استخدام نانو، ل أن واحدة من السهل جدا. ترى كل هذه الأوامر في الجزء السفلي. هذا الرمز الجزرة قليلا. إذا كنت لم أر ذلك من قبل، عليك ربما نرى ذلك كثيرا الآن. فهذا يعني عموما الجزرة السيطرة، مثل الجزء السفلي الأيمن من لوحة المفاتيح حرف تحكم. حتى هنا انها تقول لي إلى هنا - أوه، ليس بقطعها إذا كنت تكبير. ذلك التحكم، X هو كيف انا ذاهب للخروج. وتقول أستطيع أن ضرب Y ل نعم، لتوفير، N لرقم ذلك أن نانو. همة وايماكس تميل إلى أن تكون أكثر قليلا معقدة وساحقة. ولكن يمكنك أن تعتاد على ذلك، ثم عليك الحب عليه. لذلك هذا هو ذلك. جوزيف: لا حاجة للقيام بذلك. ROB: نعم. أنت حر في استخدام gedit لل ما تبقى من الفصل الدراسي. لذلك أي أسئلة تتعلق الأجهزة؟ أو هل لديك أية أفكار حول ماذا يجب أن يتم التحدث حول حول الجهاز؟ نعم. سرور 1: عند SSHed إلى حسابك الشيء، كان قرمزي كلمة المرور؟ ROB: نعم. كلمة المرور لكل شيء تقريبا في جهاز يجري أن يكون قرمزي. المتحدث 2: تثبيت مثل IDE الحقيقي على الجهاز، وسوف يعمل؟ ROB: أتصور الكسوف لديها نسخة فيدورا، وفي هذه الحالة، نعم، يمكنك أن تفعل ذلك. انها على الارجح ليست في الحقيقة يستحق كل هذا العناء. المتحدث 2: OK. لذلك فمن الأرجح أسهل إذا أردت أن استخدام الكسوف، ومجرد استخدام الأم و ثم حمله إلى - ROB: أوه، وهذا هو أيضا ربما أسهل. ولكن يمكنك الحصول على عمل داخل جهاز. جوزيف: وبالنسبة للكاميرا، والسؤال كان، يمكنك تثبيت آخر IDE داخل الأجهزة؟ ROB: الكسوف كونه مثال IDE. أي أسئلة أخرى الأجهزة؟ حسنا. ولذا فإننا سوف نتحرك الآن لسطر الأوامر الأمور المتعلقة اجهة، لذلك CLI. ومرة أخرى، أنا مجرد الذهاب للعمل في هنا، لأن هذا مطابق ل العمل ضمن إطار المحطة الطرفية داخل جهاز. كيف هو ذلك الخط تبحث؟ غير أن كبير بما فيه الكفاية؟ حسنا. لذلك هناك الكثير من الأوامر التي يجب عليك أن تعتاد جدا ل طوال الفصل الدراسي. والكبيرين لتبحر هي ليرة سورية، قائمة الملفات في هذا الدليل، و مؤتمر نزع السلاح، وبالتالي تغيير الدليل. حتى أتمكن من تغيير سطح المكتب ثم نمط شائع جدا هو مؤتمر نزع السلاح ل والدليل على الفور ليرة سورية ما في الدليل. الناس أيضا في بعض الأحيان لا يدركون أن تبويب إنجاز شيء. مثل ذلك السلاح، VH، وبعد ذلك ضرب تبويب. أنا لم اكتب تقريبا خارج الشيء بأكمله. ثم إذا أظل ضرب تبويب مرة أخرى، وأنها سوف تلقائيا بدء ادراج بالنسبة لي. حتى أستطيع أن مؤتمر نزع السلاح vhosts، المضيف المحلي. وأن مجرد الذهاب الى - في حال لم تكن قد سمعت هذا المصطلح من قبل، الدليل هو مجرد كلمة أخرى للمجلد. حتى الآن إذا كنت ترى - دعونا تحقيق ذلك إلى الأعلى. حتى الآن إذا كنت ترى بين قوسين، ل انظر قليلا تيلدا، مائل، عشقتك، مائل، المضيف المحلي. وبالتالي فإن تيلدا، التي تشير إلى بلدي الدليل الرئيسي. انها دليل كنت في عند سه فيها انها الدليل عندما كنت في كنت فتح المعبر. انها المكان الذي تبدأ. وحتى أنا داخل بلدي الدليل الرئيسي، وأنا داخل عشقتك داخل دليل بلدي الدليل الرئيسي. ثم أنا داخل المحلية دليل استضافة داخل ذلك. وحتى بعض الأشياء الأخرى المفيدة مع مؤتمر نزع السلاح - أو بشكل جيد، بشكل عام، لذلك تنتشر دائما يشير إلى الدليل الحالي. مؤتمر نزع السلاح، هو نقطة أمر لا قيمة لها جميلة. ولكن هذا يتغير ل الدليل الحالي. واحد أكثر فائدة من حيث مؤتمر نزع السلاح هو نقطة، نقطة، وهو اذهبوا حتى دليل واحد. ونلاحظ أن هذه - أريد أن أقول الأسماء المستعارة، ولكن هذه الرموز، نقطة، ونقطة، نقطة، تلك العمل الى حد كبير أي أمر كنت سوف يكون التفكير في التشغيل. مثل ذلك السلاح هو على الارجح حيث عليك أن تكون باستخدام أكثر، ولكن هذه ليست الأشياء التي فقط يفهم مؤتمر نزع السلاح. انها الى حد كبير شيئا بأكمله يفهم سطر الأوامر. وهناك الكثير من البرامج فهم نقطة ونقطة، نقطة. حتى تلك الأخرى المفيدة - مؤتمر نزع السلاح، اندفاعة. بحيث سوف تجلب لي إلى دليل آخر أن كنت فيها حتى في بعض الأحيان سأفعل شيئا من هذا القبيل، أوه، أنا أعمل هنا. وأرى بعض الخطأ مع شيء، و سأذهب تحقيق ذلك عن طريق الذهاب إلى بعض الدليل عشوائي في مكان ما. وأنا لا أعرف إذا كان سوف اسمحوا لي في هناك. أنها ستفعل ذلك. حتى ذلك الحين أفعل كل ما أريد في هذا الدليل. كذا وكذا وكذا وكذا وكذا. وكنت مثل، حسنا، أريد أن أعود إلى حيث كنت. مؤتمر نزع السلاح، اندفاعة، وأنه يجلب لي الحق في العودة. لذلك أنا ذاهب لرمي الكثير في هذه لكم اليوم. لا أتوقع منك أن استظهر كل منهم. انها نوع من تعرف فقط ان وجدت. ثم في وقت لاحق عندما كنت مثل، هم، أنا أريد أن أعود إلى الدليل أنني كنت للتو في، أوه، الانتظار، شيء من هذا القبيل موجودا. لم يكن لديك لكتابة فقط في الدليل بالكامل مرة أخرى. جوزيف: وفي نهاية المطاف سوف فقط استخدامها مرارا وتكرارا، و انها سوف تصبح ذاكرة العضلات. ROB: نعم. فكيف قلت من قبل، أن تيلدا هو الدليل الرئيسي الخاص بك. حتى أستطيع أن مؤتمر نزع السلاح، تيلدا. ولكن ليس لدي حتى ل تفعل ذلك إذا أنا فقط - سوف أعود إلى الدليل حتى انها ليست سبيل المثال لا طائل منه. ولكن إذا كنت لا مجرد مؤتمر نزع السلاح، وهذا أيضا نفس، انتقل إلى بلدي الدليل الرئيسي. أفعل القيادة، K. جوزيف: يمكنك أيضا كتابة واضحة، و كلمة واحدة، وأنه يجب مسحها. ROB: وأعتقد أيضا التحكم، L أيضا يفعل ذلك. لذلك الكثير من الطرق المختلفة. أعتقد أن هناك بعض الاختلافات حيث واضحة والتحكم، L سوف فقط دفع حقا إلى الأعلى و لا يزال يمكنني أن انتقل إلى الوراء. الأوامر، K يدمر حرفيا كل شيء، وأنت لا يمكن التمرير احتياطية. على أقل تقدير، وهذا كيف يعمل في iTerm2. أنا لا أعرف كيف أشياء أخرى - اه. مع SSHing، لذلك إذا كنت على ويندوز، وأنت تسير لدينا لتحميل المعجون من أجل سه منذ ويندوز لا لديهم مثل أداة مدمجة في SSH. من أجهزة ماكينتوش، يمكنك فقط SSH مباشرة من نافذة الصالة. موافق. الأسئلة؟ مع ليرة سورية، وذلك شيئا لتعتاد على مع معظم هذه الأوامر هي - حسنا، سأفعل واحدة فقط. ليرة سورية، اندفاعة، ل. لذلك اندفاعة، ل هو ما نحن في طريقنا الدعوة إلى العلم ليرة سورية. والكثير من هذه الأوامر لها أعلام التي يمكن أن تمر لهم. حتى في هذه الحالة، اندفاعة، ل هو العلم أن يقول أن تعطيني كامل إدراج كافة المعلومات من هذه الملفات. لذلك نحن نرى هنا أن سطح المكتب كان تعديل يوم 30 يوليو الساعة 12:54. تم تعديل التنزيلات في 6 سبتمبر. هذه هي الحجم الحالي و بايت من هذه الدلائل. لم يكن لديك لفهم كل هذا. هذه الاشياء على اليسار، هذه لdrwx، التي ستصبح أكثر أهمية بكثير في وقت لاحق عندما يكون لديك للتعامل مع - أن له علاقة مع شخص لديه أذونات للنظر في هذه الملفات. وحتى إذا لم تكن المستخدم الوحيد على هذا الكمبيوتر، هل سيكون قادرا على ويقول، حسنا، أنا يجب أن يكون واحد فقط يسمح للنظر في هذا الملف أو أنا ذاهب للسماح الجميع للنظر في هذا الملف. لذلك شخص آخر على جهاز الكمبيوتر الخاص بي يمكن أن ننظر إلى هذا الملف. أنا لا أعرف حتى ما هو هذا - ماذا يعني هذا القيام؟ جوزيف: أنا لست متأكدا تماما، في الواقع. ROB: لا فكرة. جوزيف: ولكن إذا كنت لا تعرف، هناك أمر المفيدة التي يمكنك استخدامها ان اقول لكم ما يعني الإخراج. وإذا كنت اكتب في الرجل قبل الأمر - حتى M-A-N. ROB: رجل. ذلك الرجل هو آخر واحد يمكن أن يكون مفيدا للغاية. والرجل، ليرة سورية. وبالتالي فإن صفحات الرجل، لديهم على حد سواء أوامر أنك ذاهب إلى استخدام في سطر الأوامر، ولها أيضا وظائف من شأنها أن تكون ذات صلة مع C. حتى تتمكن من إنسان - وأنا تجاهلت 3. ولكن الرجل 3 printf أن يستقدم حتى النسخة C من printf. ولكن إذا كنت لا مجرد رجل printf، وهذا هو الذهاب لإحضار printf الأمر ما يحدث في سطر الأوامر. ذلك الرجل، ليرة سورية. يمكن للرجل أن يكون صفحات جميلة ساحقة. هنا، رغم ذلك، سترى هذه القائمة كل هذه الإشارات التي ليرة سورية يفهم. حتى إذا ذهبنا إلى اندفاعة، ل، و- أنا مجرد الذهاب الى رمي هذا عليك. ولكن من أجل البحث، وتريد ليصل لأول مرة مسألة علامة أو زر مائل. لذلك خفض. وبعد ذلك يمكن البحث لكل ما أريد. لذلك أنا ذاهب لخفض لاندفاعة، ل. وهناك كان عليه. وذلك باستخدام صيغة القائمة طويلة. لا مساعدتي معرفة ما أن عمود معين يعني، ولكن أنا نفترض في مكان ما هنا ذلك من شأنه أن يفسر ذلك. وذلك باستخدام صفحات الرجل لأي أمر ان كنت لا تفهم على الفور. أنا متأكد من أنك يمكن حتى رجل، رجل. واجهة إلى الإنترنت كتيبات مرجع. أوه، واحد آخر واحدة وهذا ربما قليلا ليرة سورية غير ذات الصلة، اندفاعة، أ. حتى إشعار إذا أنا فقط تفعل ليرة سورية، أحصل على هذه الملفات الخمسة. إذا كنت تفعل ليرة سورية، يحطم، لذلك، أنا الحصول على الكثير من الملفات. وبالتالي فإن ما يجمع كل هذه ملفات جديدة هي نقطة مسبقا. وبالتالي فإن الاتفاقية هو أن ملف يبدأ مخفيا نقطة. لذلك كنت لا تريد أن ترى هذا الملف، كنت لا نريد أن يكون ذلك مع الفوضى سرد الدليل الخاص بك. انها فقط عندما كنت أسأل صراحة، كل الحق، ليرة سورية، اندفاع، لذلك، تبين لي. وعلى لتقف على جميع الملفات، بما في ذلك تلك المخفية. وحتى بعض الأوامر الأخرى. أوه، والأسئلة في تلك المرحلة؟ نعم. SPEAKER 3: عند القيام ليرة سورية، لذلك، ما هو النقطة، نقطة؟ ROB: أوه. لذلك هذا هو ما كنت أتحدث عنه. انها نفس الشيء حيث أستطيع أن أحب مؤتمر نزع السلاح، نقطة، نقطة. لذلك من الناحية الفنية، ونقطة نقطة، نقطة و ملفات موجودة في كل واحدة الدليل حيث يشير ملف نقطة إلى الدليل الحالي. حتى لو كنت مؤتمر نزع السلاح، نقطة، سأقوم للبقاء في الدليل. ودوت، دوت يشير دائما إلى السابقة حتى مستوى دليل واحد. حتى إذا ذهبت إلى سجلات وليرة سورية، شرطة، القاعدة و سوف نرى نقطة، نقطة. مؤتمر نزع السلاح إلى نقطة، نقطة يقودني إلى الدليل السابق. نعم. موافق. حتى آخر مهم جدا الأمر RM. وهذا ما نحن ذاهبون لاستخدامها لإزالة. واسمحوا لي في الواقع تفعل شيئا آخر الأمر الأول. إنشاء مجلد بذلك. إنشاء مجلد هو كيف يمكن إنشاء الدلائل. وسوف إنشاء دليل مؤقت وتذهب إلى أن الدليل المؤقت. وكما هو متوقع، انها فارغة. ولكن اذا كنت ليرة سورية، اندفاع، لذلك، لا يزال لدي نقطة ونقطة، نقطة، ليشير إلى نقطة الدليل الحالي. ودوت، ويشير إلى نقطة الدليل السابق. وتلك سيكون موجودا دائما بغض النظر عن الدليل انت فيه. وهذا هو تماما لا لزوم لها الأوامر، ولكن اللمس. أنا مجرد استخدامه، لأنه طريقة سهلة لإنشاء ملفات. حتى لمس، المس ب، ج هو مجرد لمس الذهاب الى إنشاء ثلاثة ملفات تسمى، ب، ج والتي تكون فارغة تماما. وبالتالي فإن النقطة لي خلق تلك الموجودة في المكان الأول هو مجرد أن ذلك هو جمهورية مقدونيا كيف يمكننا إزالتها. حتى جمهورية مقدونيا، أ. انها سوف يسألني، وإزالة العادية فارغة ملف؟ ثم أنا أقول نعم. حتى لو كنت تعرف على وجه اليقين أنني أريد أن محو هذا الملف دون الحاجة إلى أن تكون المطالبة، إزالة ملف فارغ العادية؟، ثم جمهورية مقدونيا، شرطة، و سوف يكون العلم أن يقول، دون إجبار إزالة حتى دفع لي، أوه، أنت متأكد أنك تريد حذف الملف؟ نعم، أنا متأكد. لذلك فإن جمهورية مقدونيا، اندفاعة، أف ب فقط تفعل ذلك دون أن يطلب. لذلك دعونا جعل بعض أكثر الدلائل. إنشاء مجلد، tmp2، مؤتمر نزع السلاح، tmp2، لمس، لمسة ب. موافق. حتى الآن أريد أن إزالة tmp2 بمثابة الدليل. tmp2 RM ذلك. لا يمكنك إزالة tmp2، بل هو الدليل. وبالتالي فإن المسألة هنا هي أن جمهورية مقدونيا لا العمل فورا على الدلائل. هو يعني فقط أنه لملفات مثل الملفات غير دليل. وذلك ما يمكننا القيام به هنا هو جمهورية مقدونيا، اندفاعة، ص. التي تقف على بشكل متكرر، الأمر الذي قد لا يعني لك شيئا حتى الان. ولكن عندما تحصل على العودية، انها سوف يعني أكثر من ذلك. حتى جمهورية مقدونيا، اندفاعة، ص، tmp2 هو الذهاب الى متكرر الخوض في هذا الدليل. حتى تنحدر إلى tmp2 الدليل؟ نعم، دعونا نذهب في ذلك. نريد لإزالة tmp2 / أ؟ نعم. نريد لإزالة tmp2 / ب؟ نعم. الآن نريد أن إزالة وtmp2 الدليل؟ نعم. وحتى الآن الدليل وكل شيء داخل من تم إزالته. هناك من الناحية الفنية الأمر RMDIR التي يمكنك استخدامها لإزالة الدلائل، ولكنه يعمل فقط على الدلائل الفارغة على أي حال. وأن نرى ذلك، دعونا فقط إنشاء مجلد تفعل، tmp2 مرة أخرى. Tmp2، لمس. موافق. حتى لو كنت في محاولة لإزالة dirtmp2، وأنها سوف أقول، الدليل ليس فارغا. لذلك أنا أبدا الى حد كبير استخدام إزالة الأمر dir على أي حال، لأن جمهورية مقدونيا، اندفاعة، ص ستعمل على الدلائل الفارغة والدلائل غير فارغ. وأيضا، إذا كنت لا تريد أن يكون ل تذهب من خلال هذه العملية برمتها تنازلي إلى الدليل و إزالة كل ملف على حدة، جمهورية مقدونيا، اندفاعة، الترددات اللاسلكية، tmp2. والآن انها ذهبت. شيء أن نكون حذرين عنه هو جمهورية مقدونيا، اندفاعة، الترددات اللاسلكية. وذلك يخيفني حتى اكتبه، لأنه إذا كنت غير قصد هاهنا أو شيء من هذا. حتى جمهورية مقدونيا، اندفاعة، الترددات اللاسلكية، تيلدا شأنه، دون دفع لي، و لا يطالب لي، فإنه سيتم إزالة تلقائيا بلدي كامل الدليل الرئيسي و كل شيء في ذلك. لذلك قد تعتقد أن هذا شيء غبي للقيام به. وكذلك، هو عليه. ولكنه يمكن أن يحدث بسهولة جدا من قبل حادث إذا، على سبيل المثال، أردت أن إزالة بلدي مائل، دليل عشقتك. وفقط في كتابة سريعة، أنا بطريق الخطأ القيام بذلك. والتي تزيل بشكل متكرر كل من بلدي الدليل الرئيسي والدليل عشقتك في هذا الدليل خاصة أن فقط يحدث لعدم وجود الآن. ولكن هذا لا يزال إزالة بلدي كامل الدليل الرئيسي. على الأقل من خلال عدم وجود و، فإنه سيدفع لي في البداية. وسأكون مثل، أوه، لا، أنا لا تريد أن تفعل ذلك. لكن الناس، مائل، بما في ذلك لي تميل للوصول الى عادة دائما RF-ING. حتى الملفات العادية أستطيع أن RM فقط، ج، فإنني أميل إلى جمهورية مقدونيا فقط، اندفاعة، الترددات اللاسلكية، ج. فقط كن حذرا عندما كنت الترددات اللاسلكية جي. سرور 4: ماذا تفعل C؟ ROB: C وأنا أتحدث عن هذا الملف C في هذا الدليل، أن جمهورية مقدونيا، ج. جوزيف: وأكثر من خطير، إذا كنت تستخدم نجم، فإنه يشير إلى كل شيء في الدليل. فما أنا عادة تميل إلى القيام به هو أنني سوف انتقل إلى دليل وأريد أن إزالة كافة الملفات في هناك. حتى جمهورية مقدونيا، اندفاعة، الترددات اللاسلكية، نجم. ROB: نعم. جمهورية مقدونيا، اندفاعة، الترددات اللاسلكية، نجم. جوزيف: وإذا كنت غير دقيق ما الدليل كنت في - لم أكن في درجة الحرارة، ولكن أنا كان عن طريق الخطأ في بلدي الدليل الرئيسي، بعد ذلك سوف إزالة كل شيء في بلدي الدليل الرئيسي. ولقد فعلت ذلك من قبل في الواقع، و أعتقد أنك قد فعلت هذا من قبل أو وقد فعلت ذلك من قبل جاي. ROB: لقد إزالة بطريق الخطأ - لذلك تجاهل هذا الأمر قليلا. جوزيف: لا متعة. ROB: حتى في مائلة بن الدليل هو مجموعة من الملفات الثنائية حيث هناك سوف أكون تكون مألوفة مثل رنة. حسنا، رنة وأساسا كل هذه الأشياء التي أنا على التوالي في الأمر خط مائل في هذا بن الدليل. جوزيف: مثل ليرة سورية هو هنا. ROB: إذن نقطة، مائل، ليرة سورية من شأنه أن قائمة هذا الدليل. جوزيف: رو هو أيضا في هذا الدليل. ROB: لقد قصد RM، RF-إد بن، التي أزالت أي أمر أستطع ربما تريد من أي وقت مضى. الذي ثم أنا فقط إعادة تثبيت جهاز جديد في تلك المرحلة. جوزيف: حتى نكون حذرين للغاية عندما استخدام هذا الأمر. الحضور: [غير مسموع]؟ ROB: نعم. هذا هو أيضا عادة سيئة للوصول الى. إذا لاحظت، وأنا الآن - حسنا، أنت لا يمكن أن تلاحظ، ولكن بلدي تكبير، وربما يمكن. لذلك أنا الآن الجذرية @ الأجهزة. حتى jharvard هو المستخدم نريد لك دائما تستخدم. الجذر هو المستخدم الذي لديه الإذن للقيام تماما أي شيء. حتى إشعار عندما أكون jharvard، إذا حاولت مؤتمر نزع السلاح - ما هو دليل ذلك؟ أوه، الجذر هو مثال جيد. حتى مؤتمر نزع السلاح، وجذر. تم رفض الإذن. لأنه إذا نظرنا إلى هذه القائمة - ومرة أخرى، لم يكن لديك ل نفهم هذا تماما. ولكن هذه شرطات ثلاثة يقولون أن لا تدع أي دولة أخرى المستخدم في هذا الدليل. ويحدث الدليل تكون مملوكة من قبل المستخدم الجذر. وبالتالي فإن حقيقة أنني لا jharvard و واحد الذي هو الجذر لا يسمح في هذا الدليل، وهذا يعني أنني بصدد الحصول على إذن نفى عندما كنت محاولة لمؤتمر نزع السلاح في ذلك. حتى عندما أكون الجذر، ولدي إذن ل القيام بأي شيء على الاطلاق، بما في ذلك حذف الملفات الأساسية إلى الأجهزة و تدمير الشيء بأكمله. حتى انها عادة سيئة للوصول الى فقط يتجول الخاص نظام التشغيل كجذر. أفعل ذلك على أي حال. الأسئلة؟ وسوف خروج الجذر، والبقاء كما jharvard. موافق. الأوامر أكثر أهمية. ذلك يعود إلى درجة الحرارة لدينا، و MV الأمر تقف على الخطوة. يمكنك نقل. الآن نريد أن نسميها ب، وحتى الآن انه دعا ب. أو ربما نحن نريد أن تتحرك ب حتى دليل واحد. وحتى الآن هذا الدليل فارغة. سوف أعود إلى بلدي الدليل الرئيسي، و ونحن نرى أن ب هو هنا، لأن وكان الدليل الرئيسي واحد حتى من الدليل الدليل الذي كان فيه ب وهناك أيضا حزب المحافظين. حتى حزب المحافظين هو نسخ القسم عظمى، نقطة، النص. يمكن أن أدعو ليالي، نقطة، النص. الآن لدينا كل قسم عظمى، نقطة، والنص، وثانية، نقطة، النص. هذا يعمل أيضا على الدلائل. أنا RF-إد ملف واحد. حتى حزب المحافظين - حسنا، دعونا أولا نحاول حزب المحافظين، تمة، tmp2. لذلك حذف تمة الدليل. مشابهة جدا لRM، السلوك الافتراضي هو لا يعمل على الدلائل. ومرة أخرى، على غرار RM، الافتراضي السلوك - حسنا، والحصول على عمل مع الدلائل هو، اندفاعة-R بعيدا. حتى نسخ متكرر درجة الحرارة الدليل إلى tmp2. وحتى الآن لدينا كل من تمة وtmp2، والتي ليست مفيدة منذ تمة كانت فارغة في المقام الأول. Tmp2. الآن دعونا نسخ تمة في tmp2. ونحن نرى أن tmp2 أيضا لديه ملف لذلك، لأن الدليل و كل شيء داخل تلك تم نسخ الدليل. والتي يمكن أن تكون مفيدة إلى حد ما إذا، ويقول كنت تعمل المشكلة على مجموعة واحدة - أو في الواقع، ومجموعات المشكلة هي في وقت لاحق الأهم من ذلك، لأن هناك سيكون في مجمله مجموعة من الملفات والأشياء. ولكن كنت ترغب فقط في، لانقسام الثانية، كنت مثل، كل الحق، أنا ذاهب الى محاولة شيء مختلف. اسمحوا لي أن مجرد نسخ بلدي pset1 كامل الدليل إلى pset1 احتياطية بحيث إذا أنا في نهاية المطاف الشد الامور، يمكنني العودة إلى دليل النسخ الاحتياطي بلدي. هناك طرق أكثر ملاءمة لل الإصدارات النسخ الاحتياطي التعليمات البرمجية الخاصة بك، ولكن هذا هو دائما وسيلة سريعة لكسب فقط المؤكد أن لديك نسخة من شيء أن كنت على وشك أن تعديله. صدى ذلك هو أيضا أمر لمرة واحدة أن سوف نوع من sillily طباعة عادل ل سطر الأوامر بالضبط ما أردت أن أردد. لذلك صدى مرحبا. سنقوم مجرد طباعة مرحبا. صدى مرحبا العالم. سنقوم طباعة مرحبا العالم. التي تأتي في الاستخدام عند بدء الجمع بين الأوامر. ومرة أخرى، لا نتوقع منكم أن تماما فهم هذا الموضوع حتى الآن، ولكنها ل شيء لنرى. ثم إذا كنت غوغلينغ للحصول على أمثلة أو كنت أدرك كنت تريد أن تفعل شيء ما، فإنه يمكن أن تكون مفيدة. لذلك دعونا، على سبيل المثال، حتى ليرة سورية، اندفاعة، ل. حتى هنا أرى الإخراج من ليرة سورية، اندفاعة، ل. وأنا أقول، حسنا، أريد أن تخزين ذلك في ملف. كل هذا الإخراج هنا، أريد لوضعها في ملف منفصل. لذلك هذا أكبر قليلا من رمز هو ما نحن في طريقنا للدعوة. نحن إعادة توجيه الإخراج إلى ملف. دعونا ندعو بلاه الملف، لأن هذا هو ما أنا أميل إلى استدعاء دائما. وحتى الآن نرى لدينا ملف بلاه هنا. وإذا كنت فتحه، سوف نرى انها بالضبط الإخراج من الأمر أن ركضت فقط. وبالمثل، يمكنك - إذا كان هذا الإخراج إلى ملف، وهذا يتم الحصول على مدخلات من ملف. ما هو الأمر الذي أنا - جوزيف: أعتقد يمكنك استخدامها أقل أو أكثر من ذلك، على الأرجح. ROB: ولكن ماذا عن مجرد أقل بلاه؟ لا أعرف. إذا كنت تأتي إلى هذا السيناريو، مثل هناك psets أنها مفيدة ل. جوزيف: يمكنك الأنابيب في ذلك الصدى. الأنابيب الملف إلى صدى لرؤيتها. ROB: انها الأنابيب. جوزيف: آسف. ROB: حسنا. لذلك هذا هو الإخراج إلى ملف. هذا هو الحصول على النص من ملف وتسليمها إلى البرنامج. وعليك أيضا أن نرى هذا الرجل. لذلك هذا هو نوع من القيام على حد سواء في وقت واحد. وفعلا، وأنا سوف أعرض اثنين من جديد أوامر فقط للاستفادة من ذلك. التاريخ هو أمر مفيد وهذا هو فقط الذهاب لطباعة قائمة من أي شيء لقد أي وقت مضى تشغيل سطر الأوامر. لذلك نحن نرى هنا كل ما لدي تم تشغيل هذا الوقت كله. الكثير من ليرة سورية. والأمر مفيد آخر هو أن البقرى والغرض منه هو بحث أكثر نص يبحث عن أنماط، حسنا، أبحث عن كل ما تريد أن تبحث عنه. ولذا فإن استخدام مفيد هنا، ويقول نحن نريد للاستيلاء على التاريخ. وأريد أن ننظر للأوامر حيث I - ما هو ل واحد من المفيد أن نبحث عن؟ جوزيف: [غير مسموع]؟ ROB: أو دعونا ننظر فقط للجميع اللمسات، لأي سبب من الأسباب. لذلك هذا هو ما سيبدو. وليس لديك إلى تماما أفهم ذلك. ولكن الفكرة هي هنا، والتاريخ هو اعطاء نفس الناتج فعلت هنا حيث انها طبع كامل التاريخ من كل شيء لقد تشغيل أي وقت مضى. نحن ثم تمرير ذلك - وذلك بدلا من طباعته على الشاشة، نحن نريد لتمرير ذلك إلى الأمر البقرى التي تبحث عن كافة مثيلات لمسة الكلمة. وذلك باستخدام مزيج من هذه أدوات التاريخ والبقرى، أستطيع أن أرى، OK، هنا كافة الأوامر واجهني تشغيل، وهنا واحدة مشتركة إلى حد ما. نحن في القاع. وانها إعطائي أيضا الأمر ركضت فقط التي لديها كلمة اللمس في ذلك. ولكن الأنبوب هو شيء مفيد جدا للجمع بين برامج متعددة. وفعلا، انها اختصار لتمكنك لي تاريخ الإخراج إلى ملف بلاه، و اسمحوا لي البقرى باستخدام ملف بلاه كما ما اريد ان اتفرج على. وبالتالي فإن الأنابيب هي مجرد اختصار بالنسبة لأولئك الأمرين. نعم. سرور 4: [غير مسموع]؟ ROB: نعم. ما هو - اه. دعونا اختبار. حتى القط، والكلب، والأسماك. لذلك أريد أن البقرى. شرطة، ص، ومرة ​​أخرى، ستكون بشكل متكرر، لذلك أريد أن ينزل إلى أسفل كافة الدلائل. أريد أن البقرى متكرر للجميع - واسمحوا لي أن الحصول مؤقتا هذا للخروج من الطريق. تجاهل لي. موافق. لذلك أريد أن البقرى مؤقتا ل كافة مثيلات الكلمة الأسماك. وحتى هنا ما أفعله هو grepping متكرر للأسماك الكلمة. ونجم يعني على كل من هذه الملفات في هذا الدليل. وذلك أعطاني الإذن مرفوض، لأنه لا يجوز أن يقرأ أن ملف معين. ولكن وجدت الأسماك في الملف، واختبار. أستطيع أن أقول أيضا، وتحديدا، أنا فقط تريد أن تبدو في ملف بلاه، في هذه الحالة فإنه لن يجد أي شيء. أريد فقط أن ننظر في الملف، واختبار. سوف تجد الأسماك. وهذا هو أمر مفيد جدا لمعرفة بشكل عام. هناك بعض البدائل على البقرى التي من المفترض أن يكون أكثر مبرمج ودية، ولكن أنا أميل للا تزال تقع مرة أخرى على البقرى. الأسئلة؟ موافق. هناك أوامر أخرى؟ اه. فقط لمرة واحدة واحدة أنني دائما تجد أن يتم كال المرح. حتى إشعار عندما أكون في هذا جميل وضع ملء الشاشة، وليس لدي مثل أعلى شريط أدوات أو أي شيء. كال حتى مجرد يعطيني صغيرة لطيفة تقويم هذا صحيح قطع الآن خارج، وأفترض. ولكن الأمر صغيرة لطيفة. جوزيف: إنه [غير مسموع]. الأوامر الأخرى التي قد تكون لديكم وتشمل ينظر رنة وجعل. سنذهب عليها في مزيد من التفاصيل في وقت لاحق. ولكن إذا كنت قد تم العمل على وPSET، يجب أن تكون مألوفة مع هؤلاء. ROB: حسنا. أسئلة حول الأشياء سطر الأوامر؟ حسنا. لذلك دعونا ننتقل إلى بعض الاشياء ذات الصلة C-. المتغيرات الرياضيات. موافق. لذلك كان علينا تماما مثل الرياضيات في خدش، يمكنك أيضا استخدام الرياضيات في C. قبل أن نصل إلى ذلك تماما، من المتغيرات. تذكر أنه كلما قمت بتعريف متغير مثل كثافة العمليات خ أو تعويم ذ، لك يجب أن تعطيه اكتب قبل اسم المتغير. من أنواع رأيناه حتى الآن هي كثافة العمليات، تطفو، مزدوجة، طويل، وهو ما لا أعرف فعلا إذا قمنا رأيت ذلك حتى الآن. هناك بعض القضايا الأخرى. قمنا نرى شار. هناك القصير، الذي هو مثل انها طويلة عكس طويلة حيث انها أصغر من عدد صحيح. شهدنا أيضا سلسلة. فما هو خاص حول سلسلة؟ لماذا أقول انها ليس تماما مثل كثافة العمليات؟ سرور 4: إنه لا وجود لها في الواقع. ROB: نعم. وبالتالي فإن السبب الوحيد لدينا سلسلة لأن عند القيام التجزئة، وتشمل cs50.h. وسنرى أمثلة على ذلك لاحقا - أوه، هذا لا يعالج بشكل جيد - حيث cs50.h تفعل شيئا على غرار نوع مواطنه، نجم شار، السلسلة. وحتى هذا ما يقول أننا لا حتى نعرف ما هو نجم شار حتى الآن. ولكن هذا القول نريد السلسلة. أي مكان كنت أستعمل سلسلة، كنت وكان من الممكن استخدام نجمة شار، الذي هو في الواقع النوع الذي موجود في لغة C. لكننا سنصل إلى ذلك. أوه، وغني عن حق العودة. أنيق. نفس الشيء مع ذلك منطقي حيث الصواب والخطأ. التي ليست في الحقيقة نوع مضمنة في C. بدلا من ذلك، انها مجرد، لا يكون هذا قيمة الصفر؟ ثم سنقوم مجرد النظر أن تكون كاذبة. هل هذا لديها قيمة - كذلك، هل هذا لديك أي قيمة لا يتم الصفر؟ ثم سنقوم النظر فيه ليكون صحيحا. حتى واحد صحيح، وهما صحيحا، أي شيء غير صفرية هو الصحيح. حتى أولئك هم أولئك. أسئلة حول المتغيرات معلنا و أنواع متغير وكل ذلك؟ نعم. سرور 4: لفترة طويلة طويلة، في الكتاب، قالت انها يجب أن تكون كثافة طويل. ولكن سوف تعمل فقط لفترة طويلة؟ ROB: لذلك فان هذه المعدلات النوع. لذلك كثافة العمليات خ. ولذا فإننا يمكن القول أيضا غير موقعة كثافة العمليات خ. نستطيع أن نقول باختصار الباحث س. يمكننا القول طويل كثافة العمليات خ. ولكن أي حد كبير من تلك الأشياء أنا وقال عادل، وكثافة العمليات غير الموقعة، وكثافة العمليات قصيرة، الباحث طويلة طويلة، يمكنك التخلص من كثافة العمليات، وسوف مجرد افتراض ان كنت تعني كثافة العمليات. س حتى غير الموقعة، وهو ما يعني فقط - تعرف كيف عادة مع الباحث، يمكنك القول x تساوي السلبية 3؟ مع كثافة العمليات غير الموقعة، لا يمكنك. جوزيف: ومرة ​​أخرى، للكاميرا، و كان السؤال، ما هو الفرق بين الباحث طويل وفقط لفترة طويلة؟ ROB: نعم. لذلك أنا سوف أبدا تقريبا إرسال كثافة طويلة طويلة. سأكتب طويل. جوزيف: أي أسئلة؟ ROB: OK. تذكير قليلا سخيفة جدا من هذا كيف نعلن متغير وتهيئة المتغير وتعلن أخرى متغير وتهيئة كل ذلك في خطوة واحدة. وبالتالي فإن الإعلان عن متغير و المتغير التهيئة لم يكن لديك لكنه يمكن أن يكون على نفس الخط. لذلك لدينا مشغلي الرياضيات القياسية أن كنت تستخدم ل- بالاضافة الى ذلك، ناقص، والانقسام، مرات. هناك أيضا نمطية، والتي سنرى. ليس هناك، على الأقل في C، وهو المدمج في السلطة الأسي المشغل الإقحام. حسنا، هناك عامل الإقحام، ولكنها ليست السلطة. جوزيف: ولكن انها ليست الأسي، نعم. ROB: لا تستخدم الإقحام لنفترض أن ذلك يعني مثل المربعة أو أيا كان. وحتى بعض الأشياء أن نأخذ في مانع عن الانقسام. سأقف. أعلن ذلك تهيئة الجواب. لذلك نحن نقول تعويم الجواب يساوي 1 مقسوما على 10. طباعة الإجابة على منزلتين عشريتين. وهذا هو النوع من الشيء الذي أنا سيكون رجل printf لمعرفة أن ما هيك لا٪، نقطة، 2F يعني؟ وهذا يعني فقط، حسنا، تجاهل 0.2. و٪، و هو ما نستخدمه الطباعة إلى تعويم. 0.2 تقول، الطباعة التي تطفو إلى منزلتين عشريتين. لذلك هذا البرنامج لديه خلل، وكنت قد لقد رأيت هذا من قبل في بعض CS دورة السابقة. ولكن ما هو هذا الخطأ؟ سرور 5: صفر. ROB: نعم. لذلك عندما نقول، الجواب يساوي 1 مقسوما على 10، ونحن نريد ل الإجابة أن تكون 0.1. ولكن 1 مقسوما على 10، 1 هو صحيح، 10 هو عدد صحيح. وعندما نفعل ذلك صحيح مقسوما عدد صحيح، ونحن في طريقنا للحصول على العودة عدد صحيح. حتى 1 مقسوما على 10 هو 0.1. لأنه يحتاج إلى تعطينا عددا صحيحا، انها مجرد الذهاب لرمي بعيدا أن منزلة عشرية والقول بأن الجواب هو 0. وحتى عندما والطباعة الإجابة هنا، انها تسير لطباعة 0.00. جوزيف: وفقط كملاحظة، فإنه في الواقع يلقي بعيدا ما بعد العلامة العشرية. لذلك إذا كنت بدلا من ذلك كان 6 مقسوما 10، قد تعتقد أنه سيكون تعطيك 0.6 وعندئذ يمكنك تقريب تصل إلى 1. ولكن في الواقع، فإن ما يحدث عندما اكتب المهام هو أنه يسقط ما هو بعد العلامة العشرية. حتى لا تصبح 0.6 0. ROB: نعم. وسوف نقول اقتطاع لذلك. لذلك كلما كنت يلقي إلى int، يتم اقتطاع العشرية. وبالتالي فإن الإصلاح لذلك - هناك بالفعل اثنين. وانا ذاهب للقيام بذلك ثانيا، لأن هذا واحد هو الإصلاح أسهل بكثير. لذلك الإصلاح واحد هو استخدام العوامات في الانقسام. وحقا، لديك فقط ل جعل واحد منهم تعويم. لكنه أكثر وضوحا إلى حد ما فقط لجعل كل منهم يتحرك. حتى 1.0 مقسوما على 10.0 هو تقسيم اثنين من العوامات. وبالتالي فإن الجواب سيكون في نهاية الأمر تعويم، وهكذا سوف طباعة بشكل صحيح 0.10 هنا. الشيء الذي لا يعمل بشكل جيد حول ذلك هو، أيضا، بالتأكيد، كان من السهل يكفي لتحويل 1 إلى تطفو بجعله 1.0. ولكن ماذا لو كان لدينا بدلا عددين مثل كثافة x تساوي 1 والباحث ذ يساوي 10، ثم أردنا للا س مقسوما ذ؟ لذلك ليس من السهل فقط القيام X.0 أو شيء من هذا. وبالتالي فإن الإصلاح التي يتم الصب. حتى الصب هو وسيلة لتحويل في C من واحد متغير نوع إلى آخر. حتى هنا، 1 هو عدد صحيح. وبوضع هذا تعويم أمام ذلك، نحن الصب 1 إلى تعويم. وحتى هذا سيتم تحويل 1 إلى 1.0. وهذا سيتم تحويل 10 إلى 10.0. ثم الأشياء تتصرف على نحو مماثل لل الإصدار السابق أظهرنا فقط حيث، كما هو متوقع، وحصلنا على 0.10 وانها سوف طباعة ذلك. ويمكننا أن نفعل هذا مع المتغيرات أيضا. لذلك يمكننا القول، تعويم خ مقسوما على تعويم ذ. جوزيف: أي أسئلة؟ ROB: وهكذا مثلما هو الحال في الرياضيات العادية، لدينا مشغل الأسبقية. حتى في فئة الرياضيات، وكنت أكثر من المرجح أن نسميها ترتيب العمليات. هنا، فإن مصطلح الرسمية مشغل الأسبقية. ولكن الأسبقية المشغل أو أكثر المشغلين، كما كنت تتوقع. لذلك مثلما هو الحال في الرياضيات، 2 مرات 10 هو سوف يتم تجميع أكثر من كثب هذا 10 مقسوما على 2 ثم 2. ترتيب العمليات، انها لن تفعل 2 مرات 10، 10 مقسوما على 2، ثم انها سوف تفعل 20 زائد 5 زائد 2. لذلك فمن كما هو متوقع، ويمكنك استخدام الأقواس إلى تعبيرات المجموعة. لا يمكنك استخدام الأقواس المربعة إلى تعبيرات المجموعة. نعم؟ سرور 5: هل يمكن أن الواقع فقط نعود ثانية واحدة؟ يمكنك يلقي الباحث إلى سلسلة؟ ROB: حتى في C، يمكنك يلقي أي شيء تريد أي شيء تريده. هذا لا يعني انها شيء جيد للقيام به. لذلك عندما يلقي الباحث إلى سلسلة، وهذا يعني - ونحن سوف نصل الى هذا بدقة أكثر من ذلك بكثير - جوزيف: بعد ذلك بكثير. ROB: لم أكن أريد أن أقول في وقت لاحق من ذلك بكثير، لذلك حاولت أن تغير الجملة بلدي. أننا سنصل إلى ذلك كثيرا أكثر شمولا في وقت لاحق حيث حقا عندما يكون لديك متغير سلسلة - لذلك يمكن أن يكون سلسلة تعسفا طويلة، أليس كذلك؟ وكنا نقول أن الباحث هو أربعة بايت وطويل هو ثمانية بايت وتعويم هو أربعة بايت. حتى سلسلة، تماما مثل كثافة، ليس لديها سوى عدد معين من وحدات البايت لذلك. والتي من شأنها أن تكون أربعة بايت. ولكن سلسلة يمكن أن تكون جميلة طويلة تعسفا، أليس كذلك؟ لذلك مرحبا العالم بالفعل، إذا كان هذا هو 10 أحرف أو أيا كان، وهذا بالفعل ستكون على مدى 4 بايت أنا يمكن أن تندرج في سلسلة. وحتى كيفية عمل سلاسل حقا هو أن فهي في الذاكرة حيث أن سلسلة يتم الاحتفاظ. وحتى أكثر من هنا، عندما أقول سلسلة X مرحبا يساوي العالم، داخل x هو فقط أقول، أوه، مرحبا يتم تخزين العالم في هذا المكان خاص في الذاكرة. حتى لو كنا في محاولة للادلاء عدد صحيح ل سلسلة، ثم نحاول أن نفسر جزء من الذاكرة العشوائية كسلسلة. والتي دائما تقريبا يكسر الأشياء. جوزيف: ولكن إذا كان ذلك يشوش لكم، ونحن سوف يغطي ذلك أكثر في العمق في وقت لاحق. ROB: نعم. هذا هو المكان الذي كنت تريد الذهاب للوصول الى المؤشرات. وهذا هو قطعة كبيرة من أسبوعين من هذه الدورة. سرور 6: هل يعمل مثل الكائنات بلغات أخرى أم لا حقا؟ ROB: حتى في لغات أخرى، وكائنات وسيمثل باستخدام المؤشرات. انها ليست نفس الشيء، وإن كان. أي أفكار؟ جوزيف: رقم لا الأفكار. ROB: OK. جوزيف: التالي. ROB: اذهبوا مع ذلك. حسنا. حتى نمطية. تماما مثل لدينا زائد، ناقص، تقسيم، وتتضاعف. حتى نمطية واحدة كنت قد لم يشاهد من قبل. ويقول عادل، وإعطاء لي ما تبقى من. حتى 55٪ 10. ما تبقى من القيام مقسمة 55 بنسبة 10 سيكون 5. حتى 55٪ 10 هو 5. و 3٪ 5 سيكون 3. وسوف تكون 8٪ 8 0. وسوف يكون 16٪ 15 1. جوزيف: شيء واحد أن نلاحظ مع ذلك، أيضا، هو أنه قد لا تعمل كما هو متوقع إذا كنت تستخدم رقما سالبا. سلبية حتى 5٪ 4، وبعض الناس قد تعتقد أن هو - ما رأيك السلبية أن 5٪ 4 أن يكون؟ سرور 5: واحد. جوزيف: وهكذا بعض الناس يقولون واحد، بعض الناس يقولون احدة سلبية. ولكن ما - ROB: أنا لن يكون حتى وقال واحد من هؤلاء. جوزيف: اثنان، آسف. يقول بعض الناس - ROB: ثلاثة. يوسف: ثلاثة؟ ROB: السلبية - ما كان - خمسة السلبية - جوزيف: ثلاثة، ثلاثة، ثلاثة. آسف. لأن مودولو، عموما، عندما قمت رأينا ذلك في أماكن أخرى، وهو ما يعني عادة إرجاع رقم موجب، أليس كذلك؟ ROB: لذلك عندما نقول في الرياضيات، في 10٪، فإنها تميل إلى أريد أن أقدم لكم - إذا كان لنا أن وزارة الدفاع بنسبة 10، ثم نتوقع أن الحصول على رقم بين 0 و 9. هنا، ليس هذا هو الحالة التي كنت سوف تحصل الأرقام السالبة التي تم إرجاعها. جوزيف: السلبية حتى 5٪ 4 سيكون سلبيا 1. ROB: ولكن من النادر ان كنت جي وزارة الدفاع الأرقام السالبة لتبدأ. تخطي هذه. جوزيف: نعم. ROB: مه. موافق. حتى واحد آخر شيء أن نشير إلى حوالي يطفو هو انها سلوك خطير، ولكن يطفو ليست بالضبط التمثيل. حتى تعود إلى بايت مرة أخرى، وتذكر أن الباحث هو دائما أربعة بايت و تعويم هو دائما أربعة بايت. لذلك المثال لوكاس هو جيد جدا. لذلك أعتقد من 1 مقسوما على 3. لذلك 0.3333333. إذا كان لدي 32 بت، وكيف يمكن فقط أنا تخزين 0.33333 بالضبط؟ وربما، لأي سبب كان، أقول لكم، كل الحق، حسنا، دعنا نقول فقط أن هذا خاص 1011001، دعونا نقول فقط أنه ينبغي أن يكون 0.333333. حسنا، لديك سوى عدد محدود من هذه البتات، لذلك فمن المستحيل تمثل كل نقطة عائمة واحدة القيمة المعطاة بت فقط 32. كذلك، فإنه من المستحيل لتمثيل أي قيمة النقطة العائمة نظرا لانهائية - كذلك، بالنظر إلى أي عدد محدد من البتات. وبالتالي فإن القضية هنا هو، أيضا، عندما كنا الطباعة إلى منزلتين عشريتين، صحيح أننا لم تحصل على الجواب 0.10. لكن تحت غطاء محرك السيارة، انها حقا يجري تخزينها في أقرب وقت ممكن ل 0.10 كتلك بت يمكن أن تمثل. هذا على الشريحة القادمة؟ أو أليس كذلك؟ جوزيف: نعم، انها ذلك. ROB: Blegh، blegh. جوزيف: نعم، يمكنك فقط سحب مذكرات قليلا. ROB: أنا مجرد الذهاب للتكبير في على الماضي على ذلك. يا إلهي، هذا [غير مسموع]. لذلك هذا العدد. هذا هو ما سيتم طباعة إذا كان لنا أن تشغيل هذا البرنامج. وتلاحظ أن هذا ليس حقا صفقة كبيرة إذا نحن فقط عن رعاية مثل 02:58 عشريين. وكأننا فقط المطبوعة أصلا 0.10، وهذا هو السبب في رأينا شيء خاطئ. ولكن بمجرد أن نبدأ الدخول في بالضبط، العدد الدقيق أنه تمثل، ونحن نرى أنه لا يمكن تمثل 0.1 بالضبط. وجزء من المشكلة هنا هو مثل، كل الحق، وهذا شيء طيب، ولكن، أيضا، أولا، ما إذا حاولنا القيام به، الجواب يساوي يساوي 0.1؟ هو أن يذهب للعودة صحيحة أو خاطئة؟ ولذا فإنه من الصعب القول. وأعتقد أنه في الواقع قد يعود صحيحا. سوف لأول مرة - لا أعرف. الجواب بمجرد البدء في التعامل مع قيم النقطة العائمة، أنت جميلة الكثير لا ينبغي استخدام المساواة بسبب هذا الغموض. وللجميع تعلمون، انها المئوية منزلة عشرية أن كان نقطة عائمة غير قادرة لمعالجة بشكل صحيح. وهكذا سوف المساواة تفشل فقط حتى على الرغم من أن عدد - لو كنت باستخدام الأرقام الدقيقة، ينبغي الأرقام وقد بالضبط نفس الشيء. انها على مدار 50 مثل العمليات الحسابية باستخدام هذه العائمة قيم النقطة، يمكن الخطأ بناء أعلى وأعلى وأعلى، و الامور مجرد الحصول على خطأ. جوزيف: وكانت هناك حقا الأمثلة الشهيرة حدوث ذلك. وقد حصلت مثل هذه مهندسو ناسا خاطئ، مما تسبب الصواريخ لتنفجر في الهواء بعد لقد تم إطلاقها. والكثير من القضايا من هذا القبيل. لذلك نعم. سرور 6: عندما تقول 0.3 و، فإنه اقتطاع الباقي؟ أم أنها محاصرة أو لأسفل؟ ROB: هل printf الجولة كذلك؟ جوزيف: أعتقد باقتطاع printf. ROB: OK. ولذا فإننا يمكن أن تذهب بالمثل في المقابل اتجاه هذا حيث، في هذه الحالة، والأقرب أنه يمكن أن تمثل 0.1 كان مع هذا العدد. الأقرب أنه قد يكون قادرا على تمثل 0.2 في العكس الاتجاه، 0،199999996356 أو شيء من هذا. حتى إذا ذهبنا في هذا الاتجاه من الأشياء، ثم printf 0.3 و سيعود 1.99 بدلا من 2.00. جوزيف: وأنا لست تماما بالتأكيد على ذلك. قد ترغب في إرسال بريد صغيرة، قليلا برنامج للتحقق من ذلك تماما. ROB: رغم ذلك، ما نحن متأكدين منه هو أن إذا حاولت أن يلقي ل الباحث، والصب إلى int يتم الانتقال إلى يؤدي إلى اقتطاع عشري، إذا حاولت تحويل 1.9999999 إلى int، ستحصل على 1. وهكذا يجب عليك استخدام عموما وظيفة جولة في مكتبة الرياضيات. الأسئلة؟ موافق. جوزيف: وهكذا ينتقل إلى الظروف والتعبيرات المنطقية. لذلك كنت قد رأيت هذه من قبل. وفعلا، اسمحوا لي أن تأكد من بلدي الكمبيوتر هو في الشكل الصحيح هنا. الفضاء. آسف، ونحن في طريقنا لديك في التعامل قليلا مع قطع عند الحواف. ولكن نعم، لقد رأيت يا رفاق هذا من قبل في خدش. حتى هذا الحق هنا هو تعبير الذي يستخدم في بيان الشرطية. حتى الإجابة أكبر من الصفر الإرادة اقول لكم صحيحة أو خاطئة. وهذه هي مهمة حقا، ل أنها تسمح لنا أن نقدم المنطق في نظامنا. ذلك على سبيل المثال، وهذا هو برنامج كتب في خدش أن يطلب المستخدم لعدد صحيح ويقول لهم سواء كان صحيحا أنهم منحكم عدد إيجابية أو سلبية. وتحويل أكثر من هنا لترى قمت بطباعة أول من البيان، أعطني عددا صحيحا. ثم أن نطلب منهم لعدد صحيح. ومن ثم يمكنك استخدام المنطق الشرطي على هنا لمعرفة ما إذا كان هذا العدد في الواقع كان أكبر من الصفر أم لا. حتى هنا لدينا تعبير منطقي من داخل المشروط إذا البيان. هل هناك أي أسئلة؟ هل هناك أي أسئلة حول هذا الموضوع؟ موافق. لذلك هناك أكثر من مجرد أكبر من، بطبيعة الحال. يمكنك بناء التعبيرات المنطقية استخدام معظم أنواع الأشياء التي يظن من في الرياضيات. أكبر من ذلك. يجب أن يكون أقل من. آسف. والتباعد. ROB: لا سمح الله ترك الأمر. جوزيف: حسنا. أكبر حتى من أو أقل من، أكبر من، أو يساوي، أقل من أو يساوي. نستخدم يساوي مزدوجة للتحقق من المساواة، وذلك لأن واحد يساوي الوسائل الاحالة، أليس كذلك؟ نعم. وبعد ذلك يمكننا أيضا لا يساوي بواسطة باستخدام علامة تعجب، يساوي. وهذا الرمز علامة تعجب يمكن كما أن يمتد بحيث إذا كنت تريد لعكس أي نوع من المنطقية التعبير، يمكنك أن تفعل ذلك. ولذلك فإن هذا سوف تقييم إلى true إلا إذا كان الجواب أقل من أو تساوي الصفر. أي أسئلة على ذلك؟ موافق. بحيث يمكنك أيضا الجمع بين هذه التعبيرات المنطقية باستخدام وو منطقية أو. لذلك هذا هو مجرد رمز و، الذي ينبغي أن يكون التحول، 7. وهذا هو رمز الأنابيب، الذي هو ليس حالة انخفاض L. انها واحدة هذا هو الحق فوق أدخل المفتاح الخاص بك. لذلك يمكنك استخدام اثنين من هذه ترمز إلى منطقي والمنطقي أو. ولذلك فإن هذا سيعود صحيحا فقط إذا كانت الإجابة هو واحد، اثنان، ثلاثة، أو أربعة. وهذا سيعود صحيحا فقط إذا كانت الإجابة هو أبعد من ذلك في أي من الجانبين. حتى انها ليست واحدة، اثنان، ثلاثة، أو أربعة. والطريقة التي ستستخدم أن في تعبير - ROB: أو صفر أو خمسة. جوزيف: صفر أو خمسة. آسف. نعم، نعم، نعم. موافق. وأكثر من هنا الآن، بنفس الطريقة التي سوف تستخدم هذا التعبير، وهو أصغر الجانب تعبير عن إذا الشرطية بيان، وكنت أيضا استخدامه ل بنفس الطريقة التي كتبها مجرد وضعها داخل الأقواس البيان إذا. لذلك هذا printf سوف النار إلا إذا الجواب هو واحد، اثنان، ثلاثة، أو أربعة. أي أسئلة على الجمع بين التعبيرات؟ ولذلك لا يوجد المشروط أخرى بناء نسميه إذا / آخر. ذلك أساسا، وهذا يعني الآن، حسنا، إذا كان شيئا أردت أن تحقق لا صحيح، ثم انتقل إلى آخر، و تنفيذ هذا الإجراء الأخرى. حتى في هذه الحالة بالذات، سألت المستخدم لعدد صحيح. هو عدد صحيح أكبر من الصفر؟ نعم؟ كذلك، ثم أنها التقطت رقم موجب. إذا لم يكن كذلك، فإنه يجب أن يكون كانت سلبية أو صفر. لذلك اخترت رقما سالبا أو صفر في هذه الحالة. نعم. أو صفر. ثم لدينا أيضا إذا / آخر، إذا وآخر. لذلك هذا يتيح لنا تنفيذ سلسلة من الأشياء فقط إذا فشل أول منها. حتى في هذه الحالة، ونحن الآن نحقق آخر واحد اخترت الصفر. حتى إذا كانوا لا اختار إيجابية ولا رقم سالب، ثم يجب عليهم وقد التقطت الصفر. لذلك يذهب فقط بانخفاض سلسلة من هذا القبيل. لذلك مثالا على كيف يمكن ل إذا يختلف عن - وإذا كان / آخر يختلف عن مجرد سلسلة من افتراضات. وهذا هو السؤال المشتركة التي يسأل الناس هو، أيضا، إذا كنت تحصل على مثل 95 في CS50، ما سيكون هذا البرنامج اقول لكم؟ سرور 5: أنت حصلت على ألف جوزيف: نعم. كنت حصلت كل واحدة واحدة من تلك الحق. كنت حصلت على A، كنت حصلت على B، كنت حصلت على C وD، أليس كذلك؟ لذلك كل من هذه الحصول على تقييم في النظام. ذلك في حين أن 95 أكبر من 90، فإنه من أكبر أيضا من 80، كما انها أكبر من 70، وانها أيضا أكبر من 60. لذلك كنت حصلت على كل تلك الدرجات. وأفترض تفعل نريد فقط A. الطريق إلى إصلاح ذلك هو استبدال تلك مع آخر / إذا 'ق. حتى في هذا السيناريو، فإنه يرى أن 95 هو أكبر من 90، ومن ثم فإنه لا يتم تقييم بقية من البيانات. أي أسئلة حول هذا الموضوع؟ لذلك هناك نوع آخر من الشرطي هيكل أن لدينا هنا أي نحن استدعاء بيان التبديل. لذلك هذا يسمح لك للتحقق من الأساس ما قيمة الرقم الذي وضع في بيان التبديل هو. حتى في هذا السيناريو، ونحن التبديل على ن، ونحن نقول، أوه، إذا كان n هو واحد، ثم طباعة هذا البيان. ثم كسر، وهو ما يعني خروج من بيان التبديل. إذا لم يكن واحد، ثم، حسنا، فقط تحقق في نهاية المطاف كل من تلك الحالات. وهكذا فإنه يتحقق إذا كان واحد أو اثنين أو ثلاثة، وأنه يطبع فقا لذلك. وما هذه الكلمة الافتراضية أسفل هنا الوسائل هو إذا كانت لم تدخل أي من هؤلاء، ثم يقول غير صالح. لذلك دعونا نقول أطلب ن و المستخدم يعطيني أربعة. حسنا، انها مباريات أيا من تلك الحالات، لذلك سوف بطباعة ما هو في القسم الافتراضي. نعم، السؤال؟ سرور 5: هل يمكنك استخدام منطقية بدلا من التعبيرات واحد، اثنان، أو ثلاثة؟ جوزيف: وبالتالي فإن السؤال هو يمكنك استخدام تعبيرات منطقية بدلا من واحد، اثنين، وثلاثة؟ وC، واعتقد انكم لا تستطيع أن تفعل ذلك. ولكن في لغات أخرى، والتي قد تصادف في نهاية الفصل الدراسي مثل جافا سكريبت، يمكنك. كذلك، سيكون لديك لحساب الأول تلك القيمة ومن ثم استخدامها في التبديل البيان. نعم؟ ROB: إذن جزء من الاستفادة من التبديل البيانات يتم التفكير في إذا كنت فعلت هذا باعتبارها إذا / آخر، لذلك مثل إذا كان n يساوي يساوي واحد أو أيا كان. آخر / إذا كانت n يساوي يساوي اثنين، أيا كان. آخر / إذا كانت n يساوي يساوي ثلاثة. وبالتالي فإن الطريقة ان البرنامج هو تشغيل سيذهب بالتتابع أسفل تلك القائمة وتحقق، هو ن واحد؟ كلا. هو ن اثنين؟ كلا. هو ن الثلاثة؟ نعم. قيام بذلك. بينما مع تصريحات التبديل، انها فعلا قادرة على تجميع أن يكون سريع حقا. وبمجرد أن يقول التبديل، و يقول، كل الحق، n هو اثنين، وأنا الذهاب على الفور للانتقال إلى حيث أنا من المفترض أن يبدأ التنفيذ. أنا لن تحقق أولا، ون واحد، هو ن اثنين؟ يمكن أن تبدأ على الفور القيام ما يفترض أن تفعله. وبسبب ذلك، فإنه لا يمكن تأخذ ظروف منطقية. وإلا فإنه سيتعين عليها أن تفعل متتابعة، مثل، كل الحق، هو ن أكبر من الصفر؟ آخر أكبر من 10 ن أو أيا كان. جوزيف: في هذه الحالة، إذا كنت تستخدم إذا / آخر، وإذا كان، ثم سيكون مفتاح تشغيل ما يقرب من ثلاث مرات أسرع من إذا / آخر، إذا. يمكننا تنظيم التبديل في مثل هذه هذه الطريقة التي نحن لا تنكسر بعد كل من الحالات. حتى في هذه الحالة، وأنا تقسيم الأرقام التي نختار في واحدة و اثنين كونها لا أرقام عالية و ثلاثة كونه العدد الكبير. حتى في هذه الحالة، إذا كان n هو واحد أو اثنين، و وسوف تصل هذه القضية وبعد ذلك سوف من خلال الانخفاض، وذلك لأن ليس هناك انقطاع. وسوف ينتهي الأمر هنا. حتى إذا كنا اختيار واحد، انها لن تفعل printf ثم كسر ذلك أن أيا من يتم تنفيذ هذا. وبطبيعة الحال، إذا دخلوا في ثلاثة أو أي شيء آخر، وبعد ذلك سوف تخطي تلك وعدم الذهاب إلى هناك، و سيتم تنفيذ بدلا من ذلك خط المقابلة. هل هناك أي أسئلة حول هذا الموضوع؟ نعم؟ سرور 4: هل تحصل على خطأ إذا كنت وكان استراحة بعد حالة واحدة لكنها لم يكن لديهم شيء من أجل أن تفعل؟ جوزيف: وبالتالي فإن السؤال هو أن تحصل خطأ إذا كان لديك استراحة بعد حالة واحدة ولكن هناك شيء للقيام به؟ والجواب هو لا. أنك لن تحصل على خطأ في الواقع. نعم، هم مم. وذلك نوع من التغيير قليلا هنا، انا ذاهب الى وضع printf هنا. يصيح. لذلك ما من شأنه طباعة هذا إذا أنا وضعت واحدة في كمدخل؟ نعم. فإنه اقول لكم انه لم يأخذ عدد كبير مرتين، أليس كذلك؟ لأنها ستضرب هذه الحالة الأولى، انها لن كسر، وأنه سيسقط حتى في الحالة الثانية. أي أسئلة حول هذا الموضوع؟ ROB: هل لديك سؤال آخر؟ جوزيف: OK، تبرد. حسنا. حتى لا يكون هناك شيء آخر نسميه مشغل الثلاثي الذي هو في الأساس بناء جملة بديل لتفعل إذا ثم آخر. ويتيح لك أن تفعل كل شيء على سطر واحد. حتى في هذا البرنامج على وجه الخصوص، أنا أسأل المستخدم لن. وإذا كان n أكبر من 100، وأنا أقول منهم أنها التقطت عددا كبيرا. آخر وأنا أقول لهم أنهم اختار عدد قليل. حتى نتمكن من استخدام هذه جملة طويلة حقا، سلسلة، S، ومن ثم معرفة ما اذا كان n هو أكبر من 100 وتعيين وفقا لذلك. ولكن يمكننا أن نجعل هذا أكثر إيجازا بكثير باستخدام بناء الجملة هذا المشغل الثلاثي الذي ينطوي على السؤال علامة والقولون. وبالتالي فإن علامة السؤال هو أساسا طرح السؤال، أليس كذلك؟ ROB: ربما التكبير في ذلك. جوزيف: نعم. نقطة جيدة. لذلك هذا هو المشغل الثلاثي. أود أولا أن نطرح هذا السؤال: ن أكبر من 100؟ إذا كان كذلك، ثم انني تنفيذ أول الجزء قبل النقطتين. إذا لم يكن، ثم انني تنفيذ الجزء الثاني بعد النقطتين. حتى إذا كان n أكبر من 100، بعد ذلك يختار عالية ويضع ذلك في سلسلة ق. إذا كان n أقل من 100، فإنه يختار منخفضة ثم يضع ذلك في سلسلة ق. بحيث تتكثف هذه جزءا كبيرا أسفل إلى أن مجرد سطر واحد. سرور 5: هل هذا شعبية؟ جوزيف: نعم، هو شعبية كبيرة ل الأشياء التي أساسا تريد لا الاحالة على أساس نوعا من الشرط. وفي هذه الحالة، كنا نحاول لتعيين قيمة إلى سلسلة ق. انها ليست حتى - اعتقد انني لا يفضلون حقا في حالات أخرى. لكنها مفيدة بشكل خاص لهذه المهمة. ROB: هذا هو نمط شائع جدا حيث لديك بعض متغير كنت أريد أن أقول، إذا كان هناك شيء، تعيين هذا المتغير إلى قيمة واحدة؛ آخر، تعيين هذا المتغير إلى قيمة أخرى. وهذا هو السيناريو حيث استخدام الثلاثي. جوزيف: وأنت تقوم بحفظ الكثير من الخطوط، أليس كذلك؟ وذلك فقط يجعل التعليمات البرمجية يمكن القول أكثر قليلا للقراءة. نعم، السؤال؟ سرور 6: للحصول على الثلاثي، هل يمكن أن تذهب، متساوين سلسلة ق ق، علامة استفهام؟ ثم هل يمكن أن يكون، مثلا، خمسة خيارات مختلفة. واعتمادا على ما عدد ن كان، من شأنه أن تختار واحدة من تلك؟ جوزيف: لذا فإن السؤال هو، هناك نوع من بناء جملة حيث يمكنك القيام به سلسلة ق يساوي ن، ومن ثم يكون أكثر من اثنين خيارات بعد ذلك علامة استفهام؟ والجواب البسيط هو لا، ليس هناك حقا وسيلة جيدة للقيام بذلك ما لم تريد عش الثلاثي متعددة المشغلين داخل بعضها البعض. هل يمكن أن تفعل مثل أكبر من 100 ن، علامة استفهام، ثم آخر مشغل الثلاثي، ن أكبر من 50، علامة استفهام، والعش على هذا النحو. ولكن في هذا السيناريو، التعليمات البرمجية ل الحصول على نوع من الفوضى وغير قابل للقراءة، وأنه قد يكون من الأفضل أن تذهب فقط ل بيان إذا / آخر في تلك المرحلة. ROB: وأيضا، كملاحظة جانبية، PHP تطبق الثلاثي بشكل غير صحيح المشغل بحيث ternaries المتداخلة لا تعمل حتى كما يجب. جوزيف: نعم. لذلك يحصل مربكة قليلا، وخصوصا عندما تذهب إلى لغات مختلفة. ROB: انها مربكة يكفي أن اللغات مخطئون حول هذا الموضوع. جوزيف: وهكذا في الواقع، فقط لتوضيح، لا يعلم الجميع أن ما ٪ ق يفعل هنا؟ أي أسئلة حول هذا الموضوع؟ اعتقد فقط للكاميرا، و٪ ق يتيح لنا وضع أساسا عنصر نائب عن سلسلة. ثم في النهاية، ونحن تحديد أن متغير ونحن نريد ان نضع في هذا صاحب المكان هو ق. بحيث يأخذ أساسا ق ويضعه في هنا. وبعد ذلك سيتم طباعة، اخترت عالية أو اخترت عددا منخفضة. موافق. حتى الحلقات تسمح لك لأداء الأشياء في حركات دائرية، أليس كذلك؟ كنت قد واجهت هذا في الصفر في شكل حلقات للأبد أو حتى تكرار أو تكرار معين عدد من المرات. فلماذا هذا جيد بالنسبة لنا؟ حسنا، في C، دعنا نقول لدينا هذا الأغنية التي تنفذ في خدش تغني، وهذا هو أغنية أن لا ينتهي أبدا. وغني فقط على وعلى و إلى الأبد وإلى الأبد. حسنا، لا يمكنك حقا جعل برنامج يحتوي على عدد لا حصر له من printf بيانات في ذلك، أليس كذلك؟ حتى في هذا السيناريو على وجه الخصوص، في اتجاه واحد هل يمكن أن تجعل من هذا العمل و لجعله طباعة الأبد هو بدلا من استخدام حلقة في حين. حتى حلقة في حين سيتم تنفيذ ما هو في الجسم من الأقواس اللتين ينتمي إليها على أساس ما الشرط هو. حتى في هذا المثال بالذات قبل، وإذا نحن نريد لطباعة هذا إلى الأبد، ما قد نفعل؟ حسنا، بالتأكيد، أليس كذلك؟ لذلك هذا النوع من يجمع بين فكرة بعض تعبير منطقي جنبا إلى جنب مع حلقة. وعلمنا منطقية التعبيرات في وقت سابق. لذلك كلما الشرط داخل وفي حين أن يبقى صحيحا، هذه الحلقة سيتم تنفيذ على وعلى وعلى. وفي هذه الحالة، إذا نحن فقط توفير ذلك مع صحيح، وهذا يسبب لانهائية حلقة الذي يطبع الأغنية على وعلى وكما أننا على المطلوب قبل دون وجود برنامج لديها لانهائية عدد من البيانات printf، الذي هو غير ممكن. أكثر من ذلك مقنع، رغم ذلك، يمكنك استخدام هذا مع متغير وشرط. لذلك دعونا نقول أننا نريد أن نكرر العبارة، loopy الجهد تماما، 10 مرات. ذلك ما يمكنك القيام به مع حلقة بينما هو يمكنك تهيئة الأولى عداد متغير خارج في حين حلقة إلى 10. ثم في الأساس، في كل مرة تذهب خلال الحلقة حين، كنت طباعة بيان ومن ثم يمكنك إنقاص عداد متغير حتى في النهاية، في مرحلة ما، وبمجرد أن طرح ما يكفي مرات، من 1 أنا ما يكفي من الأوقات - وفقط لتوضيح، وأنا ناقص ناقص يعني أنا يساوي أنا ناقص 1. والتي تجلب أساسا أنا وصولا الى النقطة التي بمجرد أن تصل إلى الصفر، وهذا الشرط هو لم يعد صحيحا و حتى خروجها من حلقة. حتى loopy الجهد تماما فقط يطبع 10 مرات. أي أسئلة حول حلقة في حين؟ موافق. حتى لا يكون هناك وسيلة يمكننا أن نفعل ما نحن فقط فعلت بطريقة أكثر إيجازا مع ما نسميه حلقة For. حتى حلقة For يتكون من التهيئة، وهي حالة، و التحديث، تماما مثل كان لدينا قبل بينما في هذا حلقة. لذلك دعونا نلقي نظرة. في هذه الحلقة في حين، كان لدينا التهيئة، ثم كان لدينا شرط أن بحثنا. ومن ثم كان لدينا التحديث خطوة في الأعلى. مع حلقة For، وهذا يستغرق الأساس هذه الأمور الثلاثة ويتكثف عليه أسفل إلى سطر واحد. وبالتالي فإن أول ما يفعل في للحلقة هو التهيئة. ثم كنت تفعل فاصلة منقوطة، ثم كنت تفعل الشرط، الذي هو أنا أكبر من الصفر يذهب هناك، ثم الخطوة التحديث. لذلك هذا يحصل أجريت في نهاية جدا من الجسم حلقة. لذلك هذه البرامج هما أي ما يعادل أساسا. أي أسئلة؟ فما هو الفرق واحد بين هذين؟ يمكن لأي شخص أن نشير بها؟ قد تكون خفية بعض الشيء. انها مجرد اختلاف صغير جدا. نعم؟ سرور 5: أنت لن تكون قادرة على استخدام وأنا متغير خارج للحلقة [غير مسموع]؟ جوزيف: بالضبط. لذلك هذا هو شيء ونحن سنصل إلى ودعا في وقت لاحق نطاق متغير. ولكن أساسا، وهذا الباحث حياة أنا خارج هذا في حين أن الحلقة. ذلك مرة واحدة ويتم ذلك في حين حلقة المنفذة، سأكون قادرا على استخدام أنا في وقت لاحق على في البرنامج. بينما مع هذا للحلقة، وهذا الباحث الأول وراقب داخل هذا للحلقة. ولأنه داخل هذا الجزء من للحلقة، التي تبدأ في الأقواس وينتهي مع متعرج هناك. أي شيء أعلنت داخل هنا لا يمكن استخدامها خارج. إذا كان الأمر كذلك وأنا أحاول أن استخدام أنا خارج، وأنها سوف قل لي، رمزا غير معلنة. وأساسا، وأود أن لا تكون قادرة على استخدامها. ROB: وأيضا، قبل 10 سنوات، في حرفيا جميع الحالات، هي الأقواس المتعرجة ما استخدمته لتحديد نطاق متغير. لذلك في هناك، الباحث الأول يساوي 10 وأعلن داخل هذا مجموعة من الأقواس المتعرجة. وحتى ذلك الحين طالما حاولت استخدام أنا قبل هذا متعرج، أنه بخير. قد تشاهد عند كتابة جعل، ل نرى اندفاع، اندفاعة، الأمراض المنقولة جنسيا، يساوي، C99. بحيث يتم إصدار لاحق من C التي وقد نفذت دول مجلس التعاون الخليجي الذي يعطي أيضا هذا الاختصار. لذلك هذا يستخدم لعدم السماح في C. و يمكنك ان ترى لماذا، لأن هذا الباحث أنا هو خارج هذا متعرج ولكن لا يزال يعتبر أن تكون في نطاق هذه الأقواس المتعرجة. ولكن هذا هو الشيء مريحة للغاية، وذلك هو امتداد جيدة. جوزيف: أي أسئلة؟ موافق. فما هو أكثر فائدة هو أنه في بعض الأحيان تريد نوعا من الدينامية في حلقة الخاص بك، أليس كذلك؟ كنت لا تريد لمجرد طباعة بالضرورة ووبي تماما في كل وقت، كنت تريد أن العد التنازلي من 10 أو شيء. وهكذا يمكنك استخدام المتغير العداد داخل تلك الحلقة كذلك. وفي هذه الحالة، وهذا البرنامج فقط العد التنازلي من 10 على طول الطريق. وماذا لا طباعة؟ فإنه لا تتم طباعة الصفر، الحق، لأنه عندما - نعم، كما أنه لا يطبع 11. لذلك لا تتم طباعة الصفر، لأنه عندما أنا هو صفر، وتذكر، فالتقييم الشرط قبل أن يذهب على لتنفيذ جسم الحلقة. وعندما كنت صفرا، وهذا غير صحيح، لذلك أنها لا تطبع العد التنازلي الصفر، فإنه يطبع للتو العد بانخفاض 10 على طول الطريق وصولا الى 1. إذا أردنا فعلا لطباعة الصفر، ثم نحن من شأنه أن يضع علامة المساواة بعد هذا أكبر من علامة. موافق. حتى طريقة واحدة للقيام التحقق من صحة المدخلات، والتي هو عندما يطلب من المستخدم القيام به شيء، وتريد للتأكد من أنها اتباع التعليمات الخاصة بك، هو استخدام حلقة في حين، أليس كذلك؟ حتى في هذه الحالة بالذات، أنا أسأل لرقم موجب ثم أنا انتظار إدخال. ثم راجعت في حين أن الإدخال أقل من الصفر، والحفاظ على سؤالهم. لذلك طالما أنها تعطيني رقم ليست إيجابية، يبقى السؤال، يبقى السؤال، يبقى السؤال. ولكن ما هو نوع من غريبة عن هذا؟ أو ما لا يبدو الأمثل حول هذا الهيكل هنا؟ أي شخص؟ نعم؟ سرور 6: أنت تكرار تعليمات مرتين. جوزيف: الحق. لذلك لدينا بيانين printf هنا، أليس كذلك؟ حتى لا يكون هناك وسيلة يمكن أن نحصل على هذا فقط وصولا الى واحد من شأنه أن يجعل لدينا كود أسهل للقراءة و أكثر قليلا نظيفة. ومن ثم لن يكون لدينا ل وقد يحصل في مرتين كذلك. وطريقة واحدة يمكنك القيام به وهذا هو باستخدام حلقة إفعل حين. وحلقة إفعل بينما هو في الأساس شكل مختلف من حلقة بينما حيث كل ما هو داخل الأقواس المتعرجة يعدم مرة واحدة على الأقل. حتى هنا، أعلن، وكثافة العمليات المدخلات، وخارج أولا. ثم أقول فقط، هل هذا تعليمات حين مدخلات هو أقل من الصفر. لذلك يضرب به أولا. فإنه سيتم تنفيذ هذا دائما ما لا يقل عن مرة واحدة، لذلك سوف تسأل دائما للمستخدم لإدخال مرة واحدة على الأقل. وبعد ذلك بتقييم أن المدخلات، ويدور في حلقة مفرغة. نعم، السؤال؟ سرور 6: هل هناك طريقة للقيام بذلك [غير مسموع] أنواع، مثل إذا كنت أقول، GetString، وشخص [غير مسموع] هل هناك طريقة ل[غير مسموع] جوزيف: لذا فإن السؤال هو، هناك طريقة للقيام التحقق من صحة المدخلات إذا كان المستخدم لا تضع في الحق نوع المتغير؟ حتى إذا كنا نسأل عن عدد صحيح، وأنها تعطينا سلسلة بدلا من ذلك. وفي الوظائف التي ننفذها بالنسبة لك، GetInt، GetString في كل من تلك المهام، فإنها في الواقع بالفعل تفعل هذا النوع من نوع المدخلات الأساسية التحقق من صحة تحت غطاء محرك السيارة. حتى إذا كنت تستخدم وظائف أننا أعطاك، لم يكن لديك حقا ل. ولكن إذا كنت تريد أن تبدو أكثر في كيفية يمكنك القيام به في الواقع ذلك، يمكنك أن تبحث تحت غطاء محرك السيارة في ملف I/O-- لا ملف وظائف I / O القياسية وكأنه يقرأ من المدخلات القياسية و الإخراج القياسي. ويمكنك الحصول على شعور أفضل كيف يمكنك أن تفعل ذلك. ROB: قضية واحدة، رغم ذلك، هو على وجه التحديد مع المثال كنت وقال، تتوقع سلسلة وأنا أدخل كثافة العمليات. كيف يمكنك معرفة الفرق بين الرغبة عمدا سلسلة 123 مقابل الرغبة في كثافة العمليات 123؟ حتى سلسلة، انها الى حد كبير وليس هناك التحقق من صحة، انها مجرد أيا كانت دخلت كنت سيفسر كسلسلة. الباحث هو أسهل، لأن بغض النظر عن كنت تأخذ المدخلات من المستخدم، وأنت مع الأخذ دائما سلسلة. وحتى هذه السلسلة يمكنك ثم تحقق، وجميع هذه أرقام رقمية في الواقع؟ جوزيف: OK. أي أسئلة حول حلقة إفعل في حين؟ ROB: أوه، وهذا هو أيضا - العودة إلى نطاق، شائعة إلى حد ما الخطأ هو محاولة لاستخدام بعض المحلية متغير من داخل هذا إفعل في حين حلقة داخل هذا الشرط. والواقع، إذا ما صدقنا خلصنا من هذا وقال الباحث يساوي مدخلات GetInt، ثم سيقوم المترجم الصراخ لنا، بسبب عدم وجود مدخلات خارج نطاق هذه الأقواس المتعرجة. جوزيف: وهذا هو السبب في أننا تحتاج هذه التشكيلة هنا. موافق. بحيث يمكنك أيضا الخروج من حلقة في وقت مبكر إذا كنت ترغب في ذلك. لذلك هذا هو وسيلة مختلفة من تنفيذ ما نفذنا فقط. وبدلا من استخدام حالة داخل الأقواس، ونحن باستخدام إذا البيان داخل الجسم الحلقة دو حين. وأساسا، عند المدخل هو في النهاية أكبر من الصفر، ونحن سوف الخروج من الحلقة. ولذا فإننا سوف يذهب كل الطريق إلى هنا. ويمكنك أن ترى أن هذا من شأنه ربما يكون من المفضل في هذه السيناريو، لأنه قليلا أنظف قليلا وقليلا بت أسهل للقراءة. في حين أن هذا، كنت نوع من لديها خطوط اضافية في ذلك. انها أقبح قليلا، أعتقد، إلى حد ما. نعم، السؤال؟ سرور 4: هل كسر فقط الحصول على لكم من مجموعة واحدة من الأقواس؟ جوزيف: الحق. وبالتالي فإن السؤال هو سيكسر فقط تحصل على الخروج من حلقة واحدة؟ والجواب هو نعم. لذلك إذا كنت قد المتداخلة للحلقات، ل سبيل المثال، إذا كان لدي لكثافة الأول يساوي 0 حتى 10 ثم لكثافة J يساوي 0 حتى 10، وإذا كنت الخروج من الداخلية حلقة، وسوف لا تزال تذهب إلى حلقة الخارجي. لذلك سوف نستمر أداء العمليات في الخارج. أي أسئلة حول هذا الموضوع؟ نعم؟ سرور 5: ولكن كسر ظائف فقط لالأقواس المتعرجة، وليس لغيرها البيانات؟ [غير مسموع] جوزيف: وبالتالي فإن السؤال هو سيكسر وظيفة فقط للحلقات بدلا من عبارات أخرى مثل إذا؟ ونعم، هذا هو الحال، لأن كنت الخروج من حلقة، والحق، في الشعور. ROB: في الغالبية العظمى من الحالات، انها هذا هو نوع من إذا كان شيء، ثم كسر. لذلك لم يكن لديك لكسر تنطبق على وإذا كان هذا هو التفاف حوله. وأيضا، وهذا ليس بكثير من حلقة، ولكن تذكر أن مفاتيح أيضا اندلعت من طريق فواصل. شاهدنا فواصل المستخدمة مع مفاتيح من قبل. جوزيف: ويمكنك أيضا استخدامها في حين أن حلقات وحلقات ل. أي أسئلة؟ موافق. حتى يصل المقبل هو الوظائف. لذلك كنت قد استخدمت واحدة من هذه BYOB كتل في مشروع سكراتش الخاص بك. وهذا يسمح أساسا لك لتحديد مجموعة من التعليمات الواجب اتباعها. وما أعنيه هو أن دعونا نفكر العودة إلى الرياضيات، والحق، والجبر. لديك ما نسميه وظيفة من س، بعض متغير، ودعنا نقول هذا الوظيفة و من x تساوي س زائد 5. لذلك يمكن ان يخطر لك و x كما هذا الأسود المربع الذي يستغرق 15 في ثم تنتج 20. أكثر من ذلك عموما، وهي وظيفة غير وهو الأمر الذي يحتاج إلى بعض المدخلات و ثم تنتج بعض النواتج. ولماذا هي وظائف جيدة؟ انهم جيدة لعدد من الأسباب. حتى لا شخص تريد أن تأخذ طعنة في ما المنظمة وسائل؟ من حيث السبب وظائف مفيدة؟ نعم؟ سرور 4: ويجعل لكم رمز أكثر قابلية للقراءة. جوزيف: الحق. حتى واحد من الأشياء هو أنه يجعل التعليمات البرمجية الخاصة بك أكثر قابلية للقراءة، أليس كذلك؟ بدلا من الاضطرار مثل كثافة x تساوي س مرات س س مرات، وأنا يمكن أن يكون مكعب من س، وهو أكثر قابلية للقراءة وأكثر من ذلك مفهومة للقارئ. المنظمة أيضا من حيث تقسيم الكود الخاص بك إلى السيطرة أجزاء، بحيث بدلا من محاولة تنفيذ كل هذا في مقطع واحد طويل في الرئيسية، يمكنك نوع من تقسيم الامر في مثل، حسنا، دعونا كتابة دالة إلى مكعبات شيء، دعونا إرسال بريد تعمل شيئا لمواجهة. وبهذه الطريقة يمكنك تقسيمه إلى صغيرة، أجزاء القليل الذي يمكنك معالجة بدلا من محاولة معالجة مشكلة كبيرة في كل مرة. ROB: أو حتى صغيرة وقطع الصغيرة التي أنت وشريك يمكن التصدي لها. جوزيف: نعم. ROB: وذلك بدلا من كل من هل تحاول زرع واحد تعمل في نفس الوقت. جوزيف: التبسيط. أي شخص تريد أن تأخذ تخمين؟ نعم؟ سرور 5: المزيد من التكرار. جوزيف: الحق. ذلك الشيء الوحيد الذي يمكنك القيام به مع التبسيط هو أنه نوع من على على غرار إعادة الاستخدام هو أن مرة واحدة وأنا أكتب وظيفة مكعب، يمكنني مجرد استخدام ذلك مرارا ومرارا وتكرارا مرة أخرى في برنامجي بدلا من الكتابة خ س مرات مرات س مرارا و مرارا وتكرارا. وهنا أيضا تبسيط فقط يعني أنه يجعل ترتيب مدونة أسهل لتصحيح بمجرد تقسيم هذا الأمر إلى وظائف. لأن ثم يمكنك توطين حيث مشاكلك هي نوع من. أي أسئلة؟ لذلك فكرة أخرى هي التجريد، أليس كذلك؟ هذا الصندوق الاسود. مثل هل تعرف ما يفعل GetInt لتلقي مدخلات من المستخدم؟ نحن لم حقا قلت لك، أليس كذلك؟ كل ما قد قلت لك هو لا GetInt بالضبط ما تقول انها لا. لذلك حتى لو كنا لا اقول لكم كيف كان يعمل، وكنت لا تزال تعرف. حتى في هذه الحالة بالذات، وهذا هو وظيفة الرباعي التي لا أشياء مختلفة لمدخلا لإنتاج المخرجات. ويمكنك أربعة أضعاف عدد عن طريق ضرب من قبل أربعة. أو يمكنك ما نسميه بت التحول من قبل اثنين. ونحن سوف تغطي هذه في وقت لاحق قليلا. وليس هناك حاجة لمعرفة كيف يمكن لهذا وظيفة يعمل فعلا طالما أنها يعمل كما هو مذكور. حتى تحت غطاء محرك السيارة، وأنا يمكن أن يكون مثل، والعودة مرة الإدخال ثمانية مقسوما على اثنين. وكنت لا أعرف، أليس كذلك؟ كل ما تحتاج إلى معرفته هو يفعل ما يقول. لذلك هذا هو الشيء المفيد حول التجريد. وشيء آخر هو نوع من هذه الفكرة من توطين التعليمات البرمجية لواحد مقطع معين. حتى إذا كان لديك مشكلة، وكنت لا لديك للذهاب في جميع أنحاء التعليمات البرمجية تحاول لإصلاح حيث كانت المشكلة. حتى في هذه الحالة، وأنا نفذت مكعبات خاطئ. اعتقدت مكعب تم ضرب ثلاثة. حتى في هذه الحالة، وهذا هو برنامج واحد ذلك تماما وقد ضرب من قبل ثلاثة في كل مكان. وهناك برنامج آخر لديه المكعب يؤخذ بها الى وظيفة. وحتى الآن إذا أريد لإصلاح خطأي هنا، لا بد لي من إصلاح كل سطر واحد من التعليمات البرمجية في هذا البرنامج. بينما من ناحية أخرى، إذا كنت تستخدم وظيفة، ولست بحاجة فقط لتغيير ما هو الخطأ في مكان واحد. حتى في علوم الكمبيوتر، ونحن استدعاء المدخلات والمخرجات. وتسمى المدخلات أو المعلمات وتسمى الحجج، والمخرجات إرجاع القيم. وسوف نرى كيف يساعد هذا النوع لنا من تعريف دالة في الثانية. لذلك هذا هو تعريف الدالة لالتكعيب. لذلك يأخذ مدخلا، ومن ثم فإنه يعود مرة أن عدد نفسها ثلاث مرات. لذلك دعونا كسر هذه أسفل. لذلك لدينا رأس ظيفة، والتي يتكون أساسا من ثلاثة أشياء. لذلك لدينا المعلمات، والتي هي، كما قلت من قبل، و المدخلات في هذه الوظيفة. ثم نعطي وظيفة اسم. في هذه الحالة، وانه دعا مكعب. وبعد ذلك تحديد ما نوع من قيمة الإرجاع هي. حتى في هذه الحالة، يا وظيفة المكعب يأخذ في عدد صحيح وأنه أيضا بإرجاع عدد صحيح. حتى لو كنت تمر في اثنين، واثنين هو عدد صحيح، فإنها ترجع إلى ثمانية لي، والتي هو عدد صحيح. حتى العودة نوع المعلمات الاسم. أسئلة حول ذلك؟ ثم قيمة الإرجاع هي في الواقع المحدد في نهاية بالقول العودة ويعود بعد ذلك مهما يحتوي على قيمة الإرجاع. حتى في هذه الحالة، إذا وضعنا كل شيء معا، وهي وظيفة يأخذ في المعلمات، وانه دعا شيء، و فإنها ترجع ما هو نوع أن نقول أنه كان على وشك أن يكون. أي أسئلة؟ لذلك كيف يمكننا استخدام وظيفة؟ حسنا، نحن نكتب وظيفة ثم نستخدمها في برنامجنا، أليس كذلك؟ لذلك دعوت عليه مكعب، و بعد ذلك يمكنني أن استخدام مكعب. ولكن ما هو مهم أن نلاحظ غير أن الأمور النظام. إذا كان لدي مكعب أدناه الرئيسي، انها الذهاب الى تشغيل في المكعب. وعند هذه النقطة، لا يوجد شيء دعا مكعب في البرنامج، وانها فقط سيكون مثل، لدي أي فكرة عما هو مكعب. لذلك سوف اقول لكم، ضمني إعلان وظيفة. هذا هو الخطأ الذي يظهر. وحتى في هذه الحالة، هو المكعب أدناه الرئيسية، لذلك لن لمعرفة ذلك. سرور 5: إذن الرئيسي هو عادة تعريف الدالة الماضي؟ جوزيف: لذا فإن السؤال هو، هو الرئيسي عادة مشاركة الشيء الذي كنت تعرف؟ و لا. انها لأننا عادة ما ترغب الرئيسي لتكون في القمة، أليس كذلك؟ لأن هذا هو أول شيء عليك تريد مبرمج فتح برنامج لنرى. وحتى كيف يمكننا حل هذه المسألة من نحن نريد الرئيسي لتكون في القمة، ولكن الوظائف التي نريد، نريد منهم أن يكون أقل الرئيسية بعد أن تكون قادرة على استخدام لهم داخل الرئيسي؟ كذلك، ونحن نستخدم ما نسميه وظيفة النموذج. فما وظيفة النموذج أساسا ويتم لأول مرة يأخذ ما التوقيع أو رأس ظيفة ما نريد لتنفيذ أسفل هنا، ونحن وضعه في الجزء العلوي من البرنامج. حتى في هذه الحالة، ونحن نقول ذلك، أيضا، في وقت لاحق في برنامجنا، ونحن في طريقنا لنقطع وعدا لتنفيذ هذا وظيفة ودعا الباحث مكعب، والتي تأخذ مدخلا صحيحا. وحتى الآن، لأن هذا هو أعلاه الرئيسية، الرئيسية، انها سوف يقولون، أوه، حسنا، في وقت لاحق في البرنامج، التي ستكون هناك حتى أتمكن من الرجوع إليه، ولذا فإنني سوف فقط ندعه يذهب من خلال الوقت الراهن. ثم في الجزء السفلي، علينا أن ننفذ مكعب. ثم سيقول الرئيسي فقط، كذلك، فإنه سيتم فرز من الرابط هذه الرموز اثنين معا. ونحن سوف تغطي ما أن يعني في وقت لاحق. وذلك سوف تعرف أن هذا هو وظيفة المكعب أنه ينبغي استخدامها. ROB: إن [غير مسموع] عن الرغبة الرئيسية في الجزء السفلي أو العلوي، رأيت كليهما. هناك أشياء أحب فقط لوضع الرئيسية في الجزء السفلي. ولكن مرة واحدة يحصل على المشروع لا سيما كبيرة، وعادة الرئيسي هو في ملف كل بمفرده. وعند هذه النقطة، مثل سوف كثافة خط المكعب - داخل stdio.h حفنة خطوط تماما مثل ذلك الباحث المكعب الباحث سطر الإدخال. وحتى تلك النماذج هي الأشياء التي تميل إلى وضع الملفات في الرأس، في هذه النقطة، لا يهم. حسنا، لا يهم. تلك تذهب دائما في القمة. وإذا الرئيسي هو ليس ملف كل بمفرده، لم يكن لديك ما يدعو للقلق حول وضع نماذج ظيفة الفردية في الملف. جوزيف: ونحن سوف نصل الى ذلك قليلا في وقت لاحق قليلا عندما يبدأ الحديث روب حول ترجمة. وحتى لا يكون هناك أيضا فرقا بين المعلمة وحجة. والمعلمة هي فقط ما ونحن نطلق على هذه المدخلات عندما نحدد وظيفة. ونحن نسميها حجة عندما كنا في الواقع تمريرها إلى الدالة. حتى في هذه الحالة، وهذا هو المعلمة، كما قلنا من قبل. وعندما كنا في الواقع استخدامها هناك، مكعب من العاشر، ثم س نفسها ما نسميه حجة إلى وظيفة مكعب. ROB: لذا الحجج المعلمة هي - هناك هذا التمييز، للغاية الخلط بالتبادل. عند هذه النقطة، بالنسبة لي، انها مثل واحد من تلك الكلمات التي عندما أراها في البرية، وأنا لا يمكن أن تساعد ولكن على الفور سؤال عما إذا كانت تستخدم في السياق الصحيح، وذلك لأن الفرق هو أن مجرد دقيقا بما فيه الكفاية الجميع يميل - أنا دائما تقريبا يقول حجة بغض النظر عن ما أعنيه. جوزيف: وظائف مفيدة أيضا لما نسميه آثار جانبية. لذلك وظيفة يمكن أن تتخذ أي المدخلات، و كما يمكن أن تنتج أي النواتج. حتى في هذه الحالة بالذات، وأنا تحديد روتين التي لا يوجد لديه العودة القيمة. ومن أجل تحديد ذلك، ونحن نستخدم ما نسميه فراغا أكثر من هنا. وبالتالي فإن الآثار الجانبية لهذه الوظيفة هو أنه يطبع فقط الاشياء إلى الصفحة. أنها لا تأخذ في الواقع أي المدخلات، وأنه لا في الواقع تنتج أي النواتج. ولكن هذا يمكن أن تكون مفيدة في الشعور إذا كنت ترغب في ذلك، على سبيل المثال، التصحيح شيء ما في البرنامج الخاص بك، إذا كنت تريد لكتابة القليل من روتين أن يطبع بها، دعنا نقول، محتويات من الذاكرة أو شيء من هذا. وبالتالي فإن هذه الآثار الجانبية تكون في بعض الأحيان مفيد خارج السياق تماما مثل من المدخلات والمخرجات. أي أسئلة؟ ووضع حد لهذا القطاع على وجه الخصوص، ماذا تفعل هذا البرنامج؟ سأعطيك اثنين من الرجال ثوان لقراءة من خلال ذلك. على مستوى أساسي جدا، ما نريد يقول هو أنه مقايضة x و y، أليس كذلك؟ فكيف العديد من تعتقدون فعلا هذا وسوف مبادلة x و y؟ ارفع يدك. لا أحد. موافق. الذي يعتقد أنه سوف لا مبادلة x و y؟ وكان مجموع تلك لا الغرفة بأكملها. وحتى بعض الناس ليسوا متأكدين. موافق. وهذا معقول. لذلك دعونا نذهب من خلال ما يحدث عندما استدعاء وظائف في الواقع لأول مرة في أجل الإجابة على هذا السؤال. لذلك هذا هو ما الذاكرة نوع من يبدو. هذا هو نوع من مثل نموذج مبسط ما يبدو الذاكرة مثل عندما تشغيل البرنامج. ولذلك لا يوجد شيء يسمى مكدس إلى هنا و ما يسمى الكومة. وهذه تنمو نحو وسط الذاكرة. حتى في هذه الحالة بالذات، عندما استدعاء دالة، فإنه يحصل ضعت على المكدس. ثم كل ما يرد في هذا يبقى ظيفة في ما نسميه أن إطار المكدس الدالة. وذلك للحصول على تصور لطيفة من هذا، let's - على سبيل المثال، كان لدينا الرئيسية البرنامج في وقت سابق. وداخل الرئيسي، ونحن دعا مكعب. سيكون ذلك أهم يذهب أولا على المكدس الإطار، لأنه الوظيفة الأولى وهذا ما يسمى. ثم عندما يتم استدعاء المكعب داخل الرئيسية، ويحصل على وضعه على رأس الرئيسية داخل الذاكرة. فما ستلاحظ هنا هو أن المكعب معلمات الخاصة بها ولها السكان المحليين الخاصة. لذلك عندما كنت في الواقع تمرير شيء ل وظيفة والمعلمات أنه يحصل على نسخ من ما كان مرت في من الرئيسي. وإلى نوع من شرح هذا، دعونا المشي من خلال البرنامج. لذلك لدينا مكدس، وهذا هو مجرد جزء المكدس. وما نقوم به هو تهيئة الأولى x و y إلى واحد واثنين. لذلك لدينا هذه مربعات صغيرة. انهم يجلسون في كومة الرئيسي الإطار على المكدس. أنها تحتوي على واحد واثنين. الآن نحن ندعو المبادلة. ما يحدث هو أننا تمرير x و y في المبادلة، ومبادلة بإنشاء نسخ خاصة بها من هذه المتغيرات لاستخدام داخل من إطار المكدس بها. وحتى الآن هناك، لدينا، والتي يحتوي على القيمة التي كان س، ب، والتي تحتوي على القيمة التي كان ذ. حتى واحد أو اثنين. وستلاحظ أن هذا هو منفصلة من x و y داخل الرئيسي. لذلك نحن الآن إنشاء مؤقتة متغير لاحتواء. وضعنا يساوي ب، لذلك تغييرات 1-2. ثم وضعناها ب متساوية لدرجة الحرارة، والتي هي واحدة. ثم نحن الآن الخروج خروج هذه الوظيفة. عند الخروج من وظيفة، و يحصل برزت إطار المكدس خارج المكدس. نحن نسميها دفع. كنت تدفع إطار مكدس إلى المكدس وإذا كنت البوب ​​قبالة كومة. وذلك ما يحدث هو أن كل شيء وكان في ذلك نوع من كومة الإطار فقط ترتفع في النيران. وبحيث لم يعد موجودا. ولكن ماذا نلاحظ؟ نحن لم تغير الواقع قيم x و y، أليس كذلك؟ حتى أولئك بقيت المحلية الرئيسية. وعن طريق تمرير الأمور في مبادلة، ونحن في الواقع لم تتغير هذه القيم. وماذا نسمي هذا؟ ونحن نسمي هذا يمر من حيث القيمة. حتى في C، عند تمرير الأمور في وظائف، ويمر بها من حيث القيمة و يجعل نسخة منها ل وظيفة للاستخدام. وسوف نتعلم عن شيء يسمى يمر بالرجوع في وقت لاحق، ولكن هذا والطريقة التي يمكن أن تحل هذه المشكلة. لكننا لن تقلق بشأن أنه حتى وقت لاحق. ROB: وفي الواقع، هذا المصطلح، عابرة بالرجوع، لذلك C لا يملك حتى يمر عن طريق الرجوع. C حصرا ويمر من حيث القيمة. بغض النظر عن ما تفعله، وكنت دائما تمرير نسخة من شيء. انها مجرد أنه، وكأنني نوع من الذكر أنه قبل مع مؤشرات وأن سلسلة هو في الحقيقة مجرد أربعة بايت لافتا إلى مكان ما في الذاكرة. حسنا، إذا كان لدي هذه السلسلة وانها تقول لي هذا هو المكان السلسلة - حسنا، إذا كان لدي هذا المؤشر إلى هذا مكان في الذاكرة، ثم لا أستطيع تمرير نسخة من هذا المؤشر إلى وظيفة، و أن وظيفة لا يزال يعرف أين في الذاكرة هو عليه. لذلك كل من هذه المؤشرات تشير إلى نفس المكان في الذاكرة، و هذه هي الطريقة التي نحن في طريقنا لتكون قادرة لتعديل الأمور خارج الإطار المكدس الحالي. جوزيف: هل تريد أن تفعل تجميع؟ ROB: لا، انها ل05:30. جوزيف: OK. فمن 05:30. موافق. ولذا فإننا سوف تغطي تجميع أعتقد في المقطع التالي، أو فرعكم سوف الزعيم في تلك المرحلة. و- ROB: أي أسئلة؟ جوزيف: أي أسئلة؟ نعم؟ سرور 5: استخدام سلاسل من CS50، أي الوظائف التي نريد استخدامها ل تلك، والتي سوف يكون مثل وظائف C. CS50 لم يذهب في و إجراء أي إضافية. ROB: صحيح. أي من C مثل [غير مسموع]، كنت ستستخدم تلك على سلاسل لدينا. جوزيف: وآخر شيء واحد أريد أن ذكر هو ان لدينا دليل نمط لهذه الفئة. ROB: أوه، نعم. جوزيف: حتى إذا كنت قد وصلنا من برمجة الخلفية من قبل، كنت قد يكون بعض الاتفاقيات عندما كنت كتابة التعليمات البرمجية مثل وضع الأقواس على نفس الخط أو خاصة طرق الطعج أو تسمية المتغيرات الخاصة بك. في هذه الفئة، ونحن نريد أن يتبع دليل نمط معين لمجرد، حسنا، إذا كنت الخروج والعمل في الصناعة، وأنت تسير من المتوقع لمتابعة دليل نمط الشركة التي تذهب إليها. مثل على سبيل المثال، أعتقد الفيسبوك لديه نوع معين من تسمية الاتفاقية. وهناك اختلافات بين الجمل المتغيرات غلاف وتماما مثل بفصلها سفلية. وأيضا، وأعتقد أن الأهم من ذلك، مثل على سبيل المثال، المسافة البادئة، أليس كذلك؟ نحن لا تبدأ الأقواس المتعرجة حيث الشرط هو، وأنها وعلى السطر التالي. ونحن أيضا وضع الأقواس المتعرجة في حتى لو كان سطر واحد فقط. والكثير من الأوقات، وهناك طرق للقيام حيث أنه يمكنك ترك هذه الأقواس قبالة لو كان سطر واحد فقط بموجب البيان إذا. ولكن في هذه الفئة، ونحن نريد أن يتبع دليل نمط معين فقط حتى تحصل تستخدم لهذا النوع من الشيء. ROB: نعم، ونمط 50 هو الذهاب الى فرض هذا دليل والأسلوب، ونحن تنوي استخدام ستايل 50 لدرجة التعليمات البرمجية. لذلك يجعل الأمور أسهل بالنسبة لنا و نأمل أن لا تجعل الأشياء التي أسوأ بكثير بالنسبة لك نظرا ل لا ينبغي أن يكون أسلوب موحد غير واقعي. جوزيف: وأخيرا، للعثور على غرار دليل، انتقل إلى manual.cs50.net/style. ونعم. سرور 4: هل أنت ذاهب لفرض أي حرف في كل سطر؟ ROB: نعم. جوزيف: عذرا، والرجال. ROB: هذا مثل واحدة من تلك فقط. عند هذه النقطة، وأنا موافق مع 120. أنا موافق مع قوله 120 الأحرف في كل سطر. أنا أفهم أن يكون هناك بعض الحد. أعتقد 80 صغيرة جدا، ولكن اننا نعزز ذلك. جوزيف: شخصيا، أعتقد مع C، 80 حرفا هو أكثر موافق. بمجرد البدء في الحصول على غيرها لغات مثل جافا سكريبت وPHP، لا معقول جدا للحد فقط إلى 80 حرفا. موافق. حسنا، كان هذا القسم عظمى. لا تريد أي شخص الحلوى؟ سرور 4: نعم.