ภาษา C++ Lesson1

Page 1

!

บทที่ 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++ เบือ้ งตน


!

2 ในขณะทํางานไดไมใชผูใชถูกควบคุมโดยโปรแกรม ลักษณะการทํางานแบบ Event-Driven ไดแก โปรแกรมทีท่ างานในสภาพแวดล ํ อมภายใตระบบปฏิบัติการวินโดวส เปนตน 2. ภาษา C และ C++ มีประสิทธิภาพของภาษาอยูในระดับที่ใกลเคียงกับภาษา Assembly มากที่ สุด แตมคี วามยืดหยุน ในยึดติดกับฮารดแวรคอมพิวเตอรหรือ Microprocessor รุน ใดรุน หนึง่ ทําใหสามารถ นําโปรแกรมที่สรางขึ้นไปทํางานไดกบั เครือ่ งคอมพิวเตอรไดทกุ รุน 4. ภาษา C++ สนับสนุนการเขียนโปรแกรมในลักษณะเชิงวัตถุหรือ OOP (Object Oriented Programming) ซึง่ เปนเทคนิคการเขียนโปรแกรมทีน่ ยิ มใชเขียนโปรแกรมขนาดใหญทม่ี จี ํานวนขอมูลใน โปรแกรมมาก 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++ ในการแปล Source File ใหเปนไฟลภาษาเครื่องที่เรียกวา 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++ สะดวกยิ่งขึ้น ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

3

! Source File ! TEST.CPP ! Compile ! Object File ! TEST.OBJ

!

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

Link

! Executable File ! TEST.EXE

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

♦!การใช 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 ดังนี้จอภาพตอไปนี้

ศิริชัย นามบุรี

แนะนําภาษา 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 C:\TC>TC

[enter] [enter] เพื่อ run program

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

ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

5

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

♦!ตัวอยางวิธกี ารเขียนโปรแกรมและ 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"; }

ศิริชัย นามบุรี

แนะนําภาษา 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 Namburi Office : Computer Department,RIPA ขัน้ ที่ 4 กรณีมีขอผิดพลาด IDE ของ C++ จะไมสามารถทําการ Compile ได จะแจงขาวสารขอผิด พลาดไวในกรอบหนาตาง Message จะตองแกไขใหถูกตองกอน แลวจึงดําเนินการในขัน้ ที่ 3 ใหม

♦!โครงสรางของโปรแกรม C++ การเขียนโปรแกรมดวย C++ มีโครงสรางของโปรแกรมพืน้ ฐานดังตัวอยาง /*Program : First.CPP Written by: Mr.Sirichai Date : 10/1997 */ #include <iostream.h> void main() { cout << "My name is Mr.Sirichai Namburi \n"; cout << "Office : Computer Department,RIPA"; }

1. หมายเหตุหรือคําอธิบาย (comments) 2. Preprocessor, Directive, header file 3. Function main() 4. Statement ของคําสั่งอยูใน block ของ เครือ่ งหมาย{ …. }แตละ Statement จบดวย ;

สวนประกอบเบื้องตนของ C++ มีดังนี้ 1. Comments or Remark หมายถึงสวนทีเ่ ปนการอธิบายหรือหมายเหตุในโปรแกรม เขียน อธิบายไวในเครื่องหมาย /* ………*/ หรือเขียนตามหลังเครือ่ งหมาย // ก็ได ในขณะที่แปล Compiler ของ C++ จะไมนาไปแปลด ํ วย แตตอ งเขียน Comments อยูภายในเครื่องหมายใหถูกตอง โดยที่ /*…..*/ ศิริชัย นามบุรี

แนะนําภาษา 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 ดวย

ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

8 header 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 file Header File Groups of Functions in Header file

alloc.h assert.h Bcd.h Bios.h complex.h Conio.h ctype.h Dir.h Direct.h Dirent.h Dos.h Errno.h Fcntl.h Float.h fstream.h ศิริชัย นามบุรี

Declares memory management functions (allocation, deallocation, etc.). Defines the assert debugging macro. Declares the C++ class bcd and the overloaded operators for bcd and bcd math functions. Declares various functions used in calling IBM-PC ROM BIOS routines. Declares the C++ complex math functions. Declares various functions used in calling the DOS console I/O routines. Contains information used by the character classification and character conversion macros. Contains structures, macros, and functions for working with directories and path names. Defines structures, macros, and functions for working with directories and path names. Declares functions and structures for POSIX directory operations. Defines various constants and gives declarations needed for DOS and 8086-specific calls. Defines constant mnemonics for the error codes. Defines symbolic constants used in connection with the library routine open. Contains parameters for floating-point routines. Declares the C++ stream classes that support file input and output. แนะนําภาษา C++ เบือ้ งตน


