ปล้นสลิง: นี่คือ ส่วนที่สะดวกสบายมากขึ้น แต่นั่นไม่ได้หมายความว่าถ้าคุณ รู้สึกว่าคุณไม่ได้สะดวกสบายมากขึ้น คุณจะได้เรียนรู้สิ่งที่นี่ จึงขอเริ่มต้น คุณมีสไลด์ จะเป็นสิ่งที่เหมาะสม ฉันจะเพียงแค่ใช้มันตอนนี้? เปลี่ยนแล็ปท็อป 

ALLISON: คุณไม่ต้องการที่จะ แนะนำตัวเอง, ร็อบ? 

ปล้นสลิง: โอ้ฉันร็อบ ปีนี้เป็นปีที่ห้า TF-ing ของฉัน CS50 

GABRIEL: ผมกาเบรียล ฉัน TF หัวหน้า CS50 ผม TF ปีที่แล้วและปีนี้ ALLISON: และฉันอลิสันและนี่ เป็นปีที่สองของฉัน TF-ing CS50 

ปล้นสลิงสิทธิทั้งหมดดังนั้น สิ่งนี้ด้านซ้าย หวังว่าคุณเคยเห็นมาก่อน ถ้าไม่ได้เพราะคุณ ดาวน์โหลดได้ด้วยตัวคุณเอง คุณควรจะได้เห็นมันในการบรรยาย ดังนั้นนี่คือเครื่อง CS50 และเขา ได้บางส่วนของรายละเอียดของมัน ในการบรรยาย แต่โดยทั่วไปก็เพียงคุณ ใช้ในการดำเนินงาน ระบบปฏิบัติการของคุณภายใน ระบบเพื่อให้เราสามารถให้คุณ โปรแกรมโดยไม่จำเป็น กังวลโอ้นี้ จะไปทำงานกับทั้ง Windows และ Mac หรือถ้าบางท่าน อยู่แล้วโดยใช้ลินุกซ์, ลินุกซ์ ก็ควรเพียงเพื่อ จะเล่นร่วมกัน ข้อมูลเพื่อให้ทุกคนมี สภาพแวดล้อมที่แน่นอนเดียวกัน 

ดังนั้นถ้าคุณมีไม่ได้ ดาวน์โหลดนี้แล้ว คุณควรจะดาวน์โหลดมันเพราะคุณ จะต้องได้สำหรับปัญหาที่กำหนด และมันก็เป็นสองกิกะไบต์ ดาวน์โหลดดังนั้นจึงอาจใช้เวลาสักครู่ ที่ฮาร์วาร์มันจะไปได้อย่างรวดเร็ว ดังนั้นเครื่อง CS50 

ขณะนี้อยู่ในจุดเริ่มต้นที่เรากำลังจะไป พูดคุยเกี่ยวกับเพียงพวงของบรรทัดคำสั่ง สิ่งที่และอื่น ๆ โดยที่ผมหมายถึงการทำงาน ในสภาพแวดล้อมนี้น้อยกว่าที่นี่ และสังเกตเห็นทุกสิ่ง ผมบอกว่าที่นี่ตอนนี้ กำลังจะไปทำงานถ้าคุณอยู่ภายใน ขั้วภายในของเครื่องใช้ไฟฟ้า, หรือถ้าคุณเป็นภายในของ หน้าต่าง terminal Gedit ภายในของเครื่องใช้ไฟฟ้า ดังนั้นสภาพแวดล้อมเหล่านี้จะเหมือนกัน 

แต่ฉันจะไปเส้นทางที่สาม และประกาศลงที่นี่ ที่อยู่ IP เล็ก ๆ น้อย ๆ ที่นี่ ดังนั้นคุณจึงไม่ต้อง ทำแบบนี้ แต่ไอพีนี้ address-- ตอนนี้ถ้า I-- ยกเว้น มันถูกบล็อกโดยสิ่งนี้ ตกลงเพื่อที่อยู่ IP กว่าใน terminal ตรงนี้เพื่อให้สถานีนี้กว่า ที่นี่เป็นขั้วใน Mac ของฉัน ดังนั้นนี่คือวิธีการนี​​้ไม่มี ที่เกี่ยวข้องกับเครื่องเลย และถ้าคุณอยู่ใน Windows แล้วคุณ จะต้องดาวน์โหลดบางสิ่งบางอย่าง เฉพาะสำหรับการนี​​้โดยเฉพาะ คนมักใช้สีโป๊ว, P-U-T-T-Y 

ดังนั้นสิ่งที่ผมจะทำคือพิมพ์ SSH แล้วว่าที่อยู่ไอพี ดี jharvard ที่อยู่ IP ดังนั้น 192.168.24.220 ข้อความนี้น่ากลัวไม่สนใจมัน เพียงแค่พิมพ์ใช่ นี้เป็น CS50 ในกล่อง ขอรหัสผ่านของคุณ 

และอื่น ๆ ในหลายบริบทเหล่านี้ที่ ขอรหัสผ่าน [ไม่ได้ยิน] เรามีคำถามจำนวนมากที่ มันบอกว่ามันไม่จริงพิมพ์ มันไม่ได้แสดงให้เห็นว่าตัวละครของ รหัสผ่านที่คุณพิมพ์ถ้ามีอะไร สำหรับคุณลักษณะการรักษาความปลอดภัยเพราะถ้า ใครบางคนกำลังมองข้ามไหล่ของคุณ และพวกเขาเห็นดาว ดาวแล้วพวกเขาก็ รู้ว่ารหัสผ่านของคุณ เป็นสี่ตัวอักษร ดังนั้นความคิดที่จะถาม คุณใส่รหัสผ่านของคุณพิมพ์ มันไม่ได้จะแสดง คุณตัวอักษร, แต่มันจริงยอมรับพวกเขา ในกรณีนี้ทุกครั้งที่คุณใด ๆ เคยเห็นพร้อมรหัสผ่าน จัดการกับเครื่องใช้ไฟฟ้า, รหัสผ่านจะเป็นสีแดงเข้ม ดังนั้นสีแดงเข้ม 

และตอนนี้ที่นี่ที่อยู่ภายในนี้ หน้าต่างที่อยู่ใน Mac ของฉัน ฉันกำลังโดยทั่วไปมี มุมมองที่แน่นอนเดียวกัน ขณะที่ด้านในของอาคาร ในเครื่อง ดังนั้นคุณจึงไม่ต้องทำเช่นนี้ คุณสามารถทำทุกสิ่งที่คุณ ต้องการภายในของเครื่องใช้ไฟฟ้า ผมแทบจะไม่เคยทำจริง อะไรในเครื่อง ฉันมักจะลดที่และตอนนี้ ฉัน SSH ทำงานเข้าไปในเครื่อง 

ถ้ามีอะไรถ้าคุณ มีคอมพิวเตอร์ช้าลง คุณอาจจะเห็นความแตกต่าง ผมทำเช่นนี้เพราะฉันชอบ หน้าต่าง terminal นี้ มันมีคุณสมบัติบางอย่างเช่น ฉันสามารถแยกหน้าต่าง และตอนนี้ฉันสามารถ SSH ใน ผ่านเครื่อง ฉันมีสอง SSH ที่เกิดขึ้นในครั้งเดียว หากคอมพิวเตอร์ของคุณช้าโดยเฉพาะอย่างยิ่ง และที่คุณกำลังทำงานอยู่ในเครื่องใช้ไฟฟ้า, และสิ่งนี้คือความ laggy จริงๆสิ่งที่ มีแนวโน้มที่จะได้เร็วขึ้นมาก ถ้าคุณ SSH-ED ใน แต่อย่างอื่นที่คุณสามารถทำงานทางใดทางหนึ่ง 

ผู้ชม: อะไร SSH หมายความว่าอย่างไร 

ปล้นสลิง: เปลือกหอยการรักษาความปลอดภัย สิ่งที่ต้องการนั้น สิ่งที่ไม่ SSH หมายความว่าอย่างไร GABRIEL: เปลือกปลอดภัย ALLISON: มันเป็นเพียงเปลือกที่มีความปลอดภัย ปล้นสลิง: เปลือกปลอดภัย มันเป็นโปรโตคอลที่ you-- มัน โปรโตคอลการรักษาความปลอดภัยการเข้ารหัสเพื่อให้ คนไม่สามารถสอดแนมเครือข่ายและ เห็นสิ่งที่คุณกำลังจะบอกอะไร คุณ SSH-ED เพื่อ และในความเป็นจริงในสมัย​​ก่อน วัน CS50 ดังนั้นในปี 2009 เมื่อผมยังเป็นนักศึกษาใหม่ในแบบที่ว่า คุณทำงานใน CS50 ชุดปัญหา เป็นคุณ SSH-ED ไปยังเซิร์ฟเวอร์บาง ที่เราให้คุณเข้าถึง, และคุณทำงานอยู่ที่นั่น เพื่อให้คุณไม่ได้มีนี้ เครื่องใช้แบบกราฟิก คุณไม่ได้มี Gedit คุณไม่ได้มีสิ่งเหล่านี้ว่า สายตาคุณสามารถจุดและคลิกที่ คุณต้องทำงานในอินเตอร์เฟซนี้ ฉันชอบที่จะทำงานในอินเตอร์เฟซนี้ เพื่อเป็นส่วนหนึ่งของสิ่งที่เรากำลังจะไป จะเป็นไปได้มากกว่าตอนนี้ มีพวงของ คำสั่งที่คุณควร เริ่มต้นที่จะได้รับคุ้นเคยกับการเป็น คุณไปพร้อมในหลักสูตร และตรงไปตรงมาเมื่อคุณ ได้รับใช้พวกเขามัน มากได้เร็วขึ้นเพื่อ ทำงานในสภาพแวดล้อมเช่นนี้ กว่าก็คือการทำงานร่วมกับการค้นหา, ลากและคลิกสิ่งที่ 

ดังนั้นที่นี่เรามี ตอนนี้ฉัน SSH-ED ในและอื่น ๆ เริ่มต้น location-- คุณ เห็นบางส่วนของคำสั่งเหล่านี้ในชั้นเรียน แต่เราจะไปกว่าทั้งหมดของพวกเขาอีกครั้ง สถานที่ตั้งค่าเริ่มต้นที่เรากำลัง คือไดเรกทอรีบ้าน และไดเรกทอรีเพียง คำสำหรับโฟลเดอร์อื่น ดังนั้นเราจึงอยู่ในไดเรกทอรีบ้าน พิมพ์ LS, รายการไฟล์ ในไดเรกทอรีนี้ เห็นได้ชัดว่าผมสร้าง blah.c ก่อนหน้านี้ ดังนั้นเราจึงมีไดเรกทอรีพื้นที่ทำงาน คุณสังเกตเห็นเน้นไวยากรณ์? ไฮไลต์สีฟ้าอ่อนแสดงให้เห็น ไดเรกทอรีและสีขาวตรง แสดงให้เห็นเพียงแค่ไฟล์ธรรมดา ดังนั้นจึงมีความเป็นไปได้ บางสีอื่น ๆ ที่คุณเห็น แฟ้มที่ปฏิบัติการได้อาจจะ เป็นสีเขียวหรือสิ่งที่ต้องการ OK เพื่อให้เราอยู่ในไดเรกทอรีบ้าน 

ตอนนี้ถ้าผมต้องการที่จะไปลงที่แตกต่างกัน ไดเรกทอรี cd เป็นคำสั่งที่ฉันต้องการ ดังนั้นเปลี่ยนไดเรกทอรีและจากนั้นคุณ ส่งชื่อของไดเรกทอรี ที่คุณต้องการที่จะไปสู่ ดังนั้นที่นี่เรามีสี่ตัวเลือก ฉันสามารถเข้าไปดาวน์โหลดและตอนนี้เราจะเห็น นี่มันได้รับการปรับปรุงสอดนี้ ที่จะบอกว่าผมอยู่ใน ~ / ดาวน์โหลด 

ดังนั้นสิ่งที่เป็นตัวหนอน? มันเป็นชวเลข ไดเรกทอรีบ้านของคุณ ดังนั้นเกือบทุกอย่างที่คุณทำจะไป จะด้วยความเคารพไปยังไดเรกทอรีบ้านของคุณ และรหัสผ่านเป็นเพียงคำสั่ง ฉันจะใช้ครั้งเดียวในปีที่ เพียงแค่พิมพ์ไดเรกทอรีปัจจุบัน และเพื่อให้คุณดูที่นี่ว่า ~ / ดาวน์โหลดจริงๆแก้ไข / home / jharvard / ดาวน์โหลด ดังนั้น / home / jharvard เป็นไดเรกทอรีบ้านของฉัน 

ดังนั้นเราจึงสามารถ cd dot dot ตอนนี้จุดจุดเป็นไดเรกทอรีพิเศษที่ มักจะหมายถึงไดเรกทอรีหนึ่งขึ้น ดังนั้นถ้าผมอยู่ใน ~ / ดาวน์โหลดแล้วจุด cd จุดที่จะนำมาให้ฉันตัวหนอน เราทำอะไรคิดว่า cd dot dot จะนำมาให้ผมตอนนี้หรือไม่ มันจะนำผม / home ตัวหนอนดังนั้นโดยสมุดงานพิมพ์ ผมอยู่ในตอนนี้ / home / jharvard หนึ่งในไดเรคทอขึ้นจากที่ ตอนนี้มันบอกว่าที่นี่ / home 

ตอนนี้ cd dot dot ตอนนี้ผมอยู่ในไดเรกทอรีราก และคุณไม่สามารถทำมันได้อีกครั้ง คุณก็จะอยู่ใน ไดเรกทอรีรากตลอดไป ไดเรกทอรีรากมีทั้งกลุ่ม สิ่งที่ถ้าคุณต้องการที่จะมองเข้าไปใน, ที่คุณสามารถ ตัวอย่างเช่นถ้าผมไป ลงในถังที่มี ไบนารีเหล่านี้ทั้งหมดเช่น LS, และแผ่นซีดีและทุกสิ่งเหล่านั้น ดังนั้นคำสั่งเหล่านี้จำเป็นที่จะต้อง อยู่ที่ไหนสักแห่งในระบบ และมันอยู่ในไดเรกทอรี / bin แต่เกือบทุกอย่างที่คุณทำคือ จะเป็นจากไดเรกทอรีที่บ้านของคุณ และซีดีโดยไม่มีข้อโต้แย้งใด ๆ คุณสามารถพูด cd ~ ไม่จำเป็นต้อง แผ่นซีดีที่เป็นไปที่จะนำคุณ กลับไปยังไดเรกทอรีบ้านของคุณ 

หนึ่งสุดท้าย cd - จะนำคุณกลับไป ไดเรกทอรีสุดท้ายที่คุณอยู่ใน ดังนั้นฉันเพิ่ง cd'd สองครั้งในแถวดังนั้นฉัน ไดเรกทอรีสุดท้ายคือไดเรกทอรีบ้าน ถ้าฉันไปที่จะเฉือนถังและตอนนี้ ให้ขึ้นและลงของผู้ใช้ไป ส่วนแบ่งผู้ใช้งาน ลองไปให้ผู้อื่น ตอนนี้ฉันอยู่ในขณะนี้ส่วนแบ่งผู้ใช้ ซีดี - กลับในถัง ดังนั้นนี้ได้รับประโยชน์อย่างยิ่ง เมื่อคุณ have-- และมันจะสลับ ดังนั้นส่วนแบ่งผู้ใช้กลับถังถังหุ้น 

ดังนั้นนี้ได้รับประโยชน์ คุณอาจพบว่าตัวเองมีจำนวนมาก หลายไดเรกทอรีที่ซ้อนกันหลาย ๆ และคุณต้องการที่จะทำบางสิ่งบางอย่าง อย่างรวดเร็วจริงในไดเรกทอรีบน คุณไปยังไดเรกทอรีที่ให้ การเปลี่ยนแปลงและสิ่งที่ต้องการนั้น และตอนนี้คุณต้องการที่จะไป กลับไปที่คุณเป็น cd - ฉันมักจะผิดหวัง เมื่อฉันเกิดขึ้นที่จะไป เพื่อว่าไดเรกทอรีฉัน อยากจะทำในการทำงาน ฉันมักจะได้รับความผิดหวังเมื่อฉันได้ มันอยู่ในขั้นตอนที่สองแทนหนึ่งขั้นตอน เพราะนั่นหมายความว่าแผ่นซีดีที่ - เป็นไปได้ ที่จะนำเข้ามาในสถานที่กลาง แทนการที่ฉันต้องการที่จะไป 

