>> เดวิดเจลัน: ทั้งหมด ที่เหมาะสมเพื่อให้เป็น CS50
และนี่คืออย่างชัดเจนวันศุกร์
และนี่คือจุดสิ้นสุดของสัปดาห์หนึ่ง
ดังนั้นคุณอาจจำได้ว่าเราทิ้งไป ครั้งสุดท้ายที่น่าตื่นเต้นกับของแปลก
ด้วยเหตุนี้เราเปิดเผยโกหกนี้ว่าไม่มี ว่าสิ่งที่คุณได้รับการสอนการเจริญเติบโต
ขึ้น 1 หารด้วย 10 ไม่ได้ใน ความเป็นจริงหรือ 0.1 0.100 หรือ 0.10000
ในความเป็นจริงถ้าเรารวบรวมนี้ โปรแกรมที่เราทำเมื่อวานนี้ด้วย
ทำให้ไม่แน่ชัดแล้ว ทำจุดเฉือนไม่แน่ชัด,
เราได้เรียนรู้ว่านี่คือสิ่งที่ 1 หารด้วย 10 เป็นจริง
เพื่อให้ไม่ได้จริงๆค่อนข้างกรณี
แต่นี้ไม่คำใบ้ที่บางส่วน ข้อ จำกัด พื้นฐานของคอมพิวเตอร์
และแน่นอนในหมู่ สิ่งที่เรากำลังจะทำ
วันนี้เป็นวันที่จะดูที่ว่าทำไมถึงมี ที่เกิดขึ้นสิ่งที่ผลกระทบนี้ได้
วิธีการที่มนุษย์ได้ล้มเหลว ที่จะเข้าใจในบาง
situations-- ร้ายแรง ผลมาจากการที่
ได้รับค่อนข้างน่าเศร้า และ expensive-- และ
ดูที่วิธีการที่เรา จริงสามารถปกป้อง
กับเหล่านี้ชนิดของข้อ จำกัด
ดังนั้นสังหรณ์ใจบางที ทำไม 1 หารด้วย 10
ตามที่คอมพิวเตอร์ของฉัน ที่นี่ไม่ได้เป็นเพียง 1/10 0.10?
ใช่
คุณคิดอย่างไร?
>> สมาชิกผู้ชม: สมุฎฐานที่แตกต่างกัน?
>> เดวิดเจลัน: สิ่งนั้นคืออะไร?
โอ้มุฎฐานที่แตกต่างกัน?
ดังนั้นไม่มาก
มันเป็นจริงมากขึ้น พื้นฐานของฮาร์ดแวร์
ความคิดอื่น ๆ ?
ใช่
สมาชิกผู้ชม: พวกเขา แสดงตัวเลขแตกต่างกัน?
เดวิดเจลัน: ขวา they-- ดังนั้น
พวกเขาแสดงตัวเลขที่แตกต่างกัน
ไม่สมควรเห็นได้ชัด
เพื่อให้ is-- ดี ที่แตกต่างจากสิ่งที่?
หรือจากใคร?
จากเรา?
สมาชิกผู้ชม: ใช่
พวกเขาไม่ได้ใช้ทศนิยม ระบบ [ไม่ได้ยิน]
เดวิดเจลัน: OK
ดังนั้นในความรู้สึกที่พวกเขาทำไม่ได้ ใช้ระบบทศนิยม
ภายใต้ประทุน ทุกอย่างเป็นจริงไบนารี
และที่เกี่ยวข้องในความเป็นจริง
แต่ก็จะยิ่งง่าย คำอธิบายไปกว่านั้น
ใช่
>> สมาชิกผู้ชม: พวกเขา มีเพียงบิตจำนวนมาก
พวกเขาสามารถเก็บได้ถึงบางอย่าง ขอบเขตเช่นเดียวกับทศนิยม
>> เดวิดเจลัน: ใช่
นี่คือสิ่งที่ได้รับจริงๆที่มัน
ปรากฎว่าเครื่องคอมพิวเตอร์ โดยทั่วไปมักจะมีเพียง
ใช้จำนวน จำกัด ของข้อมูล เพื่อเป็นตัวแทนของบางสิ่งบางอย่าง
ใช่มั้ย?
หลังจากทั้งหมดเราจะต้องคงที่ จำนวนของพื้นที่ฮาร์ดดิสก์
เราเพียง แต่มีจำนวนคงที่ แรมหรือหน่วยความจำคอมพิวเตอร์
และถ้าคุณมีเพียง จำนวนเงินที่คงที่ของบางสิ่งบางอย่าง
แน่นอนคุณจะไม่ได้นับ อินฟินิตี้หรือหมายเลขที่คุณต้องการ
คุณชนิดของต้อง เลือกและเลือกสิ่งที่หลากหลาย
ของมีค่าที่คุณกำลังจะให้การสนับสนุน
>> และอื่น ๆ เช่นหนึ่งหรือสองสัปดาห์ ที่ผ่านมาเมื่อเราได้พูดคุยเกี่ยวกับ ASCII,
และเราได้พูดคุยเกี่ยวกับ 8 บิต หรือไบต์, เพื่อที่จะพูด
จำนวนที่ใหญ่ที่สุดที่เราจะทำได้ เป็นตัวแทนที่มี 8 บิตคืออะไร?
255
และเราสามารถเป็นตัวแทนของ 256 ค่าโดยรวม แต่ไม่ถ้าเราใช้จ่ายหนึ่งของพวกเขา
ใน 0-- ดี แต่ถ้าเรา ใช้เวลาหนึ่งของพวกเขาในวันที่ 0,
แล้วจำนวนที่ใหญ่ที่สุด เป็นของหลักสูตร 255
>> ดังนั้นมันจะเปิดออกว่านี่คือ กรณีที่เกินไปในบริบทนี้
เราเริ่มต้นการพูดคุยครั้งสุดท้าย เกี่ยวกับตัวเลขทศนิยมซึ่ง
จะแตกต่างจากจำนวนเต็มใน ว่าพวกเขามีจุดทศนิยม
และหวังว่าตัวเลขบาง หลังจากนั้น แต่พวกเขามากเกินไป
คอมพิวเตอร์มักจะเป็นเพียงการไป ที่จะใช้ 32 บิตอาจจะ 64 บิต
เพื่อเป็นตัวแทนของค่าจุดลอย
ดังนั้นแม้ว่าเราได้เติบโตขึ้น การเรียนรู้คณิตศาสตร์และรู้
อย่างที่คุณสามารถมี จำนวนอนันต์ของตัวเลข
หลังจุดทศนิยมไม่ ถ้าคุณมีหน่วยความจำที่ จำกัด
คุณชนิดของการมีรอบ, หรือเลือกและเลือก
ตัวเลขที่คุณกำลังจะเป็นตัวแทนของ
และเพื่อให้คุณสามารถคิดในความรู้สึก นี้เป็นที่ใกล้เคียงที่สุดของคอมพิวเตอร์
การประมาณค่าการ 1/10 ที่ ก็จะได้รับมีเพียง 32 บิตหรือมากกว่านั้น
และมันก็ไม่ได้เป็นเพียง 1/10
>> ตัวอย่างเช่นถ้าผมเปลี่ยนนี้ 1/3 ซึ่งเราคิดว่าเป็นได้ง่าย
ดังนั้น 1 โดยแบ่งออกเป็น 3
ผมขอบันทึกแฟ้ม
ให้ฉันไปข้างหน้าและคอมไพล์มัน
และแจ้งให้เราอีกครั้งเรียกใช้
นี่เกินไปเห็นได้ชัด 1/3 ไม่ได้ 0.3 แล้วจำนวนอนันต์ของ 3
หลังจากนั้น
คุณต้องไม่แน่ชัดในตอนท้ายนี้
ดังนั้นมนุษย์เรามีความถูกต้องและสิ่งที่ คุณได้เรียนรู้คือในความเป็นจริงที่ถูกต้อง
แต่เรากำลังกระแทกขึ้น กับข้อ จำกัด บางอย่าง
>> และสิ่งที่ผมคิดว่า เราจะทำในวันนี้คือการเริ่มต้น
โดยดูที่ตรงไปตรงมาที่ ผลกระทบที่น่าเศร้านี้
บางครั้งเมื่อมนุษย์ ไม่ค่อยใช้
สำหรับความเป็นจริงนี้และข้อ จำกัด เหล่านี้
และเราจะเห็นชุดของสะเปะสะปะ จากประวัติศาสตร์ช่องทางที่จะนำ
ดูที่วิธีการสิ่งที่ได้ไปไม่ถูกต้อง
มันเป็นประมาณ 8 นาที และเราจะกลับมาหลังจากนี้
และดูที่ตรง อะไรที่สามารถไปผิด
ถ้าเราสามารถหรี่ lights--
>> [วิดีโอเล่นภาพ]
>> -Computers เราได้ทั้งหมดมายอมรับ ปัญหาที่มักจะทำลาย
ไปกับพวกเขา
บักไวรัสและซอฟต์แวร์ บกพร่องขนาดเล็กที่มีราคา
ที่จะจ่ายเพื่อความสะดวก
แต่ในเทคโนโลยีชั้นสูงและความเร็วสูง ทหารและการใช้งานโปรแกรมพื้นที่
ปัญหาที่เกิดขึ้นมีขนาดเล็กที่สุดสามารถ จะขยายเข้าไปในภัยพิบัติ
เมื่อวันที่ 4 มิถุนายน 1996 นักวิทยาศาสตร์เตรียม ที่จะเปิดตัวกำลังใจ Ariane 5 จรวด
มันได้รับการดำเนินการทางวิทยาศาสตร์ ดาวเทียมได้รับการออกแบบ
ที่จะสร้างได้อย่างแม่นยำว่า โลกปฏิสัมพันธ์สนามแม่เหล็ก
กับลมพลังงานแสงอาทิตย์
จรวดถูกสร้างขึ้นสำหรับ องค์การอวกาศยุโรป
และยกออกจากโรงงาน บนชายฝั่งของเฟรนช์เกีย
>> และอื่นประมาณ 30 วินาทีใน เที่ยวบินที่พวกเขาเป็นครั้งแรก
สังเกตเห็นบางสิ่งบางอย่างที่เกิดขึ้นที่ไม่ถูกต้อง
หัวฉีดที่มีการหมุน ในทางที่พวกเขาจริงๆไม่ควร
ประมาณ 40 วินาทีในการบิน เห็นได้ชัดว่ารถอยู่ในปัญหา
และที่ว่าเมื่อพวกเขาทำ การตัดสินใจที่จะทำลายมัน
เจ้าหน้าที่ความปลอดภัยในช่วงที่มี ความกล้าอย่างมากกดปุ่ม
จรวดระเบิดขึ้นก่อนที่มันจะทำได้ เป็นอันตรายต่อความปลอดภัยของประชาชน
>> -This เป็นหญิงสาว การเดินทางของอาริอาน 5
และการทำลายล้างของมันเอา วางเพราะข้อบกพร่อง
ที่ฝังอยู่ในซอฟแวร์ของจรวด
ปัญหา -The บน อาริอานคือการที่มี
เป็นตัวเลขที่จำเป็นต้องใช้ 64 บิตในการแสดง,
และเขาต้องการที่จะแปลง มันเป็นจำนวน 16 บิต
พวกเขาคิดว่าจำนวน ก็ไม่เคยไปมีขนาดใหญ่มาก
ว่าส่วนใหญ่ของผู้ที่อยู่ในตัวเลข จำนวน 64 บิตเป็น 0
พวกเขาผิด
>> -The ไร้ความสามารถของหนึ่ง โปรแกรมซอฟต์แวร์ที่จะยอมรับ
ชนิดของหมายเลขที่สร้างขึ้นโดย อีกคนหนึ่งคือที่รากของความล้มเหลว
การพัฒนาซอฟต์แวร์ได้กลายเป็น ส่วนค่าใช้จ่ายมากของเทคโนโลยีใหม่
อาริอาน 4 จรวดได้รับมาก ที่ประสบความสำเร็จมากของซอฟแวร์
ที่สร้างขึ้นสำหรับมันก็ยัง ใช้ใน Ariane 5
>> -The ปัญหาพื้นฐานคือการที่อาริอาน 5 เร็วเร่งได้เร็วขึ้น
และซอฟต์แวร์ที่ไม่ได้ คิดว่า
>> ทำลาย -The ของจรวด เป็นภัยพิบัติทางการเงินขนาดใหญ่
ทั้งหมดเนื่องจากข้อผิดพลาดซอฟต์แวร์นาที
แต่นี้ไม่ได้เป็นครั้งแรก เวลาปัญหาการแปลงข้อมูล
ได้รบกวนเทคโนโลยีจรวดที่ทันสมัย
>> -in ปี 1991 ที่มีจุดเริ่มต้น ของสงครามอ่าวครั้งแรก
ขีปนาวุธต่อต้านการก่อการร้าย ประสบการณ์ชนิดที่คล้ายกัน
ของปัญหาการแปลงจำนวน
เป็นผลให้ 28 คน 28 ทหารอเมริกัน
ถูกฆ่าตายและเกี่ยวกับ ได้รับบาดเจ็บ 100 คนอื่น ๆ
เมื่อรักชาติซึ่งควร เพื่อป้องกัน scuds เข้ามา
ล้มเหลวในการยิงขีปนาวุธ
>> เมื่อมีอิรักบุกคูเวตและอเมริกา เปิดตัวพายุทะเลทรายในช่วงต้นปี 1991
รักชาติแบตเตอรี่ขีปนาวุธถูกนำไปใช้ เพื่อปกป้องซาอุดีอาระเบียและอิสราเอล
จากการโจมตีขีปนาวุธสกั๊ดอิรัก
ผู้รักชาติเป็นสหรัฐช่วงกลาง พื้นสู่อากาศระบบ
ผลิตโดย บริษัท Raytheon
>> ขนาด -The ของ interceptor รักชาติ ตัวเองเป็นเรื่องเกี่ยวกับประมาณ 20 ฟุตยาว
และมันก็มีน้ำหนักประมาณ£ 2,000
และจะดำเนินการรบของ about-- ฉันคิดว่ามันประมาณ£ 150
และจรวดตัวเอง เป็นระเบิดสูง
ซึ่งมีชิ้นส่วนที่อยู่รอบ ๆ
ปลอกหัวรบคือ ที่ออกแบบมาเพื่อทำหน้าที่เหมือนสามสิบ
>> ขีปนาวุธ -The มี ดำเนินการ, 4 ต่อตู้คอนเทนเนอร์
และจะถูกส่งโดยรถกึ่งพ่วง
>> -The รักชาติต่อต้านระบบขีปนาวุธ กลับไปอย่างน้อย 20 ปีในขณะนี้
มันถูกออกแบบมา เป็นขีปนาวุธป้องกันภัยทางอากาศ
ที่จะยิงลงเครื่องบินศัตรู
ในสงครามอ่าวครั้งแรก เมื่อสงครามที่มาพร้อม
กองทัพต้องการที่จะใช้มันเพื่อ ยิงลง scuds ไม่เครื่องบิน
อิรักกองทัพไม่ได้ มากของปัญหา
แต่กองทัพเป็นห่วงเกี่ยวกับ scuds
ดังนั้นพวกเขาจึงพยายามที่จะ อัพเกรดรักชาติ
>> -Intercepting ศัตรู วิถีการเดินทางที่จักรห้า
ก็จะเป็นสิ่งที่ท้าทายพอ
แต่เมื่อรักชาติ ก็รีบวิ่งเข้าไปในบริการ
กองทัพไม่ได้ตระหนักถึงของ การปรับเปลี่ยนที่ทำให้อิรัก
scuds ของพวกเขาไปไม่ได้เกือบจะตี
>> อะไรที่เกิดขึ้นเป็น scuds ที่ ที่กำลังจะมาในได้ไม่แน่นอน
พวกเขาถูกโยกเยก
เหตุผลนี้, เป็นชาวอิรักในการสั่งซื้อ
ที่จะได้รับ 600 กิโลเมตรจาก ขีปนาวุธระยะ 300 กิโลเมตร
เอาน้ำหนักออกจากหัวรบด้านหน้า และทำให้จรวดเบา
ดังนั้นตอนนี้รักชาติพยายามที่จะมา ที่สกั๊ดและส่วนใหญ่ของเวลา
ส่วนใหญ่ที่ครอบงำของ เวลามันก็จะบินโดยสกั๊ด
>> -Once ผู้ประกอบการระบบต่อต้านการก่อการร้าย ตระหนักถึงความรักชาติพลาดเป้าหมายของตน
พวกเขาระเบิดจรวดต่อต้านการก่อการร้ายของ เพื่อหลีกเลี่ยงการบาดเจ็บล้มตายไปได้ถ้ามัน
ได้รับอนุญาตให้ตกอยู่กับพื้นดิน
>> ใช่หรือไม่เพราะเป็นสิ่งที่คนส่วนใหญ่เห็น ผู้บั้งไฟขนาดใหญ่ในท้องฟ้า
และเข้าใจผิดว่าเป็น ดักขีปนาวุธสกั๊ดของ
แม้ว่าในเวลากลางคืน ท้องฟ้ารักชาติปรากฏ
จะเป็นประสบความสำเร็จ ทำลาย scuds ที่ Dhahran,
อาจจะไม่มีข้อผิดพลาด เกี่ยวกับผลการปฏิบัติงาน
มีระบบเรดาร์ต่อต้านการก่อการร้าย สูญหายติดตามของเข้ากั๊ด,
และไม่เคยเปิดตัว อันเนื่องมาจากข้อบกพร่องซอฟต์แวร์
มันเป็นชาวอิสราเอลคนแรกที่ค้นพบ ว่าระบบอีกต่อไปได้ที่
มากขึ้นความแตกต่างเวลา กลายเป็นเนื่องจากนาฬิกาฝังตัว
ในเครื่องคอมพิวเตอร์ของระบบ
>> -About 2 สัปดาห์ก่อน โศกนาฏกรรมใน Dhahran ที่
อิสราเอลรายงานไปยัง กระทรวงกลาโหม,
ว่าระบบที่ได้รับการสูญเสียเวลา ว่าหลังจากที่ประมาณ 8 ชั่วโมงของการทำงาน
พวกเขาสังเกตเห็นว่าระบบที่เป็น กลายเป็นที่เห็นได้ชัดไม่ถูกต้อง
กระทรวงกลาโหมตอบสนองโดยการ บอกทั้งหมดของแบตเตอรี่ต่อต้านการก่อการร้าย
ที่จะได้ออกจากระบบ มาเป็นเวลานาน
พวกเขาไม่เคยบอกว่าสิ่งที่เป็นเวลานาน
8 ชั่วโมง?
10 ชั่วโมง?
1000 ชั่วโมง?
ไม่มีใครรู้ว่า
-The แบตเตอรี่ต่อต้านการก่อการร้าย ไปประจำการที่ค่ายทหาร
ที่ Dhahran และข้อบกพร่องของตนภายใน นาฬิกาที่ได้รับมากกว่า 100 ชั่วโมง
ในคืนวันที่ 25 กุมภาพันธ์
>> -It เวลาที่จะติดตามความถูกต้อง ประมาณ 1/10 ของวินาที
ตอนนี้ 1/10 วินาทีเป็น เป็นจำนวนที่น่าสนใจ
เพราะมันไม่สามารถเป็น แสดงในไบนารีว่า
ซึ่งหมายความว่ามันไม่สามารถ จะแสดงตรง
ในเครื่องคอมพิวเตอร์ที่ทันสมัย​​ดิจิตอลใด ๆ
มันยากที่จะเชื่อ แต่ ใช้สิ่งนี้เป็นตัวอย่าง
ลองมาจำนวน 1/3
1/3 ไม่สามารถแสดงได้ ในทศนิยมว่า
1/3 เป็น 0.333 ไปในอินฟินิตี้
ไม่มีทางที่จะทำอย่างนั้นไม่ได้มี ความถูกต้องสมบูรณ์ในทศนิยม
นั่นคือชนิดเดียวกัน ปัญหาที่เกิดขึ้นในรักชาติ
อีกต่อไประบบการวิ่งที่ ข้อผิดพลาดที่เลวร้ายยิ่งเวลากลาย
>> หลังการ 100 ชั่วโมงของการดำเนินงานข้อผิดพลาด เวลาเป็นเพียงประมาณ 1/3 วินาที
แต่ในแง่ของการกำหนดเป้​​าหมาย วิถีการเดินทางที่จักร 5
มันส่งผลให้การติดตาม ข้อผิดพลาดกว่า 600 เมตร
มันจะเป็นความผิดพลาดร้ายแรง สำหรับทหารที่ Dhahran
>> อะไรที่เกิดขึ้นคือการเปิดตัวสกั๊ดเป็น ตรวจพบโดยดาวเทียมเตือนภัย,
และพวกเขาใหม่ว่าสกั๊ดเป็น มาในทิศทางทั่วไปของพวกเขา
พวกเขาไม่ทราบว่ามันมา
>> -It ตอนนี้ขึ้นอยู่กับเรดาร์ ส่วนประกอบของระบบรักชาติ
ปกป้อง Dhahran, การค้นหาและเก็บ ติดตามขีปนาวุธของศัตรูที่เข้ามา
>> เรดาร์ -The เป็นสมาร์ทมาก
มันจริงจะติดตาม ตำแหน่งของสกั๊ด
และจากนั้นคาดการณ์ที่ มันอาจจะเป็น
ครั้งต่อไปที่ เรดาร์ชีพจรส่งออก
ที่ถูกเรียกว่าประตูช่วง
>> -Then เมื่อรักชาติ ตัดสินใจที่มีเวลามากพอ
ผ่านที่จะกลับไปและตรวจสอบต่อไป สถานที่สำหรับวัตถุที่ตรวจพบนี้
มันจะไปกลับ
ดังนั้นเมื่อมันเดินกลับไปที่ที่ไม่ถูกต้อง สถานที่ก็เห็นวัตถุ
และตัดสินใจว่าไม่มี วัตถุก็คือการตรวจจับเท็จ
และลดลงแทร็ค
เข้ามาแล่นหายไป จากหน้าจอเรดาร์
และวินาทีต่อมามัน กระแทกเข้าค่ายทหาร
สกั๊ดถูกฆ่าตาย 28 และเป็นคนสุดท้าย หนึ่งยิงในช่วงสงครามอ่าวครั้งแรก
น่าเศร้าที่การปรับปรุงซอฟต์แวร์ มาถึงที่ Dhahran ในวันรุ่งขึ้น
ข้อบกพร่องที่มีซอฟแวร์ รับคงปิด
บทหนึ่งในทุกข์ ประวัติศาสตร์ของขีปนาวุธต่อต้านการก่อการร้าย
>> [จบเล่นภาพ]
>> เดวิดเจลัน: ดังนั้นเราจะดูที่ ข้อ จำกัด บางอย่างที่คล้ายกันในเพียงเล็กน้อย
แต่ก่อนอื่นเรามา การเปลี่ยนไปไม่กี่ FYI เป็น
ดังนั้น one-- วันหยุดสุดสัปดาห์นี้มี จะเป็นส่วนสุด
ที่มีความหมายที่จะมาแทนที่ ส่วนที่กำหนดอย่างสม่ำเสมอซึ่ง
จะเริ่มต้นขึ้นในสัปดาห์เหตุ
ลองดูที่เว็บไซต์ของ CS50 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับผู้ที่
พวกเขายังจะได้รับการถ่ายทำและสตรีม มีชีวิตอยู่เพื่อผู้ที่ไม่สามารถที่จะเข้าร่วม
ปัญหา 1 ตั้งอยู่บน เว็บไซต์ของหลักสูตรแล้ว
และเราจะดูที่ ที่ในเพียงนิด ๆ หน่อย ๆ
และเวลาทำงานมากเกินไปจะใช้เวลา วางจันทร์ถึงวันพฤหัสบดีนี้
>> ดังนั้นนี่เป็นที่ยอมรับมากที่สุด โปรแกรมที่เรามองในเวลาที่ผ่านมา
มันก็เหมือนกับการที่ง่ายที่สุด โปรแกรมที่คุณสามารถเขียนใน C,
และแม้กระทั่งที่บิตของการเรียกร้องที่เป็นตัวหนา
ใช่มั้ย?
เพราะมีจำนวนมาก ดูเหมือนซับซ้อนนี้
ดังนั้นลองมาดูอย่างรวดเร็วที่ สิ่งที่บางส่วนขององค์ประกอบเหล่านี้
และจากนั้นก็พยายามที่จะให้ จิตแบบสำหรับวิธีการ
เหล่านี้ที่ง่ายที่สุดของโปรแกรม ทำงานและจากนั้นเราจะเริ่มต้น
มองสิ่งที่เคยที่ซับซ้อนมากขึ้น
ดังนั้นสายนี้ที่นี่เน้นตอนนี้ สีเหลือง, สิ่งที่พวกเราพูดครั้งสุดท้าย
ว่านี้ไม่สำหรับเรา?
อะไรจุดประสงค์จะทำหน้าที่?
ทุกคนจากที่ไกลออกไปกลับมา?
ใช่
>> สมาชิกผู้ชม: [ไม่ได้ยิน]
เดวิดเจลัน: ดี
ดังนั้นจึงช่วยให้คุณเข้าถึง คำสั่งหรือขอ
เรียกพวกเขาฟังก์ชั่นที่มีคน อื่นเขียนที่มีการประกาศ
เพื่อที่จะพูดในบางไฟล์อื่น ๆ
ดังนั้นเราจะเห็นว่าสิ่งที่เป็นไฟล์ .h คือเมื่อเทียบกับไฟล์ .c ในที่สุด
แต่ตอนนี้เพิ่งรู้ printf ว่าตัวอย่างเช่น
เป็นหนึ่งในฟังก์ชั่นที่ได้รับ ประกาศในบางไฟล์อื่น ๆ ที่ไหนสักแห่ง
อื่นในฮาร์ดไดรฟ์เมฆที่ ช่วยให้เราสามารถเข้าถึง printf และใช้งานได้
โดยไม่ต้องบูรณาการ ล้อตัวเองว่า
ในขณะเดียวกันหลัก
สิ่งที่เป็นอะนาล็อกของหลักสัปดาห์ที่ผ่านมา?
ใช่
>> สมาชิกผู้ชม: ธงสีเขียวมีการคลิก
>> เดวิดเจลัน: ใช่
รอยขีดข่วนของเมื่อธงสีเขียวคลิก
มันเหมือนชิ้นส่วนจิ๊กซอว์ สิ่งที่ kicks off
และอื่น ๆ ในทำนองเดียวกันได้โลก ตัดสินใจหลายปีที่ผ่านมาว่าใน C,
และพวงของภาษาอื่น ๆ ถ้าคุณต้องการที่จะเขียนโปรแกรม
ฟังก์ชั่นครั้งแรกของคุณ จะต้องมีการเรียกว่าหลัก
และก็จะมีลักษณะเช่นนี้
แต่เราจะกลับมา อีกครั้งกับสิ่งที่, int,
และเป็นโมฆะหมายถึงในบริบทที่
สำหรับตอนนี้วงเล็บปีกกาที่มีชนิด เช่นปริศนารอยขีดข่วนของรูปร่างชิ้น
ที่ห่อหุ้มจำนวนเส้นบาง
และในหมู่บนเส้น นี่เป็นหนึ่งในที่นี่
printf ฟังก์ชั่นที่มีวัตถุประสงค์ใน ชีวิตคือการพิมพ์สตริงที่จัดรูปแบบ
และโดยการจัดรูปแบบที่ผมหมายถึงคุณ สามารถเสียบค่าตัวยึด
และคุณสามารถระบุจำนวนทศนิยม จุดจำนวนตัวเลขในการพิมพ์
หลังจากจุดทศนิยมและชอบ
และ printf ของหลักสูตรจะใช้เวลาหนึ่ง หรือการขัดแย้งมากขึ้นหรือพารามิเตอร์
หรือที่รู้จักมากขึ้นก็เป็นปัจจัยการผลิต
>> printf ดังนั้นเหมือนมาก ฟังก์ชั่นใช้ปัจจัยการผลิต
และปัจจัยการผลิตเหล่านั้นจะถูกกอด โดยทั้งสองวงเล็บที่นี่
และภายในของผู้ที่เป็นหนึ่งในการป้อนข้อมูล
มันเป็นสตริงที่เราได้เรียกมันว่า ซึ่งเป็นเพียงลำดับของตัวอักษร
เหมือนคำหรือวลีหรือทั้งหมด เรียงความแม้กระทั่งในระหว่างคำพูดคู่
และนั่นคือสิ่งที่เกิดขึ้นที่มีอิทธิพลต่อ พฤติกรรมของ printf เพราะแน่นอน
เป็นเพียงฟังก์ชั่นการพิมพ์ทั่วไป
มันจะไม่ทราบว่าสิ่งที่ พิมพ์ถ้าคุณบอกว่า
แล้วข้อปลีกย่อยบาง
สิ่งที่พวกเราพูดแบบนี้แปลก ลำดับของสัญลักษณ์คืออะไร?
ใช่
>> สมาชิกผู้ชม: สายใหม่
>> เดวิดเจลันสายใหม่
ดังนั้นมันจะเปิดออกคุณก็ไม่สามารถตี ใส่เมื่อคุณกำลังเขียนโปรแกรม
โดยทั่วไปคอมไพเลอร์จะได้รับ สับสนเล็กน้อยเป็นสิ่งที่คุณหมายถึง
แต่คุณต้องแท้จริง พูดให้ฉันบรรทัดใหม่ที่นี่
และอื่น ๆ / n คือสิ่งที่เราทั่วไป เรียกตัวหนี
ดังนั้น n สำหรับบรรทัดใหม่
และคอมไพเลอร์รู้ ที่เมื่อเห็น / n,
มันจริงควรทำให้เกิดเครื่องคอมพิวเตอร์ ในท้ายที่สุดหรือ printf ในกรณีนี้
ที่จะพิมพ์ออกมาใหม่ที่เกิดขึ้นจริง สายเช่นเดียวกับการกดปุ่มที่ป้อน
บนแป้นพิมพ์
และสุดท้ายสิ่งที่เราพูดได้ ชิ้นส่วนของรูปแบบนี้คือ?
มันไม่เป็นตัวแทนของอะไร?
ใช่
>> สมาชิกผู้ชม: [ไม่ได้ยิน]
>> เดวิดเจลัน: มันเป็นเพียง ปลายของเส้น
มันเป็นจุดสิ้นสุดของคำสั่ง
และตระหนักดีว่าเราทำไม่ได้ ทำให้พวกเขาได้ทุกที่
แน่นอนเราไม่ได้ทำให้พวกเขา ที่ปลายของสายทุก
ยกตัวอย่างเช่นมีไม่มีบน บรรทัดแรกมีใครในบรรทัด
ด้วยหลักมีไม่มี หลังจากวงเล็บปีกกาที่
แต่คุณจะเริ่มเห็นและได้รับ คุ้นเคยกับการที่มันเรียกร้องให้
และก็มักจะหลังจากที่ฟังก์ชั่น โทรหรือคำสั่ง, การกระทำบางอย่าง
ว่าคุณกำลังจริงการ
>> และรู้ว่าตอนนี้โดยเฉพาะอย่างยิ่งถ้า ในหมู่ผู้ที่สะดวกสบายน้อยลง
เหล่านี้เป็นชนิดของสิ่งที่โง่ ที่คุณจะจบลงโดยบังเอิญต่อสู้
หัวของคุณกับผนังมากกว่า
เพราะคุณจะมีเหตุผล มีความมั่นใจในปัญหาบางอย่าง
คุณได้รับการแก้ไขสำหรับปัญหา ชุดและสิ่งแช่งเพียง
จะไม่รวบรวมหรือแม้กระทั่งการทำงาน
และบ่อยในช่วงต้นของมันจะ เป็นเพราะคุณพลาดวงเล็บ,
หรือคุณพลาดอัฒภาค
และอื่น ๆ เพียงแค่มีสติ เหล่านี้ชนิดของสิ่งที่
และพยายามที่จะไม่ได้รับความผิดหวังจากการ พวกเขาเพราะอย่างรวดเร็วเช่นนี้
กลายเป็นหมวกใบเก่า
แต่มันเป็นเรื่องง่ายมากที่จะได้รับ ผิดหวังในช่วงต้นเป็นผล
>> ดังนั้นตอนนี้ลองมาดูที่วิธีการที่ บรรทัดนี้เป็นจริงการทำงาน
แล้วมองไปที่เล็กน้อย หนึ่งที่ซับซ้อนมากขึ้น
ดังนั้นเราจึงมีมากกว่าที่นี่ ความสามารถในการวาดภาพบนหน้าจอนี้
และให้คิดว่า นี้คือหน้าจอคอมพิวเตอร์ของฉัน
แต่ผมกำลังเขียนสวัสดีโปรแกรม และฉันไม่ได้ดำเนินการ printf
คนอื่นได้ดำเนินการ printf
ใครต้องการที่จะเรียกร้องให้ ได้ดำเนินการ printf?
หากเราอาจ?
สิทธิทั้งหมดคุณชื่ออะไร?
>> นักเรียนที่ 1: [? Copal ?]
>> เดวิดเจลัน: Copal มาขึ้น
มาขึ้น
ทั้งหมดขวา
ดังนั้นเราจึงมีที่นี่บางแท็กชื่อ เนื่องจากเราจะทำให้เกมเล็ก ๆ น้อย ๆ นี้
และเราจะโทรห​​าคุณ printf
และถ้าคุณต้องการที่จะมาที่นี่ สิ่งที่ฉันได้เพียงแค่วาดบนหน้าจอ
มันค่อนข้างง่ายมีฉันนี้
>> สิทธิทั้งหมดเพื่อให้สวัสดีชื่อของฉันคือ printf ถ้าคุณต้องการที่จะนำว่าในวันที่
ทั้งหมดขวา
และถ้าคุณสามารถไปยืน จากหน้าจอคอมพิวเตอร์
ราวกับว่าคุณเป็นฟังก์ชั่นที่ มาพร้อมกับระบบคอมพิวเตอร์เครื่องนี้
และวัตถุประสงค์ในชีวิตของคุณคือ ที่จริงการพิมพ์บางสิ่งบางอย่าง
แต่เหมือนโปรแกรมที่เรา เพิ่งมีบนหน้าจอที่นี่
เรากำลังจะต้อง จริงให้คุณใส่บาง
>> ดังนั้นถ้าใส่ฉันที่นี่คือ เห็นได้ชัดว่าสิ่งที่ถูกส่งไปยัง printf,
ขอเยาะเย้ยชนิดของมันขึ้นมาเช่นนี้
ฉันจะเขียนตัวอักษร ชิ้นส่วนของกระดาษ "สวัสดีโลก"
เครื่องหมายเอ็นและเพื่อให้มีความชัดเจนในสิ่งที่ ฉันได้วาดเพียงชิ้นส่วนของกระดาษนี้
ลักษณะเช่นนี้
ดังนั้นเมื่อผมเรียกใช้โปรแกรมนี้และนี้ เส้นสีเหลืองรหัสที่ได้รับการดำเนินการ
มันเหมือนกับว่าฉันโปรแกรมทักทายที่ กำลังยื่นเข้าบางออกไปทำงาน
ว่าคนอื่นเขียน
>> และถ้าคุณมีนิ้วของคุณ สามารถทำได้จริงด้วยนิ้วของคุณ
วาดภาพบนหน้าจอใด ๆ ก็ตาม มันเป็นสิ่งที่คุณได้รับการส่งมอบ,
ผลที่ออกมาในท้ายที่สุดคือการ เห็นว่าที่บนหน้าจอ
และกรณีมุมเล็ก ๆ น้อย ๆ ที่นี่
และที่ดีเราไม่ควรจะเห็น สายใหม่ที่จุดนี้
มันจะไม่ถูกต้องสำหรับคุณ อย่างชัดเจนวาดขึ้นบรรทัดใหม่
แต่ถ้าเราเก็บไว้เขียนคำบน หน้าจอที่พวกเขาจะจบลงที่ด้านล่าง
>> ดังนั้นขอบคุณมาก แต่ติด รอบที่นี่เพียงช่วงเวลาหนึ่ง
ตอนนี้เราต้องการคนอื่น ๆ อาสาสมัครถ้าเราทำได้
ที่จะต้องมีบทบาท of-- มันเป็นคนเดียวในวง
ตอนนี้
วิธีตกลง about--
ที่นี่.
มาขึ้น
คุณชื่ออะไร?
>> นักเรียน 2: [? Ivay ?]
เดวิดเจลัน: ขออภัย?
นักเรียน 2: [? Ivay ?]
เดวิดเจลัน: อีธานมาขึ้น
ไม่ได้หรือไม่
ฉันได้รับไม่ถูกต้องว่าแม้ หลังจากที่คุณบอกว่ามันเป็นครั้งที่สอง?
มาขึ้น
มันยากที่จะได้ยินเสียงที่นี่
ตกลง.
และฉันขอโทษคุณชื่ออะไร?
>> นักเรียน 2: [? Ivay ?]
>> [? เดวิดเจลัน: Ivay ?] ตกลง.
สำหรับตอนนี้ถ้าคุณทำไม่ได้ ใจคุณจะ getString
>> นักเรียน 2: ตกลง
เย็น
เดวิดเจลัน: ดังนั้นถ้าคุณต้องการ ที่จะยืนอยู่ที่นี่เพียงสักครู่
ลองมาดูที่เล็กน้อย โปรแกรมที่ซับซ้อนมากขึ้นว่า
ตอนนี้มีสามบรรทัดของรหัส
ดังนั้นเราจึงมีหนึ่งระบุชื่อของคุณโดยใช้ printf; สองเรียกร้องให้ GetString ที่
ตามมาด้วยการมอบหมายให้หนึ่ง ตัวแปรที่เรียกว่าสตริง s หรือที่เรียกว่า s;
แล้วโทรไป printf อื่น แต่เวลาที่มีสองปัจจัยการผลิตนี้
>> ดังนั้นเราจึงได้ทำมาแล้วรัฐ ชื่อของคุณหรือเปล่าเราได้
ทำมาแล้วโทร printf
ดังนั้นฉันจะเขียนชื่อของคุณรัฐ
ดังนั้นสิ่งที่ผมกำลังจะไป ผ่าน printf ในเวลาเพียงชั่วครู่หนึ่ง
ค่อนข้างเป็นเพียงนี้
ดังนั้นหากคุณต้องการที่จะไปข้างหน้าและวาดนี้ บนหน้าจอที่ป้อนข้อมูลของคุณในขณะนี้
ทั้งหมดขวา
และลืมสตริงขณะนี้เรามี สายของเราเองของรหัสที่นี่
ดังนั้นใน GetString เราต้อง ที่จริงเรียก GetString
ดังนั้นจุดมุ่งหมายในชีวิตของคุณคือการเดิน ออกไปในวงถ้าคุณทำได้
และได้รับชื่อของใครบางคน
แต่ขอให้คุณ สิ่งที่จะใส่ไว้ใน
หากคุณต้องการที่จะไป ไปข้างหน้าและได้รับสตริง
ได้รับชื่อของใครบางคนว่า ชิ้นส่วนของกระดาษถ้าคุณสามารถทำได้
>> ทั้งหมดขวา
และเราจะเห็นในเวลาเพียงชั่วครู่หนึ่ง ที่มีชื่อเราได้รับ
ในขณะเดียวกันสิ่งที่ฉันกำลังจะไป มีความพร้อมเป็นชิ้นส่วนที่ว่างเปล่า
กระดาษที่ฉันจะ ในการจัดเก็บสิ่งที่มูลค่ามัน
คือ GetString จะกลับมาให้ฉัน ฉันเป็นตัวแปรสตริงที่เรียกว่า, s
ทั้งหมดขวา
ดังนั้นสิ่งที่คุณได้ที่นี่?
Nik
ทั้งหมดขวา
ดังนั้นเราจึงมีชื่อนิคที่นี่
ดังนั้นนี่คือสิ่งที่แท้จริง ได้รับการส่งกลับ
ให้ฉันเพื่อที่จะพูดโดย GetString
>> ผมตอนนี้กำลังจะไป ดำเนินการด้านซ้ายมือ
การแสดงออกที่ที่ฉันเพียงแค่ คัดลอกเพื่อวัตถุประสงค์ในวันนี้นิค
ดังนั้นตอนนี้ฉันมีตัวแปร เรียกว่า s การจัดเก็บชื่อนิค
ผมได้ส่งไปแล้ว printf, อาร์กิวเมนต์ก่อนหน้า
แต่ในบรรทัดที่สามและครั้งสุดท้ายของเรา รหัสที่จริงผมมีมือ printf
บางสิ่งบางอย่างเล็ก ๆ น้อย ๆ different-- "สวัสดี% s" n ทับขวา
>> และเพื่อให้บรรทัดสุดท้ายที่ฉันจะ เพื่อ send-- สิ่งสุดท้ายที่ฉัน
จะเขียนลงในขณะนี้คือ
ดังนั้นทั้งสองสายรหัสหรือ ค่อนข้างบรรทัดสุดท้ายของรหัส
เรียกร้องให้ทั้งสอง inputs-- หนึ่งในนี้และทั้งสองนี้
ดังนั้นถ้าฟังก์ชั่น printf ของเรา ขณะนี้คุณสามารถใช้เวลาเหล่านี้เป็น input
ให้ฉันล้างหน้าจอสำหรับคุณ
ที่จริงไม่ได้คุณสามารถไปข้างหน้า
เราจะปล่อยให้มันขึ้นตั้งแต่ มันอยู่ในโปรแกรมเดียวกัน
เราควรจะเห็นสวัสดีนิค
ทั้งหมดขวา
ดังนั้นนี่ก็ค่อนข้างไม่กี่ ห่วงที่จะข้ามผ่านเพียง
จะเขียนระบุของคุณ ชื่อและสวัสดีนิค
แต่ตอนนี้ความคิดที่เรียบง่ายของการส่งผ่านข้อความ ที่ผ่านการป้อนข้อมูลและการรับส่งออก
รูปแบบเป็นสิ่งที่เรากำลังจะมี สำหรับแม้แต่ฟังก์ชั่นที่ซับซ้อนมากที่สุด
ดังนั้นขอขอบคุณมากที่คุณทั้งสอง
เรามีความเครียดที่น่ารัก ลูกที่นี่สำหรับคุณ
และขอขอบคุณคุณ GetString ของเรา และอาสาสมัคร printf เหมือนกัน
ขอขอบคุณ.
ทั้งหมดขวา
ขอขอบคุณที่คุณทั้งสอง
>> ดังนั้นเราจึงได้รับการพูดถึง ป่านนี้ส่วนใหญ่เกี่ยวกับสตริง
และปรากฎว่า C สามารถจริง เข้าใจไม่กี่ชนิดข้อมูลที่แตกต่าง
ในความเป็นจริงลอง ดูที่เหล่านี้ที่นี่
ดังนั้น C และจำนวนมากของภาษา สิ่งที่เรียกว่าเข้าใจตัวอักษร
ถ่านโดยทั่วไป ไบต์เดียวหรือแปดบิต
และมันหมายถึงตัวเดียว เช่นตัวอักษร A, หรือเมืองหลวง
ตัวอักษรหรือตัวอักษรที่พิมพ์เล็ก หรือเครื่องหมายอัศเจรีย์,
หรือตัวอักษรใด ๆ ที่คุณสามารถพิมพ์บน แป้นพิมพ์ของคุณและบางครั้งมากยิ่งขึ้น
นอกจากนี้เรายังเกิดขึ้นเพื่อดูลอย
ลอยเป็นโดยทั่วไปเป็น ค่า 32 บิตหรือสี่ไบต์
เพราะอีกครั้งหนึ่งไบต์เป็นแปดบิต
>> ดังนั้นลอยเป็นค่าที่จุดลอย สิ่งที่มีจุดทศนิยม
และแน่นอนว่าเป็นสิ่งที่ หนังเรื่องนี้ได้พูดคุย
เกี่ยวกับเมื่อพวกเขาพูดเกี่ยวกับการลอย ค่าจุดบางจำนวนคงที่ของบิต
ถูกนำมาใช้เพื่อเป็นตัวแทนของจำนวนจริง
แต่มีสิ่งที่เรียกว่ายังคู่
เหล่านี้อยู่ใน Java ถ้าคุณได้ถ่าย APCS,
และคู่เป็นชื่อโชคดี แนะนำเป็นใหญ่เป็นสองเท่าลอย
ก็ยังคงเป็นจำนวนจริง มันก็มีบิตมากขึ้น
ซึ่งจะเป็นที่เคยแม่นยำมากขึ้น หรือการจัดเก็บตัวเลขขนาดใหญ่
int เป็นเรื่องง่าย
เราได้พูดคุยเกี่ยวกับที่ครั้งสุดท้าย
มันเป็นเพียงจำนวนเต็ม
และโดยทั่วไป 32 บิตหรือสี่ไบต์
>> ดังนั้นถ้าคุณมีเรามาดูตอนนี้ 32 bits-- และเราทำอย่างนี้ในสัปดาห์ที่ 0,
เคยให้ briefly-- ถ้าคุณมี 32 บิตสิ่งที่ยิ่งใหญ่ที่สุด
หมายเลขที่คุณสามารถแสดงเป็นจำนวนเต็ม?
ให้หรือรับ?
มันเหมือน 4 พันล้าน และนั่นเป็นเพียงถ้าเรา
ที่เป็นตัวแทนของตัวเลขบวกเท่านั้น
หากคุณมี 32 บิตและคุณต้องการ แสดงตัวเลขเชิงลบเช่นกัน
ช่วงของคุณเป็นหลักเชิงลบ 2 พันล้านบวก 2 พันล้าน
แต่โดยทั่วไปเราจะเริ่มต้น ไปที่ 0 ถึง 4 พันล้าน
>> คุณไม่จำเป็นต้องรู้อย่างแม่นยำ แต่ เราสามารถมองเห็นได้ในความเป็นจริงถ้าฉันเพียงแค่
เปิดเครื่องคิดเลขเล็ก ๆ น้อย ๆ ที่นี่
ที่ฉันสามารถทำได้ 2 32 และ ที่ว่าวิธีการใหญ่
วิธีการหลายค่าที่คุณสามารถ ตัวแทน 32 บิต
และมันก็เป็นประมาณ 4 พันล้าน
ดังนั้นเราจะให้เห็นตัวเลขที่ ในสถานที่ที่แตกต่างกันไม่กี่
แต่ถ้าคุณต้องการอีกต่อไป ตัวเลขไปกว่านั้น
มันจะเปิดออกที่มี สิ่งที่เรียกว่านาน
และเป็นเวลานานยาว โดยทั่วไป 64 บิตซึ่ง
หมายความว่าลำดับความสำคัญ ที่ยิ่งใหญ่กว่าเป็น int
>> ดังนั้นผมจึงไม่สามารถแม้แต่จะออกเสียงที่ใหญ่ที่สุด ตัวเลขที่คุณสามารถเป็นตัวแทน
แต่มันใหญ่กว่าอย่างเห็นได้ชัดคือ
ขณะนี้เป็นกันในอดีต ถ้า int เป็น 32 บิต
และนานเป็น 64 บิตวิธี ขนาดใหญ่เป็นเวลานานไม่นาน?
คุณจะคิดว่ามันเป็นเวลานานกว่าที่เป็น int แต่อาจจะน้อยกว่าความยาวยาวยาว
แต่ที่จริงขึ้นอยู่กับ
>> และดังนั้นจึงจะเปิดออกอย่างใดอย่างหนึ่ง ผิดหวังมากเกินไป
กับการเขียนโค้ดในระบบบางอย่าง คือว่าไม่ทั้งหมดของชนิดข้อมูลเหล่านี้
มีค่าที่กำหนดไว้ล่วงหน้า
บางครั้งก็บิตจำนวนมากนี้
บางครั้งมันเป็นเรื่องที่หลายบิต
ดังนั้นคุณจริงต้องรู้ว่า บางครั้งสิ่งที่ฮาร์ดแวร์
คุณกำลังใช้งานซอฟแวร์ของคุณบน
โชคดีและภาษาอื่น ๆ ชนิดข้อมูลอื่น ๆ ที่ตอนนี้มีอยู่,
ช่วยให้คุณสามารถจะแม่นยำมากขึ้น
ดีที่เราเห็นสตริง และเราเห็นบูลมากเกินไป
แต่มันกลับกลายเป็นผู้ที่มา เฉพาะกับห้องสมุด CS50
ดังนั้นผู้ที่ไม่ได้สร้างขึ้น เข้าสู่ซีผู้แทน
มาในแฟ้มที่เรียกว่า CS50.h ที่เราจะในที่สุด
กลับชั้นเปลือกของ
แต่ตอนนี้พวกเขากำลังเพียง ชนิดข้อมูลเพิ่มเติม
บูลเป็นจริงหรือเท็จและ สตริงเป็นลำดับของตัวอักษร
เหมือนคำ
ตอนนี้ printf เราได้เห็นมี ตัวยึด% s เป็นหนึ่ง
และคุณอาจจะสามารถที่จะตอนนี้ สรุปจากตัวอย่างเหล่านี้อื่น ๆ วิธี
คุณอาจจะมีตัวยึด ชนิดข้อมูลที่แตกต่าง
ยกตัวอย่างเช่นการใช้การคาดเดาถ้าคุณ ต้องการที่จะพิมพ์ออกมาเป็นถ่านเดียวโดยใช้
printf ตัวยึดน่าจะเป็น c%
และถ้าคุณต้องการที่จะพิมพ์ออกมา จำนวนเต็มกับตัวยึด% ฉัน
แนวหน้า% เป็นค่าทศนิยมยาวยาว แต่นานเพื่อให้แผนที่ที่
และแล้ว f% สำหรับลอย ค่าจุดหรือคู่
ดังนั้นบางครั้งที่พวกเขากำลังกลับมาใช้ใหม่ ในบริบทที่แตกต่างกัน
ดังนั้นเราจะมองเห็นและใช้ บางส่วนของผู้อยู่ตลอดเวลา
และ printf และหน้าที่อื่น ๆ นอกจากนี้ยังมี คนอื่น ๆ ที่สนับสนุน 'ลำดับหนี
และบางครั้งสิ่งเหล่านี้เป็นสิ่งที่จำเป็น
n เครื่องหมายเพื่อให้เป็นบรรทัดใหม่
เสื้อทับขวาไม่ทุกคน ต้องการที่จะใช้แทง?
สมาชิกผู้ชม: แท็บ
เดวิดเจลัน: แท็บ
ดังนั้นหากคุณต้องการจริง ที่จะพิมพ์ออกแท็บไม่
จำนวนคงที่ของช่องว่างที่เกิดขึ้นจริง แต่ อักขระแท็บ, คุณไม่ได้ตีของคุณ
แท็บบนแป้นพิมพ์โดยทั่วไป คุณจริงทำเสื้อทับขวา
เครื่องหมายคำพูดคู่ ทำไมฉันจะเคยต้องการที่?
ใช่มั้ย?
ทำไมฉันไม่สามารถเพียงแค่พิมพ์ ราคาคู่บนแป้นพิมพ์ของฉันได้อย่างไร
สมาชิกผู้ชม: เพราะมิฉะนั้นจะ
จะคิดว่ามันเป็นที่สิ้นสุด ของชอบ [พิมพ์ของคุณ? ข้อความ ?]
>> เดวิดเจลัน: แน่นอน
โปรดจำไว้กับเรา ตัวอย่าง printf เมื่อเรา
ถูกผ่านไป printf ในการป้อนข้อมูล ที่ด้านซ้ายของสายป้อนว่า
และด้านขวาของท่านว่า ฤดูใบไม้ผลิของหลักสูตรเป็นราคาคู่
ถ้าใส่ของคุณเองมีคู่ อ้างอยู่ตรงกลางของที่
คอมพิวเตอร์อาจที่อาจเกิดขึ้น ได้รับสับสนเป็นไป
ไม่นี้ราคาคู่ อยู่ในช่วงกลางหรือไม่
มันอยู่กับคนซ้าย?
มันไม่ได้อยู่กับคนที่เหมาะสมหรือไม่
ดังนั้นถ้าคุณต้องการที่จะทำให้มันสุด ชัดเจนที่คุณทำเครื่องหมายคำพูดคู่
เพื่อที่จะหนีออกมาเพื่อที่จะพูดและ มันไม่ได้แฟทต์อย่างอื่น
และมีไม่กี่คนที่นี่ อาเครื่องหมายคำพูดเดียว, 0,
ที่เราอาจจะเห็นในช่วงเวลาที่ดี
และตอนนี้สิ่งที่เกี่ยวกับฟังก์ชั่น?
>> ดังนั้นการกระทำที่เราสามารถใช้ป่านนี้ ในภาษานี้, C, ดี, เราได้เห็น
printf ของหลักสูตรและ ของคนอื่น ๆ บนหน้าจอ
ที่นี่ที่เราจะใช้สำหรับ หลักสูตรสองสามสัปดาห์แรกเท่านั้น
มาถึงเมื่อห้องสมุด CS50
และพวกเขาทำให้มันง่ายมากใน C จะได้รับจริงที่ผู้ใช้ป้อน
ปรากฎว่าใน C และ ตรงไปตรงมาในภาษาไม่กี่
มันเจ็บจริงในลำคอที่จะทำ สิ่งที่ง่ายเช่นแจ้งให้ผู้ใช้
สำหรับแป้นพิมพ์สำหรับการป้อนข้อมูลของเขาหรือเธอ
และเพื่อให้ฟังก์ชันเหล่านี้ทำให้มันง่ายขึ้น
>> และก็ยังมีข้อผิดพลาด การตรวจสอบตลอด
เพื่อที่ว่าเมื่อคุณ จำได้ในวันพุธที่เรา
เห็นที่ลองคำเตือน เมื่อผมไม่ให้ความร่วมมือ
และผมพิมพ์คำแทนจำนวนหรือไม่?
เราได้ทำยกของหนักในช่วงต้น บนเพื่อให้แน่ใจว่าผู้ใช้ให้ความร่วมมือ
แต่เหล่านี้เป็นเพียงการฝึกอบรม ล้อที่ในที่สุดเราก็จะ
ได้อย่างรวดเร็วและถอด
>> ดังนั้นเพื่อสรุปแล้ว ลองมาดูอย่างรวดเร็ว,
เหมือนที่เราทำกับรอยขีดข่วนที่ บางโครงสร้างที่ยอมรับใน C.
นี้จะหมายถึงการเรียงลำดับ ของจะเป็นทัวร์ลมกรด,
เพียงเพื่อให้คุณมีการอ้างอิง และการที่คุณได้เห็นสิ่งที่ในตอนแรก
แต่แล้วเราจะดูที่การเข้ารหัสที่เกิดขึ้นจริง ใช้บางส่วนของการก่อสร้างตึกเหล่านี้
มากเหมือนในเกา เมื่อเราได้งบต้องการ
พูดหรือรอใน C เราจะมี ฟังก์ชั่นด้วยเช่น printf
>> ถ้าเราต้องการที่จะแสดงเงื่อนไข ใน C ก็คล้ายกันในจิตวิญญาณ
กับชิ้นส่วนปริศนาที่ว่า มองเช่นนี้ในรอยขีดข่วน
แต่แทนที่จะเรา เพียงแค่เขียนตัวอักษรถ้า
จากนั้นในวงเล็บ เราใส่เงื่อนไข
สภาพที่เป็นสิ่งที่เราจะ เรียกอีกครั้งการแสดงออกบูล
และครั้งนี้เป็นประเภทของ pseudocode
และในความเป็นจริง // เป็นความเห็น
มันเป็นเพียงแค่คำภาษาอังกฤษให้กับตัวเอง
แต่นี้เป็นทั่วไป โครงสร้างของถ้าสภาพ
แต่เราจะเห็นเป็นรูปธรรม ตัวอย่างรอสักครู่
>> หากคุณต้องการที่จะมี แยกสองทางในท้องถนน
เหมือนที่เราทำกับอาสาสมัครของเรา วันพุธที่คุณสามารถมีที่อื่นถ้า
และถ้าคุณต้องการที่จะมีสามและ สภาพสุดท้ายหรือสถานการณ์ค่าเริ่มต้น
คุณสามารถมีเพียงแค่บล็อกอื่นมี
และในทำนองเดียวกันกับการแสดงออกบูลีน คุณสามารถและพวกเขาร่วมกัน
และที่เราเห็นในวันพุธที่ ก็ไม่ได้เป็นเครื่องหมายเดียว
มันเป็นสองเหตุผลในระดับต่ำกว่าที่ ในที่สุดเราก็จะเห็นและเล่นกับ
ไอเอ็นจีหรือสิ่งที่ร่วมกัน 2 แถบแนวตั้ง
บนแป้นพิมพ์ของสหรัฐอเมริกานี้ โดยทั่วไปที่สำคัญ
กับปุ่ม Shift ดังกล่าวข้างต้น ใส่ที่สำคัญของคุณหรือผลตอบแทนที่สำคัญ
>> แล้วมีสิ่งเหล่านี้ที่ เราจะใช้อาจจะครั้งหรือสองครั้ง
พวกเขามีหน้าที่เทียบเท่ากับ สิ่งที่คุณสามารถทำอะไรกับถ้าอื่นถ้า
อื่นถ้าอื่นสร้าง แต่พวกเขากำลังเรียกว่าสวิทช์
พวกเขามีลักษณะที่แตกต่างกันมาก แต่เราจะ เห็นในบางส่วนของรหัสการจัดจำหน่ายของเรา
สำหรับชุดปัญหาในอนาคตมากที่สุด ว่ามันเป็นบางครั้งเพียงแค่สวย
วิธีการแสดงทั้งหมด พวงของเงื่อนไข
โดยไม่ต้องมีจำนวนมากและวงเล็บปีกกา จำนวนมากของวงเล็บและเยื้อง
แต่พวกเขาให้เราไม่มาก อำนาจเกินกว่าที่เรามีอยู่แล้ว
และตอนนี้ลูป
และหนึ่งในนี้เราจะดู ที่ช้ากว่าเล็กน้อย
แต่แล้วเราจะเริ่มต้นที่จะใช้เหล่านี้ โดยเฉพาะอย่างยิ่งสำหรับผู้ที่คุ้นเคยอยู่แล้ว
วิธีนี้เป็นวิธีที่ยอมรับถ้าอย่างไม่น่าเชื่อ วิธีลับในการเขียนในวงซี
>> ตอนนี้วงในเป็นรอยขีดข่วน ตรงไปตรงสวย
คุณมีตลอดไปบล็อก
คุณมีทำซ้ำบล็อกด้วย เพียงตัวเลขที่คุณต้องพิมพ์
และด้วยความที่ห่วงคุณสามารถ ใช้ทั้งความคิดเหล่านั้น
แต่มันเป็นเทคนิคเล็ก ๆ น้อย ๆ
ตรงไปตรงมา แต่ก็ยัง ค่อนข้างง่าย
เมื่อคุณรู้ว่าคำสั่งของ การดำเนินงานคุณอย่างแท้จริง
เพียงแค่จะเสียบค่า และบอกคอมพิวเตอร์ว่าจะทำอย่างไร
ดังนั้นนี่คือตัวอย่าง
นี่คือวงที่ค่อนข้าง เพียงแค่นับจากจำนวนหนึ่งขึ้น
ผ่านอีก
และเพียงแค่วินาศภัย ที่มันแม้ว่าคุณจะมี
ไม่มีประสบการณ์ก่อนด้วย ภาษานี้สิ่งที่จำนวน
มันไม่น่าจะเริ่มนับที่?
ตกลง 0
และฉันคาดเดาว่าเป็นเพราะคุณ เห็นว่ามีเป็น int และฉันเป็น
ซึ่งเป็นตัวแปร
มันเริ่มต้นได้ที่ 0
>> และหลังจากนั้นก็ดูเหมือนว่า เรากำลังผ่าน printf ค่า
และในความเป็นจริงผมทำผิดพลาดเล็ก ๆ น้อย ๆ ที่นี่
แต่นั่นคงที่ได้อย่างง่ายดาย
ผมขอเพิ่มฉันที่นี่
ขณะนี้เรามีความเป็นอยู่ printf ผ่านค่าตัวยึดที่
และสิ่งที่จะนับขึ้นผ่าน?
ผู้ชม: 50
50
49
เดวิดเจลัน: 49
ดังนั้น 50, ได้อย่างรวดเร็วก่อนดูเหมือนว่าเหมาะสม
แต่นั่นก็จะเปิดออกเป็นไปได้ เงื่อนไขของเราที่เราให้การตรวจสอบ
และเรากำลังจะหยุดทันที ฉันจะไม่น้อยกว่า 50
ดังนั้นวงนี้ตรงกันข้ามควร ดำเนินการตราบใดที่ฉันจะน้อยกว่า 50
แต่ทันทีที่มันจะกลายเป็น 50 หรือ 51 หรือแย่ลงก็ควรจะหยุดโดยอัตโนมัติ
ทั้งหมดขวา
>> ดังนั้นสิ่งที่เกิดขึ้นจริงที่นี่?
ดังนั้นนี่คือคำสั่งของ การดำเนินงานสำหรับวง
หนึ่งคุณมี เริ่มต้นที่เรียกว่า
อันนี้เน้นสีเหลือง รหัสจะถูกดำเนินการครั้งแรก
และจะมีผลกระทบที่ตาม วันพุธที่คุณอาจนึก
มันสร้างตัวแปรที่เรียกว่าฉันและมัน ร้านค้าในตัวแปรที่ค่า 0
ดังนั้นฉันเป็น 0 ที่จุดในเรื่องนี้
>> สิ่งต่อไปที่ ที่เกิดขึ้นในโครงสร้างนี้
คือว่าสภาพการตรวจสอบที่ได้รับการ
ดังนั้นฉันจะตรวจสอบทันที คือผมน้อยกว่า 50?
และแน่นอนคำตอบ สำหรับตอนนี้มีแน่นอนใช่
ใช่เพราะผมเป็น 0 และ ที่แน่นอนน้อยกว่า 50
แล้วสิ่งที่เกิดขึ้นคือที่นี้ บรรทัดของรหัสที่ได้รับการดำเนินการ
และในความเป็นจริงถ้ามีหลาย ๆ บรรทัดของรหัสในวงเล็บปีกกาเหล่านั้น
พวกเขาทั้งหมดได้รับการดำเนินการอย่างใดอย่างหนึ่งหลังจากที่อื่น
>> และมีผลบังคับใช้ที่นี่เป็น เห็นได้ชัดว่าจะพิมพ์ออกมา
ฉันจำนวนที่เป็นไปได้ เป็น 0 แล้ว 1 แล้ว 2
แต่ทำไม?
ทำไมมันไม่ได้รับการเพิ่มขึ้น?
ดีสิ่งที่สี่ ที่เกิดขึ้นคือรูปแบบนี้
ได้รับการดำเนินการหลังจากอัฒภาค
ฉัน ++ เป็นวิธีที่จดชวเลขบอก; ใช้ค่าของฉันและเพิ่ม 1 ถึงมัน
และจากนั้นในครั้งต่อไปรอบเพิ่ม 1 ถึงมัน และในครั้งต่อไปรอบ ๆ
เพิ่ม 1 กับมัน
>> ดังนั้นถ้าเราให้ไป สิ่งที่จะเกิดขึ้น
ต่อไปคือผมไม่ได้ไป เริ่มต้นที่ฉันเคยอีกครั้ง
ถ้าผมเก็บไว้เริ่มต้น ฉันเป็น 0 ตัวอย่างนี้
จะไม่จบเพราะ ฉันจะต้องติดอยู่ที่ 0
แต่สิ่งที่จะเกิดขึ้นคือ ว่าเงื่อนไขจะได้รับการตรวจสอบ
บรรทัดของรหัสจะได้รับการดำเนินการ ฉันจะได้รับการเพิ่มขึ้น,
เงื่อนไขจะได้รับการตรวจสอบ รหัสจะได้รับการดำเนินการ
และมันยังคงขี่จักรยานอีกครั้ง และอีกครั้งและอีกครั้ง
จนกว่า i ++ ก่อให้เกิดค่าของ 50
>> สภาพแล้วกล่าวว่า 50 น้อยกว่า 50?
คำตอบที่แน่นอนคือไม่และ ดังนั้นโค้ดทั้งหมดหยุดการดำเนินการ
และถ้าคุณมีรหัสมากขึ้นบนหน้าจอ ลงมาด้านล่างว่าเป็นสิ่งที่เกิดขึ้นต่อไป
มันปรากฏออกมาของวงเล็บปีกกาเหล่านี้และ อย่างต่อเนื่องในการพิมพ์มากขึ้นหลังจากที่
>> ดังนั้นในขณะนี้เป็นเรื่องตลกจาก Foxtrot ที่ ตอนนี้คุณอาจจะเข้าใจ
มันตลกเสมอ
มันก็เหมือนกับการหัวเราะเบา ๆ ชนิดของการไหล,
แล้วคุณจะรู้ว่าคุณไม่ควร จะหัวเราะขบขันเช่นนี้
แต่มีบางประเด็น นี่ pedagogically เกินไป
ดังนั้นมันกลับกลายเป็นว่าฉัน ที่ขาดหายไปชิ้นส่วนของไวยากรณ์
หรือ Foxtrot ของที่หายไป ชิ้นส่วนของไวยากรณ์ที่นี่
สิ่งที่หายไปที่เราเคยมี ในทุกตัวอย่างอื่น ๆ ป่านนี้?
กลับจะมีดังนั้น นั่นเป็นสิ่งที่อื่น
ว่าเราจะกลับมาอีกไม่นาน
สิ่งที่หายไปว่า?
ใช่
>> สมาชิกผู้ชมที่: การเริ่มต้นของ [ไม่ได้ยิน]
>> เดวิดเจลัน: OK
เพื่อใช่
ดังนั้นจริงนี้ is-- ดี และจะเริ่มต้นนับ
ขึ้นไปข้างบนหรือค่อนข้างประกาศขึ้นไปข้างบน
ดังนั้นนี่คือวิธีการทำมันอีก
แต่ไม่ได้อยู่ในบรรทัดเดียวก็ถูกต้องว่า
วิธีการเกี่ยวกับที่นี่?
>> สมาชิกผู้ชม: มันเป็นวงเล็บปีกกาหรือไม่
>> เดวิดเจลัน: ใช่
ดังนั้นวงเล็บปีกกาจะหายไป
แต่รหัสนี้ผมหมายถึงเครดิตของพวกเขา เป็นจริงที่ถูกต้อง syntactically
มันจะเปิดออกคุณทำไม่ได้ ต้องวงเล็บปีกกา
ถ้าคุณมีเพียงหนึ่งบรรทัดของรหัสที่ คุณต้องการที่จะดำเนินการภายในของวง
ตอนนี้เราอยู่เสมอในชั้นเรียนและใน ทั้งหมดของรหัสการจัดจำหน่ายของเรา
รวมถึงวงเล็บปีกกา ต่อไปเพียงเพื่อประโยชน์ของความชัดเจน
แต่รู้ว่าในตำรา และตัวอย่างออนไลน์
คุณเป็นอย่างดีอาจจะเห็นหยิก วงเล็บที่ขาดหายไปบางครั้ง
และที่ว่าตกลงถ้าสิ่งที่คุณ ได้เยื้องและตั้งใจ
เป็นเพียงบรรทัดเดียวของรหัสและไม่ หลายบรรทัดของรหัสที่อาจเกิดขึ้น
ทั้งหมดขวา
ดังนั้นที่เกี่ยวข้องกับปัญหาของ ไม่แน่ชัดเป็นปัญหาของน้ำล้น
ในความรู้สึกที่เหมือนกัน ไม่จำนวนเต็มมีข้อ จำกัด ให้กับพวกเขา
เช่นเดียวกับลอยค่าจุด?
ในโลกที่จุดลอย ค่านิยมที่เราจะไม่สามารถอยู่ได้อย่างแม่นยำเช่นนั้น
หลังจากที่บางครั้ง สิ่งเลวร้ายที่สามารถเกิดขึ้นได้
และโปรแกรมของเราสามารถเป็นรถและข้อผิดพลาด
ตอนนี้แม้จะมีจำนวนเต็ม คุณสามารถทำงานเป็นปัญหา
ตอนนี้จำนวนเต็มไม่ได้ จุดทศนิยมหรือตัวเลขหลังจากที่มัน
มันเป็นเพียงจำนวนธรรมชาติโดยทั่วไป
ดังนั้นสิ่งที่สามารถไปอย่างผิดปกติกับ int แล้ว?
หากฉันใช้ int ไปยัง นับสิ่งที่อาจผิดไป?
ดูเหมือนง่ายมาก
ใช่
>> สมาชิกผู้ชม: ถ้า จำนวนที่ได้รับ [ไม่ได้ยิน]
>> เดวิดเจลัน: ใช่
เกิดอะไรขึ้นถ้าคุณนับสูงดังนั้นที่คุณ ไม่สามารถแสดงความเห็นว่าจำนวนใหญ่จริงๆ
ใช่มั้ย?
ในบางจุดที่คุณกำลังจะ เกินขอบเขต
ของค่า 32 บิตหรือค่า 64 บิต
ตอนนี้อีกครั้งผมไม่แน่ใจว่า การออกเสียงค่า 64 บิต
แต่ฉันรู้ว่ามีจำนวนเต็ม 32 บิต ค่าที่ใหญ่ที่สุดที่จะสามารถ
ถ้าเป็นบวก ค่านิยมคือประมาณ 4 พันล้าน
ดังนั้นถ้าผมพยายามที่จะนับถึง 5 พันล้าน บางสิ่งบางอย่างที่จะเกิดขึ้น
แต่ขอดูสิ่งที่ในความเป็นจริงสามารถเกิดขึ้นได้
ในโลกของจำนวนเต็ม ล้นที่คุณในความรู้สึก
ล้นความจุของได้ จำนวนเต็มสิ่งที่อาจเกิดขึ้นได้อย่างไร
>> ดังนั้นนี่คือเลขฐานสอง, มันเป็นนักเลง 0
มันคือทั้งหมดที่ 1 และตัวยึด นั่นเป็นอำนาจของ 2
ดังนั้นนี้เป็นไบนารี
ดังนั้นเหล่านี้เป็น 8 บิต 1 บนหน้าจอ
และถ้าคุณจำได้หรือ คุณได้อย่างรวดเร็วทำคณิตศาสตร์
สิ่งที่มีค่าจะถูกแสดง ที่นี่กับเหล่านี้แปด 1 บิต?
255
และแม้ว่าคุณจะไม่ได้ค่อนข้างแน่ใจว่า คณิตศาสตร์ที่คุณสามารถทำมันออกมา
หรือคุณอาจจะเพียงแค่ชนิด เหตุผลผ่านมัน
รอสักครู่ถ้าฉัน คิดเป็นมูลค่า 8 บิต
และฉันมี 256 ค่าที่เป็นไปได้ แต่เป็นครั้งแรกของการที่เป็น 0
ผมเพิ่งรู้ว่าว่า ที่ใหญ่ที่สุดเป็นไปได้ 255
และนั่นคือสิ่งนี้อาจจะมี
>> ดังนั้นคิดว่าฉันพยายามที่จะเพิ่ม 1 ค่านี้
คุณจะทำอะไรในชั้นประถมศึกษา โรงเรียนเมื่อมีการเพิ่ม 1 และมัน
ไม่ได้จริงๆพอดีเพราะ คุณจะต้องดำเนินการ 1
จำนวนไปนี้คือสิ่งที่ ที่จะกลายเป็นเมื่อคุณเพิ่ม 1
มันจะกลายเป็น 0
ใช่มั้ย?
เพราะถ้าคุณมีมากขึ้น bits-- และฉันจะ พยายามที่จะชนิดของการพิมพ์ออก here--
ถ้าเรามีบิตมากขึ้นสิ่งที่เรา สามารถทำที่นี่คือการเพิ่ม 1,
และจากนั้นเราจะได้รับนี้
ขออภัย
เราต้องการมี 1 บิตทุกทางมากกว่าที่นี่
>> แต่ถ้านี้เป็นแน่นอน ค่าก็เพียง 8 บิต
และที่กำหนดไว้ล่วงหน้า โดยคอมพิวเตอร์
1 ที่มีประสิทธิภาพไม่ได้มี
มันเพียงแค่ชนิดของตกจากหน้าผา
ดังนั้นถ้าคุณเพิ่ม 1-255 สิ่งที่ ค่าที่คุณเห็นได้ชัดว่าได้รับ?
0
และเพื่อให้ตัวเลขตั้งใจ และบางทีอาจจะไม่ได้ตั้งใจ
จบลงด้วยการตัดรอบเช่นนี้
ดังนั้นสิ่งที่สามารถจะเป็นความหมายของเรื่องนี้?
ดีมีสิ่งที่แตกต่างไม่กี่
ดังนั้นหนึ่งก็ไม่สิ้นสุดขึ้นมอง เช่น 0, ไม่ได้ตั้งใจ
แต่คุณชนิดของสามารถมองเห็น แม้จะอยู่ในโลกแห่งความจริง
ดีขึ้นหรือแย่ลง อาการของความคิดของขีด จำกัด นี้
ยกตัวอย่างเช่นการใด ๆ ของคุณที่ เคยเล่นเลโก้สตาร์วอ
ไม่มีใครที่จะรู้ว่าเกิดอะไรขึ้น จำนวนสูงสุดของเหรียญ
คุณสามารถเก็บในเลโก้สตาร์วอ?
ลองเดาอยู่บนพื้นฐานของ คำถามชั้นนำวันนี้
มันมีขนาดใหญ่กว่า 256 หรือ 255
มันเป็น 4 พันล้าน
ดังนั้นมันจะเปิดออกและ มีบาง people--
บาง googling ได้รับการยืนยันล่าสุด night-- มีอากาศ 4 พันล้านเหรียญทอง
หรือ whatnot ในเลโก้สตาร์วอร์ส
แม้ว่าจะเห็นได้ชัดว่ามี วิธีการหลอกลวงเกม,
มีข้อผิดพลาดหรือคุณลักษณะที่ช่วยให้คุณ เพียงเกิดขึ้นจำนวนมากและจำนวนของจุด
แต่ที่ใหญ่ที่สุดที่เป็นไปได้ มูลค่าตาม
เพื่อภาพหน้าจอของคนที่ผมนี้ พบได้ทั่วไปย่อมเป็น 4 พันล้าน
>> ตอนนี้ทำไมเป็นอย่างนั้น?
มันเป็นอย่างแม่นยำ 4 พันล้าน อาจจะเป็นเพราะคนที่ตัดสินใจ
ที่ถูกเขียนเกมนี้ ว่าพวกเขาสามารถทำ 4 พันล้าน
บางสิ่งบางอย่างบางสิ่งบางอย่างบางสิ่งบางอย่าง เช่นค่าฉันใส่ขึ้น
ที่มีเครื่องคิดเลขก่อนหน้านี้ แต่ มันเป็นเพียงแค่ทำความสะอาดเล็ก ๆ น้อย ๆ สำหรับมนุษย์
ที่จะบอกว่าจำนวนสูงสุด ของ coins-- หรือกระดุม
ที่พวกเขาเรียกว่าคุณ them-- สามารถเก็บเป็น 4 พันล้าน
ดังนั้นทำไมนี้คืออะไร?
เกมเลโก้เป็นอย่างไร การดำเนินการที่เคาน์เตอร์
ที่ติดตามความเคลื่อนไหวของ จำนวนเหรียญที่คุณมี?
พวกเขากำลังใช้อะไร?
สมาชิกผู้ชม: มันหยุด นับหลังจากที่ 4 พันล้าน
เดวิดเจลัน: มันหยุด นับหลังจากที่ 4 พันล้าน
ซึ่งหมายความว่าคุณสามารถ สรุปเป็นโปรแกรมเมอร์
ว่าพวกเขาอาจจะ โดยใช้จำนวนเต็ม 32 บิต
เช่นเดียวกับโปรแกรมที่แท้จริงเพียง พิมพ์, int ในรหัสของเขาหรือเธอ
และที่ชนิดของตัวแปรที่ พวกเขากำลังใช้ในการจัดเก็บรหัสของใครบางคน
จึงมีอาการอื่น ๆ ของเหล่านี้ชนิดของข้อ จำกัด
>> ดังนั้นผมจึงไม่ได้เล่น game-- นี้ และฉันก็อ่านบนประวัติศาสตร์
เพื่อยืนยันการเป็น much-- แต่ใน รุ่นเดิมของอารยธรรมที่
เห็นได้ชัดว่าคุณโต้ตอบกับแต่ละ อื่น ๆ และสามารถทำสงครามหรือมีความสงบสุข
คานธีที่ควรจะเป็นอย่างใดอย่างหนึ่ง ตัวละครที่เงียบสงบมากที่สุดเท่าที่ฉัน
เข้าใจมันในครั้งแรก รุ่นของอารยธรรม
และในความเป็นจริงในระดับ 1 ถึง 10, ความก้าวร้าวของเขาเป็นเพียง 1
ดังนั้นเพื่อให้อย่างอ่อนโยนที่เคย ก้าวร้าวเห็นได้ชัด
>> แต่ในบางจุดที่คุณสามารถเห็นได้ชัด ติดตั้งประชาธิปไตยในทางภูมิศาสตร์ของคุณ
และถ้าคุณติดตั้งการปกครองระบอบประชาธิปไตย เข้ามาในรุ่นของเกม
แล้วระดับการรุกรานของคุณไปลง
มันเป็นสิ่งที่ดี
คนที่เงียบสงบมากขึ้น เห็นได้ชัดว่าในสถานการณ์ที่
แต่เห็นได้ชัดคนทำ ไม่ได้ถ้าเงื่อนไข
ในรุ่นเดิมของรหัส
>> ดังนั้นระดับการรุกรานของคานธีเดินออกมาจาก บวก 1 ลบ 2 ลบ 1,
แต่เกมไม่ได้ เข้าใจตัวเลขติดลบ
ดังนั้นสิ่งที่เกิดขึ้นคือการรุกรานของคานธี เดินออกมาจากระดับ 1, 0 ลบ 1,
ซึ่งผลของการ การตัดรอบที่จะเป็น
ตัวอักษรที่ก้าวร้าวมากที่สุด ในเกมที่ค่าของ 255,
โย 1 ถึง 10
และตั้งแต่นั้นมามีการ สาขาอื่น ๆ ของเกมนี้
และพวกเขาได้เก็บไว้เป็น การเรียงลำดับของไข่อีสเตอร์,
ที่เห็นได้ชัดคือคานธี ดังนั้นในเชิงรุกมาก
แต่มันก็เป็นผลมาจากการที่ ข้อผิดพลาดในการเขียนโปรแกรมที่ง่ายมาก
ในการที่รุ่นแรกของเกม
>> ตอนนี้มากขึ้นรำคาญมากขึ้น เมื่อเร็ว ๆ นี้โบอิ้ง 787
เป็นเอกสารที่มี ข้อผิดพลาดไม่ได้ชนิดของอุปกรณ์
โดยเฉพาะอย่างยิ่งที่คุณต้องการที่จะมีข้อผิดพลาด
และอาการที่ฉันจะอ่าน ที่นี่จากบทความออนไลน์
เป็นแบบนี้เป็นรูปแบบ 787 เครื่องบิน ที่ได้รับการขับเคลื่อนอย่างต่อเนื่อง
สำหรับ 248 วันจะสูญเสียทั้งหมด กระแสสลับ AC,
พลังงานไฟฟ้าเนื่องจาก ชุดควบคุมเครื่องกำเนิดไฟฟ้า
GCUs พร้อมกัน ที่จะเข้าสู่โหมดไม่ปลอดภัย
ดังนั้นนี่เป็นคำเตือนที่ออก เมื่อปัญหานี้ถูกค้นพบ
เงื่อนไขนี้จะเกิด โดยเคาน์เตอร์ซอฟแวร์
ภายใน GCUs ดังนั้น จำนวนเต็มหรือตัวแปร
ที่จะล้นหลังจากที่ 248 วันของการพลังงานอย่างต่อเนื่อง
โบอิ้งอยู่ในขั้นตอนของ การพัฒนาอัพเกรดซอฟต์แวร์ GCU ว่า
จะแก้ไขสภาพที่ไม่ปลอดภัย
>> มากเช่นขีปนาวุธ สถานการณ์ขัดแย้ง
พวกเขามีชนิดของตัวแปรบาง ที่ได้รับการนับและการนับ
และนับ แต่ค่อยๆล้น ขอบเขตของความสามารถของตน
ในทำนองเดียวกันก็ทำเครื่องบินแช่ง มีตัวแปรล้น
หลังจากเวลามากพอที่จะทำงาน
ดังนั้นวิธีที่ลิ้นในแก้ม ของการทำงานแก้ไขปัญหานี้
คือการอย่างแท้จริงรีบูต, เครื่องบินของคุณทุก 247 วันเพื่อให้หน่วยความจำที่ได้รับการเช็ด
และตัวแปรกลับไป 0
แต่ตระหนักถึงนี้เป็นอย่างมาก ชาติขนาดใหญ่ของซอฟต์แวร์
โดยเฉพาะอย่างยิ่งในขณะที่เราได้ยินเกี่ยวกับแอปเปิ้ล ระบบปฏิบัติการที่จะเข้าสู่รถยนต์
และรถตัวเองขับรถจาก Google และ จำนวนสาขาของซอฟต์แวร์ใด ๆ
ในชีวิตประจำวันของเราทีวี และนาฬิกาและอื่น ๆ
ตระหนักถึงความถูกล้อมรอบไปด้วยซอฟแวร์ ทั้งหมดที่เขียนโดยมนุษย์เรา
>> และการที่เราทุกคนจะเร็ว ๆ นี้ค้นพบ มันเป็นเรื่องง่ายมากและปกติมาก
จะทำผิดพลาดเมื่อเขียนซอฟแวร์
และถ้าคุณไม่จับพวกเขา บางสิ่งบางอย่างที่ไม่ดีสามารถเกิดขึ้นได้
ตอนนี้บางครั้งบาง สิ่งที่ตลกสามารถเกิดขึ้นได้
หรืออย่างน้อยก็บางครั้งเรา รู้ที่คาดหวังความชั่วร้ายบางอย่าง
ดังนั้นหารด้วย 0 0 จากเกรด โรงเรียนโดยทั่วไปเป็นสิ่งที่ไม่ดี
มันเป็นเรื่องที่ไม่ได้กำหนด
และมันจะเปิด out-- และขอดูว่า ไมค์ของฉันสามารถเลือก up-- นี้แอปเปิ้ล
มีความสนุกสนานบางคนที่มีเมื่อเร็ว ๆ นี้
ดังนั้นผมจึงมี iPhone ที่นี่
ฉันจะไปพูดคุยกับ Siri และขอให้เธอ จะให้ฉันคำตอบหารด้วย 0 0
อะไรคือสิ่งที่หารด้วย 0 0?
>> SIRI: ลองจินตนาการว่าคุณมี 0 คุกกี้และคุณแยกพวกเขาอย่างสม่ำเสมอ
ในหมู่เพื่อน 0
วิธีคุกกี้จำนวนมากไม่แต่ละคนได้รับ?
ดู?
มันไม่ได้ทำให้ความรู้สึก
และมอนสเตอร์คุกกี้เป็นเรื่องน่าเศร้า ว่ามีคุกกี้ไม่มี
และคุณจะเสียใจที่ คุณไม่มีเพื่อน
เดวิดเจลัน: มันเป็นชนิดของน่ารังเกียจ
ดังนั้นนี่คือสิ่งที่ถูกกล่าวว่ามีเพียง
มันไม่แน่นอนก็ไม่ได้กำหนดไว้ และแน่นอนหลายภาษาโปรแกรม
หรือจริงๆคอมไพเลอร์จะ ตรวจสอบเมื่อคุณอยู่ในโปรแกรม
พยายามที่จะแบ่งโดย 0 0
สนุกมากขึ้นกว่า แต่นี้คือ ที่เห็นได้ชัดว่าคุกกี้มอนสเตอร์
คือบนทวิตเตอร์วันนี้
และเขาตอบนี้กับเรื่องนี้ ซึ่งเป็นที่น่ารักอย่างแน่นอน
แต่ลองมาดูอย่างรวดเร็วที่ คู่ของโครงสร้างอื่น ๆ
แล้วนำบางส่วนของเรื่องนี้ รหัสการใช้งานในรูปแบบที่ดี
ดังนั้นมันจะเปิดออกนอกจาก สำหรับลูปมี
สิ่งที่เรียกว่าวงในขณะที่ มีลักษณะที่แตกต่างกันและมีการใช้งาน
differently-- น้อยและ ในที่สุดเราก็จะเห็น examples--
แต่ในความรู้สึกบางอย่าง มันง่ายเพราะมัน
ไม่อนุญาตให้คุณในการเริ่มต้นและ อัปเดตภายในขอบเขตของวง
คุณยังสามารถใช้มัน
ดังนั้นคุณสามารถทำสิ่งเดียวที่แน่นอน กับวงในขณะที่เช่นเดียวกับสำหรับห่วง
แต่ไวยากรณ์ของคุณ ultimately-- ในขณะที่เราจะได้ในที่สุด
see-- เป็นไปได้ที่แตกต่างกัน
มีแม้กระทั่งสิ่งที่ต้องทำในขณะที่วงซึ่ง เป็นจริงแตกต่างกันเล็กน้อย
ในขณะที่สำหรับวง และห่วงในขณะที่เสมอ
ตรวจสอบสภาพของพวกเขาก่อนถ้า คุณอ่านสิ่งนี้ด้านบนลงล่าง
ชนิดของมันดูเหมือนว่ามันจะ ตรวจสอบสภาพของมันที่ผ่านมาเพราะมันเป็น
อย่างแท้จริงบรรทัดสุดท้ายของรหัส
และแน่นอนว่าจะเป็นประโยชน์ ในโปรแกรมบางอย่างที่เราเขียน
ถ้าคุณต้องการเพียงสุ่มสี่สุ่มห้าทำอะไรบางอย่าง และในที่สุดการตรวจสอบสภาพ
นั่นคือไม่จำเป็นต้องเป็นสิ่งที่ไม่ดี
ถ้าเราต้องการตัวแปรที่เราสามารถทำได้ ในสองวิธีที่แตกต่างกัน
และที่เราเห็นใน Foxtrot การ์ตูนวิธีหนึ่งในการทำมัน
ที่คุณกำหนดตัวแปรของคุณ เช่น int อัฒภาคเคาน์เตอร์
และจากนั้นอาจจะ later-- ต่อไป บรรทัดอาจจะ 10 สาย later--
คุณจริงเริ่มต้นมัน
ดังนั้นทั้ง 2 สายรหัส ประกาศตัวแปรของ int ชนิด
และเรียกว่าเคาน์เตอร์ดังนั้นมันจะช่วยให้ ฉันบิตพอที่จะถือเป็น int
และแล้วในที่สุดก็จะทำให้ ค่า 0 ลงในตัวแปรที่
มันจัด 0 และ 1 ใน รูปแบบที่เรารู้จากสัปดาห์ที่ผ่านมา
แสดงให้เห็นถึงจำนวนที่เรารู้ว่าเป็น 0
หรือตรงไปตรงมาที่คุณสามารถทำได้มากขนาดนี้ ชัดถ้อยชัดคำมากขึ้นเช่นเดียวกับนี้
>> ตอนนี้เรายังมี ความสามารถในการเรียกใช้ฟังก์ชัน
และในความเป็นจริงนี่เป็น 2 สาย โปรแกรมดังกล่าวหรือข้อความที่ตัดตอนมาที่
ที่ช่วยให้เราจริง เขียนรหัสบางอย่างที่
ได้รับสตริงจาก user-- ที่มาก เหมือนอาสาสมัครของเราสักครู่ ago--
ผลการจัดเก็บใน ตัวแปรที่เรียกว่าชื่อ
และ then-- มากเช่นเดียวกับอาสาสมัครของเรา ด้วยภาพพิมพ์ printf-- ออกค่าเหล่านั้น
โดยผ่านในสองข้อโต้แย้งที่ สตริงตามด้วยตัวแปร
เรียกชื่อตัวเอง
ดังนั้นลองมาดูก่อน เรากลับมาที่มาริโอมี
ที่คู่ของตอนนี้ตัวอย่างนี้
>> ฉันจะไปข้างหน้าและเปิด ขึ้นสมมติว่าฟังก์ชั่น 0.c
และเช่นเคยรหัสนี้ ที่มีอยู่บนเว็บไซต์ของการเรียนการสอนของ
เพื่อให้คุณสามารถเล่นพร้อมที่ บ้านและดูได้ในภายหลัง
แต่นี่เป็นโปรแกรมในมัน สาระสำคัญจากบรรทัด 17-22
โปรแกรมหลักคือที่ โปรแกรมที่ถูกเสมอไปที่จะเริ่มต้น
โปรแกรมนี้จะเห็นได้ชัดว่าเป็นไป จะพิมพ์ออกมาชื่อของคุณลำไส้ใหญ่
แล้วมันจะเรียก GetString, เช่นเดียวกับที่เราทำกับอาสาสมัครของเรา
แล้วนี้เป็นที่น่าสนใจ มันจะเรียก Pri​​ntName
มันจะเปิดออกทั้งหมดเวลานี้มี ดูเหมือนว่าจะมีฟังก์ชั่นที่เรียกว่า PrintName
ที่พิมพ์ชื่อของใครบางคน
เราไม่จำเป็นต้องใช้ printf จาก ปีกลายมี PrintName เป็น
>> แต่ที่ทำให้เข้าใจผิด เพราะ PrintName ไม่
มาพร้อมกับซีคนไม่ได้ คิดค้นมันบาง 40 หรือ 50 ปีที่ผ่านมา
ผมแทน
และในความเป็นจริงถ้าผมเลื่อน ลงเพิ่มเติมแจ้งให้ทราบล่วงหน้า
วิธีการที่ฉันสามารถเขียนของตัวเอง ฟังก์ชั่นในซีเราจะในที่สุด
อธิบายได้ว่าทำไมเราให้ว่า เป็นโมฆะในสถานที่ไม่กี่
แต่สำหรับวันนี้ขอ เพียงแค่มองไปที่ชื่อ
>> On line ที่ 24 ถ้าคุณต้องการ สร้างฟังก์ชั่นของคุณเอง
คุณอักษรเขียน ชื่อของฟังก์ชัน
ผมเลือก Pri​​ntName
ในวงเล็บคุณ แล้วระบุสิ่งที่ชนิด
ของปัจจัยการผลิตและวิธีการมากมายที่คุณ ต้องการฟังก์ชั่นนี้จะใช้
ในกรณีนี้ผมต้องการที่จะใช้ 1 ตัวแปรที่เรียกว่าชื่อ
และมันก็เป็นไปได้ของ ประเภทสตริงเพื่อให้มันเป็นไป
จะเป็นลำดับของตัวอักษร
แล้ว program-- นี้ เหมือนในเกา
คุณสามารถมีปริศนาที่กำหนดเอง pieces-- จะมีพฤติกรรมที่กำหนดเอง
มันจะเรียก printf ผ่านในสวัสดี, ตัวยึด
และจากนั้นก็จะเสียบ ในสิ่งที่ผู้ใช้ที่เรียกว่า
>> ดังนั้นนี่คือตัวอย่างของสิ่งที่ นักวิทยาศาสตร์คอมพิวเตอร์จะ
นามธรรมสายหรือทำงาน การสลายตัวซึ่งเป็นเพียง
วิธีจินตนาการของ saying-- คือถ้า คุณชอบความคิดระดับสูง
เหมือนที่ผมต้องการฟังก์ชันการทำงานที่ พิมพ์ชื่อของใครบางคนอย่างคุณ
แท้จริงสามารถเขียน printf แล้ว ผ่านในข้อโต้แย้งที่คุณต้องการ
และโปรแกรมจะทำงาน มันมีตั้งแต่พุธ
แต่คุณสามารถเริ่มต้นที่เป็นนามธรรมออกไป ความคิดในการพิมพ์ชื่อ
คุณสามารถให้มันชื่อ เช่น PrintName และนี้
เป็นความคิดของ layering 0 จากสัปดาห์นี้
>> ต่อจากนี้ไปผมและคุณไม่ต้องรู้ว่า หรือสนใจว่า PrintName จะดำเนินการ
ใช่มันใช้ printf บางทีมันอาจจะ ไม่ได้รู้ว่าสิ่งที่ใช้?
ใครสน?
ตอนนี้ผมกำลังพูดถึงที่นี่ แทนที่จะลงที่นี่
และแน่นอนกับโปรแกรมของเราได้รับ ที่สูงขึ้นและมีความซับซ้อน
เรากำลังจะไปให้การที่ได้รับ ชิ้นส่วนปริศนาที่ระดับที่ต่ำกว่าที่มีอยู่
เพราะเราเขียนพวกเขา หรือคนอื่นได้ดังนั้น
ว่าแล้วเราก็สามารถสร้างด้านบนของพวกเขา
ลองมาดูที่นี้ ตัวแปรหนึ่งฟังก์ชั่น
>> ดังนั้นนี้เป็นข้อมูลเพิ่มเติมเล็กน้อย ขั้นสูง แต่ก็จะเปิดออก
ที่อยู่ในห้องสมุด CS50 ของ มีเพียงฟังก์ชั่น GetInt
เราไม่ได้คิดว่าปีที่ผ่านมาเพื่อ ใช้ฟังก์ชั่น GetPositiveInt
และที่เป็นที่น่ารำคาญเล็ก ๆ น้อย ๆ เพราะถ้า พวกคุณกำลังเขียนโปรแกรมขัดแย้ง
คุณต้องการที่จะได้รับในเชิงบวก จำนวนเต็มจากผู้ใช้
คุณอย่างสามารถใช้ GetInt
และคุณอย่างสามารถตรวจสอบกับ สภาพและอาจจะห่วง
ถ้า int ที่มีมากขึ้น มากกว่า 0 และเสียงโห่ร้องที่ผู้ใช้
ถ้าเขาหรือเธอไม่ได้ให้ คุณเป็นจำนวนบวก
แต่ขอสร้างนี้ อาคารป้องกันตัวเองที่
ที่กำหนดเองชิ้นเกาถ้าคุณจะ
ฉันจะมีโปรแกรม ที่นี่ว่าในท้ายที่สุดผม
ต้องการที่จะสามารถที่จะเรียก GetPositiveInt และฉันต้องการที่จะเป็น
สามารถที่จะพิมพ์ออกมาสิ่งที่เป็น int
แต่นี้จะแยกออกไปในขณะนี้
มันเป็นเพียงแค่ได้รับในระดับสูง ชื่อที่บอกว่าสิ่งที่มันไม่
ซึ่งเป็นที่ยอดเยี่ยมเพราะมันเป็น ที่ใช้งานง่ายมากในขณะนี้ที่จะอ่าน
และถ้าผมทำสนใจสิ่งที่อยู่ภายใต้ เครื่องดูดควันให้ฉันเลื่อนลง
และมันก็เป็นเพียงเล็กน้อยข่มขู่ ในตอนแรกโดยเฉพาะอย่างยิ่ง
ถ้านี้เป็นโปรแกรมแรกของคุณ แต่ขอให้มาดู
>> ผมไม่ได้บอกว่าเป็นโมฆะ เพราะมันจะเปิดออกฟังก์ชั่น
เหมือน GetString สามารถ กลับค่ากับผม
พวกเขาไม่เพียงแค่มี พิมพ์ไปยังหน้าจอ
พวกเขาจริงสามารถส่ง อะไรบางอย่างกลับมา
และในขณะที่ก่อน PrintName, ผมไม่ได้ต้องการอะไรกลับมา
ผมจำเป็นต้องมีผลข้างเคียงของ สิ่งที่ปรากฏขึ้นบนหน้าจอ
แต่ฉันไม่ได้ต้องการของมนุษย์ ที่จะมอบอะไรบางอย่างกลับมา
ที่นี่มี GetPositiveInt, เช่นเดียวกับ GetInt,
ฉันต้องการที่จะมอบสิ่งที่กลับ
ดังนั้นฉันพูดไม่เป็นโมฆะ ในบรรทัดที่ 23 แต่ int,
ซึ่งบอกว่าฟังก์ชั่นนี้ ที่ผมเขียน
เรียกว่า GetPositiveInt เป็นไป มือฉันกลับจำนวนเต็มไม่ได้อะไรเลย
ไม่เป็นโมฆะ
>> ในขณะเดียวกันก็จะใช้เวลาไม่ ปัจจัยการผลิตดังนั้นฉันได้ชนิดของกลับมัน
ฉันไม่ให้ GetPositiveInt ใด ๆ ป้อนข้อมูลฉันต้องการที่จะให้ฉันเอาท์พุท
และแล้วสิ่งที่เกิดขึ้นตอนนี้หรือไม่
ดังนั้นนี่คือวิธีการที่ฉันสามารถประกาศตัวแปร
ฉันได้กระทำมันอยู่นอกวง สำหรับเหตุผลที่ในที่สุดเราก็จะเห็น
แต่เพียงแค่นี้จะช่วยให้ ฉัน 32 บิตที่เรียกว่า n,
และฉันได้ก่อนกำหนด พวกเขาจะเก็บจำนวนเต็ม
และนี่คือที่ทำในขณะที่การสร้าง, และนี่คือเหตุผลที่มันเป็นประโยชน์
แท้จริงทำเช่นนี้ ในขณะที่ n คือน้อยกว่า 1
ดังนั้นเรามาดูสิ่งที่เกิดขึ้น
ผมพิมพ์ออกมาโปรด ให้ฉัน int บวก
จากนั้นผมก็จะได้รับ int โดยใช้ CS50 ของ ฟังก์ชั่นและเก็บไว้ใน n
>> และแล้วสิ่งที่บรรทัดของรหัสอาจ ได้รับการดำเนินการต่อไปเหตุผล?
ซึ่งหมายเลขบรรทัด?
ใช่ดังนั้นวันที่ 31
คุณจะไม่ทราบว่านี้จนกว่าคุณจะได้ รับการบอกเล่าหรือสรุปการจัดเรียงของมัน
แต่ที่เป็นความจริง
มันจะไปบนลงล่าง แล้วช่วยให้การทำซ้ำ
ดังนั้นถ้าผมได้พูดพิมพ์ในจำนวน เชิงลบ 1, n เป็นเชิงลบน้อยกว่า 1?
ใช่
เพราะในเชิงลบ 1 น้อยกว่า 1
ดังนั้นสิ่งที่ควรจะเกิดขึ้น?
ฉันจะทำเช่นนี้ ในขณะที่ n คือน้อยกว่า 1,
ดังนั้นฉันจะกลับไปที่เส้น 28
>> และในแต่ละ time-- และขอเรียก this-- ทำให้ฟังก์ชั่น 1 เพื่อรวบรวมมัน
และตอนนี้ดอทเฉือนฟังก์ชั่น 1
ถ้าผมพิมพ์ 1 ลบมัน จะให้ตะโกนมาที่ผม
จนกว่าฉันจะให้ความร่วมมือเพราะแต่ละ ของปัจจัยการผลิตของฉันคือน้อยกว่า 1
และถ้าในขณะที่น้อยกว่า 1, ฉันจะให้ทำเช่นนี้
หากในที่สุดผมก็ให้มันเป็นจำนวนมากเช่น 50, โชคดีที่มันบอกว่าขอบคุณสำหรับ 50
ทำไม?
เพราะทันทีที่ n คือไม่น้อยกว่า 1 ผมหยุดการติดอยู่ในวงนี้
และคำหลักใหม่ในวันนี้ ผลตอบแทนที่แท้จริงไม่ว่า
ดังนั้นผมจึงได้ดำเนินการเพียงใน ความรู้สึกเทียบเท่า GetString ที่
ที่ฉันมอบกลับไป ใครก็ตามที่จะใช้ฉันค่าบางอย่าง
มันไม่จำเป็นต้องเป็น สตริงก็เป็น int
ดังนั้นการที่ง่ายและรวดเร็ว เช่น แต่เราจะเร็ว ๆ นี้
เห็นบางส่วนที่มีความซับซ้อนมากขึ้น รุ่นยังคง
ในความเป็นจริงลองมาดูที่หนึ่ง ตัวเลขหนึ่งซึ่งเรียกว่า return.c
และหนึ่งในนี้เป็นจริง เล็ก ๆ น้อย ๆ ที่เรียบง่าย
ดังนั้นวัตถุประสงค์ของโปรแกรมนี้ life-- ขอรวบรวมและเรียกใช้
เพื่อให้กลับมาจุด เฉือน return-- แจ้งให้ทราบล่วงหน้า
โปรแกรมก้อนเพียงค่า 2
มันโง่สวยก็เป็นเรื่องยาก รหัสก็ไม่ได้ใช้ปัจจัยการผลิตใด ๆ
แต่มันก็แสดงให้เห็นอีก ฟังก์ชั่นที่ผมเคยเขียนตัวเอง
ดังนั้นที่นี่ฉันได้ประกาศให้เป็น ตัวแปรที่เรียกว่า x, ชนิด int
เท่ากับจำนวน 2 พลสมบูรณ์
นี่เป็นเพียงบางพิมพ์ปุย
มันบอกว่า x เป็นอยู่ในปัจจุบันดังกล่าวและ ดังกล่าว cubing dot dot dot
และความมหัศจรรย์เป็นที่เห็นได้ชัดในสาย 21
ฉันโทรฟังก์ชั่นที่เรียกว่าลูกบาศก์ ฉันยื่นแผ่นกระดาษ
มี 2​​ หมายเลขที่เขียนเกี่ยวกับมัน และสิ่งที่มีค่าทางคณิตศาสตร์
ฉันต้องการที่จะได้รับจากมันได้หรือไม่
เช่นเดียวกับการตรวจสอบสุขภาพจิตดีหรือไม่?
8
ใช่มั้ย?
ฉันต้องการ 2 cubed กลับ 2 พลังของ 3, 8 เพื่อให้กลับมา
>> เพื่อที่จะดำเนินการก้อน?
ดีสังเกตเห็นมันดำเนินการลงที่นี่
และเช่นเดียวกับก่อนที่จะมีเหตุผล แม้ว่าไวยากรณ์น่าจะเป็น
มากใหม่หลายท่าน ฉันต้องการฟังก์ชั่นนี้
ที่จะถึงมือฉันกลับแผ่นของ กระดาษที่มี int ในมัน
ดังนั้นผมจึงมี int, ที่ ชื่อพล
แต่ที่เรียกว่าสะดวกก้อน
ใส่มันเป็น n ของ พิมพ์จำนวนเต็มเพื่อให้เป็น
วิธีการที่ฉันสามารถผ่านในจำนวน 2 บนแผ่นกระดาษ
และจากนั้นก็จะเปิดออกสนับสนุน C คณิตศาสตร์เพื่อให้คุณไม่ต้อง x สำหรับครั้ง
คุณเพียงแค่ใช้เครื่องหมายดอกจัน การคูณ
และนี้ส่งกลับครั้ง n n ครั้ง n ซึ่งเป็นเพียงค่าคีบ
>> ดังนั้นเราจึงมีการที่จะมีทั้งหมดนี้หรือไม่?
นี้แน่นอน ทัวร์ลมกรด, มั่นใจ
ว่าในส่วนซุปเปอร์ และปัญหาการตั้งค่า 1,
คุณจะเดินผ่าน ทั้งหมดนี้ทั้งหมดเพิ่มเติม
และปัญหาการตั้งค่า 1 เราจะเปลี่ยน จากโลกกราฟิกของรอยขีดข่วน
เพื่อสิ่งที่บรรทัดคำสั่งเพิ่มเติม ในซี แต่เราจะวาดแรงบันดาลใจ
จากเกมที่นี่ จากปีกลายนั้น
โดยใช้ C และรุ่นมาตรฐานของ ชุดหน้าคุณจะใช้ปิรามิดของมาริโอ
และในรุ่นแฮ็กเกอร์ของ พีชุดดังนั้นหากคุณเลือกที่จะเลือก,
คุณจะใช้น้อยมาก ปิรามิดที่ท้าทายกับสองยอด
นอกจากนี้คุณยังจะได้ดำเนินการ ขั้นตอนวิธีอัลกอริทึมโลภ
มันจะเปิดออกที่มี บางตรรกะที่น่าสนใจ
ที่อยู่เบื้องหลังกระบวนการของ ทำงานสถานีแคชเชียร์
และจริงมอบหมาย คนเปลี่ยนแปลงกลับ
มีขั้นตอนวิธีการที่เป็นธรรมคือ ตรงไปตรงมาว่าคุณยังอาจ
เข้าใจอย่างสังหรณ์ใจเมื่อคุณอ่านครั้งแรก it-- ตระหนักว่าสิ่งที่ฉันได้เสมอ
ทำทุกครั้งที่ผมได้รับมีคนบางส่วนใด ๆ back-- เงินที่ช่วยให้คุณเสมอ
ลดจำนวนของ บันทึกกระดาษหรือเหรียญโลหะ
ว่าคุณกำลังมอบกลับให้กับผู้ใช้
และนี้แน่นอนเป็นที่น่าสนใจ เพราะถ้าคุณไปที่ CVS หรือ whatnot,
คุณไม่ต้องการที่จะเป็นมือ ทั้งกลุ่มของคนที่
หรือทั้งกลุ่มของเพนนี
คุณต้องการที่น้อยที่สุด เหรียญอาจจะเป็นไปได้
>> สุดท้ายคุณยังจะได้รับการท้าทาย ตะลุยในโลกของน้ำ
และได้รับจริงชื่นชม สำหรับการทำแผนที่ระหว่างอัตราการไหลที่
ของชอบน้ำอาบน้ำ เพียงเท่าไหร่น้ำจะใช้
และพาดพิงนั้นที่ จะมีคลิปนี้ที่นี่
ซึ่งเราจะสิ้นสุดในวันที่สำหรับ เพียง 60 วินาทีที่
วาดภาพของ ต่ำไหลหัวฝักบัว
>> [วิดีโอเล่นภาพ]
สิทธิพัก
ฉันได้ทุกอย่างที่นี่
ผมได้ไซโคลน F Series, ไฮดรา Jetflow สตอกโฮล์ม
Supersteam คุณชื่อมัน
>> และอื่นทำในสิ่งที่คุณแนะนำ?
>> -คุณกำลังมองหาอะไร?
>> คน -Power
พาวเวอร์
เหมือน Silkwood
ใช่หรือไม่เพราะสำหรับการฉายรังสี
-ถูกตัอง.
-Now นี่คืออะไร?
ใช่หรือไม่เพราะเป็นหน่วยคอมมานโด 450
ผมไม่ได้ขายที่หนึ่ง
>> -But นั่นคือสิ่งที่เราต้องการ
มันคอมมานโด 450
>> ไม่มีเชื่อฉัน
โดยจะใช้เฉพาะในคณะละครสัตว์
มันเป็นช้าง
>> ผมจะไปจ่ายอะไร
>> อะไรที่เกี่ยวกับเจอร์รี่?
>> -He ไม่สามารถจัดการที่
เขาเป็นคนที่ละเอียดอ่อน
โอ้ใช่.
[จบเล่นภาพ]
เดวิดเจลัน: สิทธิทั้งหมด
นั่นคือถ้า CS50
เราจะเห็นคุณในสัปดาห์ถัดไป
>> ลำโพง 1: [? สกัลลี?], [? เอียน?] เท่าที่โทรโครงการนี​​้
สิ่งที่พวกคุณมาด้วย?
>> ลำโพง 2: ดีที่เราได้รับ มันมีความหลากหลายของความคิด
และเราคิดว่าวิธีที่ดีที่สุด to--
>> ลำโพงที่ 3: May I?
>> ลำโพง 2: ใช่
โดยทั้งหมดจริง
>> ลำโพงที่ 3: ดังนั้นผมคิด เราสามารถสรุปความคิดของเรา
สำหรับ Outros ที่มีอะไร word-- หนึ่ง
>> เดวิดเจลัน: ไม่มีอะไร?
ลำโพงที่ 3: ไม่มีอะไร
เดวิดเจลัน: สิ่งที่หมายความว่า?
ลำโพงที่ 3: Outros เป็นเกี่ยวกับอะไร
ลำโพง 2: ผมหมายถึงในปรัชญา ผมหมายถึงอะไรบางสิ่งบางอย่างอยู่เสมอ
ลำโพง 1: ดังนั้น what's-- สิ่งที่อยู่สถานที่ตั้งหรือไม่
ลำโพงที่ 3: ดังนั้นจึงเป็นเหมือนชีวิต
ตกลง.
คุณทำอะไรในวันนี้?
>> เดวิดเจลัน: ผมลุกขึ้นได้ อาหารเช้าและเข้ามาทำงาน
>> ลำโพงที่ 3: ที่โทร
ลำโพง 2: แต่ผมหมายถึงไม่ควร บางสิ่งบางอย่างเกิดขึ้นกับเขาใน the--
ลำโพงที่ 3: ไม่มีไม่มีไม่มี
ไม่มีอะไรเกิดขึ้น.
>> ลำโพง 1: ดังนั้นเราจะดูว่าทำไม?
>> ลำโพงที่ 3: เพราะ ก็โทรหา CS50
>> เดวิดเจลัน: ยังไม่ได้