1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 SPEAKER 1: พูดคุยเกี่ยวกับน้ำ 3 00:00:01,960 --> 00:00:07,280 ในปัญหานี้เราขอให้ผู้ที่จะบอก เรานานแค่ไหนในนาทีที่อาบน้ำของพวกเขาคือ 4 00:00:07,280 --> 00:00:11,040 และจากนั้นเราคำนวณเทียบเท่า จำนวนขวดน้ำ 5 00:00:11,040 --> 00:00:12,970 ห้องอาบน้ำฝักบัวที่พวกเขาใช้ 6 00:00:12,970 --> 00:00:16,379 >> ดังนั้นสิ่งที่เราต้องทำของ สำหรับปัญหานี้หรือไม่ 7 00:00:16,379 --> 00:00:20,050 ครั้งแรกที่เราจะต้องการ เพื่อให้การตรวจสอบแล้ว 8 00:00:20,050 --> 00:00:22,100 การป้อนข้อมูลที่ผู้ใช้จะช่วยให้เรา 9 00:00:22,100 --> 00:00:24,790 เมื่อเรามั่นใจว่าเราว่า มีผู้ใช้ป้อนข้อมูลที่ถูกต้อง 10 00:00:24,790 --> 00:00:28,230 เรากำลังจะไปคำนวณ จำนวนเทียบเท่ากับขวดน้ำ 11 00:00:28,230 --> 00:00:30,770 ที่ผู้ใช้มีช่วง ห้องอาบน้ำฝักบัวของพวกเขาแล้วเรา 12 00:00:30,770 --> 00:00:33,720 จะบอกพวกเขาโดย พิมพ์ตัวเลขที่ออกมา 13 00:00:33,720 --> 00:00:37,230 >> ดังนั้นขอต่อสู้ครั้งแรกของเรา งานกระตุ้นและการตรวจสอบ 14 00:00:37,230 --> 00:00:38,550 การป้อนข้อมูลของผู้ใช้ 15 00:00:38,550 --> 00:00:40,910 สำหรับวันนี้เราได้เขียน ฟังก์ชั่นสำหรับคุณที่เรียกว่า 16 00:00:40,910 --> 00:00:43,950 get_int ตั้งอยู่ในห้องสมุด CS50 17 00:00:43,950 --> 00:00:48,710 get_int เพื่อให้แน่ใจว่าการใช้ปัจจัยการผลิต จำนวนเต็มดังนั้นตัวเลขบวกใด ๆ 18 00:00:48,710 --> 00:00:51,700 ตัวเลขที่ติดลบหรือ ศูนย์ได้รับการยอมรับทั้งหมด 19 00:00:51,700 --> 00:00:55,900 แต่หากผู้ใช้ปัจจัยการผลิตสิ่งอื่นใด ดังนั้นการรวมกันของตัวอักษรหรือตัวเลขใด ๆ 20 00:00:55,900 --> 00:00:59,710 หรือตัวเลขทศนิยมแล้ว ผู้ใช้จะได้รับแจ้งให้ลองใหม่อีกครั้ง 21 00:00:59,710 --> 00:01:04,319 และฟังก์ชั่นจะไม่ยอมรับอะไร จนกว่าผู้ใช้จะช่วยให้พวกเขาเป็นจำนวนเต็ม 22 00:01:04,319 --> 00:01:06,410 >> ดังนั้นวิธีที่เราใช้ get_int? 23 00:01:06,410 --> 00:01:10,830 ถ้าคุณเปิดพื้นที่ทำงานของคุณและ สร้างไฟล์ชื่อ integer.c ขอ 24 00:01:10,830 --> 00:01:12,110 พิมพ์ต่อไปนี้ 25 00:01:12,110 --> 00:01:14,760 hashtag ได้แก่ cs50.h. 26 00:01:14,760 --> 00:01:18,480 นี้เป็นสิ่งจำเป็นเพราะ get_int เป็นฟังก์ชั่นห้องสมุด CS50, 27 00:01:18,480 --> 00:01:21,890 ดังนั้นเราจึงต้อง hashtag ได้แก่ ประกาศคู่แข่ง 28 00:01:21,890 --> 00:01:23,370 ที่จะใช้ฟังก์ชั่น 29 00:01:23,370 --> 00:01:26,570 และจากนั้นในหลักของฉัน ทำงานฉันแค่ไป 30 00:01:26,570 --> 00:01:29,560 เพียงแค่โทร get_int ฟังก์ชั่น 31 00:01:29,560 --> 00:01:31,750 >> ดังนั้นเรามาทำงานนี้และดูวิธีการทำงาน 32 00:01:31,750 --> 00:01:35,092 เราได้รวบรวมไว้แล้วเพื่อให้ เพียงไปข้างหน้าและเรียกใช้โปรแกรมนี้ 33 00:01:35,092 --> 00:01:36,480 ./จำนวนเต็ม. 34 00:01:36,480 --> 00:01:39,880 ที่นี่ผมมีความรวดเร็วและ นี่คือสิ่งที่ผมป้อนข้อมูลค่า 35 00:01:39,880 --> 00:01:44,880 บอกว่าผมใส่ในจำนวนเต็มเพียงบางส่วน 50 ยกเว้นโปรแกรมและลาออก 36 00:01:44,880 --> 00:01:45,960 และที่ว่า 37 00:01:45,960 --> 00:01:49,350 >> แต่บอกว่าผมเรียกมันอีกครั้งและ สิ่งที่ฉันป้อนข้อมูลอื่น 38 00:01:49,350 --> 00:01:51,350 บางทีอาจจะเป็น Hello World 39 00:01:51,350 --> 00:01:55,660 ที่ไม่เป็นจำนวนเต็มดังนั้น โปรแกรมจะแจ้งให้ผมที่จะลองใหม่อีกครั้ง 40 00:01:55,660 --> 00:01:59,160 ลองอีกครั้งกับ บางทีอาจจะเป็นทศนิยมเวลานี้ 41 00:01:59,160 --> 00:02:03,450 0.5 อีกครั้งไม่ใช่จำนวนเต็มดังนั้น โปรแกรมจะไม่ยอมรับมัน 42 00:02:03,450 --> 00:02:05,290 และมันจะบอกฉันจะลองใหม่อีกครั้ง 43 00:02:05,290 --> 00:02:07,070 ดังนั้นขอให้หมายเลขอื่น 44 00:02:07,070 --> 00:02:09,830 โปรแกรมที่ยอมรับมัน จบการทำงานและเรากำลังทำ 45 00:02:09,830 --> 00:02:13,520 >> ดังนั้นตอนนี้เรามีฟังก์ชั่น ที่ช่วยให้เราและสร้างความมั่นใจ 46 00:02:13,520 --> 00:02:16,790 ที่ผู้ใช้ปัจจัยการผลิต จำนวนเต็ม แต่วิธีการที่เราสามารถทำได้ 47 00:02:16,790 --> 00:02:20,330 จริงติดตาม ป้อนจำนวนเต็มโดยผู้ใช้? 48 00:02:20,330 --> 00:02:25,260 ดีสิ่งที่เราจะทำคือการจัดเก็บ ค่านี้ในตัวแปรพูด n 49 00:02:25,260 --> 00:02:30,580 ดังนั้นถ้าผมประกาศจำนวนเต็ม N, และผมตั้งค่าที่จะ get_int, 50 00:02:30,580 --> 00:02:34,700 แล้ว n แล้​​วจะเก็บสิ่งที่ ค่าผู้ใช้ป้อน 51 00:02:34,700 --> 00:02:38,620 >> ขวาทั้งหมดดังนั้นตอนนี้เราได้ทำให้มั่นใจได้ว่า ผู้ใช้จะให้เราเป็นจำนวนเต็ม 52 00:02:38,620 --> 00:02:42,550 และเรารู้วิธีที่จะติดตาม ของจำนวนเต็ม แต่จำไว้ว่า 53 00:02:42,550 --> 00:02:45,610 จำนวนเต็มมีทั้งบวกและลบ 54 00:02:45,610 --> 00:02:49,110 จึงไม่ทำให้รู้สึกจริงๆ ในบริบทของปัญหานี้ 55 00:02:49,110 --> 00:02:53,570 ที่ผู้ใช้จะใช้เวลาอาบน้ำ การพูดเชิงลบ 12 นาที 56 00:02:53,570 --> 00:02:59,310 ดังนั้นเราจึงจำเป็นเพื่อให้แน่ใจว่าผู้ใช้ จริงจะช่วยให้เราเป็นจำนวนเต็มบวก 57 00:02:59,310 --> 00:03:02,130 ตอนนี้เราไม่ได้มีเพียงแค่ ฟังก์ชั่นเดียวสำหรับการที่ 58 00:03:02,130 --> 00:03:04,620 ดังนั้นเรากำลังจะมี เพื่อสร้างตัวเองว่า 59 00:03:04,620 --> 00:03:07,190 >> ดังนั้นเราจึงต้องการอย่างต่อเนื่อง แจ้งให้ผู้ใช้ 60 00:03:07,190 --> 00:03:09,730 จนกว่าพวกเขาจะให้เราเป็นจำนวนเต็มบวก 61 00:03:09,730 --> 00:03:14,300 ถ้าฉันทำบางสิ่งบางอย่างอย่างต่อเนื่องแล้ว ที่คล้ายกับวงซ้ำ 62 00:03:14,300 --> 00:03:19,130 ดังนั้นหนึ่งในโครงสร้างที่เราใช้ ใน C ที่จะใช้ซ้ำและลูป 63 00:03:19,130 --> 00:03:20,410 เป็นห่วงขณะ 64 00:03:20,410 --> 00:03:23,020 ดังนั้นห่วงขณะเป็น แสดงที่นี่จะดำเนินการ 65 00:03:23,020 --> 00:03:27,030 สิ่งที่อยู่ในร่างกายของวงเป็น ตราบใดที่ได้รับการประเมินสภาพ 66 00:03:27,030 --> 00:03:27,900 ให้เป็นจริง 67 00:03:27,900 --> 00:03:30,640 เร็วที่สุดเท่าที่มีเงื่อนไขว่า ประเมินเท็จแล้ว 68 00:03:30,640 --> 00:03:34,830 โปรแกรมจะดำเนินการใด ๆ ก็ตาม มาหลังจากที่ร่างกายของวง 69 00:03:34,830 --> 00:03:39,400 >> ดังนั้นในขณะที่ลูปจะไป เป็นประโยชน์จริงๆใน CS50 70 00:03:39,400 --> 00:03:42,590 แต่ในนี้โดยเฉพาะ กรณีที่เรารู้ว่าเรากำลัง 71 00:03:42,590 --> 00:03:48,140 จะแจ้งให้ผู้ใช้อย่างน้อย ครั้งแล้วเพียง แต่ห่วงในกรณีที่จำเป็น 72 00:03:48,140 --> 00:03:51,080 ดังนั้นที่นี่เรามาถึง สร้างพิเศษและที่ว่า 73 00:03:51,080 --> 00:03:55,020 คล้ายกับในขณะที่ วงเรียกว่าห่วงทำในขณะที่ 74 00:03:55,020 --> 00:03:58,840 >> ดังนั้นห่วงทำในขณะที่ดำเนินการ ร่างกายของวงอย่างน้อยหนึ่งครั้ง 75 00:03:58,840 --> 00:04:01,750 และจากนั้นจะตรวจสอบเพื่อดู ว่าควรดำเนินการ 76 00:04:01,750 --> 00:04:05,310 เมื่อเทียบกับวงในขณะที่ ซึ่งจะตรวจสอบสภาพ 77 00:04:05,310 --> 00:04:07,200 แล้วรันร่างกาย 78 00:04:07,200 --> 00:04:11,880 ดังนั้นในวงทำในขณะที่สิ่งที่เราอาจ ทำคือการแจ้งให้ผู้ใช้จำนวนเต็ม 79 00:04:11,880 --> 00:04:14,450 แล้วตรวจสอบถ้ามันไม่ถูกต้องหรือไม่ 80 00:04:14,450 --> 00:04:18,130 ถ้ามันไม่ถูกต้องแล้วเราจะ ทำซ้ำขั้นตอนขอให้ผู้ใช้ 81 00:04:18,130 --> 00:04:22,290 เพื่อให้เรามีจำนวนเต็มอื่นแล้ว เฉพาะเมื่อจำนวนเต็มที่ถูกต้อง 82 00:04:22,290 --> 00:04:25,060 เราจะดำเนินการต่อไป สิ่งที่มาหลังจากนั้น 83 00:04:25,060 --> 00:04:28,030 >> ตอนนี้คุณจะสังเกตเห็นว่า ประกาศของจำนวนเต็ม n 84 00:04:28,030 --> 00:04:31,670 แตกต่างกันเล็กน้อยกับสิ่งที่เรา ทำมาก่อนในตัวอย่างก่อนหน้า 85 00:04:31,670 --> 00:04:33,640 และเป็นเพราะขอบเขต 86 00:04:33,640 --> 00:04:37,920 ถ้าเราได้ประกาศจำนวนเต็ม n ภายใน ของร่างกายของห่วงทำในขณะที่ 87 00:04:37,920 --> 00:04:42,640 แล้วเราจะไม่สามารถที่จะเข้าถึง ค่า n นอกหยิกที่ 88 00:04:42,640 --> 00:04:45,050 วงเล็บแสดงให้เห็นร่างของวง 89 00:04:45,050 --> 00:04:51,080 แต่เราไม่ต้องการในความเป็นจริงในการเข้าถึง ค่า n ในภายหลังในโปรแกรมของเรา 90 00:04:51,080 --> 00:04:55,730 >> ตกลงดังนั้นตอนนี้ขอพูดคุยเกี่ยวกับ สิ่งที่สภาพนี้ควรจะเป็น 91 00:04:55,730 --> 00:05:00,400 เราต้องการที่จะเพียง reprompt ผู้ใช้ตราบเท่าที่ n เป็นที่ไม่ถูกต้อง 92 00:05:00,400 --> 00:05:04,640 ดังนั้นคิดว่าตัวเองในสิ่งที่ไม่ถูกต้อง ค่าจำนวนเต็มจะมีลักษณะ 93 00:05:04,640 --> 00:05:08,060 แล้วสร้างบูลีน การแสดงออกในการแสดงว่า 94 00:05:08,060 --> 00:05:13,070 >> เรากำลังดำเนินการเสร็จสิ้นเกือบกับงานย่อยของเรา ของการตรวจสอบและแจ้งให้ผู้ใช้ป้อน 95 00:05:13,070 --> 00:05:16,010 ดังนั้นขอให้นี้น้อย บิตมิตรต่อผู้ใช้ 96 00:05:16,010 --> 00:05:18,390 และให้การใช้งานเล็ก ๆ น้อย ๆ บิตข้อมูลเพิ่มเติม 97 00:05:18,390 --> 00:05:20,510 ของสิ่งที่เรากำลังกระตุ้นให้พวกเขาสำหรับ 98 00:05:20,510 --> 00:05:24,500 จึงขอแจ้งให้ผู้ใช้ต่อ ข้อมูลจำเพาะกับนาทีสตริง 99 00:05:24,500 --> 00:05:28,935 ดังนั้นการใช้งบ printf ของคุณให้ ให้แน่ใจว่าคุณตรงนี้ว่า 100 00:05:28,935 --> 00:05:30,230 >> ก็ดี 101 00:05:30,230 --> 00:05:33,840 ดังนั้นตอนนี้เรามีการใช้ที่ถูกต้อง การป้อนข้อมูลเป็นจำนวนเต็มบวก 102 00:05:33,840 --> 00:05:37,400 มูลค่ากี่นาที พวกเขาใช้เวลาในห้องอาบน้ำ 103 00:05:37,400 --> 00:05:41,300 ดังนั้นสิ่งที่ต่อไปคือการคำนวณ จำนวนเทียบเท่าของขวด 104 00:05:41,300 --> 00:05:45,250 สิ่งที่เรากำลังจะทำที่นี่อาจ จะเห็นได้ชัดมากกับคุณในตอนแรก 105 00:05:45,250 --> 00:05:46,640 และที่ตกลง 106 00:05:46,640 --> 00:05:49,320 สิ่งที่เราต้องการจะทำคือเรา ต้องการที่จะเริ่มต้นการฝึกซ้อม 107 00:05:49,320 --> 00:05:53,810 ความคิดของการตรวจสอบรูปแบบและ การพัฒนาสูตรสำหรับปัญหาที่เกิดขึ้น 108 00:05:53,810 --> 00:05:57,200 >> ดังนั้นเรากำลังบอกต่อข้อมูลจำเพาะ ว่าหนึ่งนาทีในห้องอาบน้ำ 109 00:05:57,200 --> 00:05:59,960 จะเทียบเท่ากับประมาณ 12 ขวดน้ำ 110 00:05:59,960 --> 00:06:03,020 ดังนั้นแล้วสองนาทีจะ เทียบเท่ากับ 24 111 00:06:03,020 --> 00:06:05,850 และห้านาทีจะ เทียบเท่ากับ 60 112 00:06:05,850 --> 00:06:08,390 ดังนั้นตอนนี้ถ้าคุณคิด คุณได้มันแล้วปล่อยให้ของ 113 00:06:08,390 --> 00:06:10,390 ดูว่าคุณสามารถขึ้นมา ที่มีรูปแบบหรือสูตร 114 00:06:10,390 --> 00:06:14,990 ในการแสดงถ้าเรามีการพูด, N นาทีกี่ขวดน้ำ 115 00:06:14,990 --> 00:06:17,930 จะว่าจะแสดงออกในแง่ของ n? 116 00:06:17,930 --> 00:06:20,680 >> อีกครั้งแม้ว่านี้ อาจจะง่ายในตอนแรก 117 00:06:20,680 --> 00:06:23,240 ต่อมาเมื่อเราได้รับ ปัญหาที่ซับซ้อนมากขึ้น 118 00:06:23,240 --> 00:06:26,360 เรากำลังจะต้องการที่จะได้รับใน การปฏิบัติของการระบุ 119 00:06:26,360 --> 00:06:30,120 รูปแบบและสูตรการพัฒนา ที่จะคิดสิ่งเหล่านี้ออก 120 00:06:30,120 --> 00:06:33,450 >> ใน C คุณมีการเข้าถึง ดำเนินการทางคณิตศาสตร์มาตรฐาน 121 00:06:33,450 --> 00:06:36,520 บวกลบ คูณหาร 122 00:06:36,520 --> 00:06:38,420 ดังนั้นฉันจะปล่อยให้มันเป็นไป ตอนนี้คุณจะคิดออก 123 00:06:38,420 --> 00:06:41,300 วิธีการแสดง จำนวนเทียบเท่าของขวด 124 00:06:41,300 --> 00:06:43,990 ที่ผู้บริโภค ในระหว่างการอาบน้ำของพวกเขา 125 00:06:43,990 --> 00:06:45,700 >> สิทธิทั้งหมดที่เรากำลังทำเกือบ 126 00:06:45,700 --> 00:06:50,650 เราได้รับการแจ้งเตือนผู้ใช้สำหรับการป้อนข้อมูลของพวกเขา เราได้มั่นใจว่ามันเป็นการป้อนข้อมูลที่ถูกต้อง 127 00:06:50,650 --> 00:06:53,330 แล้วเราได้คิดวิธี ในการคำนวณเทียบเท่า 128 00:06:53,330 --> 00:06:55,480 จำนวนขวดที่พวกเขาบริโภค 129 00:06:55,480 --> 00:06:59,430 ดังนั้นสิ่งสุดท้ายที่จะทำคือการส่งออก จำนวนเทียบเท่าของขวด 130 00:06:59,430 --> 00:07:02,410 และหวังว่าจะส่งเสริมให้ พวกเขาเพื่อการอนุรักษ์น้ำบางส่วน 131 00:07:02,410 --> 00:07:06,270 >> การแสดงผลค่าจะ เป็นคำสั่ง printf 132 00:07:06,270 --> 00:07:09,720 ถ้าผมอยากจะบอกคุณว่าฉัน มีสามสัตว์เลี้ยงเช่น 133 00:07:09,720 --> 00:07:13,090 ผมอาจจะใช้คำสั่ง printf ที่มีลักษณะบางอย่างเช่นนี้ 134 00:07:13,090 --> 00:07:15,880 ฉันมีสามสัตว์เลี้ยงและใหม่ สายสำหรับการจัดรูปแบบที่ดี 135 00:07:15,880 --> 00:07:17,880 >> ตอนนี้เราไม่ต้องการที่จะ เพียงแค่สิ่งที่ยากรหัส 136 00:07:17,880 --> 00:07:20,740 กล่าวว่าจำนวนของฉัน สัตว์เลี้ยงการเปลี่ยนแปลงอยู่ตลอดเวลา 137 00:07:20,740 --> 00:07:25,080 แล้วฉันจะทำให้การใช้งานของ ตัวยึดตำแหน่งในงบ printf ของฉัน 138 00:07:25,080 --> 00:07:27,350 ดังนั้นนี่คือหมายเลขของฉันเป็นจำนวนเต็ม 139 00:07:27,350 --> 00:07:31,480 ดังนั้นฉันจะทำให้ตัวยึด สำหรับจำนวนเต็มใช้ฉัน% 140 00:07:31,480 --> 00:07:33,930 ฉันจะเขียนสตริง และแล้วหลังจากสตริง 141 00:07:33,930 --> 00:07:38,000 ผมเขียนเครื่องหมายจุลภาคแล้ว ตัวแปรที่ฉันต้องการพิมพ์ 142 00:07:38,000 --> 00:07:42,730 ดังนั้นค่าที่จะพิมพ์ แทนการที่ตัวยึด% ฉัน 143 00:07:42,730 --> 00:07:47,630 >> คุณสามารถใช้ตัวยึดตำแหน่งเป็น ดีลอยกับ f% 144 00:07:47,630 --> 00:07:50,420 นอกจากนี้คุณยังสามารถมีหลาย ตัวยึดตำแหน่งในสตริง 145 00:07:50,420 --> 00:07:53,950 ตัวอย่างเช่นถ้าฉันมีบางหมายเลข ของสุนัขและจำนวนของแมวบาง 146 00:07:53,950 --> 00:07:59,210 ฉันใส่สองตัวยึดที่นี่แล้ว สองตัวแปรของฉันตามลำดับ 147 00:07:59,210 --> 00:08:03,130 >> ดังนั้นตอนนี้เรารู้วิธีการพิมพ์ ค่าที่เก็บไว้ในตัวแปร 148 00:08:03,130 --> 00:08:06,030 สิ่งสุดท้ายที่มากที่จะ ทำคือการให้แน่ใจว่าเราว่า 149 00:08:06,030 --> 00:08:10,920 พิมพ์ค่าในรูปแบบที่แน่นอน ที่ระบุไว้ในข้อกำหนด 150 00:08:10,920 --> 00:08:14,990 กับที่เราได้รับแจ้ง ผู้ใช้และการตรวจสอบใส่ของพวกเขา 151 00:08:14,990 --> 00:08:17,920 เราได้คำนวณแล้วเทียบเท่า จำนวนขวดน้ำ 152 00:08:17,920 --> 00:08:22,100 ที่พวกเขาใช้ในระหว่างการอาบน้ำของพวกเขา และเราได้ออกมาค่าที่ให้กับพวกเขา 153 00:08:22,100 --> 00:08:24,440 และเพื่อให้เราได้เสร็จน้ำ 154 00:08:24,440 --> 00:08:28,730 >> ชื่อของฉันคือ [? Zamila?] และนี่คือ CS50 155 00:08:28,730 --> 00:08:29,909