SlideShare a Scribd company logo
1 of 27
การเขียนคำาสั่งควบคุม
แบบวนซำ้า
โปรแกรมแบบวนซำ้า
คำา สั่ง ควบคุม การทำา งาน แบบ
for
คำาสัง For เป็นคำาสั่งควบคุมการทำางานและ
่
กำาหนดการทำางานวนรอบคล้าย ๆ กับคำาสั่ง while
จะมีรูปแบบแตกต่างกับคำาสังควบคุมการทำางานอื่น
่
ๆ
คำาสัง for เป็นเป็นคำาสั่งสั่งควบคุมการทำางาน
่
และกำาหนดการทำางานวนรอบ โดยตั้งค่าก่อน แล้ว
จึงทำาการพิจารณาเงื่อนไข ถ้าเงื่อนไขเป็นจริง ก็
รูปแบบการเขียน คำาสั่ง for
for (ค่าเริ่มต้น;เงื่อนไข;การเพิ่มหรือลดค่า)
ตัวอย่างการโปรแกรม

ผลลัพธ์ของโปรแกรม
การเขียนโดยใช้คำาสัง for จะเห็นได้ว่ามีความ
่
กระชับเขียนได้สั้นกว่าคำาสั่ง while เพราะสามารถ
กำาหนดได้ในครั้งเดียว แต่การทำางานก็จะได้ผล
เหมือนกันกับคำาสั่งwhile
ลักษณะการทำางานก็คอโปรแกรมจะทำาการ
ื
เช็คในส่วนของเงื่อนไข หากเงื่อนไขเป็นจริงก็จะ
เพิ่มค่าของตัวแปรไป 1 และทำาคำาสังในลูป จาก
่
นั้นก็ทำาการตรวจสอบเงื่อนไขอีก หากเงื่อนไขเป็น
จริงก็จะทำางานซำ้า ๆ แบบนีไปเรื่อย ๆ จนกว่า
้
เงื่อนไขเป็นเท็จ การทำางานของโปรแกรมก็จะ
หลุดจากลูป และจบการทำางาน
การกำาหนดค่าเริ่มต้นของตัวนับ เงื่อนไขการวน
ซำ้า และ การเปลียนแปลงค่าตัวนับ เป็นนิพจน์ทมี
่
ี่
การทำางานร่วมกันในคำาสั่ง for ดังนี้
การกำาหนดค่าเริ่มต้นของตัวนับ เป็นนิพจน์ที่ใช้
สำาหรับกำาหนดค่าเริ่มต้น ให้กบตัวแปรทีทำาหน้าที่
ั
่
ควบคุมการวนซำ้า และจะประมวลผลเพียงครั้งเดียว
•เงื่อนไขการวนซำ้า เป็นนิพจน์ทใช้สำาหรับประเมินค่า
ี่
คำาสั่ง จะถูกประมวลผลหรือไม่ นั่นคือถ้า เงื่อนไขการ
วนซำ้า มีค่าจริง คำาสั่ง จะถูกประมวลผล และถ้า
เงื่อนไขการวนซำ้า มีค่าเท็จ คำาสั่ง for จะสิ้นสุดลง
•การเปลี่ยนแปลงค่าตัวนับ เป็นนิพจน์ทจะถูก
ี่
ประมวลผลทุกครั้งหลังจาก คำาสั่ง ถูกประมวลผล โดย
การเปลียนแปลงค่าตัวนับ เป็นนิพจน์ใด ๆ ทีสามารถ
่
่
ประเมินค่าได้ เช่น นิพจน์เพิ่มค่า นิพจน์ลดค่า และ
นิพจน์กำาหนดค่า เป็นต้น
ตัวอย่างที่ 4.2.1 โปรแกรมแสดงตัวเลข
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

//Program: Counting.c
#include <stdio.h>
void main() {
int x, y;
printf("Count increasen");
for(x=1; x<=5; x++)
printf("%dn", x);
printf("Count decreasen");
for(y=5; y<=1; y--)
printf("%dn", y);
getch();
}
ผลลัพธ์ คือ
Count increase
1
2
3
4
5
Count decrease
5
4
3
2
1
คำำ สั่ง ควบคุม กำรทำำ งำน แบบ
While
คำำสัง While เป็นคำำสั่งสำำหรับใช้ควบคุม
่
กำรทำำงำนแบบมีเงือนไข อีกแบบหนึ่ง ซึ่งแตกต่ำง
ออกไปจำกกำรใช้งำนคำำสั่ง if และ elseif ก่อน
หน้ำนี้ ซึ่งคำำสั่ง While เป็นคำำสั่งที่จำำเป็นใน
กำรนำำไปใช้เขียนโปรแกรม
คำำสัง While เป็นคำำสั่งสำำหรับใช้ควบคุมกำร
่
ทำำงำนแบบมีเงือนไข ในกำรกำำหนดคำำสั่งให้มี
กำรทำำงำนแบบวนรอบ โดยพิจำรณำเงื่อนไขก่อน
หำกค่ำที่ได้เป็นจริงตำมเงื่อนไข จึงจะประมวลผล
ตำมคำำสั่งที่กำำหนดไว้
ตัวอย่ำงกำรโปรแกรม

