การเขียนโปรแกรมคอมพิวเตอร์ turbo c++ ·...

Post on 02-Sep-2019

7 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

การเขยนโปรแกรมคอมพวเตอร Turbo c++

ชอวชา ง 33201 (การเขยนโปรแกรมคอมพวเตอร) จดประสงครายวชา 1. ผเรยนมความรเบองตนเกยวกบการเขยนโปรแกรมดวยภาษาคอมพวเตอรตาง ๆ2. ผเรยนเขาใจหลกการเขยนโปรแกรม 3. ผเรยนสามารถเขยนโปรแกรมภาษาซไดอยางเปนระบบและมขนตอน 4 . ผเรยนสามารถเขยนโปรแกรมประยกตตามการใชงานตาง ๆได

สาระส าคญ

ภาษาซจดเปนภาษาระดบกลางทมลกษณะเปนภาษาโครงสราง สามารถประยกตใชไดกบงาน

ในลกษณะตางๆ เปนภาษาทใกลเคยงกบภาษาแอสแซมบล ผเขยนโปรแกรมจะสามารถเขยนโปรแกรมไดอยาง

คลองตวโดยไมมขอจ ากดในการวางต าแหนงฟงกชนในโปรแกรม ภาษาซจงเปนภาษาทงายตอการเขาใจและ

การน าไปใชงาน การสรางโปรแกรมภาษาซจะเรมจากการเขยนโปรแกรมตนก าเนด แลวน าไปท าการแปลดวย

ตวแปลภาษาซเกดเปนโปรแกรมประสงค หลงจากนนจงน าโปรแกรมประสงคไปท าการเชอมโยง เพอใหเกด

เปนโปรแกรมท าการทสามารถท างานไดอยางรวดเรว

ประวตของภาษาซ

ภาษาซมประโยชน

หลกการเรยนรภาษาซใหเขาใจ

ตวแปรภาษา ( Translator)

สวนประกอบของโปรแกรม

Editor ของภาษาซ

แนวขอสอบ

ขนตอนในการเขยนโปรแกรม

ประกอบดวย 5 ขนตอน

1.การวเคราะหปญหา

2.การก าหนดแผนในการแกปญหา

3.การลงรหสโปรแกรม

4.การทดสอบและตรวจสอบโปรแกรม

5.การจดท าคมอเอกสารในการใชโปรแกรม

การวเคราะหปญหา

การก าหนดปญหา

สามารถใชเครองมอ 2 ชนด

1.การเขยนผงงาน (Flowchart)

2.การเขยนดวยค าสงเทยม (Psuedo Code)

การลงรหส โดยใชภาษาทตองการลงรหส เชน ภาษาปาสคาล ภาษาซ ภาษาโคบอล การทดสอบและตรวจสอบโปรแกรม

- เปนการทดสอบและตรวจสอบโปรแกรมทท าขน วาสามารถน าไปใชงานไดตามทตองการหรอไม - โดยน ามาทดสอบกบระบบจรง - ถาตรวจสอบแลวพบความผดพลาด จะไดด าเนนการแกไขไดถกตอง

การจดท าคมอเอกสารดารใชโปรแกรม

- เพอใหผใช (User) สามารถใชงานโปรแกรมไดสะดวกขน

องคประกอบของภาษาซ กฏเกณฑการเขยนค าสง ( Rule of Command )

โครงสรางของภาษาซ

แนวขอสอบ

ค าสงในการรบและแสดงผลขอมล ล าดบขนตอนการเขยนโปรแกรม

ค าสง

นบต งแตคอมพวเตอรเครองแรกถกสรางขนเมอประมาณป ค.ศ1930-1940 การ

เขยนโปรแกรมเพอส งงานคอมพวเตอร นบวาเปนสวนส าคญในการพฒนาคอมพวเตอร

เรอยมา เพราะคอมพวเตอรยอมไมสามารถท างานได เมอปราศจากโปรแกรม

การเขยนโปรแกรมกคอการ "ส งงาน" ใหกบคอมพวเตอร ซงการส งงานจะอยในรปแบบ

ของ "ชดค าส ง" ซงค าส งทใชในการเขยนโปรแกรมกมนบรอยนบพน(ม ง)

"แลวอะไรคอภาษาซละ" คนทไมเคยเรยนมากอนกคงสงสย การเขยนโปรแกรมทวาอยใน

