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

บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 1

บทท 10

การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย

การแตกปญหาออกเปนปญหายอย หรอเรยกวา ฟงกชน โดยฟงกชนคอการน าปญหาใหญๆ มาแบง

ออกเปนสวนๆ ส าหรบสวนไหนทจะตองใชงานบอย ๆ ถาสรางขนในรปแบบฟงกชนจะสามารถเรยกใชงานไดเลย

ไมตองสรางขนใหมทกครงทตองการใชงาน ชวยใหสามารถประหยดเวลา และเกดความสะดวกมากยงขน ฟงกชน

ทางเทคโนโลยสารสนเทศแตละฟงกชนจะมชอ และลกษณะการท างานทแตกตางกนออกไป หรอบางครงฟงกชน

ส าเรจรปทสรางมาแลวกม

ฟงกชนเปรยบเสมอนกลองด ากลองหนง เมอใสคาหรอตวเลขเขาไป 1 หรอหลายคา ผลลพธทไดออกมาจะเปนตว

เลขทผานกระบวนการตาง ๆ ทอยภายในกลองด าเรยบรอยแลว โดยขอมลเขาและผลลพธจะมความสมพนธ

บางอยางตอกนอย ความสมพนธนนคอกระบวนการทท าใหไดผลลพธนนเอง

ฟงกชนส าหรบอปกรณฮารดแวร คอการท างานทสมบรณแบบ ทมผลมาจากการมองเหนของเครอง

คอมพวเตอร อยางเชน เครองคอมพวเตอรทตอพวงกบเครองพมพ ถอไดวาเครองพมพเปนหนงฟงกชนของ

คอมพวเตอร ผลลพธทไดจากฟงกชนอยางเครองพมพคอเอกสารทถกพมพออกมาจากเครองพมพ ผานการสงงาน

จากเครองคอมพวเตอร

Page 2: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 2

ตกดเครองดมอตโนมตหยอดเหรยญนบเปนตวอยางท

สามารถแสดงถงฟงกชนได เพราะมการท างานทแตกตางกนอยาง

ชดเจนตรงทเมอกดปมเครองดมยหอใด หลงจากการหยอดเหรยญ

แลว เครองดมยหอนนจะรวงลงมาทบรเวณชองรบเครองดม โดยผใช

ไมทราบกระบวนการขนตอนการท างานภายในของตกดเครองดม

อตโนมตนเลย ขอมลขาวของตกดเครองดมนคอเหรยญหรอธนบตรท

ผใชใสเขาไปในตและยหอหรอเบอรของเครองดมทผใชกดหลงจาก

การหยอดเหรยญหรอธนบตร และขอมลผลลพธคอเครองดมทรวงลง

มาทางชองส าหรบรบสนคานนเอง ตวอยางฟงกชนจากตกดเครองดม

อตโนมตสามารถเขยนผงงานได ดงน

จากผงงาน สงเกตไดวามการใชสญลกษณใหมเขามา คอสญลกษณ Predefined Process เปนสญลกษณส าหรบ

การเรยกใชฟงกชนนนเอง สวนขยายหรอรายละเอยดของฟงกชนนนจะถกเขยนแยกเปนผงงานอกหนงผงงาน โดย

ผงงานทเขยนแยกส าหรบฟงกชนจะใชสญลกษณ จะใชสญลกษณ Terminator แตภายในจะใชชอฟงกชนแทนการ

ใชขอความวา "start" หรอ "เรมตน" ตอดวยการท างานตาง ๆ ทแทนดวยสญลกษณเชนเดยวกบการเขยนผงงาน

ปกต แตสญลกษณสดทายจะเปลยนเปนขอความวา “คนคา” แทนขอความวา “สนสด”

Page 3: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 3

โรงงานสวนใหญจะถกแบงสวนผลตออกเปนแผนกๆ โดยแตละแผนกจะผลตชนงานออกมาตาง ๆ กน ทก

ๆ ชนสวนจากทก ๆ แผนก อาจน ามาใช หรอไมส าหรบการประกอบเปนผลผลตทสมบรณหนงชน ตวอยางเชน

โรงงานผลตตกตา โดยโรงงานผลตตกตาจะแบงสวนการผลตออกเปนแผนกละชนสวน

- แผนกส าหรบเยบสวนหว

- แผนกส าหรบเยบสวนตว

- แผนกส าหรบเยบสวนแขน

- แผนกส าหรบเยนสวนขา

- แผนกส าหรบเยบสวนห

- แผนกส าหรบเยบเสอผา

และมหนงแผนกทจะรวมสวนตาง ๆ ของตกตาเปนตกตาทเสรจสมบรณ 1 ตว สามารถมองใหแผนกเยบรวมเพอให

เปนตกตาทสมบรณนเปนสวนของโปรแกรมหลก สามารถเขยนผงงานของแผนกรวม และแตละแผนกได ดงน

เรมตนทสญลกษณ Input/Output จะรบของเขาส

