|
|
|
|
|
คำชี้แจง |
ให้นักเรียนสรุปเนื้อหาความรู้ที่ได้จากการศึกษาค้นคว้า บทเรียนบนเครือข่ายอินเทอร์เน็ต
เรื่องการโปรแกรมเบื้องต้น
หน่วยที่ 6 คำสั่งควบคุมแบบวนซ้ำ หัวข้อย่อยที่ 6.1 คำสั่ง while
หัวข้อย่อยที่ 6.2 คำสั่ง do - while
และทบทวนเนื้อหาหน่วยที่ 3 ข้อมูลพื้นฐานและตัวดำเนินการ
ในหัวข้อย่อยที่ 3.5 ตัวดำเนินการ
และ 3.6 นิพจน์ และทบทวนเนื้อหาหน่วยที่ 4 คำสั่งพื้นฐานในภาษาซี ในหัวข้อย่อยที่ 4.1 คำสั่งคำนวณ หรือสืบค้นจากอินเทอร์เน็ต
ให้ได้ใจความสำคัญ ถูกต้องครบถ้วน
ตามหัวข้อที่กำหนดให้ต่อไปนี้ |
|
|
1. |
จงพิจารณานิพจน์ที่กำหนดให้ ประกอบการตอบคำถามต่อไปนี้ โดยกำหนดให้ x
เป็นจำนวนเต็ม
(ทบทวนเนื้อหา หน่วยที่ 3 ในหัวข้อย่อยที่ 3.5 ตัวดำเนินการ และ 3.6 นิพจน์) |
|
|
|
1) x >= 1 && x <= 5 จงหาค่า x ที่เป็นไปได้ทั้งหมด ที่ทำให้ค่านิพจน์เป็นจริง |
|
............................................................................................................................................. |
|
2) x > 5 && x < 10 จงหาค่า x ที่เป็นไปได้ทั้งหมด ที่ทำให้ค่านิพจน์เป็นจริง |
|
............................................................................................................................................. |
|
3) x >= 1 && x <= 8 && x != 5 จงหาค่า x ที่เป็นไปได้ทั้งหมด ที่ทำให้ค่านิพจน์เป็นจริง |
|
............................................................................................................................................. |
|
|
2. |
จงพิจารณาโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
รหัสโปรแกรม |
/*1*/ |
#include <stdio.h> |
/*2*/ |
int main() { |
/*3*/ |
int i = 1; |
/*4*/ |
while (i <= 5) { |
/*5*/ |
printf("Hello Thailand\n"); |
/*6*/ |
i++; |
/*7*/ |
} |
/*8*/ |
return 0; |
/*9*/ |
} |
|
|
|
|
|
|
|
1) เมื่อทำงานถึงบรรทัดที่ 8 ข้อความ "Hello Thailand" จะถูกแสดงกี่บรรทัด |
|
................................................................................................................................ |
|
2) เมื่อทำงานถึงบรรทัดที่ 8 ค่า i มีค่าเท่าไร |
|
................................................................................................................................ |
|
3) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 3 เป็น int i = 6; จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
4) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 4 เป็น while (i >= 1) { จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
|
3. |
จงพิจารณาโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
รหัสโปรแกรม |
/*1*/ |
#include <stdio.h> |
/*2*/ |
int main() { |
/*3*/ |
int i = 1 , sum = 0; |
/*4*/ |
while (i <= 10) { |
/*5*/ |
sum += i; |
/*6*/ |
i++; |
/*7*/ |
} |
/*8*/ |
printf("Sum 1 - 10 : %d" , sum); |
/*9*/ |
return 0; |
/*10*/ |
} |
|
|
|
|
|
|
|
1) เมื่อทำงานถึงบรรทัดที่ 8 ค่า i จะมีค่าเท่าไร |
|
................................................................................................................................ |
|
2) เมื่อโปรแกรมประมวลผลเสร็จ คำสั่งบรรทัดที่ 5 จะถูกทำกี่ครั้ง |
|
................................................................................................................................ |
|
3) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 3 เป็น int i = 11 , sum = 0 ; จะเกิดผลเช่นใด
และค่า sum ในบรรทัดที่ 8 จะเป็นเท่าใด |
|
................................................................................................................................ |
|
................................................................................................................................ |
|
|
4. |
จงพิจารณาโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
รหัสโปรแกรม |
/*1*/ |
#include <stdio.h> |
/*2*/ |
int main() { |
/*3*/ |
int i = 1 , sum = 0 , num; |
/*4*/ |
while (i <= 5) { |
/*5*/ |
printf("Input Number %d : ", i); |
/*6*/ |
scanf("%d" , &num); |
/*7*/ |
sum += num; |
/*8*/ |
i++; |
/*9*/ |
} |
/*10*/ |
printf("Average of 5 Numbers : %.2f" , (float)sum/5); |
/*11*/ |
return 0; |
/*12*/ |
} |
|
|
|
|
|
|
|
1) เมื่อโปรแกรมประมวลผลเสร็จ คำสั่งบรรทัดที่ 6 จะถูกทำกี่ครั้ง |
|
................................................................................................................................ |
|
2) ข้อมูลค่าเฉลี่ยที่แสดงในบรรทัดที่ 10 เป็นข้อมูลชนิดใด
หากไม่ใส่ (float) ไว้หน้า sum/5 จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
3) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 4 เป็น while ( i <= 10 ) {
แล้วคำสั่งในบรรทัดที่ 10 ต้องแก้ไขเป็นอะไร โปรแกรมจึงจะทำงานได้ถูกต้อง |
|
................................................................................................................................ |
|
|
5. |
จงพิจารณาโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
รหัสโปรแกรม |
/*1*/ |
#include <stdio.h> |
/*2*/ |
int main() { |
/*3*/ |
int i = 1 , sum = 0 , num , N; |
/*4*/ |
printf("Input last number : "); |
/*5*/ |
scanf("%d" , &N); |
/*6*/ |
while (i <= N) { |
/*7*/ |
printf("Input Number %d : ", i); |
/*8*/ |
scanf("%d" , &num); |
/*9*/ |
sum += num; |
/*10*/ |
i++; |
/*11*/ |
} |
/*12*/ |
printf("Average of %d Numbers : %.2f" , N , (float)sum/N); |
/*13*/ |
return 0; |
/*14*/ |
} |
|
|
|
|
|
|
|
1) เมื่อประมวลผลโปรแกรมนี้เสร็จ คำสั่งในบรรทัดที่ 8 จะถูกทำกี่ครั้ง |
|
........................................................................................................................................ |
|
2) เมื่อทำงานถึงบรรทัดที่ 12 ค่า i จะมีค่าเท่าไร |
|
........................................................................................................................................ |
|
3) ถ้าผู้ใช้ป้อนค่า N เป็น 3 และป้อนข้อมูลเข้ามาเป็น 8 , 3 และ 7 ตามลำดับ
แล้วคำสั่งในบรรทัดที่ 12 จะแสดงผลอย่างไร |
|
........................................................................................................................................ |
|
4) ถ้าผู้ใช้ป้อนค่า N เป็น 0 จะเกิดผลเช่นไร แล้วส่งผลให้คำสั่งบรรทัดที่ 12 แสดงผลอย่างไร |
|
........................................................................................................................................ |
|
|
6. |
จงพิจารณาโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
รหัสโปรแกรม |
/*1*/ |
#include <stdio.h> |
/*2*/ |
int main() { |
/*3*/ |
int i = 1; |
/*4*/ |
do { |
/*5*/ |
printf("Hello Thailand\n"); |
/*6*/ |
i++; |
/*7*/ |
} while (i <= 5); |
/*8*/ |
return 0; |
/*9*/ |
} |
|
|
|
|
|
|
|
1) เมื่อทำงานถึงบรรทัดที่ 8 ข้อความ "Hello Thailand" จะถูกแสดงกี่บรรทัด |
|
................................................................................................................................ |
|
2) เมื่อทำงานถึงบรรทัดที่ 8 ค่า i มีค่าเท่าไร |
|
................................................................................................................................ |
|
3) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 3 เป็น int i = 6; จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
4) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 7 เป็น } while (i >= 1); จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
|
7. |
จงพิจารณาโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
รหัสโปรแกรม |
/*1*/ |
#include <stdio.h> |
/*2*/ |
int main() { |
/*3*/ |
int i = 5; |
/*4*/ |
do { |
/*5*/ |
printf("%d\n" , i); |
/*6*/ |
i--; |
/*7*/ |
} while (i >= 1); |
/*8*/ |
return 0; |
/*9*/ |
} |
|
|
|
|
|
|
|
1) โปรแกรมนี้ ทำอะไร จงอธิบาย |
|
................................................................................................................................ |
|
2) เมื่อทำงานถึงบรรทัดที่ 8 ค่า i มีค่าเท่าไร |
|
................................................................................................................................ |
|
3) เมื่อโปรแกรมนี้ทำงานเสร็จ จะได้สิ่งที่แสดงออกหน้าจอ กี่บรรทัด |
|
................................................................................................................................ |
|
4) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 3 เป็น int i = 0; จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
|
8. |
จงเขียนโปรแกรมโดยใช้คำสั่ง do - while ในการแสดงผลรูปดาว ดังรูป
โดยมีข้อจำกัดให้ใช้คำสั่งแสดงผลได้แค่ 2 คำสั่งนี้เท่านั้น คือ printf("*") กับ printf(" ")
และใช้ได้เพียงคำสั่งละ 1 ครั้งเท่านั้น (เคล็ดลับอยู่ที่เลขคู่เลขคี่นะจ๊ะ....) |
|
|
|
รหัสคำสั่ง (Source Code) |
|
|
|
|
|
|
รหัสโปรแกรม |
|
#include <stdio.h> |
|
int main() { |
|
int i = 1; |
|
do { |
|
if (................) |
|
printf("*"); |
|
else |
|
printf(" "); |
|
......................; |
|
} while (.................); |
|
return 0; |
|
} |
|
|
|
|
|