29
240-101 Introduction to Computer Programming บทที2. Introduction to C++ Language Programming แนะนําการเขียนโปรแกรมดวยภาษาซีพลัสพลัส วัตถุประสงค เพื่อใหนักศึกษาสามารถ 1. เขาใจหลักการเขียนโปรแกรมและการใชงานภาษาซีพลัสพลัส เบื้องตนได หัวขอ 1. แนะนําภาษาซีพลัสพลัสเบื้องตน 1.1 รูปแบบการทํางานของภาษาซีพลัสพลัส 1.2 การคอมไพลและลิงคโปรแกรมในภาษาซีพลัสพลัส 1.3 โครงสรางของโปรแกรมที่เขียนดวยภาษาซีพลัสพลัส 1.4 รูปแบบคําสั่งในภาษาซีพลัสพลัส 1.5 การเขียนคําอธิบายในภาษาซีพลัสพลัส 1.6 ตัวแปรในภาษาซีพลัสพลัส 1.7 ตัวประมวลผลกอน 1.8 คําสั่งและนิพจน 2. อินพุทและเอาทพุท 2.1 บทนํา 2.2 ASCII 2.3 การแสดงผลขอมูล 2.4 การรับคาขอมูล 3. เครื่องหมายดําเนินการ 3.1 ตัวดําเนินการทางคณิตศาสตร 3.2 ตัวดําเนินการสัมพันธและตัวดําเนินการตรรกะ 3.3 ตัวดําเนินการประกอบ 3.4 ตัวดําเนินการบอกขนาด 3.5 ลําดับการทํางานกอน-หลังของตัวดําเนินการ 3.6 การเปลี่ยนแปลงคาผลลัพธเปนตัวแปรชนิดใหม

บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

บทที่ 2. Introduction to C++ Language Programmingแนะนําการเขียนโปรแกรมดวยภาษาซีพลัสพลัส

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

หัวขอ1. แนะนําภาษาซีพลัสพลัสเบื้องตน

1.1 รูปแบบการทํางานของภาษาซีพลัสพลัส1.2 การคอมไพลและลิงคโปรแกรมในภาษาซีพลัสพลัส1.3 โครงสรางของโปรแกรมที่เขียนดวยภาษาซีพลัสพลัส1.4 รูปแบบคําสั่งในภาษาซีพลัสพลัส1.5 การเขียนคําอธิบายในภาษาซีพลัสพลัส1.6 ตัวแปรในภาษาซีพลัสพลัส1.7 ตัวประมวลผลกอน1.8 คําสั่งและนิพจน

2. อินพุทและเอาทพุท2.1 บทนํา2.2 ASCII2.3 การแสดงผลขอมูล2.4 การรับคาขอมูล

3. เครื่องหมายดําเนินการ3.1 ตัวดําเนินการทางคณิตศาสตร3.2 ตัวดําเนินการสัมพันธและตัวดําเนินการตรรกะ3.3 ตัวดําเนินการประกอบ3.4 ตัวดําเนินการบอกขนาด3.5 ลําดับการทํางานกอน-หลังของตัวดําเนินการ3.6 การเปลี่ยนแปลงคาผลลัพธเปนตัวแปรชนิดใหม

Page 2: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

1. แนะนําภาษาซีพลัสพลัสเบ้ืองตน (Introduction to basic C++ language)ซีพลัสพลัสเปนภาษาที่ทํางานไดอยางกวางขวาง เขาใจงาย เขียนงาย ตลอดจนมีคําสั่งที่อํานวย

ความสะดวกใหกับผูเขียนที่จะสามารถเรียกใชไดตามที่ตองการ ซึ่งผูเขียนโปรแกรมควรจะตองศึกษาและทําความเขาใจในกฏเกณฑเหลานั้นใหดีเสียกอน ก็จะทําใหสามารถนําภาษาซีพลัสพลัสมาใชงานไดอยางมีประสิทธิภาพ กฏเกณฑของเครื่องมือที่ใชเขียนโปรแกรมภาษาซีพลัสพลัสของแตละผูผลิต จะมีขอแตกตางกันไปบางเล็กนอย

1.1 รูปแบบการทํางานของภาษาซีพลัสพลัสในภาษาซีพลัสพลัสจะเขียนโปรแกรมโดยการเรียกใชแตละชุดของโปรแกรมที่เรียกวา ฟงกชัน

(Function) หรือในโปรแกรมภาษาอื่นอาจจะเรียกวา โปรแกรมยอย หรือชุดคําสั่งยอย (Procedure) นั่นเอง ฟงกชันเหลานี้จะมีชื่ออะไรก็ได กี่ฟงกชันก็ได แตอยางนอยตองมี 1 ฟงกชันที่ชื่อ main เพื่อใหโปรแกรมเร่ิมทํางานที่ฟงกชันนี้ ดังรูป โปรแกรม การทํางาน

ฟงกชัน mainint main ( ) { cout<<“ My house”; cout<<“is very beautiful”; triangle( ); box( ); cout<<“finish”; return 0; }void triangle( ) ฟงกชัน triangle { /* draw triangle */ }void box ( ) ฟงกชัน box{ /* draw box */ }

รูปที่ 1.1 แสดงรูปแบบการทํางานของภาษาซีพลัสพลัส

cout …….. cout …….. triangle box cout ….

triangle

box

Page 3: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

จากตัวอยาง จะแสดงใหเห็นวา ภาษาซีพลัสพลัสสามารถมีไดหลายฟงกชัน แตจะมีฟงกชันหลัก คือฟงกชัน main ในการควบคุมการทํางานของโปรแกรมวาใหทําฟงกชันใดบาง แตถาโปรแกรมขนาดเล็กไมมีการทํางานที่ซับซอน อาจจะไมจําเปนตองมีฟงกชันอื่นๆ มีฟงกชัน main เพียงฟงกชันเดียวก็ได

1.2 การคอมไพลและลิงคโปรแกรมในภาษาซีพลัสพลัสการสรางโปรแกรมที่สามารถใชงานไดข้ึนมาโปรแกรมหนึ่ง ในภาษาซีพลัสพลัสมีข้ันตอนดังนี้

1. สรางตัวโปรแกรมที่เปนตัวอักษร หรือเรียกวา ซอรสไฟล (Source file) โดยมีนามสกุลเปน .cpp ข้ึนมากอน โดยใชโปรแกรมที่สามารถเขียนไฟลที่เก็บอักขระ (Editor) ใดๆ ก็ได อักษรหรืออักขระใดๆ นั้นจะตองอยูในรูปแบบของการโปรแกรมภาษา (ข้ันตอนนี้คือการสรางโปรแกรมที่เปนภาษามนุษยนั่นเอง)

2. คอมไพลเลอรของภาษาซีพลัสพลัส (C++ Compiler) จะทําการแปลงซอรสไฟล จากอักขระใดๆ ใหเปนรหัสที่เครื่องคอมพิวเตอรสามารถเขาใจไดเก็บไวในอีกไฟลหนึ่งเรียกวาไฟลวัตถุประสงค (Objectfile) ที่มีนามสกุล .obj (ข้ันตอนนี้เรียกวา การคอมไพล เปนการแปลงภาษามนุษยเปนภาษาเครื่องนั่นเอง)

