編程學習小結(1)基本概念----c語言
2019-11-08 02:08:38
供稿:網友
----云計算、大數據、人工智能,新技術層出不窮,摳碼愈久,無力感愈強。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和whileC1: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語言基本概念進行概述,其它的在后面的文章中一一細說。