ดังนั้นเราจะเห็นไฟล์ทั้งหมดรายการ เรารู้วิธีที่จะได้รับรอบเพื่อให้ห่างไกล ดังนั้นตอนนี้ขอพูดคุยเกี่ยวกับการแก้ไขไฟล์ ดังนั้นในหลักสูตรนี้คุณเกือบ คาดว่าจะใช้ Gedit ถ้าคุณต้องการคุณสามารถใช้ขั้นตอนต่อไป และเริ่มต้นการเรียนรู้ข้อความบรรทัดคำสั่ง บรรณาธิการ ดังนั้นตัวเลือกต่างๆที่มีอยู่ 

และคนที่อาจจะ จะมีความเกี่ยวข้องกับคุณ เรามีนาโนเป็นกลุ่มและ Emacs ดังนั้นนาโนเป็นผู้เริ่มต้น แก้ไขข้อความบรรทัดคำสั่ง ดังนั้นนาโนให้เป็นไปใน blah.c ฉันสร้างขึ้นก่อนหน้านี้ มันก็แค่นี้ไฟล์มาตรฐาน C และคุณจะเห็นทั้งกลุ่มของสิ่งที่ เกิดขึ้นที่ด้านล่างของหน้าจอ และ blah.c เห็นได้ชัด มีรหัส C นี้ 

ดังนั้นในการแก้ไขนี้โดยเฉพาะอย่างยิ่ง สิ่งที่มันบอกว่าที่ bottom-- ตอนนี้สัญลักษณ์เครื่องหมายนี้ เราเห็นนี้ ^ G, X ^, ^ O เพื่อที่ว่าในเกือบทุก บริบทที่คุณเห็น คุณอาจเห็นสัญลักษณ์เครื่องหมายว่าใน สถานที่อื่น ๆ ออนไลน์ในกองมากเกิน, สิ่งที่ต้องการที่ มันมักจะหมายถึงการควบคุม เพื่อที่จะออกจากฉันต้องการจะทำ การควบคุมการควบคุมเอ็กซ์เอ็กซ์ออก และผมสามารถใช้ลูกศรของฉัน ศรเพื่อย้ายไปรอบ ๆ ขอให้สังเกตฉันไม่สามารถชี้และคลิกอย่างง่ายดาย คุณต้องใช้ลูกศรของคุณ ศรเพื่อย้ายไปรอบ ๆ อาจจะมีการตั้งค่า การชี้และคลิก 

แต่ขอทำการเปลี่ยนแปลงบางอย่าง ตอนนี้การควบคุม X เพื่อไปออก มันจะบอกว่าประหยัดบัฟเฟอร์แก้ไข ตอนนี้พร้อมและสำหรับใช่ n ไม่ ควบคุม C สำหรับยกเลิก ฉันจะบอกว่าใช่ ชื่อไฟล์ที่จะเขียน เริ่มต้นเป็นไฟล์ ว่ามันอยู่แล้ว กด Enter ตกลง ตอนนี้ผมได้แก้ไขเพียงไฟล์นั้น บันทึกมันและมันจะมีการเปลี่ยนแปลง 

ดังนั้นนาโนเป็นที่ง่ายที่สุด แก้ไขข้อความที่ได้รับใช้ ทางเลือกที่มีความเป็นกลุ่มและ Emacs เหล่านี้คือการแก้ไขข้อความระดับที่สูงขึ้น ที่มีการเรียนรู้ที่สูงชันมาก ดังนั้นการตั้งค่าส่วนตัวของฉันคือเป็นกลุ่ม และมีความหลากหลายของตัวเลือก และเมื่อคุณได้รับใช้ กับมันคุณจะไม่ ต้องการที่จะไปที่อื่น ๆ แก้ไขข้อความเพราะคุณเพียงแค่ มีหลายสิ่งหลายอย่าง ที่สามารถใช้ได้ในเหล่านี้ แต่มันต้องใช้จริงๆ เวลานานในการเรียนรู้ ดังนั้นบางทีคุณเพียงต้องการที่จะบังคับ ด้วยตัวคุณเองได้ในขณะนี้ที่จะได้รับใช้มัน แต่ผมจะบอกว่ามันคุ้มค่า แต่มันเป็นเรื่องยากที่ 

แล้ว Emacs ฉันมักจะต่อสู้ใน Emacs เพราะ ฉันรู้วิธีที่จะทำอะไรอย่าง เห็นได้ชัดว่า Emacs ไม่ได้โดยปริยาย ติดตั้งอยู่บนเครื่อง เราอาจจะเพิ่มว่า การติดตั้งค่าเริ่มต้น เมื่อคุณเรียนรู้อย่างใดอย่างหนึ่ง เป็นกลุ่มหรือ Emacs มี ไม่มีเหตุผลที่น่าสนใจที่จะ เคยเรียนรู้อื่น ๆ แต่มันเป็นรูปแบบที่แตกต่างกันอย่างสิ้นเชิง ตกลงเพื่อให้เป็นไฟล์ข้อความแก้ไข 

ผู้ชม: หากคุณติดอยู่ ในกลุ่มในขณะนี้อย่างไร we-- 

ปล้นสลิง: มี หลายรูปแบบในที่เป็นกลุ่ม และมีทั้ง บทเรียนในการเรียนรู้เป็นกลุ่ม ดังนั้นหากคุณเกิดขึ้นเป็น ในโหมดแทรกในการสั่งซื้อ พิมพ์ข้อความที่คุณสามารถ ใส่ที่ในรูปแบบต่างๆ แต่ฉันเป็นวิธีการที่คุณจะได้รับเข้าสู่โหมดแทรก หรือได้รับจากการพิเศษใด ๆ โหมดว่าคุณอยู่ในเพียงการหลบหนี และคุณก็ทุบตีหนีที่จะได้รับ ออกจากโหมดซ้อนใด ๆ ในของคุณ เพียงแค่ตกลงตอนนี้ฉันกลับมาในโหมดปกติ 

และอื่น ๆ ในโหมดปกติลำไส้ใหญ่ คุณเห็นมันปรากฏที่ด้านล่าง แล้ว Q ดังนั้น Q จะเลิกถ้าคุณได้ทำการเปลี่ยนแปลง, ซึ่ง I-- มีฉันทำให้มีการเปลี่ยนแปลง? ฉันได้ทำให้มีการเปลี่ยนแปลงที่เห็นได้ชัด ดังนั้นถ้าคุณได้ทำการเปลี่ยนแปลงก็จะ ว่าคุณสามารถใส่เครื่องหมายอัศเจรีย์ ฉันจะเรียกมันว่าปัง เพื่อให้คุณสามารถนำบ้านที่จะเพียงแค่ เลิกโดยไม่ต้องทำอะไร หรือ WQ ลำไส้ใหญ่จะบันทึกและออกจาก ดังนั้น W โดยทั่วไปจะเขียน เพื่อเขียนไฟล์ ฉันสามารถเขียนและเลิก หรือคุณอาจจะมีเพียงแค่ สแลม QX, Q ปังเพียง ที่จะได้รับออกจากที่นั่นโดยไม่คำนึงถึง การเปลี่ยนแปลงใด ๆ ที่คุณได้ทำ 

ขวาทั้งหมดดังนั้นตอนนี้ขอ go-- เราสามารถสร้างไฟล์ ขอเริ่มต้นการลบไฟล์ และฉันก็จะโยนในที่เดียว คำสั่งใหม่อย่างรวดเร็วสัมผัส foo ดังนั้นสัมผัส สัมผัสบาร์ สัมผัส baz หาก LS ฉันตอนนี้ที่เราเห็น ว่าไฟล์เหล่านั้นอยู่ พวกเขากำลังว่างเปล่า ดังนั้นการสัมผัสเป็นเพียงเรื่องง่าย วิธีการหนึ่ง [ไม่ได้ยิน] สองทางเทคนิคเพียงเพื่อให้รัฐ มันปรับปรุง timestamps ดังนั้นไฟล์ใด ๆ ที่คุณสร้างได้ เวลาที่เกี่ยวข้องกับมัน ดังนั้น baz ถูกสร้างขึ้นบน 14 กันยายนที่ 16:21 ก็ตอนนี้ 16:22 ดังนั้นหาก ฉันสัมผัส baz อีกครั้งเรา เห็น baz ที่ถูกที่สุด แก้ไขเมื่อเร็ว ๆ นี้ที่ 16:22 แต่อย่างอื่นผมแทบจะไม่เคย ดู timestamps ในแฟ้ม เพื่อสัมผัสที่นี่ผมเพียงแค่ใช้ มันสามารถสร้างไฟล์บางอย่างรวดเร็ว 

สิทธิทั้งหมดดังนั้นตอนนี้ RM เป็น คำสั่งที่เราดูแลเกี่ยวกับที่นี่ และเราสามารถ rm Boo พูดเอาปกติ Boo ไฟล์ที่ว่างเปล่า และเราสามารถพิมพ์ Y และตอนนี้ก็ลบ RM baz ลบไฟล์ที่ว่างเปล่าปกติ baz และชนิด n ไม่ ตอนนี้ก็ไม่ได้เอาออก ดังนั้นบาร์และ baz ยังคงมีอยู่ ฟูหายไป GABRIEL: เก็บการพูดคุย ปล้นสลิง: Great ดังนั้นข้อความที่น่ารำคาญ นี่เอา empty-- ปกติ สิ่งที่คุณทำลงไปที่นั่น? ลบไฟล์ที่ว่างเปล่าปกติ ดังนั้นถ้าเราไม่ต้องการที่จะ ใส่ใจโดยข้อความนั้น เราสามารถโยนใน -f นี้ ธงและเพื่อให้มีผลบังคับใช้ และตอนนี้ถ้าผม rm -f ก็จะไม่เกิด บอกว่าคุณต้องการที่จะลบไฟล์นี้ มันก็จะทำมัน และ LS, ฉันไม่เห็นแถบมีอีกต่อไป 

ตอนนี้ที่เป็นอาจ คำสั่งที่เป็นอันตราย มันมีแนวโน้มที่จะไม่เลวร้ายเกินไป เราจะกลับมาในครั้งที่สองว่า ก็จะได้รับอันตรายจริงๆ และให้สร้างไดเรกทอรีชั่วคราวบางส่วน mkdir, คำสั่งอื่น ดังนั้น mkdir เป็นคำสั่ง ที่ทำให้ไดเรกทอรี และตอนนี้โดย LS เราเห็นแสงนี้ดี สีฟ้าเน้นไดเรกทอรีชั่วคราว ฉันสามารถ cd ลงชั่วคราว และฉันสามารถ mkdir foo cd เป็น foo บาร์ mkdir แผ่นซีดีลงในแถบ 

ดังนั้นเราจึงเห็นว่าเราสามารถได้รับ ในบางลึกสวยทำรัง ตอนนี้วิธีที่ฉันจะลบไดเรกทอรี? rmdir ดังนั้นถ้าฉันเพียงแค่พยายามที่จะตรง RM, เหมือนที่เราทำกับไฟล์ปกติ บาร์ RM เป็นไปได้ บอกว่าไม่สามารถลบบาร์ มันเป็นไดเรกทอรี มีคำสั่งพิเศษสำหรับการเป็น ลบไดเรกทอรีชนิดของ บาร์ดังนั้น rmdir ตอนนี้บาร์หายไป 

ตกลงดังนั้น rmdir ผมสวยมากไม่เคยใช้ เหตุผล being-- ตอนนี้ขอ ทำให้บาร์ไฟล์ปกติท​​ี่นี่ Boo ดังนั้น rmdir rmdir ล้มเหลวในการลบ foo ไดเรกทอรีไม่ว่างเปล่า ดังนั้นคุณจึงไม่สามารถใช้ลบผบบน ไดเรกทอรีที่มีสิ่งที่อยู่ในนั้น 

เพื่อให้คุณมีตัวเลือกบางอย่าง คุณสามารถไปลงในไดเรกทอรีที่เอา ทุกอย่างด้วยตนเองและจากนั้นออกมา และ rmdir ไดเรกทอรี ที่เห็นได้ชัดว่าเสียงที่น่ารำคาญ สิ่งที่ถ้ามีหลายพัน ไฟล์ในที่นั่น? ดีคุณสามารถ rm * เราจะพูดถึงในครั้งที่สอง * โดยทั่วไปจะหมายถึงทุกสิ่งที่ แต่ยังดีกว่า -r RM เพื่อ ดังนั้น RM -r-- ในจำนวนมาก บริบท, -r หมายความซ้ำ ซึ่งเราจะพูดคุยเกี่ยวกับสิ่งที่ หมายถึงการเวียนเกิดในหลายสัปดาห์ แต่โดยทั่วไปหมายถึงการสำรวจ ความสมบูรณ์ของไดเรกทอรีนี้ และเอาทุกอย่าง 

foo -r ดังนั้น RM จะไปพูด ลงไป foo Directory? ใช่ ลบ foo แฟ้มปกติ / บาร์ว่างเปล่า? ใช่ ลบ foo Directory? ใช่ ดังนั้นตอนนี้ foo และทุกอย่าง ภายในจะได้รับการออก 

ตอนนี้ที่จะได้รับที่น่ารำคาญโดยเฉพาะอย่างยิ่ง when-- ให้สัมผัสที่ 1 สัมผัสที่ 2 ให้สัมผัส 3 อาจมีทั้งกลุ่มของไฟล์ ถ้าผมต้องการผมสามารถสร้าง หลายพันไฟล์ที่นี่ และ foo -r RM เป็นไป เป็นที่น่ารำคาญสวย ใช่ใช่ใช่ใช่ใช่ใช่ กับไฟล์มากขึ้นคุณ อย่างรวดเร็วดูว่าหลายต่อหลายครั้ง ผมจะต้องพิมพ์ใช่ ดีเราเพิ่งเห็นก่อนที่จะวิธีการที่เราสามารถ กำจัดจำเป็นต้องพิมพ์ใช่ -f cd foo ดังนั้น mkdir สัมผัส foo 1 2 3 ตกลง foo -rf RM เพื่อให้เป็นไป สุ่มสี่สุ่มห้าลบ foo ทั้งหมด ไม่มีการแจ้ง ไม่มีอะไร ฟูหายไป 

ดังนั้นผมจึงมีแนวโน้มที่จะใช้นี้ คำสั่งตลอดเวลา ที่กล่าวว่ามันเป็น คำสั่งอันตรายมาก เพราะถ้าผมทำสิ่งที่ชอบ นี้ก็จะไม่ได้แจ้งให้คุณ มันจะหายไป และมันเกิดขึ้นค่อนข้างบ่อย และแม้จะอยู่ในระดับที่สูงขึ้นหลักสูตร CS บางครั้งเราจะเห็น บางสิ่งบางอย่างที่มีคน กล่าวว่าฉันตั้งใจของเรา RM RF-ED บ้านของฉัน ไดเรกทอรีและทั้งหมดของ P ชุดของฉันหายไป และมันทำลายล้าง แต่ไม่มีถังขยะสามารถ ไม่มีไม่มีอะไร สำหรับคุณที่จะดึง มันหายไปเพียงแค่ ยิ่งแย่ลงจะเป็น สิ่งที่ต้องการ RM -rf / ดังนั้นเราก็พูดคุยกัน ไดเรกทอรีรากที่ มันถือทั้งหมดของ ไฟล์ในระบบของคุณ สิ่งที่มักจะได้รับยุ่งสวย เมื่อคุณเอาสิ่งที่ต้องการ LS, และแผ่นซีดีและทุกคน 

ผู้ชม: อะไรคือความแตกต่าง ระหว่าง RM, RF และ RM * ปล้นสลิงดังนั้น RM * - 

ALLISON: คำถามคือสิ่งที่เป็น ความแตกต่างระหว่าง RM, RF และ RM * 

ปล้นสลิงดังนั้น RM * ดาวในวิธีการทั่วไปของ เนื้อหาของไดเรกทอรีนี้ พยายามที่จะคิดว่าคนอื่น ๆ วิธีการในการแสดงดาว ดีจริงดาราทั่วไป หมายถึงการตรงกับรูปแบบใด ๆ ดังนั้นถ้าผมมีไฟล์ที่เรียกว่า dog1, สัมผัส dog2 สัมผัส CAT1 สัมผัส CAT2 ดังนั้นคำสั่ง ls * 1 จะพิมพ์ CAT1 และ dog1 เพราะดาวที่สามารถจะเต็มไป ใน with-- หนึ่งต้องการที่จะมี แต่ดาวสามารถเป็นได้ทั้งแมวหรือสุนัข มันเป็นป่าการ์ด นั่นเป็นคำที่ฉันกำลังมองหา บัตร Wild หรือฉันจะ ls สุนัข * และ ฉันได้เห็น dog1, dog2 เพื่อให้ผู้มีรายชื่อไฟล์ ที่ตรงกับรูปแบบเฉพาะที่ คุณสามารถใช้คำสั่ง ls ในทางนี้ 