3. ตัวเชื่อม (Linker) จะทําการตรวจสอบวาในโปรแกรมที่เขียนขึ้นนั้น มีการเรียกใชงานฟงกชันมาตรฐานใด จากหองสมุดของภาษาซีพลัสพลัส (C++ Library) บางหรือไม ถามี ตัวเชื่อมจะทําการรวมเอาฟงกชันเหลานั้นเขากับไฟลวัตถุประสงค แลวจะไดไฟลที่สามารถทํางานได โดยมีนามสกุลเปน .exe(ข้ันตอนนี้เรียกวา การลิงค เปนการรวมฟงกชันสําเร็จรูปเขาไป แลวสรางไฟลที่ทํางานได)

รูปที่ 1.2 แสดงขั้นตอนการคอมไพลและลิงคโปรแกรมภาษาซีพลัสพลัส

ตัวอยาง1. สรางซอรสไฟลที่มีขอความ ที่เก็บโปรแกรมภาษาซีพลัสพลัส ดังนี้

#include <iostream.h>

int main(){ cout<<“Hello World”; return 0;}

แลวเก็บไวในไฟลชื่อ 1.cpp

Source file

C++ Compiler

ComputerObject fileComputer Execute file

Linker Library

Page 4: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

2. ใชคําสั่งเพื่อเรียกใหคอมไพลเลอรของภาษาซีพลัสพลัสทํางาน โดยคอมไพลเลอรจะทําการแปลงอักขระจากซอรสไฟล ใหเปนรหัสที่คอมพิวเตอรสามารถเขาใจได จะไดไฟลชื่อ 1.obj

