+ H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' '...
Transcript of + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' '...
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
หนวยท� 1 ความรเก�ยวกบการเขยนโปรแกรมเชงวตถ ดวย C++
หวขอเร�อง 1.1 ภาษาซพลสพลสเบองตน) (Structure of a C++ program) 1.2 ตวแปรและชนดขอมล (Variables and Data types) 1.3 เครHองหมายดาเนนการ (Operators) 1.4 อนพทและเอาทพท (Communication through console)
สาระสาคญ โปรแกรมประยกตทHมการใชงานมากมายในปจจบน เกดจากโปรแกรมเมอรสรางขนมา )โดยใชภาษาคอมพวเตอรในการสรางโปรแกรมประยกต ภาษาซพลสพลส เปนภาษาหนH งทHโปรแกรมเมอรใชงานในการสรางโปรแกรมประยกต และจะตองใชตวแปลภาษาภาษาซพลสพลส ในการเปลHยนภาษาคอมพวเตอรทHโปรแกรมเมอรสรางเปนไฟลทHเครHองคอมพวเตอรสามารถทางานไดจากโปรแกรมทHเขยนขนมา ) ในการศกษาภาษาซพลสพลส จะตองทาความเขาใจเกยวกบH ไวยากรณ ชนดของขอมล ตวแปร ตวดาเนนการทางคณตศาสตร ตวดาเนนการเปรยบเทยบ ตวดาเนนการตรรกะ การใชฟงกชน ทาหนาทHรบขอมล ฟงกชนทาหนาทHแสดงผลลพธจากโปรแกรมของภาษาซพลสพลส
จดประสงคการเรยนการสอน จดประสงคท�วไป (ปลายทาง) นกศกษามความรความเขาใจเกยวกบH ตวแปร ชนดขอมล ตวดาเนนการและการแสดงผล จดประสง คเชงพฤตกรรม (นาทาง) เม�อศกษาหนวยน3แลวนกศกษาสามารถ 1. เขาใจหลกการเขยนโปรแกรมและการใชงานภาษาซพลสพลส เบองตนได) 2. ใชตวแปรและชนดขอมลได 3. ใชเครHองหมายดาเนนการในการเขยนโปรแกรมได 4. เขยนโปรแกรมการรบและแสดงผลขอมลได 5. แสดงกจนสยในการทางานดวยความประณต รอบคอบและปลอดภย ตระหนกถงคณภาพของงานและมจรยธรรมในงานอาชพ
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
2
เน3อหาสาระ 1.1 ภาษาซพลสพลสเบ3องตน (Structure of a C++ program)
ภาษาซพลสพลส ถกพฒนาขนมาเมHอป ค) .ศ. 1983 ทH Bell Laboratories โดย Bjarne Stroustrup ภาษานถกพฒนาขนมาจากภาษา) ) C และมการเพมความสามารถของภาษา H C++ ดวยการทHทาใหสามารถเขยนเปนโปรแกรมเชงวตถ (Object-Oriented Programming) ซH งเพมประสทธภาพHในการพฒนาโปรแกรมทHมขนาดใหญและสามารถรองรบความซบซอนของการเขยนโปร แกรมของระบบงานในปจจบน
ภาษาซพลสพลส เปนภาษาทHทางานไดอยางกวางขวาง เขาใจงาย เขยนงาย ตลอดจนมคาสง HทHอานวยความสะดวกใหกบโปรแกรมเมอรทHจะสามารถเรยกใชไดตามทHตองการ ซH งโปรแกรมเมอรควรจะตองศกษาและทาความเขาใจในกฎเกณฑเหลานนใหดเสยกอน ) กจะทาใหสามารถนาภาษาซพลสพลสมาใชงานไดอยางมประสทธภาพ กฎเกณฑของเครHองมอทHใชเขยนโปรแกรมภาษาซพลสพลสของแตละผผลต จะมขอแตกตางกนไปบางเลกนอย
รปแบบการ เขยนโปรแกรม ดวยภาษาซพลสพลส ในภาษาซพลสพลสจะเขยนโปรแกรมโดยการเรยกใชแตละชด คาสงH ของโปรแกรมทH
เรยกวา ฟงกชน (Function) หรอในโปรแกรมภาษาอHนอาจจะเรยกวา โปรแกรมยอย หรอชดคาสง Hยอย (Procedure) นนเอง ฟงกชนเหลานจะมชHออะไรกได กฟงกชนกได แตอยางนอยตองม H H ) 1 ฟงกชน ทHชHอ main เพHอใหโปรแกรมเรมทางานทHฟH งกชนน )
โดยมรปแบบการเขยนโปรแกรมดงน) Preprocessor directive //#include<iostream> using directive //using namespace std; Global Function or Variable declarations // int x; int main () { statements; return 0 }
พรโปรเซสเซอรไดเรกทพ (Preprocessor directive) เปนการนาไฟลตาง ๆ ทHระบไวมาเกบไวใน โปรแกรม จะตองเรHมตนดวยสญลกษณ # ตามดวยชHอ เมHอตองการนาไฟลเขามารวมกบโปรแกรม จะใชพรโปรเซสเซอรไดเรกทพ #include เรยกไฟลทHตองการนามารวมเชน “#include<iostream>” #include <iostream> เปนคาสงนาไฟลไลบรารH เขามาในโปรแกรม ซH งเปนไฟลเฮดเตอร แตเด มจะตองมนามสกล h สาหรบในซพลสพลส ไดเปลHยนเปนแบบออบเจกต จงไมตองมนามสกล กได
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
3
ไดเรกทพ using เปนการเรยกใชงาน namespace เมHอมการเรยกใชไฟลเฮดเตอร ในรปแบบ “#include<iostream>” ทHพรโปรเซสเซอรไดเรกทพ จะตองกาหนด namespace ขน) std ซH งเปนชHอของ namespace ทHนยามของ identifiers ทงหมดของ ) C++ standard library เมHอมการเรยกชHอฟงกชน กสามารถเรยกใชชHอ ฟงกชน ไดโดยตรงทงโปรแกรม) namespace คอชHอทHใชเรยกกลมนยามตาง ๆ ทHถกจดใหอยในกลมเดยวกน
ตวยาง ทH 1.1 ตองการพมพขอความ "Hello World!" แสดงผลลพธออกบนจอคอนโซล (console) หรอบนดอส
1 // my first program in C++ 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello World!"; 8 return 0; 9 }
อธบายการทางานของโปรแกรม
บรรทดทH คาอธบาย 1 เปนประโยคหมายเหตเพHออธบาย วตถประสงคของโปรแกรม ซH งตวแปลภาษาจะไม
นามาแปลภาษา ภาษาซพลสพลส จะใชเครHองหมาย // โดยวางหนาคาอธบาย ถาคาอธบายเปนขอความยาวๆ สามารถใชเครH องหมาย /* และ */ ครอมขอความทHตองการอธบาย
2 #include ทาหนาทHแจงใหตวแปลภาษาอานไฟลอHนเขามาแปลรวมดวย #include <iostream> เปนคาสงนาไฟลไลบรารH เขามาในโปรแกรม จะเรยกเปนไฟลเฮดเตอร แตเดมม นามสกล h สาหรบในซพลสพลส ไดเปลHยนเปนแบบออบเจกต จงไมตองมนามสกล ไฟล iostream ซH งเปนไฟล เฮดเตอร ในไลบรารมาตรฐาน ซH งมฟงกชน การนาขอมลเขาและการแสดงผล
3 using ทาหนาทHเรยกใชงาน namespace ม std เปนชHอของ namespace 4 บรรทดวาง ขอความทHมองไมเหน (Whitespace ) ตวแปลภาษาจะไมนามา แปลภาษา 5 main เปนฟงกชนหลกของโปรแกรม จาเปนตองมทกโปรแกรม
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
4
6 { เครHองหมายจดเรมตนของฟงกชน H main 7 ประโยคคาสง H cout เปนฟงกชน ทHมอยใน ไฟลเฮดเตอร iostream ใน C++ standard
library ใชแสดงผลลพธออกบนคอนโซล (console) ใชรวมกบ operator << โดยขอความตองอยภายใตเครHองหมาย คาพด "Hello World!" เมHอจบประโยคคาสง ใชHเครHองหมาย ; เปนตวบอก
8 return 0 เปนการสงคา 0 กลบไปยง operating system หลงเสรจสนการรนโปรแกรม)
9 } เครHองหมายจดสนสดของฟงกชน ) main
สรป รปแบบคาสงในภาษาซพลสพลส มกฎเกณฑในการเขยนคาสง ดงนH H ) 1. คาสงทกคาสงตองเขยนดวยอกษรตวเลกเสมอ เชน คาสง H H H cout , cin , for 2. ทกคาสงจะใชเครH องหมาย H ; (semi-colon) แสดงการจบของคาสง เชน H
cout<<”Hello World”; 3. เครHองหมาย { } (bracket) เครHองหมายนทาหนาทHกาหนดขอบเขตของกลม)
คาสงในฟงกชนH
ตวแปลภาษาและตวเช�อมโปรแกรม (Compiler and Link) การสรางโปรแกรมทHสามารถใชงานไดขนมา) นน) ในภาษาซพลสพลสมขนตอนดงน) )
1. สรางตวโปรแกรมทHเปนตวอกษร หรอเรยกวา ซอรสไฟล (Source file) ขนมากอน โดย) ใชโปรแกรมทHสามารถเขยนไฟลทHเกบอกขระ (Editor) ใด ๆ กได อกษรหรออกขระใด ๆ นน )จะตองอยในรปแบบของการ ภาษาซพลสพลส นามสกลของซอรสไฟลขนอยกบตวแปลภาษา) (ขนตอนนคอการสรางโป) ) รแกรมทHเปนภาษามนษยนนเองH )
นามสกลของซอรสไฟล ขนอยกบตวแปล) ภาษาซพลสพลส ดงในตารางทH 1-1 ตวแปลภาษา นามสกลซอรสไฟล
Borland C++ cpp Digital Mars C++ cpp,cxx GNU C++ c,cc,cxx,cpp,c++ Metroworks Codewarrior Pro cpp,cp,cc,cxx,c++ Microsoft Visual C++ cpp,cxx,cc Unix c,cc,cxx,c Wattcom C++ cpp
ตารางทH 1-1 แสดงชนดตวแปลภาษาซพลสพลส 2. ตวแปลภาษาของภาษาซพลสพลส (C++ Compiler) จะทาการแปลงซอรสไฟล จาก
อกขระใด ๆ ใหเปนรหสทHเครHองคอมพวเตอรสามารถเขาใจไดเกบไวในอกไฟลหนH งเรยกว าไฟล
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
5
วตถประสงค (Object file) ทHมนามสกล .obj หรอ .o (ขนตอนนเรยกวา การคอมไพล เปนการแปลง) ) ภาษามนษยเปนภาษาเครHองนนเองH )
3. ตวเชHอม (Linker) จะทาการตรวจสอบวาในโปรแกรมทHเขยนขนนน มการเรยกใชงาน ) )ฟงกชนมาตรฐานใด จากหองสมดของภาษาซพ ลสพลส (C++ Library) บางหรอไม ถาม ตวเชHอมจะทาการรวมเอาฟงกชนเหลานนเขากบไฟลวตถประสงค แลวจะไดไฟลทHสามารถทางานได โดยม )นามสกลเปน .exe (ขนตอนนเรยกวา การลงค เปนการรวมฟงกชนสาเรจรปเขาไป แลวสรางไฟลทH) ) ทางานได) ดงรปทH 1-1
รปทH 1-1 แสดงขนตอนการ) แปลภาษาและการเชHอมโปรแกรมของภาษาซพลสพลส
การสรางโปรแกรมภาษาซพลสพลสดวย Bloodshed Dev-C++ การเขยนโปรแกรมคอมพวเตอรภาษาตาง ๆ ปกต จะเขยนคาสงตาง ๆ ดวยโปรแกรมทHH
เรยกวา editor เชน notepad แลวเปลHยนภาษาทHเขยนนนเปนภาษาเครH องโดยใช) ตวแปลภาษา (compiler) ของภาษาทHใชเขยนโปรแกรมคอมพวเตอร เชน ตวแปลภาษาของภาษาซพลสพลส ซH งกมผผลตหลายราย ซH งตองเปนไปตามมาตรฐาน ANSI C++ และมรายละเอยดเพมเตมแตกตางกนไป H ในปจจบน เครH องมอทHชวยในการพฒนาโป รแกรม ภาษาองกฤษเรยกวา IDE (Intregal Devenlopment Environment) ซH งเปนโปรแกรมทHออกแบบมาเพHอชวยในการ เขยนโปรแกรมไดงายขน ) โดยไมตองแยกใช editor เขยนโปรแกรม แลวเรยกใช compiler ทาการคอมไพลโปรแกรมอก เชน editplus , Visual C++, Bloodshed Dev-C++ และ code::blocks
การใช editplus ซH งเปนเครHองมอ IDE ทHใหความสะดวกในการสรางโปรแกรมภาษาตาง ๆ เมHอนามาสรางซอรสไฟลภาษาซพลสพลส กตองนาตวแปลภาษาของภาษาซพลสพลสมาทาการเพมเตมลงใน H editplus จงจะสามารถแปลงซอรสไฟล ใหเปนรหสทHเครHองคอมพวเตอรเขาใจได
Bloodshed Dev-C++ ใชตวแปลภาษาของ GNU ในการแปลงภาษาซพลสพลสและเปนสวนหนHงของซอฟตแวร Dev-C++ อยแลว ทาใหไมตองหา ตวแปลภาษาของภาษาซพลสพลสมาเพมH
code::blocks เปนเครHองมอทHชวยในการเขยนโปรแกรมเชนเดยวกบ Dev-C++ แตจะมขนาดโปรแกรมใหญกวา Dev-C++ มาก มการพฒนาตอเนHอง ถาใชระบบปฏบตการ windows 7 ขอแนะนาวาควรใช code::blocks
Source file
C++ Compiler
Computer Object file Computer Execute file
Linker Library
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
6
ในการเรยนการสอนรายวชาการโปรแกรมเชงวตถ 1 ไดเลอกใช IDE ของ Bloodshed Dev-C++ ซH งเปนซอฟตแวรทHใหเปลา โดยการ download จากเวบไซต http://www.bloodshed.net ชHอไฟล devcpp-4.9.9.2_setup.exe
การใช Dev-C++
การเรยกใช Dev-C++ ทาไดทานองเดยวกบการเรยกใชโปรแกรมอHน ๆ เชน เรยกทH Start-> All Programs ->Bloodshed Dev-C++ -> Dev-C++ ดงรปทH 1-2
รปทH 1-2 การเรยกใช Dev-C++
จะไดหนาตางโปรแกรม Dev-C++ ดงรปทH 1-3
รปทH 1-3 หนาตางโปรแกรม Dev-C++
ทHเมน File เลอกคาสง H New จะได ดงรปทH 1-4
รปทH 1-4 แสดงการเลอกคาสง H New
คาสง H New สาหรบสรางไฟลใหม ไปทHคาสงH Source File (มคยลด Ctrl+N) เพHอเปดหนาตางสาหรบเขยนคาสงตาง H ๆ เพHอสรางโปรแกรมขน จะไดหนาตางดงรป) ทH 1-5
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
7
รปทH 1-5 หนาตาง สาหรบเขยนคาสงH
ทาการเขยนคาสงH หรอ ลงรหสโปรแกรม จะไดหนาตางโปรแกรมในลกษณะ ดงรปทH 1-6
รปทH 1-6 แสดงการเขยนคาสงH หรอ ลงรหสโปรแกรม
เมHอเขยนโปรแกรมเสรจใหทาการการบนทกไวเพHอปองกนการเสยหาย คาสง H File Save โปรแกรมจะเปดหนาตาง ของ คาสง H File Save As… ดงรปทH 1-7
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
8
รปทH 1-7 แสดงการบนทกไฟล
การใชตวแปลภาษา โดยการเปลHยนคาสงทHสรางไปเปน ภาษาเครHอง แลวตามดวยสงให H HตวเชHอม ซH งจะอยใน ชดเดยวกน ทาการรวมคาสงอHน ๆ ทHจาเปนH เขาดวยกนเพHอไดโปรแกรมทHสามารถทางานได ดงรปทH 1-8
รปทH 1-8 แสดงปมการใชตวแปลภาษา
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
9
ถาโปรแกรมทHเขยนสามารถแปลเปนภาษาเครHองไดสาเรจ จะไดหนาตาง ดงรป ทH 1-9
รปทH 1-9 แสดงผลทHไดจากการใชตวแปลภาษา ทาการทดสอบโปรแกรมโดยพมพชHอไฟลทHสรางขน) ทHคอนโซล (console) หรอบนดอสดง
รปทH 1-10
รปทH 1-10 แสดงการทดสอบโปรแกรม
1.2 ตวแปรและชนดขอมล (Variables and Data types) ตวแปร (Variable) หมายถงชHอเรยกแทนพนทHเกบขอมลในหนวยความจา มชนดของขอมล )
หรอชนดของตวแปรคอชนดขอมลตวอกษร (char) ชนดขอมลเลขจานวนเตม (int, long, unsigned int, unsigned long int) ชนดขอมลเลขทศนยม (float, double) ชนดขอมลบลลน (bool )
คาเฉพาะ (Identifiers) คอ ชHอของหนวยขอมลในโปรแกรม คาเฉพาะอาจเปนคาทHคอมไพลเลอรสรางใหใชอยในไลบรารH หรอเปนคาทHสรางขนเพHอใชงาน ) โดยคาทHสรางขนมาเรยกวา) ตวแปร
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
10
กฎการตงชHอคาเฉพาะหรอ) ชHอตวแปร 1. ตวอกษรตวแรกตองเปนตวอกษรหรอ _ (underline character) จะเปนตวเลขไมได 2. ตวถดไปจะเปนตวอกษรหรอ _ หรอตวเลขกได
3. หามใชคาสงวน 4. หามมเครHองหมายทางคณตศาสตรหรอเครHองหมายวรรคตอนใด ๆ รวมท)งชองวา ง
ระหวางตวอกษร การกาหนด ชHอตวแปร ตวอกษรภาษาองกฤษตวพมพเลกและตวพมพใหญภาษาซพลสพลส
ถอวาเปนคนละตวกน เชน test และ Test เปนตวแปรคนละตวกน หามต3งช�อซ3ากบคาสงวนซ�งไดแก
ชนดตวแปร (Data types) ขนาดพนทHเกบข) อมลของชนดตวแปรขนอยกบระบบคอมพวเตอร) และตวแปลภาษาทHใช
งาน เมHอตองการทราบขนาดพนทHทHเกบขอมลมขนาดเทาไร ใหใชฟงกชน ) sizeof ในการตรวจสอบ (ตวอยางทH 1.4 การบอกขนาดชนดขอมล ) ชนดตวแปรทHใชงานมดงน)
1. ตวแปรแบบ char เปนตวแปรทHใชสาหรบเกบขอมลทHเปนตวอกษรขนาด 1 ตว โดยใชเนอทHในการเกบ ) 1 ไบต ตวอยางตวแปรชนดน เชน ) ‘A’ , ‘b’ , ‘1’ , ‘?’
2. ตวแปรแบบ int เปนตวแปรทHใชสาหรบการเกบคาตวเลขทHเปนจานวนเตมทHมคาระหวาง -2147483648 ถง 2147483647 ใชเนอทH) ในการเกบ 4 ไบต ตวอยางตวแปรชนดน เชน ) 5 ,-10, 200
3. ตวแปรแบบ long เปนตวแปรทHเกบคา ตวเลขจานวนเตมขนตHาขนาด) 4 ไบต และมขนาดใหญกวา short (มกจะใชเปนคานาหนาตวแปร เชน long int)
4. ตวแปรแบบ float เปนตวแปรทHใชเกบขอมลทHเปนเลขทศนย ม โดยจะเกบอยในรป แบบ a.b x 10e ใชพนทHในการเกบ ) 4 ไบต มคาระหวาง 3.4E-38 ถง 3.4E+38 หรอ แสดงเปนเลขทศนยมไดไมเกน 6 ตาแหนง ตวอยางตวแปรชนดน เชน ) 10.625, -6.67
5. ตวแปรแบบ double เปนตวแปรทHเกบขอมลทHเปนเลขทศนยมเหมอนกบ float แตจะใชพนทHในการเกบมากกวาเดม ) 2 เทา คอมขนาด 8 ไบต มคาระหวาง 1.7E-308 ถง 1.7E+308
asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
11
6. ตวแปรแบบ unsigned แสดงวาเปนตวแปรทH เกบคาเปนจานวนเตมแบบไมคด เครHองหมาย (เปนบวกเทานน ) ) มกจะใชเปนคานาหนาตวแปร ตวอยางการใชงาน เชน unsigned int
7. ตวแปรแบบ bool เปนตวแปรเกบขอมลเฉพาะจรง (true) หรอเทจ (false) เทานน ) แสดงชนดและขนาดพนทHเกบขอมลทHใชในภาษาซพลสพลส ตามตารางทH ) 1-2
ชนด ขนาดความกวาง ชวงของคา char 1 ไบต ASCII character (-128 ถง 127) int 4 ไบต -2147483648 ถง 2147483647 short int 2 ไบต -32768 ถง 32767 long int 4 ไบต -2147483648 ถง 2147483647 float 4 ไบต 3.4E-37 ถง 3.4E+38 หรอ ทศนยม 6 ตาแหนง double 8 ไบต 1.7E-307 ถง 1.7E+308 หรอ ทศนยม 12 ตาแหนง unsigned int 4 ไบต 0 ถง 4294967295 bool 1 ไบต true or false หรอ 1 กบ 0
ตารางทH 1-2 แสดงชนดและขนาดพนทHเกบขอมล)
การประกาศตวแปรและการกาหนดคาเร�มตนใหกบตวแปร การประกาศตวแปร มลกษณะดงน)
การกาหนดคาเรมตนใหกบตวแปรมลกษณะดงน H )
ตวอยางของการประกาศตวแป รและการกาหนดคาเรมตนใหกบตวแปร H ไดแก ตวอยางทH 1 int a ; หมายความวา ประกาศตวแปร a เปนตวแปรทHใชสาหรบเกบคาทHเปนเลขจานวนเตมทHมคา
อยระหวาง -2147483648 ถง 2147483647 ตวอยางทH 2 int num1=8; หมายความวา ประกาศตวแปร num1 เปนตวแปรทHเกบคาตวเลขจานวนเตมโดยใหคา
เรมตนเทากบH 8
ชนดตวแปร ช�อตวแปร , ช�อตวแปร , ช�อตวแปร,.....;
ชนดตวแปร ช�อตวแปร =คาของขอมล;
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
12
ตวอยางทH 3 float money,price ; หมายความวา money และ price เปนตวแปรทHใชสาหรบเกบคาทHเปนเลขทศนยม โดยจะให
ตาแหนงทศนยมไดไมเกน 6 หลก ตวอยางทH 4 char ch='A'; หมายความวา ประกาศ ตวแปร ch เปนตวแปรทHเกบคาตวอกษรเพยง 1 ตว คอ ตวอกษร ‘A’ ตวอยางทH 5 unsigned long int test; หมายความวา ประกาศตวแปร test เปนตวแปรทHใชสาหรบเกบคาทHเปนเลขจานวนเตม
แบบยาวทHไมคดเครHองหมาย ตวอยางเพมเตม H
char a,b,c,d; /* ตวแปร a,b,c,d เปนตวแปรชนด character */ unsigned int e; /* ตวแปร e เปนตวแปรชนด unsigned int */ char key = 'A'; /* ตวแปร key เปนตวแปรชนด character มคา 'A' */
ตวอยางทH 1.2 โปรแกรมแสดงการใชตวดาเนนการคณตศาสตรกบเลขสองจานวน #include <iostream> using namespace std; int main () {
int a, b; int result; a = 5; b = 2; a = a + 1; result = a - b; cout << result; return 0;
}
ผลลพธ
ขอบเขตของตวแปร การใชงานตวแปร สามารถกาหนดได 2 แบบ คอ
4
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
13
กาหนดไวนอกกลมคาสง หรอฟงกชน เรยกต H วแปรนวา ) Global Variable กาหนดไวนอกฟงกชน ใชงานไดทงโปรแกรม มคาเรมตนเปน ) H 0 (กรณไมไดกาหนดคาเรมตน H ) กาหนดไวในกลมคาสง หรอฟงกชน เรยกตวแปรนวา H ) Local Variable กาหนดไวภายในฟงกชน ใชงานไดภายในฟงกชนนน และไมถกกาหนดคาเร ) Hมตนโดยอตโนมต
ตวอยาง ทH 1.3 การกาหนดตวแปรแบบ Global และ Local ในการหาพนทHวงกลม) 1 #include<iostream > 2 #define PI 3.14159 3 using namespace std; 4 double area; 5 int main() 6 { 7 float radius; /* local variable */ 8 cout<<"Please enter radius :"; 9 cin>> radius; 10 area=PI*radius*radius; 11 cout<<"\n"; 12 cout<<"The area of circle "<<area<<endl; 13 return 0; 14 }
อธบายการทางานของโปรแกรม
บรรทดทH คาอธบาย 2 #define ทาหนาทHแจงใหตวแปลภาษาใหทราบวาตวแปร PI มคา 3.14159 เปนคาคงทH 4 double area เปนตวแปร Global Variable ชนดขอมล double 7 float radius; เปนตวแปร Local Variable ชนดขอมล float
คาคงท� (constants) คอตวแปรทHกาหนดคาโดยไมสามารถเปลHยนแปลงค าของมนไดอก
การประกาศคาคงทHสามารถทาไดโดย 1. การใชคาสงวน const นาหนาประเภท ดงน)
const ชนดตวแปร ช�อตวแปร = คาท�ตองการกาหนด;
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
14
เชน const int width = 100; const int zip = 92000;
2. กาหนดในสวนของ Preprocessor directive โดยใช #define ทาหนาทHใชกาหนดคาคงทH ทHเปนชHอแทน คา นพจน คาสHง หรอคาสงหลายคาสง มรปแบบการใชงานดงนH H )
เชน #define TEN 10 กาหนด TEN แทนคา 10 #define PI 3.141592654 กาหนด PI แทนคา 3.141592654
1.3 เคร�องหมายดาเนนการ (Operators) เครHองหมายดาเนนการ (Operators) หรอ ตวดาเนนการนนกาหนดการการก) ระทาทHเกด
ขนกบตวแปรและคาคงทH โดย) ประกอบขนเปน) นพจน โดยใชตวดาเนนการเพHอหาผลสมฤทธ � ในภาษาซพลสพลส ตวดาเนนการมจานวนมากเมHอเปรยบเทยบกบภาษาคอมพวเตอรอHน ๆ ภาษา ซพลสพลส ไดแบงตวดาเนนการออกเปน 3 ประเภท ไดแก ตวดาเนนการทางคณต ศาสตร ตวดาเนนการสมพนธ ตวดาเนนการตรรกะ และตวดาเนนการประกอบ
ตวดาเนนการทางคณตศาสตร (Arithmetic Operators) ตวดาเนนการทางคณตศาสตร เปนตวดาเนนการทHคานวณทางดานคณตศาสตรใหมคา
ออกมามชนดสอดคลองกบชนดของตวถกกระทา ประกอบดวยตวดาเนนกา รตาง ๆ ดงน) ดงตารางทH 1-3
เคร�องหมาย ความหมาย ตวอยาง
+ การบวก A+B
- การลบ A-B
* การคณ A*B
/ การหาร A/B
% การหารเอาแตเศษไว (Modulus) 5%3=1 เศษ 2 จะเกบแตเศษ 2 เอาไว
-- การลดคาลงครงละ ) 1 A -- จะเหมอนกบ A=A-1
++ การเพมคาขนครงH ) ) ละ 1 A++ จะเหมอนกบ A=A+1
ตารางทH 1-3 แสดงประเภทของตวดาเนนการทางคณตศาสตร
#define ช�อตวแปร (ช�อท�ใชแทน) คาท�ตองการกาหนด
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
15
ตวดาเนนการเพ�ม และลดคา (Increment & Decrement) ตวดาเนนการเพม และลดคา เปนตวดาเนนการในการเพมหรอลดคาของตวแปร โดย H H ตวดาเนนการเพมคา H ++ จะบวกหนHงเขากบตว ถกดาเนนการ ตวดาเนนการลดคา -- จะลบหนHงออกจากตวถกดาเนนการ สาเหตทHมตวดาเนนการน เพราะการดาเนนการเพมหรอลดคาเกดขนเสมอ) H ) กบตวแปร
สาหรบตวดาเนนการเพมคาH ตวดาเนนการลดคามวธใชงาน 2 แบบคอ Prefix คอวางไวหนาตวแปร เชน ++n
Postfix คอวางไวหลงตวแปร เชน n++ ในทงสองกรณ ผลลพธคอการเพมคา ) H 1 ใหกบ n แตนพจน ++n จะเพมคากอนทHจะนาคาไปH
ใช ขณะทH n++ จะเพมคาหลงจากนาคาไปใช ซH งหมายความวาถามการนาคาไปใช H ++n และ n++ จะแตกตางกน ตวอยางดงน )
ตวอยาง ถา x มคา 5 และ y มคา 5 n = x++; จะเปนการกาหนดคา n ใหเทา กบ x แลวเพมคา H 1 ใหกบ x n = ++y; จะเปนการเพมคา H 1 ใหกบ y แลวกาหนดคา n ใหเทา กบ y
ตวดาเนนการนจะใชไดกบเฉพาะตวแปรเทานน) )
ตวอยาง 1.4 การใชตวดาเนนการเพมคาH #include <iostream> using namespace std; int main() { int x=2; int y=2; cout<<"x++ = " << x++<<endl ; cout<<"x = " << x<<endl ; cout<<"++y = " << ++y<<endl ; cout<<"y = " << y<<"\n" ; return 0; }
ผลลพธทHได
x++ = 2
x=3
++y =3
y=3
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
16
ตวดาเนนการสมพนธ (Relational Operator) ตวดาเนนการสมพนธ เปนเครHองหมายทHใชในการเปรยบเทยบและตดสนใจ ซH งผลของการเปรยบเทยบจะเปนได 2 กรณเทานนคอ จรงและเทจ ภาษาซพลสพลสถอวาคาทาง ) ตรรกะ จรง และเทจ มชนดเปน int ดงนนผลการกระทาทางตรรก) ะจงมคาเปนจาน วนเตม และมคาไดเพยงสองคาคอ 1 หรอตวเลขใด ๆ แทนคาความจรงเปนจรง และ 0 แทนคาความจรงเปนเทจ (0 เปนเทจ สวนตวเลขอHน ๆ ทงหมดมคาเปนจรง) ) เครHองหมายทHเปนตวดาเนนการสมพนธม 4 ตวคอ
< (นอยกวา)
> (มากกวา)
<= (นอยกวาเทากบ) และ
>= (มากกวาเทากบ) ตวอยางการใชงาน เชน
a<3 /* ถา a มคาเปน 5 ประโยคนจะไดผลลพธเปน ) 0 (เทจ) */ a>b /* ถา a=10 b=8 ประโยคนจะไดผลลพธเปน ) 1 (จรง) */
ตวอยางการใชงานผดแบบ a =< b /* ผดลาดบ เครHองหมาย = มากอน < */ a < = b /* ผดรปแบบ หามเวนวรรคระหวาง < และ = */
ตวดาเนนการเทากบ (Equality Operator) ตวดาเนนการเทากบ ใชในการเปรยบเทยบคา 2 คา วามคาเทา หรอไมเทากน ผลลพธทHได
จะมเพยง 2 คาเชนเดยวกบผลลพธของตวดาเนนการสมพนธคอ จรง และ เ ทจ เครHองหมายทHเปนตวดาเนนการเทากบม 2 ตวคอ
== (เทากบ)
!= (ไมเทากบ) ตวอยางการใชงาน เชน
c == 'A' /* ถาตวแปร c เกบคาอกขระ A ผลลพธจะไดคาจรง */ k != -2 /* ถาตวแปร k เกบคาตวเลข –2 ผลลพธจะไดคาเทจ */
ตวอยางการใชง านผดแบบ a=b /* การเปรยบเทยบคาตวแปร a กบ b วามคาเทากนหรอไม
กลายเปนการใหคาตวแปร a ดวยคาตวแปร b */ a= =b -1 /* ใชงานผดรปแบบ โดยมชองวางระหวางเครHองหมาย = ทง ) 2 ตว */
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
17
ตวดาเนนการตรรกะ (Logical Operator) ตวดาเนนการตรรกะ ใชในการเปรยบเทยบ และกระทาทางตรรกะกบคาตวเลข หรอคาทHอยในตวแปร ผลลพธทHได จะมเพยง 2 คาเชนเดยวกบผลลพธของตวดาเนนการสมพนธคอ จรง และ เทจ เครHองหมายทHเปนตวดาเนนการทางตรรกะ ม 3 ตวคอ
! (นเสธ)
&& (และ)
|| (หรอ) **หมายเหต นเสธ คอการกลบคาความจรงของคาตวเลข หรอตวแปรทHตามหลง
เครHองหมาย ตวดาเนนการนเสธ ตองการตวถกกระทาการเพยง 1 ตวเทานน ) ตวอยางการใชงาน
!a /* ถาคาความจรงของตวแปร a มคาจรง ผลลพธจากการนเสธจะไดคาเปนเทจ */ !(x+7.7) !(a<b || c<d) /* a มากระทากบ b แลวเอาผลลพธมา || กบ ผลลพธระหวางการกระทา ระหวาง c กบ d จากนนนาผลลพธทHไดจากการ ) || มา ทาการนเสธอก */
ตวอยางการใชงานผดแบบ a! /* ผดลาดบ เครHองหมาย ! มากอนตวแปร */
ตวดาเนนการ && และ || ตองการตวถกกระทา 2 ตว ตวอยางการใชงาน
a&&b /* a และ b ถาคาความจรงของ a เปนจรง และ คาความจรง b เปนจรง ผลลพธทHไดจะมคาความจรงเปนจรง */
a || b /* a หรอ b ถาคาความจรงของ a เปนเทจ และ คาความจรง b เปนเทจ ผลลพธทHไดจะมคา ความจรงเปนเทจ */
!(a<b) && c /* นา a มาเปรยบเทยบกบ b แลวนาผลลพธมานเสธ จากนนมา ) && กบ c */ 3&& (-2 * a + 7)/* หาคาภายในวงเลบกอน แลวนาคาผลลพธทHไดมา && กบ 3 */
ตวอยางการใชงานผดแบบ a && /* ตวกระทาไมครบ */ a| |b /* เวนชอ งวางระหวางเครHองหมาย || */ a & b /* เครHองหมาย && ไมครบ */
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
18
การหาคาของตวดาเนนการตรรกะ ผลของการหาคาตวดาเนนการตรรกะ สรปเปนตารางทH 1-4 ดงน)
P Q P && Q P || Q !P 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0
ตารางทH 1-4 แสดงคาของตวดาเนน การตรรกะ
ตวดาเนนการประกอบ (Compound Operator) ตวดาเนนการประกอบ คอ ตวดาเนนการทHเปนรปแบบยอ ของตวดาเนนการ +ตวแปรทHถกดาเนนการ โดยตวดาเนนการประกอบในภาษาซ มทงหมด ) 10 ตวดงน) += -= /= %= <<= >>= != ^= การกาหนดรปแบบของตวดาเนนการ ประกอบใหกบตวแปรมรปแบบดงน )
จะมความหมายเทากบ
ตวอยางเชน i = i + 1; ตวดาเนนการประกอบคอ i += 1; i = i – a; ตวดาเนนการประกอบคอ i - = a; i = i * (a + 1); ตวดาเนนการประกอบคอ i *=a+1; i = i / (a-b); ตวดาเนนการประกอบคอ i /= a-b;
ตวกระทาบอกขนาด (Sizeof Operator) เปนตวกระทาใชรายงานขนาดของหนวยความจาทHใชในการเกบคา โดยมรปแบบดงน)
ตวอยาง ทH 1.4 การบอกขนาดพนทH) ของชนดตวแปร #include <iostream> using namespace std;
Variable Operator = expression;
Variable = variable Operator expression;
sizeof (ชนดตวแปร)
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
19
int main() { int x; cout<<"x= " << sizeof(x)<<endl ; cout<<"int= " << sizeof(int)<<endl ; cout<<"char= " << sizeof(char)<<endl ; cout<<"float= " << sizeof(float)<<endl ; cout<<"double=" << sizeof(double)<<endl ; return 0; }
ผลลพธ
จากตวอยางขางตน ขนาดทHไดจะ มหนวยเปนจานวนไบต (byte) ตวดาเนนการเง�อนไข (Conditional Operator (?))
ตวดาเนนการเงHอนไข จะประกอบดวย 3 นพจน โดยพจารณาจากนพจนแรกซH งเปนเงHอนไข วาเปนจรงหรอเทจ ถาผลลพธทHไดเปนจรงกจะทานพจนทสอง ถาเปนเทจกจะทานพจน ทHสาม
ตวอยาง 7==5 ? 4 : 3 ผลลพธเทากบ 3 เพราะวา 7 ไมเทากบ 5 7==5+2 ? 4 : 3 ผลลพธเทากบ 4 เพราะวา 7 เทากบ 5+2 5>3 ? a : b ผลลพธเทากบ a เพราะวา 5 มากกวา 3 การเปล�ยนแปลงคาผลลพธเปนตวแปรชนดใหม (Casting) ผลของการกระทาของนพจนจะใหคาออกมาคาหนH งเสมอ คาทHไดจะมชนดสอดคลอง กบ
ตวกระทา และตวถกกระทาภายในนพจนนน ๆ เชน ตวถกกระทาเปน ) int คาทHไดจะเปนชนด int
x= 4
int= 4
char= 1
float= 4
double= 8
condition ? result1 : result2
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
20
ดวย อาจเปลHยนชนดของคานน ๆ ใหมชนดตามทHตองการไดโดย การเขยนชนดของขอมลแบบใหม )ภายในวงเลบ นาหนานพจนน)น ๆ ดงรปแบบตอไปน )
ตวอยาง (int)(a*5.2) เปนการเปลHยนคา output เปนขอมลชนด int (float)(b+5) เปนการเปลHยนคา output เปนขอมลชนด float
ลาดบการทางานกอน-หลงของตวดาเนนการ (Priority of operators) ลาดบการทางานกอน -หลงของตวดาเนนการเปนไปตามตารางทH 1-5
ตวดาเนนการ ทศทางการดาเนนการ (), [],sizeof ซายไปขวา ++, --, +(คาบวก ), -(คาลบ ), ! ขวาไปซาย
*, /, % ซายไปขวา +, - (ตวกระทาการทางคณตศาสตร) ซายไปขวา <<,>> ซายไปขวา <, <=, >, >= ซายไปขวา ==, != ซายไปขวา && ซายไปขวา || ซายไปขวา ? : ขวาไปซาย
=, +=, -=, /=, %=, !=, <<=, >>= ขวาไปซาย
ตารางทH 1-5 แสดงลาดบความสาคญของตวดาเนนการ
นพจนคณตศาสตร (Arithmetic Expression) นพจน (Expression) คอการกระทาเพHอใหไดผลลพธคาหนH งคา ประกอบไปดวยต วถกกระทา (Operands) และตวกระทา (Operators) เขยนเรยงกนไป เชน 3*2-1+7 หรอ a*5 เปนตน เชน การประมวลผลนพจนจะพจารณาลาดบการทางานกอน -หลงของตวดาเนนการ ตวอยาง ลาดบของการทางานของตวดาเนนการทางคณตศาสตร
step 1 y= 2 * 5 * 5 + 3 * 5 + 7;
step 2 y= 10 * 5 + 3 * 5 + 7;
(แบบขอมลแบบใหม ) นพจน
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
21
step 3 y= 50 + 3 * 5 + 7;
step 4 y= 50 + 15 + 7;
step 5 y= 65+ 7;
step 6 y= 72;
1.4. อนพทและเอาทพท (Input and Output) การสงใหเครHองคอมพวเตอรทางานใดH ๆ และรอรบคา ผลลพธจากเครH อง จะตองมการ
ตดตอกบเครHอง โดยการสงผานคาอนพทไปยงเครHองคอมพวเตอร และรบคาเอาทพทจากเครHอง คอมพวเตอรดงน)
อนพท คอ การรบคาขอมลของผใชเขาไปในเครHองคอมพวเตอร อปกรณอนพทมาตรฐาน ไดแก คยบอรดหรอแปนพมพ สแกนเน อร หรอ เมาส
เอาทพท คอ การแสดงผลขอความ ขอมล หรอ คาตวแปรใด ๆ ออกมาแสดงใหกบผใชทางอปกรณแสดงผลเอาทพทตาง ๆ อปกรณเอาทพตมาตรฐาน ไดแก จอภาพ ลาโพง หรอ เครHองพมพ
เครHองคอมพวเตอรทวไป ไมสามารถจดจาตวอกษรในลกษณะของรปรางตวอH กษรได การจดจารปรางตวอกษรเพHอนาไปใชงานนน คอมพวเตอรจะจดจาในรปรหสแทนตวอกษร เมHอ )ตองการแสดงตวอกษร คอมพวเตอรกจะนาคารหสเหลานไปเปดตารางภาพตวอกษร แลวนาภาพ )ตวอกษรตามรหสนนไปแสดงตอไป)
สตรง (String) คอกลมขอมลทHประกอบไปดวยตวอ กขระทHเขยนเรยงกนไป ใชตวแปรชนด อกขระในการเกบภาพขอมลตอหนH งหนวยตวอกษร โดยจะมเครHองหมาย “อญประกาศ (Double quote) ลอมรอบอยเสมอ เชน Hello World! ในภาษาซพลสพลสตองเขยนเปน "Hello World!" รหสควบคม (Control Code)
จะไมถกแสดงบนหนาจอ จะเรมตนจาก H \ (backslash) ซH งจะเปนตวอกษรพเศษ เมHอรวมกบตวอกษรทHดานหลง แลวจะทาใหมความหมายตางๆ เรยก รหสพเศษนวา ) Escape Sequence ตามตารางทH 1-6
Escape Sequence คา หนาท� \a 0x07 เสยงดงออกลาโพงหนHงครง)
\b 0x08 เลHอนเคอรเซอร ไปลบตวอกษรทางซายมอหนHงตวอกษร
\f 0x0c ขนหนาใหม)
\n 0x0a ขนบรรทดใหม)
\r 0x0d เลHอนเคอรเซอรไปทางซายมอสดของบรรทด
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
22
\t 0x09 เลHอนเคอรเซอร ไป 1 แทบในแนวนอน
\\ 0x5c เครHองหมาย \ \′ 0x2c เครHองหมาย ′ \″ 0x22 เครHองหมาย ″ \? 0x3f เครHองหมาย ?
ตารางทH 1-6 แสดงตว Escape Sequence ตาง ๆ ทHมใชในภาษาซพลสพลส
การแสดงผลขอมล ในการแสดงผลขอมลในภาษาซพลสพลสจะมคาสงมาตรฐานในการแสดงผลขอมล หรอ H
คาตวแปรออกมาทางจอภาพ คาสงนนคอ H ) cout (อานวา ซ -เอาท )
ตวอยางทH 1.5 การแสดงผลลพธของการคณกนของเลข 3 จานวน #include <iostream.h> int main() { cout<<”The volume of the box is ”<< 2*3*4; return 0; }
ผลลพธ
การรบคาขอมล ในการรบคาขอมลในภาษาซพลสพลส จะมคาสงมาตรฐานในการรบคาขอมล ผานทาง H
อปกรณอนพทมาตรฐาน (ซH งในทHนคอ แปนพมพ) ) คาสงนนคอ H ) cin (อานวา ซ -อน)
ตวอยาง ท 1.6 จงเขยนโปรแกรมใหคานวณปรมาตรของกลองสH เหลHยมใด ๆ ซH งมสตรในการคานวณคอ กวาง*ยาว*สง โดยรบคาความกวาง , ความยาวและความสง จากแปนพมพ ของกลอง #include <iostream> using namespace std; int main() { int height,width,length;
The volume of the box is 24
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
23
cout<<"Please enter height of box\n"; cin>> height; cout<<"Please enter width of box\n"; cin>> width; cout<<"Please enter length of box\n"; cin>> length; cout<<"\n"; cout<<"The volume of this box is "<<height*width*length<<"\n"; return 0; }
ผลลพธ
จากตวอยางดงกลาว ไดมการกาหนดตวแปร height,width,length เปนแบบจานวนเตม เพHอรบคาความสง , ความกวางและความยาว ตามลาดบ มาใชการคานวณ จะสงเกตเหนวา หลงคาสง H cin จะตามดวยเครHองหมาย >> เสมอ เรยกเครHองหมายนวา ) input operator หรอ extraction operator
สรป โปรแกรมประยกตเปนโปรแกรมทHถกสรางดวยภาษาคอมพวเตอรเชน ภาษาซพลสพลส
ภาษาซชารป ภาษาจาวา เปนตน การเขยนโปรแกรมประยกตดวยภาษาซพลสพลสนน ) จะตองมเขาใจตอไปน )
ภาษาซพลสพลสมองคประกอบทHจาเปน คอ โครงสรางของโปรแกรม รปแบบคาสงH การเขยนคาอธบาย ชนดขอมล ตวแปร คาคงทH นพจน ในการเขยนโปรแกรมจะตองมการกระทากบขอม ลตาง ๆ ซH งตองใชตวดาเนนการ ในภาษาซพลสพลส มตวดาเนนการ คอ ตวดาเนนการทางคณตศาสตร ตวดาเนนการเพมและลดคา ตวดาเนนการH เปรยบเทยบ ตวดาเนนการตรรกะ ตวดาเนนการประกอบ ตวดาเนนการบอกขนาด และการแสดงผลทHเกดขนจากการเขยนโปรแกรมดวย )ฟงกชน การรบคาขอมล และการแสดงผลลพธขอมล
Please enter height of box 12 Please enter width of box 12 Please enter length of box 10 The volume of this box is 1440
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
24
ใบงานหนวยท� 1 ความรเก�ยวกบการเขยนโปรแกรมเชงวตถ ดวย C++ จดประสงค 1. เพHอใหมความรความเขาใจเกยวกบองคประกอบของH ภาษาซพลสพลส 2. เพHอใหมความรความเขาใจเกยวกบH ตวแปรและชนดขอมล 3. เพHอใหมความรความเขาใจเกยวกบตวH ดาเนนการประเภทตาง ๆ 4. เพHอใหสามรถเขยนโปรแกรมโดยใชตวแปร ขอมล ตวดาเนนการตวดาเนนการ และนพจนได
5. เพHอใหสามรถเขยนโปรแกรมโดยใชฟงกชน การรบและแสดงผลขอมลได
กจกรรม : การปฏบตเขยนโปรแกรมภาษา C++ โดยใชโปรแกรม Dev-C++ การทดลองท� 1 ใหพมพโปรแกรมดงตอไปน) พมพลงในโปรแกรม Dev-C++
#include <iostream> using namespace std; int main() { cout << "Welcome to C++!"; cout << endl; cout << "Easy to learn."; return 0; }
หลงจากคอมไพลและรนโปรแกรมขางตนแลว ผลลพธทHได
การทดลองท� 2 ใหพมพโปรแกรมดงตอไปน ) พมพลงในโปรแกรม Dev-C++
#include <iostream> using namespace std; int main() { int width, high, area; width = 15;
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
25
high = 20; cout<<"Rectangle : H="<<high<<" W= "<<width; area = width * high; cout<<"The rectangle area is "<<area; return 0; }
หลงจากคอมไพลและรนโปรแกรมขางตนแลว
การทดลองทH 2 เปนโปรแกรมใชคานวณอะไร
ใหแกไขการทดลองในขอ 2 เพHอหาคานวณผลบวกของ 15 กบ 20
การทดลองท� 3 จงบอกตวแปรตอไปน ) a) Abc e) _2BC i) a_2 b) M/H f) 25or6to4 j) Student Number c) Main g) 3_time k) string d) double h) first-Name
ตวแปรทHตงชHอ) ถกตองคอขอ_____________________________________ ตวแปรทHตงชHอ) ไมถกตองคอขอ ___________________________________
การทดลองท� 4 ใหพมพโปรแกรมดงตอไปน ) พมพลงในโปรแกรม Dev-C++ #include <iostream> using namespace std; int main() { const int b=a+1; //1 const int d=c+3; //2
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
26
const int c=b+2; //3 const int a=1; //4 cout<<a + b + c + d <<endl; return 0; }
4.1 จากโปรแกรมเมHอคอมไพล ทาไมจงเกดขอผดพลาด จงอธบาย
4.2 ใหแกไข โปรแกรมใหถกตอง โดยเรยงลาดบบรรทดหมายเลข 1-4 ใหม
การทดลองท� 5 ใหพมพคาสงลงในโปรแกรมจากตาราง โดยแทนคาในบรรทดทHวาง และผลลพธทHไดH #include <iostream> using namespace std; int main() { double x = 3.0, y = 2.0; int a = 10, b = 2; _________________(ใหใชแทนคาคาสงจากตาราง H ) return 0; }
คาสงH ผลลพธ cout<<x+a<<endl;
cout<<a/b<<endl;
cout<<y/x<<endl;
cout<<a%b<<endl;
cout<<++a%b-1<<endl;
cout<<a--%b+1<<endl;
___________________________________________ ___________________________________________ ___________________________________________
___________________________________________ ___________________________________________ ___________________________________________
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
27
cout<<a+b%b<<endl;
cout<<x/y*b<<endl;
cout<<(a+b)/b%a<<endl;
cout<<9.0/5.0*(a-x)<<endl;
cout<<x+y-a*b%a<<endl;
cout<<57%50/25.0<<endl;
การทดลองท� 6 จากโปรแกรมคานวณหาคาเฉลH ย โดยรบคาเลข 3 จานวนจากแปนพมพ พรอมแสดง ผลลพธทHได คาส�ง จงเขยนประโยคคาสงในตาแหนงทHวาง เพHอใหโปรแกรมทางานไดสมบรณ ลงในตารางH ดานลาง และหามเปลHยนแปลงในสวนคาสงอHน ๆ H
#include <iostream> using namespace std; int main() { double avg, ---(a)---, ---(b)---, ---(c)---; cout<<"Enter 3 numbers"<<endl; cout<<"Enter numbers 1: ";
---(d)---;
cout<<"Enter numbers 2: "; ---(e)---;
cout<<"Enter numbers 3: "; ---(f)---;
avg = ---(g)---; cout<<"Average : "<<avg; return 0; }
ผลลพธจากโปรแกรม
Enter 3 numbers Enter numbers 1: 2 Enter numbers 2: 4 Enter numbers 3: 8 Average :4.66667
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
28
ตาแหนง ประโยคคาสงH ---(a)---
---(b)---
---(c)---
---(d)---
---(e)---
---(f)---
---(g)---
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
29
แบบฝกหดทายหนวยท� 1
ตอนท� 1 จงทาเคร�องหมาย (X) ขอท�ถกตองท�สด 1. การใชแทรกคาอธบาย (comment) ขอใดถก
ก. */ Comments */ ข. ** Comment ** ค. /* Comment */ ง. { Comment }
2. การเขยนโปรแกรมดวยถาษา C++ จะตองมฟงกชนอยางนอย 1 ฟงกชน คอฟงกชนใด ก. start() ข. system() ค. main() ง. program()
3. สญลกษณเครHองหมายทHใชในจบประโยคในภาษา C++ คอขอใด ก. . ข. ; ค. : ง. '
4. การเขยนคาสงทงหมดในฟงกชนหนHงตองอยในเครHองหมายทHใชในการเรมตน และจบ คอH ) H ก. { และ } ข. -> และ <- ค. BEGIN และ END ง. (และ)
5. ขอใด ไมใช ชนดตวแปรในภาษา C++ ก. float ข. real ค. int ง. double
6. ขอใดตงชHอตวแปร) ไมถก ในภาษา C++ ก. 3Hello ข. Hello ค. Hello_world
ง. Float
การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย
30
7. ตวดาเนนการตรรกะ AND คอขอใด ก. & ข. && ค. | ง. |&
9. ผลลพธของนพจนขอใดเปนจรง ก. (1 && !(0 || 1)) ข. !(1 && !(0 || 1)) ค. !(1 && (0 || 1)); ง. (1 && (0 && 1))
9. ถาตองการเพมคาของตวแปร H a ขนมา ) 1 จะตองใชการกระทาอยางไร ก. a++; ข. a+1; ค. a + = 1; ง. ถกทงขอ ก และ ค) 10. ขอใดเปนคาตอบทHถกตองของนพจนตอไปน ) (5%2)+(7%4)%10 ก. 4 ข. 5 ค. 6 ง. 7 ตอนท� 2 จงเขยนโปรแกรมคานวณพนทHรปทรงกลองสHเหลHยมโดย) รบคาความกวาง (W) ความยาว (L) และ ความสง (H) มสตรทHใชในการคานวณดงน)
พนทH) รปทรงกลองสH เหลHยม = 2(พนทHฐาน) )+พนทHผวขาง)