420 likes | 523 Views
เก็บตกจากสัปดาห์ที่แล้ว. การแสดงผลแบบจัดรูปแบบเลขทศนิยม. การแสดงผลโดยใช้คำสั่ง System.out.print (); หรือ System.out.println (); ไม่สามารถกำหนดจำนวนจุดทศนิยมตามต้องการได้ ดังนั้น เมื่อไหร่ที่เราอยากกำหนดจำนวนจุดทศนิยมให้ใช้คำสั่ง System.out.printf (); รูปแบบคำสั่ง
E N D
เก็บตกจากสัปดาห์ที่แล้วเก็บตกจากสัปดาห์ที่แล้ว
การแสดงผลแบบจัดรูปแบบเลขทศนิยมการแสดงผลแบบจัดรูปแบบเลขทศนิยม • การแสดงผลโดยใช้คำสั่ง System.out.print(); หรือ System.out.println(); ไม่สามารถกำหนดจำนวนจุดทศนิยมตามต้องการได้ • ดังนั้น เมื่อไหร่ที่เราอยากกำหนดจำนวนจุดทศนิยมให้ใช้คำสั่ง System.out.printf(); รูปแบบคำสั่ง System.out.printf(“รูปแบบที่ต้องการ” , ตัวแปรต่างๆ );
การแสดงผลแบบจัดรูปแบบเลขทศนิยมการแสดงผลแบบจัดรูปแบบเลขทศนิยม รูปแบบคำสั่ง System.out.printf(“รูปแบบที่ต้องการ” , ตัวแปรต่างๆ ); รูปแบบที่ต้องการ เขียนอย่างไร - ประกอบไปด้วยข้อความ และ %f - ใส่ไว้ภายใต้ “” ทั้งหมด - ตรงส่วนไหนเป็นข้อความก็พิมพ์ข้อความนั้นไป - ตรงไหนต้องการให้แสดงค่าที่อยู่ในตัวแปรให้ใส่เป็น %.2f (ตัวเลข 2 แทนจำนวนจุดทศนิยมที่ต้องการ) เช่น System.out.printf(“Mosteller %.2f” , ตัวแปรต่างๆ ); มี %f 1 ตำแหน่ง แสดงว่าต้องการกำหนดจำนวนจุดทศนิยมของ 1 ตัวแปร
การแสดงผลแบบจัดรูปแบบเลขทศนิยมการแสดงผลแบบจัดรูปแบบเลขทศนิยม รูปแบบคำสั่ง System.out.printf(“รูปแบบที่ต้องการ” , ตัวแปรต่างๆ ); ตัวแปรต่างๆ เขียนอย่างไร - เขียนเฉพาะชื่อตัวแปรที่เราต้องการแสดงค่า - หากมีหลายตัว ให้เขียนเรียงต่อเนื่องกันไป - คั่นแต่ละตัวด้วย ( , ) เช่น System.out.printf(“Mosteller %.2f” , ans); จะต้องระบุตัวแปรกี่ตัว ขึ้นอยู่กับว่าในส่วนรูปแบบเราใส่ %f ไปกี่ครั้ง
ทดลองเขียนคำสั่ง printf Lab1 : แสดงอุณหภูมิองศาเซลเซียสในรูปแบบทศนิยม 2 ตำแหน่ง เช่น Input : 100 Output : 37.78 double C = 37.77777777777778 System.out.printf(“%.2f”, C); Lab2 : เขียนโปรแกรมคำนวณพื้นที่ผิวกายในรูปแบบทศนิยม 3 ตำแหน่ง เช่น Input : 173 64 Output : Mosteller = 1.754 double ans = 1.7537261917287874 System.out.printf(“Mosteller = %.3f”,ans);
ทดลองเขียนคำสั่ง printf Lab3 : แสดงตัวเลขแบบมีลูกน้ำ (,) คั่น เช่น Input : 2000 Output : 2,000 int a = 2 , b = 0; System.out.printf(“%d,%03d”,a,b);
ทดลองเขียนคำสั่ง printf Hw1 : คำนวณราคาสุทธิของสินค้าแล้วแสดงผลลัพธ์ในรูปแบบทศนิยม 2 ตำแหน่ง เช่น Output : Total price after calculate discount 5% is 95.00 baht. double total = 95.0 System.out.print(Total price after calculate discount 5% is ”); System.out.printf(“%.2f baht.”,total);
ทดลองเขียนคำสั่ง printf Hw3 : แปลงเงินบาทไปเป็นเงินดอลล่าร์ (ตอบเป็นทศนิยม 2 ตำแหน่ง) เช่น Output : 100 Baht = 2.46 Dollar int b = 100; double d = 2.463054187192 System.out.printf(“%d Baht= %.2f Dollar”,b, d);
โจทย์ • เขียนโปรแกรมรับเลขจำนวนเต็ม 2 ตัวแล้วแสดงผลตัวเลขที่มีค่ามากกว่าทางหน้าจอ
วิเคราะห์ปัญหา • Input • ตัวเลขแรก • ตัวเลขสอง • Process • หาจำนวนที่มากสุดระหว่างเลข 2 จำนวน • Output • ตัวเลขที่มากที่สุด
ออกแบบโปรแกรม • แสดงข้อความ Enter first number : • รับเลขตัวแรกจำไว้ใน a • แสดงข้อความ Enter second number : • รับเลขตัวสองจำไว้ใน b • แสดงข้อความว่า Maximum number is • ถ้า a มากกว่า b แสดงค่า a ทางหน้าจอ • ถ้าไม่ใช่ แสดงค่า b ทางหน้าจอ
การทำงานแบบมีเงื่อนไขการทำงานแบบมีเงื่อนไข • การทำงานของคอมพิวเตอร์นอกเหนือจากการทำงานแบบตามลำดับแล้ว • จะมีการทำงานอีกลักษณะ คือ การทำงานแบบมีเงื่อนไข • การทำงานอย่างหนึ่งจะถูกเลือกให้ทำงาน เมื่อเงื่อนไขเป็นจริง • การทำงานลักษณะนี้ จะทำให้คอมพิวเตอร์มีการทำงานที่หลากหลายมากขึ้น
คำสั่งควบคุมการทำงานแบบเลือกทำคำสั่งควบคุมการทำงานแบบเลือกทำ • คำสั่งควบคุมการทำงานแบบเลือกทำใน Java ที่เราจะเรียนกันวันนี้มี 2 คำสั่ง คือ • คำสั่ง if • คำสั่ง if – else • คำสั่ง if • เป็นการเลือกว่าจะ “ทำ” หรือ “ไม่ทำ” • ใช้เงื่อนไขเป็นตัวตัดสิน ถ้าทดสอบแล้วพบว่าเงื่อนไขเป็นจริงจะทำ ถ้าเป็นเท็จก็ไม่ทำ • คำสั่ง if –else • เป็นการเลือกว่าจะทำงานไหน ระหว่างงาน 2 งานที่มีอยู่ • ใช้เงื่อนไขเป็นตัวตัดสิน ถ้าเงื่อนไขเป็นจริงทำงานแรก ถ้าเป็นเท็จทำงานอย่างที่สอง
รูปแบบคำสั่ง • คำสั่ง if if (เงื่อนไข ) { คำสั่งที่จะทำเมื่อเงื่อนไขเป็นจริง ; } • คำสั่ง if –else if(เงื่อนไข ) { คำสั่งที่จะทำเมื่อเงื่อนไขเป็นจริง ; } else { คำสั่งที่จะทำเมื่อเงื่อนไขเป็นเท็จ ; } ในการใช้ if ไม่จำเป็นต้องมี else เสมอไป ขึ้นอยู่กับว่าเมื่อเงื่อนไขเป็นเท็จเราต้องการให้ทำอะไรไหม แต่อยู่ๆ เราจะเขียน else ตัวเดียวโดดๆ เลยไม่ได้
เงื่อนไขเขียนอย่างไร • การกำหนดเงื่อนไขในคำสั่ง if และ if-else จะใช้การเปรียบเทียบ (expression) เพื่อให้ได้ผลลัพธ์ทางตรรกศาสตร์ (มีค่าเป็นจริง หรือ เท็จ) • โดยเครื่องหมายในการเปรียบเทียบของภาษา Java มีดังนี้ • มากกว่า (>) • น้อยกว่า (<) • มากกว่าหรือเท่ากับ (>=) • น้อยกว่าหรือเท่ากับ (<=) • เท่ากับ (==) • ไม่เท่ากับ (!=)
เงื่อนไขเขียนอย่างไร จริง เท็จ จริง เท็จ จริง เท็จ จริง จริง จริง เท็จ จริง เท็จ เท็จ จริง
ลำดับการทำงานในคำสั่ง if • รูปแบบคำสั่ง if(เงื่อนไข) { คำสั่ง ; } 1 if ( a > b ) { System.out.println(“เลขตัวแรกมากกว่าตัวหลัง”); } System.out.println(“จบการทำงาน”); 2 3
ลำดับการทำงานในคำสั่ง if - else • รูปแบบคำสั่ง if( เงื่อนไข ) { คำสั่ง 1 ; } else { คำสั่ง 2; } สังเกตว่า เงื่อนไข เป็นส่วนที่ถูกทำก่อนเสมอ เพื่อจะตัดสินใจได้ว่า ควรทำคำสั่งไหนต่อไป 1 if ( a > b ) { System.out.println(“เลขตัวแรกมากกว่าตัวหลัง”); }else{ System.out.println(“เลขตัวหลังมากกว่าตัวแรก”); } System.out.println(“จบการทำงานของโปรแกรม”); 2 2 3
คำสั่ง กับ กลุ่มคำสั่ง • ตามข้อกำหนดของคำสั่ง if และ if-else เราสามารถเขียนคำสั่งให้ทำหลัง if และ หลัง else ได้ 1 กลุ่มคำสั่ง (ใช้ {} ครอบกลุ่มคำสั่งนั้น) • ในกรณีที่เรามีเพียงคำสั่งเดียว สามารถเขียนหลัง if หรือ else ได้เลยโดยไม่ต้องมีเครื่องหมาย {} if (w < 0) w = w + 7; if (w ==0) System.out.println(“วันเสาร์”); if (w ==1) System.out.println(“วันอาทิตน์”); if (w ==2) System.out.println(“วันจันทร์”); if (w ==3) System.out.println(“วันอังคาร”); if (w ==4) System.out.println(“วันพุธ”); if (w ==5) System.out.println(“วันพฤหัส”); if (w ==6) System.out.println(“วันศุกร์”); ในตอนเริ่มต้นเพื่อป้องกันการ error ไม่ว่าจะมีกี่คำสั่งให้ใส่ปีกกาเสมอ
เขียนโปรแกรม Algorithm Source code if( a > b) { System.out.println(a); } else{ System.out.println(b); }
เขียนโปรแกรม Source code if(a > b) { System.out.println(a); } if(b > a) { System.out.println(b); } Algorithm สองเงื่อนไขนี้มีความตรงข้ามกัน ถ้าใช้ if เราต้องระบุเงื่อนไขทั้งคู่ ถ้าใช้ else จะหมายถึงส่วนที่เหลือทั้งหมดจึงไม่ต้องระบุเงื่อนไข code
โจทย์ จงเขียนโปรแกรมรับเลขจำนวนเต็ม 2 ตัวแล้วนับว่าตัวเลขที่รับเข้ามา มีเลขจำนวนเต็มบวกทั้งหมดกี่ตัวดังตัวอย่าง ตัวอย่างที่ 1 2 3 The number of positive is 2 ตัวอย่างที่ 2 -1 0 The number of positive is 1
วิเคราะห์ปัญหา • Output • จำนวนตัวเลขเต็มบวก • Input • เลขตัวที่ 1 • เลขตัวที่ 2 • Process นับตัวเลขที่เป็นจำนวนเต็มบวก
ออกแบบโปรแกรม • รับเลขตัวที่ 1 จำไว้ใน a • รับเลขตัวที่ 2 จำไว้ใน b • กำหนด count (ตัวนับ) ให้จำค่า 0 ไว้ • ถ้า a >= 0 เพิ่มค่า count ไป 1 • ถ้า b >= 0 เพิ่มค่า count ไป 1 • แสดงข้อความ The number of positive is ตามด้วยค่าที่ count จำไว้
เขียนโปรแกรม • Algorithm • Source code • count = 0; • if(a >= 0) { • count = count + 1; • } • if(b >=0) { • count = count + 1; • } โจทย์ข้อนี้ไม่สามารถใช้ if-else ได้ เพราะไม่ว่า input จะเป็นอะไร ตัวเลขทุกตัวจะต้องถูกทดสอบ ถ้าเราใช้ if – else มันจะเลือกทดสอบเพียงแค่เงื่อนไขใดเงื่อนไขหนึ่งเท่านั้น ข้อควรระวังคือ เราต้องสร้างตัวแปรมาช่วยจำว่าพบข้อมูลที่ต้องการกี่ตัวแล้ว (count) จะได้ไม่ลืม ถ้าเราไม่กำหนดค่าเริ่มต้นของตัวนับเป็น 0 บางครั้งจาวาจะไปเอาค่าเน่าๆ มาเป็นค่าตั้งต้น ทำให้ผลลัพธ์โปรแกรมเราผิด
ทฤษฎีที่เกี่ยวข้อง • คำสั่ง count = count + 1; • หมายความว่า ของเดิมตัวแปร count เคยจำอะไรไว้ ให้บวกเพิ่มไป 1 • สามารถเขียนคำสั่งแบบย่อได้ ดังนี้ count++; • ทั้งสองแบบคือคำสั่งที่ให้ผลลัพธ์เหมือนกัน • หากเราต้องการลดค่าในตัวแปรลง 1 ทำได้ ดังนี้ • count = count – 1; หรือ • count--;
บวกบวก • สามารถวางไว้หน้า หรือ หลังตัวแปรก็ได้ ซึ่งจะให้ผลลัพธ์ที่แตกต่างกัน • ++a คือ การเพิ่มค่าของ a ขึ้น 1 ก่อนแล้วจึงนำค่าของ a ไปใช้ ตัวอย่าง 1 b = ++a จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้ a = a + 1; b = a; • a++ คือ การนำค่าของ a ไปใช้ก่อน แล้วจึงเพิ่มค่า a ขึ้น 1 ตัวอย่าง 2 b = a++ จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้ b = a ; a = a + 1;
ตัวอย่าง • สมมุติให้ j = 4 • คำสั่ง i = 2 + ++j;มีค่าเป็นเท่าไหร่ • เพิ่มค่า j ก่อน (j = 5) • แล้วนำค่า j บวกกับ 2 • ผลลัพธ์จะทำให้ iมีค่าเป็น 7 • ส่วนคำสั่ง i = 2 + j++; มีค่าเป็นเท่าไหร่ • นำค่า j บวกก่อน (2 + 4) • จะทำให้ iมีค่าเป็น 6 • แล้วค่อยเพิ่มค่า j ดังนั้น j จะมีค่าเป็น 5
ลบลบ • --c คือ การลบค่าของ c ลง 1 ก่อนแล้วจึงนำค่าของ c ไปใช้ ตัวอย่าง 1 d = --c จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้ c = c - 1; d = c ; • c-- คือ การนำค่าของ c ไปใช้ก่อน แล้วจึงลดค่า a ลง 1 ตัวอย่าง 2 d = c-- จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้ d = c ; c = c - 1;
ตัวอย่าง • สมมุติให้ j = 4 • คำสั่ง i = 2 + --j; มีค่าเป็นเท่าไหร่ • ลดค่า j ลงก่อน (j = 3) • แล้วนำไปบวก (3 + 2 ) • จะทำให้ i มีค่าเป็น 5 • ส่วนคำสั่ง i = 2 + j-- ; มีค่าเป็นเท่าไหร่ • บวกก่อน (2 + 4) • จะทำให้ i มีค่าเป็น 6 • แล้วค่อยลดค่า j ลง (j = 3)
ตัวดำเนินการเสริม • ตัวดำเนินการให้ค่า • สมมุติเรามีคำสั่ง x = x + 2; เราสามารถเขียนสั้นๆได้เป็น x += 2 ก็ได้ • หมายความว่า ของเดิม x มีค่าอะไรอยู่ให้บวกเพิ่มไปอีก 2 • จาวาให้เราเขียนแบบลัดในลักษณะนี้กับตัวดำเนินการคำนวณได้ทุกตัว เช่น • x = x + 2; เขียนได้เป็น x += 2; • x = x – 5; เขียนได้เป็น x -= 5; // ลบออกจากค่าเดิมไป 5 • x = x * y; เขียนได้เป็น x *= y;// คูณเพิ่มจากค่าเดิมไปเท่ากับค่าที่ y จำไว้ • x = x / a; เขียนได้เป็น x /= a;// หารออกจากค่าเดิมไปเท่ากับค่าที่ a จำไว้ • x = x % (a+b); เขียนได้เป็น x %= (a+b); // mod จากค่าเดิมไปเท่ากับค่า (a + b)
โจทย์ จงเขียนโปรแกรมเพื่อพิจารณาว่าเลขจำนวนเต็มที่รับเข้ามา เป็นเลขคู่ หรือ เลขคี่ และให้แสดงผลลัพธ์ทางหน้าจอ ดังตัวอย่าง
วิเคราะห์ปัญหา • Input • เลขจำนวนเต็ม • Process • พิจารณาว่าตัวเลขแล้วแสดงผลลัพธ์ว่าเป็น เลขคู่ หรือ เลขคี่ • Output • ข้อความแสดงชนิดของตัวเลข
ออกแบบโปรแกรม Algorithm • แสดงข้อความ Enter number : • รับค่าตัวเลขจำไว้ใน num • ถ้า numหารด้วย 2 ลงตัว แสดงค่าใน numตามด้วยข้อความ “is even number” • ถ้าไม่ใช่ แสดงค่าใน numตามด้วยข้อความ “is odd number”
เขียนโปรแกรม Algorithm Source code if( num % 2 == 0) { System.out.println(num + “ is even number”); } else { System.out.println(num + “ is odd number”); } code
byte, short, long, float • นอกจากจาวาจะมีชนิดข้อมูลแบบ intและ double เพื่อแทนจำนวนเต็มและจำนวนจริงแล้วจาวายังมีประเภทข้อมูลแบบ • byte, short และ long สำหรับจำนวนเต็ม • แบบ float สำหรับข้อมูลจำนวนจริง • ประเภทข้อมูลแต่ละแบบใช้เนื้อที่ในการเก็บที่ต่างกัน และสามารถเก็บค่าในช่วงที่ต่างกัน เช่น • จำนวนจริงแบบ float เก็บค่าในช่วงที่แคบกว่า และละเอียดแม่นยำน้อยกว่า double
ข้อมูลประเภทตัวเลขในจาวาข้อมูลประเภทตัวเลขในจาวา
ข้อมูลประเภทตัวเลขในจาวาข้อมูลประเภทตัวเลขในจาวา ขอย้ำว่า ถ้าต้องการใช้จำนวนเต็มก็ให้ใช้ intถ้าต้องการใช้จำนวนจริงให้ใช้ double เว้นแต่ว่า • ใช้ byte, short และ float เมื่อต้องการประหยัดเนื้อที่หน่วยความจำ • ใช้ long เมื่อต้องการเก็บจำนวนเต็มที่มีค่ามากจริงๆ (เกิน 2 พันล้าน)
เครื่องหมาย + ในภาษา Java • เครื่องหมาย + ถ้านำไปใช้กับสตริง จะหมายถึง การต่อสตริง เช่น “A” + “B” จะได้ “AB” • ถ้านำสตริง + ตัวเลข ตัวแปลโปรแกรมจะตีความว่าเป็นการต่อสตริงเช่นกัน • “K” + 9 จะเปลี่ยน 9 เป็นสตริงได้ผลลัพธ์ K9 • 9 + “K” จะได้ 9K