3. ใชคําสั่งเพื่อเรียกใหตัวเชื่อมของภาษาซีพลัสพลัสทํางาน ตัวเชื่อมจะทําการรวมไฟลหองสมุดที่ชื่อ iostream.h เขามา (ตามขอความ #include …) แลวสรางไฟลที่สามารถทํางานไดชื่อ1.exe

**หมายเหตุ คําวา cout ในตัวโปรแกรม คือฟงกชันมาตรฐานหนึ่งที่พิมพขอความออกทางหนาจอ โดยขั้นตอนและวิธีการทํางานของฟงกชัน cout จะอยูในไฟลหองสมุดชื่อ iostream.h

ดังนั้น ถาตัวเชื่อมไมทําการรวมไฟลหองสมุดที่ชื่อ iostream.h จะทําใหไมสามารถเรียกใชงานฟงกชัน cout ไดเลย

1.3 โครงสรางของโปรแกรมที่เขียนดวยภาษาซีพลัสพลัสโครงสรางของโปรแกรมที่ขียนดวยภาษาซีพลัสพลัสแบงยอยไดเปน 3 สวนดังนี้

1.3.1 สวนเรียกใชไฟลอ่ืนๆ เปนสวนที่บอกใหคอมไพลเลอรไปดึงไฟลอ่ืนที่กําหนดมาแปลรวมดวย ไฟลเหลานี้อาจจะเปนไฟลมาตราฐานที่มีใหแลวในภาษาซีพลัสพลัส หรือเปนไฟลที่เขียนขึ้นมาใหมก็ไดโดยสวนใหญมักจะเปนไฟลที่มีนามสกุลเปน .h1.3.2 สวนกําหนดชื่อในโปรแกรม เปนสวนที่ใชกําหนดคาคงที่ ตัวแปร และคาอื่นๆ ที่ตองการ1.3.3 สวนคําสั่ง จะประกอบดวยคําสั่งตางๆ หรือฟงกชันอื่นๆ ที่ใชในการทํางานของโปรแกรม

ตัวอยาง โครงสรางโปรแกรมที่เขียนดวยภาษาซีพลัสพลัส ดังรูปที่ 1.3

#include <iostream.h>

char ch;

int main(void){

ch = 'A'; cout<<″Hello world″;

return 0;}

รูปที่ 1.3 แสดงสวนประกอบของโปรแกรมที่เขียนดวยภาษาซีพลัสพลัสอยางงาย

ผลที่จากการรันโปรแกรม จะไดขอความบนหนาจอวาHello World

สวนเรียกใชไฟลอ่ืนสวนกําหนดชื่อ

สวนคําสั่ง

Page 5: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

คําอธิบาย- #include <iostream.h> คือบอกคอมไพลเลอรใหนําไฟล iostream.h มารวมดวย- main คือชื่อของฟงกชัน โปรแกรมจะเริ่มทํางานที่นี่ และเมื่อจบฟงกชัน main หมายถึงจบ

โปรแกรมดวย- char ch คือการประกาศตัวแปร ch เปนตัวแปรที่มีชนิดเปนตัวอักษร A- ch = 'A' คือการใหคาตัวแปร ch มีคาเปนตัวอักษร A- cout<<”Hello World” คือการใชฟงกชัน printf พิมพขอความที่อยูในเครื่องหมาย “” ออกทาง

อุปกรณเอาทพุทมาตรฐาน**ขอสังเกต ทุกประโยคภาษาซีพลัสพลัส (C++ Statement) จะตองมีเครื่องหมาย ; ปดทาย

1.4 รูปแบบคําสั่งในภาษาซีพลัสพลัสรูปแบบคําสั่งในภาษาซีพลัสพลัส มีกฏเกณฑในการเขียนคําสั่ง ดังนี้

1. คําสั่งทุกคําสั่งตองเขียนดวยอักษรตัวเล็กเสมอ เชน คําสั่ง cout , cin , for2. ทุกคําสั่งจะใชเครื่องหมาย ; (semi-colon)แสดงการจบของคําสั่ง เชน cout<<”Hello World”;3. เครื่องหมาย { } (bracket) เครื่องหมายนี้ทําหนาที่กําหนดขอบเขตของกลุมคําสั่งในฟงกชัน

1.5 การเขียนคําอธิบาย (Comment) ในภาษาซีพลัสพลัสภาษาซีพลัสพลัสพลัสพลัสนิยมการเขียนขอความอธิบายการทํางานในสวนตางๆของโปรแกรมเพื่อ

ใหเขาใจและอานโปรแกรมงายขึ้น การเขียนอธิบายจะสามารถเขียนได 2 แบบ คือ1. ในกรณีที่ขอความอธิบายเปนขอความสั้นๆ ผูเขียนโปรแกรม สามารถใชเครื่องหมาย // กอนหนา

ขอ-ความ ดังนี้// ขอความที่ตองการอธิบาย

2. ในกรณีที่ขอความอธิบายเปนขอความยาวๆ สามารถใชเครื่องหมาย /* และ */ ครอมขอความที่ตองการอธิบาย ดังนี้

/* ………………………………………………. ขอความที่ตองการอธิบาย……….…………………………………………..*/

การเขียนคําอธิบายจะเขียนไวที่ไหนในโปรแกรมก็ได โดยมากจะนิยมเขียนอธิบายขั้นตอนการทํางานกอนเขียนคําสั่ง หรือ อธิบายความหมายของคําสั่งไวขางคําสั่งนั้นก็ได

Page 6: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

1.6 ตัวแปร (Variable) ในภาษาซีพลัสพลัสตัวแปร หมายถึงชื่อเรียกแทนพื้นที่เก็บขอมูลในหนวยความจํา มีชนิดของขอมูล หรือแบบของตัว

แปรคือ char, int, long, float, double, unsigned int, unsigned long int, • โดยชื่อของตัวแปรนี้ จะกําหนดเปนกลุมอักษรที่ผูเขียนโปรแกรมสามารถกําหนดเองได โดยมี

ขอกําหนดดังนี้ตัวอักษรภาษาอังกฤษตัวพิมพเล็กและตัวพิมพใหญภาษาซีพลัสพลัสพลัสพลัสถือวาเปนคนละตัวกัน เชน test และ Test เปนตัวแปรคนละตัวกัน

• ตัวอักษรตัวแรกตองเปนตัวอักษรหรือ _ (underline character)จะเปนตัวเลขไมได• ตัวอักษรที่ไมใชตัวแรกจะเปนตัวอักษรหรือ _ หรือตัวเลขก็ได• หามตั้งชื่อซ้ํากับคําสงวนซึ่งไดแก

asm, auto, bool, break, case, catch, char, class, const, const_cast,continue, default, delete, do, double, dynamic_cast, else, enum,explicit, 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

การประกาศตัวแปร มีลักษณะดังนี้

ชนิดของขอมูลในภาษาซีพลัสพลัส1. ตัวแปรแบบ char เปนตัวแปรที่ใชสําหรับเก็บขอมูลที่เปนตัวอักษรขนาด 1 ตัว โดยใชเนื้อที่ในการเก็บ 1

ไบต ตัวอยางตัวแปรชนิดนี้ เชน ‘A’ , ‘b’ , ‘1’ , ‘?’2. ตัวแปรแบบ int เปนตัวแปรที่ใชสําหรับการเก็บคาตัวเลขที่เปนจํานวนเต็มที่มีคาระหวาง -2147483648 ถึง 2147483649 ใชเนื้อที่ในการเก็บ 4 ไบต ตัวอยางตัวแปรชนิดนี้ เชน 5 ,-10, 20003. ตัวแปรแบบ long เปนตัวแปรที่เก็บคาเปนจํานวนเต็มที่มีจํานวนไบตเปน 2 เทาของจํานวนเดิม (มักจะ

ใชเปนคํานําหนาตัวแปร เชน long int)4. ตัวแปรแบบ float เปนตัวแปรที่ใชเก็บขอมูลที่เปนเลขทศนิยม โดยจะเก็บอยูในรูป a.b x 10e ใชพื้นที่ใน

การเก็บ 4 ไบต มีคาระหวาง 3.4E-38 ถึง 3.4E+38 หรือ แสดงเปน เลขทศนิยมไดไมเกิน 6 ตําแหนง ตัวอยางตัวแปรชนิดนี้ เชน 10.625, -6.67

ชนิดตัวแปร ชื่อตัวแปร , ชื่อตัวแปร , ชื่อตัวแปร,.....;

Page 7: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

5. ตัวแปรแบบ double เปนตัวแปรที่เก็บขอมูลที่เปนเลขทศนิยมเหมือนกับ float แตจะใชพื้นที่ในการเก็บมากกวาเดิม 2 เทา คือมีขนาด 8 ไบต มีคาระหวาง 1.7E-308 ถึง 1.7E+308

6. ตัวแปรแบบ unsigned แสดงวาเปนตัวแปรที่เก็บคาเปนจํานวนเต็มแบบไมคิดเครื่องหมาย (เปนบวกเทานั้น) มักจะใชเปนคํานําหนาตัวแปร ตัวอยางการใชงาน เชน unsigned int

ชนิด ขนาดความกวาง ชวงของคา char 8 บิต ASCII character (-128 ถึง 127)int 32 บิต -2147483648 ถึง 2147483649long int 32 บิต -2147483648 ถึง 2147483649float 32 บิต 3.4E-38 ถึง 3.4E+38 หรือ ทศนิยม 6 ตําแหนงdouble 64 บิต 1.7E-308 ถึง 1.7E+308 หรือ ทศนิยม 12 ตําแหนงunsigned int 32 บิต 0 ถึง 4294967296unsigned long int 32 บิต 0 ถึง 4294967296

ตารางที่ 1.1 แสดงชนิดและขนาดของขอมูลที่ใชในภาษาซีพลัสพลัส

ตัวอยางของการประกาศตัวแปรไดแก

ตัวอยางที่ 1 int a ;หมายความวา ประกาศตัวแปร a เปนตัวแปรที่ใชสําหรับเก็บคาที่เปนเลขจํานวนเต็มที่มีคาอยูระหวาง-2147483648 ถึง 2147483649

ตัวอยางที่ 2 int num1=8;หมายความวา ประกาศตัวแปร num1 เปนตัวแปรที่เก็บคาตัวเลขจํานวนเต็ม โดยใหคาเริ่มตนเทากับ 8

ตัวอยางที่ 3 float money,price ;หมายความวา money และ price เปนตัวแปรที่ใชสําหรับเก็บคาที่เปนเลขทศนิยม โดยจะใหตําแหนงทศนิยมไดไมเกิน 6 หลัก

ตัวอยางที่ 4 char ch=’A’;หมายความวา ประกาศตัวแปร ch เปนตัวแปรที่เก็บคาตัวอักษรเพียง 1 ตัว คือ ตัวอักษร ‘A’

Page 8: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

ตัวอยางที 5 unsigned long int test;หมายความวา ประกาศตัวแปร test เปนตัวแปรที่ใชสําหรับเก็บคาที่เปนเลขจํานวนเต็ม แบบยาวที่ไมคิดเครื่องหมาย

ตัวอยางเพิ่มเติมchar a,b,c,d; /* ตัวแปร a,b,c,d เปนตัวแปรชนิด character */unsigned e; /* ตัวแปร e เปนตัวแปรชนิด unsigned int */char key = ′A′; /* ตัวแปร key เปนตัวแปรชนิด character มีคา ′A′ */

นอกจากนี้ การกําหนดตัวแปรใน สามารถทําได 2 แบบ คือ- กําหนดไวนอกกลุมคําสั่ง หรือฟงกชัน เรียกตัวแปรนี้วา Global Variable กําหนดไวนอกฟงกชัน ใช

งานไดทั้งโปรแกรม มีคาเริ่มตนเปน 0 (กรณีไมไดกําหนดคาเริ่มตน)- กําหนดไวในกลุมคําสั่ง หรือฟงกชัน เรียกตัวแปรนี้วา Local Variable กําหนดไวภายในฟงกชัน ใช

งานไดภายในฟงกชันนั้น และไมถูกกําหนดคาเริ่มตนโดยอัตโนมัติ

ตัวอยางของกําหนดตัวแปรแบบ Global และ Local

บรรทัดที่ 1. #include<iostream.h>บรรทัดที่ 2. #define PI 3.14159บรรทัดที่ 3. int area; /* global variable */บรรทัดที่ 4. int main()บรรทัดที่ 5. { float radius; /* local variable */บรรทัดที่ 6. บรรทัดที่ 7. ………บรรทัดที่ 8. ………บรรทัดที่ 9.บรรทัดที่ 10. } 1.7 ตัวประมวลผลกอน (Preprocessor)

คือ สวนที่คอมไพเลอรจะตองทํากอนทําการแปลโปรแกรม คําสั่งของตัวประมวลผลกอนจะนําหนาดวยเครื่องหมาย # มีคําสั่งตางๆ ตอไปนี้

#include #define #if #pragma#endif #error #ifndef #undef#elif #else #ifdef #line

Page 9: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

คําสั่งที่นาสนใจมี 2 คําสั่งคือ

1.7.1. #include ทําหนาที่แจงใหคอมไพเลอรอานไฟลอ่ืนเขามาแปลรวมดวย มีรูปแบบดังนี้

#include <filename> หรือ #include ″filename″

* #include <…> ใชสําหรับคนหา files ที่อยูใน standard library แตถาใชเครื่องหมาย ″…″ จะเปนการกําหนดใหคนหาจากไดเร็คทรอรีปจจุบัน และ ไดเร็คทรอรีที่กําหนดพารทไว

* ชื่อฟงกชันการทํางานพื้นฐานของภาษาซีพลัสพลัสตัวแปร คาคงที่ และมาโครพื้นฐาน โดยปกติจะรวมกันเปนกลุมในไฟลที่เรียกวาไฟลหัว (Header Files) คือไฟล ที่มีนามสกุล .h ไฟลหัวแตละไฟลจะเก็บโมดูลแยกกันเปนสวนการทํางานแตละสวนเพื่อใหผูเขียนโปรแกรมสามารถเรียกใชงานได เชนiostream.h ซึ่งในไฟลดังกลาวมีการกําหนดคําสั่ง cin, cout

1.7.2 #define ทําหนาที่ใชกําหนดคาคงที่ ที่เปนชื่อแทน คํา นิพจน คําสั่ง หรือคําสั่งหลายคําสั่ง มีรูปแบบการใชงานดังนี้

เชน #define TEN 10 กําหนด TEN แทนคา 10#define PI 3.141592654 กําหนด PI แทนคา 3.141592654

1.8 คําสั่งและนิพจน (Statement and Expression)

คําสั่ง,ขอคําสั่ง (Statement) คือข้ันตอนในการทํางานหนึ่งขั้นตอน ทุกคําสั่งตองจบดวยเครื่องหมาย ;

กลุมคําสั่ง คือคําสั่งที่อยูในวงเล็บปกกา {}นิพจน (Expression) คือการกระทําเพื่อใหไดผลลัพธคาหนึ่งคา ประกอบไปดวยตัวถูกกระทํา

(Operands) และตัวกระทํา (Operators) เขียนเรียงกันไป เชน 3 * 2 - 1 + 7 หรือ a * 5 เปนตน เชน

7 + 5 a + b

คาคงที่ ตัวกระทํา คาคงที่ ตัวแปร ตัวกระทํา ตัวแปร

#define ชื่อตัวแปร (ชื่อที่ใชแทน) คาที่ตองการกําหนด

Page 10: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

( a * 3 ) + 5 2.0 * sin(2.12)

ตัวแปร ตัวกระทํา คาคงที่ คาคงที่ ตัวกระทํา ฟงกชั่น

นิพจน ตัวกระทํา คาคงที่

Page 11: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

2. อินพุท และเอาทพุท (Input and Output)

2.1 บทนําการสั่งใหเครื่องคอมพิวเตอรทํางานใดๆ และรอรับคาผลลัพธจากเครื่อง จะตองมีการติดตอกับเครื่อง

โดยการสงผานคาอินพุทไปยังเครื่องคอมพิวเตอร และรับคาเอาทพุทจากเครื่องคอมพิวเตอรดังนี้อินพุท คือ การรับคาขอมูลของผูใชเขาไปในเครื่องคอมพิวเตอร อุปกรณอินพุทมาตรฐาน ไดแก

คียบอรดหรือแปนพิมพ สแกนเนอร หรือ เมาสเอาทพุท คือ การแสดงผลขอความ ขอมูล หรือ คาตัวแปรใดๆ ออกมาแสดงใหกับผูใชทางอุปกรณ

แสดงผลเอาทพุทตางๆ อุปกรณเอาทพุตมาตรฐาน ไดแก จอภาพ ลําโพง หรือ เครื่องพิมพเครื่องคอมพิวเตอรทั่วไป ไมสามารถจดจําตัวอักษรในลักษณะของรูปรางตัวอักษรได การจดจํารูปราง

ตัวอักษรเพื่อนําไปใชงานนั้น คอมพิวเตอรจะจดจําในรูปรหัสแทนตัวอักษร เมื่อตองการแสดงตัวอักษรคอมพิวเตอรก็จะนําคารหัสเหลานี้ไปเปดตารางภาพตัวอักษร แลวนําภาพตัวอักษรตามรหัสนั้นไปแสดงตอไป

2.2 แอสกี (ASCII)แอสกีเปนรหัสแทนตัวอักษรที่นิยมใชกันมากที่สุด ยอมาจาก American Standard Code for

Information Interchange รหัสนี้แทนตัวอักษรได 128 ตัว นอกจากนั้นยังมีอีก 128 ตัว ซึ่งอยูในสวนที่เรียกวาExtended ASCII code ในรหัสสวนนี้ปกติจะเปนตัวอักษรกรอบ พื้น ลายเสน และตัวอักษรกรีก-ละติน ประเทศไทยใชในการกําหนดเพื่อเก็บตัวอักษรภาษาไทย มาตราฐานที่ใชกันก็มี รหัส สมอ. และรหัส เกษตร เปนตน

อักขระหรือตัวอักษร (Characters) คือรหัสที่ใชแทนภาพ หรือ เครื่องหมายยอยที่สุดในการเขียน ใชตัวแปรชนิด Character ในการเก็บขอมูล เชน

′A′ หมายถึงอักษร A′4′ หมายถึงอักษร 4′b′ หมายถึงอักษร b′\0′ หมายถึงอักษรที่มีรหัสเปน 0′\x7′ หมายถึงอักษรที่มีรหัสเปน 7 ในเลขฐานสิบหก

Page 12: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

สตริง (String) คือกลุมขอมูลที่ประกอบไปดวยตัวอักขระที่เขียนเรียงกันไป ใชตัวแปรชนิด อักขระในการเก็บภาพขอมูลตอหนึ่งหนวยตัวอักษร โดยจะมีเครื่องหมาย ″ ″ อัญประกาศ (Double qoute) ลอมรอบอยูเสมอ เชน Hello World! ในภาษาซีพลัสพลัสตองเขียนเปน ″Hello World!″

2.3 การแสดงผลขอมูลในการแสดงผลขอมูลในภาษาซีพลัสพลัสจะมีคําสั่งมาตรฐานในการแสดงผลขอมูล หรือ คาตัวแปร

ออกมาทางจอภาพ คําสั่งนั้นคือ cout (อ า น ว า ซี- เ อ า ท )ตัวอยางเชน เมื่อผูเขียนโปรแกรมตองการจะแสดงขอความ “Hello World” บนหนาจอคอมพิวเตอร ผู

เขียนโปรแกรมสามารถใชคําสั่ง cout ไ ด ดัง น้ี

#include <iostream.h>int main(){ cout<<”Hello World!\n”;

return 0;}

