JavaRush /จาวาบล็อก /Random-TH /เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรร...
Bender
ระดับ
Маунтин-Вью

เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2)

เผยแพร่ในกลุ่ม
ใครยังไม่ได้ดู Harvard บรรยายเรื่องพื้นฐานของการเขียนโปรแกรม ไปที่นี่: https://javarush.com/quests/QUEST_HARVARD_CS50 =)

การแนะนำ. โครงสร้างหลักสูตร CS50

เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 1เพื่อน! ในบทนำ เราจะเตือนคุณ (หรือแจ้งใครก็ตาม) เกี่ยวกับโครงสร้างของ CS50 หลักสูตรนี้ใช้เวลา 12 สัปดาห์ ทุกสัปดาห์จะมีการบรรยายสองครั้ง ตลอดจนการสัมมนาและคำอธิบายทุกประเภท เราจะเผยแพร่บทความประเภทนี้ทันทีที่การบรรยายพร้อม โดยจะมีคำอธิบายสั้น ๆ ของการบรรยาย หมายเหตุเกี่ยวกับ “เรื่องสั้น” และข้อมูลเพิ่มเติม ตลอดจนการแปลงานที่ได้รับมอบหมายภาคปฏิบัติ การบรรยายแบบ Zero Week ครอบคลุมประเด็นต่อไปนี้:
  • ระบบเลขฐานสอง
  • แอสกี
  • อัลกอริทึมและการคิดแบบอัลกอริทึม
  • คอมไพเลอร์
  • ภาษาเกา
  • นิพจน์บูลีน
  • เงื่อนไข
  • รอบ
  • ตัวแปร
  • ฟังก์ชั่น
  • อาร์เรย์
  • สตรีม
  • กิจกรรม
เป้าหมายสัปดาห์ที่ 0:
  • ทำความเข้าใจว่าข้อมูลสามารถนำเสนอในรูปแบบดิจิทัลได้อย่างไร
  • เรียนรู้โครงสร้างและแนวคิดพื้นฐานของซอฟต์แวร์
  • สร้างแอนิเมชั่น เกม หรือกิจกรรมเชิงโต้ตอบของคุณเองโดยใช้ Scratch
  • สร้างความประทับใจให้เพื่อนของคุณ =)

CS50 สัปดาห์ที่ 0 (บรรยาย 1-2): หมายเหตุ

อัลกอริทึม

เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 2เราหวังว่าคุณจะได้ดูการบรรยายแล้วและเข้าใจว่าอัลกอริธึมจะแบ่งวิธีแก้ปัญหา (ปัญหาต่างๆ ปัญหาทางคณิตศาสตร์หรือ "วิธีเดินทางไปยังสถานีรถไฟใต้ดิน N") ออกเป็นขั้นตอน ยิ่งไปกว่านั้นแต่ละขั้นตอนจะต้องทำให้เสร็จสิ้นภายในระยะเวลาที่จำกัดและจะต้องมีจำนวนขั้นตอนที่แน่นอนด้วย นอกจากนี้ขั้นตอนต่อไปยังขึ้นอยู่กับขั้นตอนก่อนหน้าด้วย คุณสามารถอ่านเพิ่มเติมเกี่ยวกับอัลกอริทึมได้ที่นี่ หากคุณรู้ภาษาอังกฤษ นี่คือแอนิเมชั่น TED ที่ยอดเยี่ยมโดย David Malan: https://youtu.be/6hfOvs8pY1k แม้ว่าโดยทั่วไปแล้วข้อมูลในวิดีโอจะทำซ้ำสิ่งนั้นในการบรรยาย =)

ระบบเลขฐานสอง

เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 3เรามี 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 และหากคุณเก่งภาษาอังกฤษ นี่คือส่วนเพิ่มเติมเล็กๆ น้อยๆ ของการบรรยาย

แอสกี

เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 4คอมพิวเตอร์เข้าใจเฉพาะค่าศูนย์และค่าเดียวเท่านั้น และหน่วยความจำของคอมพิวเตอร์สามารถแสดงเป็นสายไฟยาวมากพร้อมสวิตช์ ดังที่คุณเห็นข้างต้น เราเข้าใจวิธีการแสดงตัวเลขในคอมพิวเตอร์แล้ว แล้วข้อมูลที่เหลือล่ะ? จดหมาย รูปภาพ? สมมติว่ามีตัวอักษรภาษาอังกฤษอยู่ 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 และค่าตัวเลขจริง มาเริ่มเขียนโปรแกรมกัน?

เกา

เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 5เอาล่ะ สแครช คุณได้รับแจ้งเกี่ยวกับภาษาการเขียนโปรแกรมเชิงภาพและคำสั่งพื้นฐานของภาษานี้ในการบรรยาย หากต้องการทดลองใช้ Scratch ด้วยตัวเอง โปรดไปที่ลิงก์แล้วคลิก "เข้าร่วม" เมื่อลงทะเบียนแล้ว คุณสามารถเริ่มเขียนโปรแกรมออนไลน์ได้ ใช่แล้ว วันนี้ Scratch กลายเป็น Russified บางส่วน อย่างไรก็ตามความช่วยเหลือยังคงเป็นภาษาอังกฤษ หากต้องการคุณสามารถเล่นและดูรหัสของโครงงานนักเรียนที่แสดงในการบรรยายได้ นี่คือPikachu Pastry Catch หรือโครงการคัดแยกขยะลงภาชนะต่างๆ: https://scratch.mit.edu/projects/71161586/ เดวิดและบริษัทขอให้คุณไม่ต้องกังวลหากคุณคิดว่าไม่สามารถทำโครงการที่ซับซ้อนเช่นนี้ได้ ระดับนี้ต้องใช้ทักษะบางอย่างอยู่แล้ว .

ออกกำลังกาย

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

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

ข้อกำหนดของโครงการ:
  • โปรแกรมจะต้องมีสไปรท์อย่างน้อยสองตัว (อักขระ, รูปภาพ) และหนึ่งในนั้นจะต้องไม่ใช่ cat =)
  • ต้องมีอย่างน้อยสามสคริปต์ (การกระทำ)
  • ต้องมีการดำเนินการอย่างน้อยหนึ่งเงื่อนไข หนึ่งลูป และหนึ่งตัวแปร
  • ต้องมีอย่างน้อยหนึ่งเสียงรวมอยู่ในโปรแกรม
โดยพื้นฐานแล้วโครงการของคุณจะซับซ้อนกว่าที่เขียนในการบรรยาย แต่จะง่ายกว่าของเล่นสาธิตเกี่ยวกับปิกาจูและการเก็บขยะ ดังนั้นโปรเจ็กต์ของคุณอาจจะใช้ปริศนาหลายสิบชิ้นที่ประกอบเป็นโค้ด Scratch หากมีบางอย่างไม่ได้ผล คุณอาจต้องเปลี่ยนแนวทางในการแก้ปัญหา สิ่งสำคัญคือการไปโดยไม่ต้องกลัว! เราขอเชิญคุณถามคำถามและแบ่งปันโครงการของคุณในความคิดเห็น

Scratch: คำแนะนำฉบับย่อในการดำเนินการ

