งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 บทที่ 5 โปรแกรมย่อย 2 1. การเขียนโปรแกรมแบบโมดูล 2. โปรแกรมย่อยในภาษาปาสคาล 3. Procedure 4. การส่งผ่าน parameter - Value parameter - Variable parameter.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 บทที่ 5 โปรแกรมย่อย 2 1. การเขียนโปรแกรมแบบโมดูล 2. โปรแกรมย่อยในภาษาปาสคาล 3. Procedure 4. การส่งผ่าน parameter - Value parameter - Variable parameter."— ใบสำเนางานนำเสนอ:

1

2 1 บทที่ 5 โปรแกรมย่อย

3 2 1. การเขียนโปรแกรมแบบโมดูล 2. โปรแกรมย่อยในภาษาปาสคาล 3. Procedure 4. การส่งผ่าน parameter - Value parameter - Variable parameter 5. Function

4 3 1. การเขียนโปรแกรมแบบโมดูล ปัญหาของการเขียนชุดคำสั่งทั้งหมดอยู่ในส่วนโปรแกรมหลัก(main) − แก้ไขและปรับปรุงยากเมื่อโปรแกรมมีขนาดใหญ่ − ชุดคำสั่งที่ทำงานเหมือนกันไม่สามารถนำมาใช้ซ้ำได้ แก้ปัญหาด้วยการเขียนโปรแกรมแบบ Module − แยกส่วนการทำงานออกเป็นส่วนย่อยหรือโปรแกรมย่อย (subprogram) หรือที่เรียกว่า module

5 4 ประเภทของโปรแกรมย่อย 1. Procedure เป็นชุดคำสั่งย่อยที่มีหน้าที่เฉพาะอย่างใดอย่างหนึ่ง สามารถมีการรับส่งค่าข้อมูล(parameter)ระหว่าง procedure กับโปรแกรมส่วนอื่นๆที่เรียกใช้ procedure หรือไม่ก็ได้ จะไม่มีการส่งค่าผลลัพธ์ของการทำงานกลับไปยังคำสั่งที่ เรียกใช้งาน procedure ผ่านชื่อ procedure 2. Function เหมือน procedure ต่างกันที่ฟังก์ชันต้องมีการส่งค่าผลลัพธ์ ของการทำงานกลับไปยังคำสั่งที่เรียกใช้งานฟังก์ชันผ่านชื่อ ฟังก์ชันด้วย 1. การเขียนโปรแกรมแบบโมดูล

6 5 โปรแกรมย่อยในภาษาปาสคาล โปรแกรมย่อย (subprogram) คือส่วนหนึ่งของโปรแกรมมีหน้าที่ เฉพาะ (บางครั้งเรียกว่าโมดูล) โปรแกรมย่อยวางหลังส่วน Heading Header ของโปรแกรมหลัก (main program) ก่อน BEGIN ของโปรแกรมหลัก โครงสร้างของโปรแกรมย่อยประกอบด้วยส่วนหัว ส่วนประกาศ และส่วนคำสั่ง เช่นเดียวกับโปรแกรมหลัก แตกต่างที่ ส่วนหัวขึ้นต้นด้วย PROCEDURE หรือ FUNCTION จบด้วย END; แทน END. โปรแกรมย่อยทำงานเองไม่ได้ ต้องถูกเรียกโดยโปรแกรมอื่น ๆ ที่ เรียกใช้งานโปรแกรมย่อยนั้น

7 6 โปรแกรมย่อยในภาษาปาสคาล ขั้นตอน 1.ระบุ “ปัญหาย่อย” ที่ต้องการแก้ในโปรแกรม 2.แก้ปัญหาย่อย โดยการเขียนชุดคำสั่งเพื่อแก้ไขปัญหาย่อย เพียงครั้งเดียว แล้วกำหนดชื่อให้กับชุดคำสั่งนั้น และให้ กำหนดประเภทชุดคำสั่งนั้นด้วยว่าเป็น “procedure” หรือ “function” 3.เมื่อต้องการแก้ปัญหาย่อย สามารถทำได้โดยเรียกชื่อ “procedure” หรือ “function” เพื่อนำชุดคำสั่งมาใช้งาน และในกรณีพบปัญหาย่อยที่ซ้ำกัน ให้เรียกใช้งานอีกครั้ง โดยไม่ต้องเขียนชุดคำสั่งใหม่