จะไดผลลัพธ ทางหนาจอคือ

พรอมกับการขึ้นบรรทัดใหมของเคอรเซอร (cursor)

จากตัวอยางขางตน สามารถอธิบายการทํางานในแตละบรรทัดของโปรแกรมไดดังนี้

#include <iostream.h>

จะเปนการแจง C++ preprocessor กอนการคอมไพล วาในโปรแกรมนี้จะมีการแสดงขอมูล (data) บนหนาจอหรือ รับขอมูลจากทางคีบอรด ซึ่งในตัวอยางนี้จะหมายถึงการแสดงขอมูลทางหนาจอเพราะ คําสั่ง cout

int main()

Hello World!

Page 13: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

ฟง ก ช่ัน ห ลั ก ข อ ง โ ปร แกร ม โ ดย จ ะ มีก า ร รี เ ทิร น ( r eturn)คา เ ปน แ บ บจํ า นว นเ ต็ม ( integer).

cout<<”Hello World!\n”;

ทั้ ง บ ร ร ทัด น้ีจ ะ ถูก เ รี ย ก ว า stat e ment ซึ่ง ปร ะ ก อ บ ดว ยcout เ ปน คํ า สั่ ง ที่ ใ ช เ มื่ อ ต อ ง ก า ร แส ดง ข อ มูล ท า ง หนาจ อ<< จ ะ ถูก เ รี ย ก ว า o utput operator หรือ insertion operator เมื่อโปรแกรมถูกทํางาน ตัวอักษรหรือคาที่อยูตอจากเครื่องหมายนี้จะถูกแสดง ซึ่งในที่นี้คือประโยค Hello World! ใ นกา ร

