版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第1章程序設(shè)計基礎(chǔ)2024/8/271《程序設(shè)計》課程《程序設(shè)計》教學(xué)目標(biāo)通過這門課程的學(xué)習(xí),掌握C語言的基本語法和基本結(jié)構(gòu),熟悉程序設(shè)計的基本原理和基本算法,熟悉使用C編程平臺和調(diào)試方法。教學(xué)方式課程講授上機實驗和輔導(dǎo)本課程是一門理論與實踐緊密結(jié)合的實用技術(shù)課程,在講授知識的同時,系統(tǒng)、全面磨礪學(xué)生運用C語言編程解決問題的能力。2024/8/272教材吳永輝,周娟。C語言程序設(shè)計。西安電子科技大學(xué)出版社。2024。ISBN:978-7-5606-7260-1。實驗教材周娟,吳永輝《程序設(shè)計實踐入門》,機械工業(yè)出版社,2021。周娟,吳永輝。提升程式設(shè)計力|國際程式設(shè)計競賽精選解題解析。碁峰。2022。2024/8/274第1章程序設(shè)計基礎(chǔ)1.1計算和計算機的發(fā)展:需求是發(fā)展之母1.2程序設(shè)計語言的綜述念1.3C語言基礎(chǔ)知識1.4C程序設(shè)計基礎(chǔ)知識2024/8/2751.1計算和計算機的發(fā)展:需求是發(fā)展之母社會發(fā)展對于計算的需求推動了計算機和程序設(shè)計語言的發(fā)展;計算機和程序設(shè)計語言的發(fā)展又進一步推動的計算的發(fā)展,也產(chǎn)生了新的計算需求。歷史,并不僅僅是一系列事件的時間、地點、人物的羅列;對于歷史,我們要善于通過對一系列事件的表象進行分析,看到推動歷史發(fā)展的本質(zhì)。2024/8/276計算機的發(fā)展機械計算機電子計算機晶體管計算機中、小規(guī)模集成電路計算機大規(guī)模及超大規(guī)模集成電路計算機2024/8/277計算機簡介:計算機和程序設(shè)計計算工具:手動輔助計算裝置,如算盤(公元1200年前后)、計算尺==》機械計算機==》計算機計算機、程序設(shè)計、程序設(shè)計語言可以追溯到20世紀(jì)40年代中期。南宋:經(jīng)貿(mào)(外貿(mào))高度發(fā)達人類使用的計算工具隨著生產(chǎn)力的發(fā)展和社會的進步,經(jīng)歷了從簡單到復(fù)雜、由低級到高級發(fā)展的過程。2024/8/278機械計算機機械計算機(mechanicalcomputer):由杠桿、齒輪等機械部件而非電子部件構(gòu)成。1642年,19歲的法國數(shù)學(xué)家、哲學(xué)家布茨·帕斯卡(BlaisePascal),為了幫助在稅務(wù)局任職的父親完成繁重的計算工作,發(fā)明了世界上第一臺齒輪式機械計算機:通過齒輪系統(tǒng)的聯(lián)動來進行加法和減法的運算。
1640年,英國資產(chǎn)階級革命開始。明朝末年2024/8/279電腦先驅(qū)查爾斯·巴貝奇(Charles
Babbage)1822年,英國人查爾斯·巴貝奇發(fā)現(xiàn)許多有關(guān)時間的計算設(shè)備在測量時(如天文圖、潮汐圖、航海圖),都存在臨界誤差,并且測量繁瑣。1823年得到政府的支持,1834年發(fā)明了分析機(現(xiàn)代計算機的前身)的原理,在只讀存儲器(穿孔卡片)中存儲程序和數(shù)據(jù)。但因1842年政府拒絕進一步支持他的工作,巴貝奇的計算器未能完成。西方工業(yè)革命第一次鴉片戰(zhàn)爭前夕2024/8/2710第一個程序員:詩人拜倫之女艾達(Ada)她為巴貝奇分析機編寫了一組求解伯努利數(shù)列的計算指令,這套指令也是人類歷史上第一套計算機算法程序,它將硬件和軟件分離,第一次出現(xiàn)程序的概念。艾達和第一個計算機程序:隨著西方國家進入工業(yè)時代,由杠桿、齒輪等機械部件構(gòu)成的機械計算機被廣泛地研發(fā)和運用1890年,美國人口普查部門希望能得到一臺機器幫助提高普查效率。赫爾曼·何樂禮(HermanHollerith)(后來他的公司發(fā)展成了IBM公司)借鑒Babbage的發(fā)明,用穿孔卡片存儲數(shù)據(jù),并設(shè)計了機器。結(jié)果僅用6周就得出了準(zhǔn)確的人口統(tǒng)計數(shù)據(jù)(如果用人工方法,大概要花10年時間)。機械計算機在二戰(zhàn)期間達到頂峰,在1960年代使用,在1970年代逐漸消失,到1980年代絕跡。晚清2024/8/2712電子計算機:問世在以機械方式運行的計算器誕生百年之后,隨著電子技術(shù)的突飛猛進,計算機開始了真正意義上的由機械向電子時代的過渡,電子器件逐漸演變成為計算機的主體,而機械部件則漸漸處于從屬位置。二者地位發(fā)生轉(zhuǎn)化的時候,計算機也正式開始了由量到質(zhì)的轉(zhuǎn)變,由此導(dǎo)致電子計算機正式問世。1904年,美國人LeeDeForest發(fā)明電子管,為電子計算機的發(fā)展奠定了基礎(chǔ)。1937年,英國科學(xué)家艾蘭·圖靈(AlanTuring)提出了一種理想的計算機器的數(shù)學(xué)模型——圖靈機,發(fā)展了可計算性理論?,F(xiàn)在該理論不僅是計算機科學(xué)的基礎(chǔ),也是數(shù)學(xué)的基礎(chǔ)之一,為紀(jì)念圖靈而設(shè)立的圖靈獎已成為計算機界的諾貝爾獎。2024/8/2713艾蘭·圖靈(AllanTuring)1912年生于英國倫敦1931年進入劍橋大學(xué)國王學(xué)院學(xué)習(xí)1937年發(fā)表論文“OncomputablenumberswithanapplicationtotheEntscheidungsproblem”,提出圖靈機“TuringMachine”模型(理想的計算機器的數(shù)學(xué)模型)1938年在普林斯頓大學(xué)獲博士學(xué)位1939年服役,從事密碼破譯研究1945-1948年在英國國家物理實驗室,研制ACE計算機此后,加盟曼切斯特大學(xué)皇家學(xué)會計算實驗室,此期間發(fā)表著名論文“ComputingMachineandIntelligence”1951年被選為英國皇家學(xué)會院士1954年自殺身亡2024/8/27142024/8/2715ACMTuringAward(圖靈獎)美國計算機協(xié)會(AssociationforComputingMachinery)于1966年設(shè)立的第一個獎項宗旨:獎勵在計算機科學(xué)研究中做出創(chuàng)造性貢獻、推動計算機科學(xué)技術(shù)發(fā)展的杰出計算機科學(xué)家獎金額:最初2萬美金;1989年增至2萬5千美金2024/8/2716二戰(zhàn)時期,美國進行武器研制,彈道計算和原子彈研制的計算量非常龐大。為了解決這一問題,1943年,在賓夕法尼亞大學(xué),開始研制電子計算機,主要參加人員:JohnW.Mauchly(莫奇萊)J.PresperEckert(??颂兀㎎ohnVonNeumann(馮·諾依曼)電子計算機(1946~1956)1946年,第一臺真正意義上的數(shù)字電子計算機ENIAC(埃尼阿克,ElectronicNumericalIntegratorAndComputer)誕生,開始研制于1943年,完成于1946年,負(fù)責(zé)人是JohnW.Mauchly和J.PresperEckert,重30噸,用了18000個電子管,功率25千瓦,主要用于計算彈道和氫彈的研制。其中重要參與者美籍匈牙利科學(xué)家約翰·馮·諾依曼(John·von·Neumann)提出的“在電子計算機中存儲程序和程序控制”的概念,確立了現(xiàn)代計算機的基本結(jié)構(gòu),該結(jié)構(gòu)一直沿用至今,所以他也被譽為“現(xiàn)代計算機之父”。2024/8/2718馮
諾依曼體系構(gòu)架由馮·諾依曼等人在1946年6月在一篇報告“FirstDraftofaReportontheEDVAC
”中首先明確提出來的,其實這是基于J.PresperEckert和JohnWillianMauchy在UPen開發(fā)的ENIAC計算機體系結(jié)構(gòu)。這種計算機體系結(jié)構(gòu)的特點可以簡要地概括為以下幾點:計算機(指硬件)應(yīng)由運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備5大基本部件組成計算機內(nèi)部采用二進制來表示指令和數(shù)據(jù)將編好的程序的原始數(shù)據(jù)先存入存儲器中,然后再啟動計算機工作2024/8/27191956年5月,中國第一臺電子計算機——復(fù)旦601型電子積分機在復(fù)旦大學(xué)誕生(攝于復(fù)旦大學(xué)校史館)2024/8/2720在電子管計算機時代,程序設(shè)計語言是用二進制代碼表示的機器語言,以及使用助記符來表示機器指令或操作碼的匯編語言。計算機能直接識別和執(zhí)行機器語言;匯編語言要通過匯編程序?qū)⒎柗g成二進制數(shù)的機器語言。二十世紀(jì)上半葉,出現(xiàn)了布爾代數(shù)(數(shù)學(xué))、圖靈機(計算模型)、馮諾依曼體系結(jié)構(gòu)(架構(gòu))、晶體管(器件)這四個現(xiàn)代計算技術(shù)的科學(xué)基礎(chǔ)。布爾代數(shù):描述程序和硬件如CPU的底層邏輯;圖靈機:一種通用的計算模型,將復(fù)雜任務(wù)轉(zhuǎn)化為自動計算、不需人工干預(yù)的自動化過程;馮
諾依曼體系結(jié)構(gòu)(構(gòu)造計算機的三個基本原則):采用二進制邏輯;程序存儲執(zhí)行;計算機由運算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備這五個基本單元組成;晶體管:構(gòu)成基本的邏輯電路和存儲電路的半導(dǎo)體器件,是建造現(xiàn)代計算機之塔的“磚塊”。基于以上科學(xué)基礎(chǔ),計算技術(shù)得以高速發(fā)展,形成規(guī)模龐大的產(chǎn)業(yè)。晶體管計算機(1956~1964):產(chǎn)生電子管計算機已經(jīng)步入了現(xiàn)代計算機的范疇,但因其體積大、能耗高、故障多、價格貴,從而制約了它的普及和應(yīng)用。1948年,Bell實驗室發(fā)明晶體管1950年,日本東京帝國大學(xué)的YoshiroNakamats發(fā)明了軟磁盤,其銷售權(quán)由IBM公司獲得。1953年,磁芯存儲器被開發(fā)出來。1956年,美國貝爾實驗室用晶體管代替電子管,制成了世界上第一臺全晶體管計算機Lepreachaun。2024/8/2723晶體管計算機(1956~1964):發(fā)展晶體管計算機:主機采用晶體管等半導(dǎo)體器件,以磁鼓和磁盤為輔助存儲器,采用算法語言(高級語言)編程,開始出現(xiàn)操作系統(tǒng)。1954年,IBM的JohnBackus和他的研究小組開始開發(fā)FORTRAN語言,1957年完成。這是一種適合科學(xué)研究使用的計算機高級語言。1959年,GraceMurrayHopper開始開發(fā)COBOL語言,完成于1961年。1960年,第一個結(jié)構(gòu)化程序設(shè)計語言ALGOL推出。2024/8/2724中、小規(guī)模集成電路計算機(1964-1971)1958年JackKilby發(fā)明了集成電路(IntegratedCircuit,IC),它是一種把晶體管、三極管、電阻、電容、電感及布線都加工到一片小小的硅片上的電子器件,不久科學(xué)家們又把更多的電子元件集成到了單一的半導(dǎo)體芯片上。于是,計算機變得更小,功耗更低,速度更快。1965年,DouglasEnglebart提出鼠標(biāo)器的設(shè)想,但沒有進一步研究,直到1983年才被蘋果電腦公司大量采用。1969年,ARPANet(AdvancedResearchProjectsAgencyNetwork)計劃開始啟動,這是現(xiàn)代Internet的雛形。1971年完成。1967年,NiklausWirth開始開發(fā)PASCAL
語言,1971年完成。1970年,KenThomson和DennisRitchie開始開發(fā)UNIX操作系統(tǒng)。2024/8/2725大規(guī)模及超大規(guī)模集成電路計算機(1971年至今)計算機邏輯器件采用大規(guī)模集成電路(LargeScaleIntegration,LSI)和超大規(guī)模集成電路(VeryLargeScaleIntegration,VLSI)技術(shù),在硅半導(dǎo)體上集成了大量的電子元器件,集成度很高的半導(dǎo)體存儲器也取代了磁芯存儲器。同時,操作系統(tǒng)不斷完善,各種應(yīng)用軟件也成為了現(xiàn)代工業(yè)的一部分。1972年,C語言開發(fā)完成。其主要設(shè)計者是UNIX系統(tǒng)的開發(fā)者之一DennisRitche。1985年11月,MicrosoftWindows發(fā)布。1989年,歐洲物理粒子研究所的TimBerners-Lee創(chuàng)立WorldWideWeb雛形。通過超文本鏈接,新手也可以輕松上網(wǎng)瀏覽。1993年,Internet開始商業(yè)化運行。1994年,Netscape1.0瀏覽器發(fā)布。2024/8/2726計算機系統(tǒng)組成2024/8/2727計算機系統(tǒng)的硬件組成2024/8/27282024/8/27291.2程序設(shè)計語言的綜述指令(Instruction)可以被計算機理解并執(zhí)行的基本操作命令。程序(Program)供計算機執(zhí)行后,能完成特定功能的指令序列(Instructionssequence)程序=計算機指令序列軟件(Software)與計算機系統(tǒng)操作有關(guān)的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。2024/8/2730程序設(shè)計語言程序設(shè)計語言是人與計算機對話的工具,是用來書寫計算機程序的語言。2024/8/2731程序設(shè)計語言高級語言High-levelLanguage機器語言Machinelanguage匯編語言AssemblyLanguage自然語言NaturalLanguage2024/8/2732匯編語言匯編語言:用類英語單詞縮寫的符號指令代替機器語言的二進制代碼指令匯編程序用匯編語言編寫的程序在計算機上執(zhí)行,先要將用匯編語言編寫的源程序轉(zhuǎn)換成機器語言程序。稱完成這個轉(zhuǎn)換功能的程序為“匯編程序“(assembler)2024/8/2733高級程序主要由語句(statements)構(gòu)成,語句是要計算機完成任務(wù)的命令有統(tǒng)一的語法,獨立于具體機器,便于人們編碼,閱讀和理解用高級語言編寫的程序(源程序)在計算機上執(zhí)行,先要由編譯器(也稱為編譯程序)將源程序轉(zhuǎn)換成機器語言程序既能方便地描述客觀對象,又能借助于編譯器轉(zhuǎn)換為計算機所接受的語言最接近自然語言的程序設(shè)計語言2024/8/2734機器語言/匯編語言/高級語言機器語言計算機匯編程序解釋器編譯器高級語言匯編語言AssemblerInterpreterCompiler高級語言的發(fā)展2024/8/27352024/8/2736非結(jié)構(gòu)化語言非結(jié)構(gòu)化語言是高級語言發(fā)展的第一階段,編程只要符合語法規(guī)則即可;程序的結(jié)構(gòu)性比較差,邏輯也較為復(fù)雜,由此導(dǎo)致程序變得難以閱讀和維護。COBOL、FORTRAN2024/8/2737結(jié)構(gòu)化語言為了解決非結(jié)構(gòu)化語言存在的問題,提出結(jié)構(gòu)化程序設(shè)計方法:自頂向下、逐步求精、功能分解程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)構(gòu)成,這些結(jié)構(gòu)可以嵌套,并且程序中的流程不允許隨意跳轉(zhuǎn)。用結(jié)構(gòu)化程序設(shè)計方法編寫的程序結(jié)構(gòu)清晰,易于閱讀和維護。PASCAL、C2024/8/2738面向?qū)ο蟮恼Z言目的是克服面向過程語言過分強調(diào)求解過程細(xì)節(jié),程序不易復(fù)用的缺點引入了對象、消息、類、繼承、封裝、抽象、多態(tài)性等機制和概念用面向?qū)ο笳Z言進行程序設(shè)計時,以問題中的對象為基礎(chǔ),將具有類似性質(zhì)的對象抽象成類,利用繼承機制,對差異進行程序設(shè)計C++,Java等2024/8/2739結(jié)構(gòu)化程序設(shè)計方法程序結(jié)構(gòu)自頂向下(top-down)模塊化設(shè)計方法模塊算法的逐步求精(stepwiserefinement)設(shè)計方法用結(jié)構(gòu)化控制結(jié)構(gòu)描述算法和編寫程序自頂向下、逐步求精、功能分解2024/8/2740自頂向下模塊化設(shè)計方法核心思想是限制程序設(shè)計的復(fù)雜性把大程序按功能劃分成一些較小的部分,每個完成獨立功能分解模塊的原則是簡單性、獨立性和完整性模塊化設(shè)計方法使程序具有較高的可靠性和靈活性,同時便于程序的測試和維護2024/8/2741自頂向下模塊化設(shè)計方法(續(xù))在用模塊化方法劃分程序模塊時,應(yīng)盡量讓模塊具有如下良好性質(zhì):模塊具有單一入口和單一出口:輸入==處理==輸出模塊不宜過大,模塊功能單一模塊的執(zhí)行不對環(huán)境產(chǎn)生副作用讓模塊與環(huán)境的聯(lián)系僅限于輸入和輸出參數(shù),模塊的內(nèi)部結(jié)構(gòu)與調(diào)用它的程序無關(guān)盡量用模塊的名字調(diào)用模塊1.3C語言基礎(chǔ)知識C語言是當(dāng)前使得的最多的程序設(shè)計語言(C、C++、Java、Python)中的一種C語言簡史C語言特點C語言詞匯、數(shù)據(jù)類型、常量和變量2024/8/27422024/8/2743C語言之父:丹尼斯·里奇(DennisM.Ritchie)HarvardUniversity獲學(xué)士和博士學(xué)位1967年加入Bell實驗室工作至今1972年發(fā)明C語言1978年,BrianW.Kernighan和DennisM.Ritchie合著《TheCProgrammingLanguage》Turing獎(1983)和IEEE先驅(qū)獎(1992)獲得者、美國工程院院士2024/8/27441.3.1C語言簡史1960年出現(xiàn)的ALGOL60是一種面向問題的高級語言,它離硬件比較遠(yuǎn),不宜用來編寫系統(tǒng)程序1963年英國的劍橋大學(xué)推出了CPL(combinedprogramminglanguage)語言。CPL語言在ALGOL60的基礎(chǔ)上接近硬件一些,但規(guī)模比較大,難以實現(xiàn)1967年英國劍橋大學(xué)的MartinRichards對CPL語言做了簡化,推出了BCPL(basiccombinedprogramminglanguage)語言2024/8/2745C語言發(fā)展史(續(xù))1970年美國貝爾實驗室的KenThompson以BCPL語言為基礎(chǔ),設(shè)計出了簡單且很接近硬件的B語言(取BCPL的第一個字母),并用B語言寫了第一個UNIX操作系統(tǒng)。但B語言過于簡單,功能有限1972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優(yōu)點(精練,接近硬件),又克服了它們的缺點(過于簡單,數(shù)據(jù)無類型等)。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版2024/8/2746C語言發(fā)展史(續(xù))1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI)根據(jù)C語言問世以來各種版本對C的發(fā)展和擴充,制定了新的標(biāo)準(zhǔn),稱為ANSIC1987年,ANSI又公布了新標(biāo)準(zhǔn)—87ANSIC1990年,國際標(biāo)準(zhǔn)化組織ISO(InternationalStandardOrganization)接受87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)2024/8/27471.3.2C語言特點一個只輸出一行信息的C程序#include<stdio.h>voidmain()/*主函數(shù)*/{
printf("Thisbookis<ProgrammingwithCandc++languages>.\n");}2024/8/2748C程序特點一個C程序有一個名為main的主函數(shù)主函數(shù)前的關(guān)鍵字void表示該函數(shù)不返回結(jié)果在函數(shù)名之后要有一對圓括號,里面定義參數(shù)函數(shù)體用花括號“{}”括住。花括號可以用來括起任何一組C代碼,從而構(gòu)成復(fù)合語句或分程序簡單C語句之后有一個分號“;”程序中的“/*…*/”表示程序的注釋部分。注釋便于人閱讀程序,對程序編譯和運行都沒有作用#include<stdio.h>是編譯預(yù)處理命令行,指明有關(guān)C的輸入和輸出標(biāo)準(zhǔn)函數(shù)也將是程序的一部分2024/8/2749【例】讀入兩個整數(shù),輸出它們的和/*1*/#include<stdio.h>/*2*/voidmain()/*3*/{/*變量定義部分*//*4*/
intx,y,sum;/*定義x,y,sum*//*5*/
/*以下為語句序列*//*6*/
printf("Inputxandy\n");/*提示輸入數(shù)據(jù)*//*7*/
scanf("%d%d",&x,&y);/*輸入x和y的值*//*8*/
sum=x+y;/*完成x+y的計算,求sum=x+y*//*9*/printf("x+y=%d\n",sum);/*輸出結(jié)果*//*10*/}2024/8/2750【例】利用公式:C=(5/9)(F-32)輸出F氏溫度與C氏溫度對照表,設(shè)已知F氏溫度取0、20、…、200。#include<stdio.h>voidmain(){floatf,c;/*變量定義*/
intlower,upper,step;lower=0;upper=200;step=20;f=lower;while(f<=upper){/*循環(huán)計算*/
c=5.0/9.0*(f-32.0);printf(“%3.0f%6.1f\n”,f,c);f=f+step;}}2024/8/2751【例】輸入兩個實數(shù),輸出它們中的小的數(shù)#include<stdio.h>floatmin(floata,floatb){floattemp;/*函數(shù)使用的變量的定義*/
if(a<b)temp=a;elsetemp=b; returntemp;/*返回temp到調(diào)用min()函數(shù)處*/}voidmain(){floatx,y,c;/*變量定義*/printf(“輸入x和y.\n");scanf("%f%f",&x,&y);c=min(x,y);/*調(diào)用函數(shù)min()*/printf("MIN(%.2f,%.2f)=%.2f\n",x,y,c);}C語言特點語言表達能力強具有數(shù)據(jù)類型的構(gòu)造能力和結(jié)構(gòu)化的程序控制結(jié)構(gòu)語言簡潔、緊湊、使用靈活方便能使編譯程序產(chǎn)生執(zhí)行效率較高的代碼用C語言可編寫移植性較好的程序自由度太大2024/8/27531.3.3C語言詞匯、數(shù)據(jù)類型、常量和變量C語言詞匯C語言數(shù)據(jù)類型常量和變量2024/8/2754C語言詞匯基本符號數(shù)字10個(0~9)英文字母大、小寫各26個(A~Z,a~z)下線字符“_”其它構(gòu)成特殊符號的字符集基本詞匯字面形式常量特殊符號(運算符)關(guān)鍵字標(biāo)識符(命名數(shù)據(jù)對象)2024/8/2755關(guān)鍵詞(Keyword)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticstructswitchtypedefunionunsignedvoidvolatilewhile2024/8/2756關(guān)鍵詞(續(xù))下面幾個雖不屬于關(guān)鍵字,但建議把它們看作關(guān)鍵字,不要在程序中隨便使用。它們用在C程序的預(yù)處理命令行中defineundefincludeifdefifndefendiflineelif2024/8/2757標(biāo)識符(Identifier)作用:用來標(biāo)識變量、常量、類型、函數(shù)、語句等程序?qū)ο?,C語言用標(biāo)識符給它們命名命名規(guī)則:在C語言中,一個合理的標(biāo)識符由英文字母或下線符開頭,后跟由字母、下線符、數(shù)字符組成的字符序列。一般以下線符開頭的標(biāo)識符作內(nèi)部使用2024/8/2758標(biāo)識符(續(xù))命名要求:標(biāo)識符作為程序成分對象的名稱,為了便于聯(lián)想和記憶,建議使用能反映該對象意義的標(biāo)識符限制:注意不同C系統(tǒng)對標(biāo)識符的有效字符個數(shù)有不同的規(guī)定。對于限制標(biāo)識符8個有效字符的系統(tǒng)來說,兩個超過8個字符的不同標(biāo)識符,當(dāng)前8個字符依次相同時,系統(tǒng)就認(rèn)為它們是同一個標(biāo)識符2024/8/2759C語言數(shù)據(jù)類型三種數(shù)據(jù)類型基本數(shù)據(jù)類型、指針類型、復(fù)合數(shù)據(jù)類型基本數(shù)據(jù)類型:三種整型(short,int,long)實型(float,double,longdouble)字符型(char)2024/8/2760C語言數(shù)據(jù)類型(續(xù))復(fù)合數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉指針類型指針類型直接賦予數(shù)據(jù)對象在內(nèi)存中的地址2024/8/2761常量(Constant)在程序運行過程中,其值不能改變或不允許改變的數(shù)據(jù)對象常量按值的表示形式區(qū)分它的類型整型常量:15浮點型常量:5.0字符型常量:’a’指針常量:NULL字符串常量:”ABC”2024/8/2762常量(續(xù))可用宏定義給常量命名其一般形式是
#define標(biāo)識符字符列如:#definePI3.141592024/8/2763變量(Variable)在程序運行過程中,其值可以改變的數(shù)據(jù)對象變量在內(nèi)存中占據(jù)一定的存貯單元,存放變量的值與變量有關(guān)的概念有:變量名;變量數(shù)據(jù)類型;變量在程序中的有效作用范圍;變量在程序執(zhí)行期間的存在時間;等等2024/8/2764變量(續(xù))程序通過變量定義引入變量,變量定義的一般形式:
類型變量名列表;其中,變量名列表由一個或多個變量名組成。例如:inti,j,sum;/*定義三個int型變量*/intindex=100,big_int=100002024/8/27651.3.4C程序開發(fā)環(huán)境基礎(chǔ)知識C程序從開發(fā)到運行大致要經(jīng)歷六個階段編輯(Edit)預(yù)處理(Pre-process)編繹(Compile)連接(Link)加載(Load)執(zhí)行(Execute)2024/8/2766編輯、預(yù)處理與編譯編輯程序員用系統(tǒng)環(huán)境提供的編輯器編輯源程序,產(chǎn)生一個源程序文件.c或.h
預(yù)處理編譯前,C編繹器先自動調(diào)用預(yù)處理程序,對源程序文件作文字轉(zhuǎn)換,產(chǎn)生一個新的內(nèi)部程序代碼編譯若編譯過程中發(fā)現(xiàn)程序有錯誤,則輸出錯誤的詳細(xì)信息;對正確的源程序產(chǎn)生機器語言程序,稱為源程序的目的代碼2024/8/2767連接、加載與執(zhí)行連接連接程序?qū)⒛康拇a和一些庫函數(shù)的目的代碼連接起來,產(chǎn)生計算機可直接執(zhí)行的程序映象文件靜態(tài)連接vs.動態(tài)連接加載將要執(zhí)行的程序裝入內(nèi)存執(zhí)行裝入內(nèi)存的程序在計算機的操作系統(tǒng)控制下執(zhí)行DevC++Dev-C++(或者叫做Dev-Cpp)是Windows環(huán)境下的一個輕量級C/C++集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE,用于提供程序開發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具)。自由軟件,遵守GPL許可協(xié)議分發(fā)源代碼。集合了功能強大的源碼編輯器、MingW64/TDM-GCC編譯器、GDB調(diào)試器和AStyle格式整理器等眾多自由軟件適合于在教學(xué)中供C/C++語言初學(xué)者使用非商業(yè)級普通開發(fā)者使用DevC++下載C語言、C++語言的編譯器有很多,初學(xué)者可以使用簡單的BloodshedDev-C++,它是一個跨平臺的編譯器,可以到網(wǎng)上下載然后安裝。DevC++5.11簡體中文版下載地址:官方下載:/projects/orwelldevcpp/百度網(wǎng)盤:/s/1mhHDjO8
提取密碼:mken
DevC++安裝DevC++下載完成后會得到一個安裝包(.exe程序),雙擊該文件即可開始安裝。1)首先加載安裝程序(只需要幾十秒)2)開始安裝:DevC++支持多國語言,包括簡體中文,但是要等到安裝完成以后才能設(shè)置,在安裝過程中不能使用簡體中文,所以這里我們選擇英文(English)。3)同意DevC++的各項條款4)選擇要安裝的組件:選擇“Full”,全部安裝。5)選擇安裝路徑:可以將DevC++安裝在任意位置,但是路徑中最好不要包含中文。6)等待安裝7)安裝完成配置DevC++首次使用DevC++還需要簡單的配置,包括設(shè)置語言、字體、和主題風(fēng)格。1)第一次啟動DevC++后,提示選擇語言(這里選擇簡體中文)。2)選擇字體和主題風(fēng)格(這里保持默認(rèn))。3)提示設(shè)置成功。點擊“OK”按鈕,進入DevC++,就可以編寫代碼了。Dev-C++操作示范1)運行Dev-C++,單擊工具欄上新建按鈕,新建一個源程序。2)輸入C語言源代碼,如下圖所示,每個單詞和字符會呈現(xiàn)不同的顏色。一種顏色代表一個類別的符號,這樣閱讀起來十分清晰。3)單擊工具欄中保存按鈕(或快捷鍵Ctrl+S),在對話框中輸入文名1-1,然后保存。4)單擊編譯(或快捷鍵F9),可以看到屏幕下方出現(xiàn):表示編譯成功了,也有些版本會出現(xiàn)一個CompileProgress,里面的Status顯示為Done,表示編譯成功了。5)單擊工具欄的運行按鈕(或快捷鍵F10),程序就運行了,這里你需要從鍵盤輸入“1”,再輸入一個空格,再輸入“2”,再按回車Enter鍵,就可以看到上面的結(jié)果3了。1.4C程序設(shè)計基礎(chǔ)知識存儲和二進制算法+數(shù)據(jù)結(jié)構(gòu)=程序編譯操作系統(tǒng)存儲和二進制信息處理的基本單位:“比特”其英文為“bit”,它是binarydigit的縮寫,中文譯為“二進制數(shù)字”或“二進位”,一般簡稱為“位”,用小寫字母“b”表示比特只有兩種狀態(tài):0或1,它們不分大小,是組成數(shù)字信息的最小單位。2024/8/2784存儲的有關(guān)術(shù)語8位二進制數(shù)表示一個字節(jié)英文用Byte表示,簡寫為B字節(jié)是計算機中用來表示存儲空間大小的最基本的容量單位千字節(jié)(KB)、兆字節(jié)(MB)、十億字節(jié)(GB),換算關(guān)系:B:1B=8bitKB:1KB=210字節(jié)=1024B(千字節(jié))MB:1MB=220字節(jié)=1024KB(兆字節(jié))GB:1GB=230字節(jié)=1024MB(吉字節(jié)、千兆字節(jié))TB:1TB=240字節(jié)=1024GB(太字節(jié)、兆兆字節(jié))2024/8/2785二進制數(shù)十進制數(shù)轉(zhuǎn)二進制數(shù),采用除以2取余的方法,例如,求14的二進制數(shù),14
2=7余0;7
2=3余1;3
2=1余1;1
2=0余1;將余數(shù)從最后的1開始,從后向前倒序?qū)?,就?4的二進制數(shù):1110。二進制數(shù)轉(zhuǎn)十進制數(shù),從右往左依次用二進制位上的數(shù)字乘以2的n次冪的和(n大于等于0),例如,二進制數(shù)1110轉(zhuǎn)十進制數(shù),1
23+1
22+1
21+0
20=8+4+2=14。算法+數(shù)據(jù)結(jié)構(gòu)=程序“算法+數(shù)據(jù)結(jié)構(gòu)=程序”,1984年圖靈獎獲得者NiklausWirth提出的著名公式概括了程序設(shè)計的知識體系,也是計算機學(xué)科知識體系的核心部分。2024/8/2787NiklausWirth(1934~2024)1959年獲ETH(蘇黎世聯(lián)邦理工學(xué)院,Eidgen?ssischeTechni
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版市政基礎(chǔ)設(shè)施文明施工與環(huán)境保護責(zé)任協(xié)議3篇
- 2025年陜西燃?xì)饧瘓F工程有限公司招聘筆試參考題庫含答案解析
- 2025年度個人門面房出租合同(含家具配置及經(jīng)營指導(dǎo)協(xié)議)4篇
- 2025年度個人信用卡透支擔(dān)保合同協(xié)議書4篇
- 2025年度個人醫(yī)療健康保險繳費協(xié)議書4篇
- 2025年全球及中國智能直播一體機行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2024年六五環(huán)境日網(wǎng)絡(luò)知識競賽測試題庫及答案
- 設(shè)計合同協(xié)議書
- 2025年度個人挖機租賃合同變更通知合同4篇
- 二零二五年度車輛收費員薪資待遇及福利協(xié)議材料詳盡條款4篇
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運行狀況及投資前景趨勢分析報告
- 【歷史】唐朝建立與“貞觀之治”課件-2024-2025學(xué)年統(tǒng)編版七年級歷史下冊
- 冬日暖陽健康守護
- 水處理藥劑采購項目技術(shù)方案(技術(shù)方案)
- 2024級高一上期期中測試數(shù)學(xué)試題含答案
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊
- 天然氣脫硫完整版本
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓(xùn)
- 三年級除法豎式300道題及答案
評論
0/150
提交評論