ETE183 บทที่ 6ete.tido.tech/ete-programming/student/tutorials/ETE183... · 2017. 8....
Transcript of ETE183 บทที่ 6ete.tido.tech/ete-programming/student/tutorials/ETE183... · 2017. 8....
ETE183การเขยนโปรแกรมคอมพวเตอรสำหรบ
วศวกรรมไฟฟา
ผศ.ดร.วชราพรรณ แกวประพนธอ.ชนกชนม สงวรโยธน
บทท 6 การทำซำ
บทท 6
1. ทบทวนการใช if - else
2. กระบวนการการทำซำ
3. การใช for
4. การใช do - while
5. การใช while
ทบทวนIf - else
1. วธการตโจทย
2. วธการเขยน OutputInputProcessVariable
3. วธเขยนประโยคเง7อนไขเพ7อใชกบ ifและelseif
4. วธการใช else5. วธการเปรยบเทยบคากบเสนจานวน
6. วธการเปรยบเทยบคากบตวอกษร
7. วธการเปรยบเทยบคากบขอความ
การทาซ Hา หมายถง การส7งใหโปรแกรมทางานอยางใดอยางหน7งวนไปวนมา จนกระท7งครบตามจานวนท7ตองการหรอตรงตามเง7อนไขทเรากาหนดเอาไว
การทาซ Hาเกดข Hนบอยๆ ในชวตประจาวน เชน การวนรบรหสผาน จนกวาจะใสรหสผานถกตอง หรอไมเกน 3 คร Hง, การวนรบรหสบตรเตมเงนของบรการโทรศพท ไมเกน 3 คร Hง จนกวาจะใสรหสบตรเตมเงนถกตอง เปนตน
การทำซำ
การทำซำ
แบบมจำนวนรอบทแนนอน เชน ตองการใหพมพตวอกษร a จำนวน 1000 ครงขนบนหนาจอ แบบนจะใช คำสง for
แบบใชเงอนไขเปนตวตดสนใจวาจะทำซำตอไปหรอไม ตองการใหโปรแกรมทำไปเรอยๆ ในขณะทเงอนไขยงเปนจรง อย เชน ใหรบรหสผานไปเรอยๆ จนกวาจะใสถก ซงจะไมมจำนวนรอบทแนนอนตายตว
ลกษณะนจะม 2 คำสงคอdo..while และ while
หวใจสำคญของ
การวนรอบ
อะไรเปนตวกำหนดรอบ(เงอนไขในการวนรอบ)
อะไรเปนตวนบรอบ
อะไรเปนตวแทนการนบรอบนนๆ
For การทำซำดวยวธการนบรอบ
ใชในกรณท7เราตองการทาซ Hาโดยทราบจานวนคร Hงท7แนนอน เชน 20 คร Hง 30 คร Hง
การใชงานจะกาหนดลงไปเลยวาตองการใหทากคร Hง และจะตองสรางตวแปร ข Hนมาเปนตวนบ (counter)โดยมากจะกาหนดใหเปนตวแปรแบบจานวนเตม (integer)
ตวนบจะเปนตวคอยบอกวาครบตามจานวนทตองการรยง ถายงไมครบกจะวนไปเร7อยๆ จนกวาจะครบ
for
for(คาเร7มตนของตวนบ ;
เปรยบเทยบตวนบวายงอยในชวงน Hหรอไม ;
จานวนนบเพ7มทละเทาไร หรอลดทละเทาไร){
คาส7งท7ตองการใหทา
}
ForForm
for(คาเร7มตนของตวนบ ;
เปรยบเทยบตวนบวายงอยในชวงน Hหรอไม ;
จานวนนบเพ7มทละเทาไร หรอลดทละเทาไร)
คาเร(มตนของตวนบเชน n=0;
number=-5;a=b;
c=a+b;
For
for(คาเร7มตนของตวนบ ;
เปรยบเทยบตวนบวายงอยในชวงน Hหรอไม ;
จานวนนบเพ7มทละเทาไร หรอลดทละเทาไร)
เปรยบเทยบตวนบวายงอยในชวงน :หรอไมเชน n>=0;
number<=-5;a>b;
c<123;
For
for(คาเร7มตนของตวนบ ;
เปรยบเทยบตวนบวายงอยในชวงน Hหรอไม ;
จานวนนบเพ7มทละเทาไร หรอลดทละเทาไร)
จานวนนบเพ(มทละเทาไร หรอลดทละเทาไรเชน n++
number--a=a+2
c+=5
For
การเขยนประโยคเงอนไขของ for
ถาหากตองการวน ตงแต 0 ถง 5 รวมทงสน 6 ครง
ไดแก 0 1 2 3 4 และ 5
เปนการเพมจำนวนขนเรอยๆจาก 0 ไป 5
สมมตใหตวนบรอบเปนตวแปร i
for(i=0 ; i<=5 ; i++)
ForForm
for(i=0 ; i<=5 ; i++)รอบท 1 i จะมคาเปน 0
รอบท 2 i จะมคาเปน 1
รอบท 3 i จะมคาเปน 2
รอบท 4 i จะมคาเปน 3
รอบท 5 i จะมคาเปน 4
รอบท 6 i จะมคาเปน 5
แลวออกจากรอบการทำงาน
ForForm
การเขยนประโยคเงอนไขของ for
ถาหากตองการวน ตงแต -3 ถง 3 รวมทงสน 7 ครง
ไดแก -3 -2 -1 0 1 2 และ 3
เปนการเพมจำนวนขนเรอยๆจาก -3 ไป 3
สมมตใหตวนบรอบเปนตวแปร j
for(j=-3 ; j<=3 ; j++)
ForForm
for(j=-3 ; j<=3 ; j++)รอบท 1 j จะมคาเปน -3
รอบท 2 j จะมคาเปน -2
รอบท 3 j จะมคาเปน -1
รอบท 4 j จะมคาเปน 0
รอบท 5 j จะมคาเปน 1
รอบท 6 j จะมคาเปน 2
รอบท 7 j จะมคาเปน 3
แลวออกจากรอบการทำงาน
ForForm
ตวอยางการใช forแสดงเลข 1ถง 10#include<stdio.h>main(){
int number;printf(“Start\n”);
for(number=1;number<11;number++){
printf(“%d\n”,number);}printf(“Stop\n”);
}
เรมตนให number=0
ทำในขณะท number<11
เพมคา number ทละ 1number = number+1
ผลรนโปรแกรมStart12345678910Stop
จะสงเกตวา โปรแกรมจะแสดงคาของตวแปร number โดยใหคาของ number เรมตนท 1 แลววนรอบไปเรอยๆ จนถง 10
ตวอยางการใช for แสดง hello 10 ครง#include<stdio.h>main(){
int count;printf(“Begin\n”);
for(count=0;count<10;count++){
printf(“Hello\n”);}printf(“End\n”);
}
เรมตนให count=0
ทำในขณะท count<10
เพมคา count ทละ 1count=count+1
ผลรนโปรแกรมBeginHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloEnd
คำวา Hello จะถกแสดงทงหมด 10 ครง โดยทตวแปร count คอตวแปรทใชเปนตวนบ เราใหคาเรมตนเปน 1 และจะเพมคาขนทละ 1 ไปเรอยๆ ในขณะทตวแปร count ยงนอยกวา 10 แตถาตวแปร count เทากบ 10 เมอไร เงอนไขจะเปนเทจ โปรแกรมกจะหลดออกจากคำสง for ทนท
โปรแกรม แสดงสตรคณแม 6#include<stdio.h>main(){
int mother=6;int count;printf(“Begin\n”);for(count=1;count<=12;count++){
printf(“%dx%d=%d\n”,mother,count,mother *count);}printf(“End\n”);
}
การทำงานของ For
ไมจำเปนตองนบไปขางหนา (+) เสมอ
สามารถนบถอยหลงกได เชน
for(count=12;count>=1;count--)
For
dowhile
การทำซำดวยวธการตรวจสอบเงอนไขหยดทำซำกตอเมอเงอนไขผดแบบทำกอนตรวจ
คำสง while และ do..while จะตางจากคำสง for เลกนอยตรงทการทำซำแบบน ไมจำเปนตองบอกถงจำนวนรอบของการทำซำ แตละทำซำไปเรอยๆ จนกวาเงอนไขจะเปนเทจ
do-while
do{
คาส7งหรอกลมคาส7งท7ตองการใหทาซา
}
while(ประโยคเง7อนไข);
do-whileจะไมเชคเง(อนไขในคร:งแรกกอนทา
do-whileForm
ตวอยางการใช do-while#include<stdio.h>main(){
charout=‘’;do{
printf(“\nDoyouwhattoexit?[Y]es or[N]o:”);scanf(“%c”,&out);
}while(out!=‘y’);
}
กอนเขาสการตรวจสอบเงอนไข(out!=‘y’) ครงแรกนนจะมการทำคำสงใน {} กอน ดงนน do..while จงทำคำสงภายใน {} อยางนอย 1 ครงเสมอ และถาตรวจสอบแลวเงอนไขยงจรงอยกจะวนมาทำคำสงภายใน {} อกครง
while
การทำซำดวยวธการตรวจสอบเงอนไขหยดทำซำกตอเมอเงอนไขผดแบบตรวจกอนทำ
while(ประโยคเง7อนไข){
คาส7งหรอกลมคาส7งท7ตองการใหทาซา
}
whileจะเชคเง(อนไขในคร:งแรกกอนทา
whileForm
ตวอยางการใช while
#include<stdio.h>main(){
int count=1;
while(count<=10){
printf(“Hello%d\n”,count);
count++;}
}
จากตวอยางเรากำหนดให count มคา เปน 1 จากนนใชคำสง while ตรวจดคาของ count วายงนอยกวาหรอเทากบ 10 หรอไม ถาใชกยงทำคำสงภายใน{} ตอไป และเพมคา count ทละ 1 ไปเรอยๆ จนกวาคา count จะมากกวา 10 ทำใหเงอนไขเปนเทจกจะหลดจากลป while
-
ลองทำโจทย
1. จงเขยนโปรแกรมแสดงสตรคณแม 2โดยใช do-while
2. จงเขยนโปรแกรมแสดงสตรคณแม 2โดยใช while
3. จงเขยนโปรแกรมแสดงสตรคณแม 2โดยใช for
ยกตวอยางจากโจทย “ลกนง”
•ท Hงหมดท7กระทาเราทาท Hงหมดก7รอบ ?•คาส7งน H ผลกระทาเหมอนกบคาส7งท7แลวหรอไม•คาส7งน H แตกตางจากคาส7งท7แลวอยางไร•ส7งท7เราตองจดจา คออะไร ?•เรารไดอยางไร วาเราทาครบ 3คร Hงแลว ?
ลองเขยน Flowchart ด
แบบท% 1
int num;for(num=1;num<=3;num++){ลก;น:ง;น:งพ=น;น:ง;
}
แบบท% 2
int num=1;while(num<=3){ลก;น:ง;น:งพ=น;น:ง;num++;
}
•เราทาไปท Hงหมดก7รอบ ?•อะไรเปนตวกาหนดรอบ ?•เง7อนไขท7ใชในการกาหนด คออะไร ?
-
do{ ลกน:ง;
scanf(“เสยงอาจารย”,&คาส:ง);}while(คาส:ง!=“หยด”);
ลองเขยน Flowchart ด
•อะไรคอเง7อนไขท7ทาใหเราลกน7งตามจานวนทกาหนด
•เรารไดอยางไร วาเราทาครบ 5คร Hงแลว ?•เราจะหยดลกน7งตอเม7ออะไร ?
-
int nub;for(nub=1; nub<6; nub=nub+1){ลกน:ง;
}
ลองเขยน Flowchart ด
•คาส7งน H ผลกระทาเหมอนกบคาส7งท7แลวหรอไม
•คาส7งน H แตกตางจากคาส7งท7แลวอยางไร
•ส7งท7เราตองจดจาในทกๆรอบ คออะไร ?
แบบท% 1int count = 0;do{ลกน:ง;count = count + 1;
}while( count != 5 );
แบบท% 2int count = 0;while(count != 5){ลกน:ง;count = count + 1;
}
• คาส7งน H มกระบวนการอะไรบาง
• อะไรคอ Memory จดจา
• อะไรคอ Input รบขอมล
• อะไรคอ Process ประมวลผล
• อะไรคอ Output แสดงผล
-
ลองเขยนโปรแกรมดเอง
การหาคาเลขค เลขคเราใชการหารเอาเศษกบ 2อะไรทหาร 2 แลวไดเศษ 0แสดงวาเปนเลขค
เชนAns = A % 2;if(Ans == 0)
-
Research
คนหา1.ความแตกตางระหวาง
การใช do-while และ while2.วธการเพมคาขนเรอยๆจากการวนโดยเพมขนรอบละ 1 (x+=1)ปล.ใชตอบคำถามใน Quiz
ExtraResearch
กลบไปลองหาและทำโจทยทใช if-else รวมกบการวนรอบใน
do-while หรอ forปล.ใชตอบคำถามใน Quiz
-
QuizQuiz บทท 6 และ 7กอนเขาเรยนครงตอไป
-
การบานLecture
Learning Report+
Hour of CodeMinecraft AngryBird Frozen