21
ศิริชัย นามบุรี แนะนํ าภาษา C++ เบื ้องตน บทที่ 1 แนะนํ าภาษา C++ เบื ้องตน ประวัติภาษา C , C++ .. 1970 มีการพัฒนาภาษา B โดย Ken Thompson ซึ่งทํ างานบนเครื ่อง DEC PDP-7 ซึ่ง ทํ างานบนเครื ่องไมโครคอมพิวเตอรไมได และยังมีขอจํ ากัดในการใชงานอยู (ภาษา B สืบทอดมาจาก ภาษา BCPL ซึ ่งเขียนโดย Marth Richards) .. 1972 Dennis M. Ritchie และ Ken Thompson ไดสรางภาษา C เพื่อเพิ่มประสิทธิภาพ ภาษา B ใหดียิ่งขึ้น ในระยะแรกภาษา C ไมเปนที ่นิยมแกนักโปรแกรมเมอรโดยทั ่วไปนัก .. 1978 Brian W. Kernighan และ Dennis M. Ritchie ไดเขียนหนังสือเลมหนึ ่งชื ่อวา The C Programming Language และหนังสือเลมนี้ทํ าใหบุคคลทั่วไปรูจักและนิยมใชภาษา C ในการเขียน โปรแกรมมากขึ ้น แตเดิมภาษา C ใช Run บนเครื ่องคอมพิวเตอร 8 bit ภายใตระบบปฏิบัติการ CP/M ของ IBM PC ซึ่งในชวงป . . 1981 เปนชวงของการพัฒนาเครื ่องไมโครคอมพิวเตอร ภาษา C จึงมี บทบาทสํ าคัญในการนํ ามาใชบนเครื ่อง PC ตั ้งแตนั ้นเปนตนมา และมีการพัฒนาตอมาอีกหลาย คาย ดังนั ้นเพื ่อกํ าหนดทิศทางการใชภาษา C ใหเปนไปแนวทางเดียวกัน ANSI (American National Standard Institute) ไดกํ าหนดขอตกลงที ่เรียกวา 3J11 เพื่อสรางภาษา C มาตรฐานขึ ้นมา เรียนวา ANSI C .. 1983 Bjarne Stroustrup แหงหองปฏิบัติการเบล (Bell Laboratories) ไดพัฒนาภาษา C++ ขึ้นรายละเอียดและความสามารถของ C++ มีสวนขยายเพิ่มจาก C ที่สํ าคัญ ไดแก แนวความคิดของการ เขียนโปรแกรมแบบกํ าหนดวัตถุเปาหมายหรือแบบ OOP (Object Oriented Programming) ซึ ่งเปนแนว การเขียนโปรแกรมที่เหมาะกับการพัฒนาโปรแกรมขนาดใหญที่มีความสลับซับซอนมาก มีขอมูลที่ใชใน โปรแกรมจํ านวนมาก จึงนิยมใชเทคนิคของการเขียนโปรแกรมแบบ OOP ในการพัฒนาโปรแกรมขนาด ใหญในปจจุบันนี ขอดีของภาษา C และ C++ โปรแกรมเมอรโดยทั ่วไปในปจจุบันนิยมพัฒนาโปรแกรมดวยภาษา C และ C++ ดวยเหตุผล ดังนี 1. โปรแกรมเมอรสามารถสรางโปรแกรมที ่ควบคุมการทํ างานของคอมพิวเตอรและการโตตอบ ระหวางผูใชกับคอมพิวเตอรไดอยางเต็มประสิทธิภาพ เชน การเขียนโปรแกรมในลักษณะที่ผูใชควบคุม โปรแกรมในสภาพแวดลอม ที่เปน Event-Driven คือ ผูใชสามารถควบคุมเหตุการณตาง ของโปรแกรม

ภาษา C++ Lesson1

Embed Size (px)

DESCRIPTION

ภาษา C++ Lesson1

Citation preview

Page 1: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน!

บทที่ 1แนะนํ าภาษา C++ เบ้ืองตน

♦ ! ประวัติภาษา C , C++ค.ศ. 1970 มีการพัฒนาภาษา B โดย Ken Thompson ซึ่งท ํางานบนเคร่ือง DEC PDP-7 ซึ่ง

ท ํางานบนเคร่ืองไมโครคอมพิวเตอรไมได และยังมีขอจ ํากัดในการใชงานอยู (ภาษา B สืบทอดมาจากภาษา BCPL ซ่ึงเขียนโดย Marth Richards)

ค.ศ. 1972 Dennis M. Ritchie และ Ken Thompson ไดสรางภาษา C เพื่อเพิ่มประสิทธิภาพภาษา B ใหดียิ่งขึ้น ในระยะแรกภาษา C ไมเปนท่ีนิยมแกนักโปรแกรมเมอรโดยท่ัวไปนัก

ค.ศ. 1978 Brian W. Kernighan และ Dennis M. Ritchie ไดเขียนหนังสือเลมหน่ึงช่ือวา The CProgramming Language และหนังสือเลมนี้ท ําใหบุคคลทั่วไปรูจักและนิยมใชภาษา C ในการเขียนโปรแกรมมากขึน้

แตเดิมภาษา C ใช Run บนเคร่ืองคอมพิวเตอร 8 bit ภายใตระบบปฏิบัติการ CP/M ของ IBMPC ซึ่งในชวงป ค. ศ. 1981 เปนชวงของการพัฒนาเคร่ืองไมโครคอมพิวเตอร ภาษา C จึงมีบทบาทส ําคัญในการนํ ามาใชบนเคร่ือง PC ต้ังแตน้ันเปนตนมา และมีการพัฒนาตอมาอีกหลาย ๆ คายดังน้ันเพ่ือกํ าหนดทิศทางการใชภาษา C ใหเปนไปแนวทางเดียวกัน ANSI (American National StandardInstitute) ไดก ําหนดขอตกลงท่ีเรียกวา 3J11 เพื่อสรางภาษา C มาตรฐานข้ึนมา เรียนวา ANSI C

ค.ศ. 1983 Bjarne Stroustrup แหงหองปฏิบัติการเบล (Bell Laboratories) ไดพัฒนาภาษา C++ขึ้นรายละเอียดและความสามารถของ C++ มีสวนขยายเพิ่มจาก C ที่ส ําคัญ ๆ ไดแก แนวความคิดของการเขียนโปรแกรมแบบกํ าหนดวัตถุเปาหมายหรือแบบ OOP (Object Oriented Programming) ซ่ึงเปนแนวการเขียนโปรแกรมที่เหมาะกับการพัฒนาโปรแกรมขนาดใหญที่มีความสลับซับซอนมาก มีขอมูลที่ใชในโปรแกรมจํ านวนมาก จึงนิยมใชเทคนิคของการเขียนโปรแกรมแบบ OOP ในการพฒันาโปรแกรมขนาดใหญในปจจุบันน้ี

