Chapter 05 Loop

  • View
    1.902

  • Download
    2

  • Category

    Sports

Preview:

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--;

ผลลพธในการเขยนโปรแกรม

Recommended