1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: มันเป็นฉัน 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 ได้รับ int ที่จะให้แน่ใจว่า การใช้ปัจจัยการผลิตที่เป็นจำนวนเต็ม 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 ตอนนี้แม้จะได้รับ int ไม่ ทำงานมากสำหรับเรา 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 หนึ่งวงใน C เป็นในขณะที่ ห่วงที่จะต่อเนื่อง 28 00:01:28,220 --> 00:01:33,480 รันร่างกายของวงตราบเท่าที่ สภาพได้รับการตรวจสอบการจริง 29 00:01:33,480 --> 00:01:36,200 เร็วที่สุดเท่าที่มีเงื่อนไขว่า ประเมินเท็จ 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 เรามีจำนวนเต็ม n 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 ควรจะเป็นในขณะที่ n เป็นที่ไม่ถูกต้อง 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 จะต้องจัดการกับสอง Booleans 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 และจะเป็นจริงถ้าทั้งสอง booleans ประเมินให้เป็นจริงในขณะที่ทั้งหมด 63 00:03:31,980 --> 00:03:37,280 หรือจะเป็นจริงตราบใดที่หนึ่งของ ทั้งสอง Booleans ตรวจสอบการจริง 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 นิพจน์บูลีนสำหรับคุณ สภาพของ n เป็นข้อมูลไม่ถูกต้อง 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 จากการทำตัวอย่างในข้อความ Editor เรามีความคิดสำหรับรูปแบบที่ 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 แล้วพิมพ์บาง hashes และจากนั้นพิมพ์ 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-- สาม hashes หกช่องว่าง 96 00:05:20,020 --> 00:05:24,260 สามสี่ row-- hashes ห้า spaces-- อื่น ๆ และอื่น ๆ 97 00:05:24,260 --> 00:05:26,350 จนกว่าเราจะได้ไปยังแถว NTH 98 00:05:26,350 --> 00:05:31,540 ดังนั้นแล้วผมขอให้คุณสำหรับแถวชับ วิธีการหลาย hashes เราจะมี 99 00:05:31,540 --> 00:05:33,120 และวิธีการหลายช่องว่าง? 100 00:05:33,120 --> 00:05:37,000 ดังนั้นมันก็ขึ้นอยู่กับคุณที่จะคิดออก สูตรที่จะเป็นตัวแทน hashes หลายวิธี 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 ดังนั้นแถวแรกจะเป็น n 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 สำหรับทุกแถวที่เรากำลังจะต้องการที่จะ พิมพ์ช่องว่างพิมพ์ hashes ที่ 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 ดีที่เรามีอยู่แล้วกล่าวว่าเรากำลังพิมพ์ ช่องว่างและเรากำลังพิมพ์ hashes 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 hashes ซ้ำ แล้วพิมพ์บรรทัดใหม่ 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