รปของค าส งนน กเปรยบเสมอนค าพดทเราใชในชวตประจ าวน ซงแนนอนวามหลากหลาย

ภาษา แตกสามารถตความหมายออกมาไดเหมอนๆกน ในคอมพวเตอรเอง กม "ภาษา" ท

ใชในการเขยนโปรแกรม ตรงนถาใครยงงงๆ กผานไปกไดครบ เดยวเราจะคอยๆเขาใจไป

เองเมอเรยนไปซกพก ตอเลยนะ แตละภาษาจะมชอของค าส งตางๆกน แตกสามารถ

ส งงานไดคลายๆกน

ระดบของ "ภาษา"

"ภาษากมระดบดวยหรอ"ใชแลว ภาษาในการเขยนโปรแกรมถกจดเปนระดบๆครบ

ภาษาระดบสง เชน Pascal JAVA(ชอนคนๆม ย) มรปแบบค าส งทเหมอนกบภาษามนษย

(print,while,for,if..) ส งงานระดบฮารดแวรไดบาง แตไมถงทสด

ภาษาระดบต า เชน Assembly รปแบบค าส งจะจ ายากๆหนอย แตเกงกวาตรงทท างานเรว

และส งงานฮารดแวรในเครองไดในระดบทลกทสด

แลวภาษาซละ...

เพอนๆครบ ภาษาซเปนภาษาทเจงตรงทมนเปนท งสงและต าครบ (บางคนเรยกวา

ระดบกลางกม) ค าส งสวนมากอยในรปของภาษามนษยครบ แตมนกสามารถส งงาน

ฮารดแวรในระดบลกไดเชนกน (เจงใชมะ...)

อยางแรก อยากใหทกคนมจดมงหมายทจะเรยนกอนครบ

- เพอใชสอบแขงขน (สอวน - โอลมปกท งไทยและนานาชาต นยมใชภาษาน)

- อยากท างานดานน ซงหากจะเรยนทางคอมพวเตอร เราควรจะเขยนโปรแกรมเปน

- เสรมบารม (แบบวาอวดเคาได หรอเอาไวเวลาหางานจะไดดเหมอนมความร)

- ไมร แตกอยากเรยน (ความมงม นอยางเดยวกเพยงพอ)

ท าไมจงควรเรยน C เปนอยางแรก

เปนปญหาโลกแตกเหลอเกน ทวาเราจะเร มตนทภาษาอะไรด แตส าหรบผม...เชยรCสดใจ

1. C เปนเสมอนรากฐานของหลายๆภาษา ถาทานเรยน C ภาษาอนกงายนดเดยว

2. C มพอยนเตอร พอยเตอรเปนสวนหนงทใชท างานกบหนวยความจ าไดอยางอสระสดๆ

ท าใหเราพลกแพลงโปรแกรมไดอยางหลากหลาย ซงหลายๆภาษาไมมส งน

3. C เปนมาตรฐานเดยวกนทงโลก ทานสามารถเอาภาษาซไปคอมไพลใชงานไดในทกๆ

ระบบปฏบตการ

4. C เปนท งระดบสงและต า ทานสามารถเขยนภาษาซดวยค าส งทจ างาย และกยงสามารถ

เขยนตดตอกบฮารดแวรไดเตมท

กอนจะเขยนภาษาซ อยากใหเราเขาใจวาการเรยนเขยนโปรแกรมในบลอกแหงน

โปรแกรมทไดจะอยในรปของ command line คอเปนแคหนาตางสด าๆและตวหนงสอส

ขาวๆ (ลองกด start -> run แลวพมพ cmd กดok)ทดแสนจะโบราณ ไมไดเปนโปรแกรม

หนาตาสวยหรอยางทเราใช แตหากเราอยากเขยนไดแบบน น กมสองทางครบ คอไปเขยน

ดวย visual basic ซงคอนขางงาย แตจะไมอธบายในน และอกทางคอเรยนในบลอกน

จนทานแนใจแลววาเขยนโปรแกรมโบราณๆแบบน ไดคลองแลว จงไปตอในดาน

GUI(Graphic User interface) ซงยากพอสมควร แตทานจะสามารถเขยนโปรแกรมเพอ

ใชงานจรงไดอยางเตมท

สดทายผมขอใหทกๆคนพมพโคดโปรแกรมท งหมดดวยตวเองและลองท าแบบฝกหดทก

