ใครยังไม่ได้ดู Harvard บรรยายเรื่องพื้นฐานของการเขียนโปรแกรม ไปที่นี่: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
การแนะนำ. โครงสร้างหลักสูตร CS50
เพื่อน! ในบทนำ เราจะเตือนคุณ (หรือแจ้งใครก็ตาม) เกี่ยวกับโครงสร้างของ CS50 หลักสูตรนี้ใช้เวลา 12 สัปดาห์ ทุกสัปดาห์จะมีการบรรยายสองครั้ง ตลอดจนการสัมมนาและคำอธิบายทุกประเภท เราจะเผยแพร่บทความประเภทนี้ทันทีที่การบรรยายพร้อม โดยจะมีคำอธิบายสั้น ๆ ของการบรรยาย หมายเหตุเกี่ยวกับ “เรื่องสั้น” และข้อมูลเพิ่มเติม ตลอดจนการแปลงานที่ได้รับมอบหมายภาคปฏิบัติ การบรรยายแบบ Zero Week ครอบคลุมประเด็นต่อไปนี้:- ระบบเลขฐานสอง
- แอสกี
- อัลกอริทึมและการคิดแบบอัลกอริทึม
- คอมไพเลอร์
- ภาษาเกา
- นิพจน์บูลีน
- เงื่อนไข
- รอบ
- ตัวแปร
- ฟังก์ชั่น
- อาร์เรย์
- สตรีม
- กิจกรรม
- ทำความเข้าใจว่าข้อมูลสามารถนำเสนอในรูปแบบดิจิทัลได้อย่างไร
- เรียนรู้โครงสร้างและแนวคิดพื้นฐานของซอฟต์แวร์
- สร้างแอนิเมชั่น เกม หรือกิจกรรมเชิงโต้ตอบของคุณเองโดยใช้ Scratch
- สร้างความประทับใจให้เพื่อนของคุณ =)
CS50 สัปดาห์ที่ 0 (บรรยาย 1-2): หมายเหตุ
อัลกอริทึม
เราหวังว่าคุณจะได้ดูการบรรยายแล้วและเข้าใจว่าอัลกอริธึมจะแบ่งวิธีแก้ปัญหา (ปัญหาต่างๆ ปัญหาทางคณิตศาสตร์หรือ "วิธีเดินทางไปยังสถานีรถไฟใต้ดิน N") ออกเป็นขั้นตอน ยิ่งไปกว่านั้นแต่ละขั้นตอนจะต้องทำให้เสร็จสิ้นภายในระยะเวลาที่จำกัดและจะต้องมีจำนวนขั้นตอนที่แน่นอนด้วย นอกจากนี้ขั้นตอนต่อไปยังขึ้นอยู่กับขั้นตอนก่อนหน้าด้วย คุณสามารถอ่านเพิ่มเติมเกี่ยวกับอัลกอริทึมได้ที่นี่ หากคุณรู้ภาษาอังกฤษ นี่คือแอนิเมชั่น TED ที่ยอดเยี่ยมโดย David Malan: https://youtu.be/6hfOvs8pY1k แม้ว่าโดยทั่วไปแล้วข้อมูลในวิดีโอจะทำซ้ำสิ่งนั้นในการบรรยาย =)ระบบเลขฐานสอง
เรามี 10 นิ้วและระบบเป็นทศนิยม กล่าวคือ เราสามารถแสดงตัวเลขใดๆ ก็ได้ ไม่ว่าจะมากขนาดไหนก็ตาม โดยใช้ตัวเลข 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ขึ้นอยู่กับว่าตัวเลขอยู่ในตำแหน่งใดก็อาจหมายถึง ประการต่างๆ : ถ้าหลักนี้อยู่หลักสุดท้ายก็อยู่ในหลักหน่วย หลักสุดท้ายอยู่ในหลักสิบ ซ้ายสุดก็อยู่ในหลักร้อย เป็นต้น โดยพื้นฐานแล้ว จำนวนใดๆ ก็สามารถเขียนเป็นผลรวมของหลักได้ โดยแต่ละหลักจะคูณด้วย 10 ยกกำลังหนึ่ง ในกรณีของหน่วย - ศูนย์ ตัวอย่างเช่น 1573 = 3*10 0 + 7*10 1 +5*10 2 +1*10 3 จำนวนที่ใช้คูณตัวเลขเรียกว่าฐานของระบบตัวเลข สำหรับระบบทศนิยม ฐานคือสิบตามตรรกะ คอมพิวเตอร์ไม่มีนิ้ว แต่มีสองสถานะ: "กระแสไหล" และ "กระแสไม่ไหล" ตามเงื่อนไขศูนย์และหนึ่ง ดังนั้นตัวเลขทั้งหมด (และข้อมูลโดยทั่วไป) ในหน่วยความจำคอมพิวเตอร์จึงมีเพียงสองหลัก - 0 และ 1 ตำแหน่งของพวกเขาเช่นเดียวกับในกรณีของระบบเลขฐานสิบจะระบุตัวเลข เฉพาะตอนนี้ตัวเลขเท่านั้นที่สามารถแยกย่อยเป็นผลรวมของหลักคูณไม่ใช่ด้วยกำลังสิบ แต่ด้วยกำลังสอง 0 ในไบนารี่ = 0 1 ในไบนารี่ = 1 2 ในไบนารี่ = 10 7 10 =111 2 เรียนรู้การแปลงจากไบนารีเป็นทศนิยม คุณคงเข้าใจวิธีการทำสิ่งนี้แล้ว - เราแค่นำตัวเลขโดยเริ่มจากหลักขวาสุดแล้วคูณด้วยฐานยกกำลังที่สอดคล้องกับตัวเลขของมัน แล้วบวกทุกอย่างขึ้นด้วยแต่ละหลัก ตัวอย่าง: ลองหาทศนิยมอะนาล็อกของเลขฐานสอง 101101 2 ตัวขวาสุด = 1*2 0 ศูนย์ถัดไป = 0*2 1 ตัวที่สามจากขวา = 1*2 2 ตัวที่สี่ = 1*2 3 .. . และอื่นๆ 101101 2 = 1*2 0 + 0*2 1 + 1*2 2 + 1*2 3 + 0*2 4 + 1*2 5 = 1 + 0 + 4 + 8 + 0 + 32 = 45 10 ลองนึกภาพหลอดไฟแปดดวงเรียงกันเป็นแถว แต่ละคนมีสวิตช์ของตัวเอง หลอดไฟแต่ละดวงมีการคายประจุ คุณจินตนาการอะไรได้บ้าง จำการบรรยายครั้งแรก (มีอุปกรณ์ดังกล่าวอยู่ที่นั่น) หรือนี่คือวิดเจ็ตสำหรับคุณ: http://cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html Play ด้วยการฝึก "รู้สึก" ระบบไบนารี่ การแปลงจากทศนิยมเป็นไบนารี ที่นี่ทุกอย่างก็ง่ายมากถ้าคุณเข้าใจสาระสำคัญ ที่นี่เรามีหมายเลข 57 10 . ในการแปลงเป็นระบบไบนารี่ คุณต้องกำหนดว่ากำลังสูงสุดของทั้งสองจะไม่เกินจำนวนนี้ 2 6 = 64 นี่มากเกินไปอย่างเห็นได้ชัด แต่ 2 5 = 32 ตอนนี้เราได้กำหนดหลักที่สำคัญที่สุดแล้ว 32 10= 100000 2 . ตอนนี้เรากำลังมองหาตัวเลขถัดไป 57-32 = 25 ตอนนี้สำหรับ 25 เรากำลังมองหากำลังสองที่ไม่เกิน 25 2 4 = 16 ซึ่งหมายความว่าหลักถัดไปของเราก็เท่ากับ 1 เช่นกัน 32+16 = 48 10 = 110000 2 57 – 48 = 9 2 3 = 8 ซึ่งน้อยกว่า 9 ซึ่งหมายความว่าหลักถัดไปจะเป็นหนึ่งด้วย 32 + 16 + 8 = 56 10 = 111000 2 . 57-56 = 1 คือเหลือกำลังเดียวเท่านั้น 2 0 . ดังนั้น 57 10 = 111001 2 . หากจู่ๆ มีบางอย่างไม่ชัดเจน คุณสามารถอ่านเพิ่มเติมได้ใน Wikibook และหากคุณเก่งภาษาอังกฤษ นี่คือส่วนเพิ่มเติมเล็กๆ น้อยๆ ของการบรรยายแอสกี
คอมพิวเตอร์เข้าใจเฉพาะค่าศูนย์และค่าเดียวเท่านั้น และหน่วยความจำของคอมพิวเตอร์สามารถแสดงเป็นสายไฟยาวมากพร้อมสวิตช์ ดังที่คุณเห็นข้างต้น เราเข้าใจวิธีการแสดงตัวเลขในคอมพิวเตอร์แล้ว แล้วข้อมูลที่เหลือล่ะ? จดหมาย รูปภาพ? สมมติว่ามีตัวอักษรภาษาอังกฤษอยู่ 26 ตัว นั่นคือตามทฤษฎีแล้ว เราสามารถแสดงตัวอักษรที่มีตัวเลขตั้งแต่ 0 ถึง 25 ได้เฉพาะในระบบไบนารี่เท่านั้น คำถามต่อไปนี้เกิดขึ้น: เราจะเข้าใจได้อย่างไรว่าเรามีอักษรตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่? แล้วเครื่องหมายวรรคตอนล่ะ? ป้ายที่มองไม่เห็นเหมือนช่องว่างเหรอ? สรุปคือเราต้องการระบบเข้ารหัส แคป! ในทศวรรษที่ 1960 มีหลายรูปแบบที่เข้ารหัสอักขระ การขาดความสม่ำเสมอกลายเป็นปัญหา และในปี 1963 สถาบันมาตรฐานอเมริกัน ANSI ก็ได้พัฒนาและแนะนำรูปแบบการเข้ารหัส ASCII (American Standard Code for Information Interchange) อักขระ ASCII แต่ละตัวประกอบด้วยเจ็ดบิตหรือเจ็ดบิต ซึ่งแต่ละตัวสามารถรับค่า 0 หรือ 1 ได้ 7 บิตสามารถเก็บตัวเลขตั้งแต่ 0 ถึง 127 ในรูปแบบไบนารี่ ซึ่งหมายความว่าเรามีตัวเลข 128 ตัวที่จะเข้ารหัสอักขระ ดูเหมือนว่านี่จะเพียงพอที่จะเข้ารหัสคำพูดภาษาอังกฤษที่เป็นลายลักษณ์อักษรแล้วหรือยัง? นับกัน: az - 26 ตัวเลือก AZ - 26 เพิ่มเติม 0-9 - 10 ,;:~& และเครื่องหมายวรรคตอนอื่น ๆ - 32 และอีกหนึ่งช่องว่าง รวม - 95 อักขระ ตัวเลือกที่ว่าง 33 ตัวเลือกที่เหลือใช้สำหรับสิ่งที่เรียกว่าอักขระควบคุม เช่น การป้อนบรรทัดหรือการขึ้นบรรทัดใหม่: https://ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg สิ่งสำคัญคือต้องแยกแยะระหว่าง อักขระ 0-9 และค่าตัวเลข 0 -9 อักขระ 0-9 แสดงด้วยค่า ASCII 48-57 เป็นที่น่าสนใจที่จะทราบว่าสี่บิตขวาสุดของค่า ASCII เหล่านี้คือการแทนค่าไบนารี่ของค่าตัวเลข 0-9 วิธีนี้จะช่วยลดความยุ่งยากในการแปลงระหว่างค่า ASCII และค่าตัวเลขจริง มาเริ่มเขียนโปรแกรมกัน?เกา
เอาล่ะ สแครช คุณได้รับแจ้งเกี่ยวกับภาษาการเขียนโปรแกรมเชิงภาพและคำสั่งพื้นฐานของภาษานี้ในการบรรยาย หากต้องการทดลองใช้ Scratch ด้วยตัวเอง โปรดไปที่ลิงก์แล้วคลิก "เข้าร่วม" เมื่อลงทะเบียนแล้ว คุณสามารถเริ่มเขียนโปรแกรมออนไลน์ได้ ใช่แล้ว วันนี้ Scratch กลายเป็น Russified บางส่วน อย่างไรก็ตามความช่วยเหลือยังคงเป็นภาษาอังกฤษ หากต้องการคุณสามารถเล่นและดูรหัสของโครงงานนักเรียนที่แสดงในการบรรยายได้ นี่คือPikachu Pastry Catch หรือโครงการคัดแยกขยะลงภาชนะต่างๆ: https://scratch.mit.edu/projects/71161586/ เดวิดและบริษัทขอให้คุณไม่ต้องกังวลหากคุณคิดว่าไม่สามารถทำโครงการที่ซับซ้อนเช่นนี้ได้ ระดับนี้ต้องใช้ทักษะบางอย่างอยู่แล้ว .ออกกำลังกาย
-
เพื่อให้เข้าใจกระบวนการที่เกิดขึ้นใน Scratch ได้ดีขึ้น คุณสามารถดาวน์โหลดซอร์สโค้ดสำหรับหลายโปรเจ็กต์ได้จากที่นี่ เล่นไปรอบๆ และดู การเรียนรู้โค้ดของผู้อื่นมีประโยชน์มาก นี่เป็นหนึ่งในวิธีที่ดีที่สุดในการค้นหาว่ามีอะไรอยู่ในโปรแกรมที่คุณเองยังไม่โตเต็มที่ เมื่อคุณเริ่มเข้าใจวิธีการทำงานของแอปพลิเคชันเหล่านี้แล้ว คุณก็สามารถดำเนินการต่อไปได้อย่างปลอดภัย
-
ตอนนี้ถึงเวลาที่จะทำอะไรบางอย่างด้วยตัวคุณเอง ความท้าทายคือการสนุกสนานไปพร้อมๆ กับการดำเนินโครงการเล็กๆ ตั้งแต่เริ่มต้น อาจเป็นแอนิเมชัน เกม แอ็กชันแบบโต้ตอบ
- โปรแกรมจะต้องมีสไปรท์อย่างน้อยสองตัว (อักขระ, รูปภาพ) และหนึ่งในนั้นจะต้องไม่ใช่ cat =)
- ต้องมีอย่างน้อยสามสคริปต์ (การกระทำ)
- ต้องมีการดำเนินการอย่างน้อยหนึ่งเงื่อนไข หนึ่งลูป และหนึ่งตัวแปร
- ต้องมีอย่างน้อยหนึ่งเสียงรวมอยู่ในโปรแกรม
GO TO FULL VERSION