ผลลัพธ์ของโปรแกรม
กำรเขียนโดยใช้คำำสั่ง for จะเห็นได้ว่ำมี
ควำมกระชับเขียนได้สั้นกว่ำคำำสั่ง while เพรำะ
สำมำรถกำำหนดได้ในครั้งเดียว แต่กำรทำำงำนก็จะ
ได้ผลเหมือนกันกับคำำสั่ง while
ลักษณะกำรทำำงำนก็คือโปรแกรมจะทำำกำร
เช็คในส่วนของเงื่อนไข หำกเงื่อนไขเป็นจริงก็จะ
เพิ่มค่ำของตัวแปรไป 1 และทำำคำำสังในลูป จำก
่
นั้นก็ทำำกำรตรวจสอบเงื่อนไขอีก หำกเงื่อนไขเป็น
จริงก็จะทำำงำนซำ้ำ ๆ แบบนีไปเรื่อย ๆ จนกว่ำ
้
เงื่อนไขเป็นเท็จ กำรทำำงำนของโปรแกรมก็จะ
หลุดจำกลูป และจบกำรทำำงำน
เงื่อนไขกำรวนซำ้ำ เป็นนิพจน์ใดๆ ทีสำมำรถประเมิน
่
ค่ำได้ โดยจะต้องเขียนไว้ระหว่ำงเครื่องหมำย ( และ )
เสมอเช่นเดียวกับคำำสั่ง if และคำำสัง if – else
่
เมือเริ่มต้นประมวลผลคำำสั่ง while เงื่อนไขกำรวนซำ้ำ
่
จะถูกตรวจสอบค่ำ ถ้ำพบว่ำ เงื่อนไขกำรวนซำ้ำ มีค่ำเป็น
จริง คำำสั่ง ภำยใต้คำำสัง while จะถูกตรวจสอบค่ำเป็นรอบ
่
แรก แล้ว เงื่อนไขกำรวนซำ้ำ จะถูกตรวจสอบค่ำอีกครั้ง
หำกพบว่ำ เงื่อนไขกำรวนซำ้ำ ยังมีค่ำเป็น จริง คำำสัง จะ
่
ถูกตรวจสอบค่ำอีกครั้ง จนกระทัง เงื่อนไขกำรวนซำ้ำ มีค่ำ
่
เป็น เท็จ คำำสั่ง while จึงจะสิ้นสุดลง
กำรตรวจสอบค่ำ เงื่อนไขกำรวนซำ้ำ ของคำำสั่ง
while ในครั้งแรก และพบว่ำมีค่ำเป็น เท็จ คำำสั่ง จะไม่
ประมวลผลเลย
ตัวอย่ำงที่ 4.2.2 โปรแกรมรับและแสดงค่ำ
ข้อมูล1
1

//Program: InOut1.c

2
3 #include <stdio.h>
4
5 void main(){
6
7
int iochar;
8
9
iochar = getchar();
10 while(iochar != EOF){
11
putchar(iochar);
12
iochar = getchar();
13 }
14
15 getch();
16 }
ผลลัพธ์
คือ
1
1
v
v
3
3
-9
-9
^z
หมายเหตุ
• หมายถึง ให้กดปุ่ม Enter บนแป้นพิมพ์
• ^z หมายถึง ให้กดปุ่ม Ctrl - z บนแป้นพิมพ์
•
โปรแกรม InOut1.c แสดงการใช้คำาสั่งของภาษาซี 2 คำา
สั่ง getchar() และ putchar() เพื่อใช้รับข้อมูลนำาเข้าและแสดง
ผลลัพธ์แทนการใช้คำาสั่ง scanf() และ printf()
•
คำาสั่ง getchar() เป็นคำาสั่งไม่มีอาร์กิวเมนต์ และจะรับ
อักขระ 1 ตัวจากแผงแป้นอักขระแล้ว ส่งกลับค่าจำานวนเต็มทีมี
่
ค่าในตารางรหัสแอสกีที่ตรงกับอักขระดังกล่าว
•
ฟังก์ชัน putchar() มีอาร์กิวเมนต์ 1 ตัวเป็นชนิด int และ
แสดงอักขระในตารางรหัสแอสกีทมีค่าตรงกับจำานวนเต็มดัง
ี่
กล่าวจอภาพ
•
สำาหรับ EOF เป็นค่าคงที่ที่นิยามอยู่ในแฟ้มส่วนหัวชื่อ
stdio.h และใช้เป็นอักขระสำาหรับตรวจสอบการสิ้นสุดการ
ป้องกันข้อมูลซึ่งในที่นี้ คือการป้องกัน Ctrl - z
•