ขอ หากท าได ผมเชอวาไมนานทานจะเกงขนครบ

จรงๆครบ มนท าอะไรไ าดมากมาย

หลกการงายๆคอ มนจะเอาสงทอยในวงเลบไปแสดงผลทางหนาจอครบ

เชน printf("Good morning C"); มนกจะเอาขอความในวงเลบไปแสดงผล แตตองม

เครองหมายค าพดนะครบ

แลวถาอยากขนบรรทดใหมละ

ถาอยากขนบรรทดใหม ใชเครองหมาย \n (แบคสแลช+เอน) ครบ

printf("Hello\nGood morning\nC is easy");

ผลลพธ

Hello

Good morning

C is easy

นอกจากนยงม \t = เลอนไป 6 ตวอกษร

\b = เลอนกลบไป 1 ตวอกษร

\a = สงเสยง บบ ส นๆ

ถาตองการแสดงผลเครองหมาย backSlash จะท ายงไงละ

เวลา จะแสดงเครองหมาย \ หรอวา " ทางหนาจอ ถาพมพลงไปตรงๆมนจะใชงานไมได

คบ (ลองดด) ใหใชวธน แทน คอถาตองการแสดง \ กใหพมพ \\ ถาตองการแสดง " กให

พมพ \" ครบ

printf("\\n is new line \nAnd \" is double quote");

ผลลพธจะเปน

\n is new line

" isdouble quote

การแสดงผลการค านวณดวย printf

printf ไมไดแสดงไดแตขอความโงๆ เทาน น เรายงสามารถใหมนแสดงคาจากการค านวณ

รปแบบคอ printf("%d",นพจน); (นพจนอยหลงคอมมาซงอยนอกเครองหมายค าพดนะ

ครบ) เมอเราใสนพจนเขาไป โปรแกรมจะหาค าตอบและแสดงผลในสวนทเปน "%d" ครบ

เชนถาเราใช printf("%d",5+9*7);

ผลลพธ

68 (ค านวณจาก 9*7 กอน แลวจงบวก 5)

เราสามารถใชรวมกบสวนของขอความไดครบ เชน printf("Result = %d",5+9*7);

ผลลพธ

Result = 68

แตถาเราใสแบบน printf("5+9*7");

ผลลพธท แสดงออกมาจะไมใช 68 นะครบ แตมนจะแสดงขอความทเขยนวา "5+9*7"

ออกมาเลย

เพราะฉะน น ถาอยากใหผลลพธโผลตรงไหน ใหใส %d ไวตรงนนครบ