โรงงาน โดยเปนวตถดบทจะตองใชในการเยบตกตาชนสวนตาง ๆ

รวมทงใชปประกอบตกตาดวย ตอมาทสญลกษณ Predefined

Process "หว = แผนกเยบหว" จะท าการเยบสวนหวและสงผลลพธ

ออกมาเปนหวของตกตาทเสรจเรยบรอยแลว ตอมาทสญลกษณ

Predefined Process "ตว = แผนกเยบตว" แผนกนจะท าการเยบ

สวนตวและคนผลลพธมาเปนสวนตวของตกตาทเยบเสรจเรยบรอย

แลว สญลกษณ Predefined Process "แขน = แผนกเยบแขน" จะ

ท าการตดเยบแขนของตกตาและคนคาเปนแขนของตกตาทตดเยบ

เรยบรอยแลว ด าเนนการตอท "ขา = แผนกเยบขา" จะท าการตด

เยบสวนขาและคนคาเปนขาของตกตาทตดเยบเรยบรอยแลว ถดมา

เปนสญลกษณ Predefined Process "ขา = แผนกเยบขา" จะท า

การตดเยบขาและคนคาออกมาเปนผลงานขาของตกตาทเสรจ

เรยบรอยแลว เครองหมาย Predefined Process "ห = แผนกเยบ

ห" แผนกเยบหจะท าการตดเยบสวนหของตกตาและคนคาออกมา

ตวอยาง : โรงงานผลตตกตา

Page 4: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 4

เปนหของตกตาทตดเยบเสรจเรยบรอยแลว และตอทสญลกษณ Predefined Process "เสอผา = แผนกเยบ

เสอผา" แผนกเยบเสอผากจะท าการตดเยบเสอผา และคนคามาเปนเสอผาส าหรบสวมใสใหตกตา และสดทายเมอ

ทก ๆ แผนกสงชนสวนทเรยบรอยแลวคนมาใหสวนรวมชนสวน สวนทรวมชนสวนจะรวมทกสวนจากทกแผนกเขา

ดวยกนเปนตกตาทเสรจสมบรณแลว 1 ตว และไมวาโรงงานจะผลตตกตา 1 ตว 10 ตว 100 ตวหรอมากกวา ทก

ๆ แผนกจะท าเพยงหนาทของตนเองเทานน โดยไมตองเรยนรใหม แผนกหเพยงตดเยบสวนหเหมอนเดมเพยงแต

จ านวนเพมมากขน ไมตองเรยนรการตดเยบชดซงตองใชเวลาและอาจเปลองทรพยากรหากเกดความผดพลาดขน

ผงงานสวนของแผนกหว หรอฟงกชนส าหรบท าหว

เขยนโดยเรมตนดวยสญลกษณ Terminator และ

ภายในเปนชอฟงกชน ส าหรบแผนกหวจะระบวา

“แผนกเยบหว” ตอดวยสญลกษณ Process ส าหรบ

ขนตอนภายในแผนกอยาง “ตดผาตามสวนหว” “เยบ

ผาทตดมาแลวใหตดกน” “ตกแตงสวนปาก” “ตดจมก” “ตดตา” และไดผลลพธ

ออกมาเปนหวตกตาทเสรจสมบรณทสญลกษณ Input/Output “หวตกตา” จากนน

คนคาทสญลกษณ Terminator เปนการสงชนสวนหวของตกตาทเรยบรอยแลวใหกบ

สวนงานทท าการประกอบตกตา

สวนตอมาของตกตาคอสวนตว สวนนจะถก

ผลดโดยแผนกเยบสวนตว ผงงานจะเรมทสญลกษณ

Terminator “แผนกเยบสวนตว” เปนการเรมเขาส

ฟงกชนหรอแผนกเยบสวนตว ภายในแผนกนจะประกอบไปดวยสญลกษณ Process

อยาง “ตดผาตามสวนตว” “เยบผาทตดมาแลวใหตดกน” “ตกแตงสวนทอง” และ

สดทายจะไดชนงานออกมาเปนสวนตวของตกตาทเสรจสมบรณ และสงตอใหกบ

สวนงานรวมชนสวนตกตาตอไปทสญลกษณ Terminator “คนคา”

Page 5: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 5

ถดมาเปนสวนของแขนตกตา ผงงานสวนของแผนกเยบ

แขนตกตา เรมตนดวยสญลกษณ Terminator “แผนก

เยบแขน” และภายในฟงกชนหรอแผนกนจะเรมดวย

กระบวนการท างานดวยสญลกษณ Process “ตดผาตาม

สวนแขน” “เยบผาทตดมาแลวใหตดกน” “ตกแตงสวน

มอ” เรยบรอยแลวจะไดชนสวนของแขนตกตาออกมา 1

ค ประกอบดวยแขนขางซาย 1 ขางอละแขนขางขวา 1 ขาง จากนนท าการสงแขน

ทงสองขางไปยงสวนงานส าหรบรวมตกตาใหเปนตกตาทสมบรณทสญลกษณ

Terminator “คนคา” เปนอนจบการท างานของแผนกเยบแขน หรอฟงกชนแผนก

เยบแขน

แผนกเยบขาตกตาหรอฟงกชนเยบขาตกตา สวนของ

ฟงกชนเรมดวยสญลกษณ Terminator “แผนกเยบขา”

และกระบวนการภายในประกอบดวยสญลกษณ Process

“ตดผาตามสวนขา” “เยบผาทตดมาแลวใหตดกน”

“ตกแตงสวนเทา” “ตกแตงสวนเลบเทา” ท าใหไดขาตกตามา 1 ค ประกอบดวยขา

ขางซาย 1 ขางและขาขางขวา 1 ขาง ทสญลกษณ Input/Output “ขาตกตา” และ

สงขาตกตาทเสรจสมบรณจ านวน 1 คนไปยงสวนทรวมชนสวนของตกตาเขาดวยกน

เปนตกตา 1 ตวทเสรจเรยบรอย ทสญลกษณ “คนคา”

Page 6: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 6

สวนแผนกเยบหกเรมตนผงงานดวยสญลกษณ

Terminator เชนกน และภายในระบขอความ

วา “แผนกเยบห” จากนนภายในฟงกชนหรอ

ภายในแผนกจะใชสญลกษณ Process ท

ประกอบดวย “ตดผาตามสวนห” “เยบผาทตดมาแลวใหตดกน” “ตกแตงสวนห

ชนใน” “ตกแตงสวนหชนนอก” เรยบรอยแลวจะไดหของตกตามา 1 ค ประกอบดวย

หขางซาย 1 ขางและหขางขวา 1 ขางนนเอง จากนนท าการสงชนสวนของห 1 คนไป

ใหสวนงานรวมชนสวนตกตาทสญลกษณ Terminator “คนคา” เปนอนจบการ

ท างานของแผนกเยบสวนห

แผนกเยบเสอผาของตกตาจะมกระบวนการ

ท างานภายในประกอบดวย “ตดผาตาม

แบบตามขนาดตวของตกตา” “เยบผาทตด

มาแลวใหตดกน” “ตกแตงรายละเอยดตาง ๆ” จะไดชดของตกตาท

เสรจเรยบรอย และสงใหสวนรวมชนสวน

จากนนเมอทก ๆ แผนกคนคามาเปนชนสวนตาง ๆ ของตกตา

แลว สวนหลกของโรงงานทท าหนาทรวมชนสวนของตกตาเปนตว

ตกตาทเรยบรอย จะท าการเยบชนสวนตกตาประกอบเขาดวยกน หม

หอตกตา และสงขายในตลาดตอไป

ถาสมมตใหโรงงานตกตาไมไดผลตเพยงตกตาหมเทานน แตผลตตกตาอน ๆ ดวย แถมยงรบค าสงซอจาก

ลกคาถาลกคาตองการตกตาแบบทโรงงานไมเคยผลตมากอน การท างานของแผนกตาง ๆ จะเปลยนไป โดนทก ๆ

แผนกจะตองรองรบการตดเยบชนสวนของตกตาทมความหลากหลายมากขน สวนงานทรบค าสงจากลกคาจะตอง

ระบวาแตละแผนกจะตองตดเยบตกตาอะไร คลายกบการกดยหอของสนคาทตกดเครองดมอตโนมตนนเอง โดยจะ

แสดงตวอยางการขยายกจการของโรงงานผลตตกตาตอไป

Page 7: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 7

โดยรปแบบมาตรฐานของตกตาทงโรงงานมขอมลดงน

ตวอยางสวนหว

รหส Head1 Head2 Head3 Head4 Head5

ตวอยาง

สวนตว

รหส Body1 Body2

ตวอยางแขน-

ขา

รหส Arm1 Arm2 Leg1 Leg2

ตวอยางเครองแตงกาย

รหส Costums1 Costums2 Costums3 Costums4 Costums5

ถาลกคาสงตกตาลง ลกคาจะไดลงทสมบรณ เพราะจากตกตามาตรฐานทงหมดของโรงงานแลว ลงและหม เปน

ตกตาทมรปแบบทครบสมบรณทสด โดยแผนกรบค าสงจากลกคาจะตองแจงรายละเอยดตอแผนกผลตวาตองผลต

ตกตาอะไร เชน สงแผนกเยบหววาใหเยบหวลงจะเขยนขอความในผงงานไดวา “แผนกเยบหว (Head2)” “แผนก

เยบตว (Body2)” แผนกเยบแขน (Arm2)” “แผนกเยบขา (Leg2)” สวนเครองแตงกายนนจะมหรอไมกได แต

กรณนสมมตใหลกคาสงเครองแตงกายเปนโบวสชมพ จะสงแผนกเยบเสอผาวา “แผนกเยบเสอผา (Costums5)”

การสงท าตกตาลง สามารถเขยนผงงานได ดงน

Page 8: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 8

จากผงงาน เรมตนดวยการรบค าสงผลตจากลกคาคอ

“ลกคาตองการตกตาลง” ฝายรบออรเดอรจงตองแจงฝาย

ผลตใหผลตตกตาลง และแผนกตาง ๆ จะตองรบทราบวา

การท าชนสวนของตกตาลงนนจ าตองท าอยางไรบาง แผนก

ผลตจะกระจายค าสงไปทแผนกเยบหววาตองเยบหวลง ใช

สญลกษณ Predefined Process “หว = แผนกเยบหว

(Head2)” Head2 เปนการระบวาจะตองเยบหวตกตาตาม

แบบ Head2 นนคอหวลง สงแผนกเยบตววาจะตองเยบตว

ลง ใชสญลกษณ Predefined Process “ตว = แผนกเยบ

ตว (Body2)” Body2 คอการระบวาจะตองเยบตวม

ลกษณะเปนตวของลงถามแบบมาตรฐานตกตาของบรษท

สงแผนกเยบแขนวาตองเยบแขนลง ใชสญลกษณ

Predefined Process “แขน = แผนกเยบแขน (Arm2)”

Arm2 เปนการระบวาจะตองเยบแขนตามรปแบบของ

Arm2 สงแผนกเยบขาวาจะตองเยบขารปแบบ Leg2 และ

สงแผนกเยบเสอผาใหเยบโบวสชมพตามทลกคาตองการ คอ Costums5 นนเอง จากนนทก ๆ สวนจะถกสงมาท

แผนกรวมชนสวน และถกเยบชนสวนเขาดวยกนกลายเปนตกตาลงตดโบวสชมพ ทสญลกษณ Input/Output

“ตกตาลง” และน าไปสงใหลกคาตอไป

Page 9: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 9

จากผงงานสงเกตวาไมมการสงงานไปใหแผนกเยบหเชนตอนแรกทโรงงานผลตตกตาแบบเดยว นนเพราะหถกเยบ

ภายในแผนกเยบหวเรยบรอยแลวนนเอง สงเกตไดจากรปแบบตกตามาตรฐานทงหมดทโรงงานแหงนม

ตวอยางนจะแสดงการหาคามากทสด นอยทสด และคาเฉลย จากจ านวนตวเลข 5 จ านวนทผใชรบเขามา

มการสงขอมลทง 5 จ านวนทผใชรบเขาไปยงฟงกชนการหาคาเฉลย คามากทสด และคาสงทสด และใหฟงกชนคน

คาผลลพธกลบมาใหสวนโปรแกรมหลก ตวอยางการสงคาทง 5 จ านวนไปยงฟงกชนตาง ๆ สามารถเขยนได ดงน

เรมจากสญลกษณ Input/Output “x1, x2, x3, x4, x5” เปนการ

รบตวเลขทง 5 จ านวนจากผใช เกบลงตวแปรทง 5 ตวตามล าดบ

การปอนของผใช จากนนทสญลกษณ Predefined Process

“AVERAGE = average (x1, x2, x3, x4, x5)” เปนการสงคาทง 5

คาไปยงฟงกชนเพอหาผลลพธคาเฉลยทง 5 คาและเมอฟงกชนคน

ผลลพธกลบมาใหโปรแกรมหลก ผลลพธนนจะถกเกบลงในตวแปร

AVERAGE โปรแกรมหลกสงคาทง 5 จ านวนไปยงฟงกชน max

และ min อกดวย โดยผลลพธจากฟงกชน max ทคนจากการ

ท างานของฟงกชนจะถกเกบลงในตวแปร MAX และผลลพธทไดคน

จากการท างานของฟงกชน min จะถกเกบลงในตวแปร MIN

จากนนทสญลกษณ Input/Output “AVERAGE” “MAX” “MIN”

คอการแสดงผลลพธของแตการหาคาเฉลย คามากทสด และคาสง

ทสด ทถกเกบอยในตวแปรเหลานน ตามล าดบ เปนอนจบการท างาน รายละเอยดการท างานของฟงกชนตางๆ

เขยนดวยผงงานได ดงน

ตวอยาง : หาคา Max, Min, Average

Page 10: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 10

ผงงานสวนของฟงกชนการหาคาเฉลย ภายในจะท างานโดย

การน าคาในตวแปร x1, x2, x3, x4, x5 จากทโปรแกรมหลกสงมาบวก

กนและเกบผลบวกลงในตวแปร sum จากนนจะหารดวย 5 และเกบ

ผลลพธหลงการหารลงในตวแปร average และคนคาในตวแปร

average กลบสโปรแกรมหลก ซงคานจะถกเกบลงในตวแปร

AVERAGE ของฟงกชนหลกเพอแสดงผลลพธตอไป

ผงงานแสดงฟงกชน max การท างานภายในฟงกชนเรม

ดวยการน าคาในตวแปร x1 เกบลงในตวแปร max จากนน

น าคาในตวแปร max เปรยบเทยบกบคาในตวแปร x2 ถา