จากโปรแกรม InOut1.c ตราบใดทีอักขระผู้ใช้ป้อน
่
ไม่ใช้อักขระสินสุดการป้อนข้อมูลเงื่อนไข การวนซำ้า
้
iochar != EOF จะยังมีค่าเป็นจริง และแสดงผลค่าอักขระ
นันออกทางจอภาพก่อนทีจะวนรับอักขระตัวถัดไป และ
้
่
ในรอบทีผู้ใช้ป้อน Ctrl - z เงื่อนไขการวนซำ้า iochar !=
่
EOF จะมีค่าเป็นเท็จ และคำาสั่ง while จะสิ้นสุดการ
ทำางาน
•
ในกรณีทผู้ใช้ป้อน Ctrl-z ในครั้งแรก เงื่อนไขการ
ี่
วนซำ้า iochar != EOF จะมีค่าเป็นเท็จและคำาสัง while จะ
่
สิ้นสุดการทำางานในทันที โดยทีคำาสั่งในบรรทัดที่ 11
่
และ 12 ไม่ถกประมวลผลเลย
ู
คำา สั่ง ควบคุม การทำา งาน แบบ
Do...While
คำาสังนีมีลักษณะการทำางานคล้ายกับคำาสัง
่ ้
่
While แต่มีส่วนแตกต่างอยู่เล็ก ๆ น้อย ๆ ที่มี Do
เพิ่มเข้ามา แล้ว Do จะทำาให้แตกต่างจาก While
เดี่ยว ๆ
คำาสัง do while เป็นคำาสั่งที่กำาหนดให้มีการ
่
ทำางานวนรอบ คล้าย ๆ คำาสั่ง While แต่แตกต่าง
กันที่คำาสั่ง do while จะให้ทำาคำาสั่งในลูป do ก่อน
แล้วค่อยพิจารณาเงื่อนไขใน while ถ้าค่าเงื่อนไข
ใน while เป็นจริง จึงจะวนรอบทำาคำาสั่งในลูป do
ต่อไป
ตัวอย่างการโปรแกรม

ผลลัพธ์ของโปรแกรม
จากตัวอย่างการโปรแกรม เราได้ทำาการ
เขียนโปรแกรม โดยสร้างตัวแปร $i แล้วให้มีคา
่
เท่ากับ 5 หลังจากนัน ตรงนีละที่จะทำางานต่างจาก
้
้
while เราะจะเจอกับคำาสั่ง do เมื่อเจอคำาสั่ง do
โปรแกรมจะทำาเลยทันที (do แปลว่าทำานี่นา) ซึ่งก็
่
คือแสดงผลค่าตัวแปร i คือ แสดงเลข 5 ออกมา
และขึ้นบรรทัดใหม่ แล้วเมื่อเจอคำาสั่ง $i-- มีความ
หมายว่าลบค่า $i ไป 1 ดังนันตอนนี้ $i=4 แล้ว
้
จากนันโปรแกรมจะเจอคำาสั่ง while ซึ่งจะ
้
ทำาการเช็คค่าในตัวแปร i คือ หากตัวแปร i มีคา
่
มากกว่าหรือเท่ากับ 1 โปรแกรมจะวนลูปทำาคำาสั่ง
ในลูป do อีกครั้ง การทำางานก็เหมือนคำาสั่ง while
ก็คอเช็คจนเงื่อนไขเป็นเท็จจึงจะหลุดลูปและจบ
ื
คำำ สัง  จะถูกประมวลผลโดยไม่มีเงื่อนไข
่
ใด ๆ ในรอบแรก จำกนันเงื่อ นไขกำรวน
้
ซำ้ำ  จะถูกตรวจสอบค่ำ และคำำสั่ง จะถูกประมวล
ผลซำ้ำอีกทุกครั้งที่ เงื่อ นไขกำรวนซำ้ำ  มีค่ำ
เป็น จริง  และในครั้งแรกที่ เงื่อ นไขกำรวน
ซำ้ำ  มีค่ำเป็น เท็จ  คำำสั่ง do-while จึงจะสิ้นสุด
ลง
 คำำ สัง  ภำยใต้คำำสั่ง do-while อำจเป็นคำำ
่
สั่งอย่ำงง่ำยหรือคำำสังเชิงประกอบ
่
ย่ำ งที่ 4.2.3 โปรแกรมเลขยกกำำ ลัง
1 //Program: Power.c
2
3 #define BASE 2
4 #include <stdio.h>
5 #include <math.h>
6
7 void main(){
8
9 int count = 0, limit;
8
9 printf("Enter an upper limit: ");
10 scanf("%d", &limit);
11 printf("PowertValuen");
11 do
12 printf("%dt%.2fn", count, pow(BASE, count));
11 while (count++ != limit);
13 }
14
15 getch();
16 }
ผลลัพ
ธ์ คือ

Enter an upper limit: 5
Power Value
0 1.00
1 2.00
2 4.00
3 8.00
4 16.00
5 32.00หมำยเหตุ  หมำยถึง ให้กดปุ่ม Enter บน
แป้นพิมพ์
นิพ จน์  (expression)
            นิพจน์ คือ กำรนำำค่ำคงที่ ตัวแปร 

และตัวดำำเนินกำรมำเขียนประกอบกัน 
เพื่อให้ตัวแปรภำษำสำมำรถเข้ำใจและ
คำำนวณหำผลลัพธ์ได้ตำมที่เรำต้องกำร
ตัว อย่ำ งที่  2.6 ถ้ำต้องกำรหำค่ำจำกสูตร  a2+2ab+b2 เมื่อ 
a=2, b=3 เรำจะต้องเขียนสูตรดังกล่ำวให้เป็นนิพจน์ดังนี้
• a*a+2 *a *b+b*b ……………………..…………………………… แบบที่  1
หรือ       pow(a,2) + 2 *a *b + pow(b,2)
……………………………… แบบที่  2
•  สำำหรับฟังก์ชัน  pow(x,y) เป็นฟังก์ชันที่ใช้หำค่ำตัวเลขที่อยู่ใน
รูปเลขยกกำำลัง
โดยที่     x เป็นเลขฐำนซึ่งจะต้องมีค่ำเป็นเลขจำำนวนเต็มบวก
หรือศูนย์ก็ได้
              y เป็นเลขยกกำำลังซึ่งอำจจะเป็นเลขจำำนวนเต็ม
