การเรียกใช้ Procedure (Calling Procedures)
แนะนำใหม่| English | ความหมาย |
|---|---|
| reusable/riːˈjuːzəbl/ | ใช้ซ้ำได้ |
| procedure/prəˈsiːdʒə/ | กระบวนการ |
| call/kɔːl/ | การเรียกใช้ |
| method/ˈmeθəd/ | วิธี |
| arguments/ˈɑːɡjuːmənts/ | พารามิเตอร์ |
| parameters/pəˈræmɪtəz/ | พารามิเตอร์ |
| return value/rɪˈtɜːn ˈvæljuː/ | ค่าที่ส่งกลับ |
| implementation/ˌɪmplɪmənˈteɪʃn/ | การนำไปใช้ |
| abstraction/əbˈstrækʃn/ | นามธรรม |
บล็อกโค้ดที่ใช้ซ้ำได้
- Workspace, หรือที่เรียกว่า function หรือ method, คือบล็อกโค้ดที่มีชื่อซึ่งสามารถใช้ซ้ำได้
- คุณเขียนมันเพียงครั้งเดียวแล้วนำไปใช้หลายครั้ง
- มันมอบชื่อให้กับงาน ทำให้คุณสามารถเรียกใช้งานงานนั้น whenever you need it
- นี่คือหัวใจของหลักการ "อย่าทำซ้ำ" (don't repeat yourself)
Procedure (function/method) คือ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
เขียนครั้งเดียว เรียกได้หลายครั้ง
เพื่อรันคำสั่งของ procedure จากที่อื่น คุณ ______ มันด้วยชื่อ
Difficulty 1/5 · 100 coins + a small bonus on first completion today
หลังการเรียกสิ้นสุด โปรแกรมดำเนินต่อจากจุดที่ยกเลิกไว้
การเรียกใช้งานโปรซีเจอร์
- เพื่อรัน Workspace จากที่อื่น คุณต้องเรียกมันโดยใช้ชื่อ
- เมื่อการเรียกเสร็จสิ้น โปรแกรมจะดำเนินการต่อจากจุดที่ยังไม่เสร็จ
- ดังนั้นการเรียกจึงเหมือนการ绕行: ไปทำงานให้เสร็จ แล้วกลับมา
- Workspace เดียวกันสามารถถูกเรียกได้จากหลายตำแหน่ง
การทำงานของ procedure call
การเรียกจะกระโดดไปยัง procedure พร้อมพารามิเตอร์ รันบอดี้ กลับมาค่า และโปรแกรมดำเนินต่อจากจุดที่ยกเลิกไว้
จับคู่แต่ละคำใน area(4, 5) กับความหมาย
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Arguments คือค่าจริง; Parameters คือช่องชื่อ
ใน total ← area(4, 5), area ส่งคืนอะไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ผลลัพธ์ที่ส่งกลับมาจะถูกเก็บไว้เพื่อใช้งานต่อไป
อาร์กิวเมนต์ พารามิเตอร์ และการส่งกลับ
- Workspace สามารถรับข้อมูลเข้า: คุณส่ง อาร์กิวเมนต์ เข้าไปใน Workspace ผ่าน พารามิเตอร์ ของมัน
area(length, width)ที่ถูกเรียกด้วยarea(4, 5)จะได้รับค่า 4 และ 5- Workspace ยังสามารถส่งกลับ ค่าที่ถูกส่งกลับ (return value) — ซึ่งเป็นผลลัพธ์ที่คุณจะใช้ในภายหลัง
- ตัวอย่างเช่น
total ← area(4, 5)เก็บค่าที่ถูกส่งกลับนี้
ถ้า square(n) ส่งคืน n × n, square(square(3)) ส่งคืนอะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
square(3) = 9, จากนั้น square(9) = 81
เมื่อคุณเรียก square(3) คุณต้องรู้ว่ามันทำอะไร ไม่ใช่วิธีทำงานภายใน
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การซ่อนรายละเอียดการทำงานคือ Procedural Abstraction
การซ่อนรายละเอียดการดำเนินการ
- Workspace รองรับ ความนามธรรม (abstraction) โดยการซ่อนรายละเอียดของ กระบวนการดำเนินการ (implementation detail) จากผู้เรียก
- คุณจำเป็นต้องรู้แค่ว่า Workspace ทำอะไร ไม่ใช่วิธีทำงานภายใน
square(n) ส่งกลับ n × n. a ← square(3) เก็บค่า 9. b ← square(a) เก็บค่า 81, เพราะ square(9) มีค่าเป็น 81 ผู้เรียกไม่เคยเห็นการคูณภายใน — ใช้แค่ค่าที่ถูกส่งกลับ
Workspace (หรือ function หรือ method) เป็นโค้ดที่สามารถใช้ซ้ำได้ซึ่งคุณเรียกโดยใช้ชื่อ; โปรแกรมจะดำเนินต่อไปหลังจากส่งกลับ คุณส่ง аркิวเมนต์เข้าไปในพารามิเตอร์ของมันและสามารถใช้ค่าที่ถูกส่งกลับได้ Workspace ช่วยสร้างความนามธรรม — ผู้เรียกรู้ว่ามันทำอะไร แต่ไม่ทราบรายละเอียดของกระบวนการดำเนินการ