1. 程式人生 > >物聯網工程學院2018年第一次軟體培訓----培訓總結

物聯網工程學院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語言程式設計的基礎內容,但這的確是邁出了程式設計路上的第一步。雖然是開始,但無論做任何事,打好基礎都十分重要。學習過程中輕易退縮與急功近利都是不可取的。希望同學們能繼續努力,認真學習消化所講知識,結合課內學習,鞏固基礎,不斷提升自己。良好的開端是成功的一半,同學們,繼續加油吧!