物聯網工程學院2018年第一次軟體培訓----培訓總結
第一次培訓的內容是C語言基礎,按照“C語言引述”——“C語言基礎知識及語法講解” ——“國慶大禮包講解”的順序展開。同時本次培訓“安裝IDE & 配置環境(CodeBlocks)”的工作已經於培訓前全部完成。下面按照培訓順序進行總結和擴充。
目錄
四. 總結
一、C語言引述
1. 什麼是程式設計?
- 一句話概括,“程式設計就是指導計算機執行任務的行為”。
- 許多事情都是有規律可尋的,這是我們能夠程式設計解決問題的基礎。
- 計算機需要從我們這裡獲得指令。它並不能理解我們人類的語言,我們需要整理歸納我們的思想,從具象的事物之中抽象出物件個體與相關的規律,來“教會”計算機思考與處理分析問題。
- 在程式中,我們用各種資料來表示各個物件個體,而那些提煉出的按照有限步驟解決某一類問題的方法即為演算法。
- 程式設計換言之即程式設計。從某種意義上來說,“程式 = 資料結構 + 演算法”。
2. C語言的地位如何?
- C語言是一種編譯型程式設計語言,它兼顧了多種高階語言的特點,並具備組合語言的功能。當今使用C語言進行程式設計仍然是軟體開發的一個重要方向。
- C語言可以大大縮短系統開發週期,便於程式的改進、拓充與移植。
- C語言效率非常高,一般只比彙編程式生成的目的碼效率低10%—20%。
3. 我們為什麼選擇學習程式設計?
- 物聯網工程學院的所有專業都離不開紮實的程式設計能力:硬體控制、訊號處理、軟體開發……所有這些的基礎都離不開程式設計。
- 隨著科技的發展與人類社會的不斷進步,計算機在人類社會中的地位將會越來越重要,程式設計會是人類未來的基本技能之一。
- 程式設計將人從繁瑣的重複的勞動之中解放出來,解放了生產力,是現代社會的基石之一。
4. 怎樣學習程式設計?
- 學習一門程式語言,這是程式設計的工具。
- 聽課入門,重點是看書,看部落格,看論文,想提高程式設計能力離不開自學。
- 多看大牛的程式碼,學習他們的優點,程式設計是有模板的。
- 多寫程式碼,提高程式碼的質量,量變引起質變。
- 目標驅動。不論是完成一個軟體專案還是競賽獲獎,目標會帶給你方向。
- 工欲善其事,必先利其器。學習程式設計前你還需要一個好的開發環境(IDE)。
二. C語言基礎知識及語法講解
先看第一個小程式:
#include<stdio.h>
//標頭檔案, 想要使用函式,必須先申明包含它的標頭檔案
int main() //主函式main是程式入口
{
printf ("Hello World! \n"); //輸出HelloWorld(格式化輸出)
return 0; //返回值
}
別看人家短,人家就是一個正經的小程式啦!一個C程式必要的標頭檔案、主函式、輸入輸出流、返回值都在這一個小小的程式中有所體現。
1. 基礎知識介紹
1.1關於printf:
- printf()是C語言標準庫函式,用於將格式化後的字串輸出到標準輸出。標準輸出,即標準輸出檔案,對應終端的螢幕。printf()申明於標頭檔案stdio.h。
- 格式化字串包含三種物件,分別為:
(1)字串常量;
(2)格式控制字串:型別是格式控制字串中的重中之重!
(3)轉義字元:
接下來我們舉個栗子介紹一下最簡單的賦值語句:
int a = 3;
上面這個語句中,‘3’ 是常量。 ‘=’ 是運算子。‘a’是變數。
a = 3; 就是一個完整的表示式。
申明變數其實是向記憶體中申請一部分儲存空間。
1.2語言常用的資料型別介紹:
1.3 C語言中的邏輯運算
- 邏輯與:&&
<表示式1> && <表示式2>
當且僅當 <表示式1> 以及 <表示式2> 全部為真的時候,整個邏輯表示式為真。
邏輯與運算的“短路”規則:
如果 <表示式1> 為假,<表示式2> 不會被執行
例如:
int a = 0;
int b = 2;
if(a && (b = 10))
printf(“啊啦啦啦啦\n”);
printf(“%d”, b);
輸出的b即為2。
- 邏輯或:||
<表示式1> || <表示式2>
當且僅當 <表示式1> 和 <表示式2> 全部為假的時候,整個邏輯表示式為假。
邏輯或運算的“短路”規則:
如果 <表示式1> 為真,<表示式2> 不會被執行
例如:
int a = 1;
int b = 2;
if(a || (b = 10))
printf(“啊嘿嘿嘿嘿\n”);
printf(“%d”, b);
輸出的b值仍然為2。
- 邏輯非:!
! <表示式>
當 <表示式> 為真的時候,!<表示式> 為假,
當 <表示式> 為假的時候,!<表示式> 為真;
邏輯變換:
!(<表示式1> && <表示式2>) 等價於
!<表示式1> || !<表示式2>
!(<表示式1> || <表示式2>) 等價於
!<表示式1> && !<表示式2>
2. 基礎語句和語法介紹
2.1 if-else語句
if (條件表示式) {
......
} else if (條件表示式) {
......
} else if (條件表示式) {
......
} ......
else {
......
}
從上到下,依次對每個條件表示式進行判斷,哪一個條件表示式為true,則執行哪一個對應的分支。至多隻會執行一個分支。
2.2 switch語句
switch(表示式){
case 常量1:
<語句塊1>
break;
case 常量2:
<語句塊2>
break;
......
......
default:
<語句塊n>
}
switch語句非常有用,但在使用時必須謹慎。只能針對基本資料型別中的某些型別使用switch,例如int、char等。對於其他型別,則必須使用if語句。並且case標籤必須要是常量表達式。
2.3 迴圈相關語句
2.3.1 while()語句(第一種迴圈語句)
使用while()迴圈的注意事項:
(1)()中的表示式不可以為空,表示式為空不合法;
(2)表示式可以用非0代表邏輯值真(true),用0代表邏輯值假(false);
(3)迴圈體中必須有改變條件表示式狀態的語句,否則成為死迴圈。
例如:
while(1){......} //是一個無限迴圈語句。
while(0){......} //是一個不會進行迴圈的語句。
2.3.2 for()語句(第二種迴圈語句)
函式表現形式:for(迴圈初始值;迴圈條件;迴圈引數)
(1)若迴圈初始值省略並且在for迴圈之前已經初始化過了,則不影響迴圈體的執行。
(2)若迴圈初始值、迴圈條件、迴圈引數三者都省略,則迴圈體會一直執行下去,變成一個死迴圈。
(3)for迴圈裡面是分號不是逗號(初學者很容易犯錯哦)。
常用for迴圈的寫法:
for( i = 0; i < n; i++){
<程式碼塊>
}//共迴圈n次,n的值依次位[0, 1, 2, …, n - 1]
for( i = 0; i != n; i++){
<程式碼塊>
}//共迴圈n次,n的值依次位[0, 1, 2, …, n - 1]
for( i = n - 1; i >= 0; i--){
<程式碼塊>
}//共迴圈n次,n的值依次位[n - 1, n - 2, …, 0]
2.3.3 continue-break迴圈控語句(結合for()和while()使用)
- break 語句
功能:跳出當前所在迴圈,用在迴圈語句和開關語句中,通常總是與if 語句聯合使用,即滿足一定條件時跳出迴圈。
當break 用於switch-case 中時,可使程式跳出switch-case 而執行switch-case 後面的語句。
當break 用於do-while、for、while 迴圈語句中時,可使程式終止迴圈而執行迴圈後面的語句。
例如:
for(i = 0; i <= 100; i++)
{
if(i == 1)
break; //跳出for語句
}
printf(“%d”, i);
輸出結果為1
- continue語句
功能:結束本次迴圈,繼續下次迴圈;
例如:
for(i = 0; i <= 100; i++)
{
if(i==1)
continue; //此時直接結束i == 1時的迴圈
printf(“%d”, i);
}
輸出結果為0 2 3 4 … 100,即跳過了i==1時的printf()
三. 國慶大禮包講解
國慶大禮包的題解已經打包傳送至科協新生群,每道題的程式碼均以txt文字檔案的形式儲存,可以將程式碼直接複製進工程,編譯執行。很多題目都提供了多種解法和思路,供同學們參考。其中有一些題目的解法由於涉及到本次培訓還未講解的知識點,所以本次現場培訓時將其跳過,但這些題目的程式碼也在題解當中,同學們感興趣的可以提前學習和探究。
現場培訓時跳過的題目的題號如下:
基礎9(常規法)(位運演算法)【涉及陣列、字元和字串處理】
基礎10(法一)【涉及陣列、字元和字串處理】
提高8(素數篩法)【涉及陣列】
提高10(遞迴法)【涉及自定義函式、函式遞迴】
每道題的解法都不唯一,但不同的解法有優劣之分。同學們可以自己探索更好的解法,修改優化自己的程式。
四. 總結
本次培訓的內容是C語言程式設計的基礎內容,但這的確是邁出了程式設計路上的第一步。雖然是開始,但無論做任何事,打好基礎都十分重要。學習過程中輕易退縮與急功近利都是不可取的。希望同學們能繼續努力,認真學習消化所講知識,結合課內學習,鞏固基礎,不斷提升自己。良好的開端是成功的一半,同學們,繼續加油吧!