สไปรท์เป็นวัตถุหลักของโครงการ ตัวละครใดๆ ไม่ว่าจะเป็นแมว เครื่องบิน ลูกบอล ล้วนเป็นสไปรต์ หากคุณเพิ่มแมวสองตัวที่แตกต่างกัน พวกมันก็จะเป็นสไปรท์สองตัวที่แตกต่างกัน เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 6สไปรท์แต่ละตัวมีสคริปต์ที่อธิบายพฤติกรรมของมัน สิ่งเหล่านี้คือบล็อกการกระทำ เครื่องแต่งกายคือลักษณะของวัตถุ สไปรท์เองก็เป็นเพียงภาพวาดเท่านั้น สไปรต์แต่ละตัวสามารถมีชุดได้หลายชุด หากต้องการสร้างสไปรท์ คุณจะต้องเลือกชุดดั้งเดิมของมันจากไลบรารี Scratch วาดภาพของคุณเองด้วยโปรแกรมแก้ไขในตัว อัปโหลดภาพใดๆ หรือแม้แต่ถ่ายภาพโดยใช้เว็บแคมของคุณแล้วอัปโหลด สไปรท์ทั้งหมดจะถูกวางไว้บนเวทีที่เรียกว่า เวทีคือผืนผ้าใบของเรา ซึ่งเป็นฉากสำหรับโปรแกรม คุณยังสามารถแนบเสียงจากไลบรารีเข้ากับสไปรท์หรือฉาก หรือคุณสามารถโหลดหรือบันทึกเสียงด้วยตนเองโดยใช้ไมโครโฟน ในการเริ่มรันโปรแกรม คุณต้องคลิกที่ธงสีเขียวที่มุมขวาบนของหน้าต่างฉาก แต่ก่อนที่จะทำสิ่งนี้ คุณต้องวางบล็อกต่อไปนี้ในโปรแกรม: เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 7และแนบบล็อกบางส่วนเข้ากับมันเหมือนกับส่วนของนักออกแบบ ตัวอย่างเช่น: เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 8ในกรณีนี้ เมื่อคุณคลิกที่ธง สไปรท์ที่มีการแนบการกระทำนั้นจะใช้เวลา 50 ก้าวและร้องเหมียว เรามีบล็อกมากมาย แบ่งออกเป็นสามแท็บ ได้แก่ สคริปต์ เครื่องแต่งกาย และเสียง มาสร้างโปรแกรมง่ายๆ แบบมีเงื่อนไขกันดีกว่า หากสมหวัง แมวจะร้องเหมียว ถ้าไม่สมหวัง แมวก็จะนิ่งเงียบ ตัวดำเนินการจะแสดงเป็นสีเขียว ผู้ที่ทดสอบว่าเงื่อนไขเป็นจริงหรือเท็จจะมีมุมแหลมที่ด้านข้าง โครงสร้างและลูปการทดสอบสภาพจะแสดงเป็นสีส้ม พวกเขามีรูพิเศษที่คุณสามารถวางบล็อคอื่นได้

รอบ:

ทำซ้ำจำนวนไม่จำกัด: เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 9ทำซ้ำบางอย่างตามจำนวนที่กำหนด: เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 10ทำซ้ำการกระทำหากตรงตามเงื่อนไข: เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 11คุณสามารถสร้างตัวแปรในบล็อกข้อมูลได้ ในตัวอย่างด้านล่าง เราได้สร้างตัวแปร x และก็มีการดำเนินการที่สามารถทำได้ทันที คุณสามารถกำหนดขอบเขตของตัวแปรได้: สำหรับสไปรท์ทั้งหมดหรือสำหรับตัวเดียว เอกสารเพิ่มเติมสำหรับการบรรยาย CS50: สัปดาห์ที่ 0 (การบรรยายที่ 1 และ 2) - 12ธงเขียวไม่ใช่เพียงการกระทำเท่านั้น นอกจากนี้ในส่วนเหตุการณ์ คุณยังจะพบเงื่อนไขการควบคุมอื่นๆ อีกจำนวนหนึ่ง ตัวอย่างเช่น คุณสามารถเลือกได้ว่าจะทำอะไรเมื่อคุณคลิกที่ปุ่มหรือบนสไปรท์ด้วยเมาส์ หากคุณต้องการ ข้อมูล เพิ่มเติม คุณสามารถค้นหาได้ที่นี่

อะไรอีก

หากการเข้าถึงอินเทอร์เน็ตของคุณยังเป็น ที่ต้องการอยู่มาก เราขอแนะนำให้ดาวน์โหลดโปรแกรมแก้ไข Scratch แบบออฟไลน์ที่https://scratch.mit.edu/scratch2download/ จากนั้นอย่าลืมส่งโครงการของคุณไปที่http://scratch.mit.edu/โดยใช้ไฟล์ > อัปโหลดจากคอมพิวเตอร์
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION