日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言程序设计基础(01)—— 计算机与程序设计基础

發(fā)布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言程序设计基础(01)—— 计算机与程序设计基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C語言程序設(shè)計基礎(chǔ)(01)——計算機與程序設(shè)計基礎(chǔ)

  • 一、計算機組成及基本原理
    • 1、計算機硬件系統(tǒng)
    • 2、計算機軟件系統(tǒng)
    • 3、計算機工作原理
  • 二、程序設(shè)計基礎(chǔ)
    • 1、程序設(shè)計風(fēng)格
    • 2、結(jié)構(gòu)化程序設(shè)計(structured programming)
  • 三、C語言程序基本結(jié)構(gòu)和開發(fā)過程
    • 1、C語言程序的基本結(jié)構(gòu)
    • 2、C語言程序開發(fā)過程
    • 3、程序開發(fā)環(huán)境

寫在前面
  我剛上大學(xué)的時候,學(xué)的第一門計算機編程語言就是 C語言,當(dāng)時覺得這仿佛是天書,畢竟腦子里只有中學(xué)數(shù)學(xué)課上那點簡單的流程圖和VB概念,但是隨著多年的練習(xí)和開發(fā)使用,我漸漸地開始掌握并喜歡上了這門語言,并且也開始學(xué)習(xí)C++、C#、JAVA等其它編程語言。不得不說,C語言的學(xué)習(xí)為我打下了良好的編程基礎(chǔ),同樣也讓我越來越清晰地認(rèn)識到自己的不足。如今時代呈現(xiàn)指數(shù)式發(fā)展,尤其在IT等行業(yè), 必須保證自己永遠(yuǎn)在學(xué)習(xí)新的知識技能,否則迎接你的就是淘汰。
  大一課堂使用的課本是《C語言程序設(shè)計(第2版)》(姚琳 主編,屈微 副主編),雖然課本上也有一些小的瑕疵,但掩蓋不了它開蒙啟智的光輝。搬磚之余,在這里整理回顧下C語言的基礎(chǔ)知識,感謝當(dāng)年老師細(xì)致入微的指導(dǎo),幫助我們解決了程序上數(shù)不盡的bug,為我們打下了良好的編程基礎(chǔ)。

一、計算機組成及基本原理

計算機系統(tǒng)構(gòu)成:

  • 硬件系統(tǒng)
    • 主機
      • 內(nèi)存儲器(內(nèi)存)
      • 中央處理器(CPU,Central Processing Unit)
        • 運算器
        • 控制器
    • 外部設(shè)備(外設(shè))
      • 輸入輸出設(shè)備
      • 外存儲器(外存)
  • 軟件系統(tǒng)
    • 應(yīng)用軟件
    • 系統(tǒng)軟件
      • 操作系統(tǒng)
      • 語言處理程序
      • 服務(wù)程序

完整的計算機系統(tǒng)包含兩個部分:硬件系統(tǒng)、軟件系統(tǒng)。二者相輔相成,仿佛軀體和靈魂不可分割。

1、計算機硬件系統(tǒng)

(1)概念
  組成計算機的各種電磁、機械部件和設(shè)備裝置的總稱,硬件(Hard ware) 系統(tǒng)是計算機實現(xiàn)自動控制和運算的物質(zhì)基礎(chǔ)。
  