แสดง ตัว อั ก ษ ร หรื อ ป ร ะ โ ย คใ นภา ษา ซีพ ลั ส พ ลั ส น้ัน จ ะตอ ง อ ยู ภ า ย ใ นเ ครื่ อ ง ห ม า ย อัญ ป ร ะ กา ศ (Double Quote); เ มื่อ จ บ หน่ึง ๆ จ ะ ตอ ง ถูก ปด ดว ยstatement เ ครื่ อ ง ห ม า ย semi-colon \n จ ะ เ ห็น ว า \n จ ะ ไ มถู ก แ ส ด ง บนหนา จ อ เ น่ือ ง จ า ก\ (backslash) จ ะ เ ปน ตัว อั ก ษ ร พิเ ศ ษ เ มื่อ ร ว ม กับ ตัว อั ก ษ ร ที่

ด า น หลั ง แ ล ว จ ะ ทํ า ใ หมีค ว า ม หมา ย ต า ง ๆ ซึ่ง ใ น ที่ น้ีจ ะ หมา ย คว า มว า เ ปน ก า ร สั่ ง ใ หเ ค อ ร เ ซ อ ร ข้ึน บ ร ร ทัดใ หม เ ราเรียก รหัสพิเศษนี้วา Escape Sequenceนอกจ า ก \n แล ว ยั ง มีรหัส พิเ ศ ษอื่นๆอีก ดังนี้คือ

Escape Sequence คา หนาที่\a 0x07 เสียงดังออกลําโพงหนึ่งครั้ง\b 0x08 เลื่อน cursor ไปลบตัวอักษรทางซายมือหนึ่งตัวอักษร\f 0x0c ข้ึนหนาใหม\n 0x0a ข้ึนบรรทัดใหม\r 0x0d เลื่อน cursor ไปทางซายมือสุดของบรรทัด\t 0x09 เลื่อนเคอรเซอร ไป 1 tab ในแนวนอน\\ 0x5c เครื่องหมาย \\′ 0x2c เครื่องหมาย ′

Page 14: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

\″ 0x22 เครื่องหมาย ″\? 0x3f เครื่องหมาย ?

ตารางที่ 2.1 แสดงตัว Escape Sequence ตางๆ ที่มีใชในภาษาซีพลัสพลัส

return 0

เปนการจบการทํางานของฟงกชั่น main ซึ่งเปนการบอกวาตองการจะออกจากฟงกชั่น

ตัวอยางดานลางนี้ เปนตัวอยางของการใชงาน cout

ตัวอยางที่ 1#include <iostream.h>int main(){ cout<<”Hello”;

cout<<”World!\n”;return 0;

}

ผลลัพธ

ตัวอยางที่ 2#include <iostream.h>int main(){ cout<<”Hello\n”;

cout<<”World!\n”;return 0;

}

ผลลัพธ

Hello World!

HelloWorld!

Page 15: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

ตัวอยางที่ 3#include <iostream.h>int main(){ cout<<”The volume of the box is ”<< 2*3*4;

return 0;}

ผลลัพธ

ตัวอยางที่ 4#include <iostream.h>int main(){

cout<<”The volume of the box is ” << 2*3*4;

return 0;}

ผลลัพธ

จากตัวอยางที่ 4 จะเปนกรณีที่ ในบรรทัดของคําสั่ง cout มีความยาวมาก ทําใหไมสามารถเขียนใหจบไดภายใน 1 บรรทัด ผูเขียนโปรแกรมสามารถขึ้นบรรทัดใหมได โดยขึ้นเครื่องหมาย << ในบรรทัดใหม แลวใสเครื่องหมาย ; ปดทายในบรรทัดสุดทาย

ตัวอยางที่ 5#include <iostream.h>int main(){ char x = ’M’;

char name[10] = ”Maliwan”;cout<<”The first character is ”<<x<<endl;cout<<”My name is ”<<name<<”\n”;return 0;

}

ผลลัพธ

จากตัวอยางที่ 5 จะมีคําสั่งเพิ่มข้ึนคือ endl จะมีความหมายกับ \n คือใหข้ึนบรรทัดใหม

The volume of the box is 24

The volume of the box is 24

The first character is MMy name is Maliwan

Page 16: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

2.4 การรับคาขอมูลในการรับคาขอมูลในภาษาซีพลัสพลัส จะมีคําสั่งมาตรฐานในการรับคาขอมูล ผานทางอุปกรณอินพุท

