DOUG LLOYD: สิทธิทั้งหมด
ดังนั้นตอนนี้เราจะมาแก้ไขปัญหา หัวข้อใหญ่จริงๆฟังก์ชั่น
เพื่อให้ห่างไกลในการเรียนการสอนทั้งหมด โปรแกรมที่เราได้รับการเขียน
ได้รับการเขียนภายในของหลัก
พวกเขากำลังโปรแกรมง่ายสวย
คุณไม่จำเป็นต้องมีสิ่งเหล่านี้ สาขาและสิ่งที่เกิดขึ้น
เราก็สามารถใส่มันทั้งหมด ด้านในของหลักและมัน
ไม่ได้รับการครอบงำชะมัด
แต่ในขณะที่การเรียนการสอนไปบนและ เมื่อคุณเริ่มต้นในการพัฒนาโปรแกรม
อิสระที่พวกเขากำลังอาจจะ ที่จะเริ่มต้นที่จะได้รับมากขึ้นกว่า 10
หรือ 15 เส้น
คุณอาจได้รับร้อยหรือหลายพัน หรือนับหมื่นของสายรหัส
และมันไม่ได้จริงๆ บ้าที่คิด
เช่นนี้มันอาจไม่เป็นความคิดที่ดี เพื่อให้ทุกอย่างภายในของหลัก
ก็จะได้รับเพียงเล็กน้อยยากที่จะหา สิ่งที่คุณกำลังมองหาถ้าคุณทำอย่างนั้น
>> โชคดีที่แม้ว่า C และสวยมาก ทุกการเขียนโปรแกรมภาษาอื่น ๆ ที่
อาจจะทำงานกับช่วยให้ เราเขียนฟังก์ชั่น
และฉันก็จะ ใช้เวลาอย่างรวดเร็วกันที่นี่
พูดถึงฟังก์ชั่นที่เป็น พื้นที่หนึ่งของวิทยาการคอมพิวเตอร์
และคุณจะเห็นอื่น ๆ อีกมากมายของพวกเขาที่ จุดต่าง ๆ ตลอดหลักสูตร
และหากคุณดำเนินการต่อ
ที่มีจำนวนมาก คำพ้องสำหรับคำเดียวกัน
ดังนั้นเราจึงเรียกฟังก์ชั่น
แต่คุณอาจจะได้ยินพวกเขา เรียกว่าเป็นขั้นตอน
หรือวิธีการโดยเฉพาะอย่างยิ่งถ้าคุณเคย ทำโปรแกรมเชิงวัตถุใด ๆ
before-- และไม่ต้องกังวล ถ้าคุณยังไม่ไม่
deal-- ใหญ่ แต่ใน ที่มุ่งเน้นการตรวจสอบภาษา
เป็นวิธีการที่เรียกว่าบ่อย
บางครั้งพวกเขากำลังเรียกซับรูทีน
แต่พวกเขาจริงทั้งหมดที่อ้างถึง กับความคิดพื้นฐานที่เหมือนกัน
>> ลองดูสิ่งที่เป็นความคิดที่ว่า
ฟังก์ชั่นคืออะไร?
ดีฟังก์ชั่นที่เป็นจริง อะไรมากไปกว่ากล่องดำ
กล่องสีดำที่มีชุดของศูนย์ หรือปัจจัยการผลิตที่มากขึ้นและการส่งออกเพียงอย่างเดียว
ดังนั้นสำหรับตัวอย่างเช่นนี้ อาจจะมีฟังก์ชั่น
นี้เป็นฟังก์ชั่นที่เรียกว่าบำบัด
และจะใช้เวลาสามปัจจัยการผลิต b, c และ
และภายในกล่องสีดำที่เรา ไม่ทราบว่าสิ่งที่มันไม่
แต่กระบวนการปัจจัยการผลิต ในทางใดทางหนึ่งแล้ว
จะช่วยให้การส่งออกเพียงครั้งเดียวในกรณีนี้, ซี
ตอนนี้ที่จะทำให้มันเล็ก ๆ น้อย ๆ นามธรรมน้อยเรา
อาจกล่าวได้ว่าบางทีเรา มีฟังก์ชันที่เรียกว่า
เพิ่มที่ต้องใช้เวลาสามปัจจัยการผลิตที่มี b และ คและประมวลผลการส่งออกในทางใดทางหนึ่ง
ภายในกล่องสีดำ ผลิตออกเดียว
ดังนั้นในกรณีนี้ถ้า เพิ่มเวลา 3, 6, และ 7
ที่ไหนสักแห่งภายใน เพิ่มฟังก์ชั่นเราจะ
คาดว่าพวกเขาจะได้รับการรวมเข้าด้วยกัน การผลิตผลผลิตที่
คือ 3 บวก 6 บวก 7 หรือ 16
>> ในทำนองเดียวกันคุณมีฟังก์ชั่นที่เรียกว่า Mult ว่าจะใช้เวลาสองปัจจัยการผลิตและ b,
กระบวนการพวกเขาในลักษณะบาง ว่าการส่งออกของฟังก์ชัน
เป็นผลิตภัณฑ์ของทั้งสองปัจจัยการผลิต
ทั้งสองปัจจัยการผลิตคูณด้วยกัน
4 และ 5 ถูกส่งเข้าไปใน Mult, สิ่งที่เกิดขึ้นการส่งออกที่เราคาดหวัง
คือ 20
ทำไมเราเรียกมันว่าเป็นกล่องสีดำ?
ดีถ้าเราไม่ได้เขียน ฟังก์ชั่นตัวเองซึ่ง
ที่เราเคยทำไม่น้อยเพื่อให้ห่างไกล CS50
เราได้เห็นฉพิมพ์เช่นซึ่ง เป็นหน้าที่ที่เราไม่ได้เขียน
ตัวเรา แต่เราไม่ใช้ตลอดเวลา
ถ้าเราไม่ได้เขียน ฟังก์ชั่นตัวเอง
เราไม่จำเป็นต้องรู้จริงๆว่าเป็น การใช้งานจริงภายใต้ประทุน
>> ดังนั้นตัวอย่างเช่นผมกล่องดำ เพียงแค่แสดงให้เห็นว่าคุณคูณ
mult A, B อาจจะ defined-- และนี้เป็นเพียง
pseudocode-- บางคนอาจจะ กำหนดเป็นเอาท์พุทเป็นขครั้ง
ที่ทำให้รู้สึกขวา
ถ้าเรามีฟังก์ชั่นที่เรียกว่า Mult ว่าจะใช้เวลาสองปัจจัยการผลิต
เราก็คาดหวังว่าจะออก เป็นสองปัจจัยการผลิตคูณด้วยกัน
ครั้งข
แต่ Mult ก็อาจจะ การดำเนินการเช่นนี้
เรามีตัวแปรเคาน์เตอร์ไป ได้รับการตั้งภายใน Mult 0
แล้วเราทำซ้ำขั้นตอนนี้ ขครั้งเพิ่มไปที่เคาน์เตอร์
ตัวอย่างเช่นถ้าเราคูณ 3a โดย 5b เราสามารถพูดตั้งเคาน์เตอร์ 0
ทำซ้ำห้าครั้งเพิ่ม 3 ที่จะตอบโต้
ดังนั้นเราจึงเริ่มต้นที่ 0 แล้วที่เราทำ นี้ห้าครั้งที่ 3, 6, 9, 12, 15
มันเป็นผลเดียวกัน เรา ยังคงได้รับ 3 ครั้งเพียง 5
การดำเนินงานที่แตกต่างกัน
>> นั่นคือสิ่งที่เราหมายถึง เมื่อเราพูดเป็นกล่องสีดำ
มันก็หมายความว่าเราไม่สนใจจริงๆ วิธีการที่จะดำเนินการภายใต้ฝากระโปรง
ตราบใดที่การส่งออกเป็นสิ่งที่เราคาดหวัง
ในความเป็นจริงที่เป็นส่วนหนึ่งของสัญญา ของการใช้ฟังก์ชั่นโดยเฉพาะอย่างยิ่ง
ฟังก์ชั่นที่คนอื่นเขียน
พฤติกรรมเสมอไป จะเป็นปกติคาดเดาไม่ได้
ตามชื่อของฟังก์ชัน
และนั่นคือเหตุผลที่มันเป็นจริงๆ ที่สำคัญเมื่อคุณเขียนฟังก์ชั่น
หรือเมื่อมีคนอื่นเขียน ฟังก์ชั่นที่คุณอาจใช้
ฟังก์ชั่นเหล่านั้นมี ชัดเจนชื่อที่ค่อนข้างชัดเจน
และมีเอกสารดี
ซึ่งแน่นอนกรณี สำหรับฟังก์ชั่นเช่นการพิมพ์ฉ
>> ดังนั้นทำไมเราจะใช้ฟังก์ชั่น?
ดีที่ผมกล่าวก่อนหน้านี้ถ้าเราเขียน ทั้งหมดของรหัสของเราภายในของสิ่งสำคัญ
จะได้รับยุ่งยากจริงๆ และซับซ้อนมาก
ฟังก์ชั่นช่วยให้เรามีความสามารถใน ในการจัดระเบียบและสิ่งที่ทำลาย
เป็นปัญหาที่มีความซับซ้อนมากเข้า จำนวนมากส่วนย่อยจัดการได้มากขึ้น
ฟังก์ชั่นนี้ยังช่วยให้เราสามารถ ลดความซับซ้อนของกระบวนการการเข้ารหัส
มันง่ายมากที่จะแก้ปัญหา 10 ฟังก์ชั่นเมื่อเทียบกับสาย 100 เส้น
ฟังก์ชั่นฟังก์ชั่นหรือสาย 1000
ถ้าเราจะต้องแก้ปัญหา ชิ้นเล็ก ๆ ในเวลาที่
หรือเขียนชิ้นเล็ก ๆ ในเวลานั้น ก็จะทำให้ประสบการณ์การเขียนโปรแกรมว่า
ดีขึ้นมาก
ความน่าเชื่อถือฉันที่หนึ่ง
>> สุดท้ายหากเราเขียนฟังก์ชั่นที่เรา สามารถใช้ส่วนต่างๆเหล่านั้น
ฟังก์ชั่นสามารถนำมารีไซเคิล
พวกเขาสามารถนำไปใช้ใน โปรแกรมหนึ่งหรืออีก
คุณเคยเขียนไว้แล้ว ฟังก์ชั่นทั้งหมดที่คุณ
ต้องทำคือการบอกโปรแกรมว่า การที่จะหาฟังก์ชั่นที่
เราได้รับการรีไซเคิลและการใช้ ฉพิมพ์นานกว่า 40 ปี
แต่มันถูกเขียนขึ้นเพียงครั้งเดียว
ประโยชน์สวยขวา
ทั้งหมดขวา
ดังนั้นฟังก์ชั่นที่ดี
เรารู้ว่า.
ตอนนี้ขอเริ่มต้นการเขียนพวกเขา
เริ่มต้นให้ได้รับ พวกเขาเข้าไปในโปรแกรมของเรา
เพื่อที่จะทำเช่นนั้นได้เป็นครั้งแรก สิ่งที่เราทำคือการประกาศฟังก์ชัน
เมื่อคุณประกาศฟังก์ชั่น สิ่งที่คุณกำลังทำอยู่โดยทั่วไป
จะบอกคอมไพเลอร์ เดี๋ยวก่อนเพียงเพื่อให้คุณรู้ว่า
ฉันจะเขียน ฟังก์ชั่นในภายหลัง
และนี่คือสิ่งที่มันจะมีลักษณะเหมือน
เหตุผลของเรื่องนี้คือ เพราะสามารถคอมไพเลอร์
ทำสิ่งแปลก ๆ บางอย่างถ้า พวกเขาเห็นชุดของสัญลักษณ์
ที่พวกเขาไม่คุ้นเคยกับ
ดังนั้นเราเพียงแค่ให้คอมไพเลอร์ที่ หัวขึ้นฉันสร้างฟังก์ชั่น
และก็จะทำเช่นนี้
ฟังก์ชั่นการประกาศโดยทั่วไปถ้า คุณกำลังจัดรหัสของคุณในทางที่
ว่าคนอื่น ๆ จะสามารถที่จะ เข้าใจและทำให้การใช้งานของ
คุณมักต้องการที่จะนำทั้งหมด ของการประกาศการทำงานของคุณ
ที่ส่วนบนสุดของรหัสของคุณขวา ก่อนที่คุณจะเริ่มต้นการเขียนหลักแม้กระทั่ง
และสิ่งอำนวยความสะดวกมี รูปแบบมาตรฐานมาก
ที่ประกาศฟังก์ชันทุกดังนี้
พวกเขาทุกคนดูสวยมากเช่นนี้
มีสามส่วนฟังก์ชั่นเป็น ประกาศชนิดกลับชื่อ
และรายการอาร์กิวเมนต์
>> ตอนนี้พิมพ์กลับเป็นสิ่งที่ชนิดของ ตัวแปรฟังก์ชั่นออกจะ
ดังนั้นสำหรับตัวอย่างเช่นถ้าเราคิดว่ากลับ นาทีที่ผ่านไปคูณสอง
ฟังก์ชั่นตัวเลขสิ่งที่เราคาดหวังว่าหาก เราคูณจำนวนเต็มโดยจำนวนเต็ม
การส่งออกจะได้รับ อาจจะเป็นจำนวนเต็มขวา
คูณจำนวนเต็ม ร่วมกันคุณจะได้รับจำนวนเต็ม
ดังนั้นการกลับมาของประเภทว่า ฟังก์ชั่นจะเป็น int
ชื่อคือสิ่งที่คุณต้องการ ที่จะเรียกการทำงานของคุณ
นี้น่าจะเป็นสิ่งที่สำคัญอย่างน้อย เป็นส่วนหนึ่งของการประกาศฟังก์ชั่น
ในแง่ของการทำงาน
แต่จริง ๆ แล้วอาจจะเป็นหนึ่ง ในส่วนที่สำคัญที่สุด
ของการประกาศฟังก์ชันในแง่ ของการรู้สิ่งที่ทำงานจริง
ทำ.
ถ้าคุณชื่อฟังก์ชัน f หรือกรัมหรือ ชั่วโมงหรือลึกลับหรือสิ่งที่ต้องการที่
คุณอาจจะได้รับ เล็ก ๆ น้อย ๆ พยายามดีดกลับขึ้นมา
จะจำสิ่งที่ฟังก์ชั่นเหล่านั้นทำ
จึงเป็นสิ่งสำคัญที่จะให้คุณ ฟังก์ชั่นที่มีความหมายของชื่อ
>> สุดท้ายรายการอาร์กิวเมนต์เป็น รายการคั่นด้วยเครื่องหมายจุลภาค
ของปัจจัยการผลิตทั้งหมดเพื่อให้การทำงานของคุณ แต่ละที่มีชนิดและชื่อเป็น
ดังนั้นไม่เพียง แต่คุณจะต้อง ระบุสิ่งที่ชนิดของตัวแปร
ฟังก์ชั่นจะส่งออก คุณยังต้องการที่จะระบุ
ชนิดและประเภทของตัวแปร ฟังก์ชั่นจะได้รับการยอมรับเป็นปัจจัยการผลิต
เพื่อขอทำตัวอย่างที่นี่
ขอเพียงใช้เวลาดู ที่เป็นรูปธรรมมากขึ้นอย่างใดอย่างหนึ่ง
ดังนั้นนี่คือตัวอย่างของฟังก์ชัน ประกาศสำหรับฟังก์ชั่นที่
จะเพิ่มสองจำนวนเต็มด้วยกัน
ผลรวมของจำนวนเต็มสองจำนวนเป็นไป เป็นจำนวนเต็มเช่นกันเราก็
กล่าวถึง
และอื่น ๆ ชนิดกลับ ที่นี่ในสีเขียวจะเป็น int
ที่เพียงแค่บอกเราว่าเพิ่มสอง ints เป็นไปในตอนท้ายของวัน
การส่งออกหรือคายมันกลับมา ออกมาให้เรา, จำนวนเต็ม
ให้สิ่งที่ฟังก์ชั่นนี้จะเรา ต้องการที่จะให้มันชื่อมีความหมาย
เพิ่มสอง ints ดูเหมือนว่า ที่เหมาะสมพิจารณา
เรากำลังการจำนวนเต็มสองจำนวนเป็นปัจจัยการผลิต และหวังว่าการเพิ่มพวกเขาร่วมกัน
มันอาจจะมีบิตของยุ่งยาก ชื่อและตรงไปตรงฟังก์ชั่นนี้
อาจจะไม่จำเป็น เนื่องจากเรามีการเพิ่ม
ผู้ประกอบการถ้าคุณจำได้จากเรา การอภิปรายของผู้ประกอบการก่อนหน้านี้
แต่ขอเพียงแค่พูดเพื่อประโยชน์ของ ข้อโต้แย้งว่าฟังก์ชั่นนี้จะเป็นประโยชน์
และเพื่อให้เราจะเรียกมันว่าเพิ่มสอง ints
สุดท้ายฟังก์ชั่นนี้จะใช้เวลาสองปัจจัยการผลิต
แต่ละที่เป็นจำนวนเต็ม
ดังนั้นเราจึงมีเครื่องหมายจุลภาคนี้ แยกรายชื่อของปัจจัยการผลิต
ตอนนี้เราต้องการโดยทั่วไป ให้ชื่อแต่ละของพวกเขา
เพื่อให้พวกเขาสามารถนำมาใช้ ฟังก์ชั่นภายใน
ชื่อไม่สำคัญมาก
>> ในกรณีนี้เราไม่จำเป็นต้อง มีความหมายใด ๆ ที่แนบมากับพวกเขา
ดังนั้นเราก็สามารถเรียกพวกเขาและ b
ที่ดีทั้งหมด
แต่ถ้าคุณพบว่า ตัวเองอยู่ในสถานการณ์
ที่ชื่อของตัวแปรที่ จริงอาจจะสำคัญ
คุณอาจต้องการที่จะเรียกพวกเขา สิ่งอื่นที่ไม่ใช่ a และ b
เพื่อให้พวกเขามีบางสิ่งบางอย่างมากขึ้น ความหมายสัญลักษณ์
แต่ในกรณีนี้เราทำไม่ได้จริงๆ รู้อะไรอื่นเกี่ยวกับฟังก์ชั่น
เราเพียงแค่ต้องการที่จะเพิ่มจำนวนเต็ม
ดังนั้นเราก็จะเรียก ผู้จำนวนเต็มและ b
นั่นเป็นตัวอย่างหนึ่ง
>> ทำไมคุณไม่ใช้เวลาที่สอง คิดเกี่ยวกับคนนี้
วิธีการที่คุณจะเขียนฟังก์ชั่น ประกาศสำหรับฟังก์ชั่นที่
คูณสองจำนวนจุดลอยตัว?
คุณจำสิ่งที่ จำนวนจุดลอยคืออะไร?
สิ่งที่จะฟังก์ชั่นนี้ ประกาศมีลักษณะอย่างไร
ที่จริงผมขอแนะนำให้คุณหยุดวิดีโอ ที่นี่และใช้เวลาเท่าใดเวลาที่คุณต้องการ
คิดเกี่ยวกับสิ่งนี้ ประกาศฟังก์ชั่นจะเป็นอย่างไร
สิ่งที่ประเภทการกลับมาจะเป็นอย่างไร
สิ่งที่จะชื่อมีความหมายเป็นอย่างไร
สิ่งที่ปัจจัยการผลิตจะเป็นอย่างไร
ดังนั้นทำไมคุณไม่หยุดวิดีโอที่นี่ และเขียนขึ้นประกาศฟังก์ชั่น
สำหรับฟังก์ชั่นที่จะคูณ ตัวเลขสองจุดลอยด้วยกัน
หวังว่าคุณหยุดชั่วคราววิดีโอ
>> ดังนั้นลองมาดูที่ตัวอย่าง ที่เป็นไปได้ของการประกาศอย่างใดอย่างหนึ่ง
ลอย Mult สอง reals ลอย x, y ที่ลอย
ผลิตภัณฑ์ของทั้งสอง ลอยหมายเลขจุด,
ที่จำได้มีวิธีการที่เรา เป็นตัวแทนของจำนวนจริง
หรือตัวเลขที่มีค่าทศนิยมใน C, เป็นไปได้ที่จำนวนจุดลอย
เมื่อคุณคูณ ทศนิยมโดยทศนิยม,
คุณอาจจะได้รับทศนิยม
คุณต้องการที่จะให้มันเป็นชื่อที่เกี่ยวข้อง
คูณสอง reals ดูเหมือนดี
แต่คุณสามารถเรียกมันว่า Mult สองลอยหรือลอย Mult
อะไรเช่นนั้นตราบเท่าที่มัน ให้บางความหมายที่เกิดขึ้นจริงกับสิ่งที่
กล่องดำนี้กำลังจะทำอะไร
และอีกครั้งในกรณีนี้เราทำไม่ได้ ดูเหมือนจะมีความหมายใด ๆ ที่แนบมา
ชื่อของ ตัวแปรที่เรากำลังผ่านใน
ดังนั้นเราก็เรียกพวกเขา x และ y
ตอนนี้ถ้าคุณเรียกพวกเขาบางสิ่งบางอย่าง อื่นที่ดีทั้งหมด
ในความเป็นจริงถ้าคุณไม่ได้ทำ ประกาศนี้แทน
โดยใช้คู่แทน ของลอยถ้าคุณจำได้
คู่ที่เป็นที่แตกต่างกัน วิธีการอย่างแม่นยำมากขึ้น
ระบุตัวเลขจริงหรือ ลอยตัวแปรจุด
ที่ดีโดยสิ้นเชิงเกินไป
คนใดคนหนึ่งของผู้ที่จะปรับ
ในความเป็นจริงมีหลาย แตกต่างกัน
วิธีที่จะประกาศฟังก์ชั่นนี้
แต่เหล่านี้เป็นสองคนที่ดีงาม
เราได้ประกาศฟังก์ชั่นที่ดี
เราได้บอกสิ่งที่คอมไพเลอร์มัน คือสิ่งที่เรากำลังจะทำ
ตอนนี้ขอจริงเขียนฟังก์ชั่นที่
ขอให้คำนิยาม เพื่อให้ภายในกล่องสีดำ
พฤติกรรมที่คาดการณ์ที่เกิดขึ้น
ในความเป็นจริงเราจะคูณสองจริง ตัวเลขกันหรือเพิ่มตัวเลข
กันหรือทำสิ่งที่มันเป็น เราถามว่าฟังก์ชั่นของเราที่จะทำ
>> ดังนั้นในความเป็นจริงลองและกำหนด คูณสอง reals ซึ่งเราก็
พูดคุยเกี่ยวกับที่สองที่ผ่านมา
ตอนนี้จุดเริ่มต้นของ ฟังก์ชั่นที่มีความละเอียด
มีลักษณะเกือบจะเหมือนกัน ประกาศเป็นฟังก์ชั่น
ผมมีทั้งของพวกเขาที่นี่
ที่ด้านบนคือการประกาศฟังก์ชั่น ประเภทชื่อจุลภาคอาร์กิวเมนต์แยกออกจากกัน
รายการอัฒภาค
อัฒภาคแสดงให้เห็นว่า ที่มีการประกาศฟังก์ชั่น
จุดเริ่มต้นของการทำงาน ความหมายลักษณะเกือบตรง
เดียวกันประเภทชื่อคั่นด้วยเครื่องหมายจุลภาค รายการอาร์กิวเมนต์อัฒภาคไม่มี
วงเล็บปีกกาเปิด
รั้งหยิกเปิดเช่นเดียวกับที่ เราได้รับการทำกับหลัก
หมายความว่าเราอยู่ในขณะนี้ จุดเริ่มต้นที่จะกำหนด
สิ่งที่เกิดขึ้นภายในกล่องสีดำที่ เราได้ตัดสินใจที่จะเรียก Mult สอง reals
นี่คือวิธีหนึ่งที่จะใช้มันเป็น
เราสามารถพูดได้ว่าเราสามารถประกาศใหม่ ตัวแปรที่เรียกว่าลอยประเภทสินค้า
และกำหนดตัวแปรที่ ค่าครั้ง x y ที่
และแล้วคืนสินค้า
การกลับมาหมายถึงอะไรที่นี่
ผลตอบแทนที่ดีเป็นวิธีที่ เราแสดงให้เห็นว่าเป็นวิธีที่
เราผ่านการส่งออกกลับออกมา
ดังนั้นสิ่งที่กลับมาเป็นเช่นเดียวกับ นี้คือการส่งออกของกล่องสีดำ
เพื่อให้เป็นวิธีที่คุณทำมัน
นี่เป็นวิธีที่จะใช้มันอีก
เราก็จะกลับมาครั้ง x y ที่
x คือลอย
y ที่เป็นลอย
ดังนั้น x y ที่ครั้งนี้ยังลอย
เราไม่จำเป็นที่จะต้อง สร้างตัวแปรอื่น
เพื่อให้เป็นวิธีที่แตกต่างกันเพื่อ ใช้กล่องดำเดียวกันแน่นอน
>> ตอนนี้ใช้เวลาสักครู่ หยุดวิดีโออีกครั้ง
และพยายามกำหนดเพิ่มสอง ints, ซึ่งเป็นฟังก์ชั่นอื่น ๆ ที่เรา
พูดคุยเกี่ยวกับช่วงเวลาที่ผ่านมา
อีกครั้งที่นี่ผมได้ใส่ฟังก์ชั่น ประกาศและอื่นอัฒภาค,
และวงเล็บปีกกาเปิด และหยิกปิด
รั้งเพื่อระบุตำแหน่งที่เราจะเติม ในเนื้อหาของเพิ่มสอง ints,
เพื่อที่เราจะกำหนดโดยเฉพาะอย่างยิ่ง พฤติกรรมภายในกล่องสีดำ
ดังนั้นหยุดวิดีโอ
และใช้เวลามากที่สุดเท่าที่ คุณจะต้องพยายามและกำหนด
การดำเนินการของเพิ่มสอง ints เช่น ว่าเมื่อฟังก์ชั่นผลค่า
มันไม่ในความเป็นจริงกลับมา ผลรวมของทั้งสองปัจจัยการผลิต
ดังนั้นเช่นเดียวกับตัวอย่างก่อนหน้านี้ มีหลายวิธีที่แตกต่างกัน
ที่คุณสามารถใช้เพิ่มสอง ints
นี่คือหนึ่ง
ในที่นี่ในสีส้มฉัน เพียงแค่มีบาง comments--
ฉันได้เพิ่มเพียงบางส่วน ความคิดเห็นที่บ่งบอกถึง
สิ่งที่เกิดขึ้นในแต่ละบรรทัดของรหัส
ดังนั้นผมจึงประกาศตัวแปร เรียกว่าผลรวมของชนิด int
ผมบอกว่าผลรวมเท่ากับบวกข
นั่นคือสิ่งที่เรากำลังทำจริง การทำงานที่เพิ่มและ b ร่วมกัน
และผมกลับผลรวม
และที่ทำให้รู้สึกเพราะ รวมเป็นตัวแปร int ชนิด
และสิ่งที่พิมพ์ข้อมูลที่ว่านี้ ฟังก์ชั่นบอกฉันว่ามันจะส่งออก?
Int
ดังนั้นฉันกลับผลรวมซึ่ง เป็นตัวแปรจำนวนเต็ม
และนั่นทำให้ความรู้สึกที่ได้รับในสิ่งที่เราได้ ประกาศและกำหนดฟังก์ชั่นของเรา
ทำ.
>> ตอนนี้คุณยังสามารถกำหนด ฟังก์ชั่นด้วยวิธีนี้
int ผลรวมเท่ากับบวก b-- ข้ามว่า ครั้งแรก step-- แล้วรวมผลตอบแทน
ตอนนี้คุณอาจจะยังมี ดำเนินการอย่างนี้
ซึ่งผมขอไม่แนะนำ
นี่คือรูปแบบหนึ่งที่ไม่ดี และการออกแบบสิ่งที่ดีจริงๆ
แต่จะในความเป็นจริงการทำงาน
ถ้าคุณใช้รหัสนี้ซึ่งเป็น int เพิ่มจุดบวกคที่ไม่ดีและใช้งานได้
มันจริงจะเพิ่ม จำนวนเต็มด้วยกัน
มันเป็นเรื่องการดำเนินงานที่ดีมาก พฤติกรรมนี้โดยเฉพาะ
แต่มันไม่ทำงาน
มันเป็นเพียงที่นี่เพื่อแสดงให้เห็นถึง จุดที่เราทำไม่ได้จริงๆ
สนใจสิ่งที่เกิดขึ้นภายใน กล่องสีดำเป็นเวลานาน
ตามที่มีการส่งออกที่เราคาดว่า
นี้เป็นกล่องสีดำออกแบบมาไม่ดี
แต่ในตอนท้ายในวันที่มันไม่ ยังคงมีการส่งออกผลรวมของการบวกข
ทั้งหมดขวา
ดังนั้นเราจึงได้ประกาศฟังก์ชั่น
และเราได้กำหนดฟังก์ชั่น
เพื่อให้เป็นที่ดีจริงๆ
ตอนนี้ขอเริ่มต้นที่จะใช้ฟังก์ชั่น ที่เราได้ประกาศและเราได้กำหนดไว้
ที่จะเรียก function-- ก็จริง สวย easy-- ทั้งหมดที่คุณต้องทำ
คือผ่านการขัดแย้งที่เหมาะสม ข้อโต้แย้งของชนิดข้อมูล
คาดว่ามันและ แล้วกำหนดผลตอบแทน
ค่าของฟังก์ชั่นที่ และข้ออ้าง this-- me--
กำหนดค่าตอบแทนของฟังก์ชั่นว่า บางสิ่งบางอย่างของประเภทที่ถูกต้อง
>> ดังนั้นเรามาดูได้ที่ นี้ในทางปฏิบัติในแฟ้ม
เรียกว่าบวก 1 จุดคซึ่ง ฉันมีใน IDE CS50 ของฉัน
ดังนั้นนี่คือบวก 1 จุดค
ที่จุดเริ่มต้นที่คุณเห็นฉันมี ของฉันรวมถึงปอนด์รวมถึง
มาตรฐาน IO และ CS50 dot ชั่วโมง
แล้วฉันจะมีการประกาศฟังก์ชันของฉัน
ซึ่งเป็นที่ที่ฉัน คอมไพเลอร์บอกฉัน
จะได้รับการเขียน ฟังก์ชั่นที่เรียกว่าเพิ่มสอง ints
มันจะออก จำนวนเต็มตัวแปรชนิด
นั่นคือสิ่งที่ส่วนนี้เป็นที่นี่
แล้วฉันมีสองปัจจัยการผลิตกับมัน และ b แต่ละแห่งซึ่งเป็นจำนวนเต็ม
ภายในหลักผมขอให้ผู้ใช้สำหรับ การป้อนข้อมูลด้วยการบอกว่าให้ฉันจำนวนเต็ม
และพวกเขาจะได้รับแจ้งให้ลืม int ซึ่งเป็นฟังก์ชั่นที่
จะรวมอยู่ในห้องสมุด CS50
และที่ได้รับการจัดเก็บไว้ใน x, ตัวแปรจำนวนเต็ม
>> แล้วเราให้พวกเขาสำหรับจำนวนเต็มอีก
เราได้รับจำนวนเต็มอีก และเก็บในที่ Y
แล้วที่นี่ในบรรทัดที่ 28 คือ ที่เราโทรออกฟังก์ชั่นของเรา
เราจะพูดว่าเท่ากับซี int เพิ่ม 2 ints x จุลภาค Y
คุณเห็นว่าทำไมนี้ทำให้รู้สึก?
x เป็นตัวแปรชนิดจำนวนเต็มและ Y เป็นตัวแปรชนิดจำนวนเต็ม
ดังนั้นที่ดี
ที่ทำให้รู้สึกกับสิ่งที่ฟังก์ชั่นของเรา ประกาศในบรรทัดที่ 17 ดูเหมือนว่า
รายการป้อนข้อมูลคั่นด้วยเครื่องหมายจุลภาค คาดว่าทั้งสองจำนวนเต็มและ b
ในกรณีที่เราสามารถเรียก พวกเขาสิ่งที่เราต้องการ
มันก็คาดว่าจำนวนเต็ม
และ x เป็นจำนวนเต็มและ y เป็นจำนวนเต็ม
ที่ทำงาน
>> และเรารู้ว่าการทำงานที่เป็นไป เพื่อส่งออกจำนวนเต็มเช่นกัน
และเพื่อให้เรามีการจัดเก็บ การส่งออกของฟังก์ชั่น
เพิ่มสอง ints ในประเภทจำนวนเต็ม ตัวแปรที่เรากำลังเรียกซี
แล้วเราสามารถพูดได้ว่าผลรวมของ ร้อยละและร้อยละฉันฉันฉันเป็นร้อยละ
x, y z และตามลำดับ กรอกข้อมูลในฉันร้อยละของผู้ที่
เป็นความหมายของสิ่งที่ เพิ่มสอง ints มีลักษณะอย่างไร
มันง่ายสวย
มันเป็นหนึ่งในคนที่เรา เพิ่งเห็นเป็นครั้งที่สองที่ผ่านมา
ผลรวม int เท่ากับบวกขผลรวมผลตอบแทน
มันใช้ได้ไหม?
ลองบันทึกแฟ้ม
และจากนั้นก็ลงที่นี่ใน terminal ของฉัน ฉันจะทำให้บวก 1,
และผมล้างหน้าจอของฉัน
ฉันจะซูมเข้าเพราะฉันรู้ว่า มันเป็นเพียงเล็กน้อยยากที่จะเห็น
>> ดังนั้นเราจึงรวบรวมโปรแกรมนี้เป็นงูพิษที่ 1
ดังนั้นเราจึงสามารถทำจุดบวกเฉือน 1
ให้ฉันจำนวนเต็ม 10
ให้ฉันจำนวนเต็มอีก 20
ผลรวมของ 10 และ 20 คือ 30
ดังนั้นเราจึงทำฟังก์ชั่นที่ประสบความสำเร็จโทร
คุณสามารถเรียกใช้ฟังก์ชั่นอีกครั้งในเชิงลบ 10 17 ผลรวมของเชิงลบ 10 และ 17 คือ 7
งานนี้ฟังก์ชั่น
แต่ก็มีลักษณะการทำงาน ที่เราคาดหวังให้
และเพื่อให้เราได้ทำประสบความสำเร็จ ฟังก์ชั่นความหมายประกาศ
และฟังก์ชั่นที่ประสบความสำเร็จโทร
คู่อื่น ๆ จุดที่เกี่ยวกับฟังก์ชัน
ก่อนที่เราจะสรุปได้ในส่วนนี้
จำจากเรา การอภิปรายของชนิดข้อมูล
ก่อนหน้านี้ที่ทำหน้าที่ บางครั้งสามารถใช้ปัจจัยการผลิตที่ไม่มี
หากเป็นกรณีที่เรา ประกาศฟังก์ชัน
ว่ามีรายการอาร์กิวเมนต์เป็นโมฆะ
คุณจำได้ว่า ฟังก์ชั่นที่พบมากที่สุด
เราได้เห็นเพื่อให้ห่างไกลที่ใช้เวลา รายการอาร์กิวเมนต์เป็นโมฆะคืออะไร?
มันเป็นหลัก
ยังจำได้ว่าบางครั้งฟังก์ชั่น ไม่จริงมีเอาท์พุท
ในกรณีที่เราประกาศฟังก์ชั่น ว่ามีชนิดกลับเป็นโมฆะ
ขอสรุปโดยส่วนนี้ การแก้ปัญหาปัญหาการปฏิบัติ
>> ดังนั้นนี่คือปัญหาที่เกิดขึ้นออกมาวาง
ฉันต้องการให้คุณเขียนฟังก์ชั่น ที่เรียกว่าสามเหลี่ยมที่ถูกต้อง
สิ่งที่ฟังก์ชั่นนี้ควรจะทำอย่างไร จะใช้เวลาสามตัวเลขจริง
ที่เป็นตัวแทนของความยาวของทั้งสาม ด้านของสามเหลี่ยมเป็นพารามิเตอร์ของมัน
หรือข้อโต้แย้งของตนหรือของตน inputs-- ชุดของคำพ้องความหมายอื่น
ที่คุณอาจพบ
ฟังก์ชั่นนี้ควร ทั้งการส่งออกจริงหรือเท็จ
ขึ้นอยู่กับว่าทั้งสามยาว มีความสามารถในการทำรูปสามเหลี่ยม
คุณจำชนิดข้อมูลที่ ที่เราใช้ในการแสดงจริงหรือเท็จ?
ตอนนี้วิธีที่คุณใช้นี้หรือไม่?
ดีรู้ว่ามีคู่ ของกฎระเบียบเกี่ยวกับรูปสามเหลี่ยม
ที่เป็นจริงที่มีประโยชน์ที่จะรู้ว่า
สามเหลี่ยมสามารถมี ด้านที่มีความยาวเป็นบวก
ที่ทำให้รู้สึก
คุณอาจพูดว่า duh
สิ่งอื่น ๆ ที่จะต้องทราบ แต่เป็นที่รวม
ความยาวของใด ๆ ทั้งสองด้านของรูปสามเหลี่ยม
จะต้องมีมากกว่า ความยาวของด้านที่สาม
ที่จริงจริง
คุณไม่สามารถมีรูปสามเหลี่ยมด้าน 1, 2 และ 4 เช่นเพราะ 1 บวก 2
ไม่เกิน 4
ดังนั้นผู้ที่มีกฎที่ กำหนดหรือไม่สาม
ปัจจัยการผลิตที่น่ากลัวสามารถสร้างรูปสามเหลี่ยม
ดังนั้นใช้เวลาไม่กี่นาที และประกาศกำหนดแล้ว
ฟังก์ชั่นที่เรียกว่าถูกต้อง สามเหลี่ยมดังกล่าวว่าจริง
มีพฤติกรรมที่ระบุไว้ที่นี่
>> มันจะได้ผลจริงถ้าทั้งสามด้าน มีความสามารถในการประกอบรูปสามเหลี่ยม
และเท็จอย่างอื่น พร้อมที่จะดูว่าคุณไม่?
นี่คือหนึ่งในการดำเนินงาน ของรูปสามเหลี่ยมที่ถูกต้อง
มันไม่ได้เป็นเพียงคนเดียว
ขอแสดงอาจแตกต่างกันเล็กน้อย
แต่อันนี้ไม่ได้ในความเป็นจริงมี ลักษณะการทำงานที่เราคาดหวัง
เราขอประกาศฟังก์ชั่นของเราได้ที่ มากบน bool สามเหลี่ยมที่ถูกต้อง
ลอยลอย x y ที่ลอยซี
ดังนั้นอีกครั้งฟังก์ชั่นนี้ ใช้เวลาสามตัวเลขจริง
เป็นข้อโต้แย้งของลอย ตัวแปรค่าจุด
และผลจริงหรือเท็จ ค่าซึ่งเป็นบูลีนเรียกคืน
เพื่อที่ว่าทำไมชนิดกลับเป็นบูล
จากนั้นเรากำหนดฟังก์ชั่น
สิ่งแรกที่เราทำคือการตรวจสอบเพื่อให้แน่ใจว่า ว่าทุกฝ่ายเป็นบวก
ถ้า x น้อยกว่าหรือเท่ากับ 0 หรือถ้า y ที่มีค่าเท่ากับ 0,
หรือถ้าซีน้อยกว่าหรือเท่ากับ 0 ที่ไม่อาจเป็นรูปสามเหลี่ยม
พวกเขาไม่ได้มีด้านบวก
และเพื่อให้เราสามารถกลับ ที่ผิดพลาดในสถานการณ์ที่
ต่อไปเราจะตรวจสอบเพื่อให้แน่ใจว่า ว่าทั้งคู่ของปัจจัยการผลิตทุก
มากกว่าหนึ่งในสาม
>> ดังนั้นถ้า x บวก y ที่น้อย กว่าหรือเท่ากับซี
หรือถ้า x บวกซ​​ีน้อย กว่าหรือเท่ากับปี,
หรือถ้าวายซีบวกน้อยกว่าหรือเท่ากับ x ที่ยังไม่สามารถเป็นรูปสามเหลี่ยมที่ถูกต้อง
ดังนั้นเราจึงกลับเท็จอีกครั้ง
สมมติว่าเราผ่านทั้งสองของการตรวจสอบ แต่แล้วเราสามารถกลับจริง
เพราะทั้งสามด้าน มีความสามารถใน returning--
ของการสร้างรูปสามเหลี่ยมที่ถูกต้อง
และที่มัน
คุณได้ประกาศในขณะนี้และที่กำหนดไว้
และคุณอาจจะสามารถที่จะในขณะนี้ การใช้และการเรียกใช้ฟังก์ชันนี้
ผลงานยอดเยี่ยม
ฉันลอยด์ดั๊ก
นี่คือ CS50