คาในตวแปร max นอยกวาคาในตวแปร x2 คาในตวแปร

x2 จะถกเกบลงในตวแปร max แทนคาเดมซงเปน x1 แต

ถาคาในตวแปร max ไมไดนอยกวาคาในตวแปร x2 คาใน

ตวแปร max จะยงคงเปนคา x1 เหมอนเดม และ

เปรยบเทยบคาในตวแปร max ละตวแปร x3 ตอ ถาคาใน

ตวแปร max นอยกวาคาในตวแปร x3 คาในตวแปร x3 จะ

ถกเกบลงในตวแปร max แทนคาเดม จากนนน าคาในตว

แปร max เปรยบเทยบกบคาในตวแปร x4 ตอ ถาคาในตว

แปร max นอยกวาคาในตวแปร x4 คาตวแปร x4 จะถก

เกบลงในตวแปร max แทนคาเดม และสดทายเปรยบเทยบ

คาในตวแปร max กบคาในตวแปร x5 ถาคาในตวแปร

max นอยกวาคาในตวแปร x5 คาในตว x5 จะถกเกบลงใน

ตวแปร max แทนคาเดม จากนนฟงกชนจะคนคาในตว

แปร max ใหกบโปรแกรมหลก และโปรแกรมหลกมตวแปร

MAX รองรบผลลพธจากฟงกชน MAX และน าไปแสดงผล

average (x1, x2, x3, x4, x5)

sum = x1+x2+x3+x4+x5

average = sum / 5

คนคา average

คนคา max

Page 11: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 11

ผงงานแสดงฟงกชน min การท างานภายในของ

ฟงกชน min เรมตนดวยการน าคาจากตวแปร x1 ท

โปรแกรมหลกสงมาเกบลงในตวแปร min และน าคาในตว

แปร min เปรยบเทยบกบคาในตวแปร x2 ถาคาในตวแปร

min มากกวาคาในตวแปร x2 คาในตวแปร x2 จะถกเกบ

ลงในตวแปร min แทนคาเดม น าคาในตวแปร min

เปรยบเทยบกบคาในตวแปร x3 ถาคาในตวแปร min

มากกวาคาในตวแปร x3 คาในตวแปร x3 จะถกเกบลงใน

ตวแปร min แทนคาเดม น าคาในตวแปร min

เปรยบเทยบกบคาในตวแปร x4 ตอไป ถาคาในตวแปร

min มากวาคาในตวแปร x4 คาในตวแปร x4 จะถกเกบลง

ในตวแปร min แทนคาเดม และสดทายน าคาในตวแปร

min เปรยบเทยบกบคาในตวแปร x5 ถาคาในตวแปร min

มากกวาคาในตวแปร x5 คาในตวแปร x5 จะถกเกบลงใน

ตวแปร min เมอเปรยบเทยบขอมลทง 5 ตวทถกเกบลงใน

ทง 5 ตวแปรเรยบรอยแลว ฟงกชนจะคนคาเปนผลลพธ

สดทายทถกเกบลงในตวแปร min ไปใหโปรแกรมหลก

และโปรแกรมหลกจะเกบคาทไดคนจากฟงกชน min ลงใน

ตวแปร MIN และแสดงผลตอไป

คนคา min

Page 12: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 12

จากการอธบายและผงงาน อาจเขาใจการท างานแบบแยกสวนการท างานยอยออกจากการท างานหลกไป

บางแลว แตเพอเพมความเขาใจ และสามารถเหนผลลพธจรงได จะแสดงการสรางชนงานดวยโปรแกรม Scratch

โดยการใชบลอกค าสงส าหรบการสรางฟงกชน ดงน

บลอกค าสงส าหรบการสรางฟงกชนจะอยในบลอกค าสงหมวด More

Blocks ซงเปนหมวดสดทายจากหมวดของบลอกค าสงทงหมด ภายใน

บลอกค าสงหมวดนจะประกอบไปดวยปม 2 ปม กดปมแรกคอ Make a

Block จากนนจะปรากฏหนาตางขนบรเวณกลางหนาจอ เพอใหผใชตง

ชอของฟงกชน และก าหนดรปแบบของคาทฟงกชนจะรบจาก

โปรแกรมหลก ดงน

(รปดานซาย) บลอกสมวงบรเวณดานบนซาย คอสวนทผใชจะตองตงชอใหกบฟงกชน และสวนถดมา ภายใต

ขอความ “options” เปนสวนทผใชสามารถคลกเลอกรปแบบขอมลทฟงกชนรบจากโปรแกรมหลก (รปดานขวา)

เมอคลก 1 ครงจะปรากฏบลอกลกษณะนน ๆ 1 บลอก เมอคลกอกครงจะปรากฏอก 1 บลอก โดยบลอกจะ

เรยงล าดบกนจากการคลกครงแรก ไปยงการคลกครงสดทาย เมอปรากฏบลอกภายในบลอกสมวงดานบนแลว ผใช