8 7 PROGRAM Ex1; USES wincrt; BEGIN writeln(‘****’); writeln(‘* *’); writeln(‘****’); writeln(‘* *’); writeln(‘****’); writeln(‘* *’); writeln(‘****’); END. PROGRAM ModuleDesignEx1; USES wincrt; PROCEDURE Box4; BEGIN writeln(‘****’); writeln(‘* *’); writeln(‘****’); END; BEGIN Box4; END. โปรแกรมย่อยในภาษาปาสคาล 1. ระบุ “ปัญหาย่อย” 2. แก้ปัญหาย่อย โดยการเขียนชุดคำสั่ง เพียงครั้งเดียว และกำหนดชื่อ procedure (procedure) ให้กับชุดคำสั่ง นี้ว่า Box4 3. ที่ main program สามารถ เรียกชื่อ procedure เพื่อนำ ชุดคำสั่งมาใช้งานได้หลายครั้ง

9 8 โปรแกรมย่อยในภาษาปาสคาล การติดต่อเพื่อส่งผ่านค่าข้อมูล (อาจเป็นตัวอักษร ตัวเลข ตัวแปรหรือ นิพจน์) ระหว่างโปรแกรมย่อยและโปรแกรมอื่น ๆ ที่เรียกใช้โปรแกรม ย่อยนั้นทำได้โดยอาศัยพารามิเตอร์ (parameter) 1.Formal parameter คือพารามิเตอร์ที่ประกาศในโปรแกรมย่อย กรณีมีหลาย formal parameter ให้คั่นด้วย ; (semicolon) 2.Actual parameter คือพารามิเตอร์ในคำสั่งที่เรียกใช้โปรแกรมย่อย กรณีมีหลาย actual parameter ให้คั่นด้วย, (comma) รับค่า parameter เข้าโปรแกรมย่อย โปรแกรมย่อย แสดงผล

10 9  การเขียนโปรแกรมย่อยที่มีการส่งผ่านพารามิเตอร์ต้องเพิ่มสิ่ง ต่อไปนี้ –ในส่วนหัวของโปรแกรมย่อยต้องเพิ่มการกำหนดชื่อและ ชนิดข้อมูลของตัวแปรที่ทำหน้าที่เป็น formal parameter ดังตัวอย่าง PROCEDURE MyProc(x:real; n:integer); –คำสั่งในโปรแกรมที่เรียกใช้โปรแกรมย่อยต้องส่งผ่าน ข้อมูลผ่านชื่อตัวแปรที่ทำหน้าที่เป็น actual parameter ดังตัวอย่าง MyProc(a,b); Actual parameter สามารถใช้เป็นตัวเลข หรือ นิพจน์ ก็ได้ เช่น MyProc(4.5,10); หรือ MyProc(0.55,a+b); โปรแกรมย่อยในภาษาปาสคาล

11 10 PROGRAM ชื่อโปรแกรมหลัก; USES wincrt; {รูปแบบ กรณีไม่มี parameter} PROCEDURE ชื่อ; VAR ส่วนประกาศตัวแปรของprocedure BEGIN คำสั่งต่าง ๆ ใน procedure END; VAR ส่วนประกาศตัวแปรต่างๆของ main BEGIN คำสั่งต่างๆ ของโปรแกรมหลัก END. PROGRAM ModuleDesignEx1; USES wincrt; PROCEDURE Box4; BEGIN writeln(‘****’); writeln(‘* *’); writeln(‘****’); END; BEGIN Box4; END. ตัวอย่างที่ 1 Procedure : กรณีไม่มี parameter Block ของ procedure Block ของ main program (มีคำสั่งเรียกใช้ procedure)

12 11 PROCEDURE ชื่อ(formal parameters); PROCEDURE MyProc(var x:real; n:integer); VAR n,m:integer; z:real; BEGIN คำสั่งต่างๆ ใน procedure… END; Formal parametersชื่อ ส่วน statement ของ procedure ขึ้นด้วย begin ลง ท้ายด้วย end; ส่วนประกาศตัวแปรของ procedure Block ของ procedure รูปแบบ (กรณีมี parameter) Procedure : กรณีมี parameter รับค่า parameter เข้าโปรแกรมย่อย Procedure แสดงผล

13 12 ตัวอย่างที่ 2 : รับค่า parameter จาก main ถ้าเป็น 1 ให้พิมพ์ “Press any key to continue.” ถ้าไม่ใช่ 1 ให้พิมพ์ข้อความ “Program terminate. Goodbye” Header ของ main program PROGRAM Ex2; USES wincrt; { This subprogram has one formal parameter} procedure print_msg(input : integer); begin if (input = 1) then writeln(‘Press Any Key to Continue.’) else writeln(‘Program Terminate. Good Bye.’); end; var n : integer; BEGIN write(‘Input n : ’); readln(n); print_msg(n); {Calling the procedure with one actual parameter } END. รับค่า parameter เป็นเลขจำนวนเต็ม 1 ตัว procedure ชื่อ print_msg พิมพ์ข้อความ ตัวแปรของ main program Block ของ main program (มีคำสั่งเรียกใช้ procedure) Block ของ procedure

14 13 ตัวอย่างที่ 2 : รับค่า parameter จาก main ถ้าเป็น 1 ให้พิมพ์ “Press any key to continue.” ถ้าไม่ใช่ 1 ให้พิมพ์ข้อความ “Program terminate. Goodbye” ตัวอย่างผลรันที่ 1 ของโปรแกรม Input n : 10  Program Terminate. Good Bye. ตัวอย่างผลรันที่ 2 ของโปรแกรม Input n : 1  Press Any Key to Continue. PROGRAM Ex2; USES wincrt; { This subprogram has one formal parameter} procedure print_msg(input : integer); begin if (input = 1) then writeln(‘Press Any Key to Continue.’) else writeln(‘Program Terminate. Good Bye.’); end; var n : integer; BEGIN write(‘Input n : ’); readln(n); print_msg(n); END. - จากคำสั่ง readln(n) ใน main มีการรับ ค่า actual parameter n เป็น 1 - และการทำคำสั่ง print_msg(n); จะส่ง ค่า 1 นี้ให้กับ formal parameter input จึงทำให้เงื่อนไข if เป็นจริง - จากคำสั่ง readln(n) ใน main มีการ รับค่า actual parameter n เป็น 10 - และการทำคำสั่ง print_msg(n); จะ ส่งค่า 10 นี้ให้กับ formal parameter input จึงทำให้เงื่อนไข if เป็นเท็จ

15 14 program Ex3; uses wincrt; procedure EllipseArea(a,b :real); {two formal parameters } const pi = ; var area : real; begin area := pi*a*b; writeln(‘a= ’,a:5:2, ‘ b= ’,b:5:2,‘ area= ’,area:5:2); end; var x, y : real; begin x := 1.5; y := 10.0; EllipseArea(x,y); {First Calling} EllipseArea(2.0,x+y); {Second Calling} end. ตัวอย่างที่ 3 : รับค่า parameter รัศมีที่ยาวที่สุด และรัศมีที่สั้นที่สุดของวงรี จาก main เพื่อคำนวณและแสดงค่าพื้นที่ของวงรีใน procedure Header ของ main program ตัวแปรของ main program ตัวแปรและค่าคงที่ของ Procedure two actual parameters Block ของ procedure Block ของ main program a b พื้นที่วงรี =  * a * b - a แทนค่ารัศมีที่สั้นที่สุด - b แทนค่ารัศมีที่ยาวที่สุด

16 15 program Ex3; uses wincrt; procedure EllipseArea(a, b :real); const pi = ; var area : real; begin area := pi*a*b; writeln(‘a= ’,a:5:2, ‘ b= ’,b:5:2,‘ area= ’,area:5:2); end; var x, y : real; begin x := 1.5; y := 10.0; EllipseArea(x,y); {First Calling} EllipseArea(2.0, x+y);{Second Calling} end. ตัวอย่างที่ 3 : รับค่า parameter รัศมีที่ยาวที่สุด และรัศมีที่สั้นที่สุดของวงรีจาก main เพื่อคำนวณและแสดงค่าพื้นที่ของวงรีใน procedure ตัวอย่างผลรันของโปรแกรมนี้คือ a= 1.50 b= area= a= 2.00 b= area= ในการทำงานของ First Calling - เนื่องจากการทำคำสั่ง EllipseArea(x,y); เป็นการส่งค่า ของ actual parameter x และ y (1.5 และ10.0) ให้ formal parameter a และ b ตามลำดับ - ดังนั้น การคำนวณพื้นที่วงรี(area) := *1.5*10.0 จะได้ค่า area เท่ากับ จึงทำให้ได้ผลรันดังตัวอย่าง a b Two formal parameters - a แทนค่ารัศมีที่สั้นที่สุด - b แทนค่ารัศมีที่ยาวที่สุด

17 16 1.การส่งผ่านพารามิเตอร์แบบส่งค่า (Pass by value) เป็นการส่งผ่านค่า (value) ของ actual parameter ให้แก่ formal parameter หากมีการเปลี่ยนแปลงค่าของ formal parameter ใน โปรแกรมย่อย จะไม่มีผลต่อ ค่า actual parameter ค่าของ actual parameter จะเป็นค่าของตัวแปร ค่านิพจน์ หรือค่าคงที่โดยตรงก็ได้ การส่งผ่าน parameter 2.การส่งผ่านพารามิเตอร์แบบส่งตัวแปร (Pass by variable) เป็นการส่งผ่านตำแหน่งที่อยู่ใน หน่วยความจำ(address) ของ actual parameter ให้แก่ formal parameter หากมีการเปลี่ยนแปลงค่าของ formal parameter ในโปรแกรม ย่อย จะมีผลต่อค่า actual parameter เปลี่ยนแปลงด้วย ค่าของ actual parameter จะเป็น ค่าของตัวแปรเท่านั้น การส่งผ่านพารามิเตอร์ มี 2 แบบ คือ

18 17 1.Pass by value รูปแบบการเขียน procedure procedure ชื่อ procedure ( ชื่อพารามิเตอร์ : ชนิดข้อมูล; …); เช่น procedure EllipseArea(a,b:real); 2. Pass by Variable รูปแบบการเขียน procedure ต้องมีคำว่า var นำหน้าตัวแปรที่จะ pass by variable เสมอ ดังนี้ procedure ชื่อ procedure (var ชื่อพารามิเตอร์ :ชนิดข้อมูล; …); เช่น procedure Swap(var x,y:real); การส่งผ่าน parameter

19 18 1.ตัวอย่าง pass by value program Ex41; uses wincrt; procedure one(x : integer); begin x := x+1; writeln(‘x =’, x); end; var a : integer; begin a := 10 ; writeln(‘a =’, a); one(a) ; writeln(‘a =’, a); end. การเปลี่ยนแปลงค่าของ formal parameter ไม่มีผลต่อ actual parameter การส่งผ่าน parameter ผลลัพธ์ a = 10 x = 11 a = 10 การส่งผ่านข้อมูลแบบ pass by value จะมีการส่งเฉพาะค่า (คัด สำเนา) จาก actual parameter (ของตัวแปร a) ให้ formal parameter (ตัวแปร x)ใน Procedure ค่า actual parameter a ของ main ก่อนเรียกใช้ procedure one ค่า a ของ main หลัง เรียกใช้ procedure one

20 19 2.ตัวอย่าง pass by variable program Ex42; uses wincrt; procedure two(var x : integer); begin x := x+1; writeln(‘x =’, x); end; var a : integer; begin a := 10 ; writeln(‘a =’, a); two(a) ; writeln(‘a =’, a); end. ผลลัพธ์ a = 10 x = 11 a = 11 การส่งผ่านข้อมูลแบบ pass by variable จะมีผลให้actual parameter (ของตัวแปร a) และ formal parameter (ตัวแปร x)ใน Procedure เสมือนเป็นตัวแปรเดียวกันชั่วคราว เนื่องจากอ้างอิงที่อยู่ในหน่วยความจำ ตำแหน่งเดียวกัน การเปลี่ยนแปลงค่าของ formal parameter จะทำให้ค่า actual parameter เปลี่ยนแปลงด้วย การส่งผ่าน parameter ค่า actual parameter a ของ main ก่อนเรียกใช้ procedure two ค่า a ของ main หลัง เรียกใช้ procedure two

21 20 จะเลือกใช้การส่งผ่าน parameters แบบไหนให้พิจารณาดังนี้ 1.ถ้า procedure ต้องการเฉพาะค่าข้อมูลที่ส่งมาให้เพื่อมา ใช้งานใน procedure เพียงอย่างเดียว ให้ใช้การส่งผ่านแบบ pass by value 2. ถ้ามี parameter ที่ procedure ต้องการส่งผลลัพธ์การ ทำงานกลับไปยังโปรแกรมที่เรียกใช้ procedure ผ่านตัว แปรที่เป็นพารามิเตอร์นั้น ให้ใช้การส่งผ่านแบบ pass by variable 3. ถ้ามี parameter ที่ procedure ต้องการทั้งค่าข้อมูลของ ตัวแปรที่ส่งมาให้ และต้องการส่งผลลัพธ์กลับผ่านตัวแปร นั้นด้วย ให้ใช้การส่งผ่านแบบ pass by variable การส่งผ่าน parameter