บวกหรือลบก็ได้
ดังนั้น  pow(x,y) หมำยถึง  xy ส่วน pow(a,2) หมำยถึง a2 และ
pow(b,2) หมำยถึง  b2
• ข้อ ควรระวัง   ก่อนที่เรำจะใช้ฟังก์ชัน  pow(x,y) นีจะต้องใช้
้
คำำสั่ง  #include<math.h> อยู่บนส่วนต้นของโปรแกรม  เพือนำำ
่
แฟ้ม  math.h เข้ำมำไว้ในโปรแกรมภำษำ  C ก่อน  มิฉะนั้น
ตัว อย่ำ งที่  2.7 แสดงนิพจน์ตัวอย่ำง  ซึ่งมีอยูหลำย
่
ชนิดตังต่อไปนี้
• 1) a+b*10+(3*c)*8
/* นิพจน์ทำงคณิตศำสตร์*/
2) (m>=n)&&(x<y) /* นิพจน์เชิงตรรกะและนิพจน์
เชิงเปรียบเทียบควำมสัมพันธ์*/
3) !(k==25)
/* นิพจน์เชิงตรรกะและนิพจน์เชิง
เปรียบเทียบควำมสัมพันธ์*/
4) !(p)
/* นิพจน์เชิงตรรกะ*/
5) (i>10)||(j<5)
/* นิพจน์เชิงตรรกะและนิพจน์เชิง
เปรียบเทียบ*/
6) if (y==z)
/* นิพจน์เงื่อนไข*/
•             ตัว อย่ำ งที่  2.8 แสดงกำรหำค่ำผลลัพธ์
จำกนิพจน์ในภำษำ  C
• กำำหนดให้    int x=5, y=8, z=9;

More Related Content

Viewers also liked

Sarajevo (za pocetnike)
Sarajevo (za pocetnike)Sarajevo (za pocetnike)
Sarajevo (za pocetnike)Alen Zukanovic
 
أسرار الطب العربي القديم والحديث
أسرار الطب العربي القديم والحديثأسرار الطب العربي القديم والحديث
أسرار الطب العربي القديم والحديثWael Sharba
 
Programa disciplina-conteudos-us
Programa disciplina-conteudos-usPrograma disciplina-conteudos-us
Programa disciplina-conteudos-usNuno Levy
 
2 distribuicó de la producciió energètica oriol eric
2 distribuicó de la producciió energètica oriol eric2 distribuicó de la producciió energètica oriol eric
2 distribuicó de la producciió energètica oriol ericToni Guirao
 
2012 percubaan sains upsr+tiada skema [terengganu]
2012 percubaan sains upsr+tiada skema  [terengganu]2012 percubaan sains upsr+tiada skema  [terengganu]
2012 percubaan sains upsr+tiada skema [terengganu]share with me
 
flyer-la-boussole-2015V2
flyer-la-boussole-2015V2flyer-la-boussole-2015V2
flyer-la-boussole-2015V2Katia McEvoy
 
01222928 200602050 00015
01222928 200602050 0001501222928 200602050 00015
01222928 200602050 00015Mind Your Head
 
Tysons Comprehensive Plan Amendment: Overview of Third Draft
Tysons Comprehensive Plan Amendment: Overview of Third DraftTysons Comprehensive Plan Amendment: Overview of Third Draft
Tysons Comprehensive Plan Amendment: Overview of Third DraftFairfax County
 
Come Impostare le Relazioni & come Crescere nellera del Web 2.0
Come Impostare le Relazioni & come Crescere nellera del Web 2.0Come Impostare le Relazioni & come Crescere nellera del Web 2.0
Come Impostare le Relazioni & come Crescere nellera del Web 2.0Pierluca Santoro
 
Stanišići etno-selo
Stanišići etno-selo Stanišići etno-selo
Stanišići etno-selo Alen Zukanovic
 
My Favourite Philosophy1
My Favourite Philosophy1My Favourite Philosophy1
My Favourite Philosophy1Guru sankar
 
02 Suplji Zub
02  Suplji Zub02  Suplji Zub
02 Suplji ZubDino dino
 
Acampamento de Verao
Acampamento de VeraoAcampamento de Verao
Acampamento de Veraogeniovr
 
THE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯ
THE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯTHE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯ
THE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯRELand.,Ltd
 
Logo poster Reformatted
Logo poster ReformattedLogo poster Reformatted
Logo poster ReformattedJim Murtha
 

Viewers also liked (20)

O Sol
O SolO Sol
O Sol
 
Sarajevo (za pocetnike)
Sarajevo (za pocetnike)Sarajevo (za pocetnike)
Sarajevo (za pocetnike)
 
Ano Novo!
Ano Novo!Ano Novo!
Ano Novo!
 