สามารถตงชอใหตวแปรนน ๆ ส าหรบน าไปใชภายในฟงกชนตอไดเลย เมอสรางสวนหวและขอมลรบเขาของ

ฟงกชนไดแลว ตอไปคอการใสล าดบการท างานใหกบฟงกชน

สรางชนงานดวยโปรแกรม Scratch

Page 13: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 13

หลงจากผใชกดปม OK บนหนาตางการสรางฟงกชนแลว จะปรากฏบลอก

ค าสงสมวง บรเวณหมวดค าสง โดยมชอและตวแปรทรบเขาตามทผใช

ก าหนด การก าหนดการท างานภายในฟงกชนท าไดโดยการน าบลอกค าสง

ทสรางเรยบรอยแลวน วางลงบรเวณพนทส าหรบวางบลอกค าสง

เชนเดยวกบการวางบลอกค าสงทวไป

ตวอยางฟงกชนนคอฟงกชนส าหรบหาผลบวกจากจ านวนใด ๆ 2 จ านวน ชอฟงกชน add ตวแปรทรบเขาม 2 ตว

แปรคอ num1 และ num2 การหาผลลพธของฟงกชนจะตองสรางตวแปร 1 ตวเพอรองรบคาผลลพธ ส าหรบการ

สรางตวแปรนน สามารถท าไดเชนเดยวกบการสรางตวแปรปกต โดยกดทบลอกค าสงหมด Data และด าเนนการตง

ชอใหเรยบรอย แลวน ามาใชงาน โดยการลากมาวางตอจากบลอกค าสงสมวงนไดเลย

ตวอยางนจะสรางตวแปร sum เพอรองรบผลบวกของ num1

และ num2 การใชตวแปร num1 และ num2 สามารถคลก

เมาสบรเวณตวอแปรนน ทบลอกค าสงสมวง แลวลากมาวาง

บรเวณทตองการใชไดเลย จากรป ท าการคลกทตวแปร num1

และ num2 แลวลากมาวางซอนทบบลอกค าสงการด าเนนการ

ทางคณตศาสตรอยางบลอกค าสงบวก ( + ) เลย การน าผลลพธทถกเกบในตวแปร sum สามารถน าไปใชตอไดเลย

เชนเดยวกบตวแปรอน ๆ เชน ใหตวละแสดงขอความวา say…join…“ผลรวมเทากบ”…sum..3…secs สามารถน า

บลอกตวแปร sum วางซอนกบบลอกค าสง say และบลอกค าสง join ไดเลย ดงน

Page 14: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 14

ภาพน แสดงนการสรางบลอกค าสงฟงกชน การวางบลอกค าสงการท างานของฟงกชน และการใชงานบลอกค าสง

ฟงกชน จากภาพบรเวณทมกรอบสแดง คอการเรยกใชงานฟงกชน โดยจะตองสงคาไปใหฟงกชน 2 คาคอ n1 และ

n2 และแสดงผลผานการพดของตวละคร ดวยผลลพธทถกเกบอยในตวแปร sum สามารถชมชนงานและบลอก

ค าสงของตวอยางฟงกชน add ไดท https://scratch.mit.edu/projects/111957257/

Page 15: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 15

จากตวอยางกอนหนานทแสดงถงการหาคาทมากทสด คาทนอยทสด และคาเฉลย จากขอมล 5 จ านวน

แลว จะแสดงการสรางฟงกชนการหาคามากทสด สงทสด และคาเฉลย จากขอมล 3 จ านวน แตละฟงกชนจะตอง

รบขอมลเขา 3 จ านวน และแสดงผงงานของโปรแกรมหลก ดงน

โปรแกรมหลกจะรบขอมลเขา 3 จ านวนเกบลงในตวแปร num1

num2 num3 ตามล าดบ จากนนสงคาทง 3 ไปยงฟงกชน

average(num1, num2, num3) ทสญลกษณ Predefined

Process แสดงผลลพธของตวแปร avg จากนนสงคาทง 3 คาไปยง

ฟงกชน maximum(num1, num2, num3) แสดงผลลพธของตว

แปร max สงคาทง 3 คาไปยงฟงกชน minimum(num1, num2,

num3) แสดงผลลพธของตวแปร min แตละฟงกชนมรายละเอยด

การท างานทแตกตางกน ดงแสดงในรปแบบของผงงานและการวาง

บลอกค าสงได ดงน

ตวอยาง : หาคา Max, Min, Average

คนคา avg

Page 16: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 16

จากบลอกค าสง ตวแปร sum จะเกบผลลพธของ number1 + number2 + number3 และหารดวย 3 เพอหา

คาเฉลย จากนนเกบคาเฉลยลงในตวแปรม avg เพอใหโปรแกรมหลกน าไปใชแสดงผล

(1) ชอฟงกชน maximum รบขอมลเขา 3 ตวชอเปนตวแปรชอ num1 num2 num3 วางบลอกค าสงใน

โปรแกรม Scratch ดงน

