บทที่ 3
คำสั่งควบคุมของโปรแกรม
ในบทก่อนหน้า คุณได้เรียนพื้นฐานของภาษา C++ ไป
แล้ว ในบทนี้ คุณจะได้เรียนเกี่ยวกับการควบคุม
โปรแกรมโดยการใช้คาสั่งควบคุม อย่างเช่น if, if else,
switch, for, while, do-while คาสั่งเหล่านี้ใช้เพื่อควบคุม
โปรแกรมเพื่อให้ไปในทิศทางที่เราต้องการ
คาสั่ง If
คาสั่ง if ถูกใช้เพื่อควบคุมโปรแกรมกับเงื่อนไขที่กาหนด โค้ดใน
บล็อกของ คาสั่ง If จะทางานถ้าเงื่อนไขตรงหรือเป็นจริง
int n = 10;
if (n == 10) {
cout << "n is 10";
}ในตัวอย่างนี้ เราได้ใช้if เพื่อตรวจสอบว่าตัวแปร n เท่ากับ 10
หรือไม่ ถ้ามันตรงกับเงื่อนไข โปรแกรมจะทางานในบล็อคของ If
คือ cout << "n is 10".
คาสั่ง If
คาสั่ง if ถูกใช้เพื่อควบคุมโปรแกรมกับเงื่อนไขที่กาหนด โค้ดใน
บล็อกของ คาสั่ง If จะทางานถ้าเงื่อนไขตรงหรือเป็นจริง
int n = 10;
if (n == 10) {
cout << "n is 10";
}ในตัวอย่างนี้ เราได้ใช้if เพื่อตรวจสอบว่าตัวแปร n เท่ากับ 10
หรือไม่ ถ้ามันตรงกับเงื่อนไข โปรแกรมจะทางานในบล็อคของ If
คือ cout << "n is 10".
คาสั่ง If else
คาสั่ง If else นั้นคล้ายกับคาสั่ง if คาสั่ง Else เพื่อทาเงื่อนไขที่นอกเหลือจาก
เงื่อนไขอื่นทั้งหมด และมันจะต้องเริ่มต้นด้วยคาสั่ง if เสมอ
int m = -1;
if (n < 0) {
cout << "Negative number.";
}
else if (n > 0) {
cout << "Positive number.";
}
else {
cout << "Zero number";
}
ในตัวอย่าง คาสั่ง If สามารถมีเงื่อนไขได้หลายอันโดยการใช้ if else () เงื่อนไขสุดท้ายคือ
else ซึ่งมันจะทางานเมื่อไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้า ในโค้ด เรามีตัวแปร m ซึ่งมี
ข้อมูลเป็นแบบ integer โปรแกรมของเรานั้นจะตรวจสอบว่า m เป็นจานวนเต็มบวก เต็ม
ลบ หรือศูนย์
มากไปกว่านั้น expression สามารถมีได้หลายเงื่อนไข โดยการใช้ตัวดาเนินการตรรกะ
int a = 12;
int b = 5;
if (a > 10 && b % 2 == 0) {
cout << "a is greater than 10 and b is even number.";
}
else {
cout << "Other condition";
}
คาสั่ง Switch case
คาสั่ง switch-case นั้นคล้ายกับ คาสั่ง If-else เป้าหมายของมันเพื่อตรวจสอบกับค่าคงที่ นี่
เป็นตัวอย่างการใช้คาสั่ง switch
switch (n) {
case 1:
cout << "n is 1";
break;
case 2:
cout << "n is 2";
break;
default:
cout << "Unknown n";
}
ในตัวอย่าง มันสามารถถูกเขียนโดยการใช้คาสั่ง if-else ได้ดังด้านล่างนี้
#include<iostream>
using namespace std;
int main ()
{
if (n == 1) {
cout << "n is 1";
}
else if (n == 2) {
cout << "n is 2";
}
else {
cout << "Unknown n";
}
return 0;
}
คาสั่ง while loop
ลูปที่ง่ายและพื้นฐานที่สุดในภาษา C++ นั้นคือ while loop ซึ่งมีรูปแบบการ
ใช้งานคือ
while (expression) {
statements
}คาสั่ง while-loop ใช้เพื่อทาสั่งโค้ดของโปรแกรมในขณะที่ expression เป็น
จริง true และมันจะสิ้นสุดการทางานเมื่อ expression ไม่เท็จและออกจาก
while-loop และทาคาสั่งอื่นต่อไป
คาสั่ง do-while loop
ลูปที่คล้ายกับ while-loop คือ do-while ลูป มันมีรูปแบบดังนี้
do
{
statements
} while (condition);
มันทางานเหมือน while loop ยกเว้นในการเปรียบเทียบเงื่อนไขจะทาตอนท้าย
หลังจากสิ้นสุดคาสั่งในลูป นั่นหมายความว่า do-while loop จะต้องทางานอย่าง
น้อยหนึ่งรอบแน่นอน มันมักจะใช้กับโปรแกรมที่จาเป็นต้องรับค่าจากผู้ใช้ก่อนที่
จะทาอย่างอื่นต่อไป มาดูตัวอย่างที่ง่ายๆ
คาสั่ง for loop
for loop เป็นลูปที่มีการวนรอบเป็นจานวนที่แน่นอน รูปแบบของมันคือ
for (initialize; condition; increase) {
statements
}
for loop เป็นลูปที่สามารถวนรอบตามตัวเลขที่กาหนดได้มันทางานเหมือน
while-loop มันจะวนซ้าจนกว่า expressionจะเป็นเท็จ นอกจากนั้น เรายัง
สามารถประกาศตัวแปรเริ่มต้น สร้าง expression เพิ่มและลดค่าก่อนที่ลูปจะ
เริ่ม
ตัวอย่างการนับตัวเลขโดยการใช้for loop
#include <iostream>
using namespace std;
int main ()
{
for (int n = 1; n <= 10; n++) {
cout << n << ",";
}
cout << " end loop";
return 0;
}
คาสั่ง break
คาสั่ง break เพื่อจบลูปในทันที และมันไม่สนใจว่า expression จะเป็นจริงหรือไม่
#include <iostream>
using namespace std;
int main ()
{
for (int n = 1; n <= 10; n++) {
if(n == 5) break;
cout << n << ",";
}
cout << " end loop";
return 0;
}
คาสั่ง continue
ไม่เหมือนคาสั่ง break คาสั่ง continue ถูกใช้เพื่อข้ามการทางานในรอบปัจจุบัน ซึ่งจะไม่
ทาคาสั่งหลังจากมันและไปเริ่มรอบถัดไป
#include <iostream>
using namespace std;
int main ()
{
for (int n = 1; n <= 10; n++) {
if(n % 2 == 0) continue;
cout << n << ",";
}
cout << " end loop";
return 0;
}
ฟังก์ชัน
September 8, 2015
ฟังก์ชันเป็นส่วนหรือกลุ่มของคาสั่งเพื่อทางานบางอย่าง แนวคิดของ
ฟังก์ชันคือการรวบรวมโค้ดที่ใช้บ่อยๆ และซ้าๆ กลับมาใช้ใหม่
เมื่อคุณสร้างฟังก์ชันมันสามารถถูกเรียกใช้ได้จากทุกจุดของโปรแกรม
บางครั้งขึ้นกับขอบเขตของมัน รูปแบบในการเขียนฟังก์ชันในภาษา
C++ คือ:
type name ( parameter1, parameter2, ... ) {
statements
}
 - type เป็นประเภทของฟังก์ชันสาหรับการส่งค่ากลับ ประเภทของฟังก์ชัน
