โครงสร้างของภาษา C++
โปรแกรมในภาษา C++
โปรแกรมแรกสำหรับผู้เริ่มต้นการเขียนโปรแกรมในทุกๆ ภาษาคือโปรแกรมที่เรียกว่า "Hello World" ซึ่งเป็นโปรแกรมที่จะแสดงผลข้อความว่า "Hello World" ออกทางหน้าจอคอมพิวเตอร์ของคุณ ถ้านี่เป็นประสบการณ์ในการเขียนโปรแกรมครั้งแรกของคุณ คุณจะแปลกใจกับสิ่งที่คุณจะเห็นต่อไป
// my first world program
#include <iostream>
int main()
{
    std::cout << "Hello World!\n";
    return 0;
}
และข้างล่างนี้เป็นผลลัพธ์ของโปรแกรมจากตัวอย่างแรกของเรา
Hello World!
ในส่วนแรกที่คุณเห็นนั้นคือซอสโค้ดของโปรแกรม และส่วนที่สองคือผลลัพธ์ของโปรแกรม เมื่อคุณรันโปรแกรมคุณจะเห็นข้อความว่า "Hello world" ถูกแสดงผลออกทางหน้าจอคอมพิวเตอร์ของคุณ คุณสามารถทดสอบกับคำหรือประโยคอื่นๆ เพื่อดูผลลัพธ์ของมัน เช่น ชื่อของคุณเอง
ต่อไปเป็นการอธิบายการทำงานของโปรแกรมข้างบนทีละบรรทัดเพื่อให้คุณทราบว่าโปรแกรมในภาษา C++ นั้นมีการทำงานอย่างไร
#include <iostream>
คำสั่งแรกในโปรแกรมเป็นการนำเข้าไลบรารี่มาตฐานของภาษา C++ ในตัวอย่างเราได้นำเข้าไลบรารี่ iostream ซึ่งจะประกอบไปด้วยฟังก์ชันการทำงานเกี่ยวกับ Input และ Output ซึ่งในภาษา C++ นั้นมีไลบรารี่อื่นๆ อีกมากมาย คุณสามารถนำเข้าไลบรารี่เหล่านั้นได้ด้วย directive #include ซึ่งแต่ละชุดคำสั่งจบด้วยการขึ้นบรรทัดใหม่
int main()
{
    std::cout << "Hello World!";
    return 0;
}
ต่อมาเป็นฟังก์ชันในการทำงานหลักของโปรแกรม เมื่อโปรแกรมในภาษา C++ เริ่มต้นการทำงานนั้นจะเริ่มต้นทำงานในฟังก์ชันที่ชื่อว่า main() นั่นหมายความว่าโปรแกรมในภาษา C++ ต้องมีฟังก์ชันนี้เสมอ เพราะเป็นฟังก์ชันแรกของโปรแกรมที่จะทำงานเมื่อคุณรันโปรแกรม อย่างไรก็ตามอาจจะมีฟังก์ชันอื่นที่สร้างขึ้นโดยผู้ใช้ ซึ่งคุณจะได้เรียนในบทของฟังก์ชัน
Statement (คำสั่งการทำงาน)
Statement คือคำสั่งการทำงานของโปรแกรมในภาษา C++ ในการเขียนโปรแกรมหนึ่งโปรแกรมนั้นโดยส่วนมากแล้วจะประกอบไปด้วยหลายคำสั่งเพื่อให้การทำงานเสร็จสิ้น จากตัวอย่างก่อนหน้า std::cout << "Hello World!\n" นั้นคือคำสั่งการทำงานของโปรแกรม คำสั่งในภาษา C++ นั้นจะจบด้วยเครื่องหมายเซมิโคลอน (;) ดังนั้นหลายคำสั่งอาจจะอยู่ในบรรทัดเดียวกันได้
int a = 0;
int b = 1; int c = 2;
ในตัวอย่างนั้นเรามีสามคำสั่งด้วยกันซึ่งเป็นคำสั่งในการประกาศตัวแปร สำหรับคำสั่งในการประกาศตัวแปร b และตัวแปร c นั้นจะอยู่บรรทัดเดียวกัน แต่คั่นด้วยเครื่องหมาย ; ทำให้ภาษา C++ สามารถแยกแยะแต่ละคำสั่งของการทำงานได้
คอมเม้นต์
คอมเม้นต์เป็นส่วนของซอสโค้ดที่ไม่มีผลกับโปรแกรมของเรา มันทำให้โปรแกรมเมอร์สามารถอธิบายโปรแกรมของพวกเขา และเพื่อให้ตรวจสอบได้ง่ายในภายหลัง ในภาษา C++ มีสองทางที่คุณจะสามารถคอมเมนต์ได้
// line comment
/* block comment */ 
คอมเมนต์ประเภทแรกคือ การคอมเมนต์แบบบรรทัด มันถูกใช้สำหรับเพื่อคอมเมนต์ในหนึ่งบรรทัด และจะไม่สนใจโค้ดของโปรแกรมหลังจากเครื่องหมายดับเบิ้ลสแลซ // แบบที่สองคือบล็อคคอมเม้นต์ ซึ่งจะละเว้นทุกอย่างเริ่มจาก /* และสิ้นสุดที่ */ ซึ่งมันมักจะใช้กับการคอมเม้นต์ในหลายบรรทัด อย่างไรก็ตามมันยังสามารถที่จะใช้ในการคอมเมนต์เพียงหนึ่งบรรทัดได้ นี่เป็นตัวอย่างของการใช้งานคอมเมนต์ในภาษา C++
// Name: Hello world program
// Author: marcuscode.com
// Date: September 8, 2015
#include <iostream>
/* the main function is called
when the program starts */
int main()
{
    std::cout << "Hello World!"; // display text
    return 0;
}
ในตัวอย่าง เป็นโปรแกรมในการแสดงผลข้อความ "Hello world" เช่นเดิม แต่ในเวอร์ชันนี้เราได้เพิ่มเติมการคอมเมนต์สำหรับโปรแกรม สามบรรทัดแรกเป็นการคอมเมนต์แบบ Single line ซึ่งเป็นการบอกชื่อของโปรแกรม ชื่อผู้เขียน และวันที่ที่สร้างขึ้น คอมเมนต์ที่สองก่อนฟังก์ชัน main() เป็นการคอมเมนต์แบบหลายบรรทัด (Multiline) สำหรับอธิบายการทำงานของฟังก์ชัน และสุดท้ายเป็นการคอมเมนต์ในบรรทัดเดียวกันกับคำสั่งการทำงาน
Using namespace std
ภาษา C++ มีไลบรารี่มาตรฐานที่เรียกว่าเนมสเปลซ (Namespace) จากตัวอย่างของโค้ดโปรแกรมก่อนหน้าที่เราได้ใช้มันไปแล้ว
using namespace std;
เพื่อใช้ฟังก์ชันในไลบรารี่ของ namespace std โดยไม่ต้องมี std:prefix เราจำเป็นต้องใช้คำสั่ง using namespace std อย่างเช่น ฟังก์ชัน cout เราจะสามารถเรียกใช้ฟังก์ชันนี้ได้ในทันที
#include <iostream>
int main()
{
    std::cout << "Hello C++\n";
    std::cout << "My name is Mateo\n";
    return 0;
}
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello C++\n";
    cout << "My name is Mateo\n";
    return 0;
}
โปรแกรมสองโปรแกรมด้านบนให้ผลลัพธ์ที่เหมือนกัน โปรแกรมแรกเราไม่ได้ประกาศโดยการใช้คำสั่ง namespace std และเราจำเป็นต้องเข้าถึงฟังก์ชัน cout โดยการใช้ std:cout ในการที่จะอนุญาติให้สามารถเข้าถึงทุกอย่างใน Namespace ได้โดยไม่ต้องใช้ std:prefix เราจำเป็นต้องใช้คำสั่ง using namespace std เหมือนในโปรแกรมที่สอง
Whitespace
Whitespace คือตัวอักษรหรือเครื่องหมายที่ใช้แบ่งแยกคำสั่งและ Token ในโค้ดของโปรแกรม ในภาษา C++ นั้น Whitespace จะประกอบไปด้วย การเว้นวรรค Tab และการขึ้นบรรทัดใหม่ Whitespace ที่เรียงต่อกันเป็นจำนวนมากนั้นไม่มีผลต่อการทำงานของโปรแกรมและคอมไพเลอร์ แต่มันช่วยให้โปรแกรมเมอร์สามารถทำโค้ดให้เป็นระเบียบและสามารถอ่านเข้าใจได้ง่ายขึ้นโดยคนอื่นๆ แต่ Whitespace ยังคงต้องใช้ในบางที่ เช่น ระหว่างคำสั่งของภาษา C++ และชื่อของตัวแปร เป็นต้น
int a = 1;
int b=2;
int c  =  3;
ในตัวอย่าง เป็นการใช้ Whitespace ในรูปแบบต่างๆ ซึ่งถือว่าเป็นรูปแบบการเขียนโปรแกรมของแต่ละคน แต่โดยปกติแล้วเรานิยมใช้ Whitespace ในรูปแบบของการประกาศตัวแปร a
Keywords
Keyword คือคำที่ถูกสงวนไว้ในภาษา C++ ซึ่งมันถูกใช้ในการทำงานของภาษา นั่นหมายความว่าคุณไม่สามารถใช้คำสั่งเหล่านี้ในการประกาศชื่อตัวแปร เมธอด คลาส หรือ Identifier อื่นได้ๆ นี่เป็นรายการของ Keyword ในภาษา C++
| alignas | alignof | and | and_eq | 
| asm | atomic_cancel | atomic_commit | atomic_noexcept | 
| auto | bitand | bitor | bool | 
| break | case | catch | char | 
| char16_t | char32_t | class | compl | 
| concept | const | constexpr | const_cast | 
| continue | decltype | default | delete | 
| do | double | dynamic_cast | else | 
| enum | explicit | export | extern | 
| false | float | for | friend | 
| goto | if | import | inline | 
| int | long | module | mutable | 
| namespace | new | noexcept | not | 
| not_eq | nullptr | operator | or | 
| or_eq | private | protected | public | 
| register | reinterpret_cast | requires | return | 
| short | signed | sizeof | static | 
| static_assert | static_cast | struct | switch | 
| synchronized | template | this | thread_local | 
| throw | true | try | typedef | 
| typeid | typename | union | unsigned | 
| using | virtual | void | volatile | 
| wchar_t | while | xor | xor_eq | 
เนื่องจากว่าภาษา C++ นั้นได้รับการพัฒนาอย่างต่อเนื่อง บาง Keyword นั้นได้ถูกเพิ่มเข้ามาในภายหลังตั้งแต่ C++11 และ C++17 และบาง Keyword ใช้งานในโมดูล TS
ในบทนี้ คุณได้เรียนรู้โครงสร้างพื้นฐานของภาษา C++ เราได้ให้คุณดูตัวอย่างของโปรแกรมในภาษา C++ และอธิบายการทำงานของโปรแกรม คำสั่งการทำงานของโปรแกรม และการคอมเมนต์โค้ด และรายการของ Keywords ที่ถูกใช้ในการทำงานของภาษา ซึ่งสิ่งเหล่านี้มีความสำคัญที่คุณจะต้องทำความเข้าใจสำหรับการเขียนโปรแกรมในภาษา C++