Computer Programming: ข้อ 151–160

เนื้อหาวิชา : 3 : กระบวนการทางคณิตศาสตร์และตรรกศาสตร์

ข้อ 151. ให้ a และ b เป็นตัวแปรจำนวนเต็ม และ % คือ modulus operator ถ้า a = 5, b = 2 ผลลัพธ์ของ a % b มีค่าเท่าใด

1 : 2
2 : 2.5
3 : 1
4 : 0.5

เฉลย: 3
อธิบาย: % คือการหารเอาเศษ โดย 5 % 2 หมายถึง 5 หาร 2 ได้ 2 เศษ 1 ดังนั้นผลลัพธ์คือ 1


ข้อ 152. ข้อใดให้ผลลัพธ์เท่ากับ (a+b/c-d)*e

1 : ((a+b)/c-d)*e
2 : (a+b)/c-d*e
3 : a+b/c*e-d*e
4 : (a*e+b*e/c-d*e)

เฉลย: 4
อธิบาย: กระจาย e เข้าไปในวงเล็บจะได้ a*e + (b/c)*e – d*e 
ซึ่งเขียนเป็น a*e+b*e/c-d*e ได้ เพราะคูณและหารมีลำดับเดียวกัน


ข้อ 153. 

-(-15+(2*4-2))+((6+3)*5+7)/4 มีค่าเท่าใด

1 : 23
2 : 22
3 : 21
4 : 20

เฉลย: 2
อธิบาย: คำนวณส่วนแรก 2*4-2 = 6, ดังนั้น -15+6 = -9 และ -(-9)=9 
ส่วนหลัง (6+3)*5+7 = 52, 52/4 = 13 รวม 9+13 = 22

Note: ทำวงเล็บในสุดก่อน แล้วค่อยคูณ/หาร → บวก/ลบ


ข้อ 154. ข้อใดต่อไปนี้ผิด

1 : (a AND b) เป็นจริง ก็ต่อเมื่อทั้ง a และ b มีค่าเป็นจริง
2 : (NOT a) เป็นเท็จ ก็ต่อเมื่อ a มีค่าเป็นจริง
3 : (a OR b) เป็นเท็จ ก็ต่อเมื่อทั้ง a และ b มีค่าเป็นเท็จ
4 : NOT (a OR b) เป็นจริง ก็ต่อเมื่อ a หรือ b มีค่าเป็นเท็จ

เฉลย: 4
อธิบาย: 
“NOT (a OR b) เป็นจริง ก็ต่อเมื่อ ทั้ง a และ b มีค่าเป็นเท็จ” (ต้องใช้คำว่า “และ” ไม่ใช่ “หรือ”)
Note: 
AND → มีเท็จ เป็นเท็จ
OR → ต้องมีเท็จและเท็จ จึงเป็นเท็จ


ข้อ 155. กำหนดให้ X=1, Y=10, Z=100 นิพจน์ใดต่อไปนี้ได้ค่าตรรกะเป็นจริง

1 : NOT (Z/Y == Y)
2 : NOT(Y*X == Y)
3 : Z <= (Y*Y –1)
4 : X*Z => Z/X

เฉลย: 4
อธิบาย: ข้อที่เป็นจริงคือข้อ 4 โดยแทนค่าแล้วได้ 1*100 >= 100/1 หรือ 100 >= 100 ซึ่งเป็นจริง

Note: แทนค่าทีละตัว แล้วคำนวณก่อนเปรียบเทียบ


ข้อ 156. กำหนดให้ A=1, B=2, C=3, D=4 เงื่อนไขใดต่อไปนี้ ได้ค่าตรรกะเป็นเท็จ

1 : (A*B+C > C-B) && (A*D/B <= B)
2 : (A+B*C < B-C) || ((C+D)*A == A+B*C)
3 : (B/A <= D/C) || ((A+C) == (D*A)) && (C/B < A/D)
4 : (A < B) && (C < D) && (A > B) || (D==2*B)

เฉลย: 3
อธิบาย: แทนค่า A=1, B=2, C=3, D=4 แล้วเงื่อนไขในข้อ 3 ได้ผลเป็นเท็จ

Note: 
การทำโจทย์แบบนี้ต้องคำนวณเลขก่อน แล้วค่อยเทียบค่า และใช้ AND/OR ตามลำดับ