ls * ดาวตรงกับอะไร ดังนั้นมันจะพิมพ์ทั้งหมดของ เนื้อหาของไดเรกทอรีนี้ ตั้งแต่ทั้งหมดของพวกเขาตรงกับ มันจะไม่พิมพ์อะไร ในไดเรกทอรีระดับบน ถ้าผมมีไดเรกทอรีย่อย foo และ สัมผัส 1 2 3-- ดังนั้นตอนนี้ถ้า RM * ดาว ลบ CAT1, CAT2, dog1, dog2 ไม่สามารถลบ foo มันเป็นไดเรกทอรี 

ดังนั้นดาวขยายไปยังทุก แฟ้มในไดเรกทอรี ดังนั้นในทางเทคนิค RM * เป็นเหมือนว่า RM CAT1, CAT2, dog1, dog2, foo ในขณะที่ -rf RM, เทคนิคดาวจะ ประสบความสำเร็จในสิ่งที่เราต้องการ แต่ RM -rf-- ถ้าผมออกจากนี้ไป ไดเรกทอรีชั่วคราว -rf RM, ที่จะไปลงในอุณหภูมิและ ซ้ำลบทุกอย่าง 

ดังนั้นดาวจะแยกในการที่ว่า เป็นที่เข้าใจคูณเพื่อสิ่งนี้ ที่ฉันทำงานในสิ่งนี้ ที่กระตุ้นให้ฉันสำหรับคำสั่ง แล้วดำเนินการและการทำ พวกเขาผมเรียกนี้เปลือกของฉัน และเพื่อให้เปลือกนี้เป็นตัวโปรแกรม และถ้าผมต้องการผม สามารถทำงานในทุบตี / bin / เปลือกที่เรียกว่าทุบตี และตอนนี้เราสังเกตเห็นบางสิ่งบางอย่าง มีการเปลี่ยนแปลงเล็กน้อย และนั่นเป็นเพราะการตั้งค่าของฉัน เปลือกมีความแตกต่างกันบ้าง 

แต่ตอนนี้ฉันทำงานในทางเทคนิค เปลือกภายในเปลือกเดิมของฉัน และฉันสามารถออกจากเปลือกที่และตอนนี้ ฉันกลับไปยังเปลือกระดับบนสุดของฉัน วัตถุประสงค์ของการพูด ว่าเป็นเท่าไหร่ดาว ดังนั้นดาวเป็นสิ่งที่ ที่เข้าใจกันโดยทุบตี ดังนั้น RM -rf ธง -rf เป็น ที่เข้าใจกันโดยเพียง RM มันรู้ว่าเมื่อคุณ ผ่าน -rf ที่คุณ อยากให้มันซ้ำลบ ไฟล์ทั้งหมดโดยไม่ต้องแจ้ง ดาวเป็นสิ่งที่เข้าใจได้ โดยการทุบตีว่าเมื่อคุณพูด ​​RM * ทุบตีไม่ได้จะบอกว่า เฮ้ RM * เอาดาว ทุบตีจะไปพูด RM * ลบ CAT1, CAT2, dog1, dog2 มันจะโดยอัตโนมัติเพื่อขยาย ไฟล์ทั้งหมดในไดเรกทอรี 

และในทำนองเดียวกันก็เป็นอีกหนึ่งตัวหนอน สัญลักษณ์ที่ทุบตีเข้าใจ เมื่อคุณพูด ​​cd ~ ทุบตีขยาย ที่ไดเรกทอรีบ้านของคุณ คำถามอื่น ๆ เพื่อให้ห่างไกล? ตกลงดังนั้นเรากำลังจะเริ่มต้นไปอย่างรวดเร็ว 

เสร็จสิ้นแท็บ เพียงเพื่อโยนมันออกมี ผู้คนจำนวนมากไม่ได้ ตระหนักถึงนี้มีอยู่ ดังนั้นถ้าผมพิมพ์ cd Dow ผม ต้องการที่จะไปสู่​​การดาวน์โหลด ฉันไม่จำเป็นต้องพิมพ์ nloads ผมก็สามารถกด Tab ดังนั้นจึงตระหนักดีว่า Dow เป็นคำนำหน้าว่า ไม่ตรงกับสิ่งที่ อื่นในไดเรกทอรีนี้ จึงจะเสร็จสมบูรณ์ที่สำหรับคุณ ตอนนี้ฉันสามารถป้อน 

ฉันยังทำซ้ำ foo ดังนั้น mkdir ให้เป็นไปใน foo บาร์ mkdir ดังนั้นจะกลับไปที่บ้านของฉัน ไดเรกทอรีที่ฉันสามารถดูการดาวน์โหลด ตอนนี้แท็บตีอีกครั้ง โดยอัตโนมัติจะกรอกข้อมูลลงใน foo มันเป็นไดเรกทอรีเท่านั้น แท็บตีอีกครั้งโดยอัตโนมัติ จะไปเติมในแถบ ดังนั้นตอนนี้ผมอยู่ใน (~ ดาวน์โหลด / foo / บาร์) 

ดังนั้นความสำเร็จแท็บนี้ เมื่อใดก็ตามที่ฉันได้ไปเวลาทำงาน และฉันยืนอยู่เหนือ ไหล่ของใครบางคน และพวกเขากำลังจะ RM D-O-W-N-L-O-A-D-S, ฉันกำลังจะตาย แท็บเพียงแค่แท็บแท็บแท็บ แท็บเพื่อนำมาใช้แน่นอน และในทำนองเดียวกันขึ้นและ ลงผู้คนจำนวนมาก เพียงที่เกิดขึ้นกับ ไม่เคยมีการตีขึ้นและลง มันจะผ่านไปก่อนหน้านี้ คำสั่งดังนั้นหากคุณเพียงแค่วิ่งบางสิ่งบางอย่าง และคุณต้องการที่จะใช้มันอีกครั้ง เพียงแค่ถือขึ้นจนกว่าคุณจะได้รับมัน ตกลง 

เพื่อให้รวดเร็วบางสิ่งอื่น ๆ ลองกลับไปชั่วคราว ลองสร้างไฟล์บาง ดังนั้นในที่นี่ฉันแค่ จะไปรายการคำบางคำ สุนัข, แมว, แมว Let 's ทำสุนัขปลา ดังนั้นตอนนี้ตัวแทนเป็นอย่างมาก คำสั่งที่มีประโยชน์ที่คุณ ใช้ในการค้นหาตลอด ไฟล์ข้อความโดยเฉพาะอย่างยิ่ง และในทางเทคนิคที่คุณสามารถทำได้จริงๆ การแสดงออกที่ซับซ้อนเพื่อให้ตรงกับ 

ดังนั้นที่นี่ถ้าฉัน grep และสิ่งที่ ฉันไม่ต้องการที่จะค้นหา? สมมุติว่าผมกำลังมองหาแมวและ ผมต้องการที่จะค้นหาทั้งหมดของไฟล์เหล่านี้ ดังนั้นฉันจะทำทุกไฟล์เหล่านี้หรือไม่ ดาว ดังนั้นในแฟ้มหนึ่งที่ผมมีแมว ฉันอาจจะมี เรียกมันว่าสิ่งที่ดีกว่า เพราะที่มีลักษณะเช่น หมายเลขบรรทัดหรือสิ่งที่ แต่ในแฟ้มหนึ่งที่ผมมีสายกับแมว ในแฟ้มสองฉันมีความสอดคล้องกับแมว ดังนั้นตอนนี้ฉันสามารถดูในแฟ้มหนึ่ง เห็น Oh yeah แฟ้มที่ได้มีแมว แจ้งให้ทราบล่วงหน้าไฟล์สามไม่ได้จับคู่ เพราะแมวไม่ได้อยู่ในที่นั่น ฉันสามารถ grep สำหรับแมว ยื่นเพียงสองมีแมว 

ดังนั้นนี้คุณสามารถรวม อีกครั้งกับ -r ซึ่ง ที่ผมกล่าวว่าก่อนที่จะ บ่อยครั้งหมายถึงการเวียนเกิด และเพื่อให้สามารถมาขึ้นที่นี่ grep -r สำหรับอินสแตนซ์เเล้ขอแก้ไข หนึ่งในนี้ก็จะโยนแมวในนั้น ดังนั้น grep -r เช่นใด แมวทั่วไดเรกทอรีนี้ และมันจะซ้ำ ค้นหาไดเรกทอรีย่อยใด ๆ ดังนั้นใน baz มีแมว ในอุณหภูมิ / 2, มีแมว และในอุณหภูมิ / 1 มีแมว นั่นคือการค้นหาภายในไฟล์ 

ตอนนี้คุณยังสามารถใช้ค้นหา และเพื่อให้พบคือเฉพาะที่เกี่ยวกับ มองหาไฟล์ที่มีชื่อได้รับ ดังนั้นขอให้เพิ่มเติมบางส่วน เราจะเข้าไปในการดาวน์โหลด สัมผัส dog1 สัมผัส CAT2 สัมผัส cat_dog สัมผัส Catcat 

ดังนั้นฉันอยากพบทั้งหมด ไฟล์ที่มีสุนัขในชื่อ เพื่อหาและยาวที่สุด เวลาที่ฉันไม่เคยจำ วิธีหาทำงานจนในที่สุดผมก็ อ่านสิ่งที่ทำให้มันชัดเจนเพื่อ ดังนั้นหาเวียนโดยอัตโนมัติ คุณไม่จำเป็นต้องที่จะผ่าน -r เพื่อหาจุด เรายังไม่ได้พูดคุยเกี่ยวกับจุดยัง ในขณะที่จุดจุดเสมอ หมายถึงไดเรกทอรีหนึ่งขึ้น Dot เสมอหมายถึงไดเรกทอรีปัจจุบัน เพื่อที่ผมจะ rm -r จุดใน แบบเดียวกับที่ฉันสามารถ rm -rf * ในที่สุดพวกเขา ประสบความสำเร็จในสิ่งเดียวกัน RM จุด -rf จะลบ ไดเรกทอรีปัจจุบันทั้งหมด 

ตกลงที่ฉันไม่ต้องการที่จะทำมี แต่หาจุด ดังนั้นซ้ำการค้นหาปัจจุบัน ไดเรกทอรีและตอนนี้ทุกอย่าง หลังจากนี้พวงของธงที่คุณ ใช้ในการแยกสิ่งจากผลตอบแทน เพื่อหาจุดกลับทุกอย่างที่มัน สามารถหาได้จากไดเรกทอรีปัจจุบัน เหล่านี้คือไฟล์ทั้งหมด ซ้ำการค้นหา เราจะเห็นบางส่วนของผู้ที่อยู่ในที่สอง 

แต่ในกรณีที่คุณสงสัยว่าฉันทำ ที่ดังนั้นคำสั่ง K, อย่างน้อยที่สุด ใน terminal ของฉันใน Mac ล้างมัน ควบคุมแอล้างทั่วไป สำหรับการจัดเรียงของสถ​​านีใด นอกจากนี้คุณยังสามารถพิมพ์ที่ชัดเจน และถ้าคุณเคยได้รับ เป็น scenario-- แปลก มันเกิดขึ้นกับฉันสองสาม time-- ที่สีของจอของคุณ มี messed ทั้งหมดขึ้นหรือคุณ จะไม่สามารถมองเห็นอะไรเลย การพิมพ์เมื่อคุณกำลังพิมพ์เพราะ บางครั้งเช่นสีพื้นหลังเป็นที่ตั้ง เช่นเดียวกับสีพื้น และตอนนี้คุณไม่สามารถมองเห็นตัวอักษร ตั้งค่าใหม่เป็นสิ่งที่เพียงแค่ตั้งค่า คุณสามารถเริ่มต้นพื้นหลังสีดำ หน้าขาวหรืออะไรก็ตาม คุณตั้งค่าให้ 

เพื่อที่เราอยู่? ค้นหาจุด ดังนั้นตอนนี้ทุกอย่างที่ผ่านมานี้ จุด จำกัด ผล เพื่อสิ่งที่ตรงกับ รูปแบบที่กำหนด ดังนั้นที่นี่ฉันต้องการค้นหา ทุกอย่างกับแมวชื่อ ผมได้รับอะไร นั่นคือเหตุผลที่กรณี? ดีฉันแค่ค้นหา บางสิ่งบางอย่างกับว่าแมวชื่อ ถ้าผมต้องการที่จะค้นหาบางสิ่งบางอย่าง ที่มีรูปแบบบางส่วนและ cat-- คำพูดในทางเทคนิคไม่จำเป็น แต่ฉันขว้างปาพวกเขาอยู่ในนั้น ดังนั้นตอนนี้จะพบ Catcat เพราะ นั่นคือสิ่งเดียวที่ มีบางส่วนโดยพลการ รูปแบบตามมาด้วยแมว ผมจะสามารถนำแมว * และตอนนี้ หา Catcat, cat_dog, CAT2, เพราะผู้ที่มีทุกสิ่งกับแมว ที่จุดเริ่มต้นตามด้วยอะไร คุณสามารถรวมนี้ ถ้าคุณต้องการที่จะค้นหาไฟล์ C ทั้งหมด ที่คุณมีคุณอาจจะทำ * .c เราได้ blah.c ที่นี่ เพื่อให้เป็นผลงานการค้นพบ คุณสามารถค้นหา มันมีทั้งกลุ่มของธง สำหรับข้อ จำกัด เพิ่มเติม และหนึ่งในพวกเขาให้ว่าว ดังนั้นเลิก โอ้นั่นไม่ใช่สิ่งที่ฉันต้องการ ไม่ -d พิมพ์ d เพื่อหาจุด - พิมพ์ d ดังนั้นสิ่งที่เพิ่งทำคือผมกำลังค้นหา สำหรับทุกไฟล์ในไดเรกทอรีปัจจุบัน กับเเรก D ย่อมาจาก ชนิดไดเรกทอรี directory-- นี้กลับไดเรกทอรีทั้งหมด ในไดเรกทอรีปัจจุบัน และประเภท F เป็นปกติ ไฟล์ทั้งหมดไดเรกทอรีไม่ เพื่อให้เป็นเพียง ตัวอย่างของวิธีการอื่น ๆ ที่คุณ สามารถ จำกัด การค้นหาอื่น ๆ มากกว่าเพียงแค่ชื่อของไฟล์ 

มันเป็น 30 นาที ยังคงเป็นไป 

ALLISON: ฉันจะสายลมผ่าน มันจะดี 

ปล้นสลิงดังนั้นบางสิ่งอื่น ๆ ตอนนี้ปังเครื่องหมายอัศเจรีย์ เพื่อที่ว่าโดยทั่วไป means-- ดีเรามาดูตัวอย่าง ดังนั้น! ฉสิ่งที่ว่าจะทำอย่างไร ดีมันดูเหมือนว่าจะมี พบซ้ำจุด -type ฉ สิ่งที่เกี่ยวกับ g!? ที่เพียงแค่แมว grep -r * ดังนั้นบางคุณสามารถใช้เพื่อทำซ้ำ คำสั่งที่ทำเมื่อเร็ว ๆ นี้ ดังนั้นถ้าผมพิมพ์! GRE, มันจะเรียกใช้อีกครั้ง คำสั่งที่เริ่มต้นด้วย GRE มากที่สุด เมื่อเร็ว ๆ นี้ 

และคุณสามารถเห็นสิ่งเหล่านี้ คำสั่งที่มีประวัติ ดังนั้นประวัติศาสตร์ เหล่านี้ทั้งหมด คำสั่งที่ผมเคยทำงานวันนี้ และดีมันไม่ได้เป็นตัวอักษร จำกัด ในวันนี้ แต่ที่ผมเคยใช้นี้ เครื่องใช้ ณ วันนี้ มันเป็นความสมบูรณ์ของคุณ ประวัติศาสตร์ของเปลือกทุบตีของคุณ ยกเว้นการตัดในบางจุด ผู้ชม: จะเกิดอะไรขึ้นถ้าคุณทำ ประวัติศาสตร์ [ไม่ได้ยิน] คำสั่งและความผิดพลาด ผลจะยังคงพิมพ์ยกกำลัง 

ปล้นสลิง: ใช่ถ้ามี ข้อผิดพลาดในหนึ่งในกองเหล่านี้ จึงขอบอกว่านั่นคือ คำสั่งไม่พบข้อผิดพลาด ยังคงปรากฏในประวัติศาสตร์ สิทธิ์ทั้งหมด คำถามอื่น ๆ เกี่ยวกับอะไร? นั่นคือปัง 

