1. 程式人生 > >程式設計學習小結(1)基本概念----c語言

程式設計學習小結(1)基本概念----c語言

---- 雲端計算、大資料、人工智慧,新技術層出不窮,摳碼愈久,無力感愈強。IT已經從個人英雄時代進化為一個需要高度協調配合的社會了。作為一個“搞計算機的”被別人問到:“那個XXX軟體,我們公司話好多錢買的,你能不能自己做一個?”,回答不能還要加各種解釋……;但是也有人問:“計算機這麼火,我也想學習程式設計,怎麼學習呢?”嗯,這個問題我可以回答下,也是對自己這麼多年學習工作的一個小結,也可以同大家指點改進下
自身經歷
先講下自己的經歷,同大多學習計算機的同學一樣,入門語言是C;剛開始時沒人指導,就找本C語言教材,學習一些基礎後,覺得命令列沒有意思,想要做個圖形介面,看起來炫一點,但是對程式設計只瞭解一些皮毛,覺得要用個跨平臺的方式比較好,在什麼系統上都可以用,多好。折騰了很久,甚至用turbo C的圖形庫搞了很久,做了一些不忍直視的畫面;一直在自己搞,浪費了很多時間,或者說是很長一段時間的學習效率特別低。 這裡提醒下自己,不要閉門造車,要多交流;交流的方式有很多,作為一個剛開始的小白,看一個完整系列的教學視訊也是交流,注意至少要有一個完成的,避免東看看,西看看始終不成體系,可能存在想當然的情況。
再講下為什麼要學習程式設計,現在智慧產品已經相當普及,程式設計早已不侷限於特定的環境和專業知識,已經越來越普及。
下面就以C為例,結合自己的經歷,從入門到入門……
程式語言是一門“人同計算機交流語言”,人用來告訴計算機該如何做,計算機拿到你寫的一段程式碼(語言)之後,就按照順序,讀取一條執行一條,這一條可能是讓其那個數相加、相除或者跳轉到某一行開始執行;下面就從C語言的基本知識開始
資料型別、運算子與表示式 (一)關鍵字、變數 作為一個語言,它有一些基本元素,如變數、關鍵字(do、while、for、int)同英語語言一樣它也是有一個個單片語成,每個單詞有特定的意思;單詞有分類:名詞、動詞,每個單詞由特定的26個字母構成,表示如蘋果、蔬菜等或其它意思,你也可以自己創造一個單詞,當然,可能只有你自己知道是什麼意思; C語言的單詞有兩種,關鍵字 和自定義變數(包括函式名),它也有自己的構造原則,字母數字下劃線組成,不能是資料開頭等。 關鍵字是特定的,有: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 可以分為資料型別關鍵字和流程控制關鍵字 1、資料型別關鍵字,C語言不同於英語,英語已有很多單詞,大家之間互相交流足夠了。C語言只有一些上述基本單詞,其它的都需要你來創造。如你想建立一個表示整數的單詞(即建立一個整形變數)int num; 這裡int用於表示num這個單詞(變數)是整形的(如1 2 3 100 -5等) 2、流程控制關鍵字,前面提到,計算機按照程式語言順序執行,這一行可能是讓計算機跳轉到特定的行(如goto關鍵字,goto label告訴計算機跳轉到特定行)
(二)運算子
計算機沒有人類那麼高階,可以理解抽象的意思,它本質上是一個高階計算器,所有的動作在它那裡都是對一堆資料進行加減乘除以及對這堆資料的移動;支援的運算如加減乘除、取餘、位移等。
(三)程式結構 1、順序 計算機執行程式碼同人讀書一樣,從上到下依次讀取、執行 2、選擇、迴圈 就好比你在讀一篇技術類文章,可能有下面三種情況:(1)如果你掌握A知識,跳過第一節,否則從第一節開始;(2)如果你已掌握B知識直接從第三節開始,如果已掌握C知識直接從第四節開始;(3)如果讀到第五節還沒有明白什麼意思,那麼從第一節開始再讀一遍; 這三種情況對應C語言三種結構 A:選擇 if ... else .. if (掌握A知識) { 從第二節開始 } else { 從第一節開始 }
B:switch case (同A有什麼區別呢? 以後再說) switch(掌握情況) { case 掌握A知識: 從第二節開始 break; case 掌握B知識: 從第三節開始 break; case 掌握C知識: 從第四節開始 break; default: 好像什麼都不知道,從第一節開始吧 }
C:迴圈,暫且迴圈有兩種,for和while C1:for迴圈 for (從章節數第一節開始; 讀到第十節;一節一節地讀) { 讀取每一節 } C2:while迴圈,有兩種 do while 和 while()do 前者是先幹了再看是什麼情況,後者是先看什麼情況在幹 如: do{ 先讀一節看看 }while(嗯,有意思,繼續下一節) --------------- while(問下別人這篇文章是否值得讀,值得,那讀看看,有意思再繼續) { 讀一節 }
(四)陣列
前面講到一些資料基本型別,及定義一個數據,有些時候要定義一組資料,如定義10個整數,怎麼辦? 可以 int i0; int i2; int i3; int i4; …… int i9; 這樣好麻煩~ 所以變成語言提供了一種型別,叫做陣列,直接 int i[10]就可以啦(這種寫法在計算機看來有什麼不同呢?以後再表)
(五)結構體 上面提到的資料型別都是單一的,要麼字元,要麼數字,如果我需要一種抽象點的資料型別,如一個表示學生的資料型別,這個資料型別包含學生的一些基本型別,如學號、姓名、性別等,怎麼辦呢? C語言也提供了相應的描述方式,結構體: struct student { int id; char name[32]; int sex; };
(六)函式 函式是對執行過程的封裝,程式碼執行的過程中可能有許多公共的流程,你可以再所有用到的地方都把這些流程寫一遍,但是這樣感覺好low,可以將這些公共的流程封裝為一個函式,在需要的地方呼叫一下即可。 就好比在寫一篇技術文章,其中用到某個知識點,你應該不會吧這個知識點相關的內容複製到你的文章中,而是在文章中附上獲取到知識點的方式,需要的讀者按照這個方式去獲取,學習就好了
函式的一般形式: 返回值 函式名(引數列表) eg:int sum(int a, int b) 類似於上面提到的讀者去獲取知識點,上面的三個元素對應如下: 學習狀態 知識點獲取方式(帶著什麼疑問來學習知識點)
(七)指標 這個是C語言的強大之處,也是不好掌握的地方,指標,顧名思義,它真的就是一個指標,大小固定;由它指向內容的不同而不同。 指向一個整數的指標int *pi; 指向一個上面提到學生型別結構體的指標 struct student *pstu; 它本身是一個數據型別,那麼同整形一樣,也支援各種運算等~ 可以說的很多,這裡只對C語言基本概念進行概述,其它的在後面的文章中一一細說。