!

9 Header File

generic.h graphics.h io.h iomanip.h iostream.h Limits.h locale.h malloc.h math.h mem.h memory.h new.h process.h search.h setjmp.h share.h signal.h stdarg.h stddef.h stdio.h

ศิริชัย นามบุรี

Groups of Functions in Header file

Contains macros for generic class declarations. Declares prototypes for the graphics functions. Contains structures and declarations for low-level input/output routines. Declares the C++ streams I/O manipulators and contains macros for creating parameterized manipulators. Declares the basic C++ (version 2.0) streams (I/O) routines. Contains environmental parameters, information about compile-time limitations, and ranges of integral quantities. Declares functions that provide country- and language-specific information. Memory management functions and variables. Declares prototypes for the math functions, defines the macro HUGE_VAL, and declares the exception structure used by matherr. Declares the memory-manipulation functions. (Many of these are also defined in string.h.) Memory manipulation functions. Access to operator new and newhandler. Contains structures and declarations for the spawn... and exec... functions. Declares functions for searching and sorting. Defines a type used by longjmp and setjmp. Defines parameters used in functions that use file-sharing. Defines constants and declarations for signal and raise. Defines macros used for reading the argument list in functions declared to accept a variable number of arguments. Defines several common data types and macros. Defines types and macros needed for the Standard I/O Package defined in Kernighan and Ritchie and extended under UNIX System V. Defines the standard I/O predefined streams stdin, stdout, stdprn, and stderr, and declares stream-level I/O routines. แนะนําภาษา C++ เบือ้ งตน


!

10 Header File

Groups of Functions in Header file

stdiostr.h

Declares the C++ (version 2.0) stream classes for use with stdio FILE structures. stdlib.h Declares several commonly used routines: conversion routines, 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 utimbuf values.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 ํ ง่ Help, Index ! หมายเหตุ ถาตองการทราบวา header file ประกอบดวยฟงกชั่นใดบาง ใหใชคาสั ! จากเมนูใน IDE ของภาษา C++ เพื่อคนหารายละเอียดและตัวอยางการใชฟงกชัน !

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

ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

11 2. Standard Identifier หมายถึง ชื่อที่กําหนดขึน้ ในคอมไพเลอร ชื่อเหลานี้มีความหมายและวิธี ! ใชตามเงื่อนไขที่คอมไพเลอรกาหนดไว ํ แตเราสามารถเปลี่ยนแปลงวิธีการทํางานและเงื่อนไขการใชชื่อ เหลานีไ้ ด โดยคอมไพเลอรจะยกเลิกเงื่อนไขเดิมและเปลี่ยนมาใชเงื่อนไขที่เรากําหนดขึ้นใหม standard identifier สวนใหญจะเปนชื่อฟงกชันที่มีอยูใน 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 แสดงไดดงั ตารางตอไปนี้

ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

12 ตาราง แสดงชือ่ ชนิดของขอมูล ชวงของคาขอมูลและขนาดหนวยความจําที่ใช ชนิดขอมูล คาตํ่าสุด คาสูงสุด ใชพื้นที่หนวยความจํา char -128 127 1 byte unsigned char 0 255 1 byte int -32,768 32,767 2 byte unsigned int 0 65,535 2 byte short int -32,768 32,767 2 byte long -2,147,483,648 2,147,483,647 4 byte unsigned long 0 4,294,967,295 4 byte float 3.4x10-38 3.4x10+38 4 byte double 1.7x10-308 1.7x10+308 8 byte long 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 } ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

13

♦!การประกาศตัวแปร (Variable Declaration) และการกําหนดคาใหตวั แปรใน C++ ตัวแปร (Variables) ในภาษา C++ หมายถึง ชื่อที่กําหนดขึน้ เพือ่ ใชเก็บคาของขอมูลหรือคาคงที่ ประเภทตาง ๆ ในขณะโปรแกรมทํางาน ซึง่ ผูเ ขียนโปรแกรมตองตัง้ ชือ่ ตัวแปรตามกฎเกณฑการตัง้ ชือ่ ประเภท user defined identifier การใชตัวแปรในภาษา C++ จะตองมีการประกาศ (Declaration) ชือ่ ตัวแปรและประเภทของตัว แปร (Data type) ไวกอน จึงจะสามารถนําตัวแปรไปใชในโปรแกรมได มีรปู แบบการประกาศตัวแปรดัง นี้

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

โดยที่ Data_type คือ ชือ่ ของประเภทขอมูลของตัวแปร ที่สามารถเก็บคาได เชน int, float variable_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() ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

14

{ float sale,price; clrscr(); sale=500.25; price=5.25; float total=sale*price; cout<< "Total Sale = "<<total; getch(); }