บลอกค าสงส าหรบฟงกชนชอ maximum รบตวแปรเขาฟงกชน 3 ตวคอ number1 number2 และ

number3

(2) เปรยบเทยบหาคาทมากทสด โดยเงอนไขนตรวจสอบวา num1>num2 และ num1>num3 จรงหรอไม

ถา num1 มากกวาทง num1 และ num2 จรงแปลวา num1 คอคาทมากทสด จงเกบคาในตวแปร

num1 ลงตวแปร max วางบลอกค าสงได ดงน

วางบลอกค าสง if……..then วางบลอกค าสง and ทเงอนไขของบลอกค าสง if วางบลอกค าสงมากกวา

(>) จากนนน าตวแปรของฟงกชนมาวางเพอทารเปรยบเทยบ ถาเงอนไขทงหมดเปนจรง จะเกบคาในตว

แปร number1 สตวแปร max

คนคา max

Page 17: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 17

(3) เกบคาจากตวแปร max สตวแปร max จะท างานเมอ num1 มากกวา num2 และ num3 เทานน วาง

บลอกค าสงเปนบลอกค าสงภายใน (2)

(4) – (6) เมอเงอนไข num1>num2andnum1>num3 เปนเทจจงด าเนนการมาสวนน โดยจะท าการ

ตรวจสอบวา num2>num1 และ num2>num3 จรงหรอไม ถาจรงจะเกบคาของตวแปร num2 ลงใน

ตวแรป max วางบลอกค าสงของเงอนไข ดงน

บลอกค าสงนจะเปรยบเทยบคาในตวแปร number2 กบ number1 และ number3 วามคามากกวาทง

สองจ านวนหรอไม ถามคามากกวาทงสองจ านวนจรง คาในตวแปร number2 จะถกเกบลงในตวแปร

max แตถาคาในตวแปร number2 ไมมากกวา number1 หรอ number3 แลวแสดงวาจะเหลออกเพยง

1 คาทมากทสด มากกวา number1 และมากกวา number2 นนคอ number3 จะลงมาท างานทบลอก

ค าสงภายใต else คอเกบคาในตวแปร number3 ลงสตวแปร max นนเอง

(1) ชอฟงกชน minimum รบเขาตวแปร 3 ตวคอ num1 num2 และ num3 วางบลอกค าสงโดยสราง

บลอกค าสงฟงกชนและตงชอใหเรยบรอย ดงน

คนคา min

Page 18: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 18

จากบลอกค าสง เปนบลอกค าสงฟงกชนชอ minimum รบขอมลเขา 3 จ านวน ชอตวแปร number1

number2 และ number3

(2) เปรยบเทยบ num1 กบ num2 และ num3 ถาคาในตวแปร num1 มากกวาคาในตวแปร num2 และ

num3 จรง จะท าการเกบคานตวแปร num1 สตวแปร min วางบลอกค าสงดงน

บลอกค าสง if……..then ถกวางซอนดวยบลอกค าสง and และบลอกค าสงมากกวา (>) ถา

number1<number2 และ number1<number3 จรงจะท าการเกบคาจากตวแปร number1 ลงสตว

แปร min

(3) ท าการเกบคาในตวแปร num1 ลงสตวแปร min จะท างานเมอคาในตวแปร min นอยกวาคาในตวแปร

num2 และ num3 เทานน

(4) – (6) เปรยบเทยบคาในตวแปร num2<num1 และ num2<num3 เมอคาในตวแปร num2 นอยกวา

คาทงในตวแปร num1 และ num3 แปลวาคาในตวแปร num2 คอคาทนอยทสด และเมอคาในตวแปร

num2 คอคาทนอยทสดจรงจงเกบคาในตวแปร num2 ลงในตวแปร min แตถาคาในตวแปร num2 ไม

นอยกวาคาในตวแปร num1 และ num3 แลว จะเหลอเพยงคาเดยวทนอยทสด เมอไมใชคาในตวแปร

num1 และ num2 แลว คาทนอยทสดคอคาในตวแปร num3 วางบลอกค าสงของเงอนได ดงน

จากบลอกค าสง ถาคาในตวแปร number2<number1 และ number2<number3 แสดงวาคาในตว

แปร number2 คอคาทนอยทสด จงเกบคาในตวแปร number2 ลงในตวแปร min เพอเปนผลลพธ และ

Page 19: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 19

บลอกค าสง if………then ดานลาง เปรยบเทยบ number3<number1 และ number3<number2 เมอ

number3 นอยกวาจ านวนอกสองจ านวนจรง แสดงวา number3 คอคาทนอยทสด จงเกบคาตวแปร

number3 ลงในตวแปร min เปนผลพธใหโปรแกรมหลกแสดงผลตอไป

สามารถชมตวอยางการหาคามากทสด สงทสด คาเฉลย และบลอกค าสงไดท

https://scratch.mit.edu/projects/111687899/