(2)馮·諾依曼結(jié)構(gòu)
  組成:運算器、存儲器、控制器、輸入設(shè)備、輸出設(shè)備。
  特點:程序和數(shù)據(jù)以二進(jìn)制形式存在存儲器中,在控制器的指揮下,自動從存儲器中取指令并執(zhí)行。1

  • 運算器
      對數(shù)據(jù)進(jìn)行處理和運算?;静僮?#xff1a;算術(shù)運算、邏輯運算。
      包括算術(shù)邏輯單元ALU,Arithmetic Logic Unit)和寄存器
  • 存儲器
      用來存儲程序和數(shù)據(jù)。由許多存儲單元組成,每個單元有自己的地址,可根據(jù)地址找到所需數(shù)據(jù)和程序。
      分為兩類:
     ?、?strong>內(nèi)存儲器(主存儲器):存儲當(dāng)前要執(zhí)行的程序和數(shù)據(jù)以及中間結(jié)果和最終結(jié)果。
     ?、?strong>外存儲器(輔助存儲器):長期存儲大量暫時不參與運算的數(shù)據(jù)和程序以及運算結(jié)果。
  • 控制器
      指揮計算機各部件協(xié)調(diào)工作??刂?#xff1a;將輸入設(shè)備輸入的程序和數(shù)據(jù)存入存儲器,按照程序要求指揮運算器進(jìn)行運算處理并把結(jié)果再存入存儲器中,最后將結(jié)果傳給輸出設(shè)備。
      主要組成部分:
     ?、?strong>程序計數(shù)器(PC,Program Counter):存放當(dāng)前要執(zhí)行的指令地址,有自動加1的功能。
     ?、?strong>指令寄存器(IR,Instruction Register):存放當(dāng)前要執(zhí)行的指令代碼。
      ③指令譯碼器(ID,Instruction Decoder):識別IR中指令的性質(zhì)和操作。
     ?、?strong>操作控制器(Operation Controller):根據(jù)ID的譯碼,產(chǎn)生實現(xiàn)該指令全部動作的控制信號。
  • 輸入設(shè)備
      將用戶的程序、數(shù)據(jù)和命令輸入到計算機內(nèi)存的設(shè)備。標(biāo)準(zhǔn)輸入設(shè)備是鍵盤。其它常用輸入設(shè)備:鼠標(biāo)、掃描儀、語音輸入設(shè)備、手寫識別輸入設(shè)備等。
  • 輸出設(shè)備
      顯示、打印或保存計算機運算和處理結(jié)果。標(biāo)準(zhǔn)輸出設(shè)備是顯示器。其它常用輸出設(shè)備:打印機、繪圖儀、數(shù)據(jù)投影設(shè)備(投影儀)等。

2、計算機軟件系統(tǒng)

(1)概念
  軟件(Software) 是計算機系統(tǒng)中各類程序、有關(guān)文檔以及所需要的數(shù)據(jù)的總稱。
  程序:為了解決某一問題而設(shè)計的一系列指令或語句的集合。只是軟件的一部分。
  源程序(Source Program):用戶為解決自己的問題編制的程序。
  計算機指令:用來控制計算機、告訴計算機進(jìn)行怎樣操作的命令。
  
(2)兩大分類

  • 系統(tǒng)軟件
      用來管理、維護(hù)計算機及協(xié)調(diào)計算機內(nèi)部更有效工作。
    ?、?strong>操作系統(tǒng)(核心軟件)
      對計算機系統(tǒng)進(jìn)行控制和管理的大型軟件。
      操作系統(tǒng)的基本任務(wù):
        1)管理好計算機的全部資源(包括CPU、存儲器、程序、數(shù)據(jù)、各種外設(shè));
        2)擔(dān)任用戶與計算機之間的接口。
      操作系統(tǒng)的主要功能:
        CPU管理、存儲管理、文件管理、設(shè)備管理、作業(yè)管理。
    ?、?strong>語言處理程序
     ③服務(wù)性程序

  • 應(yīng)用軟件
      為某個具體應(yīng)用開發(fā)的軟件。如文字處理軟件、殺毒軟件、財務(wù)軟件、圖形軟件、工具軟件、游戲程序等。

(3)計算機語言的發(fā)展
  人類的語言一般稱為自然語言。人為了讓計算機完成某種任務(wù)而需要的語言就是計算機語言。機器語言是計算機語言發(fā)展的原點,高級程序設(shè)計語言是計算機語言發(fā)展的重要階段。C語言是高級程序設(shè)計語言中的經(jīng)典,是深入掌握其他程序設(shè)計語言的基礎(chǔ)。

  • 機器語言
      指令通常包含兩個部分
        ①操作碼(Operation Code):表示計算機執(zhí)行什么操作
       ?、?strong>操作數(shù)(Operand):表示參加操作的數(shù)的本身或所在地址
      計算機發(fā)展的初期,用指令的機器碼(Machine Code)也就是用0和1組成的二進(jìn)制代碼形式來編寫源程序。
      是計算機能唯一識別和可直接執(zhí)行的語言,被稱為“面向機器的語言”。它占用內(nèi)存少,執(zhí)行速度快效率高,無須“翻譯”。但編寫麻煩,無通用性。
  • 匯編語言
      通常用由指令功能英文單詞縮寫形成的 助記符(Mnemonic) 代替操作碼,用 符號(Symbol) 表示操作數(shù)。
      對于機器,必須用匯編程序?qū)R編語言源程序(.ASM)翻譯成機器語言程序即目標(biāo)程序(.OBJ),然后用連接程序?qū)⒛繕?biāo)程序連接成可執(zhí)行程序(.EXE)。
      匯編語言同樣具有很差的通用性,也屬于“面向機器的語言”。
  • 高級語言(算法語言)
      特點是和人類的自然語言(英語)及數(shù)學(xué)語言比較接近,與硬件無關(guān),無須熟悉計算機的指令系統(tǒng)。
      分類:
        面向過程 的高級語言:BASIC、FORTRAN、Pascal、C等。
        面向?qū)ο蟆〉母呒壵Z言:C++、JAVA等。
      高級語言的翻譯方式:
        編譯方式: 先通過編譯程序?qū)⒏呒壵Z言源程序(.C和.PAS等)編譯成目標(biāo)程序(.OBJ),翻譯過程中進(jìn)行語法檢查,如果有錯將給出錯誤信息,無錯才形成二進(jìn)制的目標(biāo)程序;然后通過連接程序進(jìn)行連接和定位,生成可執(zhí)行程序文件(.EXE)。類似于筆譯。
        解釋方式: 通過解釋程序,對源程序(.BAS)解釋一條語句便執(zhí)行一條語句,若發(fā)現(xiàn)錯誤便給出錯誤信息并停止解釋和執(zhí)行,無錯便解釋執(zhí)行到最后。不生成目標(biāo)文件和可執(zhí)行文件,重復(fù)運行程序需重新翻譯。效率低,執(zhí)行速度慢,但便于人機對話。類似于口譯。