أسرار الطب العربي القديم والحديث
أسرار الطب العربي القديم والحديثأسرار الطب العربي القديم والحديث
أسرار الطب العربي القديم والحديث
 
Programa disciplina-conteudos-us
Programa disciplina-conteudos-usPrograma disciplina-conteudos-us
Programa disciplina-conteudos-us
 
Bom Dia Shrek
Bom Dia ShrekBom Dia Shrek
Bom Dia Shrek
 
2 distribuicó de la producciió energètica oriol eric
2 distribuicó de la producciió energètica oriol eric2 distribuicó de la producciió energètica oriol eric
2 distribuicó de la producciió energètica oriol eric
 
2012 percubaan sains upsr+tiada skema [terengganu]
2012 percubaan sains upsr+tiada skema  [terengganu]2012 percubaan sains upsr+tiada skema  [terengganu]
2012 percubaan sains upsr+tiada skema [terengganu]
 
flyer-la-boussole-2015V2
flyer-la-boussole-2015V2flyer-la-boussole-2015V2
flyer-la-boussole-2015V2
 
01222928 200602050 00015
01222928 200602050 0001501222928 200602050 00015
01222928 200602050 00015
 
Tysons Comprehensive Plan Amendment: Overview of Third Draft
Tysons Comprehensive Plan Amendment: Overview of Third DraftTysons Comprehensive Plan Amendment: Overview of Third Draft
Tysons Comprehensive Plan Amendment: Overview of Third Draft
 
Come Impostare le Relazioni & come Crescere nellera del Web 2.0
Come Impostare le Relazioni & come Crescere nellera del Web 2.0Come Impostare le Relazioni & come Crescere nellera del Web 2.0
Come Impostare le Relazioni & come Crescere nellera del Web 2.0
 
Fotos.
Fotos.Fotos.
Fotos.
 
Stanišići etno-selo
Stanišići etno-selo Stanišići etno-selo
Stanišići etno-selo
 
My Favourite Philosophy1
My Favourite Philosophy1My Favourite Philosophy1
My Favourite Philosophy1
 
02 Suplji Zub
02  Suplji Zub02  Suplji Zub
02 Suplji Zub
 
Acampamento de Verao
Acampamento de VeraoAcampamento de Verao
Acampamento de Verao
 
THE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯ
THE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯTHE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯ
THE SUN CITY TAM PHÚ - ĐIỂM SÁNG AN CƯ
 
Mueck
MueckMueck
Mueck
 
Logo poster Reformatted
Logo poster ReformattedLogo poster Reformatted
Logo poster Reformatted
 

Similar to การเขียนคำสั่งแบบวนซ้ำ ppt

การเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำการเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำToey Sunisa
 
คำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรมคำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรมJK133
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมkorn27122540
 

Similar to การเขียนคำสั่งแบบวนซ้ำ ppt (6)

4 การเขียนคำสั่งแบบวนซ้ำ
4 การเขียนคำสั่งแบบวนซ้ำ 4 การเขียนคำสั่งแบบวนซ้ำ
4 การเขียนคำสั่งแบบวนซ้ำ
 
การเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำการเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำ
 
กลุ่ม 4
กลุ่ม 4กลุ่ม 4
กลุ่ม 4
 
คำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรมคำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรม
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรม
 
บทที่4
บทที่4บทที่4
บทที่4
 

