Upload
-
View
1.902
Download
2
Embed Size (px)
Citation preview
การเขยนโปรแกรมทำาซำา(Loop, Iteration, Repetition)
การเขยนโปรแกรมทำาซำา (Loop, Iteration, Repetition) คอ
การเขยนโปรแกรมทำาคำาสงเดมซำาเกนกวา 1 ครง
โดยจำานวนครงของการทำางานจะเปนไปตามเงอนไขทกำาหนดไว
สงทตองทราบเมอเขยนโปรแกรมทำาซำา คำาสงอะไรบางทตองการใหทำาซำา เงอนไขในการตรวจสอบเพอทำาซำา คออะไร
การสรางเงอนไขในการตรวจสอบ ทำาได 2 วธคอ สรางเงอนไขโดยการเปรยบเทยบ สรางเงอนไขโดยการหาคาลอจก
สรางเงอนไขโดยการเปรยบเทยบ คอเอาคาทอยทางดานซายมอของเครองหมายเปรยบเทยบกบคาทอยทางขวา
มอของเครองหมาย วาเปนจรงหรอเทจ เชน i < 3
ดงนน ถา i มคา 0, 1, 2 ผลลพธทไดหลง เปรยบเทยบคอ จรง
แตถา i มคา 3, 4, 5 ผลลพธทไดหลง เปรยบเทยบคอ เทจ
สรางเงอนไขโดยการเปรยบเทยบ (ตอ) เครองหมายทใชในการเปรยบเทยบไดแก
> มากกวา < นอยกวา == เทากบ != ไมเทากบ >= มากกวาเทากบ <= นอยกวาเทากบ
การหาคาลอจก คอ การหาคาจรง หรอ เทจ จากโอเปอเรเตอร
ชนดลอจก เครองหมายลอจคอลโอเปอเรเตอร คอ
&& และ AND || หรอ OR ! ไม NOT
การหาคาลอจก (ตอ) ตวอยางการหาคาความจรง
เทจเทจจรงเทจเทจจรงเทจเทจจรงเทจจรงเทจจรงเทจจรงจรงจรงเทจจรงจรง
A || B
A && B
!BBA
คำาสงในการเขยนโปรแกรมทำาซำา ม 3 แบบ คอ
คำาสงลป for คำาสงลป while คำาสงลป do while
คำาสงลป for โครงสรางของคำาสงประกอบดวย
for (int ตวแปร = คาเรมตน; ตวแปร เครองหมายเปรยบเทยบ คาสงสด หรอตำาสด; เพม/ลด คาตวแปร){
คำาสงทตองการทำาซำา;}
>, <, ==, <=, >=, !=
for (int i=0; i<5; i++)
“I love C++”;
จรง
เทจ
ตวอยางการเขยน Flowchart ตองการพมพขอความ I love C++ จำานวน
5 ครง
• กำำหนดคำเรมตนคอ int i = 0;
• ตรวจสอบเงอนไข คอ i<5; หมำยควำมวำถำ i มคำนอยกวำ ใหวนลปทำำคำำสงดำนใน ถำเทจให ออกจำกลป
• หลงจำกทำำคำำสงเสรจแลวให i++ เพมคำ i ขน 1 คำ
แบบฝกหด: ใหนกศกษาเขยน Flowchart เพอทำางานตอไปน ตองการพมพเครองหมาย * จำานวน 10 ครง ตองการทำาคำาสง result = result + 1;
จำานวน 100 ครง
for (int i=0; i<10; i++)
“*”;
จรง
เทจ
เฉลยการเขยน Flowchart ตองการพมพเครองหมาย * จำานวน 10
ครง
• กำำหนดคำเรมตนคอ int i = 0;
• ตรวจสอบเงอนไข คอ i<10; หมำยควำมวำถำ i มคำนอยกวำ ใหวนลปทำำคำำสงดำนใน ถำเทจให ออกจำกลป
• หลงจำกทำำคำำสงเสรจแลวให i++ เพมคำ i ขน 1 คำ
for (int i=0; i<100; i++)
จรง
เทจ
ตวอยางการเขยน Flowchart ตองการทำาคำาสง result = result + 1; จำานวน
100 ครง
• กำำหนดคำเรมตนคอ int i = 0;
• ตรวจสอบเงอนไข คอ i<100; หมำยควำมวำถำ i มคำนอยกวำ ใหวนลปทำำคำำสงดำนใน ถำเทจให ออกจำกลป
• หลงจำกทำำคำำสงเสรจแลวให i++ เพมคำ i ขน 1 คำ
result = result +1;
ตวอยางการเขยนคำาสง ลป for
โจทย: ตองการพมพเครองหมายใดๆ ออกทางจอภาพ?โดยมเงอนไขคอ2.ผใชสามารถกำาหนดเครองหมายทตองการพมพ
3.ผใชสามารถกำาหนดจำานวนทตองการใหพมพได
ปญหาคออะไร ? พมพเครอง
หมายใดๆ ออก ทางจอภาพ
ตามจำานวนทผใชระบ
รปแบบของผลลพธทจะแสดง คออะไร ?ตองการแสดงขอความวา
“The result is”**************************
หมายเหต **** เปนตวอยาง
เครองหมาย ในทนคอ ดาว (เปลยนแปลงตามทผใชระบ)
ขอมลอะไรบาง ทตองใชในการ คำานวณ ?1. เครองหมาย ทผใชกำาหนด
2. จำานวนเครองหมาย ทผใชตองการพมพ
ตวแปรทนำามาใชเกบขอมล ?1.ตวแปรสำาหรบเกบขอมลเขามอะไรบาง(เครองหมาย, จำานวนเครองหมาย)
โดยกำาหนดให เครองหมาย แทนดวยตวแปร symbol เปน
ชนด charจำานวนเครองหมาย แทนดวยตวแปร value
เปนชนด int
หาขนตอนวธการทำางานของโปรแกรม?1. สรางตวแปรสำาหรบเกบขอมลเครองหมาย,
จำานวนเครองหมาย และกำาหนดคาเบองตนใหกบตวแปรทงหมด
2. รบขอมลเครองหมาย และจำานวน จากผใช3. พมพขอความ
“The result is”
หาขนตอนวธการทำางานของโปรแกรม? (ตอ)1. ประมวลผลโดยการสรางลป for เพอทำาการพมพ
เครองหมายตามจำานวนทผใชระบ โดย• สรางตวแปร int i และกำาหนดคาเรมตนเปน 0• เงอนไขคอ i ตองมคานอยกวา value จงจะ
ทำาการพมพเครองหมาย• หลงจากพมพเครองหมายแลว ใหเพมคา i ขน 1
คา
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
Preprocessor
Function
symbol, value
กอนเขยน Preprocessor ลองถามตวเองวา.....1. โปรแกรมทจะเขยนมการรบขอมลและแสดงผลขอมลหรอไม
?
ตอบ ม ตองใส preprocessor วา#include<iostream>
2. โปรแกรมทจะเขยนมการใชงานตวแปรแบบ string หรอไม?
ตอบ ม ตองใส preprocessor วา#include<string>
3. โปรแกรมทจะเขยนมการเรยกใชฟงกชนทางคณตศาสตร หรอไม ?
ตอบ ม ตองใส preprocessor วา#include<math.h>
• สรปตองถามตวเองวา header file อะไรบางทจำาเปนตอง ใช
Preprocessor ทตองใชในโปรแกรมนคอ
#include<iostream.h>
#include<iostream.h> เปน preprocessor ตวเดยวเทานน
เนองจากโปรแกรมนมการรบและแสดงขอมลอยาง เดยว
ไมมการใชตวแปรแบบ string และไมมการใชฟงกชนทางคณตศาสตร
start
การเขยน main function
void main(){
}
}
ขนท 1 เขยน
void main()
{
}
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
การเขยน main function
void main(){
}
ขนท 2 เขยน คำาสงทอยภายในฟงกชน
main start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
char symbol = ‘ ’;
int value = 0;
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการรบขอมลคอคำาสง cin และ เครองหมาย >>
ดงนนจงเขยนไดวา
cin>>symbol>>value; รบคาแรกมาเกบไวในตวแปร symbol
รบคาสองมาเกบไวในตวแปร value
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการแสดงขอมลคอคำาสง cout และเครองหมาย <<
ดงนนจงเขยนไดวา
cout<<“The result is”;
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการสรางลป for เปนดงนfor (int i=0; i<value; i++)
{ cout<<symbol;}
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
ผลลพธสดทาย
การเขยนโปรแกรมดวยคำาสงลป while รปแบบคำาสง คอ
while (เงอนไขเปรยบเทยบ){
คำาสงทตองการใหทำางานซำา;....คำาสงเพมหรอลดคาของตวแปรในการ
เปรยบเทยบ; }
“I love C++”;
จรง
เทจ
ตวอยางการเขยน Flowchart ตองการพมพขอความ I love C++ ไมเกน
5
• ตรวจสอบเงอนไขถำ value มคำนอยกวำ 5 ใหพมพขอควำม “I love C++”
• แลวเพมคำ value ขน 1 คำ
* วนลปจนกวำ value จะเทำกบ หรอมำกกวำ 5 จะหลดจำกลป
value < 5;
value++;
แบบฝกหด: ใหนกศกษาเขยน Flowchart เพอทำางานตอไปน ตองการพมพเครองหมาย * ไมเกน X ครง ตองการทำาคำาสง result = result + 1; ไม
เกน J ครง
“*”;
จรง
เทจ
เฉลยการเขยน Flowchart ตองการพมพเครองหมาย * ไมเกน x ครง
• ตรวจสอบเงอนไขถำ value มคำนอยกวำ x ใหพมพขอควำม “*”
• แลวเพมคำ value ขน 1 คำ
* วนลปจนกวำ value จะเทำกบ หรอมำกกวำ x จะหลดจำกลป
value < x;
value++;
จรง
เทจ
ตวอยางการเขยน Flowchart ตองการทำาคำาสง result = result + 1; ไมเกน J ครง
• ตรวจสอบเงอนไขถำ value มคำนอยกวำ J คำำนวณ result = result +1;
• แลวเพมคำ value ขน 1 คำ
* วนลปจนกวำ value จะเทำกบ หรอมำกกวำ J จะหลดจำกลป
value < j;
value++;
result = result +1;
โจทย: ตองการพมพเครองหมายใดๆ ออกทางจอภาพ?โดยมเงอนไขคอ2.ผใชสามารถกำาหนดเครองหมายทตองการพมพ
3.ผใชสามารถกำาหนดจำานวนทตองการใหพมพได
ปญหาคออะไร ? พมพเครอง
หมายใดๆ ออก ทางจอภาพ
ตามจำานวนทผใชระบ
รปแบบของผลลพธทจะแสดง คออะไร ?ตองการแสดงขอความวา
“The result is”**************************
หมายเหต **** เปนตวอยาง
เครองหมาย ในทนคอ ดาว (เปลยนแปลงตามทผใชระบ)
ขอมลอะไรบาง ทตองใชในการ คำานวณ ?1. เครองหมาย ทผใชกำาหนด
2. จำานวนเครองหมาย ทผใชตองการพมพ
ตวแปรทนำามาใชเกบขอมล ?1.ตวแปรสำาหรบเกบขอมลเขามอะไรบาง(เครองหมาย, จำานวนเครองหมาย)
โดยกำาหนดให เครองหมาย แทนดวยตวแปร symbol เปน
ชนด charจำานวนเครองหมาย แทนดวยตวแปร value
เปนชนด int
หาขนตอนวธการทำางานของโปรแกรม?1. สรางตวแปรสำาหรบเกบขอมล
เครองหมาย, จำานวนเครองหมาย และกำาหนดคาเบองตนใหกบตวแปรทงหมด
2. รบขอมลเครองหมาย และจำานวน จากผใช
3. พมพขอความ “The result is”
หาขนตอนวธการทำางานของโปรแกรม? (ตอ)1. ประมวลผลโดยการสรางลป while เพอทำาการพมพ
เครองหมายตามจำานวนทผใชระบ โดย• เงอนไขคอ ถา value มคามากกวา 0 จงจะ
ทำาการพมพเครองหมาย• หลงจากพมพเครองหมายแลว ลดคา value ลง
1 คา
start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจ
จรง
Preprocessor
Function
symbol, value
value>0
value--;
กอนเขยน Preprocessor ลองถามตวเองวา.....1. โปรแกรมทจะเขยนมการรบขอมลและแสดงผลขอมลหรอไม
?
ตอบ ม ตองใส preprocessor วา#include<iostream>
2. โปรแกรมทจะเขยนมการใชงานตวแปรแบบ string หรอไม?
ตอบ ม ตองใส preprocessor วา#include<string>
3. โปรแกรมทจะเขยนมการเรยกใชฟงกชนทางคณตศาสตร หรอไม ?
ตอบ ม ตองใส preprocessor วา#include<math.h>
• สรปตองถามตวเองวา header file อะไรบางทจำาเปนตอง ใช
Preprocessor ทตองใชในโปรแกรมนคอ
#include<iostream.h>
#include<iostream.h> เปน preprocessor ตวเดยวเทานน
เนองจากโปรแกรมนมการรบและแสดงขอมลอยาง เดยว
ไมมการใชตวแปรแบบ string และไมมการใชฟงกชนทางคณตศาสตร
start
การเขยน main function
void main(){
}
}
ขนท 1 เขยน
void main()
{
}
start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจ
จรง
symbol, value
value>0
value--;
การเขยน main function
void main(){
}
ขนท 2 เขยน คำาสงทอยภายในฟงกชน
main start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจ
จรง
symbol, value
value>0
value--;
char symbol = ‘ ’;
int value = 0;
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการรบขอมลคอคำาสง cin และ เครองหมาย >>
ดงนนจงเขยนไดวา
cin>>symbol>>value; รบคาแรกมาเกบไวในตวแปร symbol
รบคาสองมาเกบไวในตวแปร value
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการแสดงขอมลคอคำาสง cout และเครองหมาย <<
ดงนนจงเขยนไดวา
cout<<“The result is”;
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการสรางลป while เปนดงนwhile (value >0)
{cout<<symbol;value--;
}
start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจ
จรง
symbol, value
value>0
value--;
ผลลพธในการเขยนโปรแกรม
การเขยนโปรแกรมทำาซำาแบบ do while รปแบบคำาสง คอ
do{
คำาสงทตองการทำาซำา; …..
คำาสงเพม, ลด เปลยนแปลงคาของตวแปรทใชตรวจสอบเงอนไข;
} while (เงอนไขทตองการทดสอบ);
“I love C++”;
จรง
เทจ
ตวอยางการเขยน Flowchart ตองการพมพขอความ I love C++ ไมเกน
5 • พมพขอควำม “I love C++”
• แลวเพมคำ value ขน 1 คำ
• ตรวจสอบเงอนไข ถำ value ยงคง นอยกวำ 5 ใหวนลปทำำตอไป แตถำไมใช ใหหลดออกจำกลป
value < 5;
value++;
แบบฝกหด: ใหนกศกษาเขยน Flowchart เพอทำางานตอไปน ตองการพมพเครองหมาย * ไมเกน X ครง ตองการทำาคำาสง result = result + 1; ไม
เกน J ครง
“*”;
จรง
เทจ
ตวอยางการเขยน Flowchart ตองการพมพเครองหมาย * ไมเกน X ครง
• พมพขอควำม “*”
• แลวเพมคำ value ขน 1 คำ
• ตรวจสอบเงอนไข ถำ value ยงคง นอยกวำ x ใหวนลปทำำตอไป แตถำไมใช ใหหลดออกจำกลป
value < x;
value++;
จรง
เทจ
ตวอยางการเขยน Flowchart ตองการทำาคำาสง result = result + 1; ไมเกน
J ครง • คำำนวณ result = result +1;
• แลวเพมคำ value ขน 1 คำ
• ตรวจสอบเงอนไข ถำ value ยงคง นอยกวำ J ใหวนลปทำำตอไป แตถำไมใช ใหหลดออกจำกลป
value < J;
value++;
result = result +1;
ตวอยางการเขยนโปรแกรมทำาซำา แบบ do while
โจทย: ตองการพมพเครองหมายใดๆ ออกทางจอภาพ?โดยมเงอนไขคอ2.ผใชสามารถกำาหนดเครองหมายทตองการพมพ
3.ผใชสามารถกำาหนดจำานวนทตองการใหพมพได
ปญหาคออะไร ? พมพเครอง
หมายใดๆ ออก ทางจอภาพ
ตามจำานวนทผใชระบ
รปแบบของผลลพธทจะแสดง คออะไร ?ตองการแสดงขอความวา
“The result is”**************************
หมายเหต **** เปนตวอยาง
เครองหมาย ในทนคอ ดาว (เปลยนแปลงตามทผใชระบ)
ขอมลอะไรบาง ทตองใชในการ คำานวณ ?1. เครองหมาย ทผใชกำาหนด
2. จำานวนเครองหมาย ทผใชตองการพมพ
ตวแปรทนำามาใชเกบขอมล ?1.ตวแปรสำาหรบเกบขอมลเขามอะไรบาง(เครองหมาย, จำานวนเครองหมาย)
โดยกำาหนดให เครองหมาย แทนดวยตวแปร symbol เปน
ชนด charจำานวนเครองหมาย แทนดวยตวแปร value
เปนชนด int
หาขนตอนวธการทำางานของโปรแกรม?1. สรางตวแปรสำาหรบเกบขอมล
เครองหมาย, จำานวนเครองหมาย และกำาหนดคาเบองตนใหกบตวแปรทงหมด
2. รบขอมลเครองหมาย และจำานวน จากผใช
3. พมพขอความ “The result is”
หาขนตอนวธการทำางานของโปรแกรม? (ตอ)1. ประมวลผลโดยการสรางลป do while เพอทำาการพมพ
เครองหมายตามจำานวนทผใชระบ โดย• พมพเครองหมาย• หลงจากพมพเครองหมายแลว ลดคา value ลง
1 คา• ตรวจสอบวา value มากกวา 0 หรอไม ถา
มากกวา 0 ใหวนลปอกครง แตถาเทากบหรอ นอยกวา ใหหยด
start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจจรง
Preprocessor
Functionsymbol, value
value>0
value--;
กอนเขยน Preprocessor ลองถามตวเองวา.....1. โปรแกรมทจะเขยนมการรบขอมลและแสดงผลขอมลหรอไม
?
ตอบ ม ตองใส preprocessor วา#include<iostream>
2. โปรแกรมทจะเขยนมการใชงานตวแปรแบบ string หรอไม?
ตอบ ม ตองใส preprocessor วา#include<string>
3. โปรแกรมทจะเขยนมการเรยกใชฟงกชนทางคณตศาสตร หรอไม ?
ตอบ ม ตองใส preprocessor วา#include<math.h>
• สรปตองถามตวเองวา header file อะไรบางทจำาเปนตอง ใช
Preprocessor ทตองใชในโปรแกรมนคอ
#include<iostream.h>
#include<iostream.h> เปน preprocessor ตวเดยวเทานน
เนองจากโปรแกรมนมการรบและแสดงขอมลอยาง เดยว
ไมมการใชตวแปรแบบ string และไมมการใชฟงกชนทางคณตศาสตร
start
การเขยน main function
void main(){
}
}
ขนท 1 เขยน
void main()
{
}
start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจจรง
symbol, value
value>0
value--;
การเขยน main function
void main(){
}
ขนท 2 เขยน คำาสงทอยภายในฟงกชน
main start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจจรง
symbol, value
value>0
value--;
char symbol = ‘ ’;
int value = 0;
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการรบขอมลคอคำาสง cin และ เครองหมาย >>
ดงนนจงเขยนไดวา
cin>>symbol>>value; รบคาแรกมาเกบไวในตวแปร value
รบคาสองมาเกบไวในตวแปร symbol
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการแสดงขอมลคอคำาสง cout และเครองหมาย <<
ดงนนจงเขยนไดวา
cout<<“The result is”;
start
char symbol = ‘ ’;int value = 0;
“The result is ”
for (int i=0; i < value; i++)
symbol
stop
เทจ
จรง
symbol, value
จากสญลกษณแปลงเปน code ภาษา C++ ไดดงน
คำาสงในการสรางลป do while เปนดงนdo{
cout<<symbol;value--;
}
while (value >0);
start
char symbol = ‘ ’;int value = 0;
“The result is ”
symbol
stop
เทจจรง
symbol, value
value>0
value--;
ผลลพธในการเขยนโปรแกรม