|
|
|
|
|
คำชี้แจง |
ให้นักเรียนสรุปเนื้อหาความรู้ที่ได้จากการศึกษาค้นคว้า บทเรียนบนเครือข่ายอินเทอร์เน็ต
เรื่องการโปรแกรมเบื้องต้น
หน่วยที่ 6 คำสั่งควบคุมแบบวนซ้ำ หัวข้อย่อยที่ 6.3 คำสั่ง for
หัวข้อย่อยที่ 6.4 คำสั่ง continue
และ คำสั่ง break
และ 6.5
คำสั่งวนซ้ำเชิงซ้อน หรือสืบค้น
จากอินเทอร์เน็ต ให้ได้ใจความสำคัญ
ถูกต้องครบถ้วน ตามหัวข้อที่กำหนดให้ต่อไปนี้ |
|
|
1. |
จากรูปที่กำหนดให้ข้างล่างนี้ จงอธิบายขั้นตอนการทำงานของคำสั่ง for |
|
|
|
|
|
|
|
................................................................................................................................ |
|
................................................................................................................................ |
|
................................................................................................................................ |
|
................................................................................................................................ |
|
................................................................................................................................ |
|
................................................................................................................................ |
|
................................................................................................................................ |
|
|
2. |
จงพิจารณาโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
รหัสโปรแกรม |
/*1*/ |
#include <stdio.h> |
/*2*/ |
int main() { |
/*3*/ |
int i ; |
/*4*/ |
for (i=1 ; i<=5 ; i++) { |
/*5*/ |
printf("Hello Thailand\n"); |
/*6*/ |
} |
/*7*/ |
return 0; |
/*8*/ |
} |
|
|
|
|
|
|
|
1) เมื่อทำงานถึงบรรทัดที่ 7 ข้อความ "Hello Thailand" จะถูกแสดงกี่บรรทัด |
|
................................................................................................................................ |
|
2) เมื่อทำงานถึงบรรทัดที่ 7 ค่า i มีค่าเท่าไร |
|
................................................................................................................................ |
|
3) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 4 เป็น for (i=6 ; i <= 5 ; i++ ) { จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
4) ถ้าเปลี่ยนคำสั่ง บรรทัดที่ 4 เป็น for (i=1 ; i >= 1 ; i++ ) { จะเกิดผลเช่นใด |
|
................................................................................................................................ |
|
|
3. |
จงเขียนโปรแกรมโดยใช้คำสั่ง for ในการหาค่าสูงสุด จากข้อมูลเลขจำนวนเต็มที่ผู้ใช้ป้อนเข้ามา
ทางแป้นพิมพ์ โดยขั้นแรกให้ผู้ใช้ป้อนจำนวนข้อมูล เก็บไว้ในตัวแปร m
ขั้นที่ 2 ให้วนรับค่าข้อมูลจำนวนเต็มจากแป้นพิมพ์ พร้อมตรวจสอบหาค่าสูงสุดไปเรื่อย ๆ
ขั้นที่ 3 เมื่อครบจำนวน m ข้อมูล ให้แสดงผลจำนวนสูงสุดทางจอภาพ |
|
|
|
ภาพตัวอย่าง การรันโปรแกรม เมื่อ m = 3 และข้อมูลเป็น 78 , 65 และ 71 |
|
|
|
หน้าจอแรก เมื่อรันโปรแกรมขึ้นมา รอรับค่าจำนวนข้อมูล m ทางแป้นพิมพ์
หน้าจอ แสดงการป้อนจำนวน m เป็น 3 แล้วกดแป้น Enter
จะได้หน้าจอให้ป้อนค่าจำนวนเต็มที่ 1
หน้าจอ
แสดงการป้อนค่าจำนวนเต็มที่ 1
เป็น 78 แล้วกดแป้น Enter
จะได้หน้าจอให้ป้อนค่าจำนวนเต็มที่ 2
หน้าจอ แสดงการป้อนค่าจำนวนเต็มที่ 2 เป็น 65 แล้วกดแป้น Enter
จะได้หน้าจอให้ป้อนค่าจำนวนเต็มที่ 3
หน้าจอ แสดงการป้อนค่าจำนวนที่ 3 เป็น 71 แล้วกดแป้น Enter
จะได้หน้าจอแสดงค่าสูงสุดออกมา ในตัวอย่าง ค่าสูงสุด คือ 78 |
|
|
|
รหัสคำสั่ง (Source Code) |
|
|
|
|
|
|
รหัสโปรแกรม |
|
#include <stdio.h> |
|
int main() { |
|
int i , m , num , max = -9999 ; |
|
printf("Input m : "); |
|
scanf("%....." , &......); |
|
for (i =...... ; i <= ...... ; ........) { |
|
printf("Input Number %d : " , i); |
|
scanf("%d" , &num); |
|
if (.................) |
|
max = ..........; |
|
} |
|
printf("Max : %d : " , .........); |
|
return 0; |
|
} |
|
|
|
|
|
|
4. |
จงพิจารณาโครงสร้างโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
ส่วนโครงสร้างโปรแกรม |
|
|
1 |
while (เงื่อนไขที่ 1) { |
2 |
คำสั่งที่ 1; |
3 |
if (เงื่อนไขที่ 2) |
4 |
continue; |
5 |
คำสั่งที่ 2; |
6 |
} |
|
|
|
|
|
|
|
1) ถ้าเงื่อนไขที่ 2 เป็นจริง คำสั่งบรรทัดใดจะถูกข้ามไป |
|
................................................................................................................................ |
|
2) ถ้าเงื่อนไขที่ 2 เป็นจริงในทุกรอบของการวนซ้ำ จะเกิดผลอย่างไร |
|
................................................................................................................................ |
|
|
5. |
จงพิจารณาโครงสร้างโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
ส่วนโครงสร้างโปรแกรม |
|
|
1 |
while (เงื่อนไขที่ 1) { |
2 |
คำสั่งที่ 1; |
3 |
if (เงื่อนไขที่ 2) |
4 |
break; |
5 |
คำสั่งที่ 2; |
6 |
} |
|
|
|
|
|
|
|
1) ถ้าเงื่อนไขที่ 2 เป็นจริง คำสั่งบรรทัดใดจะถูกข้ามไป |
|
................................................................................................................................ |
|
2) การวนซ้ำในโครงสร้างนี้ จะสิ้นสุดได้ ในกรณีใดบ้าง |
|
................................................................................................................................ |
|
|
6. |
จงพิจารณาโครงสร้างโปรแกรมด้านล่าง ประกอบการตอบคำถามต่อไปนี้ |
|
|
|
|
|
บรรทัดที่ |
ส่วนโครงสร้างโปรแกรม |
|
|
1 |
for (i = 1 ; i <= M ; i++) { |
2 |
คำสั่งที่ 1; |
3 |
for ( j = 1 ; j <= N ; j++) |
4 |
คำสั่งที่ 2; |
5 |
} |
|
|
|
|
|
|
|
1) กำหนดให้ M = 3 และ N = 2 จงตอบคำถามต่อไปนี้ |
|
คำสั่งที่ 1 จะถูกทำทั้งหมด.............ครั้ง และ คำสั่งที่ 2 จะถูกทำทั้งหมด ...............ครั้ง |
|
|
|
2) กำหนดให้ M = 4 และ N = 3 จงตอบคำถามต่อไปนี้ |
|
คำสั่งที่ 1 จะถูกทำทั้งหมด.............ครั้ง และ คำสั่งที่ 2 จะถูกทำทั้งหมด ...............ครั้ง |
|
|
|
3) จากโครงสร้างโปรแกรมที่กำหนดให้ จงตอบคำถามต่อไปนี้ |
|
คำสั่งที่ 1 จะถูกทำทั้งหมด.............ครั้ง และ คำสั่งที่ 2 จะถูกทำทั้งหมด ...............ครั้ง |
|
|
7. |
จงเขียนโปรแกรมแสดงข้อความตัวเลข "0" และ "1"
โดยให้ใช้คำสั่งแสดงผลได้เพียง 2 คำสั่ง คือ printf("1") และ printf("0") เท่านั้น
มีเงื่อนไขการแสดงผลดังนี้
แถวที่ 1 และ คอลัมน์ที่ 1 แสดง "0"
แถวที่ 1 และ คอลัมน์ที่ 2 แสดง "1"
แถวที่ 1 และ คอลัมน์ที่ 3 แสดง "0"
.
.
แถวที่ 2 และ คอลัมน์ที่ 1 แสดง "1"
แถวที่ 2 และ คอลัมน์ที่ 2 แสดง "0"
แถวที่ 2 และ คอลัมน์ที่ 3 แสดง "1"
.
.
แถวที่ 5 และ คอลัมน์ที่ 1 แสดง "0"
แถวที่ 5 และ คอลัมน์ที่ 2 แสดง "1"
แถวที่ 5 และ คอลัมน์ที่ 3 แสดง "0"
.
.
แถวที่ 5 และ คอลัมน์ที่ 40 แสดง "1"
สรุป วิธีคิด คือ เอา (แถว + คอลัมน์) ถ้าเป็นเลขคู่ แสดง "0" ถ้าเป็นเลขคี่ แสดง "1"
ดังภาพข้างล่าง |
|
|
|
ภาพตัวอย่างการรันโปรแกรม |
|
|
|
|
|
รหัสคำสั่ง (Source Code) |
|
|
|
|
|
|