นั้นจะเป็นเหมือนประเภทของัวแปร เช่น integer, floating, double หรือ
แบบอ็อบเจ็ค ประเภทแบบvoidหมายความว่าฟังก์ชันไม่มีค่าที่ต้องส่งกลับ
- name นั้นเป็นชื่อของฟังก์ชันที่เราสร้างขึ้น มันมีวิธีการตั้งคือโดยการใช้
กฏแบบเดียวกันกับการตั้งชื่อตัวแปร มันสามารถประกอบไปด้วยตัวอักษร
ตัวเลข และ underscore (_) แต่ไม่สามารถเริ่มต้นด้วยตัวเลข
- Parameters เป็นเซ็ตของตัวแปรที่ถูกส่งเข้ามายังฟังก์ชัน ฟังก์ชันสามารถมี
หรือไม่มีพารามีเตอร์ก็ได้ขึ้นกับวัตถุประสงค์ของมัน
- Statement คือโค้ดของโปรแกรมที่จะทางานและให้ค่าผลลัพธ์ของฟังก์ชัน
Function parameters
เหมือนที่กล่าวไว้ก่อนหน้า ฟังก์ชันพารามิเตอร์เป็นเซ็ตของตัว
แปรหรืออ็อบเจ็คที่ส่งไปยังฟังก์ชัน ประเภทของพารามิเตอร์นั้น
เป็นตัวแปรหรือออบเจ็ค และฟังก์ชันสามารถมีหรือไม่มี
พารามิเตอร์ก็ได้มาดูตัวอย่างของการใช้ฟังก์ชันพารามิเตอร์
// Function without parameter
float getPI ()
{
return 3.14;
}
// Function with three parameters
int findVolume(float width, float long, float height)
{
float volume = width * long * height;
return volume;
}
Function arguments
ฟังก์ชันอากิวเม้นต์คือเซ็ตของตัวแปรที่ส่งไปยังฟังก์ชัน อากิวเม้นต์จะต้อง
ตรงกันกับฟังก์ชันพารามิเตอร์และเรียงไปตามลาดับที่ได้ประกาศไว้มาดู
สามตัวอย่างเกี่ยวกับฟังก์ชันอากิวเม้นต์
printData("Marcus", 14);
ฟังก์ชัน printData มีสองพารามิเตอร์ และประเภทอากิวเม้นต์ของมันคือ
string และ int ตามลาดับ ในการที่จะส่งอากิวเม้นต์ไปยังฟังก์ชัน อากิว
เม้นต์ตัวแรกจะต้องเป็น string ด้วย และตัวที่สองจะต้องเป็น integer
เช่นกัน
การส่งค่ากลับ return
การส่งค่ากลับจะใช้คาสั่ง return มันเป็นผลลัพธ์ของฟังก์ชันเพื่อที่จะ
ส่งกลับไปยังจุดเรียกเมื่อสิ้นสุดการทางานของฟังก์ชัน ประเภทตัวแปรที่
ส่งกลับจะต้องตรงกันกับประเภทของฟังก์ชัน และบางฟังก์ชันอาจจะไม่มี
การส่งค่ากลับ
อาเรย์
September 8, 2015
อาเรย์เป็นตัวแปรประเภทหนึ่งในภาษา C++ มันสามารถเก็บ
ข้อมูลที่เป็นชุดไว้ในตัวแปรเดียวโดยการใช้ index เพื่อเป็นตัวชี้
ของตาแหน่งข้อมูล ดังนั้นอาเรย์จึงเป็นตัวแปรประเภทหนึ่ง
และมีรูปแบบคือ:
type name[size];
พอยน์เตอร์
September 8, 2015
พอยน์เตอร์ เป็นตัวแปรที่ใช้เก็บตาแหน่งที่อยู่ของตัวแปร การใช้
พอยน์เตอร์ เราสามารถเข้าถึงข้อมูลที่เราต้องการได้โดยตรงโดย
การใช่ชื่อของตัวแปร และมันมีประโยชน์มากในการเขียน
โปรแกรมด้วยภาษาที่สามารถจัดการหน่วยความจาได้ง่าย เช่น
ภาษา C และภาษา C++
มีเครื่องหมายประมาณ 2-3 อันที่คุณจะต้องรู้เกี่ยวกับพอยน์เตอร์:
Address-of operator (&)
Dereference operator (*)
Declaration operator (*)
หน่วยความจาแบบไดนามิก
September 8, 2015
ในบทก่อนหน้าของบทเรียนนี้ คุณได้เห็นแล้วว่าหน่วยความจา
ต้องถูกจองก่อนสาหรับตัวแปร ก่อนที่โปรแกรมจะรัน ในบาง
กรณี เราอาจจะต้องการจองหน่วยความจาแบบไดนามิกส์ในเวลา
ที่โปรแกรมรัน
ในบทนี้ การจองหน่วยความจาแบบไดนามิส์ ในภาษา C++ นั้น
ให้เราสามารถจัดการกับหน่วยความจาได้ในเวลาที่โปรแกรม
ทางาน เช่น การจองหน่วยความจา และการคืนหน่วยความจา
ให้กับระบบ
โครงสร้างข้อมูล
September 8, 2015
Data structures
Data structure เป็นกลุ่มของตัวแปรที่สามารถรวมอยู่ในตัวแปรตัวเดียว
เราเรียกว่า structureตัวแปรที่อยู่ข้างในมันเรียกว่า members members
สามารถมีประเภทแระขนาดต่างๆ ในภาษา C++ เราสามารถสร้าง
โครงสร้างข้อมูลจากรูปแบบตามนี้:
struct struct_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
ประเภทข้อมูลอื่น
September 8, 2015
Type aliases (typedef)
ในภาษา C++ เราสามารถสร้างประเภทตัวแปรขึ้นมาเอง (aliases
type) ได้นั่นหมายความว่าชื่อของประเภทข้อมูลจะเป็นอะไรก็ได้
ตามที่เราต้องการ มีสองวิธีในการที่จะสร้างประเภทตัวแปรที่กาหนด
โดยผู้ใช้โดยการใช้คาสั่ง typedef และ using แต่ในบทเรียนนี้เราจะ
ใช้แค่ typedef และ typedef มีรูปแบบการใช้งานคือ:
typedef data_type identify;typedef เป็นคาสั่งในการ
สร้าง data_type เป็นประเภทข้อมูลเดิมที่มีอยู่เช่น int, float เป็นต้น
และ identify เป็นชื่อของตัวแปรที่มีกฏการตั้งชื่อเหมือนกับตัวแปร
คลาสและออบเจ็ค
September 8, 2015
C++ classes
ในการเขียนโปรแกรมเชิงวัตถุ คลาสเป็น program-code-template สาหรับสร้างออบ
เจ็ค
ในภาษา C++ ให้เราสามารถสร้างคลาสที่มีแนวคิดขยายมากจากโครงสร้างข้อมูล
คลาสสามารถถูกกาหนดโดยการใช้คาสั่ง class และมีรูปแบบดังนี้:
class class_name {
access_specifier_1:
member1;
access_specifier_2:
member2;
...
} object_names;
Type conversions
ในตัวอย่างนี้ เรามี 3 คาสั่ง และแต่ละคาสั่งได้ทีการแปลงข้อมูลแบบ
implicit conversion เราได้สร้างตัวแปร a และ b ในตัวอย่างเราจะได้a เป็น
10 เพราะว่าตัวแปร a นั้นเป็น integer ถึงแม้ว่าเราจะได้กาหนดค่า 10.5 ให้
มัน แต่คอมไพเลอร์จะทาการแปลงข้อมูลอัตโนมัติ นี้เรียกว่า Implicit
conversion
expression int c = a / b; c จะมีค่าเป็น 2 เพราะเกิดจาการทางานของคาสั่ง a
/ bเนื่องจากตัวแปรทั้งสองทั้ง a และ b มีประเภทเป็น (int) ถึงแม้ว่าเราจะ
ใช้คาสั่ง short ในการประกาศตัวแปร b แต่มันมีขนาดเล็กกว่า int และทั้ง
สองประเภทเก็บข้อมูลประเภทเดียวกัน
Exceptions
C++ exceptions
Exceptions เป็นวิธีที่จะจัดการกับโปรแกรมเพื่อให้ไปทาอย่างอื่นเมื่อมี
ข้อผิดพลาดเกิดขึ้น โปรแกรมจะพยายามทาบางอย่างที่เราได้ระบุไว้ถ้ามี
ข้อผิดพลาดเกิดขึ้น โปรแกรมจะย้ายไปทางานอีกส่วนของโปรแกรมที่
เรียกว่าฟังก์ชันตัวจัดการ Exceptions
Preprocessor directives
September 8, 2015
Preprocessor directives เป็นบรรทัดคาสั่งในโปรแกรมที่จะถูกประมวลผล
ก่อนที่คอมไพล์เลอร์จะทางาน มันทางานโดย preprocessor และคาสั่ง
เหล่านี้จะต้องใส่เครื่องหมาย (#) นาหน้า ข้อแตกต่างจากคาสั่งปกติคือมัน
จะไม่มีเซมิโคลอน (;) หลังจากคาสั่ง เพราะว่ามันใช้การขึ้นบรรทัดใหม่
เป็นตัวบ่งบอก แต่ถ้าเราต้องการให้มันอยู่ในบรรทัดเดียวกัน เราสามารถ
ใช้เครื่องหมายขึ้นบนนทัดใหม่ได้(/).
Input/output with files
September 8, 2015
ในบทสุดท้ายของบทเรียนภาษา C++ นี้ คุณจะได้เรียนการ
ดาเนินการพื้นฐานกับไฟล์โดยเราสามารถที่อ่านและเขียนบางอย่าง
ลงไปใน text ไฟล์fstream เป็นไลบรารีมาตรฐานที่ช่วยให้เรา
สามารถดาเนินการบางอย่างกับไฟล์ โดยจะมี 3 steam classes ใน
ไลบรารีที่แสดงในรายการข้างล่างนี้
ofstream: Stream class เพื่อเขียนข้อมูลลงไฟล์
ifstream: Stream class เพื่ออ่านข้อมูลจากไฟล์
fstream: Stream class เพื่ออ่านข้อมูลและเขียนข้อมูลกับไฟล์
อย่างไรก็ตาม ในบทนี้เราจะทางานกับแค่ text ไฟล์เท่านั้น
สมาชิก
นายอภิวัฒน์ จิตนิยม ม.6/3 เลขที่ 12
นายพีรพัฒน์ สงเคราะห์ ม.6/3 เลขที่ 13
นางสาวณิชากร ทองสุข ม.6/3 เลขที่ 19
นางสาวสุภัชชา ก้านเหลือง ม.6/3 เลขที่ 24
นางสาววิลาวัณย์กระจ่างแจ่ม ม.6/3 เลขที่ 26

คำสั่งควบคุมของโปรแกรม

  • 1.
  • 2.
    ในบทก่อนหน้า คุณได้เรียนพื้นฐานของภาษา C++ไป แล้ว ในบทนี้ คุณจะได้เรียนเกี่ยวกับการควบคุม โปรแกรมโดยการใช้คาสั่งควบคุม อย่างเช่น if, if else, switch, for, while, do-while คาสั่งเหล่านี้ใช้เพื่อควบคุม โปรแกรมเพื่อให้ไปในทิศทางที่เราต้องการ
  • 3.
    คาสั่ง If คาสั่ง ifถูกใช้เพื่อควบคุมโปรแกรมกับเงื่อนไขที่กาหนด โค้ดใน บล็อกของ คาสั่ง If จะทางานถ้าเงื่อนไขตรงหรือเป็นจริง int n = 10; if (n == 10) { cout << "n is 10"; }ในตัวอย่างนี้ เราได้ใช้if เพื่อตรวจสอบว่าตัวแปร n เท่ากับ 10 หรือไม่ ถ้ามันตรงกับเงื่อนไข โปรแกรมจะทางานในบล็อคของ If คือ cout << "n is 10".
  • 4.
    คาสั่ง If คาสั่ง ifถูกใช้เพื่อควบคุมโปรแกรมกับเงื่อนไขที่กาหนด โค้ดใน บล็อกของ คาสั่ง If จะทางานถ้าเงื่อนไขตรงหรือเป็นจริง int n = 10; if (n == 10) { cout << "n is 10"; }ในตัวอย่างนี้ เราได้ใช้if เพื่อตรวจสอบว่าตัวแปร n เท่ากับ 10 หรือไม่ ถ้ามันตรงกับเงื่อนไข โปรแกรมจะทางานในบล็อคของ If คือ cout << "n is 10".
  • 5.
    คาสั่ง If else คาสั่งIf else นั้นคล้ายกับคาสั่ง if คาสั่ง Else เพื่อทาเงื่อนไขที่นอกเหลือจาก เงื่อนไขอื่นทั้งหมด และมันจะต้องเริ่มต้นด้วยคาสั่ง if เสมอ int m = -1; if (n < 0) { cout << "Negative number."; } else if (n > 0) { cout << "Positive number."; } else { cout << "Zero number"; }
  • 6.
    ในตัวอย่าง คาสั่ง Ifสามารถมีเงื่อนไขได้หลายอันโดยการใช้ if else () เงื่อนไขสุดท้ายคือ else ซึ่งมันจะทางานเมื่อไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้า ในโค้ด เรามีตัวแปร m ซึ่งมี ข้อมูลเป็นแบบ integer โปรแกรมของเรานั้นจะตรวจสอบว่า m เป็นจานวนเต็มบวก เต็ม ลบ หรือศูนย์ มากไปกว่านั้น expression สามารถมีได้หลายเงื่อนไข โดยการใช้ตัวดาเนินการตรรกะ int a = 12; int b = 5; if (a > 10 && b % 2 == 0) { cout << "a is greater than 10 and b is even number."; } else { cout << "Other condition"; }
  • 7.
    คาสั่ง Switch case คาสั่งswitch-case นั้นคล้ายกับ คาสั่ง If-else เป้าหมายของมันเพื่อตรวจสอบกับค่าคงที่ นี่ เป็นตัวอย่างการใช้คาสั่ง switch switch (n) { case 1: cout << "n is 1"; break; case 2: cout << "n is 2"; break; default: cout << "Unknown n"; }
  • 8.
    ในตัวอย่าง มันสามารถถูกเขียนโดยการใช้คาสั่ง if-elseได้ดังด้านล่างนี้ #include<iostream> using namespace std; int main () { if (n == 1) { cout << "n is 1"; } else if (n == 2) { cout << "n is 2"; } else { cout << "Unknown n"; } return 0; }
  • 9.
    คาสั่ง while loop ลูปที่ง่ายและพื้นฐานที่สุดในภาษาC++ นั้นคือ while loop ซึ่งมีรูปแบบการ ใช้งานคือ while (expression) { statements }คาสั่ง while-loop ใช้เพื่อทาสั่งโค้ดของโปรแกรมในขณะที่ expression เป็น จริง true และมันจะสิ้นสุดการทางานเมื่อ expression ไม่เท็จและออกจาก while-loop และทาคาสั่งอื่นต่อไป
  • 10.
    คาสั่ง do-while loop ลูปที่คล้ายกับwhile-loop คือ do-while ลูป มันมีรูปแบบดังนี้ do { statements } while (condition); มันทางานเหมือน while loop ยกเว้นในการเปรียบเทียบเงื่อนไขจะทาตอนท้าย หลังจากสิ้นสุดคาสั่งในลูป นั่นหมายความว่า do-while loop จะต้องทางานอย่าง น้อยหนึ่งรอบแน่นอน มันมักจะใช้กับโปรแกรมที่จาเป็นต้องรับค่าจากผู้ใช้ก่อนที่ จะทาอย่างอื่นต่อไป มาดูตัวอย่างที่ง่ายๆ
  • 11.
    คาสั่ง for loop forloop เป็นลูปที่มีการวนรอบเป็นจานวนที่แน่นอน รูปแบบของมันคือ for (initialize; condition; increase) { statements } for loop เป็นลูปที่สามารถวนรอบตามตัวเลขที่กาหนดได้มันทางานเหมือน while-loop มันจะวนซ้าจนกว่า expressionจะเป็นเท็จ นอกจากนั้น เรายัง สามารถประกาศตัวแปรเริ่มต้น สร้าง expression เพิ่มและลดค่าก่อนที่ลูปจะ เริ่ม ตัวอย่างการนับตัวเลขโดยการใช้for loop
  • 12.
    #include <iostream> using namespacestd; int main () { for (int n = 1; n <= 10; n++) { cout << n << ","; } cout << " end loop"; return 0; }
  • 13.
    คาสั่ง break คาสั่ง breakเพื่อจบลูปในทันที และมันไม่สนใจว่า expression จะเป็นจริงหรือไม่ #include <iostream> using namespace std; int main () { for (int n = 1; n <= 10; n++) { if(n == 5) break; cout << n << ","; } cout << " end loop"; return 0; }
  • 14.
    คาสั่ง continue ไม่เหมือนคาสั่ง breakคาสั่ง continue ถูกใช้เพื่อข้ามการทางานในรอบปัจจุบัน ซึ่งจะไม่ ทาคาสั่งหลังจากมันและไปเริ่มรอบถัดไป #include <iostream> using namespace std; int main () { for (int n = 1; n <= 10; n++) { if(n % 2 == 0) continue; cout << n << ","; } cout << " end loop"; return 0; }
  • 15.
    ฟังก์ชัน September 8, 2015 ฟังก์ชันเป็นส่วนหรือกลุ่มของคาสั่งเพื่อทางานบางอย่างแนวคิดของ ฟังก์ชันคือการรวบรวมโค้ดที่ใช้บ่อยๆ และซ้าๆ กลับมาใช้ใหม่ เมื่อคุณสร้างฟังก์ชันมันสามารถถูกเรียกใช้ได้จากทุกจุดของโปรแกรม บางครั้งขึ้นกับขอบเขตของมัน รูปแบบในการเขียนฟังก์ชันในภาษา C++ คือ: type name ( parameter1, parameter2, ... ) { statements }
  • 16.
     - typeเป็นประเภทของฟังก์ชันสาหรับการส่งค่ากลับ ประเภทของฟังก์ชัน นั้นจะเป็นเหมือนประเภทของัวแปร เช่น integer, floating, double หรือ แบบอ็อบเจ็ค ประเภทแบบvoidหมายความว่าฟังก์ชันไม่มีค่าที่ต้องส่งกลับ - name นั้นเป็นชื่อของฟังก์ชันที่เราสร้างขึ้น มันมีวิธีการตั้งคือโดยการใช้ กฏแบบเดียวกันกับการตั้งชื่อตัวแปร มันสามารถประกอบไปด้วยตัวอักษร ตัวเลข และ underscore (_) แต่ไม่สามารถเริ่มต้นด้วยตัวเลข - Parameters เป็นเซ็ตของตัวแปรที่ถูกส่งเข้ามายังฟังก์ชัน ฟังก์ชันสามารถมี หรือไม่มีพารามีเตอร์ก็ได้ขึ้นกับวัตถุประสงค์ของมัน - Statement คือโค้ดของโปรแกรมที่จะทางานและให้ค่าผลลัพธ์ของฟังก์ชัน
  • 17.
    Function parameters เหมือนที่กล่าวไว้ก่อนหน้า ฟังก์ชันพารามิเตอร์เป็นเซ็ตของตัว แปรหรืออ็อบเจ็คที่ส่งไปยังฟังก์ชันประเภทของพารามิเตอร์นั้น เป็นตัวแปรหรือออบเจ็ค และฟังก์ชันสามารถมีหรือไม่มี พารามิเตอร์ก็ได้มาดูตัวอย่างของการใช้ฟังก์ชันพารามิเตอร์
  • 18.
    // Function withoutparameter float getPI () { return 3.14; } // Function with three parameters int findVolume(float width, float long, float height) { float volume = width * long * height; return volume; }
  • 19.
    Function arguments ฟังก์ชันอากิวเม้นต์คือเซ็ตของตัวแปรที่ส่งไปยังฟังก์ชัน อากิวเม้นต์จะต้อง ตรงกันกับฟังก์ชันพารามิเตอร์และเรียงไปตามลาดับที่ได้ประกาศไว้มาดู สามตัวอย่างเกี่ยวกับฟังก์ชันอากิวเม้นต์ printData("Marcus",14); ฟังก์ชัน printData มีสองพารามิเตอร์ และประเภทอากิวเม้นต์ของมันคือ string และ int ตามลาดับ ในการที่จะส่งอากิวเม้นต์ไปยังฟังก์ชัน อากิว เม้นต์ตัวแรกจะต้องเป็น string ด้วย และตัวที่สองจะต้องเป็น integer เช่นกัน การส่งค่ากลับ return การส่งค่ากลับจะใช้คาสั่ง return มันเป็นผลลัพธ์ของฟังก์ชันเพื่อที่จะ ส่งกลับไปยังจุดเรียกเมื่อสิ้นสุดการทางานของฟังก์ชัน ประเภทตัวแปรที่ ส่งกลับจะต้องตรงกันกับประเภทของฟังก์ชัน และบางฟังก์ชันอาจจะไม่มี การส่งค่ากลับ
  • 20.
    อาเรย์ September 8, 2015 อาเรย์เป็นตัวแปรประเภทหนึ่งในภาษาC++ มันสามารถเก็บ ข้อมูลที่เป็นชุดไว้ในตัวแปรเดียวโดยการใช้ index เพื่อเป็นตัวชี้ ของตาแหน่งข้อมูล ดังนั้นอาเรย์จึงเป็นตัวแปรประเภทหนึ่ง และมีรูปแบบคือ: type name[size];
  • 21.
    พอยน์เตอร์ September 8, 2015 พอยน์เตอร์เป็นตัวแปรที่ใช้เก็บตาแหน่งที่อยู่ของตัวแปร การใช้ พอยน์เตอร์ เราสามารถเข้าถึงข้อมูลที่เราต้องการได้โดยตรงโดย การใช่ชื่อของตัวแปร และมันมีประโยชน์มากในการเขียน โปรแกรมด้วยภาษาที่สามารถจัดการหน่วยความจาได้ง่าย เช่น ภาษา C และภาษา C++ มีเครื่องหมายประมาณ 2-3 อันที่คุณจะต้องรู้เกี่ยวกับพอยน์เตอร์: Address-of operator (&) Dereference operator (*) Declaration operator (*)
  • 22.
    หน่วยความจาแบบไดนามิก September 8, 2015 ในบทก่อนหน้าของบทเรียนนี้คุณได้เห็นแล้วว่าหน่วยความจา ต้องถูกจองก่อนสาหรับตัวแปร ก่อนที่โปรแกรมจะรัน ในบาง กรณี เราอาจจะต้องการจองหน่วยความจาแบบไดนามิกส์ในเวลา ที่โปรแกรมรัน ในบทนี้ การจองหน่วยความจาแบบไดนามิส์ ในภาษา C++ นั้น ให้เราสามารถจัดการกับหน่วยความจาได้ในเวลาที่โปรแกรม ทางาน เช่น การจองหน่วยความจา และการคืนหน่วยความจา ให้กับระบบ
  • 23.
    โครงสร้างข้อมูล September 8, 2015 Datastructures Data structure เป็นกลุ่มของตัวแปรที่สามารถรวมอยู่ในตัวแปรตัวเดียว เราเรียกว่า structureตัวแปรที่อยู่ข้างในมันเรียกว่า members members สามารถมีประเภทแระขนาดต่างๆ ในภาษา C++ เราสามารถสร้าง โครงสร้างข้อมูลจากรูปแบบตามนี้: struct struct_name { member_type1 member_name1; member_type2 member_name2; member_type3 member_name3; .
  • 24.
    ประเภทข้อมูลอื่น September 8, 2015 Typealiases (typedef) ในภาษา C++ เราสามารถสร้างประเภทตัวแปรขึ้นมาเอง (aliases type) ได้นั่นหมายความว่าชื่อของประเภทข้อมูลจะเป็นอะไรก็ได้ ตามที่เราต้องการ มีสองวิธีในการที่จะสร้างประเภทตัวแปรที่กาหนด โดยผู้ใช้โดยการใช้คาสั่ง typedef และ using แต่ในบทเรียนนี้เราจะ ใช้แค่ typedef และ typedef มีรูปแบบการใช้งานคือ: typedef data_type identify;typedef เป็นคาสั่งในการ สร้าง data_type เป็นประเภทข้อมูลเดิมที่มีอยู่เช่น int, float เป็นต้น และ identify เป็นชื่อของตัวแปรที่มีกฏการตั้งชื่อเหมือนกับตัวแปร
  • 25.
    คลาสและออบเจ็ค September 8, 2015 C++classes ในการเขียนโปรแกรมเชิงวัตถุ คลาสเป็น program-code-template สาหรับสร้างออบ เจ็ค ในภาษา C++ ให้เราสามารถสร้างคลาสที่มีแนวคิดขยายมากจากโครงสร้างข้อมูล คลาสสามารถถูกกาหนดโดยการใช้คาสั่ง class และมีรูปแบบดังนี้: class class_name { access_specifier_1: member1; access_specifier_2: member2; ... } object_names;
  • 26.
    Type conversions ในตัวอย่างนี้ เรามี3 คาสั่ง และแต่ละคาสั่งได้ทีการแปลงข้อมูลแบบ implicit conversion เราได้สร้างตัวแปร a และ b ในตัวอย่างเราจะได้a เป็น 10 เพราะว่าตัวแปร a นั้นเป็น integer ถึงแม้ว่าเราจะได้กาหนดค่า 10.5 ให้ มัน แต่คอมไพเลอร์จะทาการแปลงข้อมูลอัตโนมัติ นี้เรียกว่า Implicit conversion expression int c = a / b; c จะมีค่าเป็น 2 เพราะเกิดจาการทางานของคาสั่ง a / bเนื่องจากตัวแปรทั้งสองทั้ง a และ b มีประเภทเป็น (int) ถึงแม้ว่าเราจะ ใช้คาสั่ง short ในการประกาศตัวแปร b แต่มันมีขนาดเล็กกว่า int และทั้ง สองประเภทเก็บข้อมูลประเภทเดียวกัน
  • 27.
    Exceptions C++ exceptions Exceptions เป็นวิธีที่จะจัดการกับโปรแกรมเพื่อให้ไปทาอย่างอื่นเมื่อมี ข้อผิดพลาดเกิดขึ้นโปรแกรมจะพยายามทาบางอย่างที่เราได้ระบุไว้ถ้ามี ข้อผิดพลาดเกิดขึ้น โปรแกรมจะย้ายไปทางานอีกส่วนของโปรแกรมที่ เรียกว่าฟังก์ชันตัวจัดการ Exceptions
  • 28.
    Preprocessor directives September 8,2015 Preprocessor directives เป็นบรรทัดคาสั่งในโปรแกรมที่จะถูกประมวลผล ก่อนที่คอมไพล์เลอร์จะทางาน มันทางานโดย preprocessor และคาสั่ง เหล่านี้จะต้องใส่เครื่องหมาย (#) นาหน้า ข้อแตกต่างจากคาสั่งปกติคือมัน จะไม่มีเซมิโคลอน (;) หลังจากคาสั่ง เพราะว่ามันใช้การขึ้นบรรทัดใหม่ เป็นตัวบ่งบอก แต่ถ้าเราต้องการให้มันอยู่ในบรรทัดเดียวกัน เราสามารถ ใช้เครื่องหมายขึ้นบนนทัดใหม่ได้(/).
  • 29.
    Input/output with files September8, 2015 ในบทสุดท้ายของบทเรียนภาษา C++ นี้ คุณจะได้เรียนการ ดาเนินการพื้นฐานกับไฟล์โดยเราสามารถที่อ่านและเขียนบางอย่าง ลงไปใน text ไฟล์fstream เป็นไลบรารีมาตรฐานที่ช่วยให้เรา สามารถดาเนินการบางอย่างกับไฟล์ โดยจะมี 3 steam classes ใน ไลบรารีที่แสดงในรายการข้างล่างนี้ ofstream: Stream class เพื่อเขียนข้อมูลลงไฟล์ ifstream: Stream class เพื่ออ่านข้อมูลจากไฟล์ fstream: Stream class เพื่ออ่านข้อมูลและเขียนข้อมูลกับไฟล์ อย่างไรก็ตาม ในบทนี้เราจะทางานกับแค่ text ไฟล์เท่านั้น
  • 30.
    สมาชิก นายอภิวัฒน์ จิตนิยม ม.6/3เลขที่ 12 นายพีรพัฒน์ สงเคราะห์ ม.6/3 เลขที่ 13 นางสาวณิชากร ทองสุข ม.6/3 เลขที่ 19 นางสาวสุภัชชา ก้านเหลือง ม.6/3 เลขที่ 24 นางสาววิลาวัณย์กระจ่างแจ่ม ม.6/3 เลขที่ 26