ข้อ 157. ให้ตัวแปร wet, cold, และ windy เป็นตัวแปรที่เก็บค่าจริงเท็จได้ ถ้า wet=true, cold=false, windy=false (cold AND (NOT wet)) OR NOT(windy OR cold) มีค่าความจริงคืออะไร

1 : จริง
2 : เท็จ
3 : ไม่สามารถสรุปได้
4 : ประโยคที่เขียนหาค่าทางตรรกะไม่ได้

เฉลย: 1
อธิบาย: 
wet=true = 1
cold=false = 0
windy=false = 0
(cold AND (NOT wet)) OR NOT(windy OR cold)
( 0 AND ( 0 )) OR NOT( 0 OR 0 )
( 0 ) OR NOT( 0 )
( 0 ) OR 1
= 1 = จริง

Note: แยกคิดทีละวงเล็บ จะไม่สับสน


ข้อ 158. ภาษาคอมพิวเตอร์ที่ใช้ในข้อนี้มีคุณสมบัติดังนี้
1. % แทน modulus operator
2. & แทน bitwise AND operator
3. ค่าตรรกะจริง มีค่าเท่ากับ 1
4. ค่าตรรกะเท็จ มีค่าเท่ากับ 0
5. สามารถนำค่าตรรกะไปประมวลผลกับจำนวนได้
จากการคำนวณต่อไปนี้ ข้อใดคำนวณหาคำตอบได้ถูกต้อง

1 : (3<2) + 5 มีค่าเท่ากับ 6
2 : (8 % 3) – 1 มีค่าเท่ากับ 0
3 : (3 = 3) + (6 <> 9) * 3 มีค่าเท่ากับ 6
4 : (23 – 2) & 1 มีค่าเท่ากับ 1

เฉลย: 4
อธิบาย: 
1 : (3 < 2) + 5
(3 < 2) → เท็จ → 0
0 + 5 = 5 ❌ ไม่ใช่ 6

2 : (8 % 3) – 1
8 % 3 = 2 (เศษจาก 8 ÷ 3)
2 – 1 = 1 ❌ ไม่ใช่ 0

3 : (3 = 3) + (6 <> 9) * 3
(3 = 3) → จริง → 1
(6 <> 9) → จริง → 1
1 + 1 * 3 = 1 + 3 = 4 ❌ ไม่ใช่ 6

4 : (23 – 2) & 1
23 – 2 = 21
21 & 1 → bitwise AND
21 (ฐานสอง = 10101)
1 (ฐานสอง = 00001)
AND = 00001 = 1 ✅ ถูกต้อง

Note: 
Bitwise AND คือการดำเนินการทางบิตที่ใช้เครื่องหมาย & ในภาษา C/C++ โดยจะนำตัวเลขสองจำนวนมาเปรียบเทียบกัน ทีละบิต แล้วคืนค่าเป็น 1 ก็ต่อเมื่อ บิตทั้งสอง เป็น 1 เหมือนกัน


ข้อ 159. ให้ y เป็นตัวแปรจำนวนเต็ม และ % คือ modulus operator
ข้อใดเป็นค่าของ y เมื่อ y = 1 – 5 / 3 + 9 % 4;

1 : 0
2 : 1
3 : -1
4 : 2

เฉลย: 2
อธิบาย: 
y = 1 – 5 / 3 + 9 % 4;
= 1 – (5 / 3) + (9 % 4)
= 1 – (1) + (1) = 1

5/3=1 (หารจำนวนเต็ม เศษไม่ถูกนับ)
9%4=1 (9 ÷ 4 เหลือเศษ 1)

Note: ลำดับความสำคัญ: / และ % ทำก่อน + และ -


ข้อ 160. หลังจากส่วนของโปรแกรมข้างล่างนี้ทำงานเสร็จ answer มีค่าเท่าใด (% คือ modulus operator)

int a = 1, b = 2, c = 3;
double f = 1.75, g = 1.0, h = 5;
double answer;
answer = a + g - b * f - c % b - h * 2;

1 : -11.6
2 : -12.5
3 : -13.1
4 : 12.0

เฉลย: 2
อธิบาย: 
ใส่วงเล็บกันงง
answer = a + g - (b * f )- (c % b) - (h * 2);

แทนค่า
answer = 1 + 1.0 - (2 * 1.75)- (3 % 2) - (5 * 2);

answer = 1 + 1.0 - (3.5)- (1) - (10); = 12.5

Note: ลำดับความสำคัญ: / และ % ทำก่อน + และ -

Scroll to Top