ตอนนี้คำสั่งที่มีประโยชน์จริงๆมนุษย์ เพื่อที่จะช่วยให้คุณ คู่มือสำหรับคำสั่งที่ได้รับ ดังนั้นสมมติว่า LS คนดังนั้น นี้จะแสดงให้ฉัน LS จะแสดงเนื้อหาของไดเรกทอรี และนี่คือที่ผมเห็นว่ามี เป็นธงต่างๆเหล่านี้ที่มีอยู่ ดังนั้นเราจึงเห็นว่า ls -l อยู่ ถ้าเราจะอ่านว่า คำสั่ง ls -l ให้ฉันชื่อเต็มของ ไดเรกทอรีที่มีที่เป็นเจ้าของไฟล์ ขนาดของไฟล์ เวลาแก้ไข ดังนั้นคำสั่ง ls -a เป็นอีกหนึ่งที่คุณอาจจะ จริงใช้ค่อนข้างบ่อย -al เป็นธงที่พบมากที่สุดของฉัน LS ผ่านมา 

ดังนั้น -a แจ้งให้ทราบมีมาก ไฟล์ที่มากกว่าเพียงแค่ LS คำสั่ง ls -a สิ่งที่อยู่ในการร่วมกันกับทุกไฟล์เหล่านี้หรือไม่ พวกเขาเริ่มต้นด้วยจุด ดังนั้นนี่คือการประชุมในลินุกซ์ที่ ไฟล์ที่ขึ้นต้นด้วยจุดที่ซ่อนอยู่ ดังนั้นมันก็หมายความว่า เมื่อเราเพียงแค่ LS ตรง หรือเรากำลังค้นหาไดเรกทอรีนี้ใช้ เทียบเท่า Finder หรือ Windows สำรวจเทียบเท่าที่เรา ไม่ต้องการที่จะเห็นไฟล์จุดเหล่านี้ พวกเขาเพียงแค่ก่อให้เกิดมลพิษมุมมองของสิ่งที่ ดังนั้นพวกเขาจะถูกซ่อนไว้ ถ้าคุณโดยเฉพาะ ขอให้พวกเขากับสิ่งที่ต้องการ -a ดังนั้นผมสามารถ cd เข้าไปใน .local และฉันเห็น ว่าเป็นตัวเองไดเรกทอรีที่มี ไดเรกทอรีที่ใช้ร่วมกันและ โปรแกรมและ blah blah blah ดังนั้นจุดไฟล์ที่พวกเขากำลังที่ซ่อนอยู่เพียงแค่ 

ตกลงคนที่สำคัญอื่น ๆ เพื่อให้ ฉันมีสองผมสามารถข้าม ลองพูดคุยอย่างรวดเร็วเพียงแค่จริงเกี่ยวกับ สิ่งที่เปลี่ยนเส้นทางแฟ้ม ดังนั้นจึงมีชุดที่ซับซ้อนทั้ง ของสิ่งที่คุณสามารถทำอะไรกับเหล่านี้ แต่เพียงจะเห็นพวกเขาสมมติว่าสะท้อน คำสั่งอื่น คำสั่งโง่จริงๆ ทั้งหมดก็จะเป็นพิมพ์สิ่งที่ฉันบอกให้ ดังนั้นเสียงสะท้อนสวัสดี มันก็สะท้อนทักทายกับหน้าจอ สวัสดีชาวโลก สะท้อนสวัสดีชาวโลก 

ดังนั้นหนึ่งคำสั่งหรือหนึ่ง สัญลักษณ์ที่ทุบตีเข้าใจ นี้เป็นมากกว่าสัญลักษณ์และ ที่ส่งออกไปยังแฟ้มสัญลักษณ์ ดังนั้นถ้าผมออกไป foo มีตอนนี้ไฟล์ ที่เรียกว่าฟูภายในของ ซึ่งเป็นสวัสดีชาวโลก ดังนั้นสังเกตเห็นว่าเมื่อฉันสะท้อน สวัสดีท่อโลกเป็น foo, มันไม่ได้สะท้อนโลกสวัสดี แต่มันถูกนำไป foo ไฟล์ และคำสั่งอื่นเพียงแค่ ที่จะโยนมันที่คุณแมว นั่นเป็นวิธีที่ง่ายเพียงแค่อย่างสมบูรณ์ รายการเนื้อหาของไฟล์ เพื่อที่ฉันจะได้ไม่ต้องเปิด แก้ไขข้อความเพื่อดูข้อมูล ดังนั้นเนื้อหาของ ไฟล์ foo เป็นโลกที่ทักทาย และฉันจะ blah.c แมว เนื้อหาที่มีนี้ 

อีกครั้งเหล่านี้เป็นคำสั่งที่ไม่ คาดหวังให้คุณมีพวกเขาทั้งหมดจำ ความคิดที่คุณเคยเห็นพวกเขา บางทีคุณอาจจะกำล​​ังทำงานอยู่ บางสิ่งบางอย่างและคุณ เหมือนฉันป่วยของการเปิดไฟล์นี้ ฉันหวังว่าฉันสามารถดู ที่เนื้อหาจริงอย่างรวดเร็ว คุณสามารถทำอย่างนั้นแล้ว มองย้อนกลับไปและพูดว่าโอ้ฉัน จำสิ่งที่ต้องการ ที่มีอยู่และมันเป็นแมว 

เพื่อที่จะไปยังแฟ้ม ขณะนี้มีไม่ได้จริงๆดีใด ๆ ตัวอย่างของการอ่านจากไฟล์ยัง อะไรเป็นสิ่งที่ต้องใช้เวลา อะไรบางอย่างจากมาตรฐานมีอะไรบ้าง? ใด ๆ คำสั่งง่ายๆ Linux? เมื่อเราได้รับมันในสองสาม สัปดาห์ piece-- ดี สัปดาห์นี้คุณมีชิ้นส่วนที่คุณ เริ่มต้นการใช้ข้อมูลจากผู้ใช้ และอื่น ๆ โดยปกติคุณพิมพ์ ใส่ที่แป้นพิมพ์ที่ แทนการพิมพ์ที่ ใส่ที่แป้นพิมพ์ คุณสามารถท่อแทนจากไฟล์ เพื่อที่ว่าเมื่อคุณทำมาริโอ ./mario, ท่อจากไฟล์ใดก็ตามและ ที่จะเรียกใช้โปรแกรมมาริโอ ไม่ได้คาดหวังการป้อนข้อมูลที่ แป้นพิมพ์แทนมัน เพียงแค่จะอ่าน บรรทัดจากไฟล์ foo 

ดังนั้นมากกว่า foo ทำให้มันเป็น ไฟล์ foo และน้อยกว่า foo ใช้เวลาสิ่งจากไฟล์ foo และ ที่ใช้เป็น input เพื่อโปรแกรมนี้ และเพิ่งจะเห็นมันเรายังสามารถสะท้อน foo baz บาร์และจากนั้นแทนหนึ่ง มากกว่าให้ทำสองเป็น foo สิ่งที่จะทำอย่างไร มันก็ผนวกไปยังแฟ้ม ดังนั้นแทนที่จะแจ้งให้ทราบถ้าผมไม่สะท้อน blah เป็น foo foo แล้วแมวก็เพียง blah ดังนั้นเมื่อคุณออกไปยังแฟ้มมัน สมบูรณ์เขียนทับไฟล์ที่ ถ้าคุณเพียงต้องการที่จะผนวก คู่ [? เกรด ?] 

และสุดท้ายคือท่อ ท่อได้รับความซับซ้อนมากขึ้นที่ มันต้องใช้ผลของคำสั่งอย่างใดอย่างหนึ่ง และฟีดลงในคำสั่งถัดไป ดังนั้นบางสิ่งที่พบประวัติศาสตร์ ดังนั้นฮึผมไม่ต้องการที่จะดูที่นี้ แสดงคำสั่งทั้งหมดในประวัติศาสตร์ของฉัน ที่ฉัน grep-ED บางสิ่งบางอย่าง ไม่มีที่ทำให้เกิดความสับสน แสดงคำสั่งทั้งหมดที่ผมพบ ทั้งหมดพบว่าคำสั่งที่ฉันเคยวิ่ง 

ดังนั้นประวัติศาสตร์ ตอนนี้ประวัติศาสตร์ออกไป หน้าจอรายการของคำสั่งนี้ แต่ฉันไม่ต้องการที่จะ การส่งออกไปยังหน้าจอ แต่ฉันจะท่อลงใน grep จึงขอ grep สำหรับกรณีของการค้นพบ ดังนั้นตอนนี้แทนการ grep ใส่แทนเเล้ grep จะสามารถจัดการกับเป็น input-- เรา โดยใช้ grep แตกต่างกันเล็กน้อยที่นี่ ดังนั้นแทนการพิมพ์รายชื่อของ สิ่งที่เราต้องการที่จะค้นหา และบอกว่า grep คือการเป็นอินพุท ดังนั้นถ้าฉันเพียงแค่ grep หามัน รอสำหรับผมที่จะพิมพ์สิ่งที่ ดังนั้นแมวสวัสดีหา สวัสดี หา ขอให้สังเกตเวลาที่ฉันได้พบกับทุกพิมพ์ มันรับรู้ว่าฉันพิมพ์หา ดังนั้นแทนที่จะนี้จะ ค้นหาไฟล์ค้นหา 

ดังนั้นประวัติศาสตร์อยู่ในขณะนี้ที่จะไป ออกรายการของคำสั่งทั้งหมด เรากำลังวางเอาท์พุทที่ และเรากำลังให้อาหารมันจะ grep, และเพื่อให้มันคายออก กรณีของการค้นพบ เหตุผลที่ผมบอกว่ามันจะทำให้เกิดความสับสน คือถ้า I-- ก็ยังคงสับสน ถ้าฉัน grep สำหรับ grep ขอให้สังเกตก็สวยมากเสมอ แสดงคำสั่งฉันเพียงแค่ วิ่งเพราะคำสั่งที่ ตัวเองมี grep ภายในของมัน 

ตกลงดังนั้นคำถามใด ๆ เกี่ยวกับอะไร? และฉันจะโอนไปที่จุดนี้ หวังว่านี้เป็นสิ่งที่ดี ภาพรวมของคำสั่งทั้งหมด ที่คุณไม่จำเป็นต้องมี จำ แต่เหล่านี้ทำขึ้น ของแข็ง 95% ของสิ่งที่ฉัน ทำที่บรรทัดคำสั่ง นอกจากนี้ยังทราบว่าบรรทัดคำสั่ง ตัวเองทุบตีเป็นภาษาโปรแกรม, และดังนั้นเมื่อคุณได้รับลงไปมันคุณ อาจต้องการที่จะทำสิ่งที่ซับซ้อนจริงๆ และดังนั้นจึงมีสิ่งที่ต้องการ ลูปและไอเอฟเอและทุกคน ที่คุณกำลังจะได้รับใช้ กับภาษาการเขียนโปรแกรมของคุณ แต่ที่อยู่นอกเหนือ ขอบเขตของส่วนนี้ ตกลงดังนั้นคำถามไม่? ALLISON: ไม่? GABRIEL: คุณจะ to-- ALLISON: ผมสามารถทำมันได้ ในเหมืองถ้าคุณต้องการ เราสามารถมองเห็นสิ่งที่เกิดขึ้น ปล้นสลิง: ออกไปแอลลิสัน ALLISON: วู คุณการกระทำที่ยากที่จะปฏิบัติตามร็อบ คุณต้องการให้ฉันไปสลับกับคุณ? หรือคุณมี, OK ฉันจะพยายามไม่ ค่อนข้างจะมีความยาวที่มี ลองดูว่านี้จะ ทำงานในแบบที่ฉันต้องการให้ อาจจะ? ฮ่าฮ่า! ใช่ 

ดังนั้นฉันแค่จะไปได้อย่างรวดเร็ว ผ่านตัวแปรลูป, เงื่อนไข, และนิด ๆ หน่อย ๆ ที่คอมไพเลอร์ หากคุณมีคำถามที่ เวลาใด ๆ โปรดหยุดฉัน พวกเหล่านี้จะเตือนฉันที่จะทำซ้ำ คำถามของคุณในกรณีที่ฉันลืม แต่ไม่ควรจะเลวร้ายเกินไป 

ดังนั้นตัวแปรที่ใช่ เรามีหนึ่งไม่มีของคุณ ชิ้นเริ่มต้นที่นี่ ฉันแน่ใจว่าส่วนใหญ่ของคุณถ้า คุณมีการเรียงลำดับของบางเกม ที่คุณสร้างขึ้นด้วยการเริ่มต้นคุณมี เพื่อติดตามสิ่งที่ต้องการคะแนน หรือเวลาหรือสิ่งที่ต้องการ ดังนั้นผู้สีส้มสดใส ชิ้นที่เราเห็นมี เป็นเพียงรูปแบบของรอยขีดข่วน ตัวแปรและคุณจะแน่นอน จะใช้ตัวแปร ตลอดทั้งโปรแกรมของคุณ หากคุณไม่ได้ฉันไม่ได้จริงๆ แน่ใจว่าสิ่งที่คุณทำ 

แต่อย่างไรก็ตามสิ่งที่ยิ่งใหญ่ การกำหนดตัวแปร ด้วย C ตัวแปรทุกคนมี จะมีประเภทประกาศ ดังนั้นผมจึงให้คุณมาก นายพลคนหนึ่งที่ด้านบน ดังนั้นคุณจะต้องของคุณ พิมพ์แล้วสิ่งที่ คุณตัดสินใจที่จะเรียกตัวแปรของคุณ ดังนั้นในกรณีนี้พิมพ์ ในรายการตัวแปรของคุณ 

เรามีสามตัวอย่าง ถ่านของเกรดบาง ของซึ่งเป็นสิ่งที่ ฉันแน่ใจว่าคุณทุกคนต้องการ ที่จะได้รับในชั้นนี้ คุณสามารถกำหนดหลาย ตัวแปรในบรรทัดเดียว ตราบใดที่พวกเขากำลังทั้งหมดประเภทเดียวกัน ซึ่งเป็นตัวอย่างที่สองของเรามี ที่คุณมีสาม ตัวแปร x, y, z พวกเขากำลังลอยทั้งหมด แล้วคุณยังสามารถในครั้งนี้ ตัวอย่างที่มีคะแนน int และจำนวน ของทีมที่คุณสามารถ เริ่มต้นพวกเขาอยู่ที่นั่น 

ดังนั้นในตัวอย่างตรงกลางที่เรา เพียงแค่ต้องลอยของ x, y, z, เหล่านี้จะไม่ได้เริ่มต้นยัง พวกเขาไม่มีค่า หรือพวกเขามีค่าขยะ และถ้าคุณพยายามและใช้พวกเขา คอมไพเลอร์จะตะโกนใส่คุณ คุณจะต้องทั้งประกาศและ เริ่มต้นตัวแปรของคุณ ดังนั้นในสุดท้ายนี้เรากำลังทำทั้งสอง เราจะประกาศตัวแปร ของคะแนนและจำนวนของทีม และเรามีการเริ่มต้นที่พวกเขาให้ พวกเขาค่าเริ่มต้นของ 7 และ 4 ตามลำดับ เย็น ทุกคนที่ดี? น่ากลัว 

OK เพื่อให้การประชุมบางส่วน ถ้าพวกคุณได้อ่าน ผ่านรูปแบบ 50, เหล่านี้ เป็นเพียงสิ่งที่เราต้องการสำหรับ คุณจะใช้ในรูปแบบของคุณ ชื่อดังนั้นมีความหมาย หากคุณเริ่มต้นสิ่งที่เรียกร้อง เพียงแค่ x, y, z โดยเฉพาะอย่างยิ่ง ในขณะที่คุณได้รับใน lengthier โปรแกรมคุณ อาจจะ สร้างความสับสนให้กับตัวเองและเป็น เช่นเดียวกับสิ่งที่เป็นตัวแปรนี้หมายถึง ฉันมีความคิดสิ่งนี้หมายความว่าไม่มี 

ดังนั้นถ้ามันหมายถึงการถือ คะแนนเรียกว่าคะแนน ถ้ามันหมายถึงการถือคำตอบบางอย่าง หรือผลให้มันชื่อเช่นนั้น สำหรับลูปที่เราจะ ได้รับในในสไลด์ถัดไป ตัวแปรตัวอักษรเดียวจะปรับ ปล้นสลิง: i, j และ k เป็น เพียงแค่การประชุมสำหรับสำหรับลูป ที่ทุกคนคาดว่าพวกเขา ที่จะเรียกว่า i, j และ k คุณสามารถเรียก them-- ผมเห็นแถว คอลัมน์หรือโทรแถวบางครั้ง สำหรับสองวงที่ซ้อนกันและ ที่ยังชนิดของมาตรฐาน แต่ i และ j เป็นที่เข้าใจกันอย่างสมบูรณ์ 

ALLISON: ใช่ฉันและ J คุณดีโดยสิ้นเชิง เพราะความชัดเจนเช่น ในบางส่วนของชุด P ของคุณ มันอาจทำให้ความรู้สึกที่จะมีมากขึ้น สิ่งที่อธิบายในมีเพียงแค่ ในการติดตามของมัน แต่ฉันคิดว่าฉัน j และ k ผมคิดว่า ส่วนใหญ่ของเราใช้ทั้งหมด 

