1 00:00:00,000 --> 00:00:02,420 >> [เล่นเพลง] 2 00:00:02,420 --> 00:00:05,189 3 00:00:05,189 --> 00:00:05,980 SPEAKER: สิทธิทั้งหมด 4 00:00:05,980 --> 00:00:08,540 ดังนั้นขอพูดคุยเกี่ยวกับการควบคุม สิ่งที่ชนิดของที่ไม่ซ้ำกับซี 5 00:00:08,540 --> 00:00:10,010 ซึ่งเป็นชนิดข้อมูลและตัวแปร 6 00:00:10,010 --> 00:00:12,340 เมื่อฉันบอกว่าที่ไม่ซ้ำกันที่ C ผม เพียง แต่หมายถึงในบริบทของการ 7 00:00:12,340 --> 00:00:14,470 ถ้าคุณได้รับโปรแกรมเมอร์ เป็นเวลานานจริงๆ 8 00:00:14,470 --> 00:00:16,270 คุณอาจจะไม่ได้ ทำงานร่วมกับชนิดข้อมูล 9 00:00:16,270 --> 00:00:18,470 ถ้าคุณเคยใช้ที่ทันสมัย การเขียนโปรแกรมภาษา 10 00:00:18,470 --> 00:00:20,432 ภาษาที่ทันสมัย​​เช่น PHP และ JavaScript, 11 00:00:20,432 --> 00:00:22,640 ซึ่งเราจะเห็นเพียงเล็กน้อย ในภายหลังในการเรียนการสอน 12 00:00:22,640 --> 00:00:25,550 คุณไม่จริงต้องระบุ ชนิดข้อมูลของตัวแปร 13 00:00:25,550 --> 00:00:26,270 เมื่อคุณใช้มัน 14 00:00:26,270 --> 00:00:28,067 >> คุณเพียงแค่ประกาศและเริ่มใช้มัน 15 00:00:28,067 --> 00:00:29,900 ถ้าเป็นจำนวนเต็มมัน รู้ว่ามันเป็นจำนวนเต็ม 16 00:00:29,900 --> 00:00:31,960 ถ้ามันเป็นตัวละครที่มันเป็น รู้ว่ามันเป็นตัวอักษร 17 00:00:31,960 --> 00:00:35,320 ถ้ามันเป็นคำที่มันรู้ มันสตริงที่เรียกว่า 18 00:00:35,320 --> 00:00:37,300 >> แต่ใน C ซึ่งเป็น ภาษาเก่าที่เราต้องการ 19 00:00:37,300 --> 00:00:39,420 เพื่อระบุข้อมูล ชนิดของตัวแปรทุก 20 00:00:39,420 --> 00:00:42,990 ที่เราสร้างเป็นครั้งแรก ที่เราใช้ตัวแปรที่ 21 00:00:42,990 --> 00:00:45,030 ดังนั้น C มาพร้อมกับบาง ในตัวชนิดข้อมูล 22 00:00:45,030 --> 00:00:46,972 และให้ได้คุ้นเคย กับบางคน 23 00:00:46,972 --> 00:00:50,180 และแล้วหลังจากนั้นเราจะพูดคุย เล็กน้อยเกี่ยวกับบางส่วนของชนิดข้อมูล 24 00:00:50,180 --> 00:00:54,450 ที่เราได้เขียนขึ้นสำหรับคุณ เพื่อให้คุณสามารถใช้พวกเขาใน CS50 25 00:00:54,450 --> 00:00:56,130 >> ที่แรกก็คือ int 26 00:00:56,130 --> 00:00:59,110 ชนิดข้อมูล int ที่ใช้สำหรับตัวแปร ที่จะจัดเก็บค่าจำนวนเต็ม 27 00:00:59,110 --> 00:01:03,210 ดังนั้น 1, 2, 3, เชิงลบที่ 1, 2, 3, และอื่น ๆ 28 00:01:03,210 --> 00:01:05,960 จำนวนเต็มซึ่งเป็นสิ่งที่คุณ ควรเก็บไว้ในใจสำหรับการตอบคำถามที่ 29 00:01:05,960 --> 00:01:09,590 มักจะใช้เวลาถึงสี่ไบต์ ของหน่วยความจำที่เป็น 32 บิต 30 00:01:09,590 --> 00:01:11,620 มีแปดบิตไบต์มี 31 00:01:11,620 --> 00:01:14,470 >> ดังนั้นหมายความว่าช่วงของ ค่าที่เป็นจำนวนเต็มสามารถจัดเก็บ 32 00:01:14,470 --> 00:01:19,130 ถูก จำกัด โดยสิ่งที่สามารถพอดีภายใน 32 บิตมูลค่าของข้อมูล 33 00:01:19,130 --> 00:01:21,850 ตอนนี้มันจะเปิดออก มันก็ผ่านมานานตัดสินใจ 34 00:01:21,850 --> 00:01:24,310 ว่าเราจะแยกออก ว่าช่วง 32 บิต 35 00:01:24,310 --> 00:01:26,650 ลงไปในเชิงลบจำนวนเต็ม และจำนวนเต็มบวก 36 00:01:26,650 --> 00:01:28,390 แต่ละคนได้รับครึ่งหนึ่งของช่วง 37 00:01:28,390 --> 00:01:32,230 ดังนั้นช่วงของค่าที่เราเป็นตัวแทนของ มีช่วงจำนวนเต็มจากเชิงลบ 2 38 00:01:32,230 --> 00:01:36,520 ในการใช้พลังงาน 31 2 ถึง อำนาจ 31 ลบ 1, 39 00:01:36,520 --> 00:01:38,190 สาเหตุที่คุณยังต้องจุด 0 40 00:01:38,190 --> 00:01:41,650 >> ดังนั้นโดยทั่วไปครึ่งหนึ่งของค่าที่เป็นไปได้ คุณสามารถใส่ใน int เป็นลบ 41 00:01:41,650 --> 00:01:42,610 และอีกครึ่งหนึ่งเป็นบวก 42 00:01:42,610 --> 00:01:47,270 และประมาณนี่นี้เป็นเรื่องเกี่ยวกับเชิงลบ 2 พันล้านบวกประมาณ 2 พันล้าน 43 00:01:47,270 --> 00:01:50,207 ให้หรือใช้เวลาไม่กี่ร้อยล้าน 44 00:01:50,207 --> 00:01:52,290 นั่นคือสิ่งที่คุณสามารถใส่ ในตัวแปรจำนวนเต็ม 45 00:01:52,290 --> 00:01:55,490 ตอนนี้เรายังมีบางสิ่งบางอย่าง เรียกว่าเป็นจำนวนเต็มไม่ได้ลงนาม 46 00:01:55,490 --> 00:01:59,220 ตอนนี้ไม่ได้ลงนาม ints ไม่ได้เป็น แยกประเภทของตัวแปร 47 00:01:59,220 --> 00:02:01,590 แต่ไม่ได้ลงนามเป็น สิ่งที่เรียกว่ารอบคัดเลือก 48 00:02:01,590 --> 00:02:04,990 มันปรับเปลี่ยนข้อมูล ชนิดของจำนวนเต็มเล็กน้อย 49 00:02:04,990 --> 00:02:07,850 >> และในกรณีนี้สิ่งที่ไม่ได้ลงนาม means-- และคุณยังสามารถ 50 00:02:07,850 --> 00:02:11,530 ใช้ชนิดข้อมูลอื่น ๆ ที่ไม่ได้ลงชื่อ จำนวนเต็มไม่ได้เป็นเพียงคนเดียว 51 00:02:11,530 --> 00:02:15,310 สิ่งที่มันได้อย่างมีประสิทธิภาพจะเป็นคู่ ช่วงบวกของค่า 52 00:02:15,310 --> 00:02:19,350 ที่เป็นจำนวนเต็มสามารถใช้เวลาในการที่ ค่าใช้จ่ายของไม่อนุญาตให้ 53 00:02:19,350 --> 00:02:21,140 คุณจะใช้ในค่าลบ 54 00:02:21,140 --> 00:02:25,400 ดังนั้นถ้าคุณมีหมายเลขที่คุณรู้ว่า จะได้รับสูงกว่า 2 พันล้าน แต่น้อย 55 00:02:25,400 --> 00:02:31,280 กว่า 4 พันล้านสำหรับ example-- ซึ่งเป็น 2 ถึง 32 power-- 56 00:02:31,280 --> 00:02:33,330 คุณอาจต้องการที่จะใช้ int ถ้าคุณไม่ได้ลงนาม 57 00:02:33,330 --> 00:02:35,050 รู้ค่าของคุณจะไม่เป็นลบ 58 00:02:35,050 --> 00:02:37,216 >> บางครั้งคุณจะต้อง ใช้สำหรับตัวแปรที่ไม่ได้ลงชื่อ 59 00:02:37,216 --> 00:02:39,460 ใน CS50 ซึ่งเป็นเหตุผลที่ฉันพูดถึงที่นี่ 60 00:02:39,460 --> 00:02:43,830 แต่อีกครั้งช่วงของค่าที่คุณ สามารถเป็นตัวแทนที่มีจำนวนเต็มไม่ได้ลงนาม 61 00:02:43,830 --> 00:02:48,240 เป็นไป t จำนวนเต็มปกติเป็น 0 2 ถึงพลังงาน 32 ลบ 1, 62 00:02:48,240 --> 00:02:50,840 หรือประมาณ 0-4000000000 63 00:02:50,840 --> 00:02:53,730 เพื่อให้คุณได้เป็นสองเท่าได้อย่างมีประสิทธิภาพ ช่วงบวกที่คุณสามารถพอดี 64 00:02:53,730 --> 00:02:56,270 แต่คุณได้รับทั้งหมด ค่าเชิงลบ 65 00:02:56,270 --> 00:03:00,040 >> ขณะนี้เป็นกันไม่ได้ลงนาม ไม่ได้เป็นเพียงรอบคัดเลือก 66 00:03:00,040 --> 00:03:01,790 ที่เราอาจจะดู ชนิดข้อมูลตัวแปร 67 00:03:01,790 --> 00:03:05,779 นอกจากนี้ยังมีสิ่งที่เรียกว่า สั้นและระยะยาวและ const 68 00:03:05,779 --> 00:03:07,820 Const เราจะเห็นเพียงเล็กน้อย บิตต่อไปในการเรียนการสอน 69 00:03:07,820 --> 00:03:10,830 สั้นและระยะยาวที่เราอาจจะไม่ 70 00:03:10,830 --> 00:03:12,830 >> เพียง แต่รู้ว่ามี มีบ่นอื่น ๆ 71 00:03:12,830 --> 00:03:14,080 ไม่ได้ลงนามไม่ได้เป็นเพียงคนเดียว 72 00:03:14,080 --> 00:03:16,596 แต่มันเป็นเพียงคนเดียวที่เรา จะพูดถึงในขณะนี้ 73 00:03:16,596 --> 00:03:17,310 ดังนั้นสิ่งที่ถูกต้อง 74 00:03:17,310 --> 00:03:18,393 ดังนั้นเราจึงได้ครอบคลุมจำนวนเต็ม 75 00:03:18,393 --> 00:03:19,200 อะไรต่อไป? 76 00:03:19,200 --> 00:03:20,130 >> ตัวอักษร 77 00:03:20,130 --> 00:03:23,620 ดังนั้นตัวอักษรที่ใช้สำหรับตัวแปร ที่จะจัดเก็บตัวอักษรเดียว 78 00:03:23,620 --> 00:03:24,850 Char สั้นสำหรับตัวละคร 79 00:03:24,850 --> 00:03:27,870 และบางครั้งคุณอาจได้ยิน คนที่ออกเสียงเป็นรถ 80 00:03:27,870 --> 00:03:32,020 >> ดังนั้นตัวละครที่มักจะใช้เวลาหนึ่ง ไบต์หน่วยความจำซึ่งเป็นเพียง 8 บิต 81 00:03:32,020 --> 00:03:35,700 ดังนั้นหมายความว่าพวกเขาจะสามารถใส่ ค่าอยู่ในช่วงของเชิงลบที่ 2 82 00:03:35,700 --> 00:03:42,430 มีอำนาจที่เจ็ดหรือเชิงลบ 128, 2 ถึงอำนาจที่ 7 ลบ 1 หรือ 127 83 00:03:42,430 --> 00:03:45,710 >> ขอบคุณที่ ASCII ก็คือ นานมาแล้วตัดสินใจทาง 84 00:03:45,710 --> 00:03:50,805 เพื่อแมตัวเลขบวกจาก 0-127 กับตัวละครต่างๆ 85 00:03:50,805 --> 00:03:52,182 ว่าทั้งหมดที่มีอยู่บนแป้นพิมพ์ของเรา 86 00:03:52,182 --> 00:03:54,640 เพื่อที่เราจะได้เห็นต่อไปใน หลักสูตรและคุณอาจจะ 87 00:03:54,640 --> 00:03:57,700 มาจำที่บางส่วน จุดทุนสำหรับ example-- 88 00:03:57,700 --> 00:04:00,732 เมืองหลวงของตัวละคร A-- แผนที่ไปยังหมายเลขที่ 65 89 00:04:00,732 --> 00:04:02,940 และเหตุผลที่ว่าเป็น เพราะนั่นคือสิ่งที่มันเป็น 90 00:04:02,940 --> 00:04:05,490 รับมอบหมายจากมาตรฐานแอสกี 91 00:04:05,490 --> 00:04:07,850 >> ตัวพิมพ์เล็กเป็น 97 92 00:04:07,850 --> 00:04:11,900 ตัวละคร 0 เมื่อคุณ พิมพ์ตัวอักษรที่จริงไม่ได้ 93 00:04:11,900 --> 00:04:13,532 แทนจำนวนศูนย์ที่ 48 94 00:04:13,532 --> 00:04:15,240 คุณจะได้เรียนรู้คู่ เหล่านี้ที่คุณไป 95 00:04:15,240 --> 00:04:17,990 และแน่นอนคุณจะต้องมาถึง พวกเขานิด ๆ หน่อย ๆ ต่อไปใน CS50 96 00:04:17,990 --> 00:04:20,450 97 00:04:20,450 --> 00:04:23,390 >> ถัดไปชนิดข้อมูลที่สำคัญ ลอยหมายเลขจุด 98 00:04:23,390 --> 00:04:26,100 ดังนั้นจำนวนจุดลอยตัวอยู่ ที่เรียกกันว่าตัวเลขจริง 99 00:04:26,100 --> 00:04:28,850 พวกเขากำลังโดยทั่วไปตัวเลขที่ มีจุดทศนิยมในพวกเขา 100 00:04:28,850 --> 00:04:33,360 ลอยค่าจุด เช่นจำนวนเต็มนอกจากนี้ยังมี 101 00:04:33,360 --> 00:04:36,090 ที่มีอยู่ภายใน 4 ไบต์หน่วยความจำ 102 00:04:36,090 --> 00:04:37,580 ตอนนี้มีแผนภูมิที่นี่ไม่มี 103 00:04:37,580 --> 00:04:40,890 มีเส้นจำนวนไม่เพราะ อธิบายช่วงของลอยที่ 104 00:04:40,890 --> 00:04:44,550 ไม่ว่าชัดเจนหรือที่ใช้งานง่าย 105 00:04:44,550 --> 00:04:47,350 >> พอเพียงเพื่อบอกว่าคุณ มี 32 บิตจะทำงานร่วมกับ 106 00:04:47,350 --> 00:04:49,730 และถ้าคุณมีจำนวน เหมือนปี่ซึ่งมี 107 00:04:49,730 --> 00:04:55,510 ส่วนจำนวนเต็ม 3 และลอย ส่วนจุดหรือส่วนหนึ่งส่วนทศนิยม 0.14159, 108 00:04:55,510 --> 00:04:58,735 และเพื่อที่คุณจะต้อง สามารถที่จะเป็นตัวแทนของ it-- 109 00:04:58,735 --> 00:05:02,420 ส่วนจำนวนเต็มและส่วนทศนิยม 110 00:05:02,420 --> 00:05:04,550 >> ดังนั้นสิ่งที่คุณคิดว่าอาจจะหมายถึงอะไร? 111 00:05:04,550 --> 00:05:08,180 สิ่งหนึ่งคือว่าถ้าทศนิยม ส่วนหนึ่งได้รับอีกต่อไปและอีกต่อไป 112 00:05:08,180 --> 00:05:10,660 ถ้าฉันมีขนาดใหญ่มาก ส่วนจำนวนเต็มผมอาจจะไม่ 113 00:05:10,660 --> 00:05:13,090 สามารถที่จะเป็นได้อย่างแม่นยำ กับส่วนทศนิยม 114 00:05:13,090 --> 00:05:15,280 และที่ว่าจริงๆ ข้อ จำกัด ของการลอย 115 00:05:15,280 --> 00:05:17,229 >> ลอยมีปัญหาความแม่นยำ 116 00:05:17,229 --> 00:05:19,270 เรามีเพียง 32 บิต ทำงานด้วยเพื่อให้เราสามารถเท่านั้น 117 00:05:19,270 --> 00:05:22,510 จะให้แม่นยำด้วยส่วนทศนิยมของเรา 118 00:05:22,510 --> 00:05:27,300 เราสามารถไม่จำเป็นต้องมีทศนิยม ส่วนหนึ่งที่แม่นยำถึง 100 หรือ 200 หลัก 119 00:05:27,300 --> 00:05:29,710 เพราะเรามีเพียง 32 บิตจะทำงานร่วมกับ 120 00:05:29,710 --> 00:05:31,590 เพื่อให้เป็นข้อ จำกัด ของลอยได้ 121 00:05:31,590 --> 00:05:33,590 >> ตอนนี้โชคดีที่มี ชนิดข้อมูลอื่นที่เรียกว่า 122 00:05:33,590 --> 00:05:36,530 คู่ซึ่งค่อนข้าง ข้อเสนอที่มีปัญหานี้ 123 00:05:36,530 --> 00:05:39,980 คู่เหมือนลอยยังใช้ในการ เก็บตัวเลขจริงหรือจุดลอย 124 00:05:39,980 --> 00:05:40,840 ค่า 125 00:05:40,840 --> 00:05:44,340 แตกต่างก็คือ คู่ที่มีความแม่นยำสอง 126 00:05:44,340 --> 00:05:48,177 พวกเขาสามารถพอดีกับ 64 บิต ข้อมูลหรือแปดไบต์ 127 00:05:48,177 --> 00:05:49,010 นั่นหมายความว่าอย่างไร? 128 00:05:49,010 --> 00:05:51,801 ดีก็หมายความว่าเราสามารถเป็นจำนวนมากขึ้น แม่นยำด้วยจุดทศนิยม 129 00:05:51,801 --> 00:05:54,830 แทนที่จะต้องปี่ถึงเจ็ด สถานที่อาจจะมีลอย, 130 00:05:54,830 --> 00:05:56,710 เราอาจจะสามารถมีได้ถึง 30 สถานที่ 131 00:05:56,710 --> 00:05:59,824 หากที่เป็นสิ่งสำคัญที่คุณอาจต้องการ ที่จะใช้คู่แทนการลอย 132 00:05:59,824 --> 00:06:01,740 โดยทั่วไปถ้าคุณกำลัง ทำงานในสิ่งที่ 133 00:06:01,740 --> 00:06:06,540 มีสถานที่ทศนิยมนานจริงๆ และจำนวนมากของความแม่นยำเป็นสิ่งที่สำคัญ 134 00:06:06,540 --> 00:06:08,630 คุณอาจต้องการที่จะ ใช้ overfloat คู่ 135 00:06:08,630 --> 00:06:11,250 ตอนนี้ให้มากที่สุดในการทำงานของคุณใน CS50 ลอยควรพอเพียง 136 00:06:11,250 --> 00:06:15,340 แต่ไม่ทราบว่าคู่อยู่เป็น วิธีที่จะจัดการกับค่อนข้างแม่นยำ 137 00:06:15,340 --> 00:06:20,980 ปัญหาที่เกิดขึ้นโดยการให้คุณเป็นพิเศษ 32 บิตจะทำงานร่วมกับหมายเลขของคุณ 138 00:06:20,980 --> 00:06:23,650 >> ตอนนี้ไม่ได้เป็นชนิดข้อมูล 139 00:06:23,650 --> 00:06:24,390 นี้เป็นชนิด 140 00:06:24,390 --> 00:06:25,340 และก็เรียกว่าเป็นโมฆะ 141 00:06:25,340 --> 00:06:27,506 และที่ผมพูดเกี่ยวกับเรื่องนี้ ที่นี่เพราะเราได้อาจจะ 142 00:06:27,506 --> 00:06:29,520 เห็นมันไม่กี่ครั้งแล้วใน CS50 143 00:06:29,520 --> 00:06:32,020 และคุณอาจจะสงสัยว่า สิ่งที่ทุกอย่างเกี่ยวกับ 144 00:06:32,020 --> 00:06:33,390 >> ดังนั้นถือเป็นโมฆะเป็นชนิด 145 00:06:33,390 --> 00:06:34,097 มันไม่อยู่ 146 00:06:34,097 --> 00:06:35,180 แต่มันไม่ได้เป็นชนิดข้อมูล 147 00:06:35,180 --> 00:06:39,350 >> เราไม่สามารถสร้างตัวแปรประเภท ถือเป็นโมฆะและกำหนดค่าให้กับมัน 148 00:06:39,350 --> 00:06:42,519 แต่ฟังก์ชั่นยกตัวอย่างเช่น สามารถมีชนิดกลับเป็นโมฆะ 149 00:06:42,519 --> 00:06:45,060 โดยทั่วไปถ้าคุณเห็นฟังก์ชั่น ที่มีชนิดกลับเป็นโมฆะ 150 00:06:45,060 --> 00:06:46,970 มันหมายความว่าจะไม่คืนค่า 151 00:06:46,970 --> 00:06:49,440 คุณสามารถคิดร่วมกัน ฟังก์ชั่นที่เราได้นำมาใช้เพื่อให้ห่างไกล 152 00:06:49,440 --> 00:06:52,780 ใน CS50 ที่ไม่คืนค่าหรือไม่? 153 00:06:52,780 --> 00:06:54,700 >> printf เป็นหนึ่ง 154 00:06:54,700 --> 00:06:56,820 printf ไม่จริง กลับอะไรกับคุณ 155 00:06:56,820 --> 00:06:59,850 มันพิมพ์บางสิ่งบางอย่างไป หน้าจอและมันเป็นพื้น 156 00:06:59,850 --> 00:07:01,650 ผลข้างเคียงของสิ่งที่ไม่ printf 157 00:07:01,650 --> 00:07:03,620 แต่ก็ไม่ได้ให้ค่ากลับ 158 00:07:03,620 --> 00:07:08,419 คุณไม่จับผลและการจัดเก็บ ในตัวแปรที่จะใช้ในภายหลัง 159 00:07:08,419 --> 00:07:10,710 มันก็เป็นสิ่งที่จะพิมพ์ หน้าจอและคุณทำเสร็จแล้ว 160 00:07:10,710 --> 00:07:14,360 >> ดังนั้นเราจึงบอกว่า printf ฟังก์ชั่นเป็นโมฆะ 161 00:07:14,360 --> 00:07:16,450 มันกลับไม่มีอะไร 162 00:07:16,450 --> 00:07:18,580 >> รายการของปริมณฑล ฟังก์ชั่นยังสามารถถือเป็นโมฆะ 163 00:07:18,580 --> 00:07:21,410 และคุณได้เห็นว่า ไม่น้อยเกินไปใน CS50 164 00:07:21,410 --> 00:07:22,300 Int เป็นโมฆะหลัก 165 00:07:22,300 --> 00:07:23,260 ไม่ว่าสั่นกระดิ่งหรือไม่? 166 00:07:23,260 --> 00:07:24,080 167 00:07:24,080 --> 00:07:27,220 โดยทั่วไปสิ่งที่หมายถึงคือ หลักไม่ใช้พารามิเตอร์ใด ๆ 168 00:07:27,220 --> 00:07:29,520 มีอาร์กิวเมนต์ที่เป็น ได้รับการผ่านเข้าสู่หลัก 169 00:07:29,520 --> 00:07:32,780 ตอนนี้ในภายหลังเราจะเห็นว่ามี วิธีที่จะผ่านเข้าไปในข้อโต้แย้งหลัก, 170 00:07:32,780 --> 00:07:36,189 แต่จนถึงขณะนี้สิ่งที่เราได้ เห็นเป็น int เป็นโมฆะหลัก 171 00:07:36,189 --> 00:07:37,730 หลักก็ไม่ได้ใช้ข้อโต้แย้งใด ๆ 172 00:07:37,730 --> 00:07:40,236 และเพื่อให้เราระบุว่าด้วยการบอกว่าเป็นโมฆะ 173 00:07:40,236 --> 00:07:42,110 เราเพียงแค่ถูกมาก อย่างชัดเจนเกี่ยวกับความจริง 174 00:07:42,110 --> 00:07:44,430 ว่ามันไม่ได้ใช้ข้อโต้แย้งใด ๆ 175 00:07:44,430 --> 00:07:47,160 >> ดังนั้นตอนนี้พอไป บอกว่าเป็นโมฆะที่พื้น 176 00:07:47,160 --> 00:07:50,789 ก็ควรจะทำหน้าที่เป็นตัวยึด สำหรับคุณที่คิดเกี่ยวกับการเป็นอะไร 177 00:07:50,789 --> 00:07:52,080 มันไม่ได้ทำอะไรจริงๆ 178 00:07:52,080 --> 00:07:53,550 มีค่าตอบแทนไม่นี่ 179 00:07:53,550 --> 00:07:54,770 มีไม่มีพารามิเตอร์ที่นี่ 180 00:07:54,770 --> 00:07:55,709 มันเป็นโมฆะ 181 00:07:55,709 --> 00:07:57,250 มันเป็นเพียงเล็กน้อยที่ซับซ้อนมากขึ้นกว่าที่ 182 00:07:57,250 --> 00:08:00,640 แต่ควรพอเพียงสำหรับ ส่วนที่ดีของการเรียนการสอน 183 00:08:00,640 --> 00:08:05,010 และหวังว่าตอนนี้คุณมีเล็ก ๆ น้อย ๆ น้อยมากของแนวคิดของสิ่งที่เป็นโมฆะ 184 00:08:05,010 --> 00:08:08,460 >> ดังนั้นผู้ที่มีห้าประเภทที่คุณจะ การเผชิญหน้าที่มีในตัวซี 185 00:08:08,460 --> 00:08:10,670 แต่ใน CS50 เรายังมีห้องสมุด 186 00:08:10,670 --> 00:08:13,550 CS50.h ซึ่งคุณสามารถรวม 187 00:08:13,550 --> 00:08:15,930 และที่จะช่วยให้คุณ มีสองประเภทเพิ่มเติม 188 00:08:15,930 --> 00:08:18,280 ที่คุณอาจจะสามารถ ที่จะใช้ในการกำหนดของคุณ 189 00:08:18,280 --> 00:08:21,210 หรือเพียงแค่การทำงานโดยทั่วไปการเขียนโปรแกรม 190 00:08:21,210 --> 00:08:23,030 >> ครั้งแรกของเหล่านี้เป็นบูล 191 00:08:23,030 --> 00:08:26,780 ดังนั้นชนิดข้อมูลแบบบูล บูลถูกนำมาใช้สำหรับตัวแปร 192 00:08:26,780 --> 00:08:28,114 ที่จะจัดเก็บค่าบูลีน 193 00:08:28,114 --> 00:08:29,863 ถ้าคุณเคยได้ยิน ระยะก่อนหน้านี้คุณ 194 00:08:29,863 --> 00:08:31,960 จะได้รู้ว่าแบบบูล ค่าความสามารถในการเท่านั้น 195 00:08:31,960 --> 00:08:34,440 ถือสองค่าที่แตกต่างกันที่แตกต่างกัน 196 00:08:34,440 --> 00:08:35,872 ความจริงและเท็จ 197 00:08:35,872 --> 00:08:37,580 ตอนนี้ดูเหมือนว่าสวย พื้นฐานใช่มั้ย? 198 00:08:37,580 --> 00:08:40,496 เป็นชนิดของแปลกใจที่นี้ ไม่ได้อยู่ใน C ที่มันในตัว 199 00:08:40,496 --> 00:08:42,640 และในภาษาสมัยใหม่จำนวนมาก แน่นอน Booleans 200 00:08:42,640 --> 00:08:45,390 เป็นชนิดข้อมูลเริ่มต้นมาตรฐาน 201 00:08:45,390 --> 00:08:47,192 แต่ใน C ที่พวกเขากำลังจริงไม่ได้ 202 00:08:47,192 --> 00:08:48,400 แต่เราได้สร้างมันขึ้นมาสำหรับคุณ 203 00:08:48,400 --> 00:08:51,910 ดังนั้นถ้าคุณจำเป็นต้องสร้าง ตัวแปรที่มีชนิดเป็นบูล, 204 00:08:51,910 --> 00:08:55,230 เพียงให้แน่ใจว่า # รวม CS50.h ที่จุดเริ่มต้นของโปรแกรมของคุณ 205 00:08:55,230 --> 00:08:57,800 และคุณจะสามารถที่จะสร้าง ตัวแปรประเภทบูล 206 00:08:57,800 --> 00:09:02,095 >> หากคุณลืมที่จะ CS50.h # รวมและ คุณเริ่มใช้ตัวแปรบูลีนชนิด 207 00:09:02,095 --> 00:09:04,970 คุณอาจพบปัญหาบางอย่าง เมื่อคุณกำลังรวบรวมโปรแกรมของคุณ 208 00:09:04,970 --> 00:09:06,490 ดังนั้นเพียงแค่จะมองหาว่า 209 00:09:06,490 --> 00:09:11,180 และบางทีคุณก็สามารถแก้ไข ปัญหาที่เกิดขึ้นโดยเงินปอนด์รวมทั้ง CS50.h. 210 00:09:11,180 --> 00:09:14,590 >> ชนิดข้อมูลที่สำคัญอื่น ๆ ที่เรา ให้สำหรับคุณในห้องสมุด CS50 211 00:09:14,590 --> 00:09:15,670 เป็นสตริง 212 00:09:15,670 --> 00:09:17,130 ดังนั้นสิ่งที่เป็นสตริงหรือไม่? 213 00:09:17,130 --> 00:09:18,520 เงื่อนไขเป็นจริงเพียงแค่คำพูด 214 00:09:18,520 --> 00:09:20,000 พวกเขากำลังคอลเลกชันของตัวละคร 215 00:09:20,000 --> 00:09:20,640 พวกเขากำลังคำ 216 00:09:20,640 --> 00:09:21,390 พวกเขากำลังประโยค 217 00:09:21,390 --> 00:09:22,480 พวกเขากำลังวรรค 218 00:09:22,480 --> 00:09:25,850 อาจจะมีหนังสือทั้งแม้ 219 00:09:25,850 --> 00:09:29,690 >> สั้นมากที่จะนานมาก ชุดของตัวละคร 220 00:09:29,690 --> 00:09:34,310 หากคุณจำเป็นต้องใช้สาย ตัวอย่างเช่นในการจัดเก็บคำ 221 00:09:34,310 --> 00:09:37,609 เพียงให้แน่ใจว่าจะรวม CS50.h ที่จุดเริ่มต้นของโปรแกรมของคุณ 222 00:09:37,609 --> 00:09:38,900 เพื่อให้คุณสามารถใช้ชนิดสตริง 223 00:09:38,900 --> 00:09:43,910 และจากนั้นคุณสามารถสร้างตัวแปร ที่มีชนิดข้อมูลเป็นสตริง 224 00:09:43,910 --> 00:09:46,160 ตอนนี้ในภายหลังในการเรียนการสอน เรายังจะเห็นว่าที่ 225 00:09:46,160 --> 00:09:47,752 ไม่ได้เป็นเรื่องราวทั้งหมดอย่างใดอย่างหนึ่ง 226 00:09:47,752 --> 00:09:49,460 เราจะพบสิ่งที่ โครงสร้างที่เรียกว่า 227 00:09:49,460 --> 00:09:54,249 ที่ช่วยให้คุณไปยังกลุ่มสิ่งที่อาจจะ จำนวนเต็มและสตริงเป็นหนึ่งหน่วย 228 00:09:54,249 --> 00:09:56,290 และเราสามารถใช้ว่า จุดประสงค์บางอย่างที่อาจจะ 229 00:09:56,290 --> 00:09:57,750 เข้ามามีประโยชน์ในภายหลังในการเรียนการสอน 230 00:09:57,750 --> 00:09:59,500 >> และเรายังจะได้เรียนรู้ ประเภทที่กำหนดไว้เกี่ยวกับ 231 00:09:59,500 --> 00:10:01,720 ซึ่งจะช่วยให้คุณสามารถสร้าง ชนิดข้อมูลของคุณเอง 232 00:10:01,720 --> 00:10:03,060 เราไม่จำเป็นต้องกังวล เกี่ยวกับการที่ตอนนี้ 233 00:10:03,060 --> 00:10:04,550 แต่ก็รู้ว่านั่นคือ บางสิ่งบางอย่างบนขอบฟ้า 234 00:10:04,550 --> 00:10:07,633 ว่ามีมากขึ้นทั้งนี้ สิ่งที่ประเภทกว่าฉันบอกคุณเพียง 235 00:10:07,633 --> 00:10:08,133 ตอนนี้ 236 00:10:08,133 --> 00:10:10,591 ดังนั้นตอนนี้ที่เราได้เรียนรู้ เล็กน้อยเกี่ยวกับข้อมูลพื้นฐาน 237 00:10:10,591 --> 00:10:14,230 ประเภทและชนิดข้อมูล CS50 ขอ พูดคุยเกี่ยวกับวิธีการทำงานกับตัวแปร 238 00:10:14,230 --> 00:10:18,530 และสร้างให้พวกเขาใช้เหล่านี้ ชนิดของข้อมูลในโปรแกรมของเรา 239 00:10:18,530 --> 00:10:22,670 หากคุณต้องการที่จะสร้างตัวแปร ทั้งหมดที่คุณต้องทำคือสองสิ่ง 240 00:10:22,670 --> 00:10:24,147 >> ครั้งแรกที่คุณจะต้องให้มันประเภท 241 00:10:24,147 --> 00:10:26,230 สิ่งที่สองที่คุณต้องการ ที่จะทำคือให้มันชื่อ 242 00:10:26,230 --> 00:10:28,740 เมื่อคุณได้กระทำนั้นและตบ อัฒภาคที่ท้ายบรรทัดนั้น 243 00:10:28,740 --> 00:10:29,830 คุณได้สร้างตัวแปร 244 00:10:29,830 --> 00:10:32,370 >> ดังนั้นนี่คือตัวอย่างที่สอง 245 00:10:32,370 --> 00:10:35,744 จำนวน Int; จดหมายถ่าน ;. 246 00:10:35,744 --> 00:10:36,660 ข้าพเจ้าได้กระทำอะไรที่นี่? 247 00:10:36,660 --> 00:10:38,110 เราได้สร้างสองตัวแปร 248 00:10:38,110 --> 00:10:40,190 >> ครั้งแรกของตัวแปร ชื่อเป็นจำนวน 249 00:10:40,190 --> 00:10:44,830 และจำนวนที่มีความสามารถในการถือครองจำนวนเต็ม พิมพ์ค่าเพราะมันคือประเภท int 250 00:10:44,830 --> 00:10:48,040 จดหมายเป็นตัวแปรอีก ที่สามารถถือตัวละคร 251 00:10:48,040 --> 00:10:50,240 เนื่องจากชนิดของข้อมูลที่เป็นถ่าน 252 00:10:50,240 --> 00:10:51,772 >> ตรงไปตรงสวยใช่มั้ย? 253 00:10:51,772 --> 00:10:53,480 หากคุณพบว่าตัวเอง ในสถานการณ์ที่ 254 00:10:53,480 --> 00:10:56,250 คุณจำเป็นต้องสร้างหลาย ตัวแปรประเภทเดียวกัน 255 00:10:56,250 --> 00:10:58,740 คุณจะต้องระบุ ชื่อประเภทครั้งเดียว 256 00:10:58,740 --> 00:11:01,600 แล้วรายการเช่นเดียวกับหลายตัวแปร ประเภทที่คุณต้องการที่ 257 00:11:01,600 --> 00:11:04,230 >> ดังนั้นผมจึงสามารถยกตัวอย่างเช่นที่นี่ ในบรรทัดที่สามของรหัส 258 00:11:04,230 --> 00:11:07,420 บอกความสูง int ;, บรรทัดใหม่ 259 00:11:07,420 --> 00:11:08,291 ความกว้าง Int ;. 260 00:11:08,291 --> 00:11:09,290 และที่จะทำงานมากเกินไป 261 00:11:09,290 --> 00:11:12,039 ฉันจะยังคงได้รับสองตัวแปรที่เรียกว่า สูงและความกว้างแต่ละที่ 262 00:11:12,039 --> 00:11:12,730 เป็นจำนวนเต็ม 263 00:11:12,730 --> 00:11:16,970 แต่ฉันได้รับอนุญาตให้สิ่งที่ต้องไวยากรณ์ซี รวมลงในบรรทัดเดียว 264 00:11:16,970 --> 00:11:20,230 ความสูง Int กว้าง; มันเป็นสิ่งเดียวกัน 265 00:11:20,230 --> 00:11:23,900 เราได้สร้างสองตัวแปรหนึ่งที่เรียกว่า อย่างใดอย่างหนึ่งที่เรียกว่าความสูงความกว้างซึ่งทั้งสองอย่าง 266 00:11:23,900 --> 00:11:26,730 มีความสามารถในการถือ ค่าชนิดจำนวนเต็ม 267 00:11:26,730 --> 00:11:30,920 >> ในทำนองเดียวกันที่นี่ผมสามารถสร้างสาม ลอยค่าจุดในครั้งเดียว 268 00:11:30,920 --> 00:11:33,350 ฉันอาจจะสามารถสร้างตัวแปร เรียกว่ารากที่สองของ 2-- 269 00:11:33,350 --> 00:11:35,766 ซึ่งสันนิษฐานว่าในที่สุดก็จะ ถือ point-- ลอย 270 00:11:35,766 --> 00:11:39,222 ตัวแทนของตารางที่ รากของ 2-- รากที่สองของ 3 และปี่ 271 00:11:39,222 --> 00:11:41,180 ฉันจะได้ทำนี้ สามแยกบรรทัด 272 00:11:41,180 --> 00:11:47,690 Float, รากที่สอง 2; ลอยรากที่สอง 3; ลอยปี่; และที่จะทำงานมากเกินไป 273 00:11:47,690 --> 00:11:50,590 >> แต่อีกครั้งผมก็สามารถรวม นี้เป็นบรรทัดเดียวของรหัส 274 00:11:50,590 --> 00:11:54,050 ทำให้สิ่งที่เล็กน้อย สั้นไม่เป็น clunky 275 00:11:54,050 --> 00:11:57,259 >> ตอนนี้โดยทั่วไปก็คือการออกแบบที่ดีเท่านั้น ประกาศตัวแปรเมื่อคุณต้องการมัน 276 00:11:57,259 --> 00:11:59,050 และเราจะพูดคุยเล็ก ๆ น้อย ๆ อีกเล็กน้อยเกี่ยวกับว่า 277 00:11:59,050 --> 00:12:00,945 ในภายหลังในการเรียนการสอน เมื่อเราพูดคุยเกี่ยวกับขอบเขต 278 00:12:00,945 --> 00:12:03,320 จึงไม่จำเป็นต้อง สร้างทั้งหมดของตัวแปรของคุณ 279 00:12:03,320 --> 00:12:05,990 ที่จุดเริ่มต้นของโปรแกรมซึ่ง บางคนอาจจะทำที่ผ่านมา 280 00:12:05,990 --> 00:12:08,700 หรือก็แน่นอนที่พบบ่อยมาก การเขียนโปรแกรมหลายปีที่ผ่านมา 281 00:12:08,700 --> 00:12:11,700 เมื่อทำงานกับซีคุณอาจจะเพียงแค่ ต้องการที่จะสร้างตัวแปรที่เหมาะสมเมื่อ 282 00:12:11,700 --> 00:12:13,140 คุณต้องการมัน. 283 00:12:13,140 --> 00:12:13,640 ทั้งหมดขวา 284 00:12:13,640 --> 00:12:15,150 ดังนั้นเราจึงได้สร้างตัวแปร 285 00:12:15,150 --> 00:12:16,790 ทำอย่างไรเราจะใช้พวกเขา? 286 00:12:16,790 --> 00:12:18,650 หลังจากที่เราประกาศ ตัวแปรเราไม่จำเป็นต้อง 287 00:12:18,650 --> 00:12:21,237 เพื่อระบุชนิดข้อมูล ของตัวแปรที่อีกต่อไป 288 00:12:21,237 --> 00:12:24,070 ในความเป็นจริงถ้าคุณทำเช่นนั้นคุณอาจจะ จบลงด้วยผลกระทบบางลาง 289 00:12:24,070 --> 00:12:25,490 ว่าเราจะชนิดของปัดสวะสำหรับตอนนี้ 290 00:12:25,490 --> 00:12:27,365 แต่พอที่จะพูดว่า สิ่งแปลกที่จะไป 291 00:12:27,365 --> 00:12:30,740 ที่จะเริ่มต้นเกิดขึ้นถ้าคุณไม่ได้ตั้งใจ อีกครั้งประกาศตัวแปรที่มีชื่อเดียวกัน 292 00:12:30,740 --> 00:12:32,210 ซ้ำแล้วซ้ำเล่า. 293 00:12:32,210 --> 00:12:33,882 >> ดังนั้นที่นี่ฉันมีสี่บรรทัดของรหัส 294 00:12:33,882 --> 00:12:36,090 และฉันมีคู่ของ ความคิดเห็นที่มีเพียงแค่แสดงให้เห็น 295 00:12:36,090 --> 00:12:37,840 สิ่งที่เกิดขึ้นใน แต่ละบรรทัดเพียงเพื่อช่วยให้ 296 00:12:37,840 --> 00:12:40,520 คุณจะได้รับอยู่ในสิ่งที่เกิดขึ้น 297 00:12:40,520 --> 00:12:41,520 จำนวน int ดังนั้น ;. 298 00:12:41,520 --> 00:12:42,520 คุณเห็นว่าก่อนหน้านี้ 299 00:12:42,520 --> 00:12:44,000 นั่นคือการประกาศตัวแปร 300 00:12:44,000 --> 00:12:46,670 >> เราได้สร้างตอนนี้ตัวแปร เรียกว่าเป็นตัวเลขที่ 301 00:12:46,670 --> 00:12:48,970 ความสามารถในการถือครองค่าจำนวนเต็มชนิด 302 00:12:48,970 --> 00:12:50,210 ผมเคยประกาศว่า 303 00:12:50,210 --> 00:12:53,770 >> บรรทัดถัดไปฉันกำหนด มูลค่าจำนวน 304 00:12:53,770 --> 00:12:54,992 จำนวนเท่ากับ 17 305 00:12:54,992 --> 00:12:55,950 สิ่งที่เกิดขึ้นที่นั่น? 306 00:12:55,950 --> 00:12:58,880 ฉันวางจำนวน 17 ภายในของตัวแปรที่ 307 00:12:58,880 --> 00:13:02,760 >> ดังนั้นถ้าฉันเคยพิมพ์ออกมาแล้วสิ่งที่ เนื้อหาของจำนวนที่มีในภายหลัง 308 00:13:02,760 --> 00:13:04,030 พวกเขาจะบอกฉันมันเป็น 17 309 00:13:04,030 --> 00:13:07,030 ดังนั้นผมจึงได้ประกาศตัวแปร และจากนั้นผมได้รับมอบหมาย 310 00:13:07,030 --> 00:13:10,570 >> เราสามารถทำซ้ำขั้นตอน อีกครั้งด้วยตัวอักษรถ่าน ;. 311 00:13:10,570 --> 00:13:11,640 นั่นคือการประกาศ 312 00:13:11,640 --> 00:13:14,010 จดหมายเท่ากับทุน เอชที่ได้รับมอบหมาย 313 00:13:14,010 --> 00:13:16,030 ตรงไปตรงสวยเกินไป 314 00:13:16,030 --> 00:13:18,319 >> ตอนนี้ขั้นตอนนี้อาจจะ ดูเหมือนประเภทโง่ 315 00:13:18,319 --> 00:13:20,110 เราจะทำเช่นนี้ทำไม ในสองบรรทัดของรหัส? 316 00:13:20,110 --> 00:13:21,401 มีวิธีที่ดีกว่าที่จะทำมันได้หรือไม่ 317 00:13:21,401 --> 00:13:22,250 ในความเป็นจริงมี 318 00:13:22,250 --> 00:13:24,375 บางครั้งคุณอาจจะเห็น เริ่มต้นนี้เรียกว่า 319 00:13:24,375 --> 00:13:28,446 ก็เมื่อคุณประกาศตัวแปร และกำหนดค่าในเวลาเดียวกัน 320 00:13:28,446 --> 00:13:30,320 นี้เป็นจริงสวย สิ่งที่จะทำร่วมกัน 321 00:13:30,320 --> 00:13:32,870 เมื่อคุณสร้างตัวแปรที่คุณมักจะ อยากให้มันมีบางค่าพื้นฐาน 322 00:13:32,870 --> 00:13:34,330 แม้ว่าจะเป็น 0 หรือบางสิ่งบางอย่าง 323 00:13:34,330 --> 00:13:36,180 คุณเพียงแค่คุณให้มันคุ้มค่า 324 00:13:36,180 --> 00:13:38,360 >> คุณสามารถเริ่มต้นตัวแปร 325 00:13:38,360 --> 00:13:42,320 จำนวน Int เท่ากับ 17 เป็นเช่นเดียวกับ สองบรรทัดแรกของรหัสขึ้นไปข้างบน 326 00:13:42,320 --> 00:13:46,829 จดหมาย Char เท่ากับ h คือเช่นเดียวกับ สายสามและสี่ของโค้ดข้างต้น 327 00:13:46,829 --> 00:13:49,620 Takeaway ที่สำคัญที่สุดที่นี่ เมื่อเรากำลังประกาศและกำหนด 328 00:13:49,620 --> 00:13:51,740 ตัวแปรคือหลังจากที่เราได้ ประกาศแจ้งให้ทราบล่วงหน้า 329 00:13:51,740 --> 00:13:53,700 ฉันไม่ได้ใช้ชนิดของข้อมูลอีกครั้ง 330 00:13:53,700 --> 00:13:57,916 ฉันไม่ได้บอกจำนวน int เท่ากับ 17 บรรทัดที่สองของรหัสเช่น 331 00:13:57,916 --> 00:13:59,290 ฉันแค่บอกจำนวนเท่ากับ 17 332 00:13:59,290 --> 00:14:02,537 >> อีกครั้งอีกครั้งประกาศตัวแปรหลังจาก คุณได้ประกาศแล้วก็สามารถนำไป 333 00:14:02,537 --> 00:14:03,620 บางส่วนผลแปลก 334 00:14:03,620 --> 00:14:05,950 ดังนั้นเพียงแค่ต้องระวังว่า 335 00:14:05,950 --> 00:14:06,660 >> ฉันลอยด์ดั๊ก 336 00:14:06,660 --> 00:14:08,870 และนี่คือ CS50 337 00:14:08,870 --> 00:14:10,499