การทำซ้ำ (for)
โจทย์ จงเขียนโปรแกรมเพื่อแสดงข้อความ “Hello my student” จำนวน 10 บรรทัดทางหน้าจอ
วิเคราะห์ปัญหา Input ไม่มี Process การแสดงข้อความจำนวน 10 ครั้ง Output ข้อความ Hello my student
ทำซ้ำๆ คอมพิวเตอร์จำได้มาก คำนวณได้รวดเร็ว และไม่บ่นเมื่อสั่งให้ทำงานซ้ำๆ การทำซ้ำทำได้ง่ายด้วยการ เขียนคำสั่งซ้ำตามจำนวนรอบที่ต้องการ ใช้ Loop มาครอบกลุ่มคำสั่งที่ต้องการให้ทำงานซ้ำๆ System.out.println(“Hello”); for(int i = 1 ; i<= 3; i++) { System.out.println(“Hello”); }
คำสั่งทำซ้ำในภาษาจาวา คำสั่ง for คำสั่ง while คำสั่ง do… while โดยสัปดาห์นี้เราจะศึกษาที่คำสั่ง for กันก่อน
การใช้ for ภายในวงเล็บของ for แบ่งออกเป็น 3 ส่วน for( x = 1 ; x <= 5 ; x++) แต่ละส่วนแยกจากกันด้วยเครื่องหมาย ; ส่วนแรก เป็นการตั้งค่าเริ่มต้นให้กับตัวแปร ส่วนสอง เป็นเงื่อนไขที่ทดสอบว่าถ้าเป็นจริงจะทำต่อ ส่วนสุดท้าย เป็นการเพิ่มค่าตัวแปรหลังทำงานเสร็จในแต่ละรอบ 1 2 3
for การเขียน loop ด้วย for นี้อ่านเข้าใจได้ว่า ให้ k เริ่มที่ 0 วนทำซ้ำตราบเท่าที่ k ยัง <= n หลังทำเสร็จในแต่ละรอบให้เพิ่มค่า k ไปหนึ่ง (เขียนได้เป็น k++) for(int k=0; k <= n ;k++){ System.out.println(k); }
คำสั่งทำซ้ำ ตัวอย่าง เช่น ต้องการเขียนโปรแกรมที่ทำกลุ่มคำสั่งหนึ่งเป็นจำนวน 100 รอบ เขียนได้ดังนี้ for(int i = 0 ; i < 100 ; i++) { //กลุ่มคำสั่งที่ต้องการทำซ้ำ 100 รอบ } ตัวแปร i ทำหน้าที่เป็นตัวนับจำนวนรอบที่ทำไปแล้ว i มีค่าเพิ่มขึ้นหนึ่งเสมอในแต่ละรอบ ดังนั้น (k == 100) หมายถึง เมื่อครบ 100 รอบแล้วให้ออกจาก loop เงื่อนไขเป็นเท็จ
เขียนโปรแกรม จงเขียนโปรแกรมเพื่อแสดงข้อความ “Hello my student” จำนวน 10 บรรทัดทางหน้าจอ for(int i = 1 ; i<= 10 ; i++) { System.out.println(“Hello my student”); }
โจทย์ เขียนโปรแกรมถามชื่อผู้ใช้ พร้อมกับรับเลข 1 จำนวน (n) จากนั้นแสดงชื่อดังกล่าวจำนวน n รอบทางหน้าจอ
วิเคราะห์ปัญหา Input เลข 1 จำนวน(n) ชื่อ Output แสดงชื่อจำนวน n รอบ
ออกแบบโปรแกรม แสดงข้อความ “What is your name?” รับชื่อจำไว้ใน name Loop n ครั้ง แสดงค่าใน name
Loop รู้จบ กรณีต้องการให้วนทำซ้ำเป็นจำนวนตามค่าของตัวแปร n ก็แค่เปลี่ยนเลข 100 ใน code ก่อนหน้าเป็น n ดังนี้ for(int i = 0 ; i < 100 ; i++) { //กลุ่มคำสั่งที่ต้องการทำซ้ำ 100 รอบ } for(int i = 0 ; i < n ; i++) { //กลุ่มคำสั่งที่ต้องการทำซ้ำ 100 รอบ }
เขียนโปรแกรม เขียนโปรแกรมถามชื่อผู้ใช้ จากนั้นรับเลข 1 จำนวน (n) แล้วแสดงชื่อดังกล่าวจำนวน n รอบทางหน้าจอ Scanner kb = new Scanner(System.in); System.out.print(“What is your name? ”); String name = kb.next(); int n = kb.nextInt(); for(i=1 ; i<= n ;i++) { System.out.print(name); }
โจทย์ จงเขียนโปรแกรมหาค่าเฉลี่ยของชุดข้อมูลที่ผู้ใช้ป้อนทางแป้นพิมพ์ สมมุติเราต้องการหาค่าเฉลี่ยของข้อมูล 4 จำนวน เขียน code ได้อย่างไร
วิเคราะห์ปัญหา Input ตัวเลข 4 จำนวน Output ค่าเฉลี่ย
ออกแบบโปรแกรม กำหนดให้ sum = 0 Loop ทั้งหมด 4 รอบ 1.1 รับเลขจำไว้ใน x 1.2 คำนวณ sum = sum + x คำนวณ ans = sum / 4 แสดง ans
เขียนโปรแกรม int sum = 0; for(int i = 1 ; i <= 4 ; i++) { int x = kb.nextInt(); int sum = sum + x; } double ans = sum / 4.0; System.out.println(ans);
ตัวอย่าง : โปรแกรมหาค่าเฉลี่ย กรณีที่เราไม่อยากกำหนดจำนวนข้อมูลแบบตายตัว ถามผู้ใช้ก่อนว่าจะหาค่าเฉลี่ยกี่จำนวน แล้ววนรับข้อมูลเป็นจำนวนรอบตามนั้น สามารถเขียน code ได้ดังนี้ เพิ่ม/แก้ไขคำสั่ง Scanner kb = new Scanner(System.in); int n = kb.nextInt(); // ใช้ n เก็บจำนวนข้อมูลที่ผู้ใช้ต้องการหาค่าเฉลี่ย double sum = 0; //ตัวแปรเก็บผลรวมของข้อมูล for(int i = 0 ; i < n ;i++ ) { sum = sum + kb.nextDouble(); // อ่านข้อมูลแล้วเพิ่มค่าในตัวแปรเก็บผลรวม } System.out.println(“ค่าเฉลี่ย = “ + (sum/n));
สรุป : วงวน for ภายในวงเล็บของ for แบ่งออกเป็น 3 ส่วน แต่ละส่วนแยกจากกันด้วยเครื่องหมาย ; เราสามารถละส่วนที่ 1 และส่วนที่ 2 ได้ แต่ต้องมี ; คงไว้ให้รู้ว่าส่วนใดไม่มี กรณีที่ละส่วนที่สองไว้ จะเหมือนกับว่ามีคำว่า true อยู่ส่วนที่สอง เป็นจริงตลอดกาล ให้ทำซ้ำคำสั่งที่อยู่ใน loop ตลอดไป เราสามารถประกาศตัวแปรที่ใช้เฉพาะในวงวนตรงส่วนที่หนึ่งของ for ได้เลย for (int k =0; k < n; k++) { } การทำแบบนี้แสดงว่าเราต้องการใช้ตัวแปร k แค่ใน loopเท่านั้น พอออกนอก loop จะไม่สามารถใช้งานได้ หากเผลอไปใช้ตัวแปรโปรแกรมจะแจ้งข้อผิดพลาด
โจทย์ เขียนโปรแกรมรับเลข 1 จำนวน (n) จากนั้นรับเลขอีก n ตัว แล้วให้ทำการแสดงผลลัพธ์ว่าเลขแต่ละตัวเป็นเลขคู่ หรือ เลขคี่ ทางหน้าจอ
วิเคราะห์ปัญหา Input Output จำนวนครั้งการทำซ้ำ (n) ตัวเลขที่ต้องการทดสอบ Output ถ้าเป็นเลขคู่ปริ้น “Even” ถ้าเป็นเลขคี่ปริ้น “Odd”
ออกแบบโปรแกรม แสดงข้อความ “How many number? : ” รับค่าตัวเลขจำใน n Loop ทั้งหมด n รอบ 3.1 แสดง Number 3.2 รับเลขจำไว้ใน x 3.3 if( x เป็นเลขคู่ ) แสดง Even else แสดง Odd
เขียนโปรแกรม System.out.println(“How many number? :”) int n = kb.nextInt(); for(int i=1 ; i<=n ; i++) { System.out.println(“Number :”); int x = kb.nextInt(); if(x %2 == 0 ) { System.out.println(“Even”); } else { System.out.println(“Odd”); }
กิจกรรม จงหาผลลัพธ์ของโปรแกรม int sum = 0; for(int i = 5; i<=10; i++) { sum = sum + i; } System.out.println(sum); ก. 35 ข. 45 ค. 55 ง. 65 จ. ไม่มีข้อใดถูก
กิจกรรม : หาผลลัพธ์ของโปรแกรม for(int i = 0 ; i !=9 ; i = i + 2) System.out.println(i); for(int i = 1 ; i <= 20; i = i * 2) for(int i = 10 ; i >= 0 ; i--)
กิจกรรม : เขียนโปรแกรม เขียนโปรแกรมแสดงผลตัวเลขตั้งแต่ (0 1 2 3 4 5) เขียนโปรแกรมแสดงผลตัวเลข (5 4 3 2 1 0) เขียนโปรแกรมแสดงผลตัวเลข (0 2 4 6 8)