เราท าแบบนกไดนะ printf("Number A = %d\nNumber B = %d\nNumber

C %d",18+5,9,39+1*5);

ผลลพธ

Number A = 23

Number B = 9

Number C = 44

ซงใสตวอยางจะเหนวามหลายนพจน ซงจะแสดงเรยงตามล าดบ

แตถาเราอยากพมพค าวา "%d" ใหเราพมพวา printf("%%d"); คอม % ซ าสองตว

ครบ

ผลลพธ

%d

นอกจาก %d แลวยงม % อนๆอกนะครบ %d จะแสดงผลเปนเลขฐานสบจ านวณเตม

หากนพจนเปน 20/6 มนจะแสดงผลเปน 3 (20 หาร 6 ได 3.กวาๆ แตมนแสดงจ านวณ

เตม จงตดเศษทง ไมมการปดขนนะครบ ปดลงอยางเดยว)

ดจากตาราง(ทไมเปนตารางเทาไ าหร)

%d - เลขจ านวณเตมฐานสบ (Decimal)

%ld - เหมอน %d แตถาใน TC จะตางกนนดหนอย เดยวจะบอกตอนเรยนเรองตวแปร

%f - แสดงเลขทศนยมได (ปกตทศนยม 6 ต าแหนง) (Float)

%lf - เหมอน %f แตแสดงคาไดมากกวา

%c - แสดงตวอกษรตวเดยว(Charator)

%s - แสดงขอความยาวๆ (String)

จรงๆยงมอก แตหลกๆจะใชเทานครบ เราจะขาม %c กบ %s ไปกอน จะบอกทหลง

ถาเราตองการแสดงทศนยม เรากท าแบบน printf("%f",20.0/6.0); (ตองเตม .0 หรอ

.00 ดวยนะครบ)

ผลลพธ

3.333333

ถาเราอยากใหมนแสดงทศนยมแค 2 ตว ใหเราใช %.2f (เปอรเซนตจดสองเอฟ) หรอถา

อยากแสดงทศนยม 3 หลก กใช %.3f ครบ ลองดๆ

จรงๆยงมอกนดหนอย แตจะยงไมพดถงละกนนะครบ ยงไมคอยจ าเปนตองใช

หวงวาจะเปนความรใหทกๆคนนะครบ ใครอานแลวงงไมวาบทไหน ทงคอมเมนตไวกได

ครบ

เราไดเรยนแบบเงอนไขเดยวและสองเงอนไขกนไปแลว ตอนนจะมาเรยนการใช if...else

แบบมากกวาสองเงอนไขกนครบ

ยกตวอยางโจทยเรองโปรแกรมตดเกรด

ถา คะแนน >= 80 ใหเกรด 4

ถาไมใช แตถาเกรด >= 70 เกรด 3

ถาไมใชอก แตถาเกรด >= 60 เกรด 2

ถาไมใชอกแลว แตถา เกด >= 50 เกรด 1

ถาไมใชอก ให 0 ไปเลย เพราะยงไงกต ากวา 50

จ าไดม ยครบ ลองดโคดตรงนนะครบ

int score;

scanf("%d",&score); // รบคาคะแนนนกเรยน

ถงตรงนเรากจะรบคะแนนจากผปใชแลวแปลงเปนเกรดตามเกณฑดานบน วธการคอใชส ง

ทเรยกวา "else if" ครบ ออ ลมบอกไปวา เราอยามองวา if เปนฟงกชนนะครบ ถงมนจะม

วงเลบ () เหมอนกน ใหมองวามนเปนค าส งอยางนงครบ เราสามารถใช if ไดโดยไม

include อะไรเลย ตอๆ "else if" มความหมายวา "ถาไมใช แตถา"

แลวกอยากบอกอกอยาง คอ ถาใน if ของเรามแคค าส งเดยว เราไมจ าเปนตองม { } กได

ครบ คอเขยนแบบนไปเลย

if(เงอนไข) ค าส ง; // ค าส งนถอวาอยใน if

ค าส ง; // ค าส งท 2 เปนตนไป ถอวาอยนอก if

หรอวาจะขนบรรทดใหมกอนกไดนะ

if(เงอนไข)

ค าส ง; // ค าส งนอยใ if

ค าส ง; // อนนเปนอนทสอง จงถอวาอยนอก if แลว

การใช else if กเหมอนการใช if แทบทกประการครบ ดโคดนนะครบ

#include [stdio.h] // เปลยน [ ,] เปน < , > ดวยนะ

int main()

{

int score;

scanf("%d",&score);

if(score>=80) //

printf("Grade A"); // ค าส งนถอวาอยใน if แมวา าไมมปกกา

else if(score>=70)

printf("Grade B");

else if(score>=60)

printf("Grade C");

else if(score>=50)

printf("Grade D");

else

printf("Grade F");

scanf(" ");

return 0;

}

แบบนลองดตามนะครบ ถา score เปน 100 เตม มนกจะเชคจาก if อนแรกครบ ถา score

>= 80 ซงเปนจรง(ในทน score เปน 100) มนกจะพมพ Grade A ครบ พอมนท าอนน

แลว ถามวามนไปเชคอนตอไปรเปลา (else if(score>=70)) ค าตอบคอไมครบ เพราะถา

มนท าอนนงแลว ไมจะไมท าเงอนอนอนในชดเดยวกนอก ถามวาชดเดยวกนคออะไ าร

คอ if 1 ชด ม if ไดอนเดยว ม else if กอนกได แลวกม else ไดอนเดยวครบ โดยจะม

else if แล else ไดกตอเมอม if แลว ถางง ลองดตวอยาง

if(...) {...}

else if(...) {...}

else if(...) {...}

else {...}

อนนคอ 1 ชด

if(...) {...}

else if(...) {...}

if(...)

else {...}

อนนม 2 ชดครบ เพราะม if สองตวเหนม ย if ตวใหมกคอขนชดใหมน นเอง

if(...) {...}

if(..) {...}

อนนก 2 ชด

else {...}

อนนผด เพราะม else แตไมม if น ามากอน

top related