or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
臺中一中電研社C++教學講義
tags:
tcirc
社課
C++
台中一中電研社
第一節社課
開始
首先感謝大家來參加我們電研社,沒接觸過
c++
的人不用擔心,我們會從零基礎教起,而且會盡量用讓大家容易懂的方式教喔,有任何不清楚的地方都可以舉手發問,回家可以練練題目讓自己進步更快喔;如果是去年已經來過
c++
班的資深社員可以考慮看看新開的python班,或是解解我們電研開的judge😛tcirc judge
-https://judge.tcirc.tw/
C++
(引用自維基百科)
反正就是通用,很多平台支援,歷久不衰,適合用於畫面呈現需求低作業👍👍
IDE
(引述自維基百科)
簡單來說就是可以幫助你寫程式更方便的一種軟體,常見的有:codeblock, devc++, eclipse, visual stdio…
IDE主要有的功能有:
編譯(compile)(補充)
程式語言一共分成三種,高階語言、組合語言(Assembly Language)及機器語言(Machine Code),一般常聽到的程式名稱都是高階語言,例如:C++, python, java, javascript, ruby…而高階語言及組合語言是讓人類看的,電腦是無法閱讀的,所以這時候就需要一個翻譯,那就是編譯器。這三種語言的關係圖如下:
(圖源:https://kopu.chat/2017/04/14/arm-intel-cpu/)
C++:
組合語言:
機器語言:
會由一堆0和1構成,但因為過於攏長,這裡就不列出了。
以上的內容聽不懂就算了,對於以後寫程式不會有什麼影響。
hello world
#include (工具箱🧰)
用來引入一些寫好的程式碼("標頭檔"),包含許多函數和物件(工具🔧),而
<iostream>
標頭檔包含一些基本物件及函式namespace (哪來的工具)
用來區分函式及物件所屬的函式庫,通常我們使用的為標準函式庫(standard library)
main{} (主要工作區)
稱作「主函式」,由作業系統呼叫,並從此函式開始執行程式碼
大部分的程式會寫在這裡,也就是
{
到}
之間(在主函式之前可以寫全域變數、函式、前置編譯指令)
cout
執行程式時可以把想輸出的東西(數字、字元、字串)顯示在使用者的畫面上,cout後面要加上
<<
再接上想要輸出的東西這裡要輸出字串(兩個以上的字或中文字),得用雙引號(
" "
)放在字串前後註解
這行就是註解,如果要寫的程式有點複雜的時候(要做不只一件事情),寫註解可以提醒你要做哪些事情、一項一項來看事情有沒有做好(就像寫待辦事項一樣);
當你以後重新回來看這支程式(或是和其他人合作寫一支程式)的時候,可以比較快理解每行程式碼在做什麼🤔🤔
寫法:
//
再寫上註解/*
和*/
把註解包起來註解單純只是寫給人理解程式碼用的,裡面的內容是不會被編譯,也不會被執行的。所以裡面要寫什麼都可以(包括程式碼)
分號
;
請在每行程式碼結束的地方(通常是最後面)加上分號
這很重要
就像寫作文要分段一樣,不在後面加上分號的話系統執行會出錯
(就像作文老師會毫不留情給你0級分😂😂)
題目練習:b003: Hello,TCFSH!
各種型態的輸出
純數字或「變數」的輸出前後不用加東西
單一個字(英文、數字、符號)的輸出得用單引號(' ')放在字元前後(中文算字串得用雙引號)
兩個字以上和中文的輸出得用雙引號(" ")放在前後
這個的輸出也是得用單引號(' ')放在前後,下一頁是它的獨立介紹
跳脫字元
跳脫字元是在特定字元前加上一個反斜線(
\
),為了讓系統知道某些符號不是用於特殊功能,就只是一個字元而已,或是模擬鍵盤上的其他功能一些跳脫字元
題目練習:b004: 串串的強迫症
變數
存放在電腦裡的資料,不能更動的稱為常數,可以更改內容的則稱為變數。類似於數學中的x, y。
宣告
在C++中任何的變數都需要先透過宣告後才能夠使用,相當於數學中要先假設未知數後,才可以使用未知數。而宣告的方法如下:
在宣告時對於同資料型態的變數可以同時宣告多個變數,只需要在各個變數之間加上逗號即可。
賦值
有了變數之後就可以設定變數的值,將一個變數的記憶體覆寫為一個值的過程就稱為賦值。
實際操作上會使用
=
來賦值,賦值可以在宣告變數後的任何地方進行,並且新的值會覆蓋過原本的值。賦值也可以在宣告時就同時進行。輸出
如果想要知道一個變數的值可以透過前面教過的
cout
來輸出。此時只需要在<<
後加上變數名稱即可。注意:此處不需要使用
""
,加上""
後程式會將""
內的認定為字串輸出。資料型態
前面一直提到的資料型態究竟是什麼呢?資料型態就是指變數的種類,以下列舉出一些C++常見的變數:
有效位數 7位
有效位數 15位
字元
字元這一種資料型態在宣告時有兩種方式,第一種是在
''
內輸入字元,第二種是直接輸入0~255之間的數字(不須''
)。而所有字元以及其對應的數字可以參考ASCII碼(圖源:http://kevin.hwai.edu.tw/~kevin/material/JAVA/Sample2016/ASCII.htm )
(Dec:十進位,Hex:十六進位)
變數a與b都是字元的宣告方法,而c因為字元型態本身就只能儲存一個字元,故只有最後面那位會被儲存。
cin
你可能覺得為什麼聽到現在,感覺不像在寫程式的?因為程式的目的是為使用者做事情,所以我們必須從使用者取得資料,此時我們就需要輸入(input)了。在C++,中要取得輸入時可以使用
cin
,使用方法類似cout
。運算子
有特定運算功能的符號即稱為運算子,以下皆為運算子的舉例。
設定運算子
前面提到賦值用的
=
就是屬於設定運算子算數運算子
常見的算數運算子有
+
、-
、*
、/
、%
,分別代表加、減、乘、除、取餘。運算式
程式裡總不可能所有的變數都是先設定好或者是輸入的,程式的一大意義就是要幫你計算。這時候當你想要對一個變數進行運算時就需要使用到運算式了。
基本寫法
這裡的
=
是賦值得意思,並非數學上兩邊相等的意思。簡寫
從上面這隻程式我們可以發現第五行的地方是運算式的基本寫法,但左右兩邊都出現了i,
於是我們就可以把兩邊都消掉i(設定運算子不能這樣用),於是懶惰的程式設計師就發明了簡寫,如第六行所示。i++
與++i
的差異(補充)++i
是先做,i++
是後做,什麼先做後做的聽起來很抽象,那就直接看範例吧資料型態之間的轉換
數字
不同的資料型態在計算時會發生一些變換,在撰寫程式時必須特別注意以下規則:
數字及字元
可以利用
(int)
及(char)
對字元及整數進行轉換,轉換結果會依照ASCII碼。若是想要將'0'~'9'
之間的字元轉換為0~9
的數字,可以透過-'0'
來達成。溢位
既然資料型態有範圍,那如果數字超出了範圍會怎樣?當變數的值超出範圍,我們就稱這個情況為溢位(overflow)。如果我們宣告(int)一個整數i的值為2147483647,值的範圍會落在int的範圍內。但是這時我們使 i+1 便會發生溢位的狀況,這時的i會回到int的最小值-214748348。
題目練習