Try   HackMD

CPP基礎.Lesson 1

建立開發環境

常用的IDE (整合開發環境)

  • Code::Blocks
    下載連結
    推薦下載 -setup.exe 的那個版本比較不用設定一些東西
  • dev cpp (已停止更新)
    但是他有中文版,使用起來也很簡單,適合初學者使用。

基本程式架構&cout

下面是一個最簡單的C++程式範例

#include <iostream> using namespace std; int main() { cout << "Hello! World!"; }

猜的出他在做什麼嗎?
他可以在螢幕上印出Hello! World!
讓我們一行一行看看他在做什麼吧!

#include <iostream>

#include顧名思義就是引入某個東西的意思
以這行來說,他引入了<iostream>這個函式庫
這個函式庫包含了可以把輸入輸出程式碼變成組合語言的文件。

組合語言是一種機器看的懂的程式碼
p.s. 有興趣可以參考 https://godbolt.org/

語法教室

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

其他常見的標頭檔

//懶人專用 一次引入所有常用的(g++專用,clang會編譯不過)
<bits/stdc++.h>
//STL 函式
<algorithm>
//資料結構
<list>
<map>
<queue>
<set>
<stack>
<vector>
//輸入輸出
<iostream>
<cstdio>
//數學
<cmath>

using namespace std;

使用std這個命名空間

命名空間是避免大家使用同樣的名稱為類別、物件(簡單來說就是程式裡的變數那些的,以後會學?)命名的一種機制

我們可做這樣的比喻:在現實生活中,我們可能會在同一班就遇到同名同姓的人, 但 C++ 程式 (同一班) 卻不允許有同名同姓的情況發生,因為當有同名同姓的人出現時,電腦會無法判斷到底現在是在叫哪個人而產生程式的錯誤。

int main() { ... }

程式的進入點,在{ }裡面放你的程式碼

cout << "Hello! World!";

cout中的c是字元(character)的意思
(如果你想知道更多)
cout就是"character output"
可以在螢幕上印出Hello! World!
<<用來對cout這個"輸出流"重載
關於資料流可以花一整堂課解釋
這裡就先知道cout的用法就行

語法教室

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

//example 1
cout << "在雙引號裡打你想要的字";

//example 2
int a = 1; //int 是整數的意思,這個之後會說到
cout << a; //印出變數a的內容

//換行方法1
cout << "在雙引號裡打你想要的字\n"; //加入 \n 來換行
cout << a << "\n";

//換行方法2
cout << "在雙引號裡打你想要的字" << endl; //加入 endl 來換行
cout << a << endl;

還有其他很多輸出語法等著你去發掘喔!
關於endl操縱符可以參考一下 這篇

變數

用來儲存一個會變的數值(可以是整數,小數,文字

常見的變數型態

型態 中文 英文 可儲存的資料
int 整數 Integer -2,147,483,648 至2,147,483,647
long long 長整數 Long long integer
263
2631
float 浮點數(小數)(單精度) floating point
1038
~
1038
double 浮點數(小數)(雙精度) Double-precision floating-point
10308
~
10308
char 字元 Character 各種字母和符號
string 字串 String 各種句子
bool 布林(是非) boolean true,false

定義一個變數

語法教室

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

int a; //定義一個整數變數名字叫 a 
int a = 0; //可以直接給他值
char b = 'a'; //給值的時候字元要使用單引號
string c = "hi, how are you?"; //字串用雙引號

除此之外還有各種修飾子,以後會說。有興趣的人可以先去研究!

cin

範例

#include <iostream> using namespace std; int main() { int a = 0; cin >> a; //輸入a cout << a; //印出a }

語法教室

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

cin >> + 變數名 + ;

int a;
cin >> a;

Coding Style

Overall Goal

  • 易讀
  • 易改
  • 一致
  • 看起來舒服

寫程式的風格~~
除了讓自己看的懂,也要讓別人看的懂才是好的程式!

永遠不要相信未來的自己會懂你

變數命名方式

  • 小駝峰 (lower camel case) 第一個單字的首字母小寫,其餘單字首字母大寫

    camelCase

  • 大駝峰 (upper camel case,Pascal Case) 首字母也大寫

    PascalCase

  • snake case 用 _ 來分隔單字

    snake_case

  • 匈牙利命名法(Hungarian notation)

縮排的重要

除非你立志參加C語言混亂代碼大賽否則縮排很重要!

  • 沒縮排
    ​​​​#include <iostream> ​​​​using namespace std; ​​​​int main() { ​​​​for(int i = 0; i < 10; i++) { ​​​​for(int j = 0; j < 10; j++) { ​​​​cout << "Hello! World!"; ​​​​} ​​​​} ​​​​}
  • 有縮排
    ​​​​#include <iostream> ​​​​using namespace std; ​​​​int main() { ​​​​ for(int i = 0; i < 10; i++) { ​​​​ for(int j = 0; j < 10; j++) { ​​​​ cout << "Hello! World!"; ​​​​ } ​​​​ } ​​​​}

    別問這程式的意義是什麼 他沒有意義

換行

恩恩恩 對就是適當時機要記得換行

寫註解

給別人或給自己看

  • 適時加上註解有助於理解
  • 避免非ASCII的文字

    注意程式檔案的編碼,最好存utf-8比較不會出錯
    如果下次打開程式發現是亂碼可以嘗試以big-5編碼開啟

有名的Coding Style們