3、計算機工作原理

馮·諾依曼結(jié)構(gòu)計算機的工作原理最重要之處是“存儲原理”,要先把編好的程序輸入存儲器中存儲起來,然后依次取出指令執(zhí)行。
  每條指令的執(zhí)行過程分為3個基本操作:
 ?、?strong>取出指令:從存儲器某個地址中取要執(zhí)行的指令;
 ?、?strong>分析指令:送指令譯碼器進(jìn)行譯碼;
  ③執(zhí)行指令:向各個部件發(fā)送控制操作,完成指令要求。

二、程序設(shè)計基礎(chǔ)

1、程序設(shè)計風(fēng)格

風(fēng)格會影響軟件的質(zhì)量和可維護(hù)性。好的程序設(shè)計風(fēng)格可以使程序結(jié)構(gòu)清晰合理,使代碼便于維護(hù)??紤]因素如下。
  
(1)源程序文檔化
  標(biāo)志符命名: 見名知義。
  程序注釋信息:
    序言性注釋:位于程序開頭,包括標(biāo)題、程序主要功能、主要算法、作者等。
    功能性注釋:位于程序中間,描述變量含義、語句作用等。
  視覺組織: 程序清晰,便于閱讀,使用空格、空行、縮進(jìn)技巧。
  
(2)數(shù)據(jù)說明方法
  數(shù)據(jù)說明應(yīng)注意次序規(guī)范化。例如多個變量按照字母順序排列,使用注釋來說明復(fù)雜數(shù)據(jù)的結(jié)構(gòu)等。
  
(3)語句構(gòu)造
  當(dāng)不考慮效率時,程序編寫應(yīng)清晰第一,效率第二。
  
(4)輸入輸出
  輸入輸出方式和格式應(yīng)盡可能方便用戶使用。

2、結(jié)構(gòu)化程序設(shè)計(structured programming)

模塊化設(shè)計為中心,基本原則是:采用自頂向下、逐步細(xì)化的方法進(jìn)行設(shè)計,采用模塊化原則和方法進(jìn)行設(shè)計,限制使用goto語句。主要特點是:程序易于理解、使用和維護(hù),提高了編程工作效率,降低了軟件開發(fā)成本。

程序化設(shè)計的基本結(jié)構(gòu):
(1)順序結(jié)構(gòu)
  最基本做常用的結(jié)構(gòu),按照書寫順序依次執(zhí)行語句。
(2)選擇結(jié)構(gòu)(分支結(jié)構(gòu))
  按照給定條件判斷選擇執(zhí)行相應(yīng)的語句序列,可改變程序的執(zhí)行流程。
(3)循環(huán)結(jié)構(gòu)(重復(fù)結(jié)構(gòu))
  通過循環(huán)控制條件來決定是否重復(fù)執(zhí)行相同的語句序列。包括當(dāng)型循環(huán)和直到型循環(huán)。
  由三部分構(gòu)成
 ?、俪跏蓟糠?#xff1a;為循環(huán)作準(zhǔn)備,如為循環(huán)變量賦初值,往往位于循環(huán)語句前面。
 ?、谘h(huán)控制部分:循環(huán)控制的條件。
 ?、垩h(huán)體部分:循環(huán)工作的重復(fù)部分。

三、C語言程序基本結(jié)構(gòu)和開發(fā)過程

1、C語言程序的基本結(jié)構(gòu)

