ZAMYLA CHAN: มันเป็นฉัน, Zamyla
วันนี้เรากำลังจะดำเนินการ มาริโอที่เราวาดมาริโอ
ปิรามิดเต็มรูปแบบสำหรับเขาที่จะกระโดดข้าม
Let 's ทำลายลง ย่อยงานสำหรับปัญหานี้
>> อันดับแรกเราต้องการที่จะแจ้งให้ผู้ใช้ สำหรับความสูงของปิรามิด
และจากนั้นเราต้องการให้แน่ใจว่า ว่าการป้อนข้อมูลที่ถูกต้อง
และจากนั้นเรากำลังจะไป ต้องการที่จะดึงปิรามิด
>> ดังนั้นขอพูดคุยเกี่ยวกับการกระตุ้น และตรวจสอบผู้ใช้ป้อน
มันอาจจะมีลักษณะดังนี้ นี้ห่วงทำในขณะที่
แจ้งให้ผู้ใช้สำหรับ จำนวนเต็มและหลังจากนั้นเพียงซ้ำ
ถ้าจำนวนเต็มที่ไม่ถูกต้อง
ดังนั้นสิ่งที่สภาพนี้ควรจะเป็นอย่างไร
>> สำหรับเรื่องนี้ขอกลับไป ข้อกำหนด
ดีสเป็คบอกเราว่าที่ถูกต้อง ความสูงเป็นไปได้ระหว่าง 0 และ 23
รวมทั้ง
ดังนั้นแล้วนั่นหมายความว่าไม่ถูกต้อง ความสูงเป็นไปได้น้อยกว่า 0
หรือมากกว่า 23
>> ดังนั้นตอนนี้ที่เรามีข้อมูลเหล่านี้ ลองออกแบบเงื่อนไขของเรา
แต่เราจำเป็นต้องระวัง เพราะตอนนี้เรามี
สอง Booleans ว่าเราต้องการที่จะประเมิน
>> นี่ฉันได้ให้คุณ กับตารางความจริง
นี้ช่วยให้เราใช้เวลาสอง booleans บูลีนที่หนึ่งและสอง
และเราสามารถประเมิน bool1 อย่างใดอย่างหนึ่ง และ bool2 หรือ bool1 หรือ bool2
>> ดังนั้นสิ่งที่แตกต่างกันคือ ระหว่างและหรือ?
ดี bool1 และ bool2 จะ ประเมินให้เป็นจริงถ้าและเพียง
ถ้าทั้งสอง Booleans เป็นจริง ในขณะที่หรือการดำเนินงาน
จะเป็นจริงถ้าคนใดคนหนึ่ง Booleans หรือทั้งสองอย่างนี้เป็นจริง
ดังนั้นด้วยนี้ในใจ ดูว่าคุณสามารถคิดออก
สิ่งที่อยู่ในสภาพที่เหมาะสมสำหรับ คุณห่วงทำในขณะที่สำหรับ n ที่ไม่ถูกต้อง
เป็นไปได้
>> กับที่เราได้รับแจ้งและตรวจสอบ การใช้งานสำหรับความสูงของปิรามิด
ว่าพวกเขาต้องการ
ดังนั้นตอนนี้มันขึ้นอยู่กับเรา การวาดปิรามิด
ปิรามิดเต็มรูปแบบสำหรับการนี​​้ ปัญหาที่เกิดขึ้นจะมีลักษณะนิด ๆ หน่อย ๆ
เช่นนี้ที่เรามีปิรามิดซ้าย ช่องว่างบางส่วนและจากนั้นปิรามิดที่เหมาะสม
ดังนั้นขอทำลายลงนิด ๆ หน่อย ๆ
>> ถ้าผมไปแก้ไขข้อความของฉันที่นี่ฉันได้ วาดเราพีระมิดจัดชิดซ้าย
แต่ที่จะไม่ทำ
สิ่งที่เราต้องการจะทำคือเราต้องการที่จะ สร้างปิรามิดจัดชิดขวาแรก
ดังนั้นการทำเช่นนี้จะเป็นเพียงแค่ผลักดัน แฮชของฉันพร้อมไปด้านข้าง
ฉันแค่ไปที่จะนำตัวละครบางตัว ในระหว่างเพียงจุดเหล่านี้
แล้วฉันจะใส่สองบน บรรทัดถัดไปและเป็นหนึ่งในบรรทัดที่
และเพื่อให้ที่นี่ฉันมี ปิรามิดจัดชิดขวา
>> หลังจากนั้นผมกำลังจะไป กลับไปแถวบนสุด
และใส่ในช่องว่างซึ่ง เป็นต่อข้อมูลจำเพาะสองช่องว่าง
แล้วฉันจะกรอกข้อมูลลงใน ด้านอื่น ๆ ของปิรามิด
ฉันจะไปแถวที่สองเขียน สองช่องว่างสำหรับช่องว่างและแล้วสอง
แฮช
กลับไปแถวที่สามสองช่องว่าง สำหรับช่องว่างและสาม hashes
และในตอนท้ายสองช่องว่าง สำหรับช่องว่างและสี่ hashes
ดังนั้นสิ่งที่เต็มรูปแบบ ปิรามิดจะมีลักษณะเช่น
>> แน่นอนเราไม่ต้องการ จุดเหล่านี้ในวิธีการที่
ดังนั้นเราจะไปแทนที่เหล่านี้ จุดโดยการวางพื้นที่บางส่วนใน
หนึ่งสองสามบรรทัดแรก
หนึ่งสองที่สอง
และหนึ่งในบรรทัดที่สาม
ดังนั้นนี่คือสิ่งที่เราจะทำอย่างไรถ้าเรา อยากจะเพียงแค่ทำให้พีระมิดเต็มรูปแบบ
กล่าวว่าในโปรแกรมแก้ไขข้อความของเรา
>> ดังนั้นลองมานี้ การทำความเข้าใจรูปแบบที่
และแปลงมันไป pseudocode บาง
สำหรับแถวของปิรามิดแต่ละที่เราต้องการ พิมพ์พีระมิดซ้ายแล้ว
ช่องว่างแล้วพีระมิดขวา
สำหรับพีระมิดซ้ายเราพิมพ์ จำนวนเงินที่จำเป็นของพื้นที่
ตามด้วยแฮช
จากนั้นเราก็พิมพ์ช่องว่างซึ่ง เป็นเพียงสองช่องว่างทุกครั้ง
และในปิรามิดที่เหมาะสมที่เราพิมพ์ จำนวนจำเป็นของแฮช
>> สำหรับแถวที่สองเราดำเนินการ กระบวนการที่แน่นอนเดียวกัน
เราพิมพ์ช่องว่างสำหรับทางด้านซ้าย พีระมิดจำนวนเงินที่จำเป็น
ของแฮช, ช่องว่างสองช่องว่างและ แล้ว hashes สำหรับปิรามิดที่เหมาะสม
>> ขอต่อสู้รูปแบบ สำหรับพีระมิดซ้าย
ถ้าฉันมีเพื่อวัตถุประสงค์ ของตัวอย่างนี้มีความสูง
แปดร้องขอจาก ผู้ใช้แล้วแถวแรกของฉัน
จะมีหนึ่งกัญชาและเจ็ดช่องว่าง
แถวที่สองของฉันจะได้ สอง hashes หกช่องว่าง
แถวที่สามสาม hashes ห้าช่องว่าง
คุณอาจจะสามารถทำเช่นนี้ ตัวเองสำหรับความสูงของแปด
และกำหนดสำหรับแต่ละแถวหลายวิธี แฮชและวิธีการหลายพื้นที่ที่คุณต้องการ
แต่สิ่งที่เราต้องการจะทำคือ เราต้องการที่จะนามธรรม
ดังนั้นผมจึงขอให้คุณสำหรับแถวที่ n ใด ๆ หลายวิธี แฮชและวิธีการหลายพื้นที่เราจะต้อง?
>> ตอนนี้เป็นคุณตรวจสอบ รูปแบบสำหรับ hashes หลายวิธี
และวิธีการหลายพื้นที่ที่คุณต้องการสำหรับ แถวที่ n ใด ๆ สำหรับความสูงที่กำหนด
จำจะต้องระมัดระวัง วิธีการที่คุณกำลังทำดัชนี
สิ่งที่ผมหมายถึงนี้ก็คือว่าในชีวิตประจำวัน ชีวิตส่วนใหญ่ของเราเริ่มนับหนึ่ง
ดังนั้นแถวแรกจะเป็นหมายเลขหนึ่ง
และแถวที่สองจะเป็นแถว จำนวนสองอื่น ๆ และอื่น ๆ
>> แต่ในวิทยาการคอมพิวเตอร์และ CS50 เราเป็นศูนย์การจัดทำดัชนี
ดังนั้นเราจะเริ่มต้นนับที่ศูนย์
ดังนั้นแถวแรกจะ เป็นหมายเลขแถวศูนย์
และแถวที่สอง จะเป็นหมายเลขหนึ่งแถว
ดังนั้นถ้าผมมีความสูงของแปดสำหรับ ปิรามิดของฉันแล้วค่าสุดท้ายของ n
จริงจะเป็นเจ็ดและแปดไม่
>> ดังนั้นควรระมัดระวังเกี่ยวกับเรื่องนี้
และควรระวังเมื่อคุณกำหนด รูปแบบของคุณไม่ว่าจะเป็นศูนย์การจัดทำดัชนี
หรือหนึ่งในการจัดทำดัชนี
>> ตกลง.
ดังนั้นขณะนี้ที่เรามี รูปแบบสำหรับพีระมิดซ้าย
เราจำเป็นต้องตรวจสอบ รูปแบบสำหรับช่องว่าง
โชคดีที่นี้เป็นเรื่องง่ายจริงๆ
มันเป็นเพียงแค่เสมอสองช่องว่าง
>> ดังนั้นตอนนี้เราดำเนินการรูปแบบที่เหมาะสม
แถวแรกจะมีหนึ่งกัญชา
แถวที่สองสอง
แถวที่สามสาม
ดังนั้น ๆ และอื่น ๆ
ดังนั้นอีกครั้งสำหรับการตรวจสอบใด ๆ ที่เป็นนามธรรม n และความสูงใด ๆ วิธีการหลาย hashes
และช่องว่างหลายวิธี แต่ละแถวควรจะมี
>> ตกลง.
ดังนั้นเรารู้ว่าเราแต่ละแถว ต้องดำเนินการขั้นตอนบางอย่าง
เราจะทำอย่างนั้นได้อย่างไร?
ดีที่เราใช้สำหรับวงสร้าง ประกอบด้วยการเริ่มต้นที่
สภาพและการปรับปรุง
สำหรับลูปสามารถนำมาใช้ ที่จะทำซ้ำกระบวนการ
>> เพื่อบอกว่าฉันต้องการให้ทักทาย โลกครั้งที่ 50 แล้วสำหรับวงของฉัน
จะมีลักษณะบางอย่างเช่นนี้ที่ ฉันเริ่มต้นตัวแปรของฉันให้เป็นศูนย์
สภาพเป็นที่ฉันมีค่าน้อยกว่า 50
แล้วปรับปรุงก็คือว่ามัน การเพิ่มขึ้นโดยหนึ่งทุกครั้ง
ดังนั้นสิ่งที่จะทำนี้จะ พิมพ์สวัสดีโลกครั้งที่ 50 ในแถว
>> ตอนนี้บอกว่าผมอยากจะย้ำ มากกว่าความสูงของปิรามิด
แล้วแทนการเข้ารหัสยาก ค่าบางอย่างอยู่ในสภาพที่
ฉันเพียงแค่ใช้ความสูงตัวแปร
ดังนั้นสิ่งนี้จะทำคือการทำซ้ำ มากกว่าความสูงแต่ละแถว
และผมสามารถทำบางสิ่งบางอย่างที่อยู่ภายใน ของร่างกายของวงว่า
>> เราทำอะไรต้องการจะทำ ภายในร่างกายของวงหรือไม่
ดีที่สุดเท่าที่เราแสดงให้เห็นก่อนที่เราต้องการ พิมพ์ช่องว่างและแฮช
สำหรับพีระมิดซ้ายและพิมพ์แล้ว สองช่องว่างแล้วพิมพ์ hashes
ดังนั้นเราจึงได้คิดแล้วว่าออก
ดังนั้นเราสามารถเริ่มต้นในการกรอกข้อมูล ในโปรแกรมของเรามากขึ้น
>> นี่ฉันมีด้านนอกสำหรับห่วงว่า iterates เหนือแถวในปิรามิดทุก
และภายในร่างกายที่ฉันจะ ช่องว่างที่จะพิมพ์ซ้ำแล้วซ้ำอีก
hashes ซ้ำ ๆ แล้วช่องว่าง แล้ว hashes สำหรับปิรามิดที่เหมาะสม
และแล้วในที่สุดใหม่ สายที่จะเริ่มต้นแถวถัดไป
>> กับที่เราได้รับการแจ้งเตือน ผู้ใช้สำหรับการป้อนข้อมูล
เราได้ทำให้แน่ใจว่ามันเป็นที่ถูกต้อง
และจากนั้นเราได้วาดปิรามิด
ดังนั้นมาริโอสามารถประสบความสำเร็จ ปีนปิรามิด
>> ชื่อของฉันคือ Zamyla
และนี่คือ CS50