ปล้นสลิง: ด้วยเหล่านี้ การประชุมเพื่อให้รูปแบบเป็นสิ่งสำคัญ มันเป็นหนึ่งในสี่แกน ที่คุณกำลังช้า และมันก็เป็นเรื่องง่ายที่จะเพียงแค่ไปกว่า P ของคุณตั้งอยู่ที่ส่วนท้ายและให้แน่ใจว่า ว่าไม่มีความผิดพลาดโวหาร เพื่อให้แน่ใจว่าคุณกำลังแท็บได้อย่างถูกต้อง ตรวจสอบให้แน่ใจตัวแปรของคุณจะถูกตั้งชื่อ แสดงความคิดเห็นบางส่วน มันเป็นเรื่องง่ายมากที่จะได้รับจุดเหล่านั้น คุณไม่ต้องคิดเกี่ยวกับ อะไรเพื่อให้ได้รับจุดเหล่านั้น คุณไม่ต้องคิดอะไรออก มันก็แค่ทำให้มันดูสวย 

ALLISON: ในความเป็นจริงเรา มีรูปแบบที่ 50 ซึ่ง จะบอกคุณว่าคุณกำลังล้อเล่น ถ้าคุณกำลังล้อเล่นขึ้นอยู่กับรูปแบบ และจะบอกคุณว่าสิ่งที่คุณ ต้องแก้ไขและวิธีการที่คุณต้องการที่จะแก้ไขได้ นอกจากนี้ยังเป็นที่ดีเพียงที่จะกล่าวถึง ว่ามันเป็นนโยบายที่แน่นอน ว่าถ้าคุณอยู่ที่สำนักงาน ชั่วโมงและรหัสของคุณเป็นระเบียบ เราสามารถที่จะช่วยให้ลดลง คุณจนกว่าจะดูดีกว่า ดังนั้นการเริ่มต้นออกขวา ให้รูปแบบที่สอดคล้องกัน คุณก็เป็นเพียงแค่จะทำให้ ชีวิตของคุณมากทั้งง่ายขึ้นเมื่อ คุณกำลังพยายามที่จะไปถึงการแก้ปัญหา ถ้าคุณกำลังพยายามที่จะคิดออก ที่คุณกำลังขาดหายไปวงเล็บปีกกา และพวกเขาจะทั่วทุกสถานที่ที่คุณอยู่ เพียงแค่ทำให้ชีวิตของคุณเองยาก เพื่อให้สอดคล้องกับรูปแบบ ฉันสัญญาว่ามันจะทำให้ชีวิตของคุณง่ายขึ้น มันจะทำให้ชีวิตของเราง่ายขึ้น ทุกคนจะมีความสุขมาก และนั่นคือสิ่งที่คุณต้องการ GABRIEL: คะแนนของคุณจะสูงขึ้น ALLISON: ใช่และเกรดของคุณ ถ้า TF ของคุณเช่นคุณ มีแนวโน้มที่จะดี ทุกอย่างถูกต้องและแล้วก็ จุดที่สองที่นี่ เริ่มต้นให้สอดคล้อง ดังนั้นในขณะที่เราเห็นคุณสามารถประกาศ และเริ่มต้นสิ่งที่ หลายตัวแปรในบรรทัดเดียวกัน สิ่งหนึ่งที่เราอยากให้คุณไม่ได้ จะทำคือการประกาศตัวแปรบาง และไม่เริ่มต้นพวกเขาในแบบเดียวกัน บรรทัดที่คุณจะเริ่มต้นที่คนอื่น ๆ 

ดังนั้นในกรณีที่ทำให้ ความรู้สึกในสิ่งที่ไม่มี เรามีตัวอย่างที่นี่ ที่เรากำลังประกาศ ints ตัวแปรของไตรมาส สลึงและเหรียญ, แต่ไตรมาสและเพนนี ไม่มีค่าเริ่มต้น เรายังไม่ได้เริ่มต้นพวกเขา แต่ตรงกลางมี เราเริ่มต้นได้แล้วสลึงถึง 0 ดังนั้นจะทำไตรมาสสลึง, เพนนี หรือไตรมาสเท่ากับ 0 สลึงเท่ากับ 0 เพนนีเท่ากับ 0 หรืออะไรก็ตาม ค่าเริ่มต้นเหล่านี้ 

สิ่งที่ใหญ่มีสไตล์ให้สอดคล้อง เมื่อสงสัยให้สอดคล้อง แต่ทำตามคำแนะนำสไตล์ของเราเกินไป เย็น ทุกคนที่ดีมี? 

ผู้ชม: ที่ไหนคู่มือสไตล์? ALLISON: คู่มือสไตล์ เป็น on-- สิ่งที่เว็บไซต์? 

GABRIEL: ผมคิดว่ามันเป็น manual.cs50.net/-- ALLISON: สไตล์? 

GABRIEL: สไตล์ อ้อ 

ALLISON: ใช่ ดังนั้นคำถามที่เป็นรูปแบบ 50 manual.cs50.net/style ใช่? 

ผู้ชม: ถ้าเรากำหนด ตัวแปรมันก็โอเค ถ้าเราใส่เช่น [ไม่ได้ยิน] เช่น คะแนน int แล้ว int เป้าหมาย ดังนั้นคุณจะบอกว่าตอนนี้เราได้ ได้มีการกำหนดให้พวกเขาร่วมกัน? 

ALLISON: ดังนั้นคำถามควร คุณมีรหัสซ้ำซ้อน เมื่อคุณมีการกำหนด ตัวแปรเช่น int คะแนนและ ในบรรทัดเกม int ต่อไปหรือไม่ ปล้นสลิง: มีแน่นอน กรณีที่รหัสซ้ำซ้อนไม่ดี ฉันจะไม่พิจารณา รหัสที่ซ้ำซ้อน ผมแทบจะไม่เคยประกาศหลาย ตัวแปรในบรรทัดเดียวกันที่เคย และถ้ามีอะไรก็เพราะ มักจะฉันออกจากการเรียงลำดับของความคิดเห็นบางส่วน อธิบายสิ่งตัวแปรสำหรับ ดังนั้นฉันจะบอกคะแนน int เฉือนเฉือน ติดตามสิ่งที่ ในเฉือนเฉือนทั้งหมด ดังนั้นจึงเป็นแบบอย่างมากในทางที่ จะนำพวกเขาทั้งหมดในบรรทัดเดียวกัน ผมก็ไม่เคยใส่ไว้ในบรรทัดเดียวกัน 

ALLISON: ฉันรู้สึกเหมือนมัน การตั้งค่าส่วนตัวที่จุดนี้ 

ผู้ชม: ไม่ว่าไปสำหรับ สำหรับลูปและสิ่งที่เกินไป? ปล้นสลิง: ชอบภายใน? เช่น int ฉันเท่ากับ 0 จุลภาค มีความยาวเท่ากับอะไร? ว่าคุณไม่ได้มีทางเลือก ด้วยการเริ่มต้นสำหรับลูป part-- ดังนั้นคุณอาจได้เห็นเพียง int ฉันเท่ากับ 0 อัฒภาคฉันน้อย กว่าสิ่งที่ฉันอัฒภาคบวกบวก ที่ฉัน int เท่ากับ 0 ในทางเทคนิคคุณยังสามารถ ทำในสิ่งที่เราได้เห็นมาก่อน กับไวยากรณ์จุลภาค int ฉันเท่ากับ 0 จุลภาค J เท่ากับ 3 จุลภาค k เท่ากับ 5 คุณไม่ได้มีทางเลือกที่จะแยก ที่ออกเป็นหลายบรรทัด และที่เป็นมาตรฐาน เห็นมันมีเป็นเรื่องปกติ ALLISON: เจ๋ง ดีทำต่อที่สะดวกในลูป เพื่อใช่ที่นี่เรามีตัวอย่างบางส่วน ของลูปที่พวกคุณเห็นในเกา และแน่นอนสิ่งเหล่านี้ ก็สามารถได้รับการสร้างขึ้นใน C. และพวกเขาโดยทั่วไปช่วยให้คุณ ที่จะทำซ้ำในส่วนของรหัสบางอย่าง จนกว่าจะมีเงื่อนไขบางอย่าง จะพบซึ่งเราจะ ได้รับในทันทีหลังจากที่พูดคุย เกี่ยวกับลูปที่มีเงื่อนไข 

ดังนั้นเราจึงมีสามประเภทหลัก สำหรับในขณะที่และทำในขณะที่ เราทุกคนจะผ่านไปได้ในขณะนี้ ดังนั้นคนแรกคือสำหรับลูป ดังนั้นสำหรับเงื่อนไขบางอย่าง ดำเนินการบล็อกของรหัสนี้ เรามีเล็ก ๆ น้อย ๆ เย็นนี้ diagram ที่นี่ที่ด้านล่าง แต่โดยทั่วไปที่คุณมีใน สำหรับคุณที่บรรทัดแรก, คุณกำลังจะไป เริ่มต้นตัวแปรของคุณ 

ดังนั้นในขณะที่เราพูดคุยเกี่ยวกับฉันเป็น เท่ากับ 0 หรือฉันมีค่าเท่ากับ 10 สิ่งที่คุณต้องการที่ ตัวแปรที่จะเป็นมัน จะได้รับการเริ่มต้นที่นั่น ประกาศและเริ่มต้นได้ที่ค่าบางอย่าง ดังนั้นแล้วเรามีบาง สภาพที่เกิดขึ้น จะต้องมีการตรวจสอบของเรา ตัวแปรกับบางสิ่งบางอย่าง ดังนั้นในกรณีที่กรณีที่ทั่วไป บางทีคุณอาจต้องการส่วนของรหัสนี้ ที่จะดำเนินการห้าครั้ง ดังนั้นเราจะต้อง int ฉันเท่ากับ 0 และเรา ต้องการให้เป็นเมื่อฉันมีค่าน้อยกว่า 5 ดังนั้นเงื่อนไขที่ว่าเป็นเพียง จะไปตรวจสอบว่าทุกครั้งที่ หากเงื่อนไขที่ว่า ประเมินจริงมันเป็น จะเรียกใช้รหัสซึ่งเป็นสิ่ง สิ่งแผนภาพเล็ก ๆ นี้มีการแสดง 

และดังนั้นจึงดำเนินการได้ มันปรับปรุงตัวแปร ซึ่งเป็นสิ่งที่เราเห็น ในส่วนสุดท้ายของสำหรับของเรา วงเริ่มต้นที่นั่น ดังนั้นมันก็จะให้ทำเช่นนี้ จนกว่าเงื่อนไขที่ไม่เป็นไปตาม และจากนั้นก็จะออกจาก ห่วงและดำเนินการต่อ ย้ายกับส่วนที่เหลือของโปรแกรมของคุณ ทุกคนที่ดีมี? เย็น 

ดังนั้นนี่คือตัวอย่างที่คล้ายกันมาก เพื่อสิ่งที่ฉันพูดคุยเกี่ยวกับ ดังนั้นเราเพียงแค่ต้องการที่จะพิมพ์ นี่คือ CS50 10 ครั้ง ดังนั้นคุณจะเห็นที่นี่เรามี สำหรับเราแล้วเรา เริ่มต้นตัวแปร ฉันจะเท่ากับ 0 เงื่อนไขของเราคือการตรวจสอบ ว่ามันเป็นน้อยกว่า 10 เพื่อประเมินความเป็นจริงตอนแรกที่เรา เริ่มต้นและจากนั้นปรับปรุงตัวแปรของเรา เวลานั้นมันเป็นจริงดำเนินการแต่ละ และพิมพ์ออกมานี้เป็น CS50 และจะยุติลงหลังจาก 10 ครั้ง เย็น 

ดังนั้นในขณะที่ลูปจะขึ้นต่อไป และในขณะที่คุณดูที่นี่เราก็มี ในขณะที่บางคำถามสภาพที่นี้หรือไม่? 

ผู้ชม: ฉันสามารถกระโดดวิธี จริงเพียงไม่หนึ่งหมายเลข แต่ตัวเลขสอง [ไม่ได้ยิน] ฉันบวกบวกบวก? 

ALLISON: ดังนั้นคำถามคือวิธีที่คุณสามารถ ปรับปรุงตัวแปรของคุณโดยมากกว่าหนึ่ง ในช่วงเวลาที่ ดังนั้นฉันบวกบวกจะ ปรับปรุงโดยหนึ่งในแต่ละครั้ง ถ้าคุณต้องการที่จะปรับปรุงมันด้วย สองคุณสามารถทำฉันบวกเท่ากับ 2 

ปล้นสลิง: คุณจะได้เห็น บวกเท่ากับในการบรรยายหรือยัง? 

ผู้ชม: [ไม่ได้ยิน] 

ALLISON: มันได้อย่างมีประสิทธิภาพ สิ่งเดียวที่ฉันเท่ากับฉันบวก 2 ดังนั้นมันจะใช้มันและ ปรับปรุงมันสองในแต่ละครั้ง บวกเท่ากับเป็นสิ่งที่เพียงแค่ ที่เราเรียกว่าน้ำตาลประโยค ปล้นสลิง: ใช่ผู้ที่มีอยู่สำหรับ สวยมากทุกดำเนินการทางคณิตศาสตร์ ครั้งดังนั้นฉันเท่ากับ จะเพิ่มจำนวน J แบ่งเท่ากับ 3 จะเหมือนกัน เป็น J เท่ากับ J หารด้วย 3 

ALLISON: หรือลบจะเท่ากับ 2 พร่องฉันสองในแต่ละครั้ง ปล้นสลิงแม้เท่ากับสมัย คุณยังไม่เห็นผู้ประกอบการบิต, แต่เครื่องหมายเท่ากับและเครื่องหมายเท่ากับ, ทุกคนที่มีอยู่ 

ALLISON ดังนั้นหลายครั้งโดยเฉพาะอย่างยิ่ง กับคู่แรกของ P ชุด คุณจะได้รับการเพิ่มโดยอาจ หนึ่งดังนั้นฉันบวกบวก J บวกบวก มีทุกสิ่งที่คุณกำลังจะ ที่มักจะใช้ แต่สภาพการปรับปรุงที่ อย่างเต็มที่ในการควบคุมของคุณ คุณสามารถปรับปรุงได้โดยการเพิ่มขึ้นสิ่งที่ หรือในสิ่งที่คุณตัดสินใจที่จะ บางทีคุณอาจจะยังต้องการให้เป็น จำนวนสุ่มบางครั้ง แต่ใช่มีจำนวนมาก สิ่งที่คุณสามารถทำกับที่ คุณไม่ได้ จำกัด ให้ฉันบวกบวก 

ปล้นสลิง: เพียงเพื่อให้คุณ รู้ว่ามันมีอยู่ก็ยัง ที่มีอยู่ในอีกรูปแบบหนึ่งบวกบวกฉัน ดังนั้นถ้าคุณเคยค้นหาออนไลน์ และเกิดขึ้นเพื่อดูบวกบวกฉัน สวยมากหมายถึงสิ่งเดียวกัน ALLISON: โทน ดีหรือไม่? น่ากลัว ดังนั้นในขณะที่ลูป คล้ายกันมาก คุณมีเงื่อนไขบางอย่าง สิ่งสำคัญที่ต้องแจ้งให้ทราบล่วงหน้า นี่คือแทนที่จะต้อง สามส่วนที่แตกต่างกัน ในการตั้งค่าเรามีหนึ่ง เราก็มีเงื่อนไขบางอย่าง ที่ถูกตรวจสอบ และในทางเดียวกันตราบใดที่ สภาพที่ประเมินเป็นจริง รหัสของคุณจะไปทำงาน และถ้ามันเป็นเรื่องที่ผิดพลาดมัน จะยุติการย้าย ไปยังส่วนถัดไปของโปรแกรมของคุณ ดังนั้นนี้เป็นชนิดของสิ่งที่ like-- เป็นตัวอย่างที่ดีของการตรวจสอบ สำหรับบางสภาพปกติ? GABRIEL: ในขณะที่ความจริง ALLISON: คุณสามารถทำในขณะที่ความจริง ดี 1 เท่ากับ 1 

ปล้นสลิง: คุณสามารถทำ while-- เพียงแทนการใช้สำหรับห่วง คุณสามารถรหัส สำหรับวงในวงในขณะที่ ดังนั้นฉันมากกว่า 0 หรือ ในขณะที่ฉันน้อยกว่า 10 

ALLISON: เจ๋ง และจากนั้นเราได้ทำในขณะที่ลูปซึ่ง เหมาะสำหรับการตรวจสอบผู้ใช้ที่ คุณต้องการที่จะได้รับอะไรบางอย่างจาก ผู้ใช้ของคุณดูว่าเป็นที่ถูกต้อง แล้วดำเนินการต่อจากที่นั่น ดังนั้นหนึ่งในสิ่งที่รู้คือมี ทำในขณะที่มันจะดำเนินการ และจากนั้นก็จะมีการดำเนินการ ถ้าเงื่อนไขนี้จะพบ 

ดังนั้นน่าจะเป็นวิธีที่ดีที่สุดที่จะทำนี้ เป็นเพียงเพื่อดูตัวอย่างที่นี่ ดังนั้นในขณะที่ผมเพิ่งกล่าวถึงผู้ใช้ การตรวจสอบเป็น useful-- จริงๆ หรือทำขณะเมื่อเป็นจริง ที่มีประโยชน์กับการตรวจสอบของผู้ใช้ ดังนั้นนี่เป็นเพียงการไป อีกครั้งแจ้งให้ผู้ใช้บางส่วน จนกว่าพวกเขาจะเข้ามาเป็นจำนวนบวก ซึ่งอาจจะเป็นประโยชน์สำหรับ P ชุดของคุณ ในสัปดาห์นี้ ดังนั้นในกรณีนี้เมื่อเรา เริ่มใช้โปรแกรมนี้ มันจะพิมพ์ ใส่จำนวนบวก มันจะได้รับบาง การป้อนข้อมูลจากผู้ใช้ และจากนั้นก็จะตรวจสอบ เข้ากับเงื่อนไขที่ว่า ที่คุณได้ตั้งค่าสำหรับมัน 

ดังนั้นในกรณีนี้ก็จะตรวจสอบ มันจะบอกว่าโอเค คือการใส่ของเราในแง่ลบ หรือจะเป็น 0 หรือติดลบ ซึ่งจะเป็นที่ไม่ถูกต้อง ดังนั้นแล้วมันจะกลับมาพร้อม มีคำถาม? 

ผู้ชม: นี่คือเดียวกันแล้วเป็น ในขณะที่ห่วงถ้าคุณเพียงแค่คัดลอกโค้ดที่ และนำไปใช้ [ไม่ได้ยิน] ในขณะที่ห่วง? 

ALLISON: ดังนั้นคำถามคือจะ นี้เป็นเช่นเดียวกับในขณะที่เพียง ห่วงถ้าเราจะเพียงแค่ คัดลอกห่วงในขณะที่ข้างต้น ดังนั้นในกรณีนี้ห่วงในขณะที่ของคุณ จะไปตรวจสอบสภาพครั้งแรก ดังนั้นในกรณีนี้ถ้าเราพยายาม ที่จะเขียนเป็นเพียงแค่ห่วงในขณะที่ มันจะบอกว่าในขณะที่ ใส่น้อยกว่าหนึ่ง แต่เราไม่ได้มีการป้อนข้อมูลสำหรับมัน 

ผู้ชม: ถ้าคุณ [ไม่ได้ยิน] ในขณะที่วงรวมทั้งรหัสนี้ แต่แล้วคุณรับมือรหัส ดังกล่าวข้างต้นห่วงในขณะที่ยัง คุณเพียงแค่มีรหัสนี้ [ไม่ได้ยิน] ในขณะที่ห่วง ALLISON: มันจะเป็น สิ่งเดียวที่ใช่ ดังนั้นคุณก็สามารถ write-- แทนที่จะต้อง do-- ใช่ GABRIEL: แต่ที่หรูหรามากขึ้น ALLISON: ใช่ว่าหรูหรามากขึ้น คุณจะได้รับในการออกแบบและ whatnot, แต่ใช่คุณทั้งหมดสามารถทำเช่นนั้นได้ ใด ๆ ที่คำถามอื่น ๆ ? ตกลงเย็น 

ดังนั้นเราจึงได้พูดคุยกันมากเกี่ยวกับเงื่อนไข กับทุกลูปเหล่านี้ที่เรามี ดังนั้นเราจริงเดินทางเข้า เงื่อนไขในนิพจน์บูลีน อีกครั้งคุณใช้เหล่านี้ใน C, ดังนั้นเพียงแค่ชนิดของการเปลี่ยน จากอินเตอร์เฟซกราฟิกมากขึ้น ที่จริงการเขียนโปรแกรม 

เย็นขนาดใหญ่ดังนั้นหาก โดยทั่วไปเพียงแค่ช่วยให้เราที่จะแนะนำ ตรรกะลงในโปรแกรมและการตรวจสอบของเราบางส่วน เงื่อนไข SYS ดังนั้นในกรณีนี้ตกลง เป็น n มากกว่า 0? ใช่มันเป็นเพื่อให้คุณสามารถดำเนินการนี​​้ มันเป็นเพียงแค่การตรวจสอบบางอย่าง เงื่อนไขที่ว่าคุณได้ ตั้งซึ่งผมคิดว่าพวกเราทุกคน สะดวกสบายกับเงื่อนไขการตรวจสอบ เย็น ดังนั้นถ้าคนอื่นเป็นหนึ่งอื่น ๆ ของคุณ คุณสามารถพูดตกลงถ้านี้เป็นความจริง ทำเช่นนี้สิ่งแรกที่ มิฉะนั้นผมอยากให้คุณ ค่าเริ่มต้นและทำอย่างอื่น เช่นเดียวกับในกรณีนี้คุณอาจเลือก จำนวนบวกหรือจำนวนลบ คุณมีเพียงสองตัวเลือก คุณต้องการที่จะดำเนินการโดยไม่คำนึงถึง ของสิ่งที่ปัจจัยการผลิตที่ผู้ใช้ของคุณ เพื่อให้คุณสามารถพูดได้อย่างดี มันเป็นมากกว่า 0? เย็น พิมพ์จำนวนบวก หากยังไม่ได้พิมพ์เชิงลบ ทุกคนที่ดี? 

และแล้วสิ่งหนึ่งที่จะรับรู้เป็น ว่าถ้าหากเงื่อนไขที่จะพบ อื่นจะไม่นอกจากนี้ยังดำเนินการ เพียงหนึ่งในจำนวนนี้จะ ดำเนินการในช่วงเวลาที่ ดังนั้นจึงเป็นเรื่องการปิด คุณไม่ได้รับที่จะมีทั้ง คุณอาจมีเงื่อนไขแรก คุณทั้งสองได้ถ้า หรืออื่นไม่ใช่ทั้งสองอย่าง ซึ่งสามารถทำในสิ่งที่ แม้ความซับซ้อนมากขึ้น เพราะคุณสามารถทำถ้า อื่นมันแล้วอื่น ดังนั้นในกรณีนี้เรา มีสามเงื่อนไข และอีกครั้งหนึ่งของเหล่านี้เป็น จะจบลงด้วยการถูกดำเนินการ ดังนั้นคุณอาจจะสงสัยว่า ดีสิ่งที่ถ้าคุณ มีสิ่งที่ สามารถตอบสนองสองของเหล่านี้ บางทีสิ่งที่คุณกำลังป้อน มีคุณสมบัติตรงตามเงื่อนไขทั้งสอง ถ้าและอื่นถ้า สิ่งเดียวที่จะทำงาน 

ALLISON: เร็วที่สุดเท่าที่จะพบบางสิ่งบางอย่าง ให้เป็นไปตามเงื่อนไขที่ ประเมินความจริงว่าเป็นสิ่งที่ มันจะทำงานและไม่มีอะไรอื่น ดังนั้นถ้าคุณมีเป็นจำนวนนี้ ระหว่าง 0 และ 5 คนแรกของคุณ หรือเป็นตัวเลขระหว่าง 3 นี้ และ 5 อื่นถ้าเป็นส่วนหนึ่งของ และคุณใส่เลข ผมบอกว่า 0 และ 5 and-- 4 มันจะตีคนแรก มันจะบอกว่าตกลงนี้ ตัวเลขระหว่าง 0 และ 5 ดำเนินการและออกจาก มันจะไม่ตีว่าตัวเลือกที่สอง เย็น? น่ากลัว 

ตกลงเรายังมีสวิทช์ถ้างบ คุณต้องการที่จะได้รับแม้ more-- หรือขอโทษ สวิทช์อยู่ถัดไป ฉันได้รับล่วงหน้าของตัวเองที่นี่ อีกครั้งถ้าหลายบล็อก ในขณะที่ผมเพิ่งกล่าวว่า เป็นเร็วที่สุดเท่าที่คุณจะพบสภาพ ที่ได้พบและถ้าอื่นถ้าอื่น มันใบ หากคุณจำเป็นต้องตรวจสอบ หลายสิ่งที่คุณกำลัง จะต้องการที่จะใช้เพราะ มันจะตรวจสอบทุกครั้งที่นี่ ดังนั้นนี้จะทำงานผ่านและถ้า มันมากกว่าหรือเท่ากับ 90, มันจะพิมพ์ว่า และมันก็จะวิ่งผ่านและ ตรวจสอบทุกหนึ่งเดียวของเหล่านี้ 

ผู้ชม: ดังนั้นนี่จะเป็น รถมากกว่า [ไม่ได้ยิน] นี้จะเป็นเช่น [ไม่ได้ยิน] 

ALLISON: คำถามคือจะนี้เป็น รถหรือไม่นี้ทำในสิ่งที่คุณต้องการ จริงๆมันขึ้นอยู่กับสิ่งที่ ที่คุณต้องการจากโปรแกรมของคุณ 

ผู้ชม: ผมหมายถึงว่าถ้าคุณใส่ 90 ใน ALLISON: ถ้าคุณใส่ 90-- ผู้ชม: [ไม่ได้ยิน] GABRIEL: คุณกำลังจะได้รับสิ่งที่สอง ALLISON: คุณกำลังจะได้รับสิ่งที่สอง ใช่สอง 

ปล้นสลิง: สอง? 

ALLISON เลขที่ 

ปล้นสลิง: สี่ หากคุณใส่ 90 ก็จะบอกว่าคุณ มี แต่คุณกลับได้ B, คุณมี C, คุณได้ดี 

ผู้ชม: [ไม่ได้ยิน] ALLISON: ขวา ดังนั้นผมจึงขึ้นอยู่กับสิ่งที่คุณ ต้องการจากโปรแกรมที่คุณ บางครั้งคุณต้อง ตรวจสอบสิ่งที่หลาย ๆ คุณจะได้รับมากลึกลงไปในสิ่งที่ การออกแบบที่ดีคือการที่คุณไปข้างหน้า สิ่งสำคัญที่ต้อง ตระหนักคือว่านี้ จะตรวจสอบทั้งสี่เงื่อนไขที่นี่ ในขณะที่ถ้านี้ถ้าอื่นถ้าอื่น ถ้าอื่นก็จะตีกรณีแรกนั้น มันจะพิมพ์ที่คุณได้รับและจะทำ 

ปล้นสลิง: แม้ว่าเรา ตัดสินใจที่จะเปลี่ยนไปถ้า และมากกว่าหรือเท่ากับ 90, ถ้าและมากกว่าหรือเท่ากับ 80, และน้อยกว่าหรือเท่ากับ 89 ถ้า n มากกว่าหรือเท่ากับ 70, และ n น้อยกว่าหรือเท่ากับ 79 เพื่อที่ว่าจะถูกต้อง ที่จะทำในสิ่งที่เราต้องการ แต่ มันจะยังคงตรวจสอบทุกตัวเดียว 

ดังนั้นในขณะที่ในสถานการณ์แรกถ้าเรา ป้อน 90 มีเพียงถ้าอื่นถ้าอื่นถ้า และเราใส่ 90 แล้ว ก็จะแก้ไขให้ถูกต้อง มันจะตรวจสอบก่อน หนึ่งพิมพ์ที่คุณได้รับ, ข้ามทุกอย่างเพราะมัน แล้วพบหนึ่งที่ทำงาน ทุกกรณีเป็นพิเศษร่วมกัน ขึ้นอยู่กับว่าคนอื่นถ้าหาก ดังนั้นจึงจะดำเนินการ แรกถ้าแล้วมันทำ มันจะไปถึงจุดสิ้นสุด 

ในขณะที่ถ้าเราเปลี่ยน นี้จะเป็นสิ่งที่ฉันเป็น บอกว่ามีน้อยกว่าหรือเท่ากับ 89 มันจะไปตรวจสอบคนแรก มันจะพิมพ์ มันจะตรวจสอบคนที่สอง มันไม่ได้จะพิมพ์ ตรวจสอบหนึ่งในสาม จะไม่พิมพ์ ตรวจสอบที่สี่หนึ่ง ตอนนี้จะพิมพ์ ดังนั้นในกรณีอื่นว่า รุ่นเนื่องจากกรณีนี้ เป็นพิเศษร่วมกันก็ ใช้ดีกว่าถ้าอื่นถ้าอื่นถ้า เพราะเห็นว่าเป็นไปได้ การตรวจสอบน้อยลงของเงื่อนไข กว่ารุ่นนี้ ALLISON: เจ๋ง ดังนั้นสิ่งอื่นที่เราสามารถทำได้ ทำคืองบสวิทช์ โดยทั่วไปคำสั่งเปลี่ยน ใช้เวลาในตัวแปรบาง ในกรณีนี้มันเป็น n และ กำหนดซึ่งในกรณีที่จะดำเนินการ ดังนั้นนี่คือยังเป็นหนึ่งในที่กรณีของคุณ ควรจะเป็นชนิดของพิเศษร่วมกัน ดังนั้นในกรณีนี้ถ้า เราเราได้รับอย่างใดอย่างหนึ่งก็คือ จะตรงกับสิ่งที่ variable-- สิ่งที่ค่าของ n คือการหนึ่งในกรณีเหล่านี้ดังนั้น 1, 2 หรือ 3 และพิมพ์ออกบรรทัดที่สอดคล้องกัน 

แล้วถ้าคุณสังเกตเห็นที่นี่ เรายังมีค่าเริ่มต้น ซึ่งคุณสามารถที่คิดว่าเป็นคนอื่นของคุณ ดังนั้นหากคุณเลือกหมายเลขอื่น ๆ นอกจากนี้ 1, 2, และ 3 ในกรณีนี้ ก็แค่จะพิมพ์ไม่ถูกต้อง การตัดสินใจเมื่อใช้ไอเอฟเอเมื่อเทียบกับ ถ้าเทียบกับสวิทช์ elses เป็นไป เป็นสิ่งที่พวกคุณจะ เห็นการออกแบบที่ชาญฉลาดในขณะที่คุณเริ่มเขียน โปรแกรมที่ซับซ้อนมากขึ้นและ ไม่มีกฎอย่างหนักและรวดเร็ว เมื่อจะใช้พวกเขา จริงๆมันขึ้นอยู่กับบริบทของคุณ 

ปล้นสลิง: และเพียงแค่ ที่จะโยนมันออกมี เพราะมันเป็นส่วนที่สะดวกสบายมากขึ้น สวิทช์ที่พวกเขามีแนวโน้มที่จะ be-- ดังนั้นคุณจะ จำกัด ในหลายวิธีที่คุณ สามารถใช้พวกเขาเพราะ IFS, เงื่อนไขที่สามารถสวย อะไรที่คุณต้องการ ด้วยสวิทช์กรณี ต้องเป็นตัวเลข หรือในทางเทคนิคที่พวกเขาสามารถตัวอักษร แต่ ตัวอักษรที่เราจะเห็นเป็นเพียงตัวเลข ดังนั้นพวกเขาจึงต้องเป็นตัวเลข แต่สวิทช์ จริงๆมีประสิทธิภาพมากขึ้นกว่าถ้า อื่นถ้าอื่นถ้าเพราะแม้ ตัวอย่างเช่นการ before-- ดี ตัวอย่างเช่นคะแนนดูเหมือนว่าดี 

ดีขอบอกว่าที่นี่เราทำแทน นี้ถ้าอื่นถ้าอื่นถ้าสถานการณ์ ดังนั้นถ้า n เท่ากับเท่ากับ 1, พิมพ์ที่คุณเลือกจำนวนน้อย หากอื่นถ้า n เท่ากับเท่ากับ 2, คุณเลือกจำนวนกลาง อื่นถ้าเท่ากับเท่ากับ 3 สูง ที่ไม่ถูกต้องอื่น 

ดังนั้นขอบอกว่าเป็นสถานการณ์ของเรา ดังนั้นสมมติว่าเราใส่ 4 ดังนั้นเราจึงคาดหวังที่ไม่ถูกต้อง วิธีที่ว่าถ้าอื่นถ้าอื่น ถ้าวิธีการที่จะไปทำงานเป็น ตรวจสอบเงื่อนไขแรก มันเป็นความไม่พอใจ ดังนั้นเราจึงตรวจสอบเงื่อนไขที่สอง มันเป็นความไม่พอใจ ตรวจสอบสภาพที่สาม ไม่พอใจ ดังนั้นเราจึงไปที่อื่นและการพิมพ์ที่ไม่ถูกต้อง 

วิธีการทำงานสวิทช์ มันเป็นคอมไพล์ลง เป็นสิ่งที่เรากำลังจะไป จะเรียกตารางกระโดด ความคิดเป็นหลัก ที่เมื่อคุณป้อนที่ 4 ทันทีสามารถไปเริ่มต้น มันไม่จำเป็นต้องตรวจสอบนผมกรณีที่ 1? Nope ที่ไม่มัน กรณีที่ 2? Nope กรณีที่ 3? Nope ผิดนัด ตกลงนี้จะต้องเป็นที่ที่ฉัน ต้องการและจากนั้นดำเนินการที่ ไม่มันทันทีกระโดดไปเริ่มต้น หรือฉันใส่ 2 ก็ ทันทีจะไปที่ 2 โดยไม่จำเป็นต้องไปผ่านกรณีที่ 1 

ดังนั้นในทางที่ สมจริงในปัจจุบันที่ ไม่ว่ามากของการเพิ่มประสิทธิภาพ คอมพิวเตอร์มักจะสวย อย่างรวดเร็วและที่ไม่ว่าดี แต่มันเป็นกรณีที่ สวิทช์จะเร็วขึ้น ถ้าคุณกำลังพยายามจริงๆ เพื่อเพิ่มประสิทธิภาพการใช้งานสวิทช์ 

ALLISON: โทน และแล้วเรามีผู้ประกอบการ ternary ดังนั้นฉันรู้ว่าฉันกล่าวก่อนหน้านี้ คำน้ำตาลประโยค จึงเป็นเพียงสิ่งที่ทำให้ รหัสของคุณกระชับมากขึ้น ดังนั้นนี้เป็นหนึ่งในกรณีเหล่านั้น 

ดังนั้นผู้ประกอบการ ternary เป็นเครื่องหมายคำถาม ลำไส้ใหญ่ที่เราเห็นในสตริงสาย S เท่ากับ n มากกว่า 100 เครื่องหมายคำถามลำไส้ใหญ่สูงต่ำ ดังนั้นโดยทั่วไปวิธีการทำงานนี้คือมัน n มากกว่า 100 เป็นเงื่อนไข ดังนั้นผมคิดว่ามันสามารถทำให้ความรู้สึก มันก็เหมือนกับการถามคำถาม มันบอกว่าโอ้เป็น n มากกว่า 100 ใครจะรู้? และถ้ามันประเมิน ความจริงก็จะให้คุณ สิ่งแรกที่เป็น แสดงไว้ที่นั่นซึ่งเป็นที่สูง มิฉะนั้นก็จะให้คุณต่ำ ดังนั้นนี้เป็นเพียงง่ายจริงๆและ วิธีที่มีประสิทธิภาพที่จะทำเช่นถ้าอื่น นั่นคือทั้งหมดนี้เป็น 

และถ้าเราจะเขียนนี้ เป็นอื่นถ้าเงื่อนไข มันจะถ้า n เป็นมากขึ้น กว่า 100, ผลตอบแทนที่สูง อื่นกลับต่ำ นี่เป็นเพียงมากขึ้น วิธีที่รัดกุมในการเขียนมัน 

ปล้นสลิงดังนั้นตัวอย่างนี้โดยเฉพาะอย่างยิ่ง คือเมื่อใดก็ตามที่คุณกำลังทำอะไรบางอย่าง เช่นนี้เป็นรูปแบบ ที่ผมใช้ ternary บ่อยมาก ดังนั้นเรายังไม่ได้พูดคุยเกี่ยวกับขอบเขตยัง แต่ผมเกลียดการเห็นอัฒภาคสตริง ถ้า n มากกว่า 100, S เท่ากับสูง อื่น, S เท่ากับต่ำ ดังนั้นรูปแบบที่ผู้ห้าสาย ของรหัสตัวอักษร 100% ของเวลา สามารถโอนเป็นสิ่งที่ ก็ขึ้นอยู่กับ ternary ดังนั้น ternary หนึ่งบรรทัดของรหัส ถ้าอื่นห้า นั่นเป็นตัวอย่างที่ผมชี้ ออกทุกครั้งเดียว นี้จะสถานที่ที่ดี สำหรับผู้ประกอบการ ternary มันดังนั้นการทำความสะอาด แต่คนที่มีแนวโน้มที่จะไม่ใช้มัน 

ALLISON: เอามันออกไปเกบ 

GABRIEL: ดังนั้นตอนนี้พวกคุณทั้งหมด ได้เรียนรู้ในการบรรยายในสัปดาห์นี้ ทุกอย่างในที่ คอมพิวเตอร์ไบนารีใช่มั้ย? เช่นเดียวกับโคมไฟที่นี่ คุณสามารถเป็นได้ทั้งเปิดและปิด และทุกสิ่งที่ผมหมายถึง ทุกสิ่งที่แท้จริง บางตัวเลขและตัวอักษรและสตริง และแม้แต่รหัสที่คุณเขียนเมื่อ จะได้รับการรวบรวมไปยังเครื่อง รหัสและสิ่งที่ต้องการนั้น ดังนั้นมัน boils ทั้งหมดลงไป 0 และ 1 ' 

และดังนั้นเมื่อเรากำลังติดต่อ กับจำนวนเต็มซึ่ง เป็นสิ่งที่เป็นเทคนิคมาก ง่ายเราควรจะสามารถที่จะทำสิ่ง เช่นการเพิ่มพวกเขาซึ่งเป็น อาจเป็นหนึ่งในสิ่งที่ง่ายที่สุด คุณสามารถทำได้เพื่อจำนวนเต็มใช่มั้ย? ดังนั้นบวกและการลบทำงานได้ เหมือนว่ามันจะทำงานในสัญกรณ์ทศนิยม ยกเว้นที่นี่ก็ไบนารีใช่มั้ย? ดังนั้นจึงเป็นในสองฐาน เพื่อเพิ่ม 1 บวก 1 ที่ให้ 0, 1 และดำเนินการมากกว่า และเพียงแค่ให้ทำอย่างนั้นดังนั้นตอนนี้ มาพร้อมคำถามที่น่าสนใจมากขึ้น 

เรารู้วิธีที่จะเป็นตัวแทนทั้งหมด จำนวนเต็มบวกในเครื่องคอมพิวเตอร์ แต่ขอให้นี้การออกกำลังกาย แสร้งทำเป็นว่าพวกคุณทุกคนในปี 1960 หรือ สิ่งที่พยายามที่จะสร้างคอมพิวเตอร์ และคุณมีที่จะเกิดขึ้นของ วิธีการจัดเก็บลบ 1, เช่นหรือลบใด ๆ จำนวนเต็มสำหรับเรื่องที่ วิธีที่คุณจะทำเช่นนั้น? ความคิดใด? เพียงแค่โยนอะไรมาที่ฉัน ใช่? 

ผู้ชม: [ไม่ได้ยิน] กำหนด พิเศษถ้าคุณ [ไม่ได้ยิน] 

GABRIEL: คุณสามารถกำหนด บิตพิเศษซึ่งจะเป็น 0 หรือ 1 สมมติว่าหนึ่งถ้ามันบวก และ 0 ถ้าหากมันเป็นเชิงลบ แล้วส่วนที่เหลือของบิต เป็นเพียงการจัดเก็บหมายเลข เย็น เพื่อให้เป็นความคิดที่ดีมาก เรามีผมไม่ทราบ 200 และถ้าบิตแรกคือ เปิดแล้วก็บวก 200 ถ้ามันปิดเป็นลบ 200 เย็น 

มีเพียงคนเดียวที่มีขนาดเล็ก ปัญหากับเรื่องนี้ ซึ่งคือถ้าเราพยายามที่จะรวมสิ่งขึ้น ดังนั้นคิดว่าเรามี 11111 ที่นี่และ เรากำลังข้อสรุปนี้กับสิ่งที่ 00100 หากทั้งสองเป็นบวกที่ดี แต่แล้วถ้าหนึ่งใน พวกเขาเป็นลบเช่น สมมุติว่าบิตนี้ที่นี่ เป็นหนึ่งที่รับผิดชอบ for-- ฉันจะทำให้ separate-- ดังนั้นหนึ่งนี้หมายความว่าหมายเลขนี้ที่นี่ เป็นบวก อันนี้หมายความว่านี้ จำนวนที่นี่เป็นลบใช่มั้ย? 

แต่แล้วเมื่อคุณอยู่ จะรวมพวกเขาคุณ ต้องถ้างบ บอกว่าโอ้ถ้านี้เป็น 0 แล้วผลรวมของฉันจะเป็น บางสิ่งบางอย่างที่แตกต่างกันใช่มั้ย? ดังนั้นจึงมีเพียงเล็กน้อย วิธีที่ฉลาดมากขึ้นที่จะทำ ที่ซึ่งเรียกว่าเติมเต็มสอง ดังนั้นโดยทั่วไปสิ่งที่เรา ทำคือเรากำหนดลบ 1 จะเป็นสิ่งที่ว่าถ้า เราเพิ่มขึ้นถึง 1 ทำให้เรา 0 ผมขอย้ำว่า ดังนั้นขอบอกว่าที่นี่เป็น 1 เป็นเรื่องอะไรที่ ตามธรรมชาติในจำนวนเต็มบวก เพิ่มที่ทำให้เรา 0? ถ้าเราพยายามที่จะเพิ่มไปยังหมายเลขนี้หรือไม่? เรากำลังจะไป have-- ตกลงดังนั้นให้เพิ่ม เรากำลังจะมี 1 บวก 1 เป็น 0 แล้วจะดำเนินการในช่วง แล้วเรากำลังจะได้รับ 0 อีกครั้ง ฉันได้รับสับสน และคุณกำลังจะได้รับ 0 0 0 0 0 0 จำนวนมากของ 0 

ที่หนึ่งสุดท้ายที่เราไม่ได้ จะสามารถที่จะดำเนินการมันมากกว่า เพราะสมมุติว่าเรากำลังเพียงการติดต่อ กับหนึ่งไบต์ดังนั้นเพียง 8 บิต ดังนั้นสิ่งที่เครื่องไม่โดยค่าเริ่มต้น เป็นเพียงลืมเกี่ยวกับที่ [ไม่ได้ยิน] OK? ดังนั้นนี่คือสิ่งที่เรียกว่า เติมเต็มสอง เราก็กำหนดลบ 1 จะเป็น สิ่งที่นี่ว่าถ้าคุณเพิ่มที่ 1 จะให้คุณ 0 และที่เย็นสวย เพราะเราไม่ได้จริงๆ ต้องล่าช้าในการดำเนินการ ชนิดที่แตกต่างกันของจำนวนเงิน ขึ้นอยู่กับว่าที่ เชิงลบหรือบวก ที่ทำให้รู้สึก? 

ดังนั้นสิ่งหนึ่งที่เราทำ ที่นี่เพื่อแปลง ระหว่างบวกและลบ จำนวนเต็มคือแล้วเราพลิกทุกอย่าง แล้วเราเพิ่ม 1 ไปยังหมายเลขที่ ถ้าคุณพยายามที่จะทำมันด้วยตัวคุณเอง บนแผ่นกระดาษ, คุณจะเห็นว่าทำให้ความรู้สึก แต่ถ้าผมจะใช้หมายเลขนี้ ที่นี่นี้เป็นห้า ดังนั้นถ้าผมพลิกทุกอย่าง ที่นี่ดังนั้น 1, 1, 1, 1, 1 พลิกพลิกพลิก และจากนั้นผมเพิ่ม 1 กับมัน ฉันจะได้ว่าลบ 5 OK? 

ซึ่งชนิดของทำให้รู้สึกเพราะถ้า คุณพยายามที่จะรวมกับจำนวน ที่เราเคยมีมาก่อนซึ่ง was-- ขอพลิกนี้อีกครั้ง มันเป็น 101 และจำนวนมากของ 0 ของ ถ้าคุณพยายามที่จะเพิ่มเหล่านี้ ตัวเลขสองตัวด้วยกัน คุณกำลังจะไปได้ว่า 0 ตกลง คำถามใด? 

ผู้ชม: [ไม่ได้ยิน] 

GABRIEL: คุณหมายถึงอะไร? 

ผู้ชม: ลบ บวก [ไม่ได้ยิน] 

GABRIEL: ไม่, คุณพลิก และคุณเพิ่ม 1 เสมอ ใช่ ตกลงไบนารีเพื่อให้ตัวละครที่ยังเข้ารหัส เรามีตาราง ASCII เป็นคุณ ยังเห็นในการบรรยายใช่มั้ย? ดังนั้นมันเป็นพื้นการทำแผนที่ของสิ่งที่ และที่นี่ฉันไม่สามารถเน้นพอ ที่สำหรับเครื่องคอมพิวเตอร์, และ 65 นับเป็นสิ่งเดียวกัน ดังนั้นถ้าผมเขียนอะไรบางอย่างเช่นถ่านค เท่ากับผมได้ในเวลาเดียวกัน เพียงแค่เขียน 65 นี่และมัน จะตรงเดียวกัน, OK? มีความแตกต่างใด ๆ ไม่ได้ 

เรามักจะมีแนวโน้มที่จะใส่ ตัวอักษรในตัวแปรประเภท ถ่านไม่ใช่เพราะพวกเขากำลังเป็นหลัก ทำเพื่อที่ แต่เป็นเพราะ ของการประชุมของมนุษย์ แต่คุณก็สามารถจัดการกับจำนวนเต็ม แทนตัวแปรประเภทถ่าน, และคุณจะปรับ เพียง แต่ความแตกต่างที่เกิดขึ้นจริง ระหว่างคถ่านและฉัน int คือ int มีสี่ไบต์ในที่สุด ระบบในขณะที่ถ่านมีหนึ่งไบต์ พวกเขากำลังเป็นหลัก สิ่งที่เหมือนกันในแง่ของข้อมูล ดังนั้นสิ่งที่จะพิมพ์ที่นี่? ที่นี่เรากำลังพิมพ์หลักโดยใช้ printf กับบวก 1, และเช่นเดียวกับจำนวนเต็ม ตัวอักษรสามารถสรุปดังนั้น ตัวละครยังสามารถสรุป ดังนั้นตรงนี้คือ 65 ดังนั้นจึงมีความเป็นไปได้ 66, และที่นี่เรามี 65 บวกลบเล็กน้อยใหญ่, ซึ่งจะเป็นผมไม่ทราบจริงๆ แต่มันจะตรงช่องว่าง ระหว่างตัวอักษร และตัวอักษรขนาดเล็กลงเพื่อให้ เรากำลังจะได้รับเล็ก ๆ ใช่มั้ย? ใช่ ดังนั้นนี้จะพิมพ์ ตัวอักษรซึ่งตรงนี้ ดีหรือไม่? คำถามใด? 

ที่นี่เรามีพวงของที่แตกต่างกัน ประเภทของตัวแปรที่เป็นตัวเลข เราได้พูดคุยเกี่ยวกับ int ลอยเป็นเพียงวิธี to-- นี้เป็นจริง ตลกเพราะเมื่อครั้งแรกที่ผมได้เรียนรู้ โปรแกรมกลับมาในวันที่มีการ งูหลามโปรแกรมแรกที่ผมได้ พยายามที่จะเขียนผมเห็นว่ามี ประเภทที่เรียกว่าในและชนิดที่เรียกว่าลอย และลอยเป็นตัวเลขจริงทั้งหมด ดังนั้นแล้วฉันถามว่าทำไมควร ผมเคยใช้ int แล้ว? เพราะถ้าฉันสามารถใช้ทั้งหมด ตัวเลขจริงกับลอย, เพียงแค่ฉันอยากจะหยุดใช้ ints ใช่มั้ย? เนื่องจากตัวเลขจริง เหมือนทั่วไปมากขึ้น 

มันจะเปิดออกว่านี่คือ ไม่ได้ในกรณีที่เครื่องคอมพิวเตอร์ เพราะพวกเขากำลังเป็นหลัก สิ่งที่แตกต่าง ดังนั้นจำนวนเต็มและลอย การดำเนินงานที่คุณทำกับพวกเขา เป็นหลักที่แตกต่างกันเพราะ วิธีการที่พวกเขาจะถูกเก็บไว้, OK? เรากำลังจะไปพูดคุยเล็ก ๆ น้อย ๆ อีกเล็กน้อยเกี่ยวกับว่าในครั้งที่สอง 

