Web Application Programming 1 - cs.science.cmu.ac.th...
Transcript of Web Application Programming 1 - cs.science.cmu.ac.th...
Web Application Programming 1ปรบปร งจากเอกสารของ อ .สทธโชค ทรพยไพบลยกจ
ภาคการเรยนท 2/2556 204202 IT II 1
What is Programming ? การเขยนโปรแกรม (Programming) คอขนตอนในการถายทอดขนตอนวธ (Algorithm) ใหอยในรปแบบของสญลกษณ หรอ ภาษาทคอมพวเตอรสามารถน าไปประมวลผลได สงส าคญทสดในการเขยนโปรแกรมคอ อลกอรทม ไมใช ภาษาทใชในการเขยนโปรแกรม หากไมม อลกอรทม กจะไมสามารถเขยนโปรแกรมออกมาได Computer Science ไมไดเปนสาขาวชาทเนนเรองการเขยนโปรแกรม การเขยนโปรแกรมเปนแคสวนทจะใชถายทอดวธการแกปญหาของเราไปยงคอมพวเตอร
ภาคการเรยนท 2/2556 204202 IT II 2
What is Algorithm ? Algorithm (ขนตอนวธ) คอการอธบายล าดบการแกโจทยปญหาอยางใดอยางหนง อยางมข นตอนแนนอน ไมก ากวม เมอปฏบตตามขนตอนทใหมาแลวแลว จะตองน าไปสผลลพธ (จดสนสด) เสมอ สวนประกอบส าคญทใชในการอธบาย อลกอรทม คอ การตดสนใจ การท าตามล าดบ การท าซ า
การแกปญหาใดๆ อาจม อลกอรทม ไดมากกวาหนง
ภาคการเรยนท 2/2556 204202 IT II 3
Programming Methodology
วธการเขยนโปรแกรม
การแกปญหา (Problem Solving)1 การวเคราะหปญหา (Problem Analysis)◦ ระบปญหา และท าการวเคราะหปญหา
2 การออกแบบโปรแกรม (Program Design)◦ การออกแบบโปรแกรมเพอแกปญหา หรอการออกแบบขนตอนวธ
(Algorithm Design)3 การเขยนโปรแกรม (Program Coding)◦ เลอกภาษาในการเขยนโปรแกรม◦ เขยนโปรแกรมจากขนตอนวธทออกแบบไว
4. ทดสอบโปรแกรม และแกขอผดพลาด (Program Testing and Debugging)
ภาคการเรยนท 2/2556 204202 IT II 4
โดยท าการวเคราะหรายละเอยดตาง ๆ ดงน
1. วตถประสงคหลก (Main purpose)
2. ผลลพธทแสดง (Output requirement)
วตถประสงคของการแกปญหา ก าหนดรปแบบการน าเสนอผลลพธ
3. ขอมลทตองน าเขา (Input Requirement)
ปญหาบอกขอมลอะไรบาง ก าหนดรปแบบของขอมลทรบเขา
4. ตวแปรทใช (Variable)
5. วธการประมวลผล (Process)
ก าหนดคา ก าหนดสตรหรอวธการ ก าหนดเงอนไขของการค านวณ (ถาม) เพอปองกนไมใหโปรแกรมท างานผดพลาด เชน กรณการหารดวยศนยการวนซ าไมรจบ
1. การวเคราะหและการก าหนดคณสมบตของปญหา
ภาคการเรยนท 2/2556 204202 IT II 5
2. การออกแบบโปรแกรม (Program Design) หรอการออกแบบขนตอนวธ (Algorithm Design)
น าผลการวเคราะหจากขนตอนท 1 การวเคราะหปญหา มาแสดงรายละเอยด
ได 2 รปแบบ คอ
2.1 ผงงาน (Flowchart) คอ การใชรปภาพหรอสญลกษณ แทน
รายละเอยดขนตอนการแกปญหาอยางเปนเหตเปนผล
2.2 รหสเทยม (Pseudo code) คอการใชภาษาเขยนแทนรายละเอยด
ขนตอนการแกปญหาอยางเปนเหตเปนผล
ภาคการเรยนท 2/2556 204202 IT II 6
แผนภาพแสดงล าดบขนตอนการท างาน เปนเครองมอทใช
ในการวางแผนขนแรก โดยใชสญลกษณตาง ๆ ในการเขยนผงงาน
เพอจดล าดบขนตอนในการแกปญหา ซงชวยในการเขยนโปรแกรม
เปนวธทนยมใชเพราะท าใหเหนภาพในการท างานของโปรแกรมงาย
กวาใชขอความ หากมขอผดพลาด สามารถดจากผงงานจะท าใหการ
แกไขหรอปรบปรงโปรแกรมท าไดงายขน
ทวา อาจไมเหมาะกบโปรแกรมทซบซอนมากๆ
ภาคการเรยนท 2/2556 204202 IT II 7
การเขยนผงงาน (Flowchart)
การเขยนรหสเทยม (Pseudo Code)
เปนการเขยนบรรยายเพออธบายขนตอนการแกปญหาเชนเดยวกบ
ผงโปรแกรม สามารถใชภาษาองกฤษ หรอภาษาอนได สามารถเปลยนเปน
ภาษาคอมพวเตอรไดงาย มลกษณะเปนโครงสรางคลายกบผงโปรแกรม
ภาคการเรยนท 2/2556 204202 IT II 8
2.1 การเขยนผงโปรแกรม (Flowchart)
กระบวนการพนฐาน ม 3 กระบวนการไดแก
1.การรบขอมลเขา (Input)
2.การประมวลผล (Process)
3.การแสดงผลลพธ (Output)
การประมวลผลขอมลเขา ผลลพธ
ภาคการเรยนท 2/2556 204202 IT II 9
เครองหมายสญลกษณทใชในการเขยนผง
โปรแกรม
ภาคการเรยนท 2/2556 204202 IT II 10
สญลกษณ ความหมาย ตวอยาง
การเรมตนหรอ สนสด
กระบวนการทว ๆ ไป
เชนการค านวณ
การเปรยบเทยบเงอนไข
การน าขอมลเขา หรอ
แสดงผลขอมลทาง
อปกรณแสดงผล
Terminator
Start
Stop
Process
Decision
Input/
Output
sum = sum + x
Read X
N > 20yes no
เครองหมายสญลกษณทใชในการเขยนผง
โปรแกรม
ภาคการเรยนท 2/2556 204202 IT II 11
สญลกษณ ความหมาย ตวอยาง
ตวเชอมตอ
การเชอมตอไปหนาอน
ลกศรชทศทาง และ
ล าดบการท างาน
ค านวณพนท
A A
1
1
2.2 รหสเทยม (Pseudo code)
รหสเทยม หมายถง
◦ ค าอธบายทมโครงสรางและรปแบบชดเจน
◦ แบบล าดบ แบบเลอก แบบวนซ า
◦ ไมขนกบภาษาคอมพวเตอรใดภาษาหนงโดยเฉพาะ
◦ สามารถเปลยนไปเปนภาษาคอมพวเตอรไดงาย
◦ นยมใชภาษาองกฤษ
◦ ตองบอกจดเรมตนและสนสด◦ เรมตน คอ Start
◦ สนสด คอ Stop
ภาคการเรยนท 2/2556 204202 IT II 12
การเขยนผงโปรแกรม และรหสเทยมแบบโครงสราง
แบงออกเปน 3 โครงสรางใหญ ๆ ดงน
A.1. โครงสรางแบบเรยงล าดบ (Sequential Structure)
A.2. โครงสรางแบบมเงอนไข (Decision / Selection Structure)
A.3. โครงสรางแบบวนซ า (Repetition Structure)
ภาคการเรยนท 2/2556 204202 IT II 13
A.1 โครงสรางแบบเรยงล าดบ (Sequential Structure)
เปนการจดล าดบค าส งตามล าดบกอนหลงสามารถเขยน
เปนรปแบบโครงสราง
ภาคการเรยนท 2/2556 204202 IT II 14
การเขยนโครงสรางแบบเรยงล าดบ
FLOWCHART PSUEDO CODE
ภาคการเรยนท 2/2556 204202 IT II 15
กระบวนการ 1
กระบวนการ 2
กระบวนการ 3
DO
Process 1
Process 2
END
ตวอยางโจทยโครงสรางแบบเรยงล าดบ
จงเขยนผงโปรแกรมและรหสเทยมส าหรบรบขอมลจ านวน
ชวโมงการท างานใน 1 สปดาห และอตราเงนไดตอชวโมงเพอ
ค านวณรายไดตอสปดาห และเงนไดหลงหกภาษ ก าหนด
อตราภาษเทากบ 10% ของเงนไดตอสปดาห
การวเคราะหโจทย
วตถประสงคหลก เงนไดตอสปดาห และเงนไดหลงหกภาษ
ผลลพธทแสดง “Gross pay is เงนไดตอสปดาห”
“Net pay is เงนไดหลงหกภาษ”
ภาคการเรยนท 2/2556 204202 IT II 16
การวเคราะหโจทย(ตอ)
ขอมลเขา จ านวนชวโมงการท างาน และ อตราเงนไดตอชวโมง
ตวแปรทใช Hours แทนจ านวนชวโมงการท างานใน 1 สปดาห
Rate แทนอตราเงนไดตอชวโมง
Tax_Rate แทนอตราภาษทหก
Tax แทนเงนภาษทตองจาย
Gross เงนไดกอนหกภาษ
Net เงนไดหลงหกภาษ
การประมวลผล Gross = Hours * Rate
Tax = Gross * Tax_Rate
Net = Gross – Tax
ภาคการเรยนท 2/2556 204202 IT II 17
ผงโปรแกรม ดงรป Start
Tax_Rate = 0.1
Read Hours, Rate
Gross = Hours * Rate
Tax = Gross * Tax_Rate
Net = Gross – Tax
Print “Gross pay is”,Gross
“Net pay is”, Net
Stop
ภาคการเรยนท 2/2556 204202 IT II 18
StartTax_Rate = 0.1Read Hours, RateGross = Hours * RateTax = Gross * Tax_RateNet = Gross – TaxPrint “Gross pay is ”, Gross, “Net pay is”, Net
Stop
ภาคการเรยนท 2/2556 204202 IT II 19
รหสเทยม ดงตอไปน
ตวอยางขอมลเขา และผลลพธขอมลเขา ผลลพธ
Hours = 100Rate = 30
Gross pay is 3000Net pay is 2700
Hours = 20 Rate = 27.5
Gross pay is 550Net pay is 495
ภาคการเรยนท 2/2556 204202 IT II 20
แบบฝกหด จงเขยน Flowchart และ Pseudo code ส าหรบวเคราะหปญหาการทอนเหรยญ 1,5 หรอ 10 โดยไดเงนทอนมา M บาท ดงตวอยางแสดง
ดานลางตวอยาง
เงนทอน 17 บาท (กรณท M = 17)- เงนทอน เหรยญ 10 บาท 1 เหรยญ - เงนทอน เหรยญ 5 บาท 1 เหรยญ 1 เหรยญ- เงนทอน เหรยญ 1 บาท 2 เหรยญ
ภาคการเรยนท 2/2556 204202 IT II 21
A.2 โครงสรางแบบมเงอนไข (Decision/Selection Structure)
เปนโครงสรางทมทางเลอกแบงเปน 2 ประเภท
A.2.1 โครงสรางแบบมเงอนไขใหเลอกกระท าโดยใช IF
◦ มสงทใหเลอกท าไดสองอยาง จะเลอกอยางไหนขนอยกบ Condition
A.2.2 โครงสรางแบบมเงอนไขใหเลอกกระท าหลายทาง CASE
◦ มสงทใหเลอกท าไดมากกวาสองอยาง ◦ สามารถใช IF หลายๆตวในการเขยน CASE ได
◦ แต CASE จะงายตอการใชงานมากกวา
ภาคการเรยนท 2/2556 204202 IT II 22
โครงสราง IF THEN
FLOW CHART PSEUDO CODE
IF condition THEN
Process 1
ENDIF
ภาคการเรยนท 2/2556 204202 IT II 23
Process 1
เงอนไขจรง
เทจ
ตองมการทดสอบเงอนไขกอน แลวเลอกกระท า ถาเงอนไขเปน จรงจะท า Process 1 ถาไมจรงไมท าอะไร
โครงสราง IF THEN ELSE
FLOW CHART PSEUDO CODE
IF condition THEN
Process 1
ELSE
Process 2
ENDIF
ภาคการเรยนท 2/2556 204202 IT II 24
ค าส ง X ค าส ง Y
เงอนไข เทจจรง
ตองมการทดสอบเงอนไขกอน แลวเลอกกระท า ถาเงอนไขเปนจรงจะท า Process 1 ถาเงอนไขเปนเทจจะท า Process 2
ภาคการเรยนท 2/2556 204202 IT II 25
ตองมการทดสอบเงอนไขกอน แลวเลอกกระท า ถาเงอนไขเปนจรงจะท า Process 1
ถาเงอนไขเปนเทจจะทดสอบเงอนไขถดไป ถาจรงท า Process 2 ถาไมจรงเชค
เงอนไขอนอก เรอย ๆ จนกวาจะเจอเงอนไขทจรง และท า Process นนๆ หรอถาไม
เจอกท า Process X ในเงอนไขสดทาย (ELSE) กอนจบการท างาน
โครงสรางแบบ NESTED IF
โครงสราง NESTED IFFLOW CHART PSEUDO CODE
IF condition THEN
Process 1
IF condition THEN
Process 2
ELSE
Process 3
ENDIFELSE
Process 4
ENDIF
ภาคการเรยนท 2/2556 204202 IT II 26
ค าส ง X
ค าส ง Y
เงอนไข 1เทจจรง
เงอนไข 2
ค าส ง Z
เทจจรง
ภาคการเรยนท 2/2556 204202 IT II 27
ตวอยางโครงสรางแบบมเงอนไขใหเลอกกระท าโดยใช IF
จงเขยนผงโปรแกรมเพอรบเลขจ านวนเตม 2 จ านวน แลว
เปรยบเทยบวาจ านวนไหนมากกวา ถาเทากนใหบอกวาเทากน
การวเคราะหโจทย
วตถประสงคหลก เปรยบเทยบเลข 2 จ านวน
ผลลพธทแสดง The greater number is เลขจ านวนทมากกวา
Both numbers are equal
ภาคการเรยนท 2/2556 204202 IT II 28
การวเคราะหโจทย(ตอ)
ขอมลเขา เลขจ านวนเตม 2 จ านวน
ตวแปรทใช num1 แทนเลขจ านวนท 1
num 2 แทนเลขจ านวนท 2
การประมวลผล ถา num1 > num2 พมพ
“The greater number is”, num1
ถา num1 < num2 พมพ
“The greater number is”, num2
ถา num1 = num2 พมพ
“Both numbers are equal”
START
READ num1,num2
IF num1 > num2 THEN
PRINT “The greater number is”, num1
ELSE
IF num1 = num2
PRINT “Both number are equal”
ELSE
PRINT “The greater number is”, num2
ENDIF
END IF
STOP
ภาคการเรยนท 2/2556 204202 IT II 30
รหสเทยม ดงตอไปน
ตวอยางขอมลเขา และผลลพธขอมลเขา ผลลพธ
num1 = 5num2 = 12
The greater number is 12
num1 = 20 num2 = 2
The greater number is 20
num1 = 134num2 = 134
Both number are equal
ภาคการเรยนท 2/2556 204202 IT II 31
แบบฝกหดใหท าการเปรยบเทยบตวเลข 3 คา คอ ตวเลข A, B, C แลวใหแสดงคาออกมาวาตวไหนมคามากทสด ตวไหนมคานอยทสด ตวไหนเปนคากลางจงออกแบบโปรแกรมตดเกรดของคะแนนนกศกษา 1 คน และแสดงผลเกรดโดยมเงอนไขดงน
◦ท าการวเคราะหโจทย เขยน Flowchart และ Pseudo code
ภาคการเรยนท 2/2556 204202 IT II 32
คะแนน เกรด
0-50 F
51-60 D
61-70 C
71-80 B
81-100 A
ภาคการเรยนท 2/2556 204202 IT II 33
A.2.2 ผงโปรแกรมของโครงสรางแบบมเงอนไขใหเลอกกระท า
หลายทาง (CASE structure)
ค าส ง A ค าส ง B
เงอนไข
คาท 2คาท 1
ค าส ง C ค าส ง D
คาท 4คาท 3
ถาเงอนไขไหนเปนจรงจะท าตามขบวนการหนงใน
หลาย ๆ ทางเลอก สามารถเขยนเปนโครงสรางดง
รป
PSEUDO CODE OF CASE
CASE expression case 1 : process 1case 2 : process 2
...case n : process ndefault : process
ENDCASE
ภาคการเรยนท 2/2556 204202 IT II 34
ภาคการเรยนท 2/2556 204202 IT II 35
ตวอยางโครงสรางแบบมเงอนไขใหเลอกกระท าหลายทาง
จงเขยนผงโปรแกรมเพอหาชนปของนกศกษา
การวเคราะหโจทย
วตถประสงคหลก ชนปของนกศกษา
ผลลพธทแสดง ชนป คอ
ขอมลเขา ตวเลขปของนกศกษา
ตวแปรทใช Y แทนปของนกศกษา
ภาคการเรยนท 2/2556 204202 IT II 36
การวเคราะหโจทย (ตอ)
การประมวลผล CASE Y
1 พมพ “Freshy”
2 พมพ “Sophomore”
3 พมพ “Junior”
4 พมพ “Senior”
อน ๆ พมพ Invalid
STARTREAD YCASE OF Y
case “1” : PRINT “Freshy”
case “2” : PRINT “Sophomore”
case “3” : PRINT “Junior”
case “4” :PRINT “Senior”
default : PRINT “Invalid”
ENDCASESTOP
ภาคการเรยนท 2/2556 204202 IT II 38
รหสเทยม ดงตอไปน
ตวอยางขอมลเขา และผลลพธขอมลเขา ผลลพธ
1 Freshy
4 Senior
6 Invalid
a Invalid
ภาคการเรยนท 2/2556 204202 IT II 39
ขนตอนนเปนการน าสวนออกแบบโปรแกรมทออกแบบไวแลว จาก
ขนตอนท 2 (ผงงาน หรอรหสเทยม) มาเขยนเปนภาษาคอมพวเตอร
3. การเขยนโปรแกรม
ภาคการเรยนท 2/2556 204202 IT II 40
แบงการตรวจสอบออกเปน 3 สวนคอ
4.1. ความผดพลาดทางไวยากรณ (Syntax Error)
4.2. ความผดพลาดในการด าเนนงาน (Runtime Error)
4.3. ความผดพลาดทางตรรกะ (Logical Error)
4. การทดสอบโปรแกรม
ภาคการเรยนท 2/2556 204202 IT II 41
เปนขอผดพลาดทเกดเนองจากเขยนค าส งของภาษาไม
ถกตอง ไมถกตามหลกไวยากรณ ขอผดพลาดนโปรแกรมจะ
หยดการท างานและพบไดในชวงแปลโปรแกรม เชน จาก ค าส ง
ตวอยาง
4.1 ความผดพลาดทางไวยากรณ (Syntax Error)
ภาคการเรยนท 2/2556 204202 IT II 42
4.2 ความผดพลาดในการด าเนนงาน (Runtime Error)
เกดจากวธการเขยนโปรแกรม เชน การหารดวยศนย
ชนดขอมลไมถกตอง ขอมลทไดเกนขดจ ากดบน หรอ
นอยกวาขดจ ากดลาง ขอผดพลาดนโปรแกรมจะหยด
การปฏบตการ และพบไดในชวงการปฎบตงานโปรแกรม
ภาคการเรยนท 2/2556 204202 IT II 43
4.3 ความผดพลาดทางตรรกะ (Logical Error)
เกดเนองจากผเขยน เขยนผดขนตอน ผเขยน ตความหมาย
ของปญหาผด ท าใหไดผลลพธไมถกตอง เชน ตองการ 2+4
แตพมพผดเปน 2*4 ท าใหไดค าตอบทไมถกตอง ขอผดพลาดน
โปรแกรมจะไมหยดการท างาน จงตองท าการทดสอบการท างาน
ของโปรแกรมวาถกตองเปนไปตามทตองการหรอไม
ภาคการเรยนท 2/2556 204202 IT II 44
แบบฝกหดแปลงการออกแบบโปรแกรมตดเกรดใหเปนจาก IF ,ELSE IF, ELSE ใหเปนแบบ CASEจงออกแบบโปรแกรมในการใหผใชเลอกชนดสนคา เพยง 1 ชนด และใสจ านวนสนคาชนดนนทจะซอ เพอแสดงมลคารวมของสนคาทผใชเลอก ดงน (โดยตวแปรทรบคาจ านวนสนคา คอ N) ◦ 1. Note book เครอง ละ 15000 บาท◦ 2. PC ชด ละ 20000 บาท◦ 3. หฟง ชดละ 300 บาท◦ 4. กระดาษ รมละ 250 บาท◦หากเปนสนคาชนดอน ใหแสดงขอความวา ไมมขาย
ภาคการเรยนท 2/2556 204202 IT II 45