1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA تشان: انها لي، Zamyla. 3 00:00:02,500 --> 00:00:06,910 اليوم في ماريو، ونحن في طريقنا لتكون رسم نصف الهرم لماريو 4 00:00:06,910 --> 00:00:08,290 على الصعود. 5 00:00:08,290 --> 00:00:11,570 >> لذلك دعونا نتحدث عن لدينا تأليف للهذه المشكلة. 6 00:00:11,570 --> 00:00:13,610 ونحن في طريقنا إلى الرغبة مطالبة والتحقق من صحة 7 00:00:13,610 --> 00:00:18,290 المستخدم لإدخال صالحة كيف ارتفاع يريدون الهرم ماريو أن يكون. 8 00:00:18,290 --> 00:00:20,090 وبعد ذلك، ونحن في طريقنا لاستدراجه. 9 00:00:20,090 --> 00:00:24,870 لذلك دعونا نبدأ مع دفع و التحقق من صحة المستخدم مدخلاتها. 10 00:00:24,870 --> 00:00:27,640 >> يمكننا الاستفادة من وظيفة المكتبة CS50 11 00:00:27,640 --> 00:00:31,160 الحصول على كثافة العمليات التي من شأنها ضمان المستخدم مدخلات عدد صحيح. 12 00:00:31,160 --> 00:00:35,730 أي الأعداد الصحيحة الموجبة، سلبية الأعداد الصحيحة، رقم 0 كلها لعبة عادلة. 13 00:00:35,730 --> 00:00:41,670 وإلا، سيتم مطالبة المستخدم إعادة المحاولة حتى إدخال عدد صحيح صالح. 14 00:00:41,670 --> 00:00:44,210 الآن على الرغم من أن الحصول على كثافة لا الكثير من العمل بالنسبة لنا 15 00:00:44,210 --> 00:00:46,730 لضمان أن المستخدم يعطينا صحيح، 16 00:00:46,730 --> 00:00:50,760 ما زلنا بحاجة إلى تطبيق بعض قيود إضافية على ذلك. 17 00:00:50,760 --> 00:00:56,420 بعد كل شيء، ونحن لا يمكن أن يكون تسلق ماريو نصف الهرم من ارتفاع سلبي 12. 18 00:00:56,420 --> 00:00:59,040 >> وبالإضافة إلى ذلك، مواصفات مشكلة 19 00:00:59,040 --> 00:01:02,490 يقول ما في وسعنا فقط يسمح ماريو لتسلق 20 00:01:02,490 --> 00:01:06,940 هرم من المرتفعات بين 0 و 23. 21 00:01:06,940 --> 00:01:11,120 موافق، وهذا يعني أننا في حاجة للمطالبة باستمرار المستخدم 22 00:01:11,120 --> 00:01:14,320 أن يقدم لنا صالحة عدد وتستمر فقط 23 00:01:14,320 --> 00:01:17,120 مرة واحدة انهم أعطانا ارتفاع صالح. 24 00:01:17,120 --> 00:01:18,720 كيف نفعل ذلك؟ 25 00:01:18,720 --> 00:01:23,760 >> حسنا، والعمليات مستمرة تعطينا فكرة loops-- القيام بشيء 26 00:01:23,760 --> 00:01:24,720 متكرر. 27 00:01:24,720 --> 00:01:28,220 حلقة واحدة في جيم وحين حلقة التي سوف باستمرار 28 00:01:28,220 --> 00:01:33,480 تنفيذ جسم حلقة طالما بتقييم الوضع بالنظر إلى true. 29 00:01:33,480 --> 00:01:36,200 في أقرب وقت كما أن حالة تقييم إلى false، 30 00:01:36,200 --> 00:01:39,770 ستسير البرنامج ل كل ما يأتي بعد ذلك. 31 00:01:39,770 --> 00:01:43,180 وذلك في حين الحلقات هي وسيلة واحدة ل ضمان أننا باستمرار 32 00:01:43,180 --> 00:01:45,320 مطالبة المستخدم لإدخال صالح. 33 00:01:45,320 --> 00:01:50,070 وبمجرد أن تعطينا مدخلا صحيحا، سنقوم المضي قدما إلى ما يأتي بعد ذلك. 34 00:01:50,070 --> 00:01:54,380 ونحن نعلم أننا ذاهبون لنسأل المستخدم لإدخال مرة واحدة على الأقل. 35 00:01:54,380 --> 00:01:59,200 وحتى الآن نأتي إلى شقيقة في حين حلقة، وهو ما يفعل حين حلقة. 36 00:01:59,200 --> 00:02:02,650 >> القيام به أثناء الحلقات تتولي تنفيذ الجسم من الحلقة مرة واحدة على الأقل. 37 00:02:02,650 --> 00:02:06,150 حتى من دون التحقق من حالة، فإنه سيتم تنفيذ جسم الحلقة. 38 00:02:06,150 --> 00:02:09,750 ومن ثم التحقق من حالة إلى رؤية سواء كان ذلك يحتاج إلى تكرار نفسها. 39 00:02:09,750 --> 00:02:13,080 يأتي هذا في متناول اليدين عندما نحن نتحقق من صحة إدخال المستخدم. 40 00:02:13,080 --> 00:02:15,830 ونحن نعلم أننا ذاهبون ليطلب منهم مرة واحدة على الأقل. 41 00:02:15,830 --> 00:02:18,780 لذا افعل في حين قد حلقة ننظر بشيء من هذا القبيل. 42 00:02:18,780 --> 00:02:20,090 لدينا ن عدد صحيح. 43 00:02:20,090 --> 00:02:22,760 وداخل افعل في حين حلقة، فإننا على الفور 44 00:02:22,760 --> 00:02:24,750 مطالبة المستخدم للحصول على عدد صحيح. 45 00:02:24,750 --> 00:02:29,740 إذا كان n غير صالح، ثم سنقوم تدفعهم مرارا وتكرارا وتكرارا حتى 46 00:02:29,740 --> 00:02:31,820 يقدم لنا هذا صحيح صالح. 47 00:02:31,820 --> 00:02:37,440 وأخيرا، مرة واحدة n هو إدخال صحيح، وسوف نقوم انتقل إلى بقية برنامجنا. 48 00:02:37,440 --> 00:02:41,830 >> لذلك دعونا نعود إلى المواصفات والاختيار ما الشروط اللازمة لإدخال صحيح 49 00:02:41,830 --> 00:02:43,670 سوف يكون. 50 00:02:43,670 --> 00:02:48,090 مرتفعات صالحة تسير ل ما بين 0 و 23، شاملا. 51 00:02:48,090 --> 00:02:53,350 ارتفاعات غير صالحة حتى تسير ل يكون أقل من 0 أو أكثر من 23. 52 00:02:53,350 --> 00:02:56,420 حتى أن نتذكر أن تصميم حالتك بعناية، 53 00:02:56,420 --> 00:02:58,660 مع العلم أن حالة لافعل حين حلقة 54 00:02:58,660 --> 00:03:01,470 يجب أن يكون في حين ن غير صالح. 55 00:03:01,470 --> 00:03:05,080 الآن هذا لن يكون واحد بسيط تعبير منطقي. 56 00:03:05,080 --> 00:03:07,630 ونحن في طريقنا إلى أن ندمج تعبيرين مختلفة 57 00:03:07,630 --> 00:03:09,900 لجعل حالتنا كلها. 58 00:03:09,900 --> 00:03:13,290 >> لذلك دعونا فقط ننظر إلى جدول الحقيقة لدي منحك بالفعل التلميح أننا 59 00:03:13,290 --> 00:03:15,200 على وشك أن التعامل مع اثنين من القيم المنطقية. 60 00:03:15,200 --> 00:03:19,620 لذلك وهنا جدول الحقيقة أين أنا لدينا اثنين من Booleans-- منطقية 1 و 2. 61 00:03:19,620 --> 00:03:27,050 لذلك لدينا خيار تقييم bool1 وbool2 أو bool1 أو bool2. 62 00:03:27,050 --> 00:03:31,980 وسوف يكون فقط صحيح إذا كان كلا القيم المنطقية تقييم إلى true، في حين أن جميع 63 00:03:31,980 --> 00:03:37,280 أو سوف يكون صحيحا ما دام واحد من والقيم المنطقية اثنين بتقييم إلى true. 64 00:03:37,280 --> 00:03:41,450 موافق، حتى تأخذ لحظة، وقفة هذا فيديو وهضم هذا الجدول الحقيقة. 65 00:03:41,450 --> 00:03:42,930 سأكون هنا في انتظار. 66 00:03:42,930 --> 00:03:45,760 عندما كنت أعود، انظر إذا كنت تستطيع تجميع 67 00:03:45,760 --> 00:03:51,910 تعبير منطقي لجهودكم حالة ن كونها مدخلا صالح. 68 00:03:51,910 --> 00:03:54,420 >> حتى الآن أن لدينا إدخال مستخدم صالح، دعونا 69 00:03:54,420 --> 00:03:58,710 المضي قدما ونتحدث عن كيفية قد رسم النصف الهرم. 70 00:03:58,710 --> 00:04:03,410 هنا في هذا محرر نص بسيط، لقد رسم اليسار محاذاة الهرم. 71 00:04:03,410 --> 00:04:07,050 لكننا نعلم أننا بحاجة لدينا الهرم لتكون محاذاة اليمين. 72 00:04:07,050 --> 00:04:08,650 فكيف يمكن أن أفعل هذا؟ 73 00:04:08,650 --> 00:04:11,440 حسنا، أنا قد تحاول دفع كل شيء إلى الجانب 74 00:04:11,440 --> 00:04:14,880 بواسطة مجرد وضع قليلا شخصية بينهما. 75 00:04:14,880 --> 00:04:16,779 وبعد ذلك، لالمقبل خط، وانا ذاهب لوضع 76 00:04:16,779 --> 00:04:20,970 بعض الأحرف أكثر ليدفع به جنبا إلى جنب، وfurther-- هلم جرا وforth-- ذلك 77 00:04:20,970 --> 00:04:23,360 حتى لدي الحق الانحياز الهرم. 78 00:04:23,360 --> 00:04:27,780 لذلك لدينا هرم محاذاة الصحيح، ولكن أنها لا تبدو كبيرة جدا مع النقاط. 79 00:04:27,780 --> 00:04:30,680 لكننا لا تزال ترغب في الحفاظ على هذا التباعد لطيفة. 80 00:04:30,680 --> 00:04:35,260 لذلك أنا ذاهب إلى حرفيا إدراج بعض المساحات. 81 00:04:35,260 --> 00:04:39,420 >> بدلا من ثلاث نقاط، وسوف أكون وضع واحد، اثنان، ثلاثة مسافات. 82 00:04:39,420 --> 00:04:40,370 في السطر الثاني. 83 00:04:40,370 --> 00:04:42,640 وسوف أضع واحدة، مسافتين. 84 00:04:42,640 --> 00:04:45,370 وعلى ما قبل الأخيرة خط، فقط مسافة واحدة. 85 00:04:45,370 --> 00:04:48,290 وهنا لدي الحق الانحياز الهرم. 86 00:04:48,290 --> 00:04:52,170 من فعل سبيل المثال في النص محرر، لدينا فكرة عن نمط 87 00:04:52,170 --> 00:04:54,590 أننا سوف تستخدم لرسم نصف الهرم. 88 00:04:54,590 --> 00:04:58,080 لكل صف واحد، ما فعلناه ونحن اكتب بعض المساحات، 89 00:04:58,080 --> 00:05:00,170 وكتبته بعد ذلك بعض علامات الرقم، ومن ثم كتابتها 90 00:05:00,170 --> 00:05:03,020 على مفتاح Enter، التي وإنشاء خط جديد. 91 00:05:03,020 --> 00:05:07,770 حتى الآن أن لدينا ذلك، دعونا نذهب خطوة واحدة أبعد من ذلك وإيجاد نمط. 92 00:05:07,770 --> 00:05:10,170 >> لذلك أنا أريد أن أقول، ل الفائدة من هذا المثال، 93 00:05:10,170 --> 00:05:12,480 نحن نتعامل مع ارتفاع 8. 94 00:05:12,480 --> 00:05:17,100 الصف الأول وستكون لدينا اثنين التجزئات التي تلت سبعة مسافات. 95 00:05:17,100 --> 00:05:20,020 ثلاثة التجزئة second--، ستة مسافات. 96 00:05:20,020 --> 00:05:24,260 الثالثة row-- أربعة التجزئة، خمسة spaces-- هلم جرا وهكذا دواليك 97 00:05:24,260 --> 00:05:26,350 حتى نصل الى الصف NTH. 98 00:05:26,350 --> 00:05:31,540 حتى ذلك الحين، وأنا أطلب منكم للصف NTH، عدد التجزئات نحن ذاهبون ل 99 00:05:31,540 --> 00:05:33,120 وكم المساحات؟ 100 00:05:33,120 --> 00:05:37,000 لذلك الامر متروك لكم لمعرفة صيغة لتمثيل كيفية العديد من التجزئات 101 00:05:37,000 --> 00:05:42,020 وكم المساحات اللازمة ل الصف NTH عندما يكون لديك بعض الارتفاع. 102 00:05:42,020 --> 00:05:46,060 >> الآن عندما كنت كشف هذا الخروج، كن حذرا كيف كنت فهرسة. 103 00:05:46,060 --> 00:05:49,170 ما أعنيه بهذا هو أن في الحياة اليومية لنا جميعا 104 00:05:49,170 --> 00:05:51,540 بدء العد، وعادة بنسبة 1. 105 00:05:51,540 --> 00:05:55,950 ولكن في CS50 وفي علوم الكمبيوتر بشكل عام، نحن 0 فهرستها. 106 00:05:55,950 --> 00:06:00,620 حتى الصف الأول سيكون ن 0 مقابل 1. 107 00:06:00,620 --> 00:06:04,550 كن حذرا من هذا عندما كنت في محاولة لمعرفة النمط الخاص بك. 108 00:06:04,550 --> 00:06:07,570 حتى الآن دعونا نعود إلى كيف ونحن في طريقنا إلى رسم الهرم لدينا. 109 00:06:07,570 --> 00:06:12,300 لكل صف واحد، ونحن في طريقنا إلى الرغبة في طباعة مسافات، طباعة التجزئة، 110 00:06:12,300 --> 00:06:14,050 ومن ثم طباعة سطر جديد. 111 00:06:14,050 --> 00:06:19,160 التلميح هنا هو كلمة "ل" كل صف. 112 00:06:19,160 --> 00:06:21,470 في C، لدينا بناء ودعا لحلقة، 113 00:06:21,470 --> 00:06:25,250 التي تتألف من التهيئة، وهي حالة، تحديثا، 114 00:06:25,250 --> 00:06:26,790 والجسم من الحلقة. 115 00:06:26,790 --> 00:06:31,360 >> أقول إنني أريد أن أقول، مرحبا العالم، 50 مرة، يا للحلقة 116 00:06:31,360 --> 00:06:32,880 سوف ننظر بشيء من هذا القبيل. 117 00:06:32,880 --> 00:06:35,480 أنا تهيئة بلدي صحيح إلى 0. 118 00:06:35,480 --> 00:06:38,230 أن الشرط هو أن الأول هو أقل من 50. 119 00:06:38,230 --> 00:06:42,350 وبعد ذلك تحديث بلدي فقط تزايد أنا من جانب واحد في كل مرة. 120 00:06:42,350 --> 00:06:45,140 يمكننا أيضا استخدام لحلقات تكرار على الأشياء. 121 00:06:45,140 --> 00:06:47,820 لاحظ هنا كيف ليس لدينا الثابت ترميز رقم، 122 00:06:47,820 --> 00:06:51,820 بل وضع متغير ارتفاع بدلا من ذلك في هذه الحالة. 123 00:06:51,820 --> 00:06:56,420 ذلك ما أفعله هنا هو أنا بالتكرار على كل صف من الهرم. 124 00:06:56,420 --> 00:07:00,160 أستطيع أن أفعل شيئا لكل صف داخل الجسم من بلدي الحلقة. 125 00:07:00,160 --> 00:07:02,350 >> ما الذي نقوم به داخل الجسم من الحلقة؟ 126 00:07:02,350 --> 00:07:07,120 حسنا، كما قلنا سابقا، نحن الطباعة المساحات ونحن طباعة التجزئة 127 00:07:07,120 --> 00:07:09,480 ونحن طباعة سطر جديد. 128 00:07:09,480 --> 00:07:11,950 حتى بلدي الخارجي للحلقة سيبدو هذا. 129 00:07:11,950 --> 00:07:15,070 أنا تكرار عبر كل صف من الهرم، وذلك باستخدام، 130 00:07:15,070 --> 00:07:18,890 في هذه الحالة، ارتفاع كمتغير الذي يخزن ارتفاع الهرم. 131 00:07:18,890 --> 00:07:22,870 داخل الجسم من تلك الحلقة، وأنا الذهاب لطباعة المساحات مرارا وتكرارا، والطباعة 132 00:07:22,870 --> 00:07:26,730 التجزئة مرارا وتكرارا، ومن ثم طباعة سطر جديد. 133 00:07:26,730 --> 00:07:31,010 >> وحتى الآن، وذلك باستخدام كل من المفاهيم التي لقد تحدثت عنها في هذه المسيرة من خلال، 134 00:07:31,010 --> 00:07:35,210 يجب أن تكون قادرة على مطالبة المستخدم للحصول على المدخلات، والتحقق من صحة هذا المدخل، 135 00:07:35,210 --> 00:07:37,370 ثم رسم النصف الهرم. 136 00:07:37,370 --> 00:07:41,510 >> اسمي Zamyla، وهذا هو CS50. 137 00:07:41,510 --> 00:07:43,167