>> ROB: ทั้งหมดขวา
ยินดีต้อนรับสู่ส่วนแรก
ฉันร็อบ
>> JOSEPH: ผมโจเซฟ
>> ROB: ดังนั้นเราจะดำน้ำที่เหมาะสมค่ะ
สิ่งแรกที่จะพูดคุยเกี่ยวกับ เป็นเครื่องใช้
เพื่อหวังว่าส่วนใหญ่ของคุณมี ดาวน์โหลดมันแล้ว
แต่คุณสามารถดูคำแนะนำ ที่ cs50.net/appliance
โอ้พระเจ้าตอนนี้ฉันประหม่า
ผมยังได้ยินมัน
>> JOSEPH: ว้าวมันเสียงเหมือน มันยุ่งเหยิง
>> ROB: ดังนั้นบางคนได้รับมี ปัญหาเกี่ยวกับมันจึงไม่รอจนกว่า
นาทีสุดท้ายของปัญหาการตั้งค่า และพยายามแก้ปัญหาและเครื่องใช้
พบว่ามันไม่ทำงาน
>> JOSEPH และถ้าสิ่งที่ไม่ทำงาน และคุณต้องการความช่วยเหลือคุณสามารถไปที่
cs50.net/discussion ที่เรา มีฟอรั่มที่คุณ
สามารถโพสต์คำถามของคุณ
และเราจะให้พวกเขาในที่สุด
>> ROB: ทั้งหมดขวา
ดังนั้นนี่คือสิ่งที่เครื่องใช้ ดูเหมือนว่า
อีกครั้งก็เป็นเพียงที่แยกจากกันอย่างสมบูรณ์ ระบบปฏิบัติการที่ใช้ภายใน
สิ่งที่ระบบปฏิบัติการที่คุณ จะทำงานบนแล็ปท็อปของคุณ
และสิ่งสำคัญที่คุณจะ จะใช้เป็น Gedit
ดังนั้นหวังว่านี้มีอยู่แล้ว กลายเป็นสถานที่ที่คุ้นเคย
ขั้ว
>> และคุณยังสามารถเรียกใช้ Chrome เครื่องใช้ภายใน
มีไม่กี่คน ที่มีการรายงานทางอินเทอร์เน็ต
ไม่ทำงานในเครื่องใช้
และบางส่วนของพวกเขาได้เพียงแค่สันนิษฐาน ที่มีอยู่ไม่ควรจะเป็น
อินเทอร์เน็ตในเครื่องใช้
แต่ใช่มีที่ควร จะเป็นอินเทอร์เน็ต
>> ฉันจะบอกได้ในขณะนี้ แต่มันไม่ได้ จริงๆหมายถึงอะไร
ถ้าอินเทอร์เน็ตไม่ทำงาน นี้คือสิ่งที่คุณมีแนวโน้มที่จะต้อง
ในการทำงานที่จะแก้ไขได้
หากคุณกำลังมีปัญหาอินเทอร์เน็ตไม่ได้ จำได้เพียงแค่โพสต์บน
พูดคุยและเราจะบอกให้เรียกว่า
แต่อินเทอร์เน็ตควรจะทำงาน
>> ดังนั้นเพียงสิ่งอื่น ๆ - ใช่ไม่มีอะไร อื่นมีความเกี่ยวข้องจริงๆ
แต่ผมแค่อยากจะชี้ให้เห็นว่า -
เห็นในมุมขวาล่างนี้
ดังนั้นแต่ละเครื่องใช้ไฟฟ้าของคุณควร มีที่อยู่ IP
และต่อมาในภาคการศึกษา, IP นี้ ที่อยู่จะกลายเป็นที่เกี่ยวข้องมากขึ้นเมื่อ
คุณกำลังทำงานบนเว็บ-p ชุดเพราะ คุณจะสามารถที่จะเข้าถึง
เว็บไซต์ที่คุณกำลังทำงานต่อไปจากคุณ Chrome ในท้องถิ่นโดยใช้ที่อยู่นี้
>> แต่สิ่งที่ผมชอบที่จะใช้ที่อยู่ เพื่อ - และคุณไม่จำเป็นต้องทำเช่นนี้ฉัน
เพียงแค่ต้องการที่จะชี้ออก -
อยู่ที่นี่
ดังนั้นนี่คือหน้าต่าง terminal บน Mac ของฉันนี้ไม่ได้อยู่ใน
เครื่องใช้ในทุก
และคุณสามารถมองหาสิ่งที่ คำสั่งนี้จะ
แต่ฉันจะ SSH โดยตรง กับเครื่องใช้ของฉัน
ผมไม่ทราบว่าสิ่งที่ไอพีเป็น
>> JOSEPH: 168 -
>> 168.224.1.0
>> ROB: ดังนั้นเมื่อฉันทำ กับเรื่องนี้เข้าสู่ระบบ
ตอนนี้โดยทั่วไปนี้จะเหมือนกับ หน้าต่าง terminal ภายในเครื่องของฉัน
ดังนั้นผมสวยมากไม่เคยทำงานจริง จากภายในเครื่องตัวเอง
ผมก็มักจะมีมันทำงาน ในพื้นหลังลดลง
และ SSHed เป็นมัน
>> ปัญหากับเรื่องนี้คือคุณจะไม่ได้ไป เพื่อให้สามารถใช้งานได้อย่างง่ายดาย Gedit
โดยตรงจากนี้
แต่ถ้าคุณต้องการที่จะเป็นจริงเย็น แฮ็กเกอร์แล้วคุณควรจะได้รับในการใช้
แก้ไขข้อความบรรทัดคำสั่งต่อไป
ดังนั้นเป็นกลุ่มและ Emacs และนาโนทั้งหมดเหล่านี้ มีทางเลือกที่แตกต่างกัน
Nano มีแนวโน้มที่จะง่ายที่สุด
และฉันคิดว่ามันไม่มี เน้นไวยากรณ์
โอ้ไม่ก็ไม่ทั้งหมด
ดังนั้นคุณสามารถใช้นาโนเพราะ อย่างใดอย่างหนึ่งที่ง่ายสวย
>> คุณจะเห็นคำสั่งทั้งหมดเหล่านี้ ที่ด้านล่าง
สัญลักษณ์นี้แครอทน้อย
หากคุณไม่ได้เห็นมันมาก่อนที่คุณจะ อาจจะเห็นว่ามันมากตอนนี้
มันมักจะหมายความว่าแครอทควบคุม เช่นด้านล่างซ้ายของแป้นพิมพ์ของคุณ
อักขระควบคุม
ดังนั้นที่นี่มันบอกฉันลงที่นี่ -
โอ้ก็ไม่ได้ตัดออกไปถ้าผมซูมเข้า
ดังนั้นการควบคุม X เป็นวิธีการที่ ฉันจะออกจาก
และมันบอกว่าฉันสามารถกด Y เพื่อ ใช่สำหรับการประหยัด, ไม่มีการเลขที่
เพื่อให้เป็นนาโน
>> เป็นกลุ่มและ Emacs มีแนวโน้มที่จะมากกว่าเล็กน้อย ซับซ้อนและครอบงำ
แต่คุณจะได้รับใช้มัน แล้วคุณจะรักมัน
ดังนั้นที่ว่า
>> JOSEPH: ไม่จำเป็นต้องทำไม่ว่า
>> ROB: ใช่
คุณมีอิสระที่จะใช้สำหรับ Gedit ส่วนที่เหลือของภาคการศึกษา
ดังนั้นคำถามใด ๆ ที่เกี่ยวข้องกับเครื่องใช้?
? หรือคุณมีความคิดใด ๆ กับสิ่งอื่น จะต้องมีการพูดเกี่ยวกับเกี่ยวกับ
เครื่องใช้หรือไม่
ใช่
>> ลำโพงที่ 1: เมื่อคุณ SSHed เป็นของคุณ สิ่งที่เป็นสีแดงเข้มรหัสผ่านหรือไม่
>> ROB: ใช่
รหัสผ่านสำหรับทุกอย่างสวยมาก ในเครื่องใช้ไฟฟ้าที่เป็นไป
จะเป็นสีแดงเข้ม
>> ลำโพงที่ 2: การติดตั้งเช่น IDE จริง บนเครื่องก็จะทำงานอย่างไร
>> ROB: ผมคิดว่าจะมีคราส รุ่น Fedora ซึ่งในกรณีที่ใช่
คุณสามารถทำเช่นนั้นได้
มันอาจไม่คุ้ม
>> ลำโพง 2: ตกลง
ดังนั้นมันอาจจะง่ายกว่าถ้าผมอยากจะ ใช้ Eclipse เพียงใช้พื้นเมืองและ
แล้วอัปโหลดไปยัง -
>> ROB: โอ้ที่ยังอาจจะง่ายขึ้น
แต่คุณสามารถได้รับมันทำงาน เครื่องใช้ภายใน
>> JOSEPH: และสำหรับกล้องคำถาม คือคุณสามารถติดตั้งอีก
IDE ภายในของเครื่องใช้หรือไม่
>> ROB: Eclipse เป็น ตัวอย่างของการ IDE
คำถามเครื่องใช้อื่น ๆ ?
ขวาทั้งหมด
>> ดังนั้นตอนนี้เราจะย้ายไปบรรทัดคำสั่ง สิ่งที่เกี่ยวข้องกับอินเตอร์เฟซเพื่อ CLI
และอีกครั้งฉันแค่จะไปทำงานใน ที่นี่เพราะเป็นเหมือนกันกับ
การทำงานภายในหน้าต่าง terminal เครื่องใช้ภายใน
วิธีที่แบบอักษรที่มองหา
ที่มีขนาดใหญ่เพียงพอหรือไม่
ขวาทั้งหมด
>> ดังนั้นมีจำนวนมากของคำสั่งที่ คุณควรจะได้รับสวยใช้
ตลอดภาคการศึกษา
ขนาดใหญ่สองสำหรับการนำเป็นคำสั่ง ls รายการ ไฟล์ที่อยู่ในไดเรกทอรีนี้และ
cd เพื่อเปลี่ยนไดเรกทอรี
ดังนั้นผมจึงสามารถเปลี่ยนไปยังเดสก์ทอปแล้ว รูปแบบที่พบบ่อยมากคือแผ่นซีดีที่จะ
ไดเรกทอรีและทันทีที่คำสั่ง ls สิ่งที่อยู่ในไดเรกทอรี
>> บางครั้งคนยังไม่ได้ตระหนักถึง เสร็จสิ้นแท็บที่เป็นสิ่งที่
ดังนั้นเช่น cd, VH แล้วฉันกดแท็บ
ฉันเกือบจะไม่เคยพิมพ์ที่ออก สิ่งที่ทั้ง
แล้วถ้าผมให้กดปุ่มแท็บ อีกครั้งก็จะได้โดยอัตโนมัติ
เริ่มรายการสำหรับฉัน
ดังนั้นผมจึงสามารถ vhosts cd, โฮสต์ท้องถิ่น
และที่เพิ่งจะ -
ในกรณีที่คุณยังไม่เคยได้ยินคำว่า ก่อนไดเรกทอรีเป็นเพียงคำอื่น
สำหรับโฟลเดอร์
ดังนั้นตอนนี้ถ้าคุณเห็น -
ให้นำมาที่ไปด้านบน
>> ดังนั้นตอนนี้ถ้าคุณเห็นในวงเล็บคุณ เห็นตัวหนอนน้อย, เฉือน, vhost,
เฉือน, โฮสต์ท้องถิ่น
ดังนั้นตัวหนอนที่หมาย ไปยังไดเรกทอรีบ้านของฉัน
มันเป็นไดเรกทอรีที่คุณกำลัง ในเมื่อคุณ SSH ค่ะ
มันเป็นไดเรกทอรีที่คุณอยู่ในเมื่อ คุณเปิดสถานี
มันเป็นที่ที่คุณจะเริ่มต้น
และดังนั้นฉันภายในของไดเรกทอรีบ้านของฉัน และฉันภายในของ vhost
ไดเรกทอรีภายในของไดเรกทอรีบ้านของฉัน
และแล้วฉันภายในของท้องถิ่น เป็นเจ้าภาพจัดการภายในของไดเรกทอรีที่
>> ดังนั้นบางสิ่งที่มีประโยชน์อื่น ๆ ที่มีซีดี -
หรือดีโดยทั่วไปเพื่อจุดเสมอ หมายถึงไดเรกทอรีปัจจุบัน
cd จุดเป็นคำสั่งที่ไร้ค่าสวย
แต่ที่เปลี่ยนไป ไดเรกทอรีปัจจุบัน
อย่างใดอย่างหนึ่งที่มีประโยชน์มากในแง่ของการ cd เป็นจุดจุดซึ่งเป็น
เพียงแค่ขึ้นไปหนึ่งไดเรกทอรี
>> และทราบว่าเหล่านี้ -
ฉันอยากจะพูดแทน แต่เหล่านี้ สัญลักษณ์จุดและจุดจุดทำงานที่
สวยมากคำสั่งใด ๆ ที่คุณกำลัง จะได้รับความคิดของการทำงาน
ดังนั้นเช่นแผ่นซีดีน่าจะเป็นที่ที่คุณจะ ใช้มากที่สุด แต่เหล่านี้จะไม่
สิ่งที่เพียงแค่ cd เข้าใจ
มันเป็นสิ่งที่สวยมากทั้งหมดของคุณ บรรทัดคำสั่งเข้าใจ
จำนวนมากของโปรแกรมเข้าใจ จุดและจุดจุด
>> ดังนั้นคนที่มีประโยชน์อื่น ๆ - cd, ประ
เพื่อที่จะนำมาให้ผม ไดเรกทอรีสุดท้ายที่ฉันได้ค่ะ
ดังนั้นบางครั้งฉันจะทำสิ่งที่ต้องการ โอ้ผมทำงานที่นี่
และผมเห็นข้อผิดพลาดบางอย่างเกี่ยวกับบางสิ่งบางอย่างและ ฉันจะไปตรวจสอบได้โดยไปที่
บางไดเรกทอรีสุ่มอยู่ที่ไหนสักแห่ง
และผมก็ไม่ทราบว่ามันจะ ให้ฉันอยู่ในนั้น
มันจะ
ดังนั้นแล้วฉันทำสิ่งที่ฉันต้องการ ไดเรกทอรีนี้
blah, blah, blah, blah, blah
และฉันก็ชอบที่ถูกต้องทั้งหมดที่ฉันต้องการ ที่จะกลับไปที่ผม
cd รีบและมันทำให้ผมกลับมา
>> ดังนั้นฉันจะโยนมาก ของเหล่านี้ที่คุณในวันนี้
ผมไม่ได้คาดหวังให้คุณจดจำ ทั้งหมดของพวกเขา
มันเป็นชนิดของเพิ่งรู้ ที่พวกเขามีอยู่
และจากนั้นในภายหลังเมื่อคุณต้องการ อืมผมอยากจะกลับไปที่
ไดเรกทอรีที่ฉันเป็นเพียงที่โอ้รอ สิ่งที่ต้องการที่มีอยู่
คุณไม่จำเป็นต้องเพียงพิมพ์ สารบบทั้งหมดอีกครั้ง
>> JOSEPH: และในที่สุดคุณจะเพียงแค่ ใช้พวกเขาซ้ำแล้วซ้ำอีกและ
มันจะกลายเป็นหน่วยความจำของกล้ามเนื้อ
>> ROB: ใช่
ดังนั้นวิธีการที่ผมกล่าวว่าก่อนที่ตัวหนอน เป็นไดเรกทอรีที่บ้านของคุณ
ดังนั้นผมจึงสามารถ cd, ตัวหนอน
แต่ฉันไม่ได้มีการ ทำว่าถ้าฉันเพียง -
ผมจะกลับไปที่ไดเรกทอรีเพื่อ มันไม่ได้เป็นตัวอย่างที่ไม่มีจุดหมาย
แต่ถ้าฉันเพียงแค่ทำ cd, ที่ยัง เช่นเดียวกับที่ไปที่ไดเรกทอรีบ้านของฉัน
ฉันทำคำสั่ง, K.
>> JOSEPH: คุณยังสามารถพิมพ์ที่ชัดเจน คำและมันควรจะล้างมัน
>> ROB: และผมคิดว่ายังควบคุม L ยังไม่ได้
ดังนั้นหลายวิธีที่แตกต่างกัน
ผมคิดว่ามีความแตกต่างบางอย่างที่ ที่ชัดเจนและควบคุม L จะเพียงแค่
จริงๆผลักดันมันไปด้านบนและ ฉันยังสามารถเลื่อนกลับ
คำสั่ง K แท้จริงทำลาย ทุกอย่างและคุณ
ไม่สามารถเลื่อนกลับขึ้นไป
อย่างน้อยที่สุดที่ วิธีการทำงานใน iTerm2
ผมไม่ทราบว่าสิ่งที่อื่น ๆ -
โอ้
>> ด้วย SSHing ดังนั้นถ้าคุณอยู่ในวินโดวส์ คุณจะต้องดาวน์โหลดฉาบ
เพื่อ SSH ตั้งแต่ Windows ไม่ได้ เช่นมีเครื่องมือในตัว SSH
จากแม็คคุณสามารถเพียง SSH โดยตรง จากหน้าต่าง terminal
ตกลง
คำถาม?
>> ด้วยคำสั่ง ls ดังนั้นสิ่งที่จะได้รับใช้ กับที่สุดของคำสั่งเหล่านี้คือ -
ดีฉันก็จะทำอย่างใดอย่างหนึ่ง
แอลเอสรีบลิตร
ดังนั้นรีบลิตรคือสิ่งที่เรากำลังจะ ที่จะเรียกธงที่จะสั่ง ls
และมากของคำสั่งเหล่านี้มีธง ที่คุณสามารถส่งผ่านไปยังพวกเขา
ดังนั้นในกรณีนี้รีบลิตรเป็นธง ที่บอกว่ามันจะให้ฉันเต็ม
รายการของข้อมูลทั้งหมดที่ ไฟล์เหล่านี้
>> ดังนั้นเราจึงเห็นว่านี่เป็นสก์ท็อป แก้ไขเมื่อวันที่ 30 กรกฏาคม 00:54
ดาวน์โหลดมีการปรับเปลี่ยนที่ 6 กันยายน
เหล่านี้เป็นขนาดปัจจุบันและ ไบต์ของไดเรกทอรีเหล่านี้
คุณไม่จำเป็นที่จะเข้าใจ ทั้งหมดนี้
>> สิ่งนี้อยู่ทางด้านซ้ายของเหล่านี้ drwx, ที่จะกลายเป็นที่เกี่ยวข้องมากขึ้น
ในภายหลังเมื่อคุณต้องจัดการกับ -
ว่าจะทำอย่างไรกับผู้ที่มีสิทธิ์ ในการดูไฟล์เหล่านี้
ดังนั้นถ้าคุณไม่ได้ใช้เฉพาะใน คอมพิวเตอร์เครื่องนี้คุณจะสามารถที่จะ
การพูดการตกลงฉันควรจะเป็นคนเดียว ได้รับอนุญาตให้ดูแฟ้มนี้หรือฉัน
จะช่วยให้ทุกคน ในการดูไฟล์นี้
ดังนั้นคนอื่นบนคอมพิวเตอร์ของฉัน สามารถดูไฟล์นี้
ฉันไม่ได้รู้ว่าสิ่งนี้ - สิ่งนี้จะทำอย่างไร
>> JOSEPH: ผมไม่แน่ใจว่าจริง
>> ROB: ไม่มีความคิด
>> JOSEPH: แต่ถ้าคุณไม่ได้รู้ว่ามี คำสั่งที่เป็นประโยชน์ที่คุณสามารถใช้
ที่จะบอกคุณในสิ่งที่หมายถึงการส่งออก
และถ้าคุณพิมพ์ในมนุษย์ ก่อนที่คำสั่ง -
ดังนั้น M--N ROB: คน
ดังนั้นคนที่เป็นอีกหนึ่ง ที่มีประโยชน์มาก
และมนุษย์คำสั่ง ls
ดังนั้นหน้าคนที่พวกเขามีทั้ง คำสั่งที่คุณกำลังจะใช้
ที่บรรทัดคำสั่งและพวกเขายังมี ฟังก์ชั่นที่จะเกี่ยวข้อง
C. ด้วยดังนั้นคุณจึงสามารถคน -
และฉันไม่สนใจ 3
แต่คนที่ 3 printf จะนำ รุ่น C ขึ้นของ printf
แต่ถ้าผมทำเพียงแค่คน printf นี้เป็น จะนำคำสั่ง printf ขึ้น
ที่เกิดขึ้นที่บรรทัดคำสั่ง
>> ดังนั้นคนสั่ง ls
หน้าคนสามารถสวย ล้นหลาม
ที่นี่ แต่คุณจะเห็นในรายการนี​​้ ทั้งหมดของธงเหล่านี้ที่คำสั่ง ls
เข้าใจ
ดังนั้นถ้าเราไปรีบ, ลิตรและ -
ฉันแค่จะโยนนี้ที่คุณ
แต่เพื่อการค้นหาที่คุณต้องการ การตีครั้งแรกคำถาม
เครื่องหมายหรือปุ่มเฉือน
ดังนั้นเฉือน
>> แล้วฉันจะค้นหา สำหรับสิ่งที่ฉันต้องการ
ดังนั้นฉันจะเฉือนเพื่อประลิตร
และมีมันเป็น
ดังนั้นใช้รูปแบบรายการที่มีความยาว
แต่นั่นไม่ได้ช่วยให้ฉันคิดออกว่า คอลัมน์โดยเฉพาะอย่างยิ่งที่มีความหมาย แต่ฉัน
สมมติที่ไหนสักแห่งในที่นี่ ก็จะอธิบายว่า
เพื่อใช้หน้าคนสำหรับคำสั่งใด ๆ ที่คุณไม่เข้าใจได้ทันที
>> ฉันแน่ใจว่าสวยที่คุณยังสามารถมนุษย์มนุษย์
อินเตอร์เฟซออนไลน์ คู่มืออ้างอิง
โอ้, ไฟล์ล่าสุดหนึ่งที่อาจจะเล็กน้อย คำสั่ง ls มีความเกี่ยวข้องชน
เพื่อแจ้งให้ทราบถ้าฉันทำคำสั่ง ls, ฉันจะได้รับเหล่านี้ห้าไฟล์
ถ้าฉันทำคำสั่ง ls, รีบ, ผม ได้รับไฟล์มากขึ้น
ดังนั้นสิ่งที่เหมือนกันระหว่างเหล่านี้ ไฟล์ใหม่เป็นจุดก่อน
>> ดังนั้นการประชุมก็คือแฟ้มที่ เริ่มต้นด้วยการจุดถูกซ่อนอยู่
ดังนั้นคุณจึงไม่ต้องการที่จะเห็นไฟล์ที่คุณ ไม่ต้องการที่จะมีมันยุ่งกับ
รายการไดเรกทอรีของคุณ
มันเป็นเพียงเมื่อคุณถามอย่างชัดเจน ทั้งหมดที่ถูกต้องคำสั่ง ls, ประ,, แสดงให้ฉัน
ย่อมาจากไฟล์ทั้งหมด รวมถึงคนที่ซ่อนอยู่
ดังนั้นบางคำสั่งอื่น ๆ
โอ้คำถามที่จุดที่
ใช่
>> ลำโพงที่ 3: เมื่อคุณทำคำสั่ง ls, สิ่งที่จุดจุด?
>> ROB: โอ้
ดังนั้นนี่คือสิ่งที่ผมพูดเกี่ยวกับ
มันเป็นสิ่งเดียวที่ ฉันสามารถชอบ cd จุดจุด
ดังนั้นในทางเทคนิคจุดและจุดจุดที่ ไฟล์ที่มีอยู่ในทุกเดียว
ไดเรกทอรีที่ไฟล์จุดหมาย ไปยังไดเรกทอรีปัจจุบัน
ดังนั้นถ้าผม cd จุดฉันแค่จะ ที่จะอยู่ในไดเรกทอรี
และจุดจุดมักจะหมายถึง หน้าที่ไดเรกทอรีหนึ่งระดับขึ้น
ดังนั้นถ้าผมไปลงบันทึกและคำสั่ง ls รีบอัล, ฉันจะเห็นจุดจุด cd ไปยังจุดจุด
นำฉันไปยังไดเรกทอรีก่อนหน้านี้
ใช่
ตกลง
>> ดังนั้นอีกสิ่งที่สำคัญสวย คำสั่ง rm ใน
ดังนั้นนั่นคือสิ่งที่เรากำลังจะ ที่จะใช้ในการลบ
และแจ้งให้เราทำจริงอีก คำสั่งแรก
ดังนั้น mkdir
mkdir คือวิธีที่คุณสามารถ สร้างไดเรกทอรี
และฉันจะสร้างไดเรกทอรีชั่วคราว และไปในไดเรกทอรีชั่วคราวที่
และเป็นที่คาดหวังมันว่างเปล่า
แต่ถ้าคำสั่ง ls ฉันรีบ, ฉันยังคงมีจุด และจุดจุดจุดเพราะหมายถึง
ไดเรกทอรีปัจจุบัน
และจุดจุดหมายถึง ไดเรกทอรีที่แล้ว
และผู้ที่มักจะอยู่ไม่ว่า ไดเรกทอรีที่คุณกำลังเข้า
>> และนี่คือที่ไม่จำเป็นอย่างสิ้นเชิง คำสั่ง แต่สัมผัส
ฉันแค่ใช้มันเพราะมันเป็น วิธีที่ง่ายในการสร้างไฟล์
เพื่อสัมผัสสัมผัส b สัมผัสคเป็นเพียง จะสร้างสามไฟล์ที่เรียกว่า
b, c และที่ว่างเปล่า
ดังนั้นจุดของฉันการสร้างผู้ที่อยู่ใน สถานที่แรกที่เป็นเพียงเพื่อให้ Rm ที่
วิธีที่เราสามารถลบออก
ดังนั้น RM,
มันจะถามฉันลบ ปกติไฟล์ว่างเปล่า
แล้วฉันจะบอกว่าใช่
>> ดังนั้นถ้าผมทราบว่าผมต้องการที่จะ ลบไฟล์ที่โดยไม่ต้องมี
ได้รับแจ้งให้ลบไฟล์ที่ว่างเปล่าปกติ? then rm รีบฉเป็นไปได้
ธงที่บอกว่าบังคับเอาโดยไม่ต้อง ได้แจ้งให้ฉันโอ้คุณ
แน่ใจหรือว่าต้องการที่จะลบไฟล์หรือไม่
ใช่ฉันแน่ใจว่า
ดังนั้น RM, ประ, FB จะเพียงแค่ ทำมันได้โดยไม่ต้องขอ
>> ดังนั้นขอให้บางไดเรกทอรีมากขึ้น
mkdir, tmp2, cd, tmp2, สัมผัสสัมผัสข
ตกลง
ดังนั้นตอนนี้ฉันต้องการที่จะลบ tmp2 เป็นไดเรกทอรี
tmp2 ดังนั้น Rm
คุณไม่สามารถลบ tmp2, มันเป็นไดเรกทอรี
ดังนั้นปัญหาที่นี่เป็นที่ Rm ไม่ ทันทีทำงานในไดเรกทอรี
มันเป็นความหมายสำหรับไฟล์เช่น ไฟล์ที่ไม่ไดเรกทอรี
>> ดังนั้นสิ่งที่เราสามารถทำได้ ที่นี่เป็น RM, ประ, r
ที่หมายถึงซ้ำซึ่งอาจ ไม่ได้หมายถึงอะไรให้คุณยัง
แต่เมื่อคุณได้รับการเรียกซ้ำ มันจะหมายถึงมากขึ้น
ดังนั้น RM, ประ, r, tmp2 เป็นไป ซ้ำไปลงในไดเรกทอรีที่
เพื่อลงไป tmp2 ไดเรกทอรี
ใช่ให้ไปลงที่
เราต้องการที่จะลบ tmp2 /?
ใช่
เราต้องการที่จะลบ tmp2 / b?
ใช่
ตอนนี้เราต้องการที่จะลบ tmp2 ไดเรกทอรีหรือไม่
ใช่
และตอนนี้เพื่อไดเรกทอรี และทุกสิ่งที่อยู่ภายใน
ของมันได้ถูกลบออก
>> เป็นเทคนิคที่มีคำสั่ง rmdir ที่คุณสามารถใช้เพื่อลบ
ไดเรกทอรี แต่มันใช้ได้เฉพาะ ในไดเรกทอรีที่ว่างเปล่าอยู่แล้ว
และจะเห็นว่าให้เพียง ทำ mkdir, tmp2 อีกครั้ง
Tmp2 สัมผัส
ตกลง
ดังนั้นถ้าผมพยายามที่จะลบ dirtmp2 ก็จะ พูดไดเรกทอรีไม่ว่างเปล่า
ดังนั้นผมสวยมากไม่เคยใช้ลบ dir คำสั่งต่อไปเพราะ RM, ชน
r จะทำงานในไดเรกทอรีว่าง และไดเรกทอรีที่ไม่ว่างเปล่า
>> และนอกจากนี้ถ้าฉันไม่ต้องการให้มีการ ผ่านไปที่กระบวนการทั้งหมดของ
ลงไปในไดเรกทอรีและ การลบไฟล์แต่ละ, RM,
รีบ, RF, tmp2
และตอนนี้มันหายไป
>> สิ่งที่ต้องระวัง เกี่ยวกับการเป็น RM, ประ, RF
และมันกลัวฉันจะได้พิมพ์, เพราะถ้าฉันตั้งใจ
กด Enter หรือสิ่งที่
ดังนั้น RM, ประ, RF, ตัวหนอนจะโดยไม่ต้อง แจ้งให้ฉันฉไม่ได้แจ้งให้
ฉันก็จะลบโดยอัตโนมัติ ไดเรกทอรีบ้านทั้งของฉันและ
ทุกอย่างในนั้น
ดังนั้นคุณอาจจะคิดว่าเป็น เป็นสิ่งที่โง่ที่จะทำ
และดีมันเป็น
>> แต่ก็สามารถเกิดขึ้นได้อย่างง่ายดายมากโดย อุบัติเหตุถ้าพูดที่ฉันต้องการที่จะลบ
เฉือนไดเรกทอรี vhost ของฉัน
และในการพิมพ์ที่รวดเร็ว ฉันตั้งใจทำเช่นนี้
ที่จะลบซ้ำทั้งสองของฉัน ไดเรกทอรีและไดเรกทอรี vhost
ในไดเรกทอรีนี้โดยเฉพาะที่เพิ่ง ที่เกิดขึ้นไม่ได้มีอยู่ในตอนนี้
แต่นี้ยังจะเอา ไดเรกทอรีบ้านของฉันทั้งหมด
อย่างน้อยโดยไม่ต้องฉ, ก็จะแจ้งให้ฉันแรก
และฉันจะเป็นเหมือนโอ้ไม่ฉัน ไม่ต้องการที่จะทำเช่นนั้น
แต่คนเฉือนรวมทั้ง ฉันมีแนวโน้มที่จะได้รับใน
นิสัยของเสมอ RF-ไอเอ็นจี
แม้แต่ไฟล์ปกติท​​ี่ฉันสามารถ rm, C, ฉันมักจะเพียงแค่ rm, ประ, RF, ค
เพียงระมัดระวังเมื่อคุณ RF-ไอเอ็นจี
>> ลำโพง 4: อะไร C ทำอย่างไร
>> ROB: ซีที่ผมพูดเกี่ยวกับไฟล์ C ที่ ไดเรกทอรีนี้, RM ที่ค
>> JOSEPH: และอันตรายมากขึ้นถ้าคุณใช้ ดาวมันหมายถึงทุกอย่างใน
ไดเรกทอรี
ดังนั้นสิ่งที่ฉันมักจะมีแนวโน้มที่จะทำคือฉันจะ ไปลงในไดเรกทอรีและผมต้องการที่จะ
ลบไฟล์ทั้งหมดที่อยู่ในนั้น
ดังนั้น RM, ประ, RF, ดาว
>> ROB: ใช่
rm, ประ, RF, ดาว
>> JOSEPH และถ้าคุณไม่ระวัง สิ่งที่ไดเรกทอรีที่คุณอยู่ใน -
ผมไม่ได้อยู่ในอุณหภูมิ แต่ฉันก็ตั้งใจ ในไดเรกทอรีบ้านของฉัน
แล้วฉันจะลบทุกอย่าง ในไดเรกทอรีบ้านของฉัน
และฉันได้ทำจริงที่มาก่อนและ ฉันคิดว่าคุณได้กระทำเช่นนี้มาก่อนหรือ
เจย์ได้ทำก่อนที่จะ
>> ROB: ฉันได้ลบตั้งใจ -
จึงไม่สนใจคำสั่งที่สำหรับบิต
>> JOSEPH: ไม่สนุก
>> ROB: ดังนั้นในไดเรกทอรีถังเฉือนเป็น พวงของไฟล์ไบนารีที่มีจะ
เป็นคนที่คุ้นเคยเช่นเสียงดังกราว
ดีและพื้นเสียงดังกราวสิ่งเหล่านี้ สิ่งที่ผมใช้คำสั่ง
อยู่ในสายเฉือนนี้ไดเรกทอรีถัง
>> JOSEPH: เช่นเดียวกับคำสั่ง ls อยู่ในที่นี่
>> ROB: ดังนั้นจุด, เฉือน, คำสั่ง ls จะ รายการไดเรกทอรีนี้
>> JOSEPH: Rm ยังอยู่ในไดเรกทอรีนี้
>> ROB: ฉันได้ตั้งใจ rm, ถัง RF-เอ็ด ซึ่งออกคำสั่งใด ๆ ที่ฉันสามารถทำได้
อาจจะเคยต้องการ
ที่แล้วฉันเพิ่งติดตั้ง เครื่องใช้ใหม่ที่จุดที่
>> JOSEPH: ดังนั้นต้องระมัดระวังเมื่อ คุณใช้คำสั่งนี้
>> ผู้ชม: [ไม่ได้ยิน]?
>> ROB: ใช่
ที่ยังนิสัยไม่ดีที่จะได้เป็น
ถ้าคุณสังเกตเห็นฉันตอนนี้ -
ดีคุณจะไม่สามารถสังเกตเห็น แต่ ซูมในอาจจะสามารถของฉัน
ดังนั้นตอนนี้ผมราก @ เครื่องใช้
ดังนั้น jharvard เป็นผู้ใช้ที่เราต้องการ คุณเสมอจะใช้
รากเป็นผู้ใช้ที่มีสิทธิ์ใน ที่จะทำอะไรอย่างแน่นอน
>> เพื่อแจ้งให้ทราบเมื่อฉัน jharvard, ถ้าฉันพยายามที่จะ cd -
สิ่งที่ไดเรกทอรีที่?
โอ้รากเป็นตัวอย่างที่ดี
ดังนั้น cd ราก
อนุญาต
เพราะถ้าเราดูที่นี้ -
และอีกครั้งที่คุณจะได้ไม่ต้อง เข้าใจทั้งหมดนี้
แต่ทั้งสามขีดกลางจะพูด ที่จะไม่ปล่อยให้คนอื่น ๆ
ผู้ใช้ในไดเรกทอรีนี้
และไดเรกทอรีที่เกิดขึ้นกับ เป็นของผู้ใช้ราก
>> ดังนั้นความจริงที่ว่าผม jharvard และไม่มี อย่างใดอย่างหนึ่งที่ไม่ได้เป็นรากที่ได้รับอนุญาตใน
ไดเรกทอรีนี้ว่าหมายความว่าฉัน จะได้รับสิทธิ์ในการปฏิเสธเมื่อฉัน
พยายามที่จะ cd เป็นมัน
ดังนั้นเมื่อเราเป็นรากผมได้รับอนุญาตให้ ทำอะไรอย่างรวมทั้ง
ลบไฟล์สำคัญ กับเครื่องใช้ไฟฟ้าและ
ทำลายสิ่งทั้งหมด
>> ดังนั้นมันเป็นนิสัยที่ดีที่จะได้รับเป็น เพียงแค่เดินไปรอบ ๆ ของคุณ
ระบบปฏิบัติการเป็นราก
ฉันทำมันต่อไป
คำถาม?
และฉันจะออกจากรากอยู่เป็น jharvard
ตกลง
>> คำสั่งที่เกี่ยวข้องเพิ่มเติม
เพื่อที่จะกลับสู่อุณหภูมิของเรา ฟังเพลงคำสั่งยืนสำหรับการย้าย
คุณสามารถย้าย
ตอนนี้เราต้องการที่จะเรียกว่าข ดังนั้นตอนนี้ก็เรียกว่าข
หรือบางทีเราต้องการที่จะย้าย b หนึ่งไดเรกทอรี
ดังนั้นตอนนี้ว่างเปล่าไดเรกทอรีนี้
ผมจะกลับไปที่บ้านของฉันและ เราจะเห็นว่าขอยู่ในที่นี่เพราะ
ไดเรกทอรีบ้านเป็นหนึ่งในไดเรคทอขึ้นจาก ไดเรกทอรีที่ขได้รับค่ะ
>> นอกจากนี้ยังมี cp
ดังนั้น cp คัดลอกเป็นส่วนซุปเปอร์ จุดข้อความ
ฉันสามารถเรียกมันจุดข้อความ
ตอนนี้เรามีทั้งส่วนซุปเปอร์ จุดข้อความและ s จุดข้อความ
นอกจากนี้ยังทำงานในไดเรกทอรี
ฉัน RF-เอ็ดไฟล์เดียว
ดังนั้น cp -
กันครั้งแรกที่ลอง cp, tmp, tmp2
ดังนั้นถนัด tmp ไดเรกทอรี
จึงคล้ายกับ rm, การทำงานเริ่มต้น คือการไม่ทำงานในไดเรกทอรี
>> และอีกครั้งคล้ายกับ rm เริ่มต้น พฤติกรรม - ดีการไปทำงาน
กับไดเรกทอรีเป็นรีบ-r ไป
เพื่อคัดลอกซ้ำชั่วคราว ไดเรกทอรีใน tmp2
และอื่น ๆ ตอนนี้เรามีทั้ง tmp และ tmp2, และที่ไม่ได้เป็นประโยชน์ที่ตั้งแต่ tmp
ว่างเปล่าในสถานที่แรก
Tmp2
>> ตอนนี้ขอคัดลอก tmp เป็น tmp2
และเราจะเห็นว่า tmp2 นอกจากนี้ยังมีไฟล์ เพราะไดเรกทอรีและ
ทุกอย่างภายในที่ ไดเรกทอรีถูกคัดลอก
และที่จะเป็นประโยชน์บ้าง ถ้าบอกว่าคุณกำลังทำงาน
ในการแก้ปัญหาการตั้งค่าอย่างใดอย่างหนึ่ง -
หรือที่จริงชุดปัญหาภายหลัง ยิ่งมีความสำคัญมากขึ้นเพราะมี
จะเป็นทั้งกลุ่ม ของไฟล์และสิ่งที่
>> แต่คุณต้องการเพียงแค่การแยก สองคุณต้องการขวาทั้งหมดฉัน
จะลองสิ่งที่แตกต่าง
ผมขอคัดลอก pset1 ทั้งหมดของฉัน ไดเรกทอรีในการสำรองข้อมูล pset1 เพื่อว่าถ้า
ฉันท้ายคาดคั้นสิ่งขึ้นฉันสามารถ ย้อนกลับไปในไดเรกทอรีการสำรองข้อมูลของฉัน
มีวิธีการที่เหมาะสมมากขึ้นของการเป็น เวอร์ชันสำรองรหัสของคุณ แต่
นี้มักจะเป็นวิธีที่รวดเร็วเพื่อเพียงให้ แน่ใจว่าคุณมีสำเนาของบางสิ่งบางอย่าง
ที่คุณกำลังจะแก้ไข
>> ดังนั้นเสียงสะท้อนนี้ยังมีคำสั่งอย่างใดอย่างหนึ่งออกว่า ชนิดของ sillily ก็จะพิมพ์ไป
บรรทัดคำสั่งว่าสิ่งที่ คุณต้องการที่จะสะท้อน
ดังนั้น echo hi
เราก็จะพิมพ์ hi
ก้องโลก hello
เราจะพิมพ์สวัสดีชาวโลก
ที่เข้ามาในการใช้งานเมื่อคุณ เริ่มต้นการรวมคำสั่ง
>> และอีกครั้งไม่ได้คาดหวังให้คุณอย่างสิ้นเชิง เข้าใจในเรื่องนี้ แต่ก็
บางสิ่งบางอย่างที่จะเห็น
แล้วถ้าคุณกำลัง Googling ตัวอย่าง หรือคุณตระหนักได้ว่าคุณต้องการจะทำ
บางสิ่งบางอย่างมันจะมีประโยชน์
จึงขอเป็นตัวอย่าง, คำสั่ง ls เพื่อรีบลิตร
ดังนั้นที่นี่ฉันเห็นผลลัพธ์ ของคำสั่ง ls รีบลิตร
และผมก็บอกว่าโอเคผมต้องการ ที่จัดเก็บเป็นไฟล์
ทั้งหมดของการส่งออกที่นี่ฉันต้องการ ที่จะใส่ลงไปในแฟ้มที่แยกต่างหาก
>> ดังนั้นนี้น้อยกว่าสัญลักษณ์ คือสิ่งที่เราจะเรียก
เรากำลังเปลี่ยนเส้นทาง ส่งออกเป็นไฟล์
ขอเรียก blah ไฟล์เพราะนั่นคือ สิ่งที่ฉันมีแนวโน้มที่จะมักจะเรียกว่า
ดังนั้นตอนนี้เราจะเห็นว่าเรามี ยื่น blah ที่นี่
และถ้าผมเปิดมันขึ้นมาฉันจะเห็นมัน ตรงออกจากคำสั่ง
ที่ฉันวิ่ง
และเช่นเดียวกันคุณสามารถ -
ว่านี่คือการส่งออกไปยังแฟ้มนี้ เป็นที่ได้รับข้อมูลจากแฟ้ม
คืออะไรคำสั่งที่ฉัน -
>> JOSEPH: ผมคิดว่าคุณสามารถใช้ น้อยลงหรือมากขึ้นอาจ
>> ROB: แต่วิธีการเกี่ยวกับเพียงแค่ blah น้อยลงหรือไม่
ฉันไม่รู้
หากคุณเข้ามาในสถานการณ์นี้เช่น มี psets ว่ามันเป็นประโยชน์สำหรับ
>> JOSEPH: คุณสามารถท่อมันเป็นเสียงสะท้อน
ท่อไฟล์ลงสะท้อนที่จะเห็นมัน
>> ROB: มันเป็นท่อ
>> JOSEPH: ขออภัย
>> ROB: ทั้งหมดขวา
ดังนั้นนี่คือการส่งออกไปยังแฟ้ม
นี้คือการได้รับข้อความจากไฟล์ และมือมันไปยังโปรแกรม
และคุณยังจะเห็นผู้ชายคนนี้
ดังนั้นนี้เป็นชนิดของการทำทั้งสองอย่างพร้อม
และที่จริงผมจะแนะนำสองใหม่ คำสั่งเพียงเพื่อให้ใช้ประโยชน์จากมัน
>> ประวัติความเป็นมาเป็นคำสั่งที่มีประโยชน์ที่เป็นเพียง จะพิมพ์ออกรายการของ
อะไรที่ฉันเคยวิ่งบรรทัดคำสั่ง
ดังนั้นเรามาดูกันที่นี่ทุกอย่างที่ฉันมี รับการทำงานตลอดเวลานี้
จำนวนมากของคำสั่ง ls
>> และคำสั่งที่มีประโยชน์อื่น grep ที่ จุดประสงค์ของมันคือการค้นหาผ่าน
ข้อความที่กำลังมองหารูปแบบที่ดี มองหาสิ่งที่คุณ
ต้องการที่จะมองหา
และเพื่อให้การใช้ประโยชน์ที่นี่คือการพูด เราต้องการที่จะคว้าประวัติศาสตร์
และฉันต้องการที่จะมองหาคำสั่งที่ ที่ฉัน - สิ่ง
หนึ่งในประโยชน์ที่จะมองหา
>> JOSEPH: [ไม่ได้ยิน]?
>> ROB: หรือให้เพียงมองหาทั้งหมด สัมผัสด้วยเหตุผลใด
ดังนั้นนี่คือสิ่งที่มันจะมีลักษณะเช่น
และคุณไม่จำเป็นต้องสมบูรณ์ เข้าใจว่า
แต่ความคิดที่อยู่ที่นี่จะให้ประวัติศาสตร์ ออกเดียวกันมันก็ที่นี่
ที่มันพิมพ์ออกทั้งหมด ประวัติศาสตร์ของทุกอย่างที่ฉันเคยวิ่ง
จากนั้นเราจะผ่านที่ -
เพื่อแทนการพิมพ์ไปยังหน้าจอที่ เราต้องการที่จะผ่านไปยัง
grep คำสั่งที่กำลังมองหา ทุกกรณีของคำสัมผัส
>> และเพื่อใช้เป็นส่วนผสมของนี้ ประวัติเครื่องมือและ grep ฉันสามารถดูโอเค
นี่คือทั้งหมดของคำสั่งที่ฉันได้เคย ทำงานและนี่เป็นหนึ่งค่อนข้างทั่วไป
เราอยู่ที่ด้านล่าง
และก็ยังให้ฉันคำสั่ง ฉันวิ่งที่มี
สัมผัสคำในนั้น
แต่ท่อเป็นสิ่งที่มีประโยชน์สวย สำหรับการรวมหลายโปรแกรม
และที่จริงมันเป็นทางลัดในการขอ ฉันประวัติศาสตร์การส่งออกไปยังไฟล์ blah และ
ให้ฉัน grep ใช้ blah ไฟล์ เป็นสิ่งที่ฉันต้องการที่จะดูมากกว่า
ดังนั้นท่อเป็นเพียงทางลัด สำหรับผู้ที่สองคำสั่ง
ใช่
>> ลำโพง 4: [ไม่ได้ยิน]?
>> ROB: ใช่
คืออะไร -
โอ้
ลองทดสอบ
ดังนั้นแมว, สุนัข, ปลา
ดังนั้นผมจึงต้องการที่จะ grep
Dash, r อีกครั้งเป็นไปได้ ซ้ำดังนั้นฉันต้องการที่จะลงมาลง
ไดเรกทอรีทั้งหมด
ผมต้องการที่จะซ้ำ grep สำหรับทั้งหมด - และให้ฉันได้ชั่วคราว
ออกจากทางนี้
ไม่สนใจฉัน
ตกลง
>> ดังนั้นผมจึงต้องการที่จะ grep ชั่วคราว ทุกกรณีของปลาคำว่า
และอื่น ๆ ที่นี่สิ่งที่ฉันทำคือ grepping ซ้ำสำหรับปลาคำว่า
และดาวหมายความว่าผ่านสิ่งเหล่านี้ แฟ้มในไดเรกทอรีนี้
และดังนั้นจึงให้ฉันอนุญาตปฏิเสธ, เพราะไม่ได้รับอนุญาตให้อ่านที่
ไฟล์โดยเฉพาะ
แต่ก็พบว่าปลาในแฟ้มทดสอบ
>> ฉันยังสามารถพูดได้เฉพาะฉันเท่านั้น ต้องการที่จะมองใน blah ไฟล์ใน
ซึ่งในกรณีนี้จะไม่พบอะไร
ฉันเพียงต้องการที่จะดูในแฟ้มทดสอบ
มันจะหาปลา
นั่นคือคำสั่งที่มีประโยชน์สวย รู้ทั่วไป
มีทางเลือกที่จะ grep เป็น ที่ควรจะเป็นมากขึ้น
โปรแกรมเมอร์เป็นมิตร แต่ฉันมัก ยังคงถอยกลับใน grep
คำถาม?
ตกลง
>> จะมีคำสั่งอื่น ๆ
โอ้
เพียงหนึ่งออกหนึ่งที่ฉันเสมอ พบว่าจะมีความสนุกสนานเป็นไขมัน
เพื่อแจ้งให้ทราบเมื่อฉันอยู่ในนี้น่ารัก โหมดเต็มหน้าจอผมไม่มีเหมือนด้านบน
แถบเครื่องมือหรืออะไร
ดังนั้นไขมันเพียงแค่ให้ฉันน้อยดี ปฏิทินที่เหมาะสม
ตอนนี้ตัดออกไปผมถือว่า
แต่คำสั่งน้อยดี
>> JOSEPH: มันเป็น [ไม่ได้ยิน]
คำสั่งอื่น ๆ ที่คุณอาจมี รวมถึงการมองเห็นและทำเสียงดังกราว
เราจะไปกว่าพวกเขาใน รายละเอียดเพิ่มเติมในภายหลัง
แต่ถ้าคุณได้รับการทำงานใน pset คุณควรจะ
ผู้ที่คุ้นเคยกับ
>> ROB: ทั้งหมดขวา
คำถามในสิ่งที่บรรทัดคำสั่ง?
ขวาทั้งหมด
จึงขอย้ายไปยังบาง สิ่งที่ C ที่เกี่ยวข้องกับ
ตัวแปรทางคณิตศาสตร์
ตกลง
เช่นดังนั้นเพียงแค่เรามีคณิตศาสตร์ในเกา, คุณยังสามารถใช้คณิตศาสตร์ใน C.
>> ก่อนที่เราจะไปที่ทั้งหมด ดังนั้นตัวแปร
โปรดจำไว้ว่าเมื่อใดก็ตามที่คุณประกาศ ตัวแปรเช่น int x หรือ y ลอยคุณ
มีที่จะให้มันก่อนที่จะพิมพ์ได้ ชื่อตัวแปร
ดังนั้นประเภทที่เราได้เห็นเพื่อให้ห่างไกลเป็น int, ลอยคู่ยาวยาวที่ฉัน
ไม่จริงรู้ว่าถ้าเราได้ เห็นว่าเพื่อให้ห่างไกล
>> มีบางคนอื่น ๆ ที่มี
เราได้เห็นถ่าน
มีระยะสั้นซึ่งเป็นเช่นนั้น ตรงข้ามยาวยาวที่มัน
มีขนาดเล็กกว่าจำนวนเต็ม
เรายังได้เห็นสตริง
ดังนั้นสิ่งที่พิเศษเกี่ยวกับสตริง?
ทำไมฉันจะบอกว่ามันเป็น ไม่มากเช่น int?
>> ลำโพง 4: มันไม่ได้มีอยู่จริงๆ
>> ROB: ใช่
ดังนั้นเหตุผลเดียวที่เรามีสตริง เป็นเพราะเมื่อคุณทำ
กัญชารวม cs50.h.
และเราจะเห็นตัวอย่างของการนี​​้ในภายหลัง - โอ้ที่ไม่ได้จัดการที่ดี -
cs50.h ที่จะทำบางสิ่งบางอย่าง ตามสายของประเภท
def ถ่านดาวสตริง
>> และอื่น ๆ ที่บอกว่าเราทำไม่ได้ รู้ว่าสิ่งที่ดาวถ่านยัง
แต่นี้จะบอกว่าเราต้องการสตริง
สถานที่ที่คุณได้ใช้สายใด ๆ จะได้รับการใช้ถ่านดาว
ซึ่งอันที่จริงเป็นชนิดที่ ที่มีอยู่ในภาษา C
แต่เราจะไปที่
Oh, และมันจะไปขวากลับ
เรียบร้อย
>> สิ่งเดียวกันให้กับบูล ที่จริงและเท็จ
ที่ไม่ได้จริงๆประเภทในตัวใน C. แต่มันเป็นแค่นี้ไม่ได้มี
ค่าเป็นศูนย์หรือไม่
จากนั้นเราก็จะพิจารณา มันเป็นเท็จ
นี้ไม่ได้มีค่า -
ดีนี้ไม่ได้มี ค่าที่ไม่ได้เป็นศูนย์?
แล้วเราก็จะคิดว่ามันจะเป็นจริง
ดังนั้นหนึ่งเป็นความจริงทั้งสองเป็นความจริง อะไรภัณฑ์เป็นความจริง
ดังนั้นผู้ที่เป็นคน
คำถามตัวแปรและประกาศ ประเภทตัวแปรและทั้งหมดที่
ใช่
>> ลำโพง 4: นานนานในหนังสือ ก็กล่าวว่ามันจะต้องเป็น int ยาวยาว
แต่ก็จะยาวยาวทำงานอย่างไร
>> ROB: ดังนั้นเหล่านี้ปรับเปลี่ยนประเภท
ดังนั้น int x
ดังนั้นเรายังสามารถพูดได้ int x ลงนาม
เราสามารถพูดได้ int x สั้น
เราสามารถพูดได้ยาวยาว int x
แต่สวยมาก ๆ สิ่งที่ฉัน เพียงแค่กล่าวว่า int ไม่ได้ลงนาม int สั้น
int ยาวยาวคุณสามารถกำจัด int และมันก็จะถือว่า
ที่คุณหมายถึง int
x ดังนั้นไม่ได้ลงนามซึ่งก็หมายความว่า -
คุณรู้ว่าปกติ int, คุณสามารถพูดได้ x เท่ากับลบ 3?
กับ int ไม่ได้ลงนามคุณไม่สามารถ
>> JOSEPH: และอีกครั้งสำหรับกล้อง คำถามคือสิ่งที่แตกต่าง
ระหว่าง int ยาวยาว และเพียงแค่ระยะเวลาที่ยาว
>> ROB: ใช่
ดังนั้นผมจะแทบไม่เคย เขียน int ยาวยาว
ฉันจะเขียนยาวยาว
>> JOSEPH: คำถามที่ใด?
>> ROB: OK
เตือนความทรงจำเล็ก ๆ น้อย ๆ โง่ของว่าเป็นวิธีที่ เราประกาศตัวแปรและเริ่มต้น
ตัวแปรและประกาศอื่น ตัวแปรและเริ่มต้น
มันทั้งหมดในขั้นตอนเดียว
ดังนั้นการประกาศของตัวแปรและ ตัวแปรเริ่มต้นไม่ได้
แต่สามารถจะอยู่ในบรรทัดเดียวกัน
>> ดังนั้นเราจึงมีผู้ประกอบการทางคณิตศาสตร์มาตรฐาน ว่าคุณกำลังใช้ในการ -
บวก, ลบ, หาร, ครั้ง
นอกจากนี้ยังมีแบบโมดูโลซึ่งเราจะได้เห็น
ที่มีอยู่ไม่อย่างน้อยใน C, อำนาจในตัว
ผู้ประกอบการยกกำลังเครื่องหมาย
ดีมีเครื่องหมายประกอบการ แต่ก็ไม่ได้มีอำนาจ
>> JOSEPH: แต่มันไม่ได้ยกกำลัง ใช่
>> 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
>> JOSEPH: และเช่นเดียวกับโน้ตก็จริง พ่นออกสิ่งที่หลังจาก
จุดทศนิยม
ดังนั้นหากคุณแทนมี 6 หารด้วย 10 คุณอาจจะคิดว่ามันจะทำให้คุณ
0.6 และแล้วคุณจะรอบขึ้นถึง 1
แต่จริงๆแล้วสิ่งที่เกิดขึ้นเมื่อการพิมพ์ งานมันก็คือว่ามันลดลงสิ่งที่เป็น
หลังจุดทศนิยม
ดังนั้น 0.6 ไม่เป็น 0
>> ROB: ใช่
และเราจะบอกว่าตัดที่
ดังนั้นเมื่อใดก็ตามที่คุณโยนไป int, ทศนิยมจึงถูกตัดออก
ดังนั้นการแก้ไขที่ - มี จริงสอง
และฉันจะทำครั้งที่สองว่าเพราะ อันนี้แก้ไขได้ง่ายขึ้นมาก
>> ดังนั้นหนึ่งแก้ไขคือการใช้ลอย ในส่วนของ
และจริงๆคุณจะต้อง ทำให้หนึ่งของพวกเขาลอย
แต่มันก็ค่อนข้างชัดเจนเพียง ที่จะทำให้ทั้งสองของพวกเขาลอย
ดังนั้น 1.0 หารด้วย 10.0 หารสองลอย
ดังนั้นคำตอบจะจบลงด้วยการ ลอยและเพื่อให้คุณจะ
ได้อย่างถูกต้องพิมพ์ 0.10 ที่นี่
>> สิ่งที่ไม่ได้ทำงานให้ดี เกี่ยวกับการที่เป็นอย่างดีว่ามันเป็นเรื่องง่าย
พอที่จะแปลง 1 ถึง ลอยด้วยการทำให้ 1.0
แต่ถ้าแทนเรามีสองจำนวนเต็ม เช่น int x เท่ากับ 1 และ int y
เท่ากับ 10 และจากนั้นเราต้องการ ที่จะไม่ x หารด้วย Y?
ดังนั้นมันจึงไม่ใช่เรื่องง่ายที่จะเพียงแค่ ทำ x.0 หรือสิ่งที่
>> ดังนั้นการแก้ไขปัญหาที่ได้รับการหล่อ
ดังนั้นการหล่อเป็นวิธีการใน C การแปลง จากประเภทหนึ่งไปยังอีกตัวแปร
ดังนั้นที่นี่ 1 เป็นจำนวนเต็ม
และโดยการใส่ลอยนี้ในหน้าของ นั้นเราจะหล่อ 1 ถึงลอย
และดังนั้นนี้จะแปลง 1 ถึง 1.0
และจะแปลง 10 ถึง 10.0
>> และแล้วสิ่งที่ประพฤติตัวคล้ายกับ รุ่นก่อนหน้านี้เราก็แสดงให้เห็นว่า
ที่เป็นไปตามคาดที่เราได้รับ 0.10 และมันจะพิมพ์ว่า
และเราสามารถทำเช่นนี้กับ ตัวแปรเกินไป
ดังนั้นเราจึงสามารถพูดลอย x หารด้วยลอย y
>> JOSEPH: คำถามที่ใด?
>> ROB: ดังนั้นเช่นเดียวกับในทางคณิตศาสตร์ปกติ เรามีความสำคัญประกอบ
ดังนั้นในชั้นเรียนคณิตศาสตร์คุณจะมีโอกาสมากขึ้น ที่จะเรียกว่าคำสั่งของการดำเนินงาน
ที่นี่ระยะอย่างเป็นทางการเป็น สำคัญประกอบ
แต่ความสำคัญผู้ประกอบการส่วนใหญ่หรือ ผู้ประกอบการเป็นที่คุณคาดหวัง
>> ดังนั้นเช่นเดียวกับในคณิตศาสตร์ 2 ครั้ง 10 จะได้รับการจัดกลุ่มอย่างใกล้ชิดกว่า
10 หารด้วย 2 แล้ว 2
ลำดับของการดำเนินงานก็จะทำ 2 ครั้งที่ 10, 10 หารด้วย 2 แล้ว
มันจะ 20 บวก 5 บวก 2
ดังนั้นจึงเป็นที่คาดหวังและคุณสามารถใช้ วงเล็บในการแสดงออกของกลุ่ม
คุณไม่สามารถใช้วงเล็บ การแสดงออกของกลุ่ม
ใช่?
>> ลำโพง 5: คุณสามารถจริง เพิ่งกลับไปหนึ่งสอง
คุณสามารถโยน int สตริง?
>> ROB: ดังนั้นใน C คุณสามารถโยนอะไร คุณต้องการสิ่งที่คุณต้องการ
แต่นั่นไม่ได้หมายความว่ามัน เป็นสิ่งที่ดีที่จะทำ
ดังนั้นเมื่อคุณโยน int ไป สตริงนั่นหมายความว่า -
และเราจะได้รับลงในนี้ มากขึ้นอย่างทั่วถึง -
>> JOSEPH: ภายหลัง
>> ROB: ผมไม่อยากจะพูดมากในภายหลัง ดังนั้นผมจึงพยายามที่จะเปลี่ยนประโยคของฉัน
เราจะได้รับเป็นมันมากขึ้นอย่างทั่วถึง ภายหลังที่จริงๆเมื่อคุณมี
ตัวแปรสตริง -
เพื่อสตริงสามารถพล ยาวใช่มั้ย?
และเราได้รับการบอกว่า int เป็น สี่ไบต์และระยะยาวยาวแปด
ไบต์และลอยสี่ไบต์
ดังนั้นสายเช่นเดียวกับ int, มีเพียง จำนวนที่แน่นอนของไบต์เพื่อมัน
และที่จะเป็นสี่ไบต์
>> แต่สายสามารถสวย ยาวโดยพลใช่ไหม
ดังนั้น hello โลกแล้วหากที่ 10 ตัวละครหรือสิ่งที่มีอยู่แล้ว
จะถูกกว่า 4 ไบต์ ฉันสามารถพอดีกับสตริง
ดังนั้นวิธีการและเงื่อนไขการทำงานจริงๆก็คือ พวกเขาอยู่ในหน่วยความจำที่สตริงที่
จะถูกเก็บไว้
>> และอื่น ๆ กว่าที่นี่เมื่อฉันพูดสตริง x เท่ากับโลกสวัสดีภายในของ x คือ
เพียง แต่พูดว่าโอ้สวัสดีชาวโลกจะถูกเก็บไว้ ณ สถานที่นี้โดยเฉพาะในหน่วยความจำ
ดังนั้นถ้าเราพยายามที่จะโยนจำนวนเต็ม สตริงแล้วเรากำลังพยายามที่จะแปลความหมาย
บางส่วนของหน่วยความจำแบบสุ่ม เป็นสตริง
และที่มักจะแบ่งสิ่งที่
>> JOSEPH: แต่ถ้าสับสนว่า คุณเราจะครอบคลุมมัน
เพิ่มเติมในเชิงลึกต่อไป
>> ROB: ใช่
ซึ่งเป็นที่ที่คุณกำลังจะ จะได้รับเป็นตัวชี้
และที่เป็นชิ้นสำคัญ ของสองสัปดาห์ของหลักสูตรนี้
>> ลำโพง 6: มันทำงานเหมือนวัตถุ ในภาษาอื่นหรือไม่จริงหรือเปล่า
>> ROB: ดังนั้นในภาษาอื่น ๆ วัตถุ จะได้รับการแสดงโดยใช้ตัวชี้
มันไม่ได้เป็นสิ่งเดียวกัน แต่
คิดใด?
>> JOSEPH: เลขที่
ไม่มีความคิด
>> ROB: OK
>> JOSEPH: ถัดไป
>> ROB: เพียงแค่ไปกับที่
ขวาทั้งหมด
ดังนั้นโมดูโล
เช่นเดียวกับที่เรามีบวกลบ แบ่งและคูณ
ดังนั้นโมดูโลเป็นหนึ่งที่คุณอาจจะ ไม่ได้เห็นมาก่อน
และมันก็บอกว่าให้ ผมส่วนที่เหลือของ
ดังนั้น 55% 10
ส่วนที่เหลือของการทำ 55 แบ่งออก 10 จะเป็น 5
ดังนั้น 55% 10 คือ 5
และ 3% 5 จะเป็น 3
8% 8 จะเป็น 0
16% 15 จะเป็น 1
>> JOSEPH: สิ่งหนึ่งที่ควรทราบเกี่ยวกับเรื่องนี้ เกินไปก็อาจจะไม่ทำงานตามที่คาดไว้
ถ้าคุณใช้เป็นจำนวนลบ
ดังนั้นลบ 5% 4 บางคน อาจจะคิดว่าเป็น -
สิ่งที่คุณจะคิดในแง่ลบ 5% 4 จะเป็นอย่างไร
>> ลำโพง 5: หนึ่ง
>> JOSEPH: ดังนั้นบางคนบอกว่าหนึ่ง บางคนบอกว่าหนึ่งในเชิงลบ
แต่สิ่งที่ -
>> ROB: ฉันจะไม่ได้มี กล่าวว่าหนึ่งในบรรดา
>> JOSEPH: สองขอโทษ
บางคนบอกว่า -
>> ROB สาม
>> JOSEPH: สาม?
>> ROB: ลบ -
สิ่งที่เป็น - ลบห้า -
>> JOSEPH: สามสามสาม
ขอโทษ
เพราะโมดูโลทั่วไปเมื่อคุณได้ เห็นมันที่อื่น ๆ ก็มักจะหมายถึง
กลับเป็นจำนวนบวกใช่ไหม
>> ROB: ดังนั้นเมื่อเราพูดในทางคณิตศาสตร์ 10% ของ พวกเขามักจะต้องการให้คุณ -
ถ้าเรา mod 10 แล้วเราคาดหวังที่จะ ได้รับหมายเลขระหว่าง 0 และ 9
ในที่นี่ที่ไม่ได้กรณีที่คุณ จะได้รับตัวเลขที่ติดลบกลับ
>> JOSEPH: ดังนั้นลบ 5% 4 จะเป็นเชิงลบ 1
>> ROB: แต่มันหายากที่คุณ mod ไอเอ็นจี ตัวเลขที่ติดลบจะเริ่มต้นด้วย
ข้ามสิ่งนี้
>> JOSEPH: ใช่
>> ROB: Meh
ตกลง
ดังนั้นหนึ่งสิ่งสุดท้ายที่จะชี้ให้เห็นเกี่ยวกับ ลอยจะเป็นพฤติกรรมที่เป็นอันตราย
แต่ลอยไม่ได้แน่นอน การแสดง
ดังนั้นจะกลับไปอีกครั้งไบต์จำ ที่ int เสมอสี่ไบต์และ
ลอยอยู่เสมอสี่ไบต์
ดังนั้นตัวอย่างของลูคัสเป็นสิ่งที่ดีสวย
>> ดังนั้นคิดว่า 1 หารด้วย 3
ดังนั้น 0.3333333
ถ้าฉันมีเพียง 32 บิตวิธีที่สามารถ ฉันเก็บ 0.33333 ว่า?
และอาจจะด้วยเหตุผลอะไรก็ตามที่คุณพูด ทั้งหมดที่ถูกต้องดีให้เพียงกล่าวว่า
นี้โดยเฉพาะที่ 1011001 ให้ เพียงแค่บอกว่าควรจะ 0.333333
ดีคุณมีจำนวน จำกัด เพียง บิตเหล่านั้นจึงเป็นไปไม่ได้
เป็นตัวแทนของจุดลอยทุกเดียว ค่าที่กำหนดเพียง 32 บิต
>> ดีก็เป็นไปไม่ได้ที่จะเป็นตัวแทนใด ๆ ค่าจุดลอยให้ไม่มีที่สิ้นสุด -
ดีที่กำหนดจำนวน จำกัด ของบิต
ดังนั้นปัญหาที่นี่คือดีเมื่อเราใช้ สั่งพิมพ์ไปยังทศนิยมสองตำแหน่ง
เราไม่ถูกต้องได้คำตอบ 0.10
แต่อยู่ภายใต้ฝากระโปรงก็จริงๆ ถูกเก็บไว้ที่ใกล้ที่สุดเท่าที่เป็นไปได้
0.10 เป็นบิตที่สามารถเป็นตัวแทนของ
นี้บนภาพนิ่งต่อไปหรือไม่
หรือมันไม่ได้คืออะไร
>> JOSEPH: ใช่ก็ว่า
>> ROB: Blegh, Blegh
>> JOSEPH: ใช่คุณสามารถเพียงแค่ ดึงบันทึกขึ้นเล็กน้อย
>> ROB: ฉันแค่ไปเพื่อขยาย ในวันสุดท้ายว่า
Oh my gosh ที่ [ไม่ได้ยิน]
ดังนั้นตัวเลขที่
นั่นคือสิ่งที่จะพิมพ์ ถ้าเราเรียกใช้โปรแกรมที่
และแจ้งให้ทราบว่าไม่จริงเป็นเรื่องใหญ่ ถ้าเราเพียง แต่ดูแลเกี่ยวกับเช่น
2-3 ตำแหน่งทศนิยม
เหมือนเราเพียง แต่พิมพ์เดิม 0.10, และที่ว่าทำไมเราเห็นอะไรผิดปกติ
แต่เมื่อเราเริ่มต้นการเข้าสู่ แน่นอนจำนวนที่แน่นอนว่ามันเป็น
ที่เป็นตัวแทนของเราจะเห็นว่ามันไม่สามารถ ว่าเป็นตัวแทนของ 0.1
>> และเป็นส่วนหนึ่งของปัญหาที่นี่เป็นเหมือน สิทธิทั้งหมดที่ดี แต่ดี
ครั้งแรกสิ่งที่ถ้าเราพยายามที่จะทำ คำตอบเท่ากับเท่ากับ 0.1?
คือการที่จะกลับมาจริงหรือเท็จ?
และดังนั้นจึงเป็นเรื่องยากที่จะพูด
ฉันคิดว่ามันจริงอาจกลับจริง
มันจะเป็นครั้งแรก -
ฉันไม่รู้
? คำตอบคือเมื่อคุณเริ่มต้นการซื้อขาย ด้วยค่าจุดลอยตัวคุณสวย
มากไม่ควรจะใช้ความเท่าเทียมกัน เพราะไม่แน่ชัดนี้
>> และสำหรับทุกคนที่คุณรู้ว่ามันเป็นร้อย ทศนิยมตำแหน่งที่
ลอยจุดก็ไม่สามารถ การจัดการอย่างถูกต้อง
และเพื่อความเท่าเทียมกันก็จะล้มเหลวได้ แม้ว่าจำนวน - ถ้าคุณได้รับ
โดยใช้ตัวเลขที่แน่นอนตัวเลขที่ควร ได้รับเหมือนกัน
มันเป็นช่วงเวลาเช่น 50 คำนวณโดยใช้เหล่านี้ลอย
ค่าจุดข้อผิดพลาดสามารถสร้าง ขึ้นและขึ้นและขึ้นและ
สิ่งที่เพิ่งได้รับไม่ถูกต้อง
>> JOSEPH: และมีจริงๆ ตัวอย่างที่มีชื่อเสียงของที่เกิดขึ้นนี้
เช่นวิศวกรนาซ่ามีอากาศนี้ ผิดจรวดที่ก่อให้เกิดการระเบิดใน
อากาศหลังจากที่พวกเขาได้รับการเปิดตัว
และจำนวนมากของปัญหาเช่นว่า
เพื่อใช่
>> ลำโพง 6: เมื่อคุณพูด ​​0.3 ฉ, ที่ไม่ได้ตัดทอนส่วนที่เหลือหรือไม่
หรือไม่ก็รอบขึ้นหรือลง
>> ROB: จะ printf รอบมันได้หรือไม่
>> JOSEPH: ผมคิดว่าตัดทอน printf
>> ROB: OK
ดังนั้นเราจึงเหมือนกันสามารถไปในทางตรงกันข้าม ทิศทางของที่นี้ในกรณีนี้
ที่ใกล้เคียงที่สุดที่จะสามารถเป็นตัวแทนของ 0.1 กับหมายเลขนี้
ที่ใกล้เคียงที่สุดก็อาจจะมีความสามารถในการ เป็นตัวแทนของ 0.2 อยู่ในฝั่งตรงข้าม
ทิศทาง 0.199999996356 หรือสิ่งที่
ดังนั้นถ้าเราไปในทิศทางที่ว่า สิ่งที่แล้ว printf 0.3 ฉจะกลับมา
1.99 แทน 2.00
>> JOSEPH: และฉันไม่ได้ทั้งหมด แน่ใจว่า
คุณอาจต้องการที่จะเขียนเล็ก ๆ น้อย ๆ โปรแกรมเพียงแค่ตรวจสอบว่า
>> ROB: แม้ว่าสิ่งที่เราแน่ใจก็คือ ถ้าคุณพยายามที่จะโยนไปที่
int และ int หล่อจะเป็นไปได้ ทำให้ตัดทศนิยมถ้า
คุณพยายามที่จะโยน 1.9999999 เป็น int คุณจะได้รับ 1
และเพื่อให้คุณโดยทั่วไปควรใช้ ฟังก์ชั่นในรอบห้องสมุดคณิตศาสตร์
คำถาม?
ตกลง
>> JOSEPH: ดังนั้นจะย้ายไปเงื่อนไข และสำนวนที่บูลีน
เพื่อให้คุณได้เห็นเหล่านี้ก่อน
และจริงให้ฉันแน่ใจว่าฉัน คอมพิวเตอร์ที่อยู่ในรูปแบบที่เหมาะสมที่นี่
ช่องว่าง
ขออภัยเรากำลังจะมีการจัดการ นิด ๆ หน่อย ๆ กับการตัดที่ขอบ
>> แต่ใช่พวกคุณได้เห็น นี้มาก่อนในเกา
ดังนั้นตอนนี้ที่นี่คือการแสดงออก ซึ่งจะใช้ในการ
คำสั่งเงื่อนไข
ดังนั้นคำตอบที่มากกว่าศูนย์จะ บอกคุณจริงหรือเท็จ
และเหล่านี้เป็นสิ่งสำคัญมากเพราะ พวกเขาช่วยให้เราสามารถแนะนำ
ตรรกะในรหัสของเรา
>> ดังนั้นตัวอย่างเช่นนี้เป็นโปรแกรม เขียน Scratch ที่ขอให้ผู้ใช้
เพื่อจำนวนเต็มและบอกพวกเขาว่า เลขที่พวกเขาให้คุณเป็น
จำนวนบวกหรือลบ
และการแปลงไปที่นี่จะเห็นคือ คุณพิมพ์แรกที่ออกคำสั่ง
ให้ฉันจำนวนเต็ม
แล้วคุณถามพวกเขาสำหรับจำนวนเต็ม
>> แล้วคุณใช้ตรรกะเงื่อนไขกว่า ที่นี่เพื่อตรวจสอบว่าตัวเลขที่
เป็นจริงที่มากกว่าศูนย์หรือไม่
ดังนั้นที่นี่เรามีนิพจน์บูลีน ภายในเงื่อนไขถ้างบ
มีคำถามหรือข้อสงสัย
มีคำถามใด ๆ เกี่ยวกับที่
ตกลง
>> จึงมีมากกว่าเพียงแค่ มากกว่าแน่นอน
คุณสามารถสร้างนิพจน์ ใช้มากที่สุดของทุกประเภทของสิ่งที่คุณ
จะคิดในทางคณิตศาสตร์
ดังนั้นที่ยิ่งใหญ่กว่า
ที่ควรจะน้อยกว่า
ขอโทษ
และระยะห่าง
>> ROB: พระเจ้าห้ามคุณปล่อยมัน
>> JOSEPH: ทั้งหมดขวา
ดังนั้นมากกว่าน้อยกว่ามากขึ้น กว่าหรือเท่ากับน้อย
กว่าหรือเท่ากับ
เราใช้เท่ากับสองเพื่อตรวจสอบ ความเท่าเทียมกันเพราะวิธีเดียวเท่ากับ
ที่ได้รับมอบหมายใช่ไหม
ใช่
แล้วเรายังสามารถไม่เท่ากับโดย ใช้เครื่องหมายอัศเจรีย์เท่ากับ
>> และสัญลักษณ์เครื่องหมายอัศเจรีย์สามารถ ยังสามารถขยายเพื่อที่ว่าถ้าคุณต้องการ
กลับไปจัดเรียงของบูลีนใด ๆ การแสดงออกที่คุณสามารถทำได้
ดังนั้นนี่จะประเมินให้เป็นจริง แต่ถ้าคำตอบคือน้อยกว่า
กว่าหรือเท่ากับศูนย์
คำถามใด ๆ เกี่ยวกับการที่
ตกลง
>> เพื่อให้คุณยังสามารถรวมเหล่านี้ สำนวนที่ใช้ตรรกะและและ
หรือตรรกะ
ดังนั้นนี่เป็นเพียงสัญลักษณ์และ ซึ่งควรจะกดปุ่ม Shift, 7
และนี่คือสัญลักษณ์ท่อซึ่งเป็น ไม่ได้กรณีที่ต่ำกว่าลิตรมันเป็นหนึ่งใน
ที่เหมาะสมดังกล่าวข้างต้นที่สำคัญใส่ของคุณ
ดังนั้นคุณจึงใช้สองของเหล่านี้เพื่อเป็นสัญลักษณ์ ตรรกะและตรรกะหรือ
>> ดังนั้นนี้จะกลับจริงถ้าคำตอบ เป็นหนึ่งในสองสามหรือสี่
และนี้จะกลับจริงถ้าคำตอบ เกินกว่าที่ทั้งสองข้าง
ดังนั้นจึงไม่หนึ่งสองสามหรือสี่
และวิธีที่คุณจะใช้ ว่าในการแสดงออก -
>> ROB: หรือศูนย์หรือห้า
>> JOSEPH: ศูนย์หรือห้า
ขอโทษ
ใช่ใช่ใช่
ตกลง
และกว่าที่นี่ตอนนี้วิธีเดียวกับที่คุณ จะใช้การแสดงออกที่มีขนาดเล็ก
ด้านการแสดงออกของหากเงื่อนไข คำสั่งคุณยังจะใช้
ทางเดียวกันโดยเพียงแค่วางไว้ภายใน วงเล็บของคำสั่งถ้า
ดังนั้น printf นี้จะไฟหากคำตอบ เป็นหนึ่งในสองสามหรือสี่
คำถามใด ๆ เกี่ยวกับการรวม นิพจน์
>> ดังนั้นจึงมีเงื่อนไขอื่น สร้างที่เราเรียกว่าถ้า / อื่น
ดังนั้นโดยทั่วไปในตอนนี้หมายความว่าตกลงถ้า สิ่งที่ฉันต้องการที่จะตรวจสอบไม่ได้
ความจริงแล้วไปที่อื่นและ ดำเนินการว่าการกระทำอื่น ๆ
ดังนั้นในกรณีนี้โดยเฉพาะอย่างยิ่งผมถาม ผู้ใช้จำนวนเต็ม
เป็นจำนวนเต็มมากกว่าศูนย์?
ใช่?
อืมแล้วพวกเขาเลือก จำนวนบวก
ถ้าไม่เช่นนั้นมันจะต้องมี การลบหรือศูนย์
เพื่อให้คุณเลือกเป็นจำนวนลบ หรือศูนย์ในกรณีนี้
ใช่
หรือศูนย์
>> แล้วเรายังมีถ้า / อื่น ๆ , ถ้าและอื่น
ดังนั้นนี้จะช่วยให้เราดำเนินการลำดับของ สิ่งเดียวถ้าคนแรกไม่ได้
ดังนั้นในกรณีนี้ตอนนี้เรากำลังทำ คนสุดท้ายที่คุณเลือกเป็นศูนย์
ดังนั้นหากพวกเขาไม่เลือกที่เป็นบวกหรือ จำนวนลบแล้วพวกเขาก็ต้อง
ได้เลือกศูนย์
ดังนั้นมันก็จะต่ำลง ห่วงโซ่เช่นนี้
>> ดังนั้นตัวอย่างของวิธีการ ถ้าจะแตกต่างจาก -
ถ้า / อื่น ๆ จะแตกต่างจาก เพียงลำดับของอิฟส์
และนี่เป็นคำถามทั่วไปที่ คนถามเป็นอย่างดีถ้าคุณได้รับเช่น
95 ใน CS50 สิ่งที่จะนี้ โปรแกรมบอกคุณ
>> ลำโพง 5: คุณได้เอ
>> JOSEPH: ใช่
คุณได้ทุกเดียว หนึ่งในผู้ที่ถูกต้อง
คุณมีคุณได้ B คุณ ได้ C และ D ใช่ไหม
ดังนั้นสิ่งเหล่านี้จะได้รับการประเมิน ในการสั่งซื้อ
ดังนั้นในขณะที่ 95 มีมากกว่า 90 ก็ นอกจากนี้ยังมีมากขึ้นกว่า 80 ก็ยัง
มากกว่า 70 และก็ ยังสูงกว่า 60
เพื่อให้คุณมีทั้งหมดของผู้ที่เกรด
และฉันคิดว่าคุณจะ เพียงต้องการ A.
>> วิธีการแก้ไขที่จะแทนที่ ผู้ที่มีอื่น ๆ / ถ้า 's
ดังนั้นในสถานการณ์นี้ก็เห็นว่า 95 มากกว่า 90 และจากนั้นก็จะ
ได้ประเมินส่วนที่เหลือ ของงบการเงิน
คำถามใด ๆ เกี่ยวกับที่
>> เพื่อให้มีการจัดเรียงเป็นอีกเงื่อนไขของ โครงสร้างที่เรามีที่นี่ที่เรา
เรียกคำสั่งสวิทช์
ดังนั้นนี้จะช่วยให้คุณสามารถตรวจสอบโดยทั่วไป สิ่งที่มีค่าของจำนวนที่คุณใส่
เป็นคำสั่งที่เปลี่ยนเป็น
ดังนั้นในสถานการณ์นี้เรากำลังเปลี่ยน ที่ n และเรากำลังจะบอกว่าโอ้ถ้า n คือ
หนึ่งแล้วพิมพ์คำว่า
แล้วทำลายซึ่งหมายความว่าออก ออกมาจากคำพูดของสวิทช์
>> ถ้ามันไม่ได้อย่างใดอย่างหนึ่งแล้วดีเพียง ในที่สุดก็ตรวจสอบทุกกรณี
และอื่น ๆ มันจะตรวจสอบว่าเป็นหนึ่งหรือสองหรือ สามและก็พิมพ์ตาม
และสิ่งที่คำหลักที่เริ่มต้นนี้ลงมาที่นี่ หมายถึงคือถ้าพวกเขาไม่ได้เข้ามาใด ๆ
ของเหล่านั้นแล้วบอกว่าไม่ถูกต้อง
จึงขอบอกว่าฉันขอ n และ ผู้ใช้ให้ฉันสี่
ดีก็ตรงที่ไม่มีกรณีดังกล่าว จึงจะพิมพ์ออกมาสิ่งที่อยู่ใน
ส่วนค่าเริ่มต้น
มีคำถาม?
>> ลำโพง 5: คุณสามารถใช้บูลีน การแสดงออกแทน
หนึ่งสองหรือสาม?
>> JOSEPH: ดังนั้นคำถามคือคุณสามารถใช้ นิพจน์แทนหนึ่ง
สองและสาม
และใน C ผมเชื่อว่าคุณ ไม่สามารถทำเช่นนั้นได้
แต่ในภาษาอื่น ๆ ที่คุณอาจจะ พบที่ส่วนท้ายของ
ภาคการศึกษาเช่น JavaScript คุณสามารถ
ดีคุณจะต้องคำนวณเป็นครั้งแรก ค่าที่แล้วใช้มันใน
สลับคำ
ใช่?
>> ROB: ดังนั้นส่วนหนึ่งของผลประโยชน์ของสวิทช์ งบที่คิดว่าถ้าคุณทำอย่างนี้
เช่นหาก / อื่นดังนั้นเช่นถ้า n เท่ากับ เท่ากับหนึ่งหรืออะไรก็ตาม
อื่น / ถ้า n เท่ากับเท่ากับสองสิ่ง
อื่น / ถ้า n เท่ากับเท่ากับสาม
ดังนั้นวิธีที่โปรแกรมจะเรียกใช้มัน จะลงไปตามลำดับรายชื่อที่
และตรวจสอบเป็นที่หนึ่ง n?
Nope
n เป็นสอง
Nope
n เป็นสาม
ใช่
ทำเช่นนี้
>> ในขณะที่มีคำสั่งสวิทช์ก็ จริงสามารถที่จะรวบรวมให้เป็น
อย่างรวดเร็วจริงๆ
และทันทีที่มันบอกว่าสวิทช์มัน กล่าวว่าสิทธิทั้งหมด n คือสองผม
ทันทีจะข้ามไปที่ ฉันควรจะเริ่มต้นดำเนินการ
ฉันไม่ได้ไปตรวจสอบก่อน n เป็นหนึ่งเป็นสอง n?
ได้ทันทีสามารถเริ่มต้นทำ สิ่งที่มันควรจะทำ
>> และเนื่องจากการที่มันไม่สามารถ ใช้เงื่อนไขบูลีน
หรืออื่น ๆ ที่จะต้องทำ เรียงตามลำดับเช่นขวาทั้งหมดเป็น n
มากกว่าศูนย์?
อื่นเป็น n มากกว่า 10 หรืออะไรก็ตาม
>> JOSEPH: ในกรณีนี้ถ้าคุณใช้ ถ้า / อื่นถ้าแล้วสวิทช์จะ
ทำงานประมาณสามครั้ง เร็วกว่าหาก / อื่นหาก
เราสามารถจัดระเบียบสวิทช์ดังกล่าว วิธีการที่เราไม่ได้ทำลาย
หลังจากที่แต่ละกรณี
ดังนั้นในกรณีนี้ผมแบ่ง ตัวเลขที่เราเลือกเป็นหนึ่งและ
สองคนไม่ได้ตัวเลขที่สูงและ สามเป็นจำนวนมาก
>> ดังนั้นในกรณีนี้ถ้า n คือหนึ่งหรือสองก็ กรณีที่จะตีแล้วมันจะ
ตกผ่านเพราะ มีการหยุดพักไม่
และมันจะจบลงที่นี่
ดังนั้นถ้าเราเลือกอย่างใดอย่างหนึ่งก็จะทำ printf แล้วทำลายเพื่อให้ไม่มีที่
นี้จะถูกดำเนินการ
และแน่นอนว่าพวกเขาป้อนในสาม หรือสิ่งอื่นแล้วมันจะข้าม
เหล่านั้นและไม่ได้ไปที่นั่นและมัน จะดำเนินการแทน
สายที่เกี่ยวข้อง
มีคำถามใด ๆ เกี่ยวกับที่
ใช่?
>> ลำโพง 4: คุณจะได้รับข้อผิดพลาดถ้าคุณ มีการหยุดพักหลังจากกรณีหนึ่ง แต่
ไม่ได้มีสิ่งที่มันจะทำอย่างไร
>> JOSEPH: ดังนั้นคำถามคือคุณจะได้รับ ข้อผิดพลาดถ้าคุณมีการหยุดพักหลังจากที่
กรณีที่หนึ่ง แต่ไม่มีอะไรที่จะทำหรือไม่
และคำตอบคือไม่มี
คุณจะไม่ได้รับข้อผิดพลาดจริง
ใช่อืมมมม
>> เพื่อที่จะเรียงลำดับของการเปลี่ยนแปลงเล็กน้อยที่นี่ ฉันจะใส่ printf ที่นี่
ขออภัย
ดังนั้นสิ่งนี้จะพิมพ์ถ้า ฉันใส่หนึ่งในเป็น input?
ใช่
มันจะบอกคุณว่ามันไม่ได้ใช้เวลา จำนวนสองครั้งใช่ไหม
เพราะมันจะตีกรณีแรกที่ มันจะไม่ทำลายและมันจะตก
ผ่านไปยังกรณีที่สอง
คำถามใด ๆ เกี่ยวกับที่
>> ROB: คุณมีคำถามอื่นได้หรือไม่
>> JOSEPH: ตกลงเย็น
ขวาทั้งหมด
จึงมีบางสิ่งบางอย่างที่เราเรียกว่า ประกอบ ternary ซึ่งเป็นพื้น
ไวยากรณ์ทางเลือกในการทำ หากแล้วอื่น
และมันช่วยให้คุณทำมันทั้งหมดในหนึ่งบรรทัด
ดังนั้นในโปรแกรมนี้โดยเฉพาะอย่างยิ่ง ฉันขอให้ผู้ใช้สำหรับ n
และถ้า n คือมากกว่า 100 ผมจะบอก พวกเขาพวกเขาเลือกจำนวนมาก
อื่นผมบอกพวกเขาว่าพวกเขา เลือกจำนวนน้อย
>> ดังนั้นเราจึงสามารถใช้ไวยากรณ์นานมากนี้ สตริง, S, และจากนั้นตรวจสอบว่า n คือ
มากกว่า 100 และกำหนด มันตาม
แต่เราสามารถทำให้รัดกุมมากขึ้น โดยใช้ไวยากรณ์ดำเนินการนี​​้ประกอบไปด้วย
ที่เกี่ยวข้องกับคำถาม เครื่องหมายและลำไส้ใหญ่
ดังนั้นเครื่องหมายคำถามเป็นหลัก ถามคำถามใช่ไหม
>> ROB: บางทีซูมในที่
>> JOSEPH: ใช่
จุดดี
ดังนั้นนี่คือผู้ประกอบ ternary
ครั้งแรกที่ฉันถามคำถามที่ เป็น n มากกว่า 100?
หากเป็นเช่นนั้นแล้วฉันจะรันเป็นอันดับแรก ส่วนหนึ่งก่อนที่จะลำไส้ใหญ่
ถ้ามันไม่ได้แล้วฉันจะดำเนินการ ส่วนที่สองหลังจากลำไส้ใหญ่
ดังนั้นถ้า n คือมากกว่า 100, แล้วก็หยิบสูงและทำให้
ที่เป็นสตริง
ถ้า n เป็นน้อยกว่า 100 ก็หยิบต่ำ แล้วทำให้ที่เป็นสตริง
เพื่อที่จะรวมตัวก้อนใหญ่นี้ ลงไปเพียงว่าหนึ่งบรรทัด
>> ลำโพง 5: ที่เป็นที่นิยม
>> JOSEPH: ใช่มันค่อนข้างเป็นที่นิยมสำหรับ สิ่งที่เป็นหลักที่คุณต้องการ
ไม่ได้รับมอบหมายตาม การเรียงลำดับของเงื่อนไขบางอย่าง
และในกรณีนี้เรากำลังพยายาม การกำหนดค่าให้กับสตริง
มันไม่ได้ -
ผมคิดว่าผมไม่ชอบจริงๆ ในกรณีอื่น ๆ
แต่มันก็มีประโยชน์โดยเฉพาะอย่างยิ่ง สำหรับการกำหนดนี้
>> ROB: นั่นเป็นรูปแบบทั่วไปสวย ที่คุณมีตัวแปรบางอย่างที่
คุณกำลังจะบอกว่าถ้าสิ่งที่ตั้ง ตัวแปรนี้จะเป็นหนึ่งในค่า; อื่นตั้ง
ตัวแปรนี้เป็นค่าอื่น
และนั่นคือสถานการณ์ ที่ใช้ประกอบ
>> JOSEPH: และคุณประหยัด จำนวนมากของสายใช่ไหม
และมันก็ทำให้รหัสของคุณเนื้อหา นิด ๆ หน่อย ๆ อ่านได้มากขึ้น
มีคำถาม?
>> ลำโพง 6: สำหรับ ternary คุณสามารถไป สตริงเท่ากับวินาที, เครื่องหมายคำถาม?
แล้วคุณอาจจะมีการพูด ห้าตัวเลือกที่แตกต่างกัน
และขึ้นอยู่กับสิ่งที่จำนวนของ n เป็นคุณจะเลือกอย่างใดอย่างหนึ่งเหล่านั้นหรือไม่
>> JOSEPH: ดังนั้นคำถามคือจะมี การเรียงลำดับของรูปแบบที่คุณสามารถทำสตริง
s เท่ากับ n แล้​​วมีมากกว่าสอง ตัวเลือกหลังจากเครื่องหมายคำถามที่
และคำตอบง่ายๆคือไม่มีมีไม่ จริงๆเป็นวิธีที่ดีที่จะทำว่าถ้า
คุณต้องการที่จะรัง ternary หลาย ผู้ประกอบการภายในของกันและกัน
>> คุณสามารถทำเช่น n มากกว่า 100 เครื่องหมายคำถามและจากนั้นอีก
ternary ประกอบ n มากกว่า 50, เครื่องหมายคำถามและรังมันเป็นแบบนั้น
แต่ในสถานการณ์ที่เป็นรหัสของคุณ รับชนิดของและอ่านไม่ได้ยุ่ง
และมันอาจจะดีกว่าที่จะไปที่ ถ้างบ / อื่น ๆ ที่จุดที่
>> ROB: และยังเป็นที่ทราบด้าน, PHP ไม่ถูกต้องดำเนินการประกอบ
ผู้ประกอบการดังกล่าวว่า ternaries ซ้อนกัน ไม่ได้ทำงานตามที่ควรจะเป็น
>> JOSEPH: ใช่
ดังนั้นจึงได้รับนิด ๆ หน่อย ๆ สับสน โดยเฉพาะอย่างยิ่งเมื่อคุณไป
กับภาษาที่แตกต่างกัน
>> ROB: มันพอที่จะทำให้เกิดความสับสน ภาษาที่ไม่ถูกต้องเกี่ยวกับเรื่องนี้
>> JOSEPH: ดังนั้นจริงเพียงเพื่อชี้แจง ไม่ทุกคนรู้ว่าสิ่งที่
% s ไม่ไปที่นี่?
คำถามใด ๆ เกี่ยวกับที่
ผมคิดว่าเพียงสำหรับกล้อง% s โดยทั่วไปจะช่วยให้เราใส่ตัวยึด
สตริง
แล้วที่ท้ายที่สุดเราระบุว่า ตัวแปรที่เราต้องการจะใส่ลงไปในนี้
ถือเป็นสถานที่ของ
ดังนั้นโดยทั่วไปจะใช้เวลา s และมันทำให้มันอยู่ในที่นี่
แล้วมันจะพิมพ์ออกมาคุณเลือก สูงหรือคุณเลือกจำนวนน้อย
ตกลง
>> ดังนั้นลูปช่วยให้คุณสามารถดำเนินการสิ่ง ในวงกลมใช่ไหม
คุณอาจได้พบนี้ใน เริ่มต้นในรูปแบบของลูปตลอดกาล
หรือทำซ้ำจนกว่าจะถึงหรือทำซ้ำโดยเฉพาะอย่างยิ่ง จำนวนครั้ง
ดังนั้นทำไมนี้เป็นสิ่งที่ดีสำหรับเรา
ดีใน C สมมติว่าเรามีนี้ เพลงดำเนินการใน Scratch ที่
ร้องเพลงนี้เป็นเพลง ที่ไม่สิ้นสุด
มันก็ไปบนและบนและ อยู่กับคุณตลอดและตลอดไป
ดีคุณไม่สามารถจริงๆทำให้โปรแกรม ที่มีจำนวนอนันต์ของ printf
งบในนั้นใช่ไหม
>> ดังนั้นในสถานการณ์นี้โดยเฉพาะอย่างยิ่งวิธีหนึ่ง ที่คุณสามารถทำให้งานนี้และ
เพื่อให้พิมพ์ตลอดไปคือการ แทนการใช้ห่วงในขณะที่
ดังนั้นห่วงในขณะที่จะดำเนินการสิ่งที่ ในร่างกายของทั้งสองวงเล็บที่
เป็นไปตามสิ่งที่ เงื่อนไขเป็น
ดังนั้นในตัวอย่างนี้โดยเฉพาะอย่างยิ่งก่อนถ้า เราต้องการที่จะพิมพ์นี้ตลอดไปสิ่งที่
เราอาจจะทำอย่างไร
ดีแน่ใจใช่ไหม
>> ดังนั้นการเรียงลำดับของความคิดรวม บางนิพจน์บูลีน
พร้อมกับวง
และเราได้เรียนรู้เกี่ยวกับการบูลีน การแสดงก่อนหน้านี้
ดังนั้นเมื่อใดก็ตามที่สภาพภายในของ ในขณะที่ยังคงเป็นจริงวงนี้
จะรันบนและบนและบน
และในกรณีนี้ถ้าเราเพียงแค่จัดหา ด้วยความจริงนี้ทำให้ไม่มีที่สิ้นสุด
วงเพลงที่พิมพ์บนและบน และในขณะที่เราต้องการก่อนที่จะได้โดยไม่ต้อง
มีโปรแกรมที่มีไม่มีที่สิ้นสุด จำนวนงบ printf ซึ่งเป็น
เป็นไปไม่ได้
>> ดังนั้นร้องขอมากขึ้นแม้ว่า คุณสามารถใช้กับ
ตัวแปรและเงื่อนไข
ดังนั้นสมมติว่าเราต้องการที่จะทำซ้ำ วลีวงแหวนทั้งหมด 10 ครั้ง
ดังนั้นสิ่งที่คุณสามารถทำอะไรกับห่วงในขณะที่เป็น คุณสามารถเริ่มต้นเคาน์เตอร์
นอกตัวแปรของ ในขณะที่ห่วงถึง 10
โดยทั่วไปแล้วทุกครั้งที่คุณไป ผ่านห่วงในขณะที่คุณพิมพ์ออกมา
คำสั่งแล้วคุณจะลดลง เคาน์เตอร์ตัวแปรจนถึงที่สิ้นสุด
ในบางจุดเมื่อเราลบฉันพอ ครั้งที่ 1 ครั้งจากที่ผมพอ -
และเพียงแค่ชี้แจงฉันลบลบ หมายความว่าฉันเท่ากับฉันลบ 1
>> ที่พื้นจะนำฉันลงไป จุดที่เมื่อฉันตีศูนย์นี้
สภาพไม่เป็นความจริงและ เพื่อที่จะออกจากออกจากวง
ดังนั้นวงแหวนทั้งหมดเพียงพิมพ์ 10 ครั้ง
คำถามใด ๆ เกี่ยวกับวงในขณะที่?
ตกลง
>> จึงมีวิธีที่เราสามารถทำได้คือสิ่งที่เราเพียงแค่ ทำในลักษณะที่รัดกุมมากขึ้นด้วย
สิ่งที่เราเรียกสำหรับวง
ดังนั้นสำหรับวงประกอบด้วย เริ่มต้นสภาพและ
การปรับปรุงเช่นเดียวกับที่เราเคยมีมาก่อน ในวงในขณะนี้
ดังนั้นลองมาดู
ในวงในขณะนี้เรามี เริ่มต้นแล้วเรามี
สภาพที่เราตรวจสอบ
แล้วเรามีการปรับปรุง ขั้นตอนที่ด้านบน
>> ด้วยห่วงเพราะว่านี้โดยทั่วไปจะใช้เวลา สามสิ่งเหล่านี้และมันควบแน่น
ลงไปหนึ่งบรรทัด
ดังนั้นสิ่งแรกที่มันไม่ใน สำหรับวงคือการเริ่มต้น
แล้วคุณทำเครื่องหมายแล้ว ที่คุณทำเงื่อนไขซึ่งเป็นฉัน
มากกว่าศูนย์จะไปที่นั่น แล้วขั้นตอนการปรับปรุง
ดังนั้นนี้ได้รับการดำเนินการใน ปลายสุดของร่างกายห่วง
ดังนั้นทั้งสองโปรแกรมเป็น เทียบเท่าหลัก
>> คำถามใด?
ดังนั้นสิ่งที่เป็นหนึ่งในความแตกต่าง ระหว่างสองเหล่านี้หรือไม่
ทุกคนสามารถชี้ออกมาได้
มันอาจจะมีบิตที่ละเอียดอ่อน
มันเป็นเพียงความแตกต่างที่มีขนาดเล็กมาก
ใช่?
>> ลำโพง 5: คุณจะไม่สามารถที่จะใช้ ฉันตัวแปรนอกวงสำหรับ
[ไม่ได้ยิน]?
>> JOSEPH: แน่นอน
ดังนั้นนี่คือสิ่งที่เราจะได้รับ ภายหลังเรียกว่าขอบเขตตัวแปร
แต่เป็นหลักนี้ int ชีวิตของฉัน นอกวงในขณะนี้
ดังนั้นเมื่อห่วงในขณะนี้จะทำ รันฉันจะสามารถที่จะใช้ผมมา
ในโปรแกรม
>> ในขณะที่มีนี้สำหรับวง, int นี้ฉัน มีการกำหนดขอบเขตภายในของนี้สำหรับวง
และเพราะมันเป็นภายในของส่วนนี้ ของวงสำหรับการที่จะเริ่มต้น
ที่วงเล็บและสิ้นสุดด้วย วงเล็บปีกกาที่นั่น
อะไรที่ประกาศภายใน ที่นี่จะไม่สามารถใช้นอก
ดังนั้นถ้าผมพยายามที่จะใช้ฉันออกไปข้างนอกก็จะ บอกฉันไม่ได้ประกาศสัญลักษณ์
และเป็นหลักที่ผมจะไม่ สามารถที่จะใช้มัน
>> ROB: และดี 10 ปีที่แล้วใน แท้จริงทุกกรณีวงเล็บปีกกาเป็น
สิ่งที่คุณใช้ในการตรวจสอบ ขอบเขตของตัวแปร
ดังนั้นในมี int ฉันเท่ากับ 10 มีการประกาศภายในนี้
ชุดของวงเล็บปีกกา
และอื่น ๆ จากนั้นตราบใดที่คุณพยายามที่จะใช้ฉัน ก่อนที่จะวงเล็บปีกกานี้ก็ปรับ
คุณอาจพบเมื่อคุณพิมพ์ให้คุณ เห็นรีบรีบคว่ำเท่ากับ c99
>> เพื่อให้เป็นรุ่นที่ใหม่กว่าของ C ที่ GCC ได้ดำเนินการที่ยังช่วยให้
ทางลัดนี้
เพื่อใช้ในการนี​​้ไม่ได้รับอนุญาตในซีและ คุณสามารถดูว่าทำไมเพราะ int นี้
ผมอยู่นอกวงเล็บปีกกานี้ แต่ ก็ยังคงพิจารณาที่จะอยู่ใน
ขอบเขตของวงเล็บปีกกาเหล่านี้
แต่นี้เป็นสิ่งที่สะดวกมาก และดังนั้นจึงเป็นส่วนขยายที่ดี
>> JOSEPH: คำถามที่ใด?
ตกลง
ดังนั้นสิ่งที่มีประโยชน์มากขึ้นคือบางครั้ง คุณต้องการที่เรียงลำดับของชีวิตชีวาใน
วงของคุณใช่ไหม
คุณไม่ต้องการเพียงแค่จำเป็นต้องพิมพ์ ทั้งหมดวงแหวนทุกเวลาที่คุณ
ต้องการที่จะนับถอยหลังจาก 10 หรือบางสิ่งบางอย่าง
และเพื่อให้คุณสามารถใช้ตัวแปรเคาน์เตอร์ ภายในวงที่ดี
และในกรณีนี้โปรแกรมนี้เพียงแค่ นับลงจาก 10 ตลอดทางลง
และสิ่งที่ไม่ได้ไม่พิมพ์?
มันไม่ได้พิมพ์เป็นศูนย์ ที่เหมาะสมเพราะเมื่อ -
ใช่มันยังไม่พิมพ์ 11
>> ดังนั้นจึงไม่พิมพ์เป็นศูนย์เพราะเมื่อ ฉันเป็นศูนย์จำมันประเมิน
สภาพก่อนที่จะไปอยู่กับ ที่จะดำเนินการร่างห่วง
และเมื่อฉันเป็นศูนย์นี้เป็นเท็จดังนั้น มันก็ไม่ได้พิมพ์ออกมานับถอยหลัง
ศูนย์ก็แค่พิมพ์ออกนับ ลดลง 10 ทั้งหมดทางลงไปที่ 1
ถ้าเราอยากให้มันเป็นจริงที่จะพิมพ์เป็นศูนย์ แล้วเราจะใส่เครื่องหมายเท่ากับ
หลังจากนี้เครื่องหมายมากกว่า
ตกลง
>> ดังนั้นวิธีหนึ่งที่จะทำเข้าตรวจสอบที่ คือเมื่อคุณขอให้ผู้ที่จะทำ
บางสิ่งบางอย่างที่คุณต้องการที่จะทำให้แน่ใจว่าพวกเขา ปฏิบัติตามคำแนะนำของคุณคือการใช้
ในขณะที่ห่วงใช่มั้ย?
ดังนั้นในกรณีนี้โดยเฉพาะอย่างยิ่งที่ฉันขอ สำหรับจำนวนบวกและแล้วฉัน
รอสำหรับการป้อนข้อมูล
>> แล้วฉันจะตรวจสอบในขณะที่การเข้าเป็น น้อยกว่าศูนย์ให้ขอให้พวกเขา
ดังนั้นตราบใดที่พวกเขาให้ฉันหมายเลข ที่ไม่ได้บวกให้ถาม
ให้ถามให้ถาม
แต่สิ่งที่จัดเรียงของแปลกเกี่ยวกับเรื่องนี้
หรือสิ่งที่ดูเหมือนจะไม่เกี่ยวกับการที่ดีที่สุด โครงสร้างนี้ที่นี่?
ใคร?
ใช่?
>> ลำโพง 6: คุณทำซ้ำ การเรียนการสอนครั้งที่สอง
>> JOSEPH ขวา
ดังนั้นเราจึงมีสองงบ printf ที่นี่ใช่ไหม
ดังนั้นไม่มีทางที่เราจะได้รับนี้ก็คือ ลงไปอย่างใดอย่างหนึ่งที่จะทำให้เรา
รหัสง่ายต่อการอ่านและ นิด ๆ หน่อย ๆ สะอาดมากขึ้น
แล้วเราจะได้ไม่ต้อง ได้รับในครั้งที่สองเช่นกัน
และวิธีหนึ่งที่คุณสามารถทำเช่นนี้คือ โดยใช้ห่วงทำ-ในขณะที่
>> และทำห่วง-ในขณะที่เป็นพื้น รูปแบบที่แตกต่างกันของวงในขณะที่
สิ่งที่อยู่ภายในวงเล็บปีกกา ได้รับการดำเนินการอย่างน้อยหนึ่งครั้ง
ดังนั้นในที่นี่ผมประกาศ, int ใส่ออกไปข้างนอกก่อน
แล้วผมก็บอกว่าทำเช่นนี้ การเรียนการสอนในขณะที่นำเข้า
มีค่าน้อยกว่าศูนย์
ดังนั้นจึงนิยมทำครั้งแรก
มันจะดำเนินการอย่างน้อย ครั้งจึงมักจะขอให้ผู้ใช้
สำหรับใส่อย่างน้อยหนึ่งครั้ง
และจากนั้นจะประเมินข้อมูลที่ และมันจะไปในวงกลม
มีคำถาม?
>> ลำโพง 6: มีวิธีที่จะทำมัน [ไม่ได้ยิน] ประเภทเช่นถ้าคุณจะพูดว่า
GetString และคน [ไม่ได้ยิน]
จะมีวิธีการ [ไม่ได้ยิน]
>> JOSEPH: ดังนั้นคำถามคือจะมี วิธีการทำเข้าตรวจสอบกรณีที่ผู้ใช้
ไม่ได้ใส่ในสิทธิ ชนิดของตัวแปร?
ดังนั้นหากเราขอ int และพวกเขา ให้เราสตริงแทน
และฟังก์ชั่นที่เราใช้ สำหรับคุณ GetInt, GetString ในทุก
ฟังก์ชั่นเหล่านั้นพวกเขาเป็นจริงแล้ว จะเรียงลำดับของข้อมูลชนิดพื้นฐานที่
การตรวจสอบภายใต้ประทุน
ดังนั้นถ้าคุณกำลังใช้ฟังก์ชั่นที่เรา ได้มอบให้คุณไม่ได้จริงๆต้อง
>> แต่ถ้าคุณต้องการที่จะดูมากขึ้นเป็นวิธีการ คุณจริงสามารถทำที่คุณสามารถดู
ภายใต้ประทุนที่ไฟล์ I/O--
ไม่ได้ยื่น, ฟังก์ชั่น I / O มาตรฐาน เช่นการอ่านจากอินพุตมาตรฐานและ
ออกมาตรฐาน
และคุณจะได้รับความรู้สึกที่ดี วิธีการที่คุณอาจจะทำอย่างนั้น
>> ROB: หนึ่งในปัญหา แต่เป็นเฉพาะ กับตัวอย่างที่คุณ
กล่าวว่าที่คุณคาดหวังสตริง และฉันป้อน int
วิธีที่คุณจะบอกความแตกต่าง ระหว่างเจตนาที่ต้องการ
สาย 123 เมื่อเทียบกับที่ต้องการ int 123?
ดังนั้นสตริงก็สวยมากไม่มี การตรวจสอบเป็นเพียงสิ่งที่พวกเขา
เข้ามาคุณจะตีความ เป็นสตริง
>> int จะง่ายเพราะไม่ว่า ข้อมูลที่คุณจะใช้จากผู้ใช้ที่คุณมี
เสมอการสตริง
และเพื่อให้สตริงที่คุณสามารถแล้ว ตรวจสอบมีทั้งหมดของเหล่านี้
หลักตัวเลขจริง
>> JOSEPH: OK
คำถามใด ๆ เกี่ยวกับการทำวง-ในขณะที่?
>> ROB: Oh, และนี้ยัง -
จะกลับไปขอบเขตค่อนข้างทั่วไป ความผิดพลาดที่พยายามที่จะใช้บางท้องถิ่น
ตัวแปรจากภายในนี้ทำ-ในขณะที่ วงในของสภาพนี้
และอันที่จริงถ้าเราเพียงแค่ได้กำจัด นี้และกล่าวว่าเข้า int เท่ากับ
GetInt แล้วคอมไพเลอร์จะตะโกนใส่ เราเพราะท่านไม่อยู่
นอกขอบเขตของ วงเล็บปีกกาเหล่านี้
>> JOSEPH: และที่ว่าทำไมเรา ต้องการผู้เล่นตัวจริงที่นี่
ตกลง
เพื่อให้คุณยังสามารถแยกออกจาก วงแรกถ้าคุณต้องการที่จะ
ดังนั้นนี้เป็นวิธีที่แตกต่างกันของ การดำเนินการเพียงแค่สิ่งที่เราดำเนินการ
และแทนการใช้เงื่อนไข ในวงเล็บที่เรากำลังใช้
ถ้ามีคำสั่งภายในของร่างกาย ของวงที่ต้องทำ-ในขณะที่
>> และโดยทั่วไปเมื่อเข้าเป็นที่สุด มากกว่าศูนย์เราจะ
แยกออกจากวง
และเพื่อให้เราจะไปทั้งหมด ทางลงที่นี่
และคุณจะเห็นว่าจะนี้ อาจจะเป็นที่ต้องการในเรื่องนี้
สถานการณ์เพราะมันเล็ก ๆ น้อย ๆ ทำความสะอาดบิตและน้อย
บิตง่ายต่อการอ่าน
ขณะนี้คุณเรียงลำดับของ มีสายพิเศษอยู่ในนั้น
มันก็แค่นิด ๆ หน่อย ๆ ไม่สวยงามเท่า, ผมคิดว่าในความรู้สึก
มีคำถาม?
>> ลำโพง 4: จะทำลายเพียง แต่ได้รับ คุณออกจากหนึ่งชุดของการจัดฟัน
>> JOSEPH ขวา
ดังนั้นคำถามคือจะทำลายเพียง รับคุณออกจากหนึ่งในวง?
และคำตอบคือใช่
ดังนั้นถ้าคุณได้ซ้อนกันสำหรับลูปสำหรับ ตัวอย่างเช่นถ้าฉันมีสำหรับฉัน int เท่ากับ 0
จนถึง 10 แล้วสำหรับ int J เท่ากับ 0 จนถึง 10 ถ้าผมแยกออกจากด้านใน
วงก็ยังจะไป ห่วงด้านนอก
ดังนั้นมันจะเก็บที่มีประสิทธิภาพ การดำเนินงานที่อยู่ข้างนอก
คำถามใด ๆ เกี่ยวกับที่
ใช่?
>> ลำโพง 5: ทำลาย แต่เพียงฟังก์ชั่น วงเล็บปีกกาเพื่อไม่ให้คนอื่น ๆ
งบ?
[ไม่ได้ยิน]
>> JOSEPH: ดังนั้นคำถามคือจะทำลาย ฟังก์ชั่นสำหรับลูปเป็นนอกคอก
งบอื่น ๆ เช่นถ้า?
และใช่เป็นกรณีที่เพราะ คุณกำลังทำลายออกจากวงขวา
ในความรู้สึก
>> ROB: ในส่วนใหญ่ของกรณีก็ นี้เป็นประเภทถ้าบางสิ่งบางอย่าง
แล้วหยุดพัก
ดังนั้นคุณจึงไม่ต้องแบ่งที่จะนำไปใช้กับ ถ้าที่ห่อรอบ
และยังเป็นไม่มากของห่วง แต่จำไว้ว่ายังมีสวิทช์
แตกออกโดยแบ่ง
เราเห็นการแบ่งการใช้ ด้วยสวิทช์ก่อน
>> JOSEPH: และคุณยังสามารถใช้พวกเขา ในขณะที่ลูปและสำหรับลูป
คำถามใด?
ตกลง
ขึ้นดังนั้นต่อไปคือฟังก์ชั่น
ดังนั้นคุณอาจมีการใช้อย่างใดอย่างหนึ่งเหล่านี้ BYOB บล็อกในโครงการ Scratch ของคุณ
และนี้โดยทั่วไปจะช่วยให้ คุณสามารถกำหนดชุดของ
คำแนะนำที่จะปฏิบัติตาม
>> และสิ่งที่ฉันหมายความโดยที่เราคิด กลับไปที่คณิตศาสตร์ขวาพีชคณิต
คุณมีสิ่งที่เราเรียกฟังก์ชั่นของ x, ตัวแปรบางอย่างและขอพูดแบบนี้
ฟังก์ชัน f ของ x เท่ากับ x บวก 5
เพื่อให้คุณสามารถคิด f ของ x เป็นสีดำนี้ กล่องที่ใช้เวลา 15 ในแล้ว
ผลิต 20
>> ดังนั้นโดยทั่วไปฟังก์ชั่นเป็น บางสิ่งบางอย่างที่ต้องใช้ปัจจัยการผลิตบางส่วนและ
แล้วก่อให้เกิดผลบางอย่าง
และเหตุผลที่ฟังก์ชั่นที่ดี?
พวกเขากำลังดีสำหรับจำนวนเหตุผล
ดังนั้นคนที่ไม่ต้องการที่จะใช้แทง สิ่งที่องค์กรหมายถึง
ในแง่ของเหตุผลที่ฟังก์ชั่นที่เป็นประโยชน์หรือไม่
ใช่?
>> ลำโพง 4: มันทำให้คุณ รหัสที่อ่านได้มากขึ้น
>> JOSEPH ขวา
ดังนั้นหนึ่งในสิ่งที่เป็นก็จะทำให้ รหัสของคุณอ่านได้มากขึ้นใช่ไหม
แทนที่จะต้องเช่น int x เท่ากับ x ครั้ง x x ครั้งผมสามารถมีก้อนของ x
ซึ่งเป็นอะไรที่สามารถอ่านได้และอื่น ๆ การอ่านเข้าใจ
>> องค์กรยังอยู่ในแง่ของการ แยกรหัสของคุณลงในการจัดการ
ส่วนเพื่อให้แทนการพยายามที่จะ ดำเนินการนี​​้ทั้งหมดในส่วนหนึ่งยาว
ในหลักคุณสามารถเรียงลำดับของการแยกขึ้น เป็นเหมือนตกลงให้เขียนฟังก์ชั่น
ลูกบาศก์สิ่งที่ให้เขียน ทำงานตารางบางสิ่งบางอย่าง
วิธีการที่คุณสามารถแยกมันออกเป็นขนาดเล็ก ชิ้นส่วนเล็ก ๆ น้อย ๆ ที่คุณสามารถจัดการได้
ตรงข้ามกับการพยายามที่จะแก้ไขปัญหา เป็นปัญหาใหญ่ทั้งหมดในครั้งเดียว
>> ROB: หรือแม้แต่เล็ก ๆ ชิ้นส่วนเล็ก ๆ ที่ คุณและคู่สามารถจัดการได้
>> JOSEPH: ใช่
>> ROB: ดังนั้นแทนที่จะทั้งสอง คุณพยายามที่จะปลูกฝังหนึ่ง
ฟังก์ชั่นในเวลาเดียวกัน
>> JOSEPH: เข้าใจง่าย
ทุกคนต้องการที่จะคาดเดาได้หรือไม่
ใช่?
>> ลำโพง 5: ซ้ำอีก
>> JOSEPH ขวา
ดังนั้นสิ่งหนึ่งที่คุณสามารถทำอะไรกับ ทำให้เข้าใจง่ายก็คือว่ามันเกี่ยวกับการจัดเรียงของ
สายเดียวกับการใช้งานอีกครั้งก็คือ เมื่อฉันเขียนฟังก์ชันลูกบาศก์ฉันสามารถ
เพียงแค่ใช้ว่ามีมากกว่าและเหนือและมากกว่า อีกครั้งในโปรแกรมของฉันแทนการพิมพ์
ครั้ง x x x ครั้งกว่าและ ครั้งแล้วครั้งเล่า
และความเรียบง่ายที่นี่ก็เป็นเพียงแค่ หมายความว่ามันจะทำให้การจัดเรียงของรหัสของคุณ
ง่ายต่อการแก้ปัญหาเมื่อคุณแยก นี้ขึ้นเป็นฟังก์ชั่น
แล้วเพราะคุณสามารถ จำกัด วงที่ ปัญหาของคุณเรียงลำดับของการเป็น
คำถามใด?
>> ดังนั้นความคิดที่เป็นนามธรรมอื่นใช่ไหม
กล่องดำนี้
เช่นเดียวกับที่คุณรู้ว่าสิ่งที่ GetInt ไม่ จะได้รับการป้อนข้อมูลจากผู้ใช้หรือไม่
เราไม่ได้บอกคุณจริงๆใช่มั้ย
ทั้งหมดที่เราได้บอกคุณเป็น GetInt ไม่ ว่าสิ่งที่มันบอกว่ามันไม่
ดังนั้นแม้ว่าเราจะไม่บอกคุณว่า มันทำงานคุณยังรู้
>> ดังนั้นในกรณีนี้โดยเฉพาะอย่างยิ่งนี้ ฟังก์ชั่นที่ไม่สี่เท่า
สิ่งที่แตกต่างที่จะนำเข้า การผลิตการส่งออก
และคุณสามารถสี่เท่าจำนวน โดยคูณด้วยสี่
หรือคุณสามารถสิ่งที่เราเรียก บิตเปลี่ยนมันสอง
และเราจะครอบคลุมถึงนี้ นิด ๆ หน่อย ๆ ในภายหลัง
และมีความจำเป็นที่จะต้องรู้วิธีนี้ ฟังก์ชั่นใช้งานได้จริงตราบใดที่มัน
ทำงานตามที่ระบุไว้
>> ดังนั้นภายใต้ประทุน, ฉันอาจจะ เหมือนกลับมาครั้งเข้า
แปดหารสอง
และคุณจะไม่ทราบใช่ไหม
ทั้งหมดที่คุณต้องรู้คือ มันไม่สิ่งที่กล่าวว่า
เพื่อให้เป็นสิ่งที่มีประโยชน์ เกี่ยวกับสิ่งที่เป็นนามธรรม
>> และอีกสิ่งหนึ่งที่เป็นประเภทของความคิดนี้ ของ localizing รหัสของคุณให้เป็นหนึ่งใน
ส่วนโดยเฉพาะอย่างยิ่ง
ดังนั้นถ้าคุณมีปัญหาที่คุณทำไม่ได้ ต้องไปทั่วรหัสของคุณพยายาม
ในการแก้ไขปัญหาที่เป็น
ดังนั้นในกรณีนี้ผมดำเนินการ ผิดลูกบาศก์
ผมคิดว่าเป็นก้อนคูณ โดยสาม
>> ดังนั้นในกรณีนี้เป็นโปรแกรมหนึ่ง ที่เพิ่งได้คูณด้วยสาม
ทุกที่
และมีโปรแกรมที่มีอีก ก้อนปัจจัยออกไปในฟังก์ชั่น
และอื่น ๆ ตอนนี้ถ้าผมต้องการที่จะแก้ไขความผิดพลาดของฉัน ที่นี่ผมมีการแก้ไขบรรทัดเดียวทุก
ของรหัสในโปรแกรมนี้
ในขณะที่ในทางกลับกันถ้าผมใช้ ฟังก์ชั่นที่ผมจะต้องเปลี่ยน
สิ่งที่เป็นความผิดในสถานที่หนึ่ง
>> ดังนั้นในด้านวิทยาศาสตร์คอมพิวเตอร์เรา เรียกปัจจัยการผลิตและผลผลิต
ปัจจัยการผลิตที่เรียกว่าพารามิเตอร์หรือ ข้อโต้แย้งและผลที่เรียกว่า
ค่าตอบแทน
และเราจะเห็นวิธีการนี​​้จะช่วยให้เราจัดเรียง ของกำหนดฟังก์ชั่นในครั้งที่สอง
ดังนั้นนี่คือความหมายของฟังก์ชั่น เพื่อ Cubing
ดังนั้นจึงจะเข้าแล้ว มันกลับมาที่จำนวนครั้ง
ตัวเองสามครั้ง
เพื่อขอทำลายลงนี้
>> ดังนั้นเราจึงมีส่วนหัวของฟังก์ชั่นที่ โดยทั่วไปประกอบด้วยสามสิ่ง
ดังนั้นเราจึงมีพารามิเตอร์ที่ เป็นที่ผมกล่าวว่าก่อนหน้านี้
ปัจจัยการผลิตในการทำงานนี้
แล้วเราจะให้ฟังก์ชั่นชื่อ
ในกรณีนี้ก็เรียกว่าก้อน
แล้วเราระบุสิ่งที่ประเภท ค่าตอบแทนเ​​ป็น
>> ดังนั้นในกรณีนี้ฟังก์ชั่นที่สามของฉัน จะใช้เวลาในจำนวนเต็มและมันก็ยัง
กลับจำนวนเต็ม
ดังนั้นถ้าผมผ่านในสองสองเป็นจำนวนเต็ม มันกลับแปดกับผมซึ่ง
เป็นจำนวนเต็ม
ดังนั้นกลับชนิดพารามิเตอร์ชื่อ
คำถามที่เกี่ยวกับว่า
>> แล้วค่าตอบแทนที่เป็นจริง ที่ระบุไว้ในตอนท้ายด้วยการบอกว่าการกลับมา
แล้วกลับสิ่งที่ มีค่าตอบแทน
ดังนั้นในกรณีนี้ถ้าเราวางไว้ พร้อมฟังก์ชั่นใช้เวลาใน
พารามิเตอร์ก็เรียกว่าอะไรและ มันกลับเป็นสิ่งที่เป็นประเภท
ที่เราบอกว่ามันเป็นไปได้
คำถามใด?
>> ดังนั้นทำอย่างไรเราใช้ฟังก์ชั่นหรือไม่
ดีที่เราเขียนฟังก์ชั่นแล้ว เราใช้มันในโปรแกรมของเราใช่ไหม
ดังนั้นผมจึงเรียกมันว่าก้อนและ แล้วฉันจะใช้ก้อน
>> แต่สิ่งที่สำคัญที่ควรทราบ คือเรื่องการสั่งซื้อ
ถ้ามีก้อนด้านล่างหลักก็ จะใช้เป็นก้อน
และที่จุดนี้ไม่มีอะไร เรียกว่าก้อนในโปรแกรมและก็
ก็จะเป็นเหมือนผมมี ความคิดว่าเป็นก้อน
>> ดังนั้นมันจะบอกคุณนัย การประกาศของฟังก์ชั่น
นั่นเป็นข้อผิดพลาดที่แสดงขึ้น
และอื่น ๆ ในกรณีนี้ก้อนอยู่ด้านล่าง หลักจึงจะไม่เกิด
รู้เกี่ยวกับมัน
>> ลำโพง 5: ดังนั้นที่สำคัญคือมักจะ ฟังก์ชั่นล่าสุดที่กำหนด?
>> JOSEPH: ดังนั้นคำถามคือ เป็นหลักโดยปกติท​​ี่ผ่านมา
สิ่งที่คุณต้องการกำหนด?
และไม่มี
มันเป็นเพราะเรามักจะชอบหลัก ที่จะเป็นที่ด้านบนขวา
เพราะนั่นคือสิ่งแรกที่คุณ ต้องการโปรแกรมเปิด
โปรแกรมที่จะเห็น
ดังนั้นทำอย่างไรเราแก้ปัญหาของเรานี้ ต้องการหลักที่จะเป็นที่ด้านบน แต่
ฟังก์ชั่นที่เราต้องการเราต้องการให้พวกเขา จะต่ำกว่าหลักยังสามารถที่จะใช้
พวกเขาภายในของหลัก?
>> ดีที่เราใช้สิ่งที่เราเรียก ต้นแบบฟังก์ชั่น
ดังนั้นสิ่งที่ฟังก์ชั่นเป็นหลักต้นแบบ เป็นที่จะต้องใช้สิ่งที่แรก
ลายเซ็นหรือส่วนหัวของฟังก์ชัน ของสิ่งที่เราต้องการที่จะใช้ลง
ที่นี่และเราวางไว้ที่ ด้านบนของโปรแกรม
>> ดังนั้นในกรณีนี้เราบอกว่าดี ต่อมาในโปรแกรมของเราที่เรากำลังจะ
เพื่อให้สัญญาว่าจะดำเนินการนี​​้ ฟังก์ชั่นที่เรียกว่าลูกบาศก์ int ซึ่งจะใช้เวลา
ใส่จำนวนเต็ม
ดังนั้นตอนนี้เพราะที่อยู่เหนือหลัก หลักก็จะบอกว่าโอ้ดี
ต่อมาในโปรแกรมที่เป็นไปได้ มีเพื่อให้สามารถอ้างถึงมันดังนั้นฉันจะ
เพียงแค่ให้มันผ่านไปสำหรับตอนนี้
>> และจากนั้นที่ด้านล่าง เราใช้ก้อน
แล้วที่สำคัญก็จะพูดว่า ดีก็จะเรียงลำดับของการเชื่อมโยง
ทั้งสองสัญลักษณ์ร่วมกัน
และเราจะครอบคลุมสิ่งที่ หมายถึงในภายหลัง
และดังนั้นจึงจะรู้ว่านี่คือ ฟังก์ชั่นที่สามว่ามันควรจะใช้
>> ROB: [ไม่ได้ยิน] เรื่องความต้องการ หลักที่ด้านล่างหรือ
ด้านบนฉันได้เห็นทั้ง
มีสิ่งที่ชอบเพียง จะนำหลักที่ด้านล่าง
แต่เมื่อโครงการได้รับโดยเฉพาะอย่างยิ่ง ใหญ่มักจะอยู่ในหลัก
ไฟล์ทั้งหมดของตัวเอง
และที่จุดนั้นเช่น สาย int จะลูกบาศก์ -
ภายในของ stdio.h เป็นพวง ของสายเช่นเดียวกับ int ที่
สายใส่ก้อน int
>> และเพื่อให้ต้นแบบเหล่านั้นเป็นสิ่งที่คุณ มีแนวโน้มที่จะใส่ลงไปในส่วนหัวของไฟล์ที่
จุดที่มันไม่สำคัญ
ดีก็ไม่สำคัญ
ผู้ที่เสมอไปที่ด้านบน
และหากที่สำคัญคือไม่ได้ไฟล์ทั้งหมดของตัวเองที่ คุณไม่ต้องกังวลเกี่ยวกับการวาง
ต้นแบบการทำงานของแต่ละบุคคล ในแฟ้ม
>> JOSEPH: แล้วเราจะไปที่น้อย บิตต่อมาเมื่อร็อบเริ่มพูด
เกี่ยวกับการรวบรวม
และอื่น ๆ นอกจากนี้ยังมีความแตกต่าง ระหว่างพารามิเตอร์และอาร์กิวเมนต์
และพารามิเตอร์เป็นเพียงสิ่งที่ ที่เราเรียกว่าปัจจัยการผลิตเหล่านี้เมื่อ
เรากำหนดฟังก์ชั่น
และเราเรียกว่าอาร์กิวเมนต์เมื่อเรา จริงผ่านมันในการทำงาน
>> ดังนั้นในกรณีนี้เป็นพารามิเตอร์ ในขณะที่เรากล่าวว่าก่อนที่จะ
และเมื่อเราใช้งานจริงที่นั่น ลูกบาศก์ของ x x แล้วตัวเองเป็น
สิ่งที่เราเรียกการโต้แย้ง กับฟังก์ชั่นก้อน
>> ROB: ดังนั้นข้อโต้แย้งที่เป็นพารามิเตอร์ -
มีความแตกต่างนี้มาก สับสนสลับกัน
ณ จุดนี้ผมก็ชอบอย่างใดอย่างหนึ่ง คำพูดเหล่านั้นว่าเมื่อฉันเห็นมันออกมาใน
ป่าที่ฉันไม่สามารถช่วย แต่ทันที คำถามที่ว่าพวกเขาจะใช้มันใน
บริบทที่ถูกต้องเพราะ ความแตกต่างที่ละเอียดอ่อนพอที่จะเพียงแค่
ทุกคนมีแนวโน้มที่ -
ฉันมักจะบอกว่าการโต้แย้ง โดยไม่คำนึงถึงสิ่งที่ผมหมายถึง
>> JOSEPH: และฟังก์ชั่นยังมีประโยชน์ สำหรับสิ่งที่เราเรียกว่าผลข้างเคียง
ดังนั้นฟังก์ชั่นสามารถใช้ปัจจัยการผลิตที่ไม่มีและ มันยังสามารถผลิตไม่มีผล
ดังนั้นในกรณีนี้โดยเฉพาะอย่างยิ่งผม กำหนดย่อยที่ไม่มี
ค่าตอบแทน
และเพื่อที่จะระบุว่าเราจะใช้ สิ่งที่เราเรียกเป็นโมฆะกว่าที่นี่
และอื่น ๆ ผลข้างเคียงของฟังก์ชั่นนี้ คือว่ามันเป็นเพียงแค่พิมพ์สิ่งที่
ออกไปที่หน้า
มันไม่ได้ใช้เวลาจริงใด ๆ ปัจจัยการผลิตและมันไม่ได้
จริงผลิตออกใด ๆ
>> แต่นี้อาจจะมีประโยชน์ในแง่ที่ ถ้าคุณต้องการที่จะยกตัวอย่างเช่นการแก้ปัญหา
บางสิ่งบางอย่างในโปรแกรมของคุณถ้าคุณต้องการ ที่จะเขียน subroutine น้อยที่
พิมพ์ออกสมมติว่าเนื้อหา ของหน่วยความจำหรือสิ่งที่
และเพื่อให้เกิดผลข้างเคียงเหล่านี้เป็นบางครั้ง ที่มีประโยชน์ที่อยู่นอกบริบท
ของเช่นเดียวกับปัจจัยการผลิตและผลผลิต
คำถามใด?
>> และจะจบส่วนนี้โดยเฉพาะอย่างยิ่ง สิ่งที่ไม่โปรแกรมนี้จะทำอย่างไร
ฉันจะให้พวกคุณสอง วินาทีในการอ่านผ่านมัน
ในระดับพื้นฐานมากสิ่งที่เราต้องการ กล่าวคือการที่จะแลกเปลี่ยนและ y ใช่ไหม
>> ดังนั้นวิธีที่หลายท่านคิดจริง นี้จะสลับ x และ y?
ยกมือของคุณ
ไม่มีใคร
ตกลง
ที่คิดว่ามันจะ ไม่สลับ x และ y?
และผลรวมของที่เป็น ไม่ได้ทั้งห้อง
ดังนั้นบางคนไม่แน่ใจว่า
ตกลง
ที่เหมาะสม
>> เพื่อให้เป็นไปผ่านสิ่งที่เกิดขึ้นเมื่อ คุณจริงเรียกฟังก์ชั่นครั้งแรกใน
เพื่อที่จะตอบคำถามนี้
ดังนั้นนี่คือสิ่งที่หน่วยความจำ การเรียงลำดับของดูเหมือนว่า
นี่คือการจัดเรียงของชอบแบบง่าย หน่วยความจำในสิ่งที่ดูเหมือนว่าเมื่อ
คุณเรียกใช้โปรแกรม
ดังนั้นจึงมีสิ่งที่เรียกว่า กองลงที่นี่และ
สิ่งที่เรียกว่ากอง
และเหล่านี้เติบโตไปสู่ ตรงกลางของหน่วยความจำ
>> ดังนั้นในกรณีนี้โดยเฉพาะอย่างยิ่งเมื่อ คุณเรียกใช้ฟังก์ชันมัน
ได้รับการวางอยู่บนกอง
และแล้วสิ่งที่มีอยู่ในที่ ฟังก์ชั่นยังคงอยู่ในสิ่งที่เราเรียกว่า
กองกรอบการทำงานของ
และเพื่อที่จะได้รับการแสดงที่ดีของ นี้ let's - ตัวอย่างเช่นเรามี
โปรแกรมหลักก่อนหน้านี้
และภายในของหลักที่เราเรียกว่าก้อน
ดังนั้นหลักแรกจะไปในกอง กรอบเพราะฟังก์ชั่นเป็นครั้งแรก
ที่เรียกว่า
>> และจากนั้นเมื่อก้อนที่เรียกว่าภายใน หลักจะได้รับการใส่ที่ด้านบนของหลัก
ภายในของหน่วยความจำ
ดังนั้นสิ่งที่คุณจะสังเกตเห็นที่นี่เป็นก้อนที่ มีพารามิเตอร์ของตัวเองและของ
คนในท้องถิ่นของตัวเอง
ดังนั้นเมื่อคุณจริงผ่านสิ่งที่จะ ฟังก์ชั่นพารามิเตอร์ที่
ได้รับสำเนาของสิ่งที่เป็น ผ่านจากหลัก
>> และการเรียงลำดับของการอธิบายเรื่องนี้ให้ เดินผ่านโปรแกรม
ดังนั้นเราจึงมีกองนี้เป็น เพียงแค่สแต็คส่วน
และสิ่งที่เราทำคือครั้งแรกที่เราเริ่มต้น x และ y เพื่อที่หนึ่งและสอง
ดังนั้นเราจึงมีกล่องเล็ก ๆ น้อย ๆ เหล่านี้
พวกเขากำลังนั่งอยู่ในกองหลัก กรอบในกอง
พวกเขามีหนึ่งและสอง
>> ตอนนี้ที่เราเรียกว่าการแลกเปลี่ยน
สิ่งที่เกิดขึ้นคือเราผ่าน x และ y เป็น การแลกเปลี่ยนและการแลกเปลี่ยนจะสร้างสำเนาของตัวเอง
ของตัวแปรเหล่านั้นไปใช้ภายใน ของกรอบสแต็คของ
ดังนั้นตอนนี้ที่นั่นเราได้ที่ มีค่าที่มี x และข
ซึ่งมีค่าที่ y มี
ดังนั้นหนึ่งสอง
>> และคุณจะสังเกตเห็นว่านี่คือที่แยกต่างหาก จาก x และ y ภายในของหลัก
ดังนั้นตอนนี้เราสร้างชั่วคราว ตัวแปรที่จะมี
เราตั้งค่าเท่ากับ b ดังนั้นจึง การเปลี่ยนแปลง 1-2
และจากนั้นเราจะกำหนด b เท่ากับ กับอุณหภูมิซึ่งเป็นหนึ่งใน
>> แล้วตอนนี้เราออก ฟังก์ชั่นนี้
เมื่อคุณออกจากฟังก์ชั่น กรอบสแต็คที่ได้รับการโผล่ออกกอง
เราเรียกว่าการผลักดัน
คุณผลักดันกรอบกองลงบนสแต็ค และถ้าคุณป๊อปออกกอง
และเพื่อให้สิ่งที่เกิดขึ้นคือทุกอย่างที่ ที่อยู่ในการจัดเรียงกรอบกองเพียง
ขึ้นไปในเปลวไฟ
และอื่น ๆ ที่ไม่มีอยู่
>> แต่เราทำในสิ่งที่สังเกตเห็น
เราไม่เคยเปลี่ยนแปลงจริง ค่าของ x และ y ใช่ไหม
ดังนั้นผู้ที่อยู่ในท้องถิ่นเพื่อหลัก
และโดยผ่านการแลกเปลี่ยนสิ่งที่เป็นเรา จริงไม่เคยเปลี่ยนค่าเหล่านั้น
และสิ่งที่เราจะเรียกสิ่งนี้?
ที่เราเรียกว่าผ่านนี้ด้วยค่า
>> ดังนั้นใน C, เมื่อคุณผ่านสิ่งที่เป็น ฟังก์ชั่นมันผ่านพวกเขาด้วยคุณค่าและ
ทำให้สำเนาของพวกเขาสำหรับ ฟังก์ชั่นการใช้งาน
และเราจะได้เรียนรู้เกี่ยวกับสิ่งที่เรียกว่า ผ่านอ้างอิงในภายหลัง แต่ที่
วิธีการที่คุณสามารถแก้ปัญหานี้
แต่เราจะไม่ต้องกังวลเกี่ยวกับ ที่จนกระทั่งต่อมา
>> ROB: และที่จริงระยะที่ผ่าน โดยการอ้างอิงดังนั้น C ไม่ได้มี
ผ่านโดยอ้างอิง
C เฉพาะได้ผ่านค่า
ไม่ว่าสิ่งที่คุณทำคุณอยู่เสมอ ผ่านสำเนาของบางสิ่งบางอย่าง
มันเป็นเพียงแค่ว่าเหมือนที่ผมกล่าวถึงการจัดเรียงของ ก่อนที่จะมีการชี้
และที่สตริงเป็นจริงเพียงสี่ ไบต์ชี้ไปที่บางแห่งในหน่วยความจำ
>> ดีถ้าฉันมีสายนี้และเป็น บอกฉันว่าเป็นที่ที่สาย -
ดีถ้าฉันมีตัวชี้นี้เพื่อนี้ วางในหน่วยความจำแล้วฉันสามารถผ่าน
สำเนาของตัวชี้ไปยังฟังก์ชั่นนั้นและ ฟังก์ชั่นที่ยังคงรู้ว่าใน
หน่วยความจำมันเป็น
ดังนั้นทั้งสองของตัวชี้เหล่านี้จะชี้ ไปยังสถานที่เดียวกันในหน่วยความจำและ
นั่นคือวิธีที่เราจะสามารถ การปรับเปลี่ยนสิ่งที่เกินกว่า
กรอบสแต็คในปัจจุบัน
>> JOSEPH: คุณต้องการที่จะทำรวบรวม?
>> ROB: ไม่ก็ 05:30
>> JOSEPH: OK
มันเป็น 05:30
ตกลง
ดังนั้นเราจะครอบคลุมการรวบรวมผมคิดว่าใน ส่วนถัดไปหรือส่วนของคุณ
ผู้นำจะที่จุดที่
และ -
>> ROB: คำถามที่ใด?
>> JOSEPH: คำถามที่ใด?
ใช่?
>> ลำโพง 5: การใช้สตริงจาก CS50 ใด ๆ ฟังก์ชั่นที่เราต้องการที่จะใช้สำหรับ
ผู้ที่จะเป็นเช่นฟังก์ชัน C
CS50 ไม่ได้ไปในและ ทำเพิ่มเติมใด ๆ
>> ROB: ที่ถูกต้อง
ใด ๆ ของ C เช่น [ไม่ได้ยิน] คุณ จะใช้ผู้ที่อยู่ในสายของเรา
>> JOSEPH: และสิ่งสุดท้ายที่ฉันต้องการ กล่าวถึงก็คือว่าเรามีคำแนะนำสไตล์
สำหรับชั้นนี้
>> ROB: โอ้ใช่
>> JOSEPH: ดังนั้นถ้าคุณได้มาจาก การเขียนโปรแกรมพื้นหลังก่อนที่คุณ
อาจจะมีการประชุมบางอย่างเมื่อ คุณกำลังเขียนรหัสเช่นวาง
วงเล็บในบรรทัดเดียวกันหรือโดยเฉพาะอย่างยิ่ง วิธีการเยื้อง
หรือการตั้งชื่อตัวแปรของคุณ
ในชั้นนี้เราต้องการที่จะปฏิบัติตาม คู่มือรูปแบบที่เฉพาะเจาะจงเพียงเพราะ
ดีถ้าคุณจะออกไปทำงานใน อุตสาหกรรมที่คุณกำลังจะได้รับการคาดหมายว่า
ที่จะปฏิบัติตามคำแนะนำรูปแบบของ บริษัท ที่คุณไป
>> เช่นตัวอย่างเช่น Facebook ผมคิดว่า มีการเรียงลำดับโดยเฉพาะอย่างยิ่งของการตั้งชื่อ
การประชุม
และมีความแตกต่างระหว่างอูฐ ตัวแปรท่อและเช่นเดียวกับ
แยกพวกเขาด้วยขีด
และผมคิดว่าสำคัญมากที่สุดเช่น ตัวอย่างเช่นการเยื้องขวา
>> เราวงเล็บปีกกาเริ่มต้นที่ เงื่อนไขเป็นและพวกเขา
อยู่ในบรรทัดถัดไป
และเรายังใส่วงเล็บปีกกาใน ถึงแม้ว่ามันจะเป็นเพียงหนึ่งบรรทัด
และหลายครั้งมีวิธีที่จะทำ มันที่คุณสามารถออกจากการจัดฟันเหล่านี้
ออกจะเป็นเพียงหนึ่งบรรทัด ภายใต้คำสั่งถ้า
แต่ในชั้นนี้เราต้องการที่จะปฏิบัติตาม คู่มือรูปแบบที่เฉพาะเจาะจงเพียงเพื่อให้คุณได้รับ
ที่ใช้ในการเรียงลำดับของสิ่งที่
>> ROB: ใช่และสไตล์ 50 เป็นไปได้ บังคับใช้คู่มือรูปแบบนี้และเรากำลัง
จะใช้รูปแบบ 50 เกรดรหัสของคุณ
จึงทำให้สิ่งที่ง่ายสำหรับเราและ หวังว่าไม่ควรจะทำสิ่งที่
มากยิ่งสำหรับคุณได้รับ รูปแบบที่เป็นมาตรฐานไม่ควรที่
ที่ไม่สมจริง
>> JOSEPH: และสุดท้ายที่จะหารูปแบบ คู่มือไป manual.cs50.net/style
และใช่
>> ลำโพง 4: คุณจะไปบังคับใช้ ตัวอักษรใดต่อบรรทัด
>> ROB: ใช่
>> JOSEPH: ขออภัยครับ
>> ROB: นั่นเป็นเหมือนหนึ่งในคนเดียว
ณ จุดนี้ผมตกลง 120
ฉันตกลงกับการพูด 120 ตัวอักษรต่อบรรทัด
ผมเข้าใจว่ามีการ จำกัด บางอย่าง
ผมคิดว่า 80 จะมีขนาดเล็ก แต่ เรากำลังบังคับมัน
>> JOSEPH: ส่วนตัวผมคิดว่ามี C, 80 ตัวอักษรก็โอเคมากขึ้น
เมื่อคุณเริ่มได้รับที่อื่น ๆ ภาษาเช่น JavaScript และ PHP, ไม่
ดังนั้นเหตุผลที่จะ จำกัด เพียงแค่ มันถึง 80 ตัวอักษร
ตกลง
ดีที่เป็นส่วนสุด
ไม่มีใครต้องการขนม?
>> ลำโพง 4: ใช่