Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 1
บทท 10
การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย
การแตกปญหาออกเปนปญหายอย หรอเรยกวา ฟงกชน โดยฟงกชนคอการน าปญหาใหญๆ มาแบง
ออกเปนสวนๆ ส าหรบสวนไหนทจะตองใชงานบอย ๆ ถาสรางขนในรปแบบฟงกชนจะสามารถเรยกใชงานไดเลย
ไมตองสรางขนใหมทกครงทตองการใชงาน ชวยใหสามารถประหยดเวลา และเกดความสะดวกมากยงขน ฟงกชน
ทางเทคโนโลยสารสนเทศแตละฟงกชนจะมชอ และลกษณะการท างานทแตกตางกนออกไป หรอบางครงฟงกชน
ส าเรจรปทสรางมาแลวกม
ฟงกชนเปรยบเสมอนกลองด ากลองหนง เมอใสคาหรอตวเลขเขาไป 1 หรอหลายคา ผลลพธทไดออกมาจะเปนตว
เลขทผานกระบวนการตาง ๆ ทอยภายในกลองด าเรยบรอยแลว โดยขอมลเขาและผลลพธจะมความสมพนธ
บางอยางตอกนอย ความสมพนธนนคอกระบวนการทท าใหไดผลลพธนนเอง
ฟงกชนส าหรบอปกรณฮารดแวร คอการท างานทสมบรณแบบ ทมผลมาจากการมองเหนของเครอง
คอมพวเตอร อยางเชน เครองคอมพวเตอรทตอพวงกบเครองพมพ ถอไดวาเครองพมพเปนหนงฟงกชนของ
คอมพวเตอร ผลลพธทไดจากฟงกชนอยางเครองพมพคอเอกสารทถกพมพออกมาจากเครองพมพ ผานการสงงาน
จากเครองคอมพวเตอร
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 2
ตกดเครองดมอตโนมตหยอดเหรยญนบเปนตวอยางท
สามารถแสดงถงฟงกชนได เพราะมการท างานทแตกตางกนอยาง
ชดเจนตรงทเมอกดปมเครองดมยหอใด หลงจากการหยอดเหรยญ
แลว เครองดมยหอนนจะรวงลงมาทบรเวณชองรบเครองดม โดยผใช
ไมทราบกระบวนการขนตอนการท างานภายในของตกดเครองดม
อตโนมตนเลย ขอมลขาวของตกดเครองดมนคอเหรยญหรอธนบตรท
ผใชใสเขาไปในตและยหอหรอเบอรของเครองดมทผใชกดหลงจาก
การหยอดเหรยญหรอธนบตร และขอมลผลลพธคอเครองดมทรวงลง
มาทางชองส าหรบรบสนคานนเอง ตวอยางฟงกชนจากตกดเครองดม
อตโนมตสามารถเขยนผงงานได ดงน
จากผงงาน สงเกตไดวามการใชสญลกษณใหมเขามา คอสญลกษณ Predefined Process เปนสญลกษณส าหรบ
การเรยกใชฟงกชนนนเอง สวนขยายหรอรายละเอยดของฟงกชนนนจะถกเขยนแยกเปนผงงานอกหนงผงงาน โดย
ผงงานทเขยนแยกส าหรบฟงกชนจะใชสญลกษณ จะใชสญลกษณ Terminator แตภายในจะใชชอฟงกชนแทนการ
ใชขอความวา "start" หรอ "เรมตน" ตอดวยการท างานตาง ๆ ทแทนดวยสญลกษณเชนเดยวกบการเขยนผงงาน
ปกต แตสญลกษณสดทายจะเปลยนเปนขอความวา “คนคา” แทนขอความวา “สนสด”
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 3
โรงงานสวนใหญจะถกแบงสวนผลตออกเปนแผนกๆ โดยแตละแผนกจะผลตชนงานออกมาตาง ๆ กน ทก
ๆ ชนสวนจากทก ๆ แผนก อาจน ามาใช หรอไมส าหรบการประกอบเปนผลผลตทสมบรณหนงชน ตวอยางเชน
โรงงานผลตตกตา โดยโรงงานผลตตกตาจะแบงสวนการผลตออกเปนแผนกละชนสวน
- แผนกส าหรบเยบสวนหว
- แผนกส าหรบเยบสวนตว
- แผนกส าหรบเยบสวนแขน
- แผนกส าหรบเยนสวนขา
- แผนกส าหรบเยบสวนห
- แผนกส าหรบเยบเสอผา
และมหนงแผนกทจะรวมสวนตาง ๆ ของตกตาเปนตกตาทเสรจสมบรณ 1 ตว สามารถมองใหแผนกเยบรวมเพอให
เปนตกตาทสมบรณนเปนสวนของโปรแกรมหลก สามารถเขยนผงงานของแผนกรวม และแตละแผนกได ดงน
เรมตนทสญลกษณ Input/Output จะรบของเขาส
โรงงาน โดยเปนวตถดบทจะตองใชในการเยบตกตาชนสวนตาง ๆ
รวมทงใชปประกอบตกตาดวย ตอมาทสญลกษณ Predefined
Process "หว = แผนกเยบหว" จะท าการเยบสวนหวและสงผลลพธ
ออกมาเปนหวของตกตาทเสรจเรยบรอยแลว ตอมาทสญลกษณ
Predefined Process "ตว = แผนกเยบตว" แผนกนจะท าการเยบ
สวนตวและคนผลลพธมาเปนสวนตวของตกตาทเยบเสรจเรยบรอย
แลว สญลกษณ Predefined Process "แขน = แผนกเยบแขน" จะ
ท าการตดเยบแขนของตกตาและคนคาเปนแขนของตกตาทตดเยบ
เรยบรอยแลว ด าเนนการตอท "ขา = แผนกเยบขา" จะท าการตด
เยบสวนขาและคนคาเปนขาของตกตาทตดเยบเรยบรอยแลว ถดมา
เปนสญลกษณ Predefined Process "ขา = แผนกเยบขา" จะท า
การตดเยบขาและคนคาออกมาเปนผลงานขาของตกตาทเสรจ
เรยบรอยแลว เครองหมาย Predefined Process "ห = แผนกเยบ
ห" แผนกเยบหจะท าการตดเยบสวนหของตกตาและคนคาออกมา
ตวอยาง : โรงงานผลตตกตา
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 4
เปนหของตกตาทตดเยบเสรจเรยบรอยแลว และตอทสญลกษณ Predefined Process "เสอผา = แผนกเยบ
เสอผา" แผนกเยบเสอผากจะท าการตดเยบเสอผา และคนคามาเปนเสอผาส าหรบสวมใสใหตกตา และสดทายเมอ
ทก ๆ แผนกสงชนสวนทเรยบรอยแลวคนมาใหสวนรวมชนสวน สวนทรวมชนสวนจะรวมทกสวนจากทกแผนกเขา
ดวยกนเปนตกตาทเสรจสมบรณแลว 1 ตว และไมวาโรงงานจะผลตตกตา 1 ตว 10 ตว 100 ตวหรอมากกวา ทก
ๆ แผนกจะท าเพยงหนาทของตนเองเทานน โดยไมตองเรยนรใหม แผนกหเพยงตดเยบสวนหเหมอนเดมเพยงแต
จ านวนเพมมากขน ไมตองเรยนรการตดเยบชดซงตองใชเวลาและอาจเปลองทรพยากรหากเกดความผดพลาดขน
ผงงานสวนของแผนกหว หรอฟงกชนส าหรบท าหว
เขยนโดยเรมตนดวยสญลกษณ Terminator และ
ภายในเปนชอฟงกชน ส าหรบแผนกหวจะระบวา
“แผนกเยบหว” ตอดวยสญลกษณ Process ส าหรบ
ขนตอนภายในแผนกอยาง “ตดผาตามสวนหว” “เยบ
ผาทตดมาแลวใหตดกน” “ตกแตงสวนปาก” “ตดจมก” “ตดตา” และไดผลลพธ
ออกมาเปนหวตกตาทเสรจสมบรณทสญลกษณ Input/Output “หวตกตา” จากนน
คนคาทสญลกษณ Terminator เปนการสงชนสวนหวของตกตาทเรยบรอยแลวใหกบ
สวนงานทท าการประกอบตกตา
สวนตอมาของตกตาคอสวนตว สวนนจะถก
ผลดโดยแผนกเยบสวนตว ผงงานจะเรมทสญลกษณ
Terminator “แผนกเยบสวนตว” เปนการเรมเขาส
ฟงกชนหรอแผนกเยบสวนตว ภายในแผนกนจะประกอบไปดวยสญลกษณ Process
อยาง “ตดผาตามสวนตว” “เยบผาทตดมาแลวใหตดกน” “ตกแตงสวนทอง” และ
สดทายจะไดชนงานออกมาเปนสวนตวของตกตาทเสรจสมบรณ และสงตอใหกบ
สวนงานรวมชนสวนตกตาตอไปทสญลกษณ Terminator “คนคา”
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 5
ถดมาเปนสวนของแขนตกตา ผงงานสวนของแผนกเยบ
แขนตกตา เรมตนดวยสญลกษณ Terminator “แผนก
เยบแขน” และภายในฟงกชนหรอแผนกนจะเรมดวย
กระบวนการท างานดวยสญลกษณ Process “ตดผาตาม
สวนแขน” “เยบผาทตดมาแลวใหตดกน” “ตกแตงสวน
มอ” เรยบรอยแลวจะไดชนสวนของแขนตกตาออกมา 1
ค ประกอบดวยแขนขางซาย 1 ขางอละแขนขางขวา 1 ขาง จากนนท าการสงแขน
ทงสองขางไปยงสวนงานส าหรบรวมตกตาใหเปนตกตาทสมบรณทสญลกษณ
Terminator “คนคา” เปนอนจบการท างานของแผนกเยบแขน หรอฟงกชนแผนก
เยบแขน
แผนกเยบขาตกตาหรอฟงกชนเยบขาตกตา สวนของ
ฟงกชนเรมดวยสญลกษณ Terminator “แผนกเยบขา”
และกระบวนการภายในประกอบดวยสญลกษณ Process
“ตดผาตามสวนขา” “เยบผาทตดมาแลวใหตดกน”
“ตกแตงสวนเทา” “ตกแตงสวนเลบเทา” ท าใหไดขาตกตามา 1 ค ประกอบดวยขา
ขางซาย 1 ขางและขาขางขวา 1 ขาง ทสญลกษณ Input/Output “ขาตกตา” และ
สงขาตกตาทเสรจสมบรณจ านวน 1 คนไปยงสวนทรวมชนสวนของตกตาเขาดวยกน
เปนตกตา 1 ตวทเสรจเรยบรอย ทสญลกษณ “คนคา”
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 6
สวนแผนกเยบหกเรมตนผงงานดวยสญลกษณ
Terminator เชนกน และภายในระบขอความ
วา “แผนกเยบห” จากนนภายในฟงกชนหรอ
ภายในแผนกจะใชสญลกษณ Process ท
ประกอบดวย “ตดผาตามสวนห” “เยบผาทตดมาแลวใหตดกน” “ตกแตงสวนห
ชนใน” “ตกแตงสวนหชนนอก” เรยบรอยแลวจะไดหของตกตามา 1 ค ประกอบดวย
หขางซาย 1 ขางและหขางขวา 1 ขางนนเอง จากนนท าการสงชนสวนของห 1 คนไป
ใหสวนงานรวมชนสวนตกตาทสญลกษณ Terminator “คนคา” เปนอนจบการ
ท างานของแผนกเยบสวนห
แผนกเยบเสอผาของตกตาจะมกระบวนการ
ท างานภายในประกอบดวย “ตดผาตาม
แบบตามขนาดตวของตกตา” “เยบผาทตด
มาแลวใหตดกน” “ตกแตงรายละเอยดตาง ๆ” จะไดชดของตกตาท
เสรจเรยบรอย และสงใหสวนรวมชนสวน
จากนนเมอทก ๆ แผนกคนคามาเปนชนสวนตาง ๆ ของตกตา
แลว สวนหลกของโรงงานทท าหนาทรวมชนสวนของตกตาเปนตว
ตกตาทเรยบรอย จะท าการเยบชนสวนตกตาประกอบเขาดวยกน หม
หอตกตา และสงขายในตลาดตอไป
ถาสมมตใหโรงงานตกตาไมไดผลตเพยงตกตาหมเทานน แตผลตตกตาอน ๆ ดวย แถมยงรบค าสงซอจาก
ลกคาถาลกคาตองการตกตาแบบทโรงงานไมเคยผลตมากอน การท างานของแผนกตาง ๆ จะเปลยนไป โดนทก ๆ
แผนกจะตองรองรบการตดเยบชนสวนของตกตาทมความหลากหลายมากขน สวนงานทรบค าสงจากลกคาจะตอง
ระบวาแตละแผนกจะตองตดเยบตกตาอะไร คลายกบการกดยหอของสนคาทตกดเครองดมอตโนมตนนเอง โดยจะ
แสดงตวอยางการขยายกจการของโรงงานผลตตกตาตอไป
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 7
โดยรปแบบมาตรฐานของตกตาทงโรงงานมขอมลดงน
ตวอยางสวนหว
รหส Head1 Head2 Head3 Head4 Head5
ตวอยาง
สวนตว
รหส Body1 Body2
ตวอยางแขน-
ขา
รหส Arm1 Arm2 Leg1 Leg2
ตวอยางเครองแตงกาย
รหส Costums1 Costums2 Costums3 Costums4 Costums5
ถาลกคาสงตกตาลง ลกคาจะไดลงทสมบรณ เพราะจากตกตามาตรฐานทงหมดของโรงงานแลว ลงและหม เปน
ตกตาทมรปแบบทครบสมบรณทสด โดยแผนกรบค าสงจากลกคาจะตองแจงรายละเอยดตอแผนกผลตวาตองผลต
ตกตาอะไร เชน สงแผนกเยบหววาใหเยบหวลงจะเขยนขอความในผงงานไดวา “แผนกเยบหว (Head2)” “แผนก
เยบตว (Body2)” แผนกเยบแขน (Arm2)” “แผนกเยบขา (Leg2)” สวนเครองแตงกายนนจะมหรอไมกได แต
กรณนสมมตใหลกคาสงเครองแตงกายเปนโบวสชมพ จะสงแผนกเยบเสอผาวา “แผนกเยบเสอผา (Costums5)”
การสงท าตกตาลง สามารถเขยนผงงานได ดงน
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 8
จากผงงาน เรมตนดวยการรบค าสงผลตจากลกคาคอ
“ลกคาตองการตกตาลง” ฝายรบออรเดอรจงตองแจงฝาย
ผลตใหผลตตกตาลง และแผนกตาง ๆ จะตองรบทราบวา
การท าชนสวนของตกตาลงนนจ าตองท าอยางไรบาง แผนก
ผลตจะกระจายค าสงไปทแผนกเยบหววาตองเยบหวลง ใช
สญลกษณ Predefined Process “หว = แผนกเยบหว
(Head2)” Head2 เปนการระบวาจะตองเยบหวตกตาตาม
แบบ Head2 นนคอหวลง สงแผนกเยบตววาจะตองเยบตว
ลง ใชสญลกษณ Predefined Process “ตว = แผนกเยบ
ตว (Body2)” Body2 คอการระบวาจะตองเยบตวม
ลกษณะเปนตวของลงถามแบบมาตรฐานตกตาของบรษท
สงแผนกเยบแขนวาตองเยบแขนลง ใชสญลกษณ
Predefined Process “แขน = แผนกเยบแขน (Arm2)”
Arm2 เปนการระบวาจะตองเยบแขนตามรปแบบของ
Arm2 สงแผนกเยบขาวาจะตองเยบขารปแบบ Leg2 และ
สงแผนกเยบเสอผาใหเยบโบวสชมพตามทลกคาตองการ คอ Costums5 นนเอง จากนนทก ๆ สวนจะถกสงมาท
แผนกรวมชนสวน และถกเยบชนสวนเขาดวยกนกลายเปนตกตาลงตดโบวสชมพ ทสญลกษณ Input/Output
“ตกตาลง” และน าไปสงใหลกคาตอไป
บทท 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
บทท 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
บทท 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
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 12
จากการอธบายและผงงาน อาจเขาใจการท างานแบบแยกสวนการท างานยอยออกจากการท างานหลกไป
บางแลว แตเพอเพมความเขาใจ และสามารถเหนผลลพธจรงได จะแสดงการสรางชนงานดวยโปรแกรม Scratch
โดยการใชบลอกค าสงส าหรบการสรางฟงกชน ดงน
บลอกค าสงส าหรบการสรางฟงกชนจะอยในบลอกค าสงหมวด More
Blocks ซงเปนหมวดสดทายจากหมวดของบลอกค าสงทงหมด ภายใน
บลอกค าสงหมวดนจะประกอบไปดวยปม 2 ปม กดปมแรกคอ Make a
Block จากนนจะปรากฏหนาตางขนบรเวณกลางหนาจอ เพอใหผใชตง
ชอของฟงกชน และก าหนดรปแบบของคาทฟงกชนจะรบจาก
โปรแกรมหลก ดงน
(รปดานซาย) บลอกสมวงบรเวณดานบนซาย คอสวนทผใชจะตองตงชอใหกบฟงกชน และสวนถดมา ภายใต
ขอความ “options” เปนสวนทผใชสามารถคลกเลอกรปแบบขอมลทฟงกชนรบจากโปรแกรมหลก (รปดานขวา)
เมอคลก 1 ครงจะปรากฏบลอกลกษณะนน ๆ 1 บลอก เมอคลกอกครงจะปรากฏอก 1 บลอก โดยบลอกจะ
เรยงล าดบกนจากการคลกครงแรก ไปยงการคลกครงสดทาย เมอปรากฏบลอกภายในบลอกสมวงดานบนแลว ผใช
สามารถตงชอใหตวแปรนน ๆ ส าหรบน าไปใชภายในฟงกชนตอไดเลย เมอสรางสวนหวและขอมลรบเขาของ
ฟงกชนไดแลว ตอไปคอการใสล าดบการท างานใหกบฟงกชน
สรางชนงานดวยโปรแกรม Scratch
บทท 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 ไดเลย ดงน
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 14
ภาพน แสดงนการสรางบลอกค าสงฟงกชน การวางบลอกค าสงการท างานของฟงกชน และการใชงานบลอกค าสง
ฟงกชน จากภาพบรเวณทมกรอบสแดง คอการเรยกใชงานฟงกชน โดยจะตองสงคาไปใหฟงกชน 2 คาคอ n1 และ
n2 และแสดงผลผานการพดของตวละคร ดวยผลลพธทถกเกบอยในตวแปร sum สามารถชมชนงานและบลอก
ค าสงของตวอยางฟงกชน add ไดท https://scratch.mit.edu/projects/111957257/
บทท 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
บทท 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
บทท 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
บทท 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 เพอเปนผลลพธ และ
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 19
บลอกค าสง if………then ดานลาง เปรยบเทยบ number3<number1 และ number3<number2 เมอ
number3 นอยกวาจ านวนอกสองจ านวนจรง แสดงวา number3 คอคาทนอยทสด จงเกบคาตวแปร
number3 ลงในตวแปร min เปนผลพธใหโปรแกรมหลกแสดงผลตอไป
สามารถชมตวอยางการหาคามากทสด สงทสด คาเฉลย และบลอกค าสงไดท
https://scratch.mit.edu/projects/111687899/
นอกจากตกดเครองดมอตโนมตแลว ยงมเครองมออปกรณอน ๆ อกทสามารถกดเลอกรปแบบการท างาน
และรอผลลพธได เชน เครองซกผาทบาน ไมโครเวฟ เครองพมพเอกสาร แตอปกรณเหลานน เราไมไดเปนผเขยน
ฟงกชน และก าหนดการท างานของฟงกชนเอง เราเปนเพยงผใชเทานน ถากลบกน เราเปนผสราง แลวใหผอนเปน
ผใชบาง เราจะทราบถงรายละเอยดการท างานภายในฟงกชน รวมถงขอมลเขา และขอมลผลลพธไดอยางดทเดยว
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 20
ลงโชคเปนชายวยกลางคนทมฐานะร ารวยมาก ลงโชคตระเวนซอทดนทมคน
ประกาศขายทวทกแหงหน จนลงโชคจ าไดไมหมดวาลงโชคซอทดนขนาดเทาไหร ไวทไหน
บาง ลงโชคจงประกาศใหคนทวทกแหงหนชวยลงโชคสงเกตวาพนททอยบรเวณใกลเคยง
กบพวกเขานน มทดนของลงโชคอยบางหรอเปลา และลงโชคเปนคนทเขาถงเทคโนโลย
ใหมๆ มาก ลงโชคจงจะวาจางใหนสตสรางชนงานทสามารถค านวณพนททดนทงหมดทคน
อน ๆ พบเจอ และรวบรวมขอมลทงหมดมาใหลงโชค โดยลงโชคใจดใหขอมลวา ลงโชคจ า
ไดวาทดนของลงโชคม 3 รปแบบคอทดนทเปนลกษณะสเหลยมใด ๆ สามเหลยม และ
สเหลยมคางหม
นสตตอบรบสรางชนงานใหกบลงโชคโดยวางแผนการท างานในรปแบบของผงงาน
ไวดงน
ตวอยาง : ผมมทดนเยอะมาก
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 21
นสตวางแผนใหผใชทเปนผคนพบทดนของลงโชค โดยทอนดบแรกผใชจะตองกรอกจ านวนทดนทพบทงหมด
จากนนผใชจะตองกรอกรายละเอยดของทดนแตละแหงทพบ ถาผใชกดหมายเลข 1 แปลวาผใชพบทดนรปแบบ
สเหลยมใด ๆ จะตองกรอกความยาวทงสองของทดนรปแบบสเหลยมทพบ ถาผใชกดหมายเลข 2 แปลวาผใชพบ
ทดนรปแบบสามเหลยม จะตองกรอกความยาวฐานและความสงของทดนทพบ และถาผใชกดหมายเลข 3 แปลวา
ผใชพบทดนรปแบบสเหลยมคางหม จะตองกรอกความสงและผลบวกของดานคขนานของทดนทพบ จากนน
โปรแกรมจะท าการค านวณพนทแตละแหงทผใชพบทงหมด และน าจ านวนผลลพธของทดนทก ๆ แหงมารวมกน
และแจงใหลงโชคทราบ โดยนสตวางแผนของการท างานของทดนแตละรปแบบเมอผใชกรอกหมายเลข 1 ถง
หมายเลข 3 ดงน
เมอผใชกรอกหมายเลข 1 แสดงวาผใชพบทดนรปแบบสเหลยม
ฟงกชนการท างานของการหาพนททดนรปแบบสเหลยม จะน าคาในตว
แปร side1 และ side2 มาคณกน จากนนจะน าผลลพธสงให
โปรแกรมหลก น าไปรวมกบทดนแหงอน ๆ
เมอผใชกรอกหมายเลข 2 แสดงวาผใชพบทดนรปแบบสามเหลยม
ฟงกชนการท างานของการหาพนททดนรปแบบสามเหลยม จะน าคาใน
ตวแปร width * height * 0.5 และเกบผลลพธลงในตวแปร
areaTriangle เพอรอใหโปรแกรมหลกน าคาไปรวมกบทดนแหงอน ๆ
คนคา areaSquare
คนคา areaTriangle
บทท 10 การแตกปญหาออกเปนปญหายอยและการสรางล าดบขนตอนยอย หนา 22
เมอผใชกรอกหมายเลข 3 แสดงวาผใชพบทดนรปแบบสเหลยมคางหม
ฟงกชนการท างานของการหาพนททดนรปแบบสเหลยมคางหม จะ
น าคาในตวแปร heightTrapezoid * summationParalell * 0.5
และเกบผลลพธลงในตวแปร areaTrapezoid เพอรอให
โปรแกรมหลกน าคาไปรวมกบทดนแหงอน ๆ ทผใชพบ
จากตวอยางทดนของลงโชคน สามารถทดสอบและศกษาเพมเตมไดท
https://scratch.mit.edu/projects/113997467/
คนคา areaTrapezoid
areaTrapezoid =
0.5*heightTrapezoid*summationParalell