การเขียนคำสั่งแบบวนซ้ำ ppt

  • 2. โปรแกรมแบบวนซำ้า คำา สั่ง ควบคุม การทำา งาน แบบ for คำาสัง For เป็นคำาสั่งควบคุมการทำางานและ ่ กำาหนดการทำางานวนรอบคล้าย ๆ กับคำาสั่ง while จะมีรูปแบบแตกต่างกับคำาสังควบคุมการทำางานอื่น ่ ๆ คำาสัง for เป็นเป็นคำาสั่งสั่งควบคุมการทำางาน ่ และกำาหนดการทำางานวนรอบ โดยตั้งค่าก่อน แล้ว จึงทำาการพิจารณาเงื่อนไข ถ้าเงื่อนไขเป็นจริง ก็
  • 3. รูปแบบการเขียน คำาสั่ง for for (ค่าเริ่มต้น;เงื่อนไข;การเพิ่มหรือลดค่า) ตัวอย่างการโปรแกรม ผลลัพธ์ของโปรแกรม
  • 4. การเขียนโดยใช้คำาสัง for จะเห็นได้ว่ามีความ ่ กระชับเขียนได้สั้นกว่าคำาสั่ง while เพราะสามารถ กำาหนดได้ในครั้งเดียว แต่การทำางานก็จะได้ผล เหมือนกันกับคำาสั่งwhile ลักษณะการทำางานก็คอโปรแกรมจะทำาการ ื เช็คในส่วนของเงื่อนไข หากเงื่อนไขเป็นจริงก็จะ เพิ่มค่าของตัวแปรไป 1 และทำาคำาสังในลูป จาก ่ นั้นก็ทำาการตรวจสอบเงื่อนไขอีก หากเงื่อนไขเป็น จริงก็จะทำางานซำ้า ๆ แบบนีไปเรื่อย ๆ จนกว่า ้ เงื่อนไขเป็นเท็จ การทำางานของโปรแกรมก็จะ หลุดจากลูป และจบการทำางาน
  • 5.
  • 6. การกำาหนดค่าเริ่มต้นของตัวนับ เงื่อนไขการวน ซำ้า และ การเปลียนแปลงค่าตัวนับ เป็นนิพจน์ทมี ่ ี่ การทำางานร่วมกันในคำาสั่ง for ดังนี้ การกำาหนดค่าเริ่มต้นของตัวนับ เป็นนิพจน์ที่ใช้ สำาหรับกำาหนดค่าเริ่มต้น ให้กบตัวแปรทีทำาหน้าที่ ั ่ ควบคุมการวนซำ้า และจะประมวลผลเพียงครั้งเดียว •เงื่อนไขการวนซำ้า เป็นนิพจน์ทใช้สำาหรับประเมินค่า ี่ คำาสั่ง จะถูกประมวลผลหรือไม่ นั่นคือถ้า เงื่อนไขการ วนซำ้า มีค่าจริง คำาสั่ง จะถูกประมวลผล และถ้า เงื่อนไขการวนซำ้า มีค่าเท็จ คำาสั่ง for จะสิ้นสุดลง •การเปลี่ยนแปลงค่าตัวนับ เป็นนิพจน์ทจะถูก ี่ ประมวลผลทุกครั้งหลังจาก คำาสั่ง ถูกประมวลผล โดย การเปลียนแปลงค่าตัวนับ เป็นนิพจน์ใด ๆ ทีสามารถ ่ ่ ประเมินค่าได้ เช่น นิพจน์เพิ่มค่า นิพจน์ลดค่า และ นิพจน์กำาหนดค่า เป็นต้น
  • 7. ตัวอย่างที่ 4.2.1 โปรแกรมแสดงตัวเลข 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //Program: Counting.c #include <stdio.h> void main() { int x, y; printf("Count increasen"); for(x=1; x<=5; x++) printf("%dn", x); printf("Count decreasen"); for(y=5; y<=1; y--) printf("%dn", y); getch(); }
  • 9. คำำ สั่ง ควบคุม กำรทำำ งำน แบบ While คำำสัง While เป็นคำำสั่งสำำหรับใช้ควบคุม ่ กำรทำำงำนแบบมีเงือนไข อีกแบบหนึ่ง ซึ่งแตกต่ำง ออกไปจำกกำรใช้งำนคำำสั่ง if และ elseif ก่อน หน้ำนี้ ซึ่งคำำสั่ง While เป็นคำำสั่งที่จำำเป็นใน กำรนำำไปใช้เขียนโปรแกรม คำำสัง While เป็นคำำสั่งสำำหรับใช้ควบคุมกำร ่ ทำำงำนแบบมีเงือนไข ในกำรกำำหนดคำำสั่งให้มี กำรทำำงำนแบบวนรอบ โดยพิจำรณำเงื่อนไขก่อน หำกค่ำที่ได้เป็นจริงตำมเงื่อนไข จึงจะประมวลผล ตำมคำำสั่งที่กำำหนดไว้
  • 11. กำรเขียนโดยใช้คำำสั่ง for จะเห็นได้ว่ำมี ควำมกระชับเขียนได้สั้นกว่ำคำำสั่ง while เพรำะ สำมำรถกำำหนดได้ในครั้งเดียว แต่กำรทำำงำนก็จะ ได้ผลเหมือนกันกับคำำสั่ง while ลักษณะกำรทำำงำนก็คือโปรแกรมจะทำำกำร เช็คในส่วนของเงื่อนไข หำกเงื่อนไขเป็นจริงก็จะ เพิ่มค่ำของตัวแปรไป 1 และทำำคำำสังในลูป จำก ่ นั้นก็ทำำกำรตรวจสอบเงื่อนไขอีก หำกเงื่อนไขเป็น จริงก็จะทำำงำนซำ้ำ ๆ แบบนีไปเรื่อย ๆ จนกว่ำ ้ เงื่อนไขเป็นเท็จ กำรทำำงำนของโปรแกรมก็จะ หลุดจำกลูป และจบกำรทำำงำน
  • 12.
  • 13. เงื่อนไขกำรวนซำ้ำ เป็นนิพจน์ใดๆ ทีสำมำรถประเมิน ่ ค่ำได้ โดยจะต้องเขียนไว้ระหว่ำงเครื่องหมำย ( และ ) เสมอเช่นเดียวกับคำำสั่ง if และคำำสัง if – else ่ เมือเริ่มต้นประมวลผลคำำสั่ง while เงื่อนไขกำรวนซำ้ำ ่ จะถูกตรวจสอบค่ำ ถ้ำพบว่ำ เงื่อนไขกำรวนซำ้ำ มีค่ำเป็น จริง คำำสั่ง ภำยใต้คำำสัง while จะถูกตรวจสอบค่ำเป็นรอบ ่ แรก แล้ว เงื่อนไขกำรวนซำ้ำ จะถูกตรวจสอบค่ำอีกครั้ง หำกพบว่ำ เงื่อนไขกำรวนซำ้ำ ยังมีค่ำเป็น จริง คำำสัง จะ ่ ถูกตรวจสอบค่ำอีกครั้ง จนกระทัง เงื่อนไขกำรวนซำ้ำ มีค่ำ ่ เป็น เท็จ คำำสั่ง while จึงจะสิ้นสุดลง กำรตรวจสอบค่ำ เงื่อนไขกำรวนซำ้ำ ของคำำสั่ง while ในครั้งแรก และพบว่ำมีค่ำเป็น เท็จ คำำสั่ง จะไม่ ประมวลผลเลย
  • 14. ตัวอย่ำงที่ 4.2.2 โปรแกรมรับและแสดงค่ำ ข้อมูล1 1 //Program: InOut1.c 2 3 #include <stdio.h> 4 5 void main(){ 6 7 int iochar; 8 9 iochar = getchar(); 10 while(iochar != EOF){ 11 putchar(iochar); 12 iochar = getchar(); 13 } 14 15 getch(); 16 }
  • 16. หมายเหตุ • หมายถึง ให้กดปุ่ม Enter บนแป้นพิมพ์ • ^z หมายถึง ให้กดปุ่ม Ctrl - z บนแป้นพิมพ์ • โปรแกรม InOut1.c แสดงการใช้คำาสั่งของภาษาซี 2 คำา สั่ง getchar() และ putchar() เพื่อใช้รับข้อมูลนำาเข้าและแสดง ผลลัพธ์แทนการใช้คำาสั่ง scanf() และ printf() • คำาสั่ง getchar() เป็นคำาสั่งไม่มีอาร์กิวเมนต์ และจะรับ อักขระ 1 ตัวจากแผงแป้นอักขระแล้ว ส่งกลับค่าจำานวนเต็มทีมี ่ ค่าในตารางรหัสแอสกีที่ตรงกับอักขระดังกล่าว • ฟังก์ชัน putchar() มีอาร์กิวเมนต์ 1 ตัวเป็นชนิด int และ แสดงอักขระในตารางรหัสแอสกีทมีค่าตรงกับจำานวนเต็มดัง ี่ กล่าวจอภาพ • สำาหรับ EOF เป็นค่าคงที่ที่นิยามอยู่ในแฟ้มส่วนหัวชื่อ stdio.h และใช้เป็นอักขระสำาหรับตรวจสอบการสิ้นสุดการ ป้องกันข้อมูลซึ่งในที่นี้ คือการป้องกัน Ctrl - z
  • 17. • จากโปรแกรม InOut1.c ตราบใดทีอักขระผู้ใช้ป้อน ่ ไม่ใช้อักขระสินสุดการป้อนข้อมูลเงื่อนไข การวนซำ้า ้ iochar != EOF จะยังมีค่าเป็นจริง และแสดงผลค่าอักขระ นันออกทางจอภาพก่อนทีจะวนรับอักขระตัวถัดไป และ ้ ่ ในรอบทีผู้ใช้ป้อน Ctrl - z เงื่อนไขการวนซำ้า iochar != ่ EOF จะมีค่าเป็นเท็จ และคำาสั่ง while จะสิ้นสุดการ ทำางาน • ในกรณีทผู้ใช้ป้อน Ctrl-z ในครั้งแรก เงื่อนไขการ ี่ วนซำ้า iochar != EOF จะมีค่าเป็นเท็จและคำาสัง while จะ ่ สิ้นสุดการทำางานในทันที โดยทีคำาสั่งในบรรทัดที่ 11 ่ และ 12 ไม่ถกประมวลผลเลย ู
  • 18. คำา สั่ง ควบคุม การทำา งาน แบบ Do...While คำาสังนีมีลักษณะการทำางานคล้ายกับคำาสัง ่ ้ ่ While แต่มีส่วนแตกต่างอยู่เล็ก ๆ น้อย ๆ ที่มี Do เพิ่มเข้ามา แล้ว Do จะทำาให้แตกต่างจาก While เดี่ยว ๆ คำาสัง do while เป็นคำาสั่งที่กำาหนดให้มีการ ่ ทำางานวนรอบ คล้าย ๆ คำาสั่ง While แต่แตกต่าง กันที่คำาสั่ง do while จะให้ทำาคำาสั่งในลูป do ก่อน แล้วค่อยพิจารณาเงื่อนไขใน while ถ้าค่าเงื่อนไข ใน while เป็นจริง จึงจะวนรอบทำาคำาสั่งในลูป do ต่อไป
  • 20. จากตัวอย่างการโปรแกรม เราได้ทำาการ เขียนโปรแกรม โดยสร้างตัวแปร $i แล้วให้มีคา ่ เท่ากับ 5 หลังจากนัน ตรงนีละที่จะทำางานต่างจาก ้ ้ while เราะจะเจอกับคำาสั่ง do เมื่อเจอคำาสั่ง do โปรแกรมจะทำาเลยทันที (do แปลว่าทำานี่นา) ซึ่งก็ ่ คือแสดงผลค่าตัวแปร i คือ แสดงเลข 5 ออกมา และขึ้นบรรทัดใหม่ แล้วเมื่อเจอคำาสั่ง $i-- มีความ หมายว่าลบค่า $i ไป 1 ดังนันตอนนี้ $i=4 แล้ว ้ จากนันโปรแกรมจะเจอคำาสั่ง while ซึ่งจะ ้ ทำาการเช็คค่าในตัวแปร i คือ หากตัวแปร i มีคา ่ มากกว่าหรือเท่ากับ 1 โปรแกรมจะวนลูปทำาคำาสั่ง ในลูป do อีกครั้ง การทำางานก็เหมือนคำาสั่ง while ก็คอเช็คจนเงื่อนไขเป็นเท็จจึงจะหลุดลูปและจบ ื
  • 21.
  • 22. คำำ สัง  จะถูกประมวลผลโดยไม่มีเงื่อนไข ่ ใด ๆ ในรอบแรก จำกนันเงื่อ นไขกำรวน ้ ซำ้ำ  จะถูกตรวจสอบค่ำ และคำำสั่ง จะถูกประมวล ผลซำ้ำอีกทุกครั้งที่ เงื่อ นไขกำรวนซำ้ำ  มีค่ำ เป็น จริง  และในครั้งแรกที่ เงื่อ นไขกำรวน ซำ้ำ  มีค่ำเป็น เท็จ  คำำสั่ง do-while จึงจะสิ้นสุด ลง  คำำ สัง  ภำยใต้คำำสั่ง do-while อำจเป็นคำำ ่ สั่งอย่ำงง่ำยหรือคำำสังเชิงประกอบ ่
  • 23. ย่ำ งที่ 4.2.3 โปรแกรมเลขยกกำำ ลัง 1 //Program: Power.c 2 3 #define BASE 2 4 #include <stdio.h> 5 #include <math.h> 6 7 void main(){ 8 9 int count = 0, limit; 8 9 printf("Enter an upper limit: "); 10 scanf("%d", &limit); 11 printf("PowertValuen"); 11 do 12 printf("%dt%.2fn", count, pow(BASE, count)); 11 while (count++ != limit); 13 } 14 15 getch(); 16 }
  • 24. ผลลัพ ธ์ คือ Enter an upper limit: 5 Power Value 0 1.00 1 2.00 2 4.00 3 8.00 4 16.00 5 32.00หมำยเหตุ  หมำยถึง ให้กดปุ่ม Enter บน แป้นพิมพ์
  • 25. นิพ จน์  (expression)             นิพจน์ คือ กำรนำำค่ำคงที่ ตัวแปร  และตัวดำำเนินกำรมำเขียนประกอบกัน  เพื่อให้ตัวแปรภำษำสำมำรถเข้ำใจและ คำำนวณหำผลลัพธ์ได้ตำมที่เรำต้องกำร
  • 26. ตัว อย่ำ งที่  2.6 ถ้ำต้องกำรหำค่ำจำกสูตร  a2+2ab+b2 เมื่อ  a=2, b=3 เรำจะต้องเขียนสูตรดังกล่ำวให้เป็นนิพจน์ดังนี้ • a*a+2 *a *b+b*b ……………………..…………………………… แบบที่  1 หรือ       pow(a,2) + 2 *a *b + pow(b,2) ……………………………… แบบที่  2 •  สำำหรับฟังก์ชัน  pow(x,y) เป็นฟังก์ชันที่ใช้หำค่ำตัวเลขที่อยู่ใน รูปเลขยกกำำลัง โดยที่     x เป็นเลขฐำนซึ่งจะต้องมีค่ำเป็นเลขจำำนวนเต็มบวก หรือศูนย์ก็ได้               y เป็นเลขยกกำำลังซึ่งอำจจะเป็นเลขจำำนวนเต็ม บวกหรือลบก็ได้ ดังนั้น  pow(x,y) หมำยถึง  xy ส่วน pow(a,2) หมำยถึง a2 และ pow(b,2) หมำยถึง  b2 • ข้อ ควรระวัง   ก่อนที่เรำจะใช้ฟังก์ชัน  pow(x,y) นีจะต้องใช้ ้ คำำสั่ง  #include<math.h> อยู่บนส่วนต้นของโปรแกรม  เพือนำำ ่ แฟ้ม  math.h เข้ำมำไว้ในโปรแกรมภำษำ  C ก่อน  มิฉะนั้น
  • 27. ตัว อย่ำ งที่  2.7 แสดงนิพจน์ตัวอย่ำง  ซึ่งมีอยูหลำย ่ ชนิดตังต่อไปนี้ • 1) a+b*10+(3*c)*8 /* นิพจน์ทำงคณิตศำสตร์*/ 2) (m>=n)&&(x<y) /* นิพจน์เชิงตรรกะและนิพจน์ เชิงเปรียบเทียบควำมสัมพันธ์*/ 3) !(k==25) /* นิพจน์เชิงตรรกะและนิพจน์เชิง เปรียบเทียบควำมสัมพันธ์*/ 4) !(p) /* นิพจน์เชิงตรรกะ*/ 5) (i>10)||(j<5) /* นิพจน์เชิงตรรกะและนิพจน์เชิง เปรียบเทียบ*/ 6) if (y==z) /* นิพจน์เงื่อนไข*/ •             ตัว อย่ำ งที่  2.8 แสดงกำรหำค่ำผลลัพธ์ จำกนิพจน์ในภำษำ  C • กำำหนดให้    int x=5, y=8, z=9;