♦ !ขอดีของภาษา C และ C++โปรแกรมเมอรโดยทัว่ไปในปจจุบันนิยมพัฒนาโปรแกรมดวยภาษา C และ C++ ดวยเหตุผล

ดังน้ี1. โปรแกรมเมอรสามารถสรางโปรแกรมท่ีควบคุมการทํ างานของคอมพิวเตอรและการโตตอบ

ระหวางผูใชกับคอมพิวเตอรไดอยางเต็มประสิทธิภาพ เชน การเขียนโปรแกรมในลักษณะที่ผูใชควบคุมโปรแกรมในสภาพแวดลอม ที่เปน Event-Driven คือ ผูใชสามารถควบคุมเหตุการณตาง ๆ ของโปรแกรม

Page 2: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

2ในขณะท ํางานไดไมใชผูใชถูกควบคุมโดยโปรแกรม ลักษณะการท ํางานแบบ Event-Driven ไดแกโปรแกรมท่ีทํ างานในสภาพแวดลอมภายใตระบบปฏิบัติการวินโดวส เปนตน

2. ภาษา C และ C++ มีประสิทธิภาพของภาษาอยูในระดับที่ใกลเคียงกับภาษา Assembly มากที่สุด แตมีความยืดหยุนในยึดติดกับฮารดแวรคอมพิวเตอรหรือ Microprocessor รุนใดรุนหน่ึง ท ําใหสามารถนํ าโปรแกรมที่สรางขึ้นไปท ํางานไดกับเคร่ืองคอมพิวเตอรไดทุกรุน

4. ภาษา C++ สนับสนุนการเขียนโปรแกรมในลักษณะเชิงวัตถุหรือ OOP (Object OrientedProgramming) ซ่ึงเปนเทคนิคการเขียนโปรแกรมท่ีนิยมใชเขียนโปรแกรมขนาดใหญท่ีมีจํ านวนขอมูลในโปรแกรมมาก

5. โปรแกรมเมอรสวนใหญจะนิยมใชภาษา C, C++ พัฒนาโปรแกรมประยุกตในงานดานตาง ๆเปนจํ านวนมากในปจจุบัน เพราะประสิทธิภาพของภาษาที่ไดเปรียบภาษาอื่น ๆ

♦ ! ข้ันตอนการพัฒนาโปรแกรมดวย C++การพฒันาโปรแกรมดวยภาษา C++ มีขั้นตอนในการสรางคลายกับภาษาระดับสูงทั่วไป แตภาษา

C++ ไดจัดเตรียมเคร่ืองมือในการพัฒนาโปรแกรมในสภาพแวดลอมท่ีรวมไวดวยกันแบบเบ็ดเสร็จ ที่เรียกวา IDE (Integrated Development Environment) คือ ไดนํ าเคร่ืองมือท่ีจํ าเปนท้ังหมดในการพัฒนาโปรแกรมมารวมไว ดวยกัน ทั้ง Editor, Compiler, Link Library และ Help เพื่อความสะดวกของผูใชในขณะท ําการพัฒนาโปรแกรม

การพฒันาโปรแกรมดวยภาษา C++ มีขั้นตอนตามล ําดับ ดังน้ี1. ข้ันตอนการสราง Source File หรือแฟมตนฉบับเปน Text File โดยการใชสวน Editor ของ

IDE (หรือสรางจาก Editor ของโปรแกรมอ่ืน ๆ ก็ได) เม่ือสรางเสร็จ แลวจึงบันทึก Source File ไว โดยกํ าหนดสวนขยายเปน CPP เชน TEST.CPP (C Plus Plus) โดย Source File น้ีจะตองสรางใหถูกตองตามโครงสรางและไวยากรณของภาษา C++ ทั้งหมดกอน

2. การคอมไพล (Compile) คือการใชตัวโปรแกรมหรือ Compiler ของ C++ ในการแปล SourceFile ใหเปนไฟลภาษาเครื่องที่เรียกวา Object File หรือ Object Code จะไดไฟลที่มีสวนขยายเปน OBJเพิ่มขึ้นมาอีกหนึ่งไฟล เชน TEST.OBJ

3. การเช่ือมโยง (Linking) เปนข้ันตอนการเช่ือมโยงไฟลประเภท OBJ เขากับแฟมจากคลัง(Library) ของภาษา C++ จํ านวน 1 แฟมหรือมากกวา ซึ่งไฟลใน Library น้ีจัดเตรียมไวโดยผูสรางภาษาC++ ผลก็คือจะไดผลลัพธเปนไฟลที่สามารถน ําไปท ํางาน หรือ Run ไดโดยอิสระ หรือท่ีเรียกวาExecutable File มีสวนขยายเปน EXE เชน TEST.EXE เปนตน

ข้ันตอนของการสราง Source File , การ Compile และการ Link ทั้งหมดจะด ําเนินการไดในIDE ของ C++ ท่ีจัดเตรียมไวใหแลวอยางอัตโนมัติ ท ําใหผูเขียนโปรแกรมสามารถท ําสรางโปรแกรมดวยภาษา C++ สะดวกยิ่งขึ้น

Page 3: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

3

♦ ! การใช IDE ของ C++ในการพฒันาโปรแกรมดวยภาษา C++ โดยใช Turbo C++ Version 3.0 มี ซ่ึงไดจัดเตรียมเคร่ือง

มือในการพัฒนาโปรแกรมท่ีเรียกวา IDE มาใหแลว ลักษณะการใชงานใน IDE มีความคลายคลึงกับEditor ของภาษาระดับสูงอื่น ๆ เชน BASIC, PASCAL

การเรียกใช IDE ของ C++ ใหเขาเรียกใชไฟล TC.EXE ดังน้ีC:\TC>TC แลวกดแปน Enter หรือC:\TC\BIN>TC แลวกดแปน Enter (กรณี TC.EXE อยูใน path C:\TC\BIN)

โปรแกรมสภาพแวดลอมของ IDE ดังนี้จอภาพตอไปนี้

! Compile

! รูปแสดง ข้ันตอนการพัฒนาโปรแกรมดวย C++

! Executable File! TEST.EXE

! Source File! TEST.CPP

! Object File! TEST.OBJ Link

C++ Library File! iostream.h, conio.h

Page 4: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

4

การเปด IDE ของ TURBO C++ version 3.0 ในระบบปฏิบัติการ Windows'95 ในลักษณะหนาตางแบบ Graphic ก็สามารถทํ างานไดเชนเดียวกัน โดยการเลอืกโปรแกรม MS-DOS Prompt จากเมนูของ Windows'95 เม่ือเคร่ืองหมาย prompt ของ DOS ปรากฏขึ้นแลว ก็ใหเปลี่ยน directory ไปยัง pathของ Turbo C++ ดังน้ี

C:\>cd\tc [enter]C:\TC>TC [enter] เพื่อ run program

จะปรากฎ IDE ของ Turbo C++ ดังภาพขางลางในรูปแบบ Graphic windows (ถาไมเปนดังภาพให กดแปน Alt+Enter เพื่อสลับการแสดงผลระหวาง Graphic window กับ IDE แบบเดิม

Page 5: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

5

♦ !ตัวอยางวิธีการเขียนโปรแกรมและ Compile ดวย C++จากตัวอยาง Source File ตอไปน้ี ใหทดลองสรางโปรแกรมภาษา C++ โดยใช IDE ของ

Turbo C++ 3.0 ของบริษัท Borland International, Inc. (หรืออาจใช C++ ของบริษัทอ่ืน ๆ )

/*Program : First.CPP Written by: Mr.Sirichai Date : 10/1997 */ #include <iostream.h> void main(void) { cout << "My name is Mr.Sirichai Namburi \n"; cout << "Office : Computer Department,RIPA"; }

! พิมพ Code ของภาษา C++ ใน! Editor น้ี

Page 6: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

6ข้ันท่ี 1 สราง Source File ใน Editor โดยการ Click Mouse ในหนาตาง Editor แลวพิมพ รหัส

คํ าสั่งของภาษา C++ ตามตัวอยางใหถูกตองข้ันท่ี 2 บันทึกแฟม Source File โดยใชคํ าสั่งเมนู File, Save เลือกหรือพิมพชื่อไดรฟและ

ไดเรกทอร่ี จากนั้นพิมพชื่อไฟล First.CPP แลว Click ปุมค ําสั่ง OK หรือใชฟงกชันคีย F2 เพื่อสั่งบันทึกแฟมก็ได (ถาตองการเขียนเปนภาษา C ใหบันทึกเปนไฟลเปนประเภท C เชน First.C)

ข้ันท่ี 3 ใชค ําสั่งสั่ง Run, Run หรือ Ctrl+F9 เพ่ือทํ าการ Compile , Link และทดลอง Runโปรแกรมท่ีสรางข้ึนเพ่ือทํ างาน จากนั้นกดแปน Alt+F5 เพ่ือดูผลการทํ างานของโปรแกรมในหนาตางผลลัพธ (User Screen)

ผลการทํ างานจากโปรแกรม หรือผลการ RUN ไดดังน้ี

My name is Mr.Sirichai NamburiOffice : Computer Department,RIPA

ข้ันท่ี 4 กรณีมีขอผิดพลาด IDE ของ C++ จะไมสามารถท ําการ Compile ได จะแจงขาวสารขอผิดพลาดไวในกรอบหนาตาง Message จะตองแกไขใหถูกตองกอน แลวจึงด ําเนินการในข้ันท่ี 3 ใหม

♦ !โครงสรางของโปรแกรม C++การเขียนโปรแกรมดวย C++ มีโครงสรางของโปรแกรมพืน้ฐานดังตัวอยาง

/*Program : First.CPP Written by: Mr.Sirichai 1. หมายเหตุหรือคํ าอธิบาย (comments) Date : 10/1997 */ #include <iostream.h> 2. Preprocessor, Directive, header file void main() 3. Function main() { cout << "My name is Mr.Sirichai Namburi \n"; 4. Statement ของคํ าสั่งอยูใน block ของ cout << "Office : Computer Department,RIPA"; เคร่ืองหมาย{ …. }แตละ Statement จบดวย ; }

สวนประกอบเบื้องตนของ C++ มีดังนี้1. Comments or Remark หมายถึงสวนท่ีเปนการอธิบายหรือหมายเหตุในโปรแกรม เขียน

อธิบายไวในเครื่องหมาย /* ………*/ หรือเขียนตามหลังเคร่ืองหมาย // ก็ได ในขณะที่แปล Compilerของ C++ จะไมน ําไปแปลดวย แตตองเขียน Comments อยูภายในเครื่องหมายใหถูกตอง โดยที ่ /*…..*/

Page 7: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

7มักใชกับ Comment หลาย ๆ บรรทัด สวน // ใชกับการ Comments ตามหลัง Statement เปนสวนใหญเชน

/*Program : First.CPP Written by: Mr.Sirichai หมายเหตุหรือคํ าอธิบายDate : 10/1997 */หรอืcout << "My name is Mr.Sirichai Namburi \n"; // display text to screen

2. #include <iostream.h> บรรทัดท่ีข้ึนตนดวย # น้ีจะตองมีเสมอในทุกโปรแกรม เรียกวาpreprocessor เรียกคํ าวา include ท่ีตามเคร่ืองหมาย # น้ีวา directive และชื่อไฟลที่อยูในเครื่องหมาย<…..> (จะใชเคร่ืองหมาย “……” แทนก็ได) เรียกวา header file หรือ include file ซึ่งเปนไฟลที่เก็บไวในคลังค ําสั่ง (Library File) ของ C++

ขอสังเกต การเขียน preprocessor directive จะตองเขียนรายการละ 1 บรรทัด และไมตองมีเคร่ืองหมาย ; ที่ทายประโยค

#include <iostream.h> หมายถึง การสั่งให Compiler นํ าสิ่งที่อยูในไฟลที่กํ าหนดช่ือมาให คือไฟล iostream.h มารวมกับ source file ขณะท ําการ link เพ่ือใหได Executable file น่ันหมายความวา ในโปรแกรมท่ีเราสรางข้ึน ไดมีการเรียกใชฟงกชันที่ถูกเก็บไวใน Header File น้ัน

3. void main() เปนการเรียกใชฟงกชันหลักของโปรแกรมคือ ฟงกชัน main() ซึ่งจะตองมีชื่อฟงกชันนี้เสมอ ฟงกชัน main() เปนฟงกชันหลัก จะประกอบไปดวยวงเล็บเปด { เปนการเร่ิมตนภายในมีการประกาศตัวแปร มีประโยคค ําสั่งของภาษา C++ มีชื่อฟงกชันอื่น ๆ ที่ผูเขียนสรางขึ้นแลวเรียกใชภายในฟงกชัน main() แลวจบฟงกชันดวยวงเล็บปด }

คํ าวา void เปนช่ือ ประเภทขอมูล(data type) ที่ใหคาวาง จะท ําใหฟงกชันไมมีการสงคาใด ๆ กลับไปยังชื่อฟงกชันที่ถูกเรียกใช ทั้งนี้ เนื่องจากใน C++ เมื่อมีการเรียกใชฟงกชันใดฟงกชันหนึ่งเมื่อฟงกชันท ํางานเสร็จแลว จะตองสงคาคืนกลับมายังจุดที่เรียกใชชื่อฟงกชันเสมอ เพื่อไมใหสงคืนคาใดๆ กลับมา จึงใชค ําวา void เพื่อก ําหนด main() ใหเปนฟงกชันที่ไมตองคืนคากลับมา ณ จุดเรียกใชหรือเปนฟงกชันประเภทไมมีคาน่ันเอง

4. cout << "My name is Mr.Sirichai Namburi \n"; cout << "Office : Computer Department,RIPA";เปนสวนของประโยคคํ าสั่งหรือ Statement ในภาษา C++ ซึ่งตองเขียนใหถูกตองตามไวยากรณ

ของภาษา ทุกประโยคตองจบดวยเคร่ือง semicolon (;) เสมอ ส ําหรับคํ าวา cout เปน object ซึ่งถูกเก็บไวในไฟล iostream.h ดังน้ันจึงตองกํ าหนดชื่อไฟล iostream.h ไวในสวนของ preprocessor directive ดวย

Page 8: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

8header file ที่สามารถใชรวมกับ #include ใน C++ เพื่อใหสามารถเรียกใชค ําสั่งหรือฟงกชันตาง

ๆ ท่ีผูใชตองการได ไดแกรายชื่อไฟลในตารางตอไปนี้ โดยกอนที่จะเรียกใช header file ใดน้ัน ผูใชจะตองตรวจสอบกอนวาฟงกชันที่ตองเรียกใชถูกสรางไวใน header file ใด เชน ถามีการเรียกใชฟงกชันgetch() ในโปรแกรม จะตองเขียน preprocessor directive เรียกใช header file ที่ชื่อ conio.h เน่ืองจากฟงกชัน getch() ถูกเก็บไวในไฟล conio.h ซึ่งเปนคลังคํ าสั่ง (Library) ของ C++ มีรูปแบบการเรียกใชดังน้ี

#include <conio.h>

ตาราง แสดงรายชื่อ Header file ใน C++ และรายละเอียดกลุมฟงกชันที่เรียกใชไดในแตละ herder fileHeader File Groups of Functions in Header file

alloc.h Declares memory management functions (allocation, deallocation, etc.). assert.h Defines the assert debugging macro. Bcd.h Declares the C++ class bcd and the overloaded operators for bcd and bcd

math functions.Bios.h Declares various functions used in calling IBM-PC ROM BIOS routines.complex.h Declares the C++ complex math functions.Conio.h Declares various functions used in calling the DOS console I/O routines.ctype.h Contains information used by the character classification and character

conversion macros.Dir.h Contains structures, macros, and functions for working with directories

and path names.Direct.h Defines structures, macros, and functions for working with directories and

path names.Dirent.h Declares functions and structures for POSIX directory operations.Dos.h Defines various constants and gives declarations needed for DOS and

8086-specific calls.Errno.h Defines constant mnemonics for the error codes. Fcntl.h Defines symbolic constants used in connection with the library routine

open.Float.h Contains parameters for floating-point routines.fstream.h Declares the C++ stream classes that support file input and output.

Page 9: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

9Header File Groups of Functions in Header file

generic.h Contains macros for generic class declarations.graphics.h Declares prototypes for the graphics functions. io.h Contains structures and declarations for low-level input/output routines.iomanip.h Declares the C++ streams I/O manipulators and contains macros for

creating parameterized manipulators.iostream.h Declares the basic C++ (version 2.0) streams (I/O) routines.Limits.h Contains environmental parameters, information about compile-time

limitations, and ranges of integral quantities.locale.h Declares functions that provide country- and language-specific

information.malloc.h Memory management functions and variables.math.h Declares prototypes for the math functions, defines the macro

HUGE_VAL, and declares the exception structure used by matherr.mem.h Declares the memory-manipulation functions. (Many of these are also

defined in string.h.)memory.h Memory manipulation functions.new.h Access to operator new and newhandler.process.h Contains structures and declarations for the spawn... and exec... functions.search.h Declares functions for searching and sorting.setjmp.h Defines a type used by longjmp and setjmp.share.h Defines parameters used in functions that use file-sharing.signal.h Defines constants and declarations for signal and raise.stdarg.h Defines macros used for reading the argument list in

functions declared to accept a variable number of arguments.stddef.h Defines several common data types and macros.stdio.h Defines types and macros needed for the Standard I/O Package

defined in Kernighan and Ritchie and extended under UNIXSystem V. Defines the standard I/O predefined streams stdin, stdout,stdprn, and stderr, and declares stream-level I/O routines.

Page 10: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

10Header File Groups of Functions in Header file

stdiostr.h Declares the C++ (version 2.0) stream classes for use with stdio FILEstructures.

stdlib.h Declares several commonly used routines: conversionroutines, search/sort routines, and other miscellany.

stream.h Declares the C++ (version 1.2) streams (I/O) routines.string.h Declares several string- and memory-manipulation routines.strstrea.h Declares the C++ stream classes for use with byte arrays in memory.sys\locking.h Definitions for mode parameter of locking function.sys\stat.h Defines symbolic constants used for opening and creating files.sys\timeb.h Declares the function ftime and the structure timeb that ftime returns.sys\types.h Declares the type time_t used with time functions.time.h Defines a structure filled in by the time-conversion routines, and a type

used by other time routines; also provides prototypes for these routines.utime.h Declares the functions utime and the structure utimbufvalues.h Defines important constants, including machine dependencies;

provided for UNIX System V compatibility.varargs.h Defines old style marcos for processing variable argumnet lists.

Superceded by stdarg.h! หมายเหตุ ถาตองการทราบวา header file ประกอบดวยฟงกชั่นใดบาง ใหใชค ําส่ัง Help, Index! จากเมนูใน IDE ของภาษา C++ เพื่อคนหารายละเอียดและตัวอยางการใชฟงกชัน!♦ !ไอเด็นติฟายเออร (identifier) ใน C++! ไอเด็นติฟายเออร (identifier) หมายถึง ชื่อที่มีอยูในสวนตาง ๆ ของโครงสรางโปรแกรม C++ซึ่งไดแก ช่ือของ เลเบล (label) คอนสแตนต (constant) แวเรียเบิลหรือตัวแปร (variable) ฟงกชัน(function) และชนิดของขอมูล (data type)! ประเภทของไอเด็นติฟายเออร มี 3 ประเภท คือ keyword , standard identifier และ user-definedidentifier มีรายละเอียด ดังน้ี! 1. Keyword เปนชื่อที่มีความหมายและวิธีการใชแนนอน ไดก ําหนดไวในภาษา C++ แลวคอมไพเลอรจะไมยอมใหเราใชชื่อนี้ในลักษณะที่แตกตางไปจากที่ก ําหนดไว ตัวอยางของ keyword เชนvoid if else int char float case auto return

Page 11: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

11! 2. Standard Identifier หมายถึง ชื่อที่ก ําหนดข้ึนในคอมไพเลอร ชื่อเหลานี้มีความหมายและวิธีใชตามเงื่อนไขที่คอมไพเลอรก ําหนดไว แตเราสามารถเปลี่ยนแปลงวิธีการท ํางานและเงื่อนไขการใชชื่อเหลาน้ีได โดยคอมไพเลอรจะยกเลิกเงื่อนไขเดิมและเปลี่ยนมาใชเงื่อนไขที่เราก ําหนดขึ้นใหม standardidentifier สวนใหญจะเปนชื่อฟงกชันที่มีอยูใน C++ เชน abort, abs, arc, ftime, getch, open, renameเปนตน

3. User-defined identifier หมายถึง ช่ือท่ีเรากํ าหนดความหมายและเง่ือนไขในการใชข้ึนเองโดยผูใช แตตั้งก ําหนดขึ้นตามกฎเกณฑของ C++ ซึ่งมีรายละเอียดของกฎการตั้งชื่อ ดังน้ี

- อักขระตัวแรกตองเปนตัวอักษรหรือ underscore ( _ ) จะเปนตัวเลขไมได ตัวอักขระตัวตอไปจะเปนตัวอักษร ตัวเลข หรือเคร่ืองหมาย _ ก็ได เรียงกันโดยหามมีชองวางภายในชื่อ

- ชื่อหามซํ ้ากับคียเวิรด (Keywords) ของภาษา C++ เชน main void if- คอมไพเลอรจะถือวาอักษรพิมพเล็กและพิมพใหญ มีความแตกตางกัน ดังน้ัน

Identifier ชื่อFIRST_PROGRAM กับ first_program จะถือวาเปนชื่อตางกันและเปนคนละชื่อกัน- ชื่อมีความยาวไมจํ ากัด แตจะมีความหมายเฉพาะอักขระ 32 ตัวแรกเทาน้ัน แตควรต้ัง

ชื่อใหมีความหมายสอดคลองกับวัตถุประสงคการนํ าช่ือน้ันไปใชภายในโปรแกรม เพื่อความสะดวกในการจดจ ําในขณะเขียนโปรแกรม

♦ !ชนิดของขอมูล(Data Type)ขอมูลใน C++ แบงชนิดขอมูลออกเปน 2 ประเภท คือ1. Simple data type เปนชนิดขอมูลที่ใชแสดงคาของสิ่งใดสิ่งหนึ่งเพียงรายการเดียว เชน คา

ความสูง น้ํ าหนัก จํ านวนนักเรียน อุณหภูมิ ระดับคะแนน เปนตน2. Structure เปนขอมูลชนิดใชแสดงคาของสิ่งใดสิ่งหนึ่งหลายรายการ เชน ความสูงของนัก

เรียนใน ชั้น ม. 6, อุณหภูมิของแตละวันในเดือนตุลาคม, รายชือ่นักเรียนใน 1 กลุม ตองก ําหนดเปนขอมูลชนิดโครงสรางแบบ อารเรย (array) แบบโครงสราง(structure) หรือแบบยูเนียน(union) เปนตน

ขอมูล Simple data type รายละเอียดชนิดของมูลและชวงของขอมูลประเภท Simple data typeแสดงไดดังตารางตอไปน้ี

Page 12: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

12ตาราง แสดงช่ือชนิดของขอมูล ชวงของคาขอมูลและขนาดหนวยความจ ําที่ใช

ชนิดขอมูล คาตํ่ าสุด คาสูงสุด ใชพื้นที่หนวยความจ ําchar -128 127 1 byteunsigned char 0 255 1 byteint -32,768 32,767 2 byteunsigned int 0 65,535 2 byteshort int -32,768 32,767 2 bytelong -2,147,483,648 2,147,483,647 4 byteunsigned long 0 4,294,967,295 4 bytefloat 3.4x10-38 3.4x10+38 4 bytedouble 1.7x10-308 1.7x10+308 8 bytelong double 3.4x10-4932 3.4x10+4932 10 byte

หมายเหตุ ช่ือชนิดของขอมูลไดแก char, unsigned char , int , unsigned int, short in, long ,unsigned long , float , double , long double เปน keyword ที่น ําไปก ําหนดประเภทขอมูลที่จะใชในโปรแกรม

• ! ตัวอยางโปรแกรม size_mem.cpp เปนตัวอยางโปรแกรมแสดงขนาดของหนวยความจํ าท่ีขอมูลแตละชนิดใชพื้นที่หนวยความจ ํา โดยใช คียเวิรด sizeof ซึ่งใหคาขนาดหนวยความจํ าท่ีขอมูลชนิดนั้นใช มีหนวยเปน byte

/*Program : size_mem.cpp Process : Display size of memory for each simple data type*/#include <iostream.h>#include <conio.h>void main(){ clrscr(); //clear screen in conio.h cout<< "Size of char = "<<sizeof(char)<< " bytes"<<endl; cout<< "Size of unsigned char = "<<sizeof(unsigned char)<< " bytes"<<endl; cout<< "Size of int = "<<sizeof(int)<< " bytes"<<endl; cout<< "Size of unsigned int = "<<sizeof(unsigned int)<< " bytes"<<endl; cout<< "Size of short int = "<<sizeof(short int)<< " bytes"<<endl; cout<< "Size of long = "<<sizeof(long)<< " bytes"<<endl; cout<< "Size of unsigned long = "<<sizeof(unsigned long)<< " bytes"<<endl; cout<< "Size of float = "<<sizeof(float)<< " bytes"<<endl; cout<< "Size of double = "<<sizeof(double)<< " bytes"<<endl; cout<< "Size of long double = "<<sizeof(long double)<< " bytes"<<endl; getch(); //wait for press any key}

Page 13: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

13♦ !การประกาศตัวแปร (Variable Declaration) และการกํ าหนดคาใหตัวแปรใน C++

ตัวแปร (Variables) ในภาษา C++ หมายถึง ชื่อที่ก ําหนดข้ึนเพ่ือใชเก็บคาของขอมูลหรือคาคงท่ีประเภทตาง ๆ ในขณะโปรแกรมท ํางาน ซ่ึงผูเขียนโปรแกรมตองต้ังช่ือตัวแปรตามกฎเกณฑการต้ังช่ือประเภท user defined identifier

การใชตัวแปรในภาษา C++ จะตองมีการประกาศ (Declaration) ช่ือตัวแปรและประเภทของตัวแปร (Data type) ไวกอน จึงจะสามารถน ําตัวแปรไปใชในโปรแกรมได มีรูปแบบการประกาศตัวแปรดังน้ี

โดยที ่ Data_type คือ ช่ือของประเภทขอมูลของตัวแปร ที่สามารถเก็บคาได เชน int, floatvariable_name คือ ชื่อของตัวแปรที่ผูใชก ําหนดเอง ถาในประเภทนั้นมีมากกวา 1 ตัวให

ใชเคร่ืองหมาย , แยก และจบประโยคดวยเคร่ืองหมาย ; (semi-colon)การประกาศตวัแปรเพือ่ใชในโปรแกรมของ C++ มี 2 ลักษณะ คือ1. definition คือ เปนการประกาศเพื่อก ําหนดความหมาย เปนประโยคคํ าสั่งที่ประกอบดวย ชื่อ

ประเภทของตัวแปร และตัวแปร โดยทั่วไปมักจะประกาศไวตอนตน ๆ ของฟงกชัน หรือโปรแกรม เชน#include <iostream.h>void main(){ int number; float sales, purchase; การประกาศตัวแปรในลกัษณะ definition char grade; …}2. การประกาศแบบกํ าหนดคา ณ ตํ าแหนงท่ีใช หมายถึง การประกาศตัวแปร ณ ตํ าแหนงท่ี

ตองการใชตัวแปรในโปรแกรม ก็จะประกาศพรอมกับหนดคาใหกับตัวแปรทันท ี ดังตัวอยางโปรแกรมตัวอยางโปรแกรม pos_var.cpp แสดงวิธีการประกาศตัวแปร ณ จุดท่ีตองการใชในโปรแกรม

/*Program : pos_var.cpp Process : Show declared varaible at any position in program */#include <iostream.h>#include <conio.h>void main()

Data_type variable_name; หรือ! Data_type variable_name1, variable_name2,varible_name3, … ;

Page 14: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

14{ float sale,price; clrscr(); sale=500.25; price=5.25; float total=sale*price; ประกาศตัวแปร total ณ ตํ าแหนงท่ีตองการใช cout<< "Total Sale = "<<total; getch();}

วิธีการกํ าหนดคาใหแกตัวแปรใน C++ ทํ าได ดังนี้1. การใชประโยคคํ าส่ังเคร่ืองหมายเทากับ (=) โดยกํ าหนดใหชื่อตัวแปรที่จะใชเก็บคาอยูทางซาย

มือของ เคร่ืองหมาย = ตัวแปรหรือคาคงท่ีอยูทางดานขวาของเคร่ืองหมาย ดังเชนตัวอยางโปรแกรมตอไปนี้

• ! ตัวอยางโปรแกรม variable.cpp แสดงการกํ าหนดคาคงท่ีใหกับตวัแปรในโปรแกรม โดยใชเคร่ืองหมายเทากับ =

/*Program : variable.cpp Process : Display set value of varible */#include <iostream.h>#include <conio.h>void main(){ int number; //declaration variable การประกาศตัวแปรภายในฟงกชันmain() float sales,purchase; //declaration variable // set value of variable number = 50; sales = 5000.75; การก ําหนดคาคงที่ใหกับตัวแปร purchase = 3500.50; clrscr(); // function clear screen from <conio.h> //show value from variable cout << "Show varlue of variable"<<endl; cout << "number = " << number<<endl; cout << "sales = " << sales<<endl; cout << "purchase = " << purchase; getch(); // function getch() for wait to press anykey from <conio.h>}

หมายเหตุ กรณีเปนตัวแปรประเภทตัวเลข คาคงท่ีดานขวามือหามมีเคร่ืองหมายวรรคตอนใด ๆทั้งสิ้น ยกเวนจุดทศนิยม สวนตัวแปรประเภท char กํ าหนดคาคงท่ีในเคร่ืองหมาย '_' เชน ch = 'A';

2. การกํ าหนดคาเร่ิมตนใหแกตัวแปร เมื่อมีการประกาศใชตัวแปรในลักษณะ definition มีการกํ าหนดคาคงที่ใหแกตัวแปรทันที

Page 15: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

15• ! ตัวอยางโปรแกรม varia2.cpp แสดงการกํ าหนดคาใหแกตัวแปร number, sales, purchase

ดวยเคร่ืองหมาย = เม่ือประกาศตัวแปรในโปรแกรม/*Program : varia2.cpp Process : Display set value of varible */#include <iostream.h>#include <conio.h>void main(){ int number=500; //declaration and set value variable ประกาศตัวแปร float sales=500.50,purchase=3500.75; //declaration and set value variable พรอมกํ าหนดคา clrscr(); // function clear screen from <conio.h> //show value from variable cout << "Show varlue of variable"<<endl; cout << "number = " << number<<endl; cout << "sales = " << sales<<endl; cout << "purchase = " << purchase; getch(); // function getch() for wait to press anykey from <conio.h>}

3. การกํ าหนดคาตัวแปรโดยการรับคาทางแปนพิมพ โดยการใชฟงกชันในการรับขอมูล (Input)เขาไปเก็บไวในตัวแปร จะกลาวรายละเอียดตอไปในบทที่ 2

ตัวแปรประเภท Global และ Localการประกาศใชตัวแปรใน C++ สามารถท ําได 2 ลักษณะ คือ1. Global variable คือ ตัวแปรท่ีกํ าหนดหรือประกาศไวนอกฟงกชันใด ๆ ทุกฟงกชัน

สามารถนํ าตัวแปรประเภท Global ไปใชไดทุกฟงกชัน เพราะเปนลักษณะการประกาศแบบสารธรณะ2. Local variable คือ ตัวแปรท่ีกํ าหนดหรือประกาศไวในฟงกชันใดฟงกชันหนึ่ง

สามารถนํ าตัวแปรนั้นไปใชไดเฉพาะในฟงกชันนั้น ๆ เทาน้ัน ฟงกชันอื่นไมสามารถน ําไปใชได เพราะประกาศในลักษณะสวนตัวหรือเฉพาะที่

หมายเหตุ กรณีท่ีมีการต้ังช่ือตัวแปรประเภท Global และ Local ซํ ้ากัน จะถือวาเปนตัวแปรคนละตัวกัน เนื่องจากใชพื้นที่ในหนวยความจํ าในการเก็บขอมูลในตํ าแหนงที่ตางกัน แตถามีการเรียกใชชื่อตัวแปร C++ จะนํ าตัวแปรประเภท Local มาใชกอนเสมอ

• ! ตัวอยางโปรแกรม glo_loc.cpp แสดงการประกาศตวัแปรประเภท Global และ Local ในโปรแกรม

Page 16: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

16/*Program : glo_loc.cpp Process : define global and locat variable */ #include <iostream.h> #include <conio.h> char grade; //defined global variable ประกาศตัวแปรประเภท Global Variable void main() { int midterm,final,total; //defined local variable in function main() ประกาศตัวแปรประเภทLocal clrscr(); Variable ในฟงกชันmain() midterm = 30; final=50; total=midterm+final; grade='A'; cout<< "You get total score "<<total<<" And get grade = " <<grade; getch(); }

♦ !การกํ าหนดตัวแปรคงท่ี(Constant)ตัวแปรคงท่ีหรือคอนสแตนต (Constant) หมายถึง ตัวแปรที่เก็บคาคงที่ที่ไมสามารถเปลี่ยนแปลง

ได การก ําหนดคอนสแตนต มีจุดประสงคเพื่อปองกันมิใหมีการเปลี่ยนแปลงคาของตัวแปรนั้นในขณะท ํางาน สามารถก ําหนดไดทั้งในลักษณะที่เปน Global และ Local รูปแบบการก ําหนดคาคอนสแตนต ใชคํ าวา const นํ าหนาประเภทขอมูลและช่ือคอนสแตนต ดังน้ี

const ชนิดขอมูล ช่ือคอนสแตนต = คาคงที่;

ตัวอยางเชนconst int Day = 7;const int month = 12;const float PI = 3.1418926;const float Amount = 1.0E+2; // คือ 1.0 * 102

const float Rate = 1E-3; // คือ 1 * 10-3

const char name = 'A'; // ใหคารหัส ASCII ของ A คือ 65const char ch = 'B'; // ใหคารหัส ASCII ของ B คือ 66

• ! ตัวอยางโปรแกรม contst.cpp แสดงการกํ าหนดและการใช constant ในโปรแกรม มีรายละเอียด ดังนี้

Page 17: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

17/*Program : const.cpp Process : Display constant in program*/#include <iostream.h>#include <conio.h>const float rate = 0.05; // Global constant

void main(){ const float tax=0.03; //Local constant float sales,income,total_tax; clrscr(); sales = 8500.50; income = sales*rate; total_tax=income*tax; cout<< "Income = "<< income <<endl; cout<< "Total tax = "<< total_tax <<endl; getch();}

♦ !การดํ าเนินการทางคณิตศาสตร (Arithmetic Operations)ในการค ํานวณทางคณิตศาสตรของภาษา C++ มีการใชเครื่องหมายส ําหรับการคํ านวณ ดังน้ี

ตาราง แสดงเคร่ืองหมายคํ านวณทางคณิตศาสตรใน C++ตัวดํ าเนินการ ความหมาย ตัวอยาง ผลลัพธ

- การลบ 10-5 5+ การบวก 10+5 15* การคูณ 10*5 50/ การหาร 10/5 2

% การหารคิดเฉพาะเศษ 9%2 1-- การลดคาครั้งละ 1 --x หรือ x-- x=x-1++ การเพิ่มคาครั้งละ 1 ++x หรือ x++ x=x+1+= การบวกสะสมในตัวแปร y+=x y=y+x-= การลบคาจากตัวแปร y-=x y=y-x*= การคูณคาจากตัวแปร y*=x y=y*x/= การหารจากตัวแปร y/=x y=y/x

%= การหารคิดเศษจากตัวแปร y%=x y=y%xตาราง แสดงล ําดับการประมวลผล (Precedence) ของเคร่ืองหมายคณิตศาสตร

เคร่ืองหมายคณิตศาสตร ลํ าดับการประมวลผล หมายเหตุ

Page 18: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

18() 1 ถาเครื่องหมายมีลํ าดับการ++, -- (ใชแบบ prefix) 2 ประมวลผลระดับเดียวกันให- (เคร่ืองหมายหนาตัวเลข) 3 ดํ าเนินการจากซายไปขวา* / % 4+ - 5+= -= *= /= %= 6

ขอสังเกต การใชโอเปอเรเตอร (Operator) ในการเพิ่มคา(increment) ++ และลดคา(decrement)-- มีขอควรสังเกต ดังน้ี

1. การเพิ่มคาขึ้นทีละ 1 ไดแกการเพิ่มคาใหแกตัวแปรครั้งละ +1 เชนcount = count +1;count +=1;count++;++count;ส ําหรับ ++ มีวิธีการใช 2 วิธ ีคือ แบบ prefix และ แบบ postfix มีขอแตกตางกัน ดัง

ตัวอยางตอไปน้ีเปนการใช ++ แบบ prefixprice = 5;volume = 3;value = price * ++volume; // คาของ value คือ 20 คาของ volume คือ 4จากประโยคคํ าสั่งนี ้ คาของ volume จะเพิ่มขึ้น 1 กอนท่ีจะนํ าไปคูณกับ price แลวนํ า

ไปเก็บไวในตัวแปร valueตอไปน้ี ลองพิจารณาการใช ++ แบบ postfix

price = 5;volume = 3;value = price * volume++; // คาของ value คือ 15 คาของ volume คือ 4จากประโยคคํ าสั่งนี ้ คาของ volume คือ 3 จะถกูนํ าไปคูณกับ price คือ 5 กอนแลวนํ า

ไปเก็บไวในตัวแปร value จากน้ันจึงเพ่ิมคาของ volume อีก 1 จึงมีคาเปน 42. การลดคาลงทีละ 1 ไดแกการลดคาของตัวแปรครั้งละ -1 เชน

count = count -1;count -=1;count--;--count;ส ําหรับ -- มีวิธีการใช 2 วิธ ีคือ แบบ prefix และ แบบ postfix มีขอแตกตางการใชเชน

เดียวกับการใช ++

Page 19: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

19

♦ !การเปล่ียนแปลงชนิดขอมูลในนิพจนคณิตศาสตร ในนิพจนทางคณิตศาสตรเม่ือมีการใชเคร่ืองหมายคํ านวณระหวางขอมูลหรือตัวแปรท่ีมีชนิด

(Data Type) แตกตางกัน เชน ชนิด float บวกกับ ชนิด int ใน C++ จะปรับประเภทขอมูลของผลลัพธที่ไดจากการค ํานวณใหเปนชนิดขอมูลท่ีมีอันดับสูงกวาโดยอัตโนมัติ ดังแสดงอันดับความส ําคัญของชนิดขอมูลในตารางตอไปน้ีตาราง แสดงอันดับความส ําคัญ(Precedence) ของขอมูลประเภท Simple Data Type ชนิดตาง ๆ

ชนิดขอมูล อันดับ ตัวอยางlong doubledoublefloatlongintchar

สูงสุด

ต่ํ าสุด

int * long = longchar + int = intint + float = floatint * double = doublefloat + double = doublelong + long dobule = long double

♦ !เคร่ืองหมายเปรียบเทียบและตรรก (Comparison and Logical Operators)การเปรียบเทียบ หมายถึง การหาวาเม่ือนํ าคาที่อยูทางดานซายของเครื่องหมายกับคาที่อยูทางขวา

ของเคร่ืองหมายเปรียบเทียบ มาเปรียบเทียบกันแลวจะไดผลลัพธเปนจริงหรือเท็จ ซึ่งในแตละกรณีเมื่อเปรียบเทียบกันแลว จะไดคาเปนจริงหรือเปนเท็จเพียงคาเดียวเทาน้ัน โดย C++ จะใชคา 0 แทนเท็จ และ1 แทน จริง และมีล ําดับในการประมวลผลจากซายไปขวา ถาไมมีวงเล็บก ํากับไว มีเคร่ืองหมายเปรียบเทียบดังนี้

ตาราง แสดงเครื่องหมายเปรียบเทียบใน C++เคร่ืองหมาย ความหมาย ตัวอยาง ผลลัพธ

> มากกวา 5>1 1 (จริง)< นอยกวา 5<1 0 (เท็จ)

== เทากับ 5==1 0 (เท็จ)!= ไมเทากับ 5!=1 1 (จริง)>= มากกวาหรือเทากับ 5>=5 1 (จริง)<= นอยกวาหรือเทากับ 5<=5 1 (จริง)

Page 20: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

20การหาคาลอจิก (Logic) หมายถึง การหาผลลัพธจาก Logic operator ซึ่งจะใหคาผลลัพธออกมา

เปนจริงหรือเท็จกรณีใดกรณีหน่ึงเทาน้ัน เคร่ืองหมายท่ีเปน Logical operator ใน C++ แสดงไวในตารางดังน้ีตาราง แสดงเคร่ืองหมายเปรียบเทียบเชิงตรรก (Logical operator) ใน C++

เคร่ืองหมาย ความหมาย ตัวอยาง ผลลัพธ&& AND (5==5)&&(5>3) 1 (จริง)

|| OR (5<1)||(5>3) 1 (จริง)! NOT !(5==5) 0 (เท็จ)

ตาราง แสดงคาเปนจริงและเท็จในกรณีตาง ๆ ท่ีเปนไปไดท้ังหมดของ AND, OR , NOT โดยกํ าหนดใหA และ B คือประโยคตรรกท่ีใหคาจริงหรือเท็จ

A B !A A&&B A||Bจริง จริง เท็จ จริง จริงจริง เท็จ เท็จ เท็จ จริงเท็จ จริง จริง เท็จ จริงเท็จ เท็จ จริง เท็จ เท็จ

• ! ตัวอยางโปรแกรม logic_tst.cpp เปนการแสดงคาตรรกท่ีไดจากการเปรียบเทียบดวยเคร่ืองหมายเปรียบเทียบและ ตัวดํ าเนินการตรรก โดยคา 0 แทน เท็จ และ 1 แทนจริง ดังนี้

/*Program : logic_tst.cpp Process : Test logical value of expression*/#include <iostream.h>#include <conio.h>

void main(){ clrscr(); cout<< "Display Logic Operation :\a"; cout<< "\nLogic value of expression (3==5) :" <<(3==5); cout<< "\nLogic value of expression (5==5) :" <<(5==5); cout<< "\nLogic value of expression (3<=5) :" <<(3<=5); cout<< "\nLogic value of expression (3>=5) :" <<(3>=5); cout<< "\nLogic value of expression (3<=5)&&(5>3) :" <<((3<=5)&&(5>3)); cout<< "\nLogic value of expression ((3<=5)&&(3>5)) :" <<((3<=5)&&(3>5)); cout<< "\nLogic value of expression ((3<=5)||(3>5)) :" <<((3<=5)||(3>5)); cout<< "\nLogic value of expression ((8<=5)||(3>=5)) :" <<((8<=5)||(3>=5)); cout<< "\n\nValue 1 is true, 0 is false ....press any key"; getch();}

Page 21: ภาษา C++ Lesson1

!

ศิริชัย นามบุรี แนะน ําภาษา C++ เบ้ืองตน

21♦ !แบบฝกหัดทายบท1. จงเขียนโปรแกรมเพ่ือคํ านวณหาผลลัพธของนิพจนทางคณิตศาสตรตอไปนี้โดยก ําหนดใหตัวแปร

A=50 B=30 C=5 D=3 E = 101.1 (A+B)*(E-D) 1.6 --D+C+B--1.2 ++D+C*E 1.7 25*D/5+101.3 (25+A)/C+B 1.8 A+B--+D1.4 A*=D 1.9 C*2+E*51.5 20*C+B+++D/2 1.10 (A*2)+B/C-15

2. จงบอกขนาดของหนวยความจํ าท่ีตัวแปรชนิดตาง ๆ ตอไปน้ีตองใชในการจองพ้ืนท่ีในหนวยความจํ าchar, int , float, double, long int, long double

3. จงเขียนโปรแกรมเพ่ือหาคํ าตอบวาประโยคตอไปน้ีเปนจริงหรือเท็จ ถาก ําหนดใหตัวแปรA = 20 B=30 C = 2 D = 5 E=503.1 (A>=B) && (A==A)3.2 (B+C>A+D)|| (B+C<A+D)&&(D<10)3.3 (A==20) && (B>=30)3.4 (50==E ) || (!(D<=E)3.5 !(D!=5)3.6 (B+C+20)!=503.7 C==(D-3)3.8 (A/C<=B) && (C+D<=A) || (D>A)3.9 (A%C+5)==(E/5-10)3.10 A<B&&D<E