ดังนั้นคู่เป็นเพียงลอยใหญ่ มักจะอยู่ในระบบส่วนใหญ่ลอย สี่ไบต์เช่นเดียวกับ int และดับเบิลแปดไบต์ นานเป็นจริงเพียงแค่สัญลักษณ์ ที่คุณผนวกกับชนิดเช่น int คุณบอกว่านาน int เช่นนี้ int ยาวยาว x ที่จะทำให้มันได้อีกต่อไป ดังนั้นในระบบส่วนใหญ่ที่จะให้ แปดไบต์แทนที่จะเป็นสี่ และคุณสามารถจริงลดลง ในดังนั้นมันก็สามารถพูดได้ยาวนาน และที่ทำงานเกินไป OK? นอกจากนี้คุณยังสามารถทำสิ่งอื่น ๆ เช่น int unsigned หรือลงนามอีกครั้งเพียง นอกจากนี้ยังจะทำงาน และที่จะทำให้ x เป็นตัวแปร เหมือนทุกอย่างเป็นบวก ดังนั้นคุณจึงไม่สามารถจริงๆมีเชิงลบ ตัวเลขในวิธีการที่เราเห็นที่นี่ ดังนั้นต่อไปนี้ที่ยอดเยี่ยม จุดลอยและความแม่นยำ นั่นเป็นหนึ่งในเหตุผลที่ว่าทำไมคุณ ต้องการที่จะใช้ ints แทนการลอย เพราะ ints เป็น 100% ที่ถูกต้องใช่มั้ย? มันตรงตัวเลขที่ สำหรับจุดลอยถ้าคุณ บอกว่าคำตอบที่เท่ากับ 1 กว่า 10-- ผมก็เพิ่งมีนี้ที่แน่นอน โปรแกรมที่นี่ float.c ที่พิมพ์ถึง 20 ตำแหน่งทศนิยม 1 หารด้วย 10 และที่ มักจะเป็น 0.1 ใช่มั้ย? แต่ที่นี่ถ้าเราทำ ลอยแล้วเราเรียกใช้ เราเห็นว่ามันเป็นไม่ได้ว่า 0.1 มันเป็นสิ่งที่ 0.149 

และนั่นคือเหตุผล? เพราะคุณไม่สามารถเป็นตัวแทนของทุก จำนวนจริงเดียวที่เป็นไปได้ในหน่วยความจำ เพราะมี uncountably มากของพวกเขา ดังนั้นเราในทางเทคนิคเพียงสามารถ เป็นตัวแทนของจำนวนเงินที่ จำกัด ของพวกเขา ที่มีจำนวน จำกัด ของข้อมูล แต่มันเป็นเรื่องที่น่าสนใจจริงๆ ตอนนี้ขอให้ คำถามของวิธีการที่คุณจะ ไปเกี่ยวกับการเป็นตัวแทน นี้กับบิตขวา? ดังนั้นวิธีที่จะลอยเก็บ? ด้วยจำนวนเต็มมันเป็นเรื่องง่าย แต่ด้วยลอยที่คุณต้องการ เพื่อเพิ่มช่วง และคุณต้องการที่จะสามารถที่จะเป็นตัวแทน จำนวนมากและตัวเลขเล็กมากเช่น 0.000001 ในเวลาเดียวกัน ดังนั้นอีกครั้งเกมเดียวกัน ไม่มีใครมีความคิดใด ๆ วิธีการที่เราจะทำได้ ไปเกี่ยวกับการเป็นตัวแทนของลอยในความทรงจำ? เพียงแค่โยนอะไร ใช่ 

ผู้ชม: [ไม่ได้ยิน] เช่น ถ้ามันเป็นสอง ints และเป็นหนึ่งใน เป็น [ไม่ได้ยิน] และเป็นหนึ่งในความเป็นอยู่ ทุกอย่างหลังจุดทศนิยม GABRIEL: OK เย็น ดังนั้นจำนวนเต็มสองจำนวนที่แตกต่างกัน คุณสามารถมี 12.45 เพื่อให้เป็น 12 และ 45 สวย สิ่งที่ ere คุณจะพูด? สิ่งที่เหมือนกันหรือไม่ ใช่? 

ผู้ชม: [ไม่ได้ยิน] สัญกรณ์ ที่คุณแยกฐาน 

GABRIEL: สัญกรณ์วิทยาศาสตร์ ใช่ที่มักจะเกิดอะไรขึ้น ดังนั้นนี่คือสิ่งที่เรียกว่าแมนทิสซา นั่นคือสิ่งที่เป็นจริง จำนวนและสัญลักษณ์แล้ว เป็นเพียงที่จุลภาคเป็นใช่มั้ย? ดังนั้นนี่เป็นไปได้บางสิ่งบางอย่าง ในรูปแบบ 1, 2, 3, 4, 5 ครั้งที่ 10 การลบ 4 ฉันเพิ่งตระหนัก that-- ใช่ว่า แล้วนี้เป็น 10 ลบ 4 จะกำหนดที่จุลภาคคือ OK? ในบราซิลเราใช้เครื่องหมายจุลภาค นี่พวกคุณใช้จุด ดังนั้นจุด 

และนี่คือเย็นแล้วเพราะคุณสามารถ มุ่งเน้นจำนวนมากของบิตของคุณในผู้ชายคนนี้ ที่นี่ใน mantissa แล้วที่ จะมีความแม่นยำที่แท้จริงของคุณ และคุณสามารถทำเช่นนี้ทั้งในทศนิยม หรือในระบบเลขฐานสองตาม มีที่แตกต่างกัน วิธีการที่จะดำเนินการนี​​้ คำถาม? ใช่? ผู้ชม: วิธีการหลายสถานที่ หลังจากทศนิยม [ไม่ได้ยิน] 

GABRIEL: นั่นเป็นคำถามที่ซับซ้อน เพราะมันไม่จริง 100% ได้อย่างแม่นยำ เพราะในขณะที่คุณดูที่นี่สำหรับ ตัวเลขบางอย่างมันเป็น 100% ความแม่นยำ ผมเชื่อว่าถ้าเราใส่ 0.5 ที่นี่ มันจะเป็น 100% ได้อย่างแม่นยำ มันเป็นไปได้ 0.500000 ดังนั้นในกรณีที่มันสมบูรณ์แบบ แต่ในกรณีอื่น ๆ มันมากน้อยกว่าที่สมบูรณ์แบบ จากประสบการณ์ของผมเหมือนได้ถึงสี่ ห้าตำแหน่งทศนิยมแม่นยำสวย ถ้าคุณใช้คู่ก็จะไป เป็นวิธีที่แม่นยำมากขึ้นกว่าที่ตกลง? 

ปล้นสลิง: ดังนั้นเพียงแค่การโยน บริบทบางอย่างที่ลอย ฉันไม่เคยจำได้ว่า 100% วิธี ข้อมูลจำเพาะของลอยใช้งานได้จริง, แต่ฉันทำคุณจำไว้เสมอ ที่ลอยเริ่มได้รับยุ่ง ดังนั้นความคิดที่ว่าเมื่อคุณได้รับจริงๆ จริงๆตัวเลขหรือใหญ่จริงๆ ตัวเลขเล็ก ๆ เราเริ่มต้น เลวร้ายลงและแย่ลง ที่แตกต่าง ระหว่างสองลอยใกล้ 

ดังนั้นวิธีการที่ฉันชอบที่จะคิดเกี่ยวกับการเป็น กับลอยไม่แน่ชัดจุด มีสองลอยที่ ถ้าผมพยายามที่จะระบุพวกเขา ใน C แม้จะมีความจริงที่ว่า พวกเขากำลังตัวเลขที่แตกต่างกัน, พวกเขากำลังจะเป็น ตีความว่าเป็นหมายเลขเดียวกัน เพราะเราไม่สามารถเก็บไว้แตกต่างกัน เราจำเป็นต้องใช้บิตเดียวกัน ดังนั้นเมื่อเราได้รับการ จริงๆจำนวนมากจริงๆ พูดเหมือน 10 ถึง 300 หรือ บางสิ่งบางอย่างมันจะอยู่ที่จุดนั้น ที่ 10 ถึง 300 หรือ 5 ครั้ง 10 ถึง 300 ไม่สามารถที่แตกต่าง จาก 7 ครั้ง 10 ถึง 300 นั่นคือความแตกต่างใหญ่สวย ระหว่างสองหมายเลข 

แต่แล้วเมื่อคุณได้รับการลง ไปสู่​​สิ่งที่ช่วงปกติ คุณมีแนวโน้มที่จะสวย ดีที่แตกต่าง และจากนั้นเมื่อคุณได้รับการลงเล็กจริงๆ คุณยังได้รับไม่ดีงามอีกครั้ง ดังนั้นเหมือนทั้งกลุ่ม 0.0000 จะได้รับไม่ดีงาม GABRIEL: ใช่เพื่อให้ทราบอย่างรวดเร็ว ไม่เคยทำเช่นนี้ อย่าพยายามที่จะเปรียบเทียบ ลอยโดยใช้เท่ากับเท่ากับ, เพราะแม้ว่าพวกเขาจะเกือบ เดียวกันเกือบจะเหมือนกันไม่เหมือนกัน ดังนั้นสิ่งที่คุณมักจะทำคือคุณลบ พวกเขาใช้เวลาค่าสัมบูรณ์ของที่ และดูว่าที่มีขนาดเล็กกว่า 0.0001 หรือสิ่งที่ต้องการ, OK? และเย็น ฉันรู้ว่าคนจำนวนมากมี พื้นฐานบางอย่างใน Java โดยเฉพาะอย่างยิ่งคนที่ไม่ได้ทำ วิทยาการคอมพิวเตอร์ AP ใช่มั้ย? และ Java เป็นภาษา ที่ขึ้นอยู่กับ C ส่วนใหญ่ มันมีสองความแตกต่างที่ใหญ่มาก แต่สำหรับลูปและไอเอฟเอและสิ่งที่ต้องการ ที่พวกเขากำลังทั้งหมดไวยากรณ์ที่เหมือนกัน ฉันมีโปรแกรมไม่กี่ที่นี่เพื่อแสดงให้เห็นนี้ 

ดังนั้นสำหรับตัวอย่างเช่นสวัสดีโลกง่าย นี่คือสวัสดีชาวโลกใน C ซึ่งคุณ ผู้ชายเป็นมั่นเหมาะคุ้นเคยกับ และนี้และนี้เป็นหนึ่งใน Java ดังนั้นใน Java เรามีนี้ เรียนสาธารณะสวัสดีโลก และถือเป็นโมฆะคงที่สาธารณะ หลักและ args สตริง args สตริงจะ ที่จะปรากฏใน C นานมาก แต่ขอไม่ไปที่นั่นอีก ตอนนี้เรามีที่นี่เป็นโมฆะซึ่งหมายความว่า หลักที่ไม่ได้ใช้ข้อโต้แย้งใด ๆ และแล้วเรามี System.out.println, และที่ว่า ชนิดของเทียบเท่า printf ที่นี่เราไม่ได้จริงๆต้องทับขวา n ln เพราะพิมพ์ไม่ว่าสำหรับคุณ มันผนวกทับขวา n ที่ท้ายบรรทัด 

แต่ถ้าคุณไปเป็น สิ่งที่ต้องการสำหรับคุณ จะเห็นว่าพวกเขากำลัง สวยมากในสิ่งเดียวกัน ดังนั้นการเริ่มต้นและ เงื่อนไขและการปรับปรุง เท่าไหร่ฉันพลาดพื้นที่ตรงนี้พวกเขากำลัง สวยมากสิ่งเดียวกันยกเว้น Java ได้เป็นสิ่งที่อยู่ในระดับสูงมากขึ้นไม่กี่ ที่นี่เราสามารถทำบวกฉันและ Java จะโดยอัตโนมัติ ทำให้ฉันที่นี่ซึ่งเป็น จำนวนเต็มเป็นสตริง, แล้วผนวก สองสายด้วยกัน ที่นี่ใน C ที่เราต้องทำและ% d เส้นที่นี่สำหรับ มีลักษณะตรงเดียวกัน 

และถ้าเรามองไปที่ถ้าไอเอฟเอ ยังมองเหมือนกันใช่มั้ย? ดังนั้นความแตกต่างที่ยิ่งใหญ่จริง ในสิ่งเหล่านั้นที่คุณเห็นที่นี่ สาธารณะคงเป็นโมฆะและ ชั้นแล้วถ้าประชาชน ดังนั้น Java มีสิ่งที่เป็น ที่เรียกว่าเครื่องเสมือน และมันก็เป็นไปตามอย่างหนักในสิ่งที่ จะเรียกว่าโปรแกรมเชิงวัตถุ ซึ่งเป็นอย่างมากที่พบมาก กระบวนทัศน์ในการเขียนโปรแกรมในปัจจุบัน และสิ่งที่ชั้นนี้เป็นสิ่งที่คุณเห็น อะไรบางอย่างจากการวางวัตถุ คือคุณสร้างชั้นและจากนั้นคุณ สามารถได้รับวัตถุจากชั้นเรียนที่ เราไม่ได้จะพูดเกินไป มากเกี่ยวกับว่าใน CS50, แต่ที่แน่นอน สิ่งที่เย็นจริงๆ โดยเฉพาะอย่างยิ่งถ้าคุณต้องการที่จะไปสู่ การพัฒนาเว็บที่ซับซ้อนมากขึ้น ในตอนท้ายของหลักสูตร เช่นส่งโครงการสุดท้ายของคุณ และบางกรอบที่ดีและสิ่งที่ 

ดังนั้นโดยทั่วไปความคิดที่จะให้คุณ ไม่ต้องการที่จะกลับมาดำเนินการบางสิ่งบางอย่าง เพื่อให้คุณสร้างสิ่งที่เป็น ทั่วไปมากเช่นรูปร่าง และจากนั้นคุณสร้าง รูปร่างที่แตกต่างจากมัน แล้วจากแต่ละ รูปทรงเหล่านี้คุณสามารถสร้าง รูปร่างที่เฉพาะเจาะจงมากขึ้นบางอย่างในสาม มิติหรือสิ่งที่ต้องการ และพวกเขามีลำดับชั้นของพวกเขา สืบทอดมาจากคนอื่น ๆ ดังนั้น ฟังก์ชั่นและตัวแปรทั้งหมดที่ รูปร่างใหญ่ที่นี่มีสิ่งเหล่านี้ กำลังจะมีและสิ่งเหล่านี้เป็น จะมีและอื่น ๆ และอื่น ๆ นั่นคือความคิดพื้นฐาน 

C ไม่ได้มี แต่ภาษา C ++ จะมีชนิดของคุณลักษณะที่ และ Java ได้รับอิทธิพลอย่างมาก โดยการวางวัตถุ เพื่อที่ว่าทำไมคุณเห็น เรียนที่นี่ตลอดเวลา และสิ่งอื่น ๆ นี้เครื่องเสมือน Java ดังนั้นผมคิดว่าเป็นความคิดที่ฉลาดมาก ดังนั้นสิ่งที่ folks ที่ java คิดค้นได้เป็น พวกเขาไม่ต้องการที่จะ รวบรวมรหัสของพวกเขาเป็นครั้งที่สอง ถ้าพวกเขาจะใช้มันใน Windows, หรือ Mac หรือ Linux ดังนั้นสิ่งที่พวกเขาทำ ที่พวกเขาทำงานอย่างแท้จริง บางอย่างเช่นเครื่องใช้ไฟฟ้า, แต่คุณไม่ได้จริงๆเห็นมันเกิดขึ้น ดังนั้นพวกเขาจึงเรียกใช้เครื่องเสมือน ภายในของเครื่องคอมพิวเตอร์ของคุณที่ เป็นพื้นเช่น ระบบปฏิบัติการขนาดเล็ก และการดำเนินงานที่ วัตถุประสงค์ของระบบในชีวิต เป็นเพียงการใช้สิ่งที่เรียกว่ารหัสไบต์ 

ดังนั้นแทนที่จะใน C วิธีที่เราจะ รวบรวมนี้ทำให้ถ้าและเรียกใช้ ./if ฉันลืมเครื่องหมายใน ใน Java คุณจะทำครั้งแรก Java C เพื่อรวบรวมมัน if.c. มันไม่ใช่ซีมันเป็นจุด java และจากนั้นคุณต้องใช้ไม่ ./ คุณจะได้รับไฟล์ใหม่นี้ if.class แต่คุณไม่สามารถจริงๆ ทำงาน if.class ขณะนี้เป็นเพียง เหมือนอย่างที่เราทำมาก่อน นี้ไม่ได้ปฏิบัติการ คุณต้องใช้ คุณจะต้องกินมันเข้าไป โปรแกรมที่เรียกว่า Java, และโปรแกรมที่เครื่องเสมือน แล้วคุณทำ if.class หรือถ้า ใช่ และจากนั้นก็ทำงาน ตกลงดังนั้นนี่คือชนิดของ เครื่องเสมือนที่เกิดขึ้น C ไม่ได้ที่ดังนั้นถ้าผมต้อง วางโปรแกรมนี้ในเครื่อง Windows มันจะไม่ทำงานใน C. ใน Java มันไม่ คำถาม? เย็น นั่นคือถ้าส่วนสุดสำหรับวันนี้