C語言程序的幾點說明:
(1)以函數(shù)作為模塊單位,有且僅有一個main()函數(shù)即主函數(shù),總是從main函數(shù)開始執(zhí)行,在main函數(shù)中結(jié)束。
(2)C函數(shù)模塊分為兩大部分
 ?、俸瘮?shù)說明部分(函數(shù)首部):包括函數(shù)類型、函數(shù)名、函數(shù)參數(shù)。
  ②函數(shù)體部分:用左“{”表示開始,用右“}”表示結(jié)束。
(3)語句分為說明性語句可執(zhí)行語句。每條語句必須以分號“;”結(jié)束,但書寫格式自由,一行可以寫多條語句,一條語句也可以占多行。
(4)編譯預(yù)處理命令不是C語言語句,不能用分號結(jié)束,并且需要單獨一行
(5)任何位置都可以用/**/進(jìn)行注釋,可以用英文或者中文進(jìn)行注釋,但建議使用英文注釋,因為不同的開發(fā)環(huán)境使用的編碼格式不同時,中文易導(dǎo)致亂碼。

#include <stdio.h> /*編譯預(yù)處理命令*//***** 主函數(shù) *****/ void main(void) /*函數(shù)首部*/ { /*函數(shù)體開始*/int r; /*說明性語句*/float area;r = 2; /*可執(zhí)行語句*/area = 3.14*r*r;printf("%f\n", area); } /*函數(shù)體結(jié)束*/

2、C語言程序開發(fā)過程

即:編輯、編譯、連接、運行、調(diào)試。
  
(1)源程序的編輯
  使用文本編輯器(Editor)編寫擴展名為.C的C語言源程序,實質(zhì)是文本文件,可用任何文本編輯器來建立。
  
(2)源程序的編譯
  使用編譯系統(tǒng)(編譯器)對源程序文件進(jìn)行編譯。若沒有語法錯誤,則生成目標(biāo)程序文件(.OBJ),有錯會給出錯誤信息提示。兩類錯誤:
  ①語法錯誤(Error):必須修改源文件的錯誤代碼,否則無法生成目標(biāo)程序文件。
 ?、?strong>警告錯誤(Warning):系統(tǒng)按照缺省處理方式生成目標(biāo)程序文件,但不一定符合作者預(yù)期。
  
(3)目標(biāo)程序文件的連接
  利用連接器將一個或多個目標(biāo)程序文件與庫文件連接,生成可執(zhí)行文件(.EXE),若找不到所需連接信息,會給出錯誤提示,不生成.EXE文件。
  
(4)可執(zhí)行文件的運行
  可執(zhí)行文件可以直接運行。在集成開發(fā)環(huán)境(IDE,Integrated Development Environment)下,可以方便地進(jìn)行代碼的運行和調(diào)試。也可不使用IDE,在Windows系統(tǒng)中,可直接在命令提示符中鍵入文件名來運行可執(zhí)行文件。

(5)可執(zhí)行文件的調(diào)試
  若.EXE文件運行異常,得不到正確結(jié)果,則要返回源程序進(jìn)行修改。

3、程序開發(fā)環(huán)境

集成開發(fā)環(huán)境IDE
  初學(xué)的比較經(jīng)典的C語言集成開發(fā)環(huán)境有Microsoft Visual C++(簡稱VC++)和Microsoft Visual Studio(簡稱VS),前者是后者這個完整開發(fā)工具集中的針對C類語言的開發(fā)環(huán)境。在學(xué)校用的是 VC++ 6.0 和 VS 2012 這兩個版本。個人目前做嵌入式開發(fā)比較多,嵌入式C語言工程多結(jié)合具體的硬件設(shè)備開發(fā),不同的產(chǎn)品可能有不同的IDE,比如經(jīng)典的 ICCAVR、IAR、Keil、CodeWarrior 等。

關(guān)于編輯器
  最近常用兩款編輯器,一個是很火的Visual Studio Code,微軟推出的跨平臺、多語言文件格式、輕量級代碼編輯器。一個是由Scitools發(fā)行的Understand,具有很強大的代碼編輯跟蹤和靜態(tài)分析能力,而且界面非常方便友好,堪稱神器。另外一些簡單代碼也會拿Windows記事本或者Notepad++直接擼,不得不說程序猿的工具還是相當(dāng)多而且很人性的!

THE END


  • 控制流可由控制器指向其余四個部分,但是運算器的數(shù)據(jù)只能跟存儲器交換,控制器從存儲器中取數(shù)據(jù),也就是控制器與運算器之間沒有直接的數(shù)據(jù)流,但有控制流。 ??

  • 總結(jié)

    以上是生活随笔為你收集整理的C语言程序设计基础(01)—— 计算机与程序设计基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。