259201 Computer Programming for Engineers Week 6 การเขียนโปรแกรม MATLAB เบื้องต้น 1
ตัดเกรดนักเรียน 5 คน จาก lab 5, เราสามารถมองส่วนที่จะถูกประมวลผล 5 ครั้งเป็นบล๊อก ส่วนที่เราต้องการทำซ้ำ เราจะนำโค๊ดไปใส่ไว้แทนที่บล๊อก for i=1:5 disp(‘Programming is fun’); end
ตัดเกรดนักเรียน 5 คน (ต่อ) for i=1:5 value = input('Input value (0-100): '); if value < 50 disp (' You got F'); elseif value < 60 disp (' You got D'); elseif value < 70 disp (' You got C'); elseif value < 80 disp (' You got B'); else disp ('You got A'); end
ตัดเกรดนักเรียน n คน จากโปรแกรมเดิม ถ้าจำนวนนักเรียนมีการเปลี่ยนแปลง เราจะต้องแก้ไขโค๊ด เพื่อให้โปรแกรมรองรับการตัดเกรดนักเรียนจำนวนที่ต่าง ๆ กันได้ เราต้องมีการรับค่าจำนวนนักเรียน (n) จากผู้ใช้ คำสั่งที่ใช้รับค่าไปเก็บไว้ในตัวแปร n คือ n = input(‘Enter a number of the students:’);
ตัดเกรดนักเรียน n คน จากโปรแกรมเดิม เราควรเพิ่มคำสั่ง input ไว้ที่ใด? 1 for i=1:5 value = input('Input value (0-100): '); if value < 50 disp (' You got F'); elseif value < 60 .... else disp ('You got A'); end 2 3 4 5 *นักศึกษาสามารถทดสอบเพิ่มคำสั่ง input ตามที่ต่าง ๆ เพื่อสังเกตุผลลัพธ์
ตัดเกรดนักเรียน n คน เราจะเห็นได้ว่า ค่า n จำเป็นจะถูกใช้เพื่อควบคุมจำนวนของการทำซ้ำ จากโปรแกรมเดิม เมื่อเราต้องการทำซ้ำ 5 ครั้ง เราจะกำหนด for i=1:5 ดังนั้น ถ้าต้องการทำซ้ำ n ครั้ง เราจะต้องเขียนว่า for i=1:n และค่า n จะต้องถูกกำหนดก่อนคำสั่ง for
ตัดเกรดนักเรียน n คน n=input(‘Enter a number of the students:’); 1 for i=1:5 value = input('Input value (0-100): '); if value < 50 disp (' You got F'); elseif value < 60 .... else disp ('You got A'); end Logical error? Where?
ตัดเกรดนักเรียนจนกว่าจะครบจำนวน ถ้าเราไม่รู้จำนวนของการทำซ้ำ เราต้องใช้คำสั่ง while-do ทบทวน while-do i=1; while i<=5 disp(‘Programming is fun’); i++; end
ตัดเกรดนักเรียนจนกว่าจะครบจำนวน while-do จะทำซ้ำไปเรื่อย ๆ จนกว่าเงื่อนไขที่ใช้ตรวจสอบจะเป็นเท็จ ตัวอย่างทบทวน condition = ‘yes’; while condition ==‘yes’ disp(‘Programming is fun’); condition = input(‘Continue [yes/no] ?’,’s’); end ค่าเริ่มต้น ต้องทำให้โปรแกรมสามารถเข้าไปทำใน while-do ได้ เงื่อนไข จะทำใน while-do ถ้าเงื่อนไขเป็นจริง ทำซ้ำเรื่อย ๆ ถ้าเงื่อนไขยังเป็นจริง ถ้าไม่มีคำสั่งนี้ โปรแกรมจะทำงานอย่างไร?
ตัดเกรดนักเรียนจนกว่าจะครบจำนวน เมื่อพิจารณาการตัดเกรดนักเรียนจนกว่าจะครบจำนวนอีกครั้ง เราจะได้โค๊ดในลักษณะดังต่อไปนี้ condition = ‘yes’; while condition ==‘yes’ value = input('Input value (50-80): '); if value < 50 disp (' You got F'); elseif value < 60 .... else disp ('You got A'); end condition = input(‘Continue [yes/no] ?’,’s’);
นับจำนวนนักเรียน ถ้าเราต้องการนับจำนวนนักเรียนที่ได้รับการตัดเกรดไปแล้วสำหรับการทำซ้ำแบบ while-do? นอกจากนั้นเรายังต้องการแสดงผลสรุปจำนวนนักเรียนที่ได้รับการตัดเกรดทั้งหมดอีกด้วย? เราต้องสร้างตัวแปรขึ้นมาเพื่อเก็บจำนวนดังกล่าว (n) ค่าเริ่มต้นของตัวแปรนี้จะต้องเป็น 0 (n=0) เมื่อมีการตัดเกรดนักเรียนเสร็จ 1 คน ค่าของตัวแปรนี้จะต้องถูกเพิ่มค่าขึ้น ทีละหนึ่ง (n=n+1) เมื่อเสร็จสิ้นการตัดเกรดของนักเรียนทั้งหมด (ผู้ใช้เลือก continue เป็น no) เราแสดงผลสรุปจำนวนนักเรียน (fprintf(‘Number of the students is: %d\n’,n);) เราควรจะเพิ่มคำสั่งทั้งสองคำสั่งนี้ไว้ที่ส่วนใดในโปรแกรม?
นับจำนวนนักเรียน n=0; condition = ‘yes’; while condition ==‘yes’ value = input('Input value (0-100): '); if value < 50 disp (' You got F'); elseif value < 60 .... else disp ('You got A'); end n=n+1; condition = input(‘Continue [yes/no] ?’,’s’); fprintf(‘Number of the students is: %d\n’,n);
แบบฝึกหัด: ตัดเกรดนักเรียนจนกว่าจะครบจำนวน และนับจำนวนเกรด A ด้วย เราต้องมีการสร้างตัวแปรขึ้นเพื่อเก็บจำนวนนักเรียนที่ได้เกรด A (grade_A) ค่าเริ่มต้นของโปรแกรมดังกล่าว จะต้องมีค่าเป็น 0 (grade_A=0;) จากนั้นทุก ๆ ครั้งที่มีนักเรียนได้รับเกรด A ค่าตัวแปรนี้จะต้องถูกเพิ่มค่าขึ้นหนึ่ง (grade_A = grade_A + 1;) คำสั่งสองคำสั่งนี้ ควรถูกเพิ่มตรงส่วนใดของโปรแกรม? นอกจากนั้น โปรแกรมจะแสดงข้อความแสดงความยินดี (disp(‘You did it!!’);) ถ้าจำนวนนักเรียนที่ได้เกรด A มากกว่าครึ่งหนึ่งของจำนวนนักเรียนทั้งหมด เงื่อนไขนี้เขียนอย่างไร และควรจะถูกเพิ่มในส่วนใด?