22 21 program Ex51; uses wincrt; procedure TriangleArea(h,b :real); var area:real; begin area := 0.5*b*h; writeln(‘base= ’,b:5:2, ‘ High= ’,h:5:2,‘ area= ’,area:5:2); end; var high, base : real; begin write(‘input high : ’ ); readln(high); write(‘input base : ’ ); readln(base); TriangleArea(high,base); end. ตัวอย่างที่ 5 : รับค่า parameter ความยาวฐานและความสูงของ สามเหลี่ยมจาก main เพื่อคำนวณและแสดงค่าพื้นที่ของ สามเหลี่ยมใน procedure เลือกการส่งผ่านแบบ pass by value เพราะต้องการส่งเฉพาะ “ค่า” ของตัวแปรความยาวฐาน (base) และความสูง(high) ให้ procedure คำนวณค่าพื้นที่ สามเหลี่ยม

23 22 program Ex51; uses wincrt; procedure TriangleArea(h,b :real); var area:real; begin area := 0.5*b*h; writeln(‘base= ’,b:5:2, ‘ high= ’,h:5:2,‘ area= ’,area:5:2); end; var high, base : real; begin write(‘input high : ’ ); readln(high); write(‘input base : ’ ); readln(base); TriangleArea(high,base); end. ตัวอย่างที่ 5 : รับค่า parameter ความยาวฐานและความสูงของสามเหลี่ยมจาก main เพื่อคำนวณและแสดงค่าพื้นที่ของสามเหลี่ยมใน procedure ตัวอย่างผลรันที่ 1 ของโปรแกรม Input high : 1.5  Input base : 10  base= high= 1.50 area= 7.50 ตัวอย่างผลรันที่ 2 ของโปรแกรม Input high : 20  Input base :.5  base= 0.50 high= area= 5.00

24 23 program Ex52; uses wincrt; procedure TriangleArea(h,b :real; var area : real); begin area := 0.5*b*h; end; var high, base, area : real; begin write(‘input high : ’ ); readln(high); write(‘input base : ’ ); readln(base); TriangleArea(high,base,area); writeln(‘base= ’,base:5:2, ‘ High= ’,high:5:2,‘ area= ’,area:5:2); end. ตัวอย่างที่ 5 (version 2): รับค่า parameter ความยาวฐานและความ สูงของสามเหลี่ยมจาก main เพื่อคำนวณพื้นที่ของสามเหลี่ยมใน procedure แต่ต้องการแสดงค่าพื้นที่สามเหลี่ยมที่ main เฉพาะตัวแปร area ที่เลือก การส่งผ่านแบบ pass by variable เพราะต้องการ ส่งผลลัพธ์ค่าพื้นที่กลับไป ยัง main เพื่อพิมพ์ค่าพื้นที่

25 24 program Ex52; uses wincrt; procedure TriangleArea(h,b :real; var area : real); begin area := 0.5*b*h; end; var high, base, area : real; begin write(‘input high : ’ ); readln(high); write(‘input base : ’ ); readln(base); TriangleArea(high,base,area); writeln(‘base= ’,base:5:2, ‘ High= ’,high:5:2,‘ area= ’,area:5:2); end. ตัวอย่างที่ 5 (version 2) : รับค่า parameter ความยาวฐานและความสูง ของสามเหลี่ยมจาก main เพื่อคำนวณพื้นที่ของสามเหลี่ยมใน procedure แต่ต้องการแสดงค่าพื้นที่สามเหลี่ยมที่ main ตัวอย่างผลรัน ของโปรแกรม Input high : 1.5  Input base10 : 10  base= high= 1.50 area= 7.50

26 25 1.Pass by value program Ex61; uses wincrt; var x,y : integer; procedure Swap(a, b:integer); var temp:integer; begin temp := a; a := b; b := temp; end; begin x := 2; y := 3; Swap(x, y); writeln(‘x =’, x,‘ y =’, y); end. 2.Pass by variable program Ex62; uses wincrt; var x,y : integer; procedure Swap(var a,b : integer); vartemp : integer; begin temp := a; a := b; b := temp; end; begin x := 2; y := 3; Swap(x, y); writeln(‘x =’, x,‘ y =’, y); end. ตัวอย่างที่ 6 : ให้เขียน procedure swap สำหรับสลับค่าข้อมูลระหว่างตัวแปร x และ y จากโปรแกรม Ex61 และ Ex62 ให้ผลลัพธ์ต่างกันหรือไม่เพราะอะไร ?