ประกาศตัวแปร total ณ ตําแหนงทีต่ อ งการใช

วิธีการกําหนดคาใหแกตวั แปรใน 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 มีการ กําหนดคาคงที่ใหแกตัวแปรทันที ศิริชัย นามบุรี

แนะนําภาษา 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 ใน โปรแกรม ศิริชัย นามบุรี

แนะนําภาษา 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 คือ 65 const char ch = 'B'; // ใหคา รหัส ASCII ของ B คือ 66 •! ตัวอยางโปรแกรม contst.cpp แสดงการกําหนดและการใช constant ในโปรแกรม มีราย ละเอียด ดังนี้ ศิริชัย นามบุรี

แนะนําภาษา 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) ของเครือ่ งหมายคณิตศาสตร เครือ่ งหมายคณิตศาสตร ลําดับการประมวลผล หมายเหตุ ศิริชัย นามบุรี

แนะนําภาษา 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 มีขอแตกตางกัน ดัง ตัวอยางตอไปนีเ้ ปนการใช ++ แบบ prefix price = 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 จึงมีคาเปน 4 2. การลดคาลงทีละ 1 ไดแกการลดคาของตัวแปรครั้งละ -1 เชน count = count -1; count -=1; count--; --count; สําหรับ -- มีวิธีการใช 2 วิธี คือ แบบ prefix และ แบบ postfix มีขอ แตกตางการใชเชน เดียวกับการใช ++ ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

19

♦!การเปลีย่ นแปลงชนิดขอมูลในนิพจนคณิตศาสตร ในนิพจนทางคณิตศาสตรเมือ่ มีการใชเครือ่ งหมายคํานวณระหวางขอมูลหรือตัวแปรทีม่ ชี นิด (Data Type) แตกตางกัน เชน ชนิด float บวกกับ ชนิด int ใน C++ จะปรับประเภทขอมูลของผลลัพธที่ ไดจากการคํานวณใหเปนชนิดขอมูลทีม่ อี นั ดับสูงกวาโดยอัตโนมัติ ดังแสดงอันดับความสําคัญของชนิด ขอมูลในตารางตอไปนี้ ตาราง แสดงอันดับความสําคัญ(Precedence) ของขอมูลประเภท Simple Data Type ชนิดตาง ๆ ชนิดขอมูล อันดับ ตัวอยาง long double สูงสุด int * long = long double char + int = int float int + float = float long int * double = double int float + double = double char ตําสุ ่ ด long + long dobule = long double

♦!เครือ่ งหมายเปรียบเทียบและตรรก (Comparison and Logical Operators) การเปรียบเทียบ หมายถึง การหาวาเมือ่ นําคาที่อยูทางดานซายของเครื่องหมายกับคาที่อยูทางขวา ของเครือ่ งหมายเปรียบเทียบ มาเปรียบเทียบกันแลวจะไดผลลัพธเปนจริงหรือเท็จ ซึ่งในแตละกรณีเมื่อ เปรียบเทียบกันแลว จะไดคา เปนจริงหรือเปนเท็จเพียงคาเดียวเทานัน้ โดย C++ จะใชคา 0 แทนเท็จ และ 1 แทน จริง และมีลาดั ํ บในการประมวลผลจากซายไปขวา ถาไมมีวงเล็บกํากับไว มีเครือ่ งหมายเปรียบ เทียบดังนี้ ตาราง แสดงเครื่องหมายเปรียบเทียบใน C++ เครือ่ งหมาย ความหมาย > มากกวา < นอยกวา == เทากับ != ไมเทากับ >= มากกวาหรือเทากับ <= นอยกวาหรือเทากับ

ศิริชัย นามบุรี

ตัวอยาง 5>1 5<1 5==1 5!=1 5>=5 5<=5

ผลลัพธ 1 (จริง) 0 (เท็จ) 0 (เท็จ) 1 (จริง) 1 (จริง) 1 (จริง)

แนะนําภาษา 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(); } ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


!

21

♦!แบบฝกหัดทายบท 1. จงเขียนโปรแกรมเพือ่ คํานวณหาผลลัพธของนิพจนทางคณิตศาสตรตอไปนี้โดยกําหนดใหตวั แปร A=50 B=30 C=5 D=3 E = 10 1.1 (A+B)*(E-D) 1.6 --D+C+B-1.2 ++D+C*E 1.7 25*D/5+10 1.3 (25+A)/C+B 1.8 A+B--+D 1.4 A*=D 1.9 C*2+E*5 1.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=50 3.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)!=50 3.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

ศิริชัย นามบุรี

แนะนําภาษา C++ เบือ้ งตน


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.