นอกจากตกดเครองดมอตโนมตแลว ยงมเครองมออปกรณอน ๆ อกทสามารถกดเลอกรปแบบการท างาน

และรอผลลพธได เชน เครองซกผาทบาน ไมโครเวฟ เครองพมพเอกสาร แตอปกรณเหลานน เราไมไดเปนผเขยน

ฟงกชน และก าหนดการท างานของฟงกชนเอง เราเปนเพยงผใชเทานน ถากลบกน เราเปนผสราง แลวใหผอนเปน

ผใชบาง เราจะทราบถงรายละเอยดการท างานภายในฟงกชน รวมถงขอมลเขา และขอมลผลลพธไดอยางดทเดยว

Page 20: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 20

ลงโชคเปนชายวยกลางคนทมฐานะร ารวยมาก ลงโชคตระเวนซอทดนทมคน

ประกาศขายทวทกแหงหน จนลงโชคจ าไดไมหมดวาลงโชคซอทดนขนาดเทาไหร ไวทไหน

บาง ลงโชคจงประกาศใหคนทวทกแหงหนชวยลงโชคสงเกตวาพนททอยบรเวณใกลเคยง

กบพวกเขานน มทดนของลงโชคอยบางหรอเปลา และลงโชคเปนคนทเขาถงเทคโนโลย

ใหมๆ มาก ลงโชคจงจะวาจางใหนสตสรางชนงานทสามารถค านวณพนททดนทงหมดทคน

อน ๆ พบเจอ และรวบรวมขอมลทงหมดมาใหลงโชค โดยลงโชคใจดใหขอมลวา ลงโชคจ า

ไดวาทดนของลงโชคม 3 รปแบบคอทดนทเปนลกษณะสเหลยมใด ๆ สามเหลยม และ

สเหลยมคางหม

นสตตอบรบสรางชนงานใหกบลงโชคโดยวางแผนการท างานในรปแบบของผงงาน

ไวดงน

ตวอยาง : ผมมทดนเยอะมาก

Page 21: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 21

นสตวางแผนใหผใชทเปนผคนพบทดนของลงโชค โดยทอนดบแรกผใชจะตองกรอกจ านวนทดนทพบทงหมด

จากนนผใชจะตองกรอกรายละเอยดของทดนแตละแหงทพบ ถาผใชกดหมายเลข 1 แปลวาผใชพบทดนรปแบบ

สเหลยมใด ๆ จะตองกรอกความยาวทงสองของทดนรปแบบสเหลยมทพบ ถาผใชกดหมายเลข 2 แปลวาผใชพบ

ทดนรปแบบสามเหลยม จะตองกรอกความยาวฐานและความสงของทดนทพบ และถาผใชกดหมายเลข 3 แปลวา

ผใชพบทดนรปแบบสเหลยมคางหม จะตองกรอกความสงและผลบวกของดานคขนานของทดนทพบ จากนน

โปรแกรมจะท าการค านวณพนทแตละแหงทผใชพบทงหมด และน าจ านวนผลลพธของทดนทก ๆ แหงมารวมกน

และแจงใหลงโชคทราบ โดยนสตวางแผนของการท างานของทดนแตละรปแบบเมอผใชกรอกหมายเลข 1 ถง

หมายเลข 3 ดงน

เมอผใชกรอกหมายเลข 1 แสดงวาผใชพบทดนรปแบบสเหลยม

ฟงกชนการท างานของการหาพนททดนรปแบบสเหลยม จะน าคาในตว

แปร side1 และ side2 มาคณกน จากนนจะน าผลลพธสงให

โปรแกรมหลก น าไปรวมกบทดนแหงอน ๆ

เมอผใชกรอกหมายเลข 2 แสดงวาผใชพบทดนรปแบบสามเหลยม

ฟงกชนการท างานของการหาพนททดนรปแบบสามเหลยม จะน าคาใน

ตวแปร width * height * 0.5 และเกบผลลพธลงในตวแปร

areaTriangle เพอรอใหโปรแกรมหลกน าคาไปรวมกบทดนแหงอน ๆ

คนคา areaSquare

คนคา areaTriangle

Page 22: บทที่ 10 การแตกปัญหาออกเป็น ...บทท 10 การแตกป ญหาออกเป นป ญหาย อยและการส

บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 22

เมอผใชกรอกหมายเลข 3 แสดงวาผใชพบทดนรปแบบสเหลยมคางหม

ฟงกชนการท างานของการหาพนททดนรปแบบสเหลยมคางหม จะ

น าคาในตวแปร heightTrapezoid * summationParalell * 0.5

และเกบผลลพธลงในตวแปร areaTrapezoid เพอรอให

โปรแกรมหลกน าคาไปรวมกบทดนแหงอน ๆ ทผใชพบ

จากตวอยางทดนของลงโชคน สามารถทดสอบและศกษาเพมเตมไดท

https://scratch.mit.edu/projects/113997467/

คนคา areaTrapezoid

areaTrapezoid =

0.5*heightTrapezoid*summationParalell