ใบงานที่ 3 ตัวแปรและชนิดของข้อมูล
TRANSCRIPT
ใบงานที่�� 3 ชน�ดข้�อมู�ลและเครื่��องหมูายปฏิ�บ�ติ�การื่ (Data Type and Operator)
1. จุ!ดปรื่ะสงค#การื่ปฏิ�บ�ติ�1) ฝึ�กการใช้�งาน Literal
2) ฝึ�กการใช้�งานช้น�ดข้�อมู�ล 3) ฝึ�กการใช้�งานเคร��องหมูายทางคณิ�ตศาสตร� ตรรกศาสตร� และ
เคร��องหมูายอ��น ๆ4) ฝึ�กความูเข้�าใจถึ%งความูผิ�ดพลาดท(�จะเก�ดข้%)นจากช้น�ดข้�อมู�ลหร�อจาก
เคร��องหมูายปฏิ�บั-ต�การ2. ที่ฤษฎี� (สร.ปทฤษฎี(ใส2มูา)3. การื่ปฏิ�บ�ติ�
ก. จงว�เคราะห�ป3ญหา, ออกแบับัผิ-งงานและเข้(ยนโปรแกรมูเพ��อแก�ป3ญหาด-งต2อไปน()1) ค7านวณิพ�)นท(�ผิ�วและปร�มูาตรร�ปทรงกระบัอก
ทฤษฏิ( (อธิ�บัาย)
- ร-บัค2าอ�นพ.ตมูา 2 ค2าเก9บัไว�ท(�ต-วแปร radius(ร-ศมู() และ hight(ความูส�ง)
- หาค2า Surface(พ�)นผิ�ว) จากสมูการ 2๚rh + 2๚r2
- หาค2า Capacity(ปร�มูาตร) จาสมูการ ๚r2 * ส�ง
2
start
Read radius,hig
htsurface=2(22/7)*radiu
s*(hight+radius)capacity=(22/7)*radiu
Stop
import java.awt.*;import javax.swing.*;public class ข้�อ 1 { public static void main (String[]args) { int hight,radius; double a=3.14,surface,capacity;
String str; str=JOptionPane.showInputDialog(null,"ป;อนค2า ส�ง"); hight=Integer.parseInt(str); str=JOptionPane.showInputDialog(null,"ป;อนค2า ร-ศมู("); radius=Integer.parseInt(str);
radius = radius / 2; surface = 2*a*radius*(hight+radius); capacity = a*radius*radius*hight;
JOptionPane.showMessageDialog(null,"พ�)น
2) ค7านวณิจ7านวนธินบั-ตรและเหร(ยญ(ธินบั-ตรใบัละ 1000, 500, 100,
50 บัาท เหร(ยญ 10, 5 , 1, 0.50, 0.25 บัาท) เมู��อท7าการแลกเปล(�ยนจากเง�น US$ ก7าหนดอ-ตราแลกเปล(�ยนได�
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าอ�นพ.ต 2 ค2าเก9บัไว�ท(�ต-วแปร M(money) และ D(Dollar)
ค7านวณิหาจ7านวนเง�นท(�เป<นเง�นไทย โดยใช้�ส�ตร M = M * D
ค7านวณิหาธินบั-ตรใบั 1000 โดยใช้�ส�ตร M = M / 1000
ค7านวณิหาธินบั-ตรใบั 500,100,50,20 และเหร(ยญ 10,5,1,0.50,0.25 โดยใช้�ส�ตรเด(ยวก-บัธินบั-ตร 1000
3
4
5
public class ข้�อ 2 { public static void main (String[]args) { double M=2000, //M = เง�นดอลล2าห� D=32.23,S; //D = ค2าเง�นบัาท
S = M * D; M = S; System.out.println("เง�นไทย = "+S+" บัาท"); System.out.println("******************************"); M = M / 1000; M = (int)M % 1000; System.out.println("ธินบั-ตร 1000 = "+
(int)M+" ใบั"); M = S - (M*1000); System.out.println("คงเหล�อ = "+M+" บัาท"); S = M; M = M / 500; M = (int)M % 500; System.out.println("ธินบั-ตร 500 = "+(int)M+"
ใบั"); M = S - (M*500); System.out.println("คงเหล�อ = "+M+" บัาท"); S = M; M = M / 100; M = (int)M % 100; System.out.println("ธินบั-ตร 100 = "+(int)M+"
ใบั"); M = S - (M*100); System.out.println("คงเหล�อ = "+M+" บัาท"); S = M; M = M / 50; M = (int)M % 50; System.out.println("ธินบั-ตร 50 = "+(int)M+"
ใบั"); M = S - (M*59); System.out.println("คงเหล�อ = "+M+" บัาท"); S = M; M = M / 10; M = (int)M % 100; System.out.println("เหร(ยญ 10 = "+(int)M+"
เหร(ยญ"); M = S - (M*10);
M = S - (M*5); System.out.println("คงเหล�อ = "+M+" บัาท"); S = M; M = M / 1; M = (int)M % 1; System.out.println("เหร(ยญ 1 = "+(int)M+"
เหร(ยญ"); M = S - (M*1); System.out.println("คงเหล�อ = "+M+" บัาท"); M = M / 0.5; System.out.println("เหร(ยญ 0.5 = "+(int)M+"
เหร(ยญ"); M = S - 0.5; S = M; System.out.println("คงเหล�อ = "+M+" บัาท"); M = M / 0.25; System.out.println("เหร(ยญ 0.25 = "+
(int)M+" เหร(ยญ"); M = S - 0.25; System.out.println("คงเหล�อ = "+M+" บัาท");
3) หาค2า N Factorial (N!)
ทฤษฏิ( (อธิ�บัาย)
ร-บัข้�อมู�ลอ�นพ.ตเก9บัไว�ท(�ต-วแปร Nก7าหนด i = 1 และ s = 1
ใช้�ค7าส-�ง while ตรวจสอบัการวนล�ปจากต-วแปร i ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Print ต-วแปร s
ค7านวณิหาค2า s จากสมูการ s = s * i และ i = i + 1 แล�ววนกล-บัไปท7าล�ปบันใหมู2
6
7
import java.awt.*;import javax.swing.*;public class ข้�อ 3 { public static void main (String[]args) { int i=1,s=1,n; String str; str=JOptionPane.showInputDialog(null,"N = "); n=Integer.parseInt(str); while (i<=n) { s = s * i; i = i + 1; } JOptionPane.showMessageDialog(null,"Sum ="+s);
4) หาค2า X ยกก7าล-ง n ( Xn )
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าจากอ�นพ.ต 2 ค2าเก9บัไว�ท(�ต-วแปร x และ nก7าหนดค2าผิลล-พธิ� s = 1 และต-วก7าหนดการวนล�ป a = 1
ตรวจสอบัการวนล�ปจากต-วแปร a ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Print ต-วแปร s
หาผิลล-พธิ�จากสมูการ s * x จากน-)นให�เพ��มูค2า i อ(ก 1 และวนข้%)นไปท7าล�ปใหมู2
8
9
import java.awt.*;import javax.swing.*;public class ข้�อ 4 { public static void main (String[]args) { int s=1,a=1,x,n; String str; str=JOptionPane.showInputDialog(null,"ป;อนค2า X"); x=Integer.parseInt(str); str=JOptionPane.showInputDialog(null,"ป;อนค2า N"); n=Integer.parseInt(str); while (a<=n) { s = s * x; a = a + 1; } JOptionPane.showMessageDialog(null,"SUM =
5) ตรวจสอบัค2าท(�ร -บัเข้�ามูาว2าเป<นจ7านวนเฉพาะหร�อไมู2
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าอ�นพ.ตเก9บัไว�ท(�ต-วแปร xก7าหนด s = 1 , และประกาศต-วแปร a , b เป<น Integer
ใช้�ค7าส-�ง if ตรวจสอบัค2า x ถึ�าตรงตามูเง��อนไข้ให� Print “Yes!” ถึ�าไมู2ตรงลงมูาท7า Process ต2อไป
หาค2า a จากสมูการ x % 2 และ b จากสมูการ x % 3
ใช้�ค7าส-�ง if ตรวจสอบัค2า a และ b ถึ�าตรงตามูเง��อนไข้ให� Print “No!”
ถึ�าไมู2ตรงให� Print “Yes!”
10
11
import java.awt.*;import javax.crypto.NullCipher;import javax.swing.*;public class ข้�อ 5 {
public static void main (String[]args) { int s=1,x,a,b; String str; str=JOptionPane.showInputDialog(null,"ป;อนค2า x "); x=Integer.parseInt(str); if(x==2||x==3) { JOptionPane.showMessageDialog(null,x+" เป<นจ7านวนเฉพาะ"); } else { a = x % 2; b = x % 3; if(a==0||b==0) { JOptionPane.showMessageDialog(null,x+" ไมู2เป<นจ7านวนเฉพาะ"); } else JOptionPane.showMessageDialog(null,x+"
6) หาค2าผิลรวมูข้องเลข้จ7านวนเฉพาะท(�มู(ค2าไมู2เก�น N
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าจากอ�นพ.ต 1 ค2าเก9บัไว�ท(�ต-วแปร nก7าหนด s = 1 และ i = 1
ใช้� while ตรวจสอบัการวนล�ปจากต-วแปร i ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Print ต-วแปร s
ใช้�ค7าส-�ง if ตรวจสอบัค2า i ถึ�าตรงตามูเง��อนไข้ท7า Process ข้วา ถึ�าไมู2ตรงลงมูาท7า Process ล2าง
ใช้�ค7าส-�ง if ตรวจสอบัค2า a และ b ว2าเท2าก-บั 0 หร�อไมู2 ถึ�าใช้�ให�ท7า Process ข้วา ถึ�าไมู2ใช้2ให�ท7า Process ส.ดท�ายแล�ววนข้%)นไปท7าค7าส-�ง while
ใหมู2
12
13
public class ข้�อ 6 { public static void main (String[]args) { int s=0,i=1,a,b,n=12; while (i<=n) { if(i==2|i==3) { s = s + i; i = i + 1; } else { a = i % 2; b = i % 3; if(a==0|b==0) { i = i + 1; } else { s = s + i; i = i + 1; } } } System.out.print("SUM ="+s); }}
7) หาค2า Sin(X)
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าจากอ�นพ.ต 2 ค2าเก9บัไว�ท(�ต-วแปร x , n
ก7าหนดค2า s = 0 , i = 1 , a = 1 , f = 0
ตรวจสอบัการวนล�ปจาก a <= n ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Print ต-วแปร s
ตรวจสอบัค2า f = 0 ใช้2ให�ท7า Left Process ถึ�าไมู2ใช้2ให�ท7า Right Process
Left Process : s = s + [power(x,i) / Fac(i)]Right Process : s = s - [power(x,i) / Fac(i)]
จากน-)นลงไปท7า Process ส.ดท�าย i = i + 2 และ a = a + 1 แล�ววนไปท7าล�ปบันใหมู2
14
8) Cos(X)
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าจากอ�นพ.ต 2 ค2าเก9บัไว�ท(�ต-วแปร x , n
ก7าหนดค2า s = 0 , i = 1 , a = 0 , f = 0
ตรวจสอบัการวนล�ปจาก a <= n ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Print ต-วแปร s
ตรวจสอบัค2า f = 0 ใช้2ให�ท7า Left Process ถึ�าไมู2ใช้2ให�ท7า Right Process
Left Process : s = s + [power(x,i) / Fac(i)]Right Process : s = s - [power(x,i) / Fac(i)]
15
จากน-)นลงไปท7า Process ส.ดท�าย i = i + 2 และ a = a + 1 แล�ววนไปท7าล�ปบันใหมู2
Fac (n)
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าจากอ�นพ.ต 2 ค2าเก9บัไว�ท(�ต-วแปร x , n
ก7าหนดค2า s = 1 , k = 0 , a = 1
ตรวจสอบัการวนล�ปจาก a <= i ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Return s
ท7าสมูการ s = s + kk = k + 2
16
a = a + 1แล�ววนไปท7าล�ปบันใหมู2
Power (x , n)
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าจากอ�นพ.ต 2 ค2าเก9บัไว�ท(�ต-วแปร x และ nก7าหนดค2าผิลล-พธิ� s = 1 และต-วก7าหนดการวนล�ป a = 1
ตรวจสอบัการวนล�ปจากต-วแปร a ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Print ต-วแปร s
หาผิลล-พธิ�จากสมูการ s * x จากน-)นให�เพ��มูค2า i อ(ก 1 และวนข้%)นไปท7าล�ปใหมู2
17
9) ป3ญหา มู(กระต2ายต-วผิ��และต-วเมู(ยค�2หน%�งอาศ-ยอย�2บันเกาะร�าง โดยธิรรมูช้าต�ข้องกระต2ายในท(�น() มู(อาย.ครบั 2 เด�อนบัร�บั�รณิ�จะมู(ล�ก 1 ค�2ท.กเด�อนเป<นต-วผิ��ก-บัต-วเมู(ย และจะเป<นสามู(ภรรยาก-นต2อไป สมูมู.ต�ว2าไมู2มู(การตายข้องกระต2ายเก�ดข้%)น เมู��อเวลาผิ2านไป N เด�อนจะมู(จ7านวนกระต2ายท-)งหมูดก(�ค�2
ทฤษฏิ( (อธิ�บัาย)
ร-บัค2าจากอ�นพ.ตเก9บัไว�ท(�ต-วแปร nก7าหนดค2าผิลล-พธิ� s = 1 , a = 1 , i – 1 , b = 0
ตรวจสอบัการวนล�ปจากต-วแปร a <= n ถึ�าตรงตามูเง��อนไข้ ให�ท7าเง��อนไข้ต2อไปถึ�าไมู2ตรงตามูเง��อนไข้ให�ออกไป Print ต-วแปร s
18
หาผิลล-พธิ�จากสมูการ b = aa = ss = a + bi = i + 1
จากน-)นวนข้%)นไปท7าล�ปบันใหมู2จนเง��อนไข้เป<นเท9จจะออกไป Print s
1) ค7านวณิจ7านวนเง�นบัาทไทย(ธินบั-ตรใบัละ 1000, 500, 100, 50 บัาท เหร(ยญ 10, 5 , 1, 0.50, 0.25 บัาท) เมู��อท7าการแลกเปล(�ยนจากเง�น US$ ก7าหนดอ-ตราแลกเปล(�ยนได� (ห�ามูใช้�ค7าส-�งประเภท selection
หร�อ loop)
ข้. จงป;อน คอมูไพล� และร-นโปรแกรมูต2อไปน()แล�วท7าตามูโจทย�แต2ละข้�อ2) โปรแกรมูท(� 3.1 และว�เคราะห�ผิลล-พธิ�ว2าถึ�กต�องด-งท(�ควรจะเป<นหร�อไมู2
เพราะอะไรให�เหต.ผิล
19
3) โปรแกรมูท(� 3.2 และว�เคราะห�ผิลล-พธิ�ว2าถึ�กต�องด-งท(�ควรจะเป<นหร�อไมู2 เพราะอะไรให�เหต.ผิล
4) โปรแกรมูท(� 3.3 จงอธิ�บัายท(�มูาข้องผิลล-พธิ� 8 ข้�อ( (1) - (8)) ท(�ได�มูาว2าเพราะเหต.ใดผิลล-พธิ�จ%งเป<นเช้2นน-)น
5) โปรแกรมูท(� 3.4 คอมูไพล�ไมู2ผิ2าน มู( Error ท(�ไหนบั�างเพราะอะไร จงอธิ�บัาย
// โปรแกรมูท(� 3.1import java.text.DecimalFormat;class FloatDouble {
public static void main(String[] args) {double d=3.14159265;float f=(float) d;System.out.println("double \t\t\t float");System.out.println(d+"\t\t"+f);d=30.14159265;f=(float) d;System.out.println(d+"\t\t"+f);
d=300.14159265;f=(float) d;System.out.println(d+"\t\t"+f);d=3000.14159265;f=(float) d;System.out.println(d+"\t\t"+f);
d=30000.14159265;f=(float) d;System.out.println(d+"\t\t"+f);
d=300000.14159265;f=(float) d;System.out.println(d+"\t\t"+f);
d=3000000.14159265;f=(float) d;System.out.println(d+"\t"+f);
d=30000000.14159265;f=(float) d;
20
System.out.println(d+"\t"+f);
DecimalFormat def = new DecimalFormat("#,###.0000");
System.out.println("\nd ="+def.format(d));}
}
// โปรแกรมูท(� 3.2class PlusDoubleFloat {
public static void main(String[] args) {double d=0.0d;float f=0.0f;System.out.println("d\t\t\t\tf");for(int i=0;i<10;i++){ // วนล�ปบัวก 0.1 เป<นจ7านวน
10 รอบัd+=0.1; // d = d+ 0.1;f+=0.1;
}System.out.println(d+"\t\t\t\t"+f);
// ค2า d และ f ส.ดท�ายเท2าก-บั 1.0 ใช้2หร�อไมู2 เพราะอะไร
}}
}
// lab3.3class Lab3DataType {
public static void main(String[] args) {
int i,j=100000 ;i=j*100000/100000;System.out.println("(1) i = "+i);
j=10;i=++j + j-- - j--;System.out.println("(2) i = "+i+"\n j = "+j++);
System.out.println("(3) "+ (--i+-i>=j++));
21
System.out.println("(4) "+(i>j | i<j) );System.out.println("(5) "+(i>j & i==j & i<j |
i==j) );
j=0x1;i=0x80;System.out.println("(6) "+(i>>(j+3) | j<<2));
System.out.println("(7)"+(1/2*2.5-3%5));System.out.println("(8)"+j*-1.0/0);
}}
//โปรแกรมูท(� 3.4class Error {
public static void main(String[] args) {byte b = 127;b=b+1;
byte b2=127;b2+=1;
int i=10l;
float f=1e-1;float f2=1e-2f;
char ch = '1';
char ch2 = 'A';ch2 = 'A'+'B';
int i =1/0;
float f3=2+4.0;
double d = 1/2;
float fn = 0100;fn = fn >> 2;
}
22
}
23