+ H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' '...

30
การโปรแกรมเชิงวัตถุ 1 3901-2006 นายเรวันต์ เอาทองทิพย์ หน่วยที 1 ความร้เกียวกับการเขียนโปรแกรมเชิงวัตถ ุ ด้วย C++ หัวข้อเรือง 1.1 ภาษาซีพลัสพลัสเบืองต้น (Structure of a C++ program) 1.2 ตัวแปรและชนิดข้อมูล (Variables and Data types) 1.3 เครืองหมายดําเนินการ (Operators) 1.4 อินพุทและเอาท์พุท (Communication through console) สาระสําคัญ โปรแกรมประยุกต์ทีมีการใช้งานมากมายในปัจจุบัน เกดจากโปรแกรมเมอร์สร้างขึนมา โดยใช้ภาษาคอมพิวเตอร์ในการสร้างโปรแกรมประยุกต์ ภาษาซีพลัสพลัส เป็นภาษาหนึ งที โปรแกรมเมอร์ใช้งานในการสร้างโปรแกรมประยุกต์ และจะต้องใช้ตัวแปลภาษาภาษาซีพลัสพลัส ในการเปลียนภาษาคอมพิวเตอร์ทีโปรแกรมเมอร์สร้างเป็ นไฟล์ทีเครืองคอมพิวเตอร์สามารถทํางาน ได้จากโปรแกรมทีเขียนขึนมา ในการศึกษาภาษาซีพลัสพลัส จะต้องทําความเข้าใจเกยวกบ ไวยากรณ์ ชนิดของข้อมูล ตัวแปร ตัวดําเนินการทางคณิตศาสตร์ ตัวดําเนินการเปรียบเทียบ ตัว ดําเนินการตรรกะ การใช้ฟังกชัน ทําหน้าทีรับข้อมูล ฟังกชันทําหน้าทีแสดงผลลัพธ์จากโปรแกรม ของภาษาซีพลัสพลัส จดประสงค์การเรียนการสอน จดประสงค์ทัวไป (ปลายทาง) นักศึกษามีความรู้ความเข้าใจเกยวกบ ตัวแปร ชนิดข้อมูล ตัวดําเนินการและการแสดงผล จดประสง ค์เชิงพฤติกรรม (นําทาง) เมือศึกษาหน่วยนีแล้วนักศึ กษาสามารถ 1. เข้าใจหลักการเขียนโปรแกรมและการใช้งานภาษาซีพลัสพลัส เบืองต้นได้ 2. ใช้ตัวแปรและชนิดข้อมูลได้ 3. ใช้เครืองหมายดําเนินการในการเขียนโปรแกรมได้ 4. เขียนโปรแกรมการรับและแสดงผลข้อมูลได้ 5. แสดงกจนิสัยในการทํางานด้วยความประณีต รอบคอบและปลอดภัย ตระหนักถึงคุณภาพของงานและมีจริ ยธรรมในงานอาชีพ

Transcript of + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' '...

Page 1: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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. แสดงกจนสยในการทางานดวยความประณต รอบคอบและปลอดภย ตระหนกถงคณภาพของงานและมจรยธรรมในงานอาชพ

Page 2: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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ยนเปนแบบออบเจกต จงไมตองมนามสกล กได

Page 3: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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 เปนฟงกชนหลกของโปรแกรม จาเปนตองมทกโปรแกรม

Page 4: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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 งเรยกว าไฟล

Page 5: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 6: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 7: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 8: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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 แสดงปมการใชตวแปลภาษา

Page 9: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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สรางขนมาเรยกวา) ตวแปร

Page 10: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 11: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

ชนดตวแปร ช�อตวแปร , ช�อตวแปร , ช�อตวแปร,.....;

ชนดตวแปร ช�อตวแปร =คาของขอมล;

Page 12: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 13: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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 ชนดตวแปร ช�อตวแปร = คาท�ตองการกาหนด;

Page 14: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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 ช�อตวแปร (ช�อท�ใชแทน) คาท�ตองการกาหนด

Page 15: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 16: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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 ตว */

Page 17: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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องหมาย && ไมครบ */

Page 18: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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 (ชนดตวแปร)

Page 19: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 20: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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;

(แบบขอมลแบบใหม ) นพจน

Page 21: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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อนเคอรเซอรไปทางซายมอสดของบรรทด

Page 22: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 23: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 24: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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;

Page 25: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 26: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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;

___________________________________________ ___________________________________________ ___________________________________________

___________________________________________ ___________________________________________ ___________________________________________

Page 27: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 28: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 1 3901-2006 นายเรวนต เอาทองทพย

28

ตาแหนง ประโยคคาสงH ---(a)---

---(b)---

---(c)---

---(d)---

---(e)---

---(f)---

---(g)---

Page 29: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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

Page 30: + H ' ' 5 H 1 ' 2 ! # 9 I @ 5 H ' ' 1 2 # @ 5 ' B # A # ! @ 4 ' 1 8 I ' ' C++bls.buu.ac.th/~s54143/19Feb27/ThaiCPlus/unit1_intro... · 2012-02-25 · การโปรแกรมเชิงวัตถุ

การโปรแกรมเชงวตถ 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ผวขาง)