มาตรฐาน(ซึ่งในที่นี้คือ แปนพิมพ) คําสั่งนั้นคือ cin (อานวา ซี-อิน)ตัวอยางเชน เมื่อผูเขียนโปรแกรม ตองการเขียนโปรแกรมใหคํานวณปริมาตรของกลองสี่เหลี่ยมใดๆ ซึ่ง

มีสูตรในการคํานวณคือ กวาง*ยาว*สูง ผูเขียนโปรแกรมจะตองรับคาความกวาง,ความยาวและความสูงของกลองมาคํานวณ ดังนี้

#include <iostream.h>int main(){ int height,width,length;

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;

}

ผล ลั พ ธ

Please enter height of box12Please enter width of box12Please enter length of box10

The volume of this box is 1440

Page 17: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

จากตัวอยางดังกลาว ไดมีการกําหนดตัวแปร height,width,length เ ปนแบบ จํ า น ว น

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

#include <iostream.h>int main(){ int height,width,length;

cout<<”Please enter height, width and length of box\n”;cin>> height >> width >> length;cout<<”\n”;cout<<”The volume of this box is ”<<height*width*length<<”\n”;return 0;

}

ผล ลั พ ธ

จากตัวอยางดังกลาว จะสังเกตเห็นวา หลังคําสั่ง cin จ ะ ตา มดว ย เ ค รื่ อ ง ห ม า ย >>

เ สมอ เ ร า เ รี ย ก เ ค รื่ อ ง ห ม า ย นี้ว า i n put operator หรือ extractionoperator

ตัวอยางของการใช cin

#include <iostream.h>int main(){ char name[15];

int age;cout<<”Please enter your name\n”;

Please enter height, width and length of box12 12 10

The volume of this box is 1440

Page 18: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

cin>> name;cout<<”Please enter your age\n”;cin>> age;cout<<”Your name is ” <<name<< “ and your age is ” << age<< “\n”;return 0;

}

ผล ลั พ ธ

3. เครื่องหมายดําเนินการ (Operators)เครื่องหมายดําเนินการ (Operators) หรือ ตัวดําเนินการ นั้นกําหนดการการกระทําที่เกิดขึ้นกับตัวแปร

และคาคงที่ โดยที่นิพจนประกอบดวยตัวแปร และคาคงที่ และใชตัวดําเนินการคํานวณเพื่อใหไดคาตัวดําเนินการในภาษาซีพลัสพลัส มีจํานวนมากเมื่อเปรียบเทียบกับภาษาคอมพิวเตอรอ่ืนๆ ภาษาซีพลัสพลัส ไดแบงตัวดําเนินการออกเปน 3 ประเภท ไดแก ตัวดําเนินการทางคณิตศาสตร ตัวดําเนินการสัมพันธและตัวดําเนินการตรรกะ และ ตัวดําเนินการประกอบ

3.1 ตัวดําเนินการทางคณิตศาสตร (Arithmetic Operators)ตัวดําเนินการทางคณิตศาสตร เปนตัวดําเนินการที่คํานวณทางดานคณิตศาสตรใหมีคาออกมามีชนิด

สอดคลองกับชนิดของตัวถูกกระทํา ประกอบดวยตัวดําเนินการตางๆ ดังนี้

เครื่องหมาย ความหมาย ตัวอยาง+ การบวก A+B- การลบ A-B* การคูณ A*B/ การหาร A/B% การหารเอาแตเศษไว (Modulo) 5%3=1 เศษ 2 จะเก็บแตเศษ 2 เอาไว-- การลดคาลงครั้งละ 1 A -- จะเหมือนกับ A=A-1

Please enter your nameThanaPlease enter your age20Your name is Thana and your age is 20

Page 19: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

++ การเพิ่มคาขึ้นครั้งละ 1 A++ จะเหมือนกับ A=A+1

ตารางที่ 3.1 แสดงประเภทของตัวดําเนินการทางคณิตศาสตร

การโอเปอเรชัน (Operation) หรือการทํางานของตัวดําเนินการตองเปนไปตามลําดับของการวางคาคงที่หรือตัวแปรที่จะกระทําตอกัน ซึ่งเรียกวา ลําดับของการโอเปอเรชัน ซึ่งลําดับการทํางานของโอเปอเรเตอรโดยคอมไพเลอรภาษา C ตองเปนไปตาม กฎการกําหนดลําดับการทํางานของตัวดําเนินการ (Precedence)ดังแสดงในตารางที่ 3.2

โอเปอเรเตอร ลําดับของการโอเปอเรชัน( ) ซายไปขวา- ซายไปขวา * - คือแสดงความเปนลบของตัวเลข* / % ซายไปขวา+ - ซายไปขวา * - คือเครื่องหมายลบคาตัวเลข

ตารางที่ 3.2 แสดงลําดับของการทํางานของตัวดําเนินการทางคณิตศาสตร ตามกฎ Precedence

ในการคํานวณ a + b* c ภาษา C++ จะกระทําเครื่องหมาย % * และ / กอนเครื่องหมาย + และ -ดังนั้นถา a + b* c จะคํานวณ b* c กอน แลว จึงคอยนํามาบวกกับ a

แตถาเครื่องหมายมีความเทาเทียมกันจะกระทําจากซายไปขวา เชน a+b+c จะเริ่มทําจาก a บวก bแลวจึงนําคาที่ไดมาบวก c ถาตองการกําหนดลําดับใหทําโดยการใสเครื่องหมายวงเล็บในสวนที่ตองการใหทํางานกอน

ตัวอยางลําดับของการทํางานของตัวดําเนินการทางคณิตศาสตร ตามกฎ Precedence

y= 2 * 5 * 5 + 3 * 5 + 7;

step 1 y= 10 * 5 + 3 * 5 + 7;

Page 20: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

step 2 y= 50 + 3 * 5 + 7;

step 3 y= 50 + 15 + 7;

step 4 y= 65+ 7;

step 5 y= 72;

ตัวดําเนินการ % เปนตัวดําเนินการทางคณิตศาสตรเพียงตัวเดียวที่กําหนดใหใชกับคาจํานวนเต็ม เทานั้น นอกนั้นสามารถใชกับคาอื่นๆ ได

ตัวดําเนินการทางคณิตศาสตรที่นาสนใจอีกตัวหนึ่งคือ เครื่องหมาย /เชนa / b

ถาทั้งตัวแปร a และ b เปน integer คาที่ไดจากการดําเนินการของหารจะมีชนิดเปน integer และถาa หรือ b ตัวแปรใดตัวแปรหนึ่งเปนตัวแปรชนิด float จะไดคําตอบเปนชนิด floatเชน

39 / 5 จะมีคาเทากับ 739.0 / 5จะมีคาเทากับ 7.8

จะเห็นไดวามีความแตกตางที่สําคัญของเครื่องหมายหาร อยางที่หนึ่งคือ เครื่องหมายหารสําหรับตัวแปร integer และอีกหนึ่งสําหรับตัวแปรแบบ floating ข้ึนอยูกับชนิดของ operand ที่เราใชกับเครื่องหมายหารนั้นๆ สําหรับผูเร่ิมตนเขียนโปรแกรมเปนไปไดวาจะเกิดการผิดพลาดขึ้น ตัวอยางเชน 1/3 (ซึ่งมีคาเทากับ 0)แทนที่จะเปน 1.0/3.0 ซึ่งมีคาเทากับ 0.333… โดยการที่การเขียน 1.0/3.0 เราสามารถเขียนไดเปนวา 1.0/3หรือ 1/3.0 และในแตละแบบของนิพจนจะไมเปน 0

ตัวดําเนินการเพิ่ม และลดคา (Increment & Decrement)ตัวดําเนินการเพิ่ม และลดคา เปนตัวดําเนินการในการเพิ่มหรือลดคาของตัวแปร โดย

Page 21: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

- ตัวดําเนินการเพิ่มคา ++ จะบวกหนึ่งเขากับตัวถูกดําเนินการ- ตัวดําเนินการลดคา -- จะลบหนึ่งออกจากตัวถูกดําเนินการ

สาเหตุที่มีตัวดําเนินการนี้ เพราะการดําเนินการเพิ่มหรือลดคาเกิดขึ้นเสมอ สําหรับตัวดําเนินการ ตัวดําเนินการเพิ่ม และลดคามีวิธีใชงาน 2 แบบคือ

- ใชเปนตัวดําเนินการแบบมากอน (prefix) เชน ++n- ใชตัวดําเนินการแบบตามหลัง (postfix) ก็ไดเชน n++

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

x = n++; จะเปนการกําหนดคา x ใหกับ 5x = ++n; จะเปนการกําหนดคา x ใหกับ 6

ตัวดําเนินการนี้จะใชไดกับเฉพาะตัวแปรเทานั้น จะใชกับนิพจนอ่ืนๆ ไมไดเชน (i+j)++

ตัวอยางเชน#include <iostream.h>int main(){

int x=2;int y=2;cout<<”x++ = ” << x++<<endl ;cout<<”x = ” << x<<endl ;cout<<”++y = ” << ++x<<endl ;cout<<”y = ” << y<<”\n” ;return 0;

}

ผล ลั พ ธ

x++ = 2

x=3

++y=3

y=3

Page 22: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

3.2 ตัวดําเนินการสัมพันธและตัวดําเนินการตรรกะ (Relational, Equality, and Logical Operators)

Operator เครื่องหมาย ความหมายตัวดําเนินการสัมพันธ < นอยกวา(Relational Operator) > มากกวา

<= นอยกวา หรือ เทากับ>= มากกวา หรือ เทากับ

ตัวดําเนินการเทากับ == เทากับ(Equality Operator) != ไมเทากับตัวดําเนินการตรรกะ ! นิเสธ(Logical Operator) && และ

|| หรือ

ตารางที่ 3.3 แสดงตัวดําเนินการสัมพันธและตัวดําเนินการตรรกะ

3.2.1 ตัวดําเนินการสัมพันธ (Relational Operator)ตัวดําเนินการสัมพันธ เปนเครื่องหมายที่ใชในการเปรียบเทียบและตัดสินใจ ซี่งผลของการเปรียบเทียบ

จะเปนได 2 กรณีเทานั้นคือ จริงและเท็จ ภาษาซีพลัสพลัสถือวาคาทางตรรกจริงและเท็จมีชนิดเปน int ดังนั้นผลการกระทําทางตรรกจึงมีคาเปนจํานวนเต็ม และมีคาไดเพียงสองคาคือ 1 หรือตัวเลขใดๆ แทนคาความจริงเปนจริง และ 0 แทนคาความจริงเปนเท็จ (0 เปนเท็จ สวนตัวเลขอื่นๆ ทั้งหมดมีคาเปนจริง)

เครื่องหมายที่เปนตัวดําเนินการสัมพันธมี 4 ตัวคือ< (นอยกวา)> (มากกวา)

Page 23: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

<= (นอยกวาเทากับ) และ>= (มากกวาเทากับ)

ตัวอยางการใชงาน เชนa<3 /* ถา a มีคาเปน 5 ประโยคนี้จะไดผลลัพธเปน 0 (เท็จ) */a>b /* ถา a=10 b=8 ประโยคนี้จะไดผลลัพธเปน 1 (จริง) */-1 >= (2.2*X+3.3)a<b<c /* รูปแบบถูกตอง แตลําดับการวางตัวแปรอาจทําใหสับสนได โดยจะทํา

การเปรียบเทียบคา b และ c กอน จึงนําผลลัพธมาเปรียบเทียบกับ a */

ตัวอยางการใชงานผิดแบบa =< b /* ผิดลําดับ เครื่องหมาย = มากอน < */a < = b /* ผิดรูปแบบ หามเวนวรรคระหวาง < และ = */

3.2.2 ตัวดําเนินการเทากับ (Equality Operator)ตัวดําเนินการเทากับ ใชในการเปรียบเทียบคา 2 คา วามีคาเทา หรือไมเทากัน ผลลัพธที่ได จะมีเพียง 2

คาเชนเดียวกับผลลัพธของตัวดําเนินการสัมพันธคือ จริง และ เท็จเครื่องหมายที่เปนตัวดําเนินการเทากับมี 2 ตัวคือ

== (เทากับ)!= (ไมเทากับ)

ตัวอยางการใชงาน เชนc == ‘A’ /* ถาตัวแปร c เก็บคาอักขระ A ผลลัพธจะไดคาจริง */k != -2 /* ถาตัวแปร k เก็บคาตัวเลข –2 ผลลัพธจะไดคาเท็จ */x+y == 2 * z – 5

ตัวอยางการใชงานผิดแบบa=b /* การเปรียบเทียบคาตัวแปร a กับ b วามีคาเทากันหรือไม

กลายเปนการใหคาตัวแปร a ดวยคาตัวแปร b */a= =b -1 /* ใชงานผิดรูปแบบ โดยมีชองวางระหวางเครื่องหมาย = ทั้ง 2 ตัว */

Page 24: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

3.2.3 ตัวดําเนินการตรรกะ (Logical Operator)ตัวดําเนินการตรรกะ ใชในการเปรียบเทียบ และกระทําทางตรรกะกับคาตัวเลข หรือคาที่อยุใน ตัว

แปร ผลลัพธที่ได จะมีเพียง 2 คาเชนเดียวกับผลลัพธของตัวดําเนินการสัมพันธคือ จริง และ เท็จเครื่องหมายที่เปนตัวดําเนินการทางตรรกะ มี 3 ตัวคือ

! (นิเสธ)&& (และ)|| (หรือ)

**หมายเหตุ นิเสธ คือการกลับคาความจริงของคาตัวเลข หรือตัวแปรที่ตามหลังเครื่องหมาย

