day01:編程入門
1. 編程的概念
程序:為實現特定目標或解決特定問題而用計算機語言編寫的一系列指令序列。
計算機語言:人與計算機之間通信的語言。計算機語言有很多種,比如BASIC語言、PASCAL語言、C語言、C++語言、Java語言等,每種計算機語言都有自身定義的規則,即使是同一種語言也有不同的版本,內部規則也會有少許不同。
編程:可以簡單的理解為程序員為了解決特定問題,按照自己的思路,在遵循特定的計算機語言規則下編寫程序的過程。
2. 編程軟件
工欲善其事,必先利其器,一個好的編譯軟件可以使我們的學習事半功倍
現在對於初學者常用的編譯軟件很多, 如:VC6.0,CodeBlocks,Dev-C++
本次課程使用Dev-C++軟件,主要是使用方便,小巧,對於如何下載和安裝,請查看以下鏈接,點擊可跳轉:
3. 鍵盤和鼠標的使用
鼠標的介紹
鼠標分為:左右鍵,滾輪
左鍵用於選擇和確認,一般可單擊(表示選擇),雙擊(表示確認)
右鍵用於項目提示和調出選項選擇框,一般將其放在我們要操作的項目上,右鍵單擊,就會出現一個新的小框,供我們選擇,這時候選擇應當使用:左鍵
滾輪用於上下翻頁(部分可以左右翻頁),如果和 Ctrl 結合使用,會出現大小縮放的效果,即放大縮小。
鍵盤快捷鍵
作用 | 快捷鍵 | 作用 | 快捷鍵 | 作用 | 快捷鍵 |
---|---|---|---|---|---|
縮放 | Ctrl+滾動滾輪 | 縮小 | Ctrl + '-'(鍵盤按鍵) | 放大 | Ctrl + '+'(鍵盤按鍵) |
中英文切換 | Ctrl + 空格 | 輸入法切換 | Ctrl + shift | 大小寫切換 | CapsLock |
全選 | Ctrl + A | 復制 | Ctrl + C | 粘貼 | Ctrl + V |
刪除 | Delete / Backspace | 剪切 | Ctrl + X | 查找 | Ctrl + F |
新建 | Ctrl + N | 保存 | Ctrl + S | 回退 | Ctrl + Z |
如果我們要使用:#, %, /, "",+,(), * 等鍵盤上的復合型按鍵怎么調出來呢?
需要先按住 Shift ,再按對應的按鍵(記住:此時 Shift不能松開, 上述快捷鍵 Ctrl 也是一樣)
如果程序編輯頁面的定位符變成了一個黑色小方塊,那么按一下鍵盤上的:Insert
注意:書寫程序時,全部的代碼都是在英文狀態下編寫的,也就是輸入法的狀態為 English
4. 輸出Hello World!
這就是我們的第一個程序,也是基本上所有編程的第一個入門程序:輸出一個字符串"Hello World!"。它的一個執行效果是:出現一個黑窗口(控制台),窗口上輸出"Hello World!",具體效果如下圖。
#include<iostream>
using namespace std;
int main(){
cout<<"Hello World!"<<endl;
return 0;
}
那么接下來我們就對這個文件進行逐行分析
#include<iostream> //導入標准輸入輸出頭文件
頭文件是C++程序對其他程序的引用,作為一種包含功能函數、數據結構聲明的載體文件,用於保存程序的聲明。
它就像一個大型倉庫,里面放着無數的工具,可以供其他的程序使用。
書寫格式有以下兩種,前者在C++中使用較多,后者在 C語言中使用較多,
這兩種書寫的主要區別在於搜索的順序不同:
<>
表示直接搜索標准庫;
""
表示先搜索當前路徑,如果搜索不到在搜索標准庫。
#include<引用文件名> 或 #include"引用文件名"
using namespace std; //使用std命名空間
空間是指明程序采用的名字空間。
采用名字空間是為了在C++新標准中,解決多人同時編寫大型程序時名字產生沖突的問題。
比如在A、B兩個班都有個叫張三的人,如果你要叫的是A班的張三,那么你就要指明A班這個名字空間,不然就會叫錯人。
可以看作頭文件這個大倉庫里面不同房間的名字,用來分管相同類型的工具。
我們也可以自己寫命名空間來使用,但是這里就不介紹了。
/* main函數,又稱主函數,在一個項目中有且僅有一個 */
int main(){
//這里書寫我們要執行的主程序
return 0;
}
函數就是一段實現了某種功能的代碼。
主函數是作為程序執行的入口,相當於我們回家的,家里只有一扇大門。
同時要記住:
- 一個項目有且僅有一個主函數
- 程序的執行是從入口開始的,也就是從主函數開始的。
程序中的 ( )
{ }
都是成對出現的,千萬不要單獨留她一個人,這樣會讓她感覺很孤獨的!
然后return 0;
這個表示什么呢?
它的意思是說:當我們的程序正常執行結束的時候,返回0,退出。
在部分OI系統上,如果沒有這個是不能通過的哦!所以還是寫上吧,雖然它不影響我們的程序輸出!
注意注意:作為一條完整的語句,我們是要有結束標志的,上述的
using namespace std;
和 return 0;
就是這樣,在每一條語句的最后加上 ;
,表示該語句的結束。
當然有同學說:我多加幾個 ;;;;
可以嗎?
這是可以的,編譯器會識別出這是你寫的 4條空語句,它不犯法,但是不道德!!!
cout<<"Hello World!"<<endl;
這是一條輸出語句,輸出字符串"Hello World!", 並且換行。
cout
:C++ 的輸出語句,作用是在屏幕上顯示內容;
<<
:流插入運算符,每個運算符連接一個對象;
""
:雙引號內是字符串,照樣輸出雙引號中的內容;
endl
: 換行;
;
:作為一個程序行的結尾,程序只有識別到分號才認為一個句子完成。
cout語句的一般格式 : cout << 項目1 << 項目2 << …… << 項目n;
說明:這里的項目可以是表達式,字符串 或者 endl
如果項目是表達式,則表達式的值;
如果項目是加引號的,則輸入引號內的內容;
如果項目是endl,則輸出 換行。
注意
endl
: 雖然我們簡單的把它理解為換行'\n'
,這只是對初學者的一個友好罷了!
endl其實是一個函數模板,它實例化之后變成一個模板函數,其作用是:插入換行符並刷新輸出流。
其中刷新輸出流指的是將緩沖區的數據全部傳遞到輸出設備並將輸出緩沖區清空。
這里初學者不用思考太多!就簡單的認為:endl 等同於換行的轉義字符'\n'就可以了。
有點同學會出現代碼界面一閃而過,這是因為版本的問題,但是現在基本不會出現這樣的問題了,如果解決就需要使用到我們下面這樣的格式了哦!
#include<iostream> //標准輸入輸出庫
#include<cstdlib>
using namespace std;//std命名空間
int main()//main 主函數,代碼入口
{
cout<<"Hello World!"<<endl;//輸出"Hello World!"
system("pause");//頁面暫停,需要調用cstdlib庫
return 0; //結束程序
}
到這里我們的第一個輸出字符串"Hello World!",就結束了,你學會了嗎!
5. 注釋
在上文中,不知道是否注意到了兩個符合://
和 /* */
,這就是注釋符。
那么什么又叫注釋呢?
注釋是指在程序中,寫給我們開發者自己看的內容,這部分內容不被編譯器編譯運行。即使我們不寫或者刪除都不會對程序產生影響。
也就是說編譯器在編譯代碼時,會忽略注釋的內容
注釋通常放在一行代碼的上方,或者一條語句的末尾。
// 注釋內容
:單行注釋符,用於單獨一行的注釋;
/* 注釋內容 */
:多行注釋符,用於對多行進行注釋,也稱 塊注釋。/注釋內容/中的注釋內容可以為中文,外文,亂碼等任意符號,且可以換行,即使你突然靈感爆發,在這里寫上一個千字文章也未嘗不可。
在devC++編譯器中注釋的快捷鍵為:Ctrl +/
6. 基本運算符
符號 | 作用 | 使用 | 運算結果 | 備注 |
---|---|---|---|---|
+ | 加 | 2+1 | 3 | |
- | 減 | 2-1 | 1 | |
* | 乘 | 2*1 | 2 | |
/ | 除 | 1/2 | 0 | 如果/兩邊都為整數,則結果取整 |
% | 模,取余數 | 1%2 | 1 | %符號兩邊必為整數 |
案例演示
#include <iostream>
using namespace std;
int main() {
cout<<"20+7="<<20+7<<endl; //27
cout<<"20-7="<<20-7<<endl; //13
cout<<"20*7="<<20*7<<endl; //140
cout<<"20/7="<<20/7<<endl; //2
cout<<"20%7="<<20%7<<endl; //6
return 0;
}
練習:編寫程序,將8000秒表示成小時分鍾秒的形式。
#include<iostream>
using namespace std;
int main(){
cout<<8000/(60*60)<<"h"<<8000%(60*60)/60<<"m"<<8000%60<<"s"<<endl;
return 0;
}
//執行輸出結果:2h13m20s
7. 浮點數輸出格式控制
浮點數也就是小數,同理還存在定點數,也就是我們說的整數。
當我們要輸出 :3.1415926535 小數點后3位的時候,就需要使用輸出格式控制了!如下程序
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
cout<<fixed<<setprecision(3)<<3.1415926535<<endl;
return 0;
}
通過fixed<<setprecision(3);
就可以達到這個效果了,如下圖。
但是我們使用的這個函數是其他庫里的,所以我們需要導入iomanip
這個頭文件。
fixed
:是指定位小數點
setprecision(num)
:是指控制輸出num位有效數字
原則還是和數學上相同:對第num+1位進行四舍五入
具體詳細說明見以下程序,並在之后附有執行效果圖:
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
//默認輸出6位有效數字
cout<<3.1415926535<<endl; //3.14159
//默認輸出6位有效數字,如果數據過大,會使用科學計數法輸出
cout<<3141592.6535897<<endl; //3.14159e+006
//輸出3位有效數字
cout<<setprecision(3)<<3.1415926535<<endl; //3.14
//輸出小數點后3位有效數字
cout<<fixed<<setprecision(3)<<3.1415926535<<endl; //3.142
//fixed<<setprecision(3)的作用還存在
cout<<3.1415926535<<endl; //3.142
//fixed的作用還存在
cout<<setprecision(4)<<3.1415926535<<endl; //3.1416
//清除所有與域相關,與基數相關,與浮點相關的設置
cout.unsetf(ios::adjustfield | ios::basefield | ios::floatfield) ;
//fixed作用已經取消,但是setprecision(4)的作用還存在
cout<<3.1415926535<<endl; //3.142
//重新設置成原默認設置,fixed作用已經取消
cout<<setprecision(6)<<3.1415926535<<endl; //3.14159
return 0;
}
8. 洛谷OJ(Oline Judge)注冊
洛谷是一個在線程序評測平台,主要用於對程序的評分。
詳細的賬號注冊流程等信息,查看鏈接:如何注冊洛谷、加入團隊以及提交作業