27 26 ข้อควรระวัง 1.จำนวนและลำดับของ actual parameter ต้องตรงกับของ formal parameter จากโปรแกรมย่อย procedure EllipseArea(a,b :real); ของ ตัวอย่าง 3 ใน slide หน้า 14 ถ้าก่อนการเรียกใช้งาน procedure มีการกำหนด x := 2; y := 0.5; การเรียกใช้งาน procedure EllipseArea จะให้ผลลัพธ์เป็นดังนี้ –กรณีเรียกใช้ด้วยคำสั่ง EllipseArea(x,y); ผลลัพธ์คือ a= 2.00 b= 0.50 area= 3.14 –กรณีเรียกใช้ด้วยคำสั่ง EllipseArea(y,x); ผลลัพธ์คือ a= 0.50 b= 2.00 area= 3.14

28 27 ข้อควรระวัง 2. ชนิดตัวแปรของทั้ง actual และ formal parameter ต้องเหมือนกัน จากโปรแกรมย่อย procedure EllipseArea(a,b :real); ในตัวอย่าง ที่ 3 หน้า 14 การเรียกใช้งาน EllipseArea(x,y); จะทำได้เมื่อ –actual parameter x และ y มีการประกาศชนิดตัวแปรเป็น real หรือ integer ก็ได้ ทั้งนี้เพราะ integer และ real เป็นชนิดตัวเลขทั้งคู่ และ real เป็นชนิดตัวเลขที่มีขอบเขตข้อมูลใหญ่กว่า integer ซึ่งการ เรียกใช้งาน EllipseArea(2,0.5); ก็สามารถทำได้เช่นกัน แต่ถ้าเขียนโปรแกรมย่อยเป็น procedure EllipseArea(a,b:integer); –การเรียกใช้โปรแกรมย่อยด้วยคำสั่ง EllipseArea(x,y); จะต้องมีการ ประกาศชนิดตัวแปรของ actual parameter x และ y เป็นชนิด integer เท่านั้น และการเรียกใช้งาน EllipseArea(2,0.5); ก็ไม่ สามารถทำได้ด้วย

29 28 สรุปข้อดีของการแยกงานเป็นโปรแกรมย่อย ทำให้โปรแกรมขนาดใหญ่ที่มีชุดคำสั่งมีความยาวมาก เข้าใจได้ง่ายขึ้น ลดความซ้ำซ้อนในการเขียนโปรแกรมในส่วนที่ทำงาน อย่างเดียวกัน ถ้านำโปรแกรมส่วนที่ต้องใช้ซ้ำๆ มาทำเป็น โปรแกรมย่อย ทำให้ โปรแกรมมีขนาดเล็ก และเข้าใจง่าย นำโปรแกรมที่สร้างไปใช้งานในโปรแกรมอื่นได้ ถ้าใน โปรแกรมนั้นต้องการฟังก์ชันในการทำงานที่เหมือนกัน

30 29 แบบฝึกหัด program Drawing; uses wincrt; procedure DrawRec(w,h:integer); var i,j:integer; begin for i :=1 to h do begin for j :=1 to w do write(‘*’); writeln; end; var n,m:integer; begin n := 4; m := 2; DrawRec(n,m); DrawRec(5,5); DrawRec(m, m*n); end. 1. จงหาผลลัพธ์ของโปรแกรม Drawing

31 30 แบบฝึกหัด 2. จงเขียน procedure เพื่อคำนวณและแสดงค่าสินค้าที่ลูกค้าต้อง โดยให้คิดส่วนลดตามเงื่อนไขต่อไปนี้ –12 % สำหรับผู้ซื้อของราคาตั้งแต่ 10,000 บาทขึ้นไป –10 % ถ้ายอดซื้อตั้งแต่ 5,000 บาท แต่ต่ำกว่า 10,000 บาท –7% ถ้ายอดซื้อต่ำกว่า 5,000 บาท หมายเหตุ กำหนดให้ procedure มีการรับค่าจำนวนสินค้า และ ราคาต่อหน่วยจาก main program


ดาวน์โหลด ppt 1 บทที่ 5 โปรแกรมย่อย 2 1. การเขียนโปรแกรมแบบโมดูล 2. โปรแกรมย่อยในภาษาปาสคาล 3. Procedure 4. การส่งผ่าน parameter - Value parameter - Variable parameter.

งานนำเสนอที่คล้ายกัน


Ads by Google