ตัวดําเนินการนิเสธ ตองการตัวถูกกระทําการเพียง 1 ตัวเทานั้นตัวอยางการใชงาน

!a /* ถาคาความจริงของตัวแปร a มีคาจริง ผลลัพธจากการนิเสธจะไดคาเปนเท็จ */!(x+7.7)!(a<b || c<d) /* a มากระทํากับ b แลวเอาผลลัพธมา || กับ ผลลัพธระหวางการกระทําระหวาง

c กับ d จากนั้นนําผลลัพธที่ไดจากการ || มา ทําการนิเสธอีก */

ตัวอยางการใชงานผิดแบบa! /* ผิดลําดับ เครื่องหมาย ! มากอนตัวแปร */a! = b /* ผิดความตองการ โดยความตองการคือ กลายเปนการใชเครื่องหมาย != ไป */

ตัวดําเนินการ && และ || ตองการตัวถูกกระทํา 2 ตัวตัวอยางการใชงาน

a&&b /* a และ b ถาคาความจริงของ a เปนจริง และ คาความจริง b เปนจริงผลลัพธที่ไดจะมีคาความจริงเปนจริง */

a || b /* a หรือ b ถาคาความจริงของ a เปนเท็จ และ คาความจริง b เปนเท็จผลลัพธที่ไดจะมีคาความจริงเปนเท็จ */

Page 25: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

!(a<b) && C /* นํา a มาเปรียบเทียบกับ b แลวนําผลลัพธมานิเสธ จากนั้นมา && กับ C */3 && (-2 * a + 7) /* หาคาภายในวงเล็บกอน แลวนําคาผลลัพธที่ไดมา && กับ 3 */

ตัวอยางการใชงานผิดแบบa && /* ตัวกระทําไมครบ */a| |b /* เวนชองวางระหวางเครื่องหมาย || */a & b /* เครื่องหมาย && ไมครบ */&b /* ตําแหนงในหนวยความจําของตัวแปร b */

การหาคาของตัวดําเนินการตรรกะ• && (และ)

นําคาความจริง 2 คามาเปรียบเทียบกัน ไดผลของการเปรียบเทียบตามตารางที่ 3.4

P Q P && Q0 0 00 1 01 0 01 1 1

ตารางที่ 3.4 แสดงผลของตัวดําเนินการ && ระหวางตัวแปร P และ Q

• || (หรือ)นําคาความจริง 2 คามาเปรียบเทียบกัน ไดผลของการเปรียบเทียบตามตารางที่ 3.5

P Q P || Q0 0 00 1 11 0 11 1 1

Page 26: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

ตารางที่ 3.5 แสดงผลของตัวดําเนินการ || ระหวางตัวแปร P และ Q

• ! (นิเสธ)นําคาความจริงมาเปรียบเทียบ ไดผลของการเปรียบเทียบตามตารางที่ 3.6

P !P0 11 0

ตารางที่ 3.6 แสดงผลของตัวดําเนินการ ! กับตัวแปร P

3.3 ตัวดําเนินการประกอบ (Compound Operator)ตัวดําเนินการประกอบ คือ ตัวดําเนินการที่เปนรูปแบบยอ ของตัวดําเนินการ+ตัวแปรที่ถูกดําเนินการ

โดยตัวดําเนินการประกอบในภาษาซี มีทั้งหมด 10 ตัวดังนี้+= -= /= %=<<= >>= != ^=

การกําหนดรูปแบบของตัวดําเนินการประกอบใหกับตัวแปรมีรูปแบบดังนี้

จะมีความหมายเทากับ

ตัวอยางเชนi = i + 1; ตัวดําเนินการประกอบคือ i += 1;i = i – a; ตัวดําเนินการประกอบคือ i - = a;

Variable Operator = expression;

Variable = variable Operator expression;

Page 27: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

i = i * (a + 1); ตัวดําเนินการประกอบคือ i *=a+1;i = i / (a-b); ตัวดําเนินการประกอบคือ i /= a-b;

3.4 ตัวกระทําบอกขนาด (Sizeof Operator)เปนตัวกระทําใชรายงานขนาดของหนวยความจําที่ใชในการเก็บคา โดยมีรูปแบบดังนี้

ตัวอยาง#include <iostream.h>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;

}

ผลลัพธ

จากตัวอยางขางตน ขนาดที่ไดจะมีหนวยเปนจํานวนไบต (byte)

sizeof (แบบของตัวแปร)

x= 4

int= 4

char= 1

float= 4

double= 8

Page 28: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

3.5 ลําดับการทํางานกอน-หลังของตัวดําเนินการลําดับการทํางานกอน-หลังของตัวดําเนินการเปนไปตามตารางที่ 3.7

ตัวดําเนินการ ทิศทางการดําเนินการ(), [], ซายไปขวา ++, --, +(คาบวก), -(คาลบ), sizeof ขวาไปซาย*, /, % ซายไปขวา+, - (ตัวกระทําการทางคณิตศาสตร) ซายไปขวา<, <=, >, >= ซายไปขวา==, != ซายไปขวา&& ซายไปขวา|| ซายไปขวา=, +=, -=, /=, %=, !=, <<=, >>= ขวาไปซาย

ตารางที่ 3.7 แสดงลําดับความสําคัญของตัวดําเนินการทั้งหมด เรียงลําดับจากมากไปนอย

3.6 การเปลี่ยนแปลงคาผลลัพธเปนตัวแปรชนิดใหม (Casting)ผลของการกระทําของนิพจนจะใหคาออกมาคาหนึ่งเสมอ คาที่ไดจะมีชนิดสอดคลอง กับตัวกระทํา

และตัวถูกกระทําภายในนิพจนนั้น ๆ เชน ตัวถูกกระทําเปน int คาที่ไดจะเปนชนิด int ดวย เราอาจเปลี่ยนชนิดของคานั้น ๆ ใหมีชนิดตามที่เราตองการไดโดย การเขียนชนิดของขอมูลแบบใหม ภายในวงเล็บ นําหนานิพจนนั้น ๆ ดังรูปแบบตอไปนี้

ตัวอยาง (int)(a*5.2) เปนการเปลี่ยนคา output เปนขอมูลชนิด int (float)(b+5) เปนการเปลี่ยนคา output เปนขอมูลชนิด float

แบบฝกหัดทายบท

เขียนนิพจนของภาษา C ที่แตละนิพจนคํานวณคาทางคณิตศาสตร ดังนี้

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

Page 29: บทที่ 2. Introduction to C++ Language Programming แนะนํา ...kpatimakorn/240-101/E_Book/ch2_intro_c++.pdf · 240-101 Introduction to Computer Programming บทที่

240-101 Introduction to Computer Programming

a. ba

ab+

d. abba +

b. 2cba + e.

2

−+dcba

c. cba

cba

+f.

abccbaacbcab

++++

ตัวแปร a, b, c, d ใหกําหนดชนิดเปน integer โดยรับคาตัวแปรทั้ง 4 จากผูใช และคํานวณคาคําตอบออกมาเปนชนิด float