版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《程序設(shè)計(jì)》課程《程序設(shè)計(jì)》教學(xué)目標(biāo)通過這門課程的學(xué)習(xí),掌握C語言的基本語法和基本結(jié)構(gòu),熟悉程序設(shè)計(jì)的基本原理和基本算法,熟悉使用C編程平臺(tái)和調(diào)試方法。教學(xué)方式課程講授上機(jī)實(shí)驗(yàn)和輔導(dǎo)本課程是一門理論與實(shí)踐緊密結(jié)合的實(shí)用技術(shù)課程,在講授知識的同時(shí),系統(tǒng)、全面磨礪學(xué)生運(yùn)用C語言編程解決問題的能力。2025/11/211教材吳永輝,周娟。C語言程序設(shè)計(jì)。西安電子科技大學(xué)出版社。2024。ISBN:978-7-5606-7260-1。實(shí)驗(yàn)教材周娟,吳永輝《程序設(shè)計(jì)實(shí)踐入門》,機(jī)械工業(yè)出版社,2021。周娟,吳永輝。提升程式設(shè)計(jì)力|國際程式設(shè)計(jì)競賽精選解題解析。碁峰。2022。2025/11/213第1章程序設(shè)計(jì)基礎(chǔ)1.1計(jì)算和計(jì)算機(jī)的發(fā)展:需求是發(fā)展之母1.2程序設(shè)計(jì)語言的綜述念1.3C語言基礎(chǔ)知識1.4C程序設(shè)計(jì)基礎(chǔ)知識2025/11/2141.1計(jì)算和計(jì)算機(jī)的發(fā)展:需求是發(fā)展之母社會(huì)發(fā)展對于計(jì)算的需求推動(dòng)了計(jì)算機(jī)和程序設(shè)計(jì)語言的發(fā)展;計(jì)算機(jī)和程序設(shè)計(jì)語言的發(fā)展又進(jìn)一步推動(dòng)的計(jì)算的發(fā)展,也產(chǎn)生了新的計(jì)算需求。歷史,并不僅僅是一系列事件的時(shí)間、地點(diǎn)、人物的羅列;對于歷史,我們要善于通過對一系列事件的表象進(jìn)行分析,看到推動(dòng)歷史發(fā)展的本質(zhì)。2025/11/215計(jì)算機(jī)的發(fā)展機(jī)械計(jì)算機(jī)電子計(jì)算機(jī)晶體管計(jì)算機(jī)中、小規(guī)模集成電路計(jì)算機(jī)大規(guī)模及超大規(guī)模集成電路計(jì)算機(jī)2025/11/216計(jì)算機(jī)簡介:計(jì)算機(jī)和程序設(shè)計(jì)計(jì)算工具:手動(dòng)輔助計(jì)算裝置,如算盤(公元1200年前后)、計(jì)算尺==》機(jī)械計(jì)算機(jī)==》計(jì)算機(jī)計(jì)算機(jī)、程序設(shè)計(jì)、程序設(shè)計(jì)語言可以追溯到20世紀(jì)40年代中期。南宋:經(jīng)貿(mào)(外貿(mào))高度發(fā)達(dá)人類使用的計(jì)算工具隨著生產(chǎn)力的發(fā)展和社會(huì)的進(jìn)步,經(jīng)歷了從簡單到復(fù)雜、由低級到高級發(fā)展的過程。2025/11/217機(jī)械計(jì)算機(jī)機(jī)械計(jì)算機(jī)(mechanicalcomputer):由杠桿、齒輪等機(jī)械部件而非電子部件構(gòu)成。1642年,19歲的法國數(shù)學(xué)家、哲學(xué)家布茨·帕斯卡(BlaisePascal),為了幫助在稅務(wù)局任職的父親完成繁重的計(jì)算工作,發(fā)明了世界上第一臺(tái)齒輪式機(jī)械計(jì)算機(jī):通過齒輪系統(tǒng)的聯(lián)動(dòng)來進(jìn)行加法和減法的運(yùn)算。
1640年,英國資產(chǎn)階級革命開始。明朝末年2025/11/218電腦先驅(qū)查爾斯·巴貝奇(Charles
Babbage)1822年,英國人查爾斯·巴貝奇發(fā)現(xiàn)許多有關(guān)時(shí)間的計(jì)算設(shè)備在測量時(shí)(如天文圖、潮汐圖、航海圖),都存在臨界誤差,并且測量繁瑣。1823年得到政府的支持,1834年發(fā)明了分析機(jī)(現(xiàn)代計(jì)算機(jī)的前身)的原理,在只讀存儲(chǔ)器(穿孔卡片)中存儲(chǔ)程序和數(shù)據(jù)。但因1842年政府拒絕進(jìn)一步支持他的工作,巴貝奇的計(jì)算器未能完成。西方工業(yè)革命第一次鴉片戰(zhàn)爭前夕2025/11/219第一個(gè)程序員:詩人拜倫之女艾達(dá)(Ada)她為巴貝奇分析機(jī)編寫了一組求解伯努利數(shù)列的計(jì)算指令,這套指令也是人類歷史上第一套計(jì)算機(jī)算法程序,它將硬件和軟件分離,第一次出現(xiàn)程序的概念。艾達(dá)和第一個(gè)計(jì)算機(jī)程序:隨著西方國家進(jìn)入工業(yè)時(shí)代,由杠桿、齒輪等機(jī)械部件構(gòu)成的機(jī)械計(jì)算機(jī)被廣泛地研發(fā)和運(yùn)用1890年,美國人口普查部門希望能得到一臺(tái)機(jī)器幫助提高普查效率。赫爾曼·何樂禮(HermanHollerith)(后來他的公司發(fā)展成了IBM公司)借鑒Babbage的發(fā)明,用穿孔卡片存儲(chǔ)數(shù)據(jù),并設(shè)計(jì)了機(jī)器。結(jié)果僅用6周就得出了準(zhǔn)確的人口統(tǒng)計(jì)數(shù)據(jù)(如果用人工方法,大概要花10年時(shí)間)。機(jī)械計(jì)算機(jī)在二戰(zhàn)期間達(dá)到頂峰,在1960年代使用,在1970年代逐漸消失,到1980年代絕跡。晚清2025/11/2111電子計(jì)算機(jī):問世在以機(jī)械方式運(yùn)行的計(jì)算器誕生百年之后,隨著電子技術(shù)的突飛猛進(jìn),計(jì)算機(jī)開始了真正意義上的由機(jī)械向電子時(shí)代的過渡,電子器件逐漸演變成為計(jì)算機(jī)的主體,而機(jī)械部件則漸漸處于從屬位置。二者地位發(fā)生轉(zhuǎn)化的時(shí)候,計(jì)算機(jī)也正式開始了由量到質(zhì)的轉(zhuǎn)變,由此導(dǎo)致電子計(jì)算機(jī)正式問世。1904年,美國人LeeDeForest發(fā)明電子管,為電子計(jì)算機(jī)的發(fā)展奠定了基礎(chǔ)。1937年,英國科學(xué)家艾蘭·圖靈(AlanTuring)提出了一種理想的計(jì)算機(jī)器的數(shù)學(xué)模型——圖靈機(jī),發(fā)展了可計(jì)算性理論?,F(xiàn)在該理論不僅是計(jì)算機(jī)科學(xué)的基礎(chǔ),也是數(shù)學(xué)的基礎(chǔ)之一,為紀(jì)念圖靈而設(shè)立的圖靈獎(jiǎng)已成為計(jì)算機(jī)界的諾貝爾獎(jiǎng)。2025/11/2112艾蘭·圖靈(AllanTuring)1912年生于英國倫敦1931年進(jìn)入劍橋大學(xué)國王學(xué)院學(xué)習(xí)1937年發(fā)表論文“OncomputablenumberswithanapplicationtotheEntscheidungsproblem”,提出圖靈機(jī)“TuringMachine”模型(理想的計(jì)算機(jī)器的數(shù)學(xué)模型)1938年在普林斯頓大學(xué)獲博士學(xué)位1939年服役,從事密碼破譯研究1945-1948年在英國國家物理實(shí)驗(yàn)室,研制ACE計(jì)算機(jī)此后,加盟曼切斯特大學(xué)皇家學(xué)會(huì)計(jì)算實(shí)驗(yàn)室,此期間發(fā)表著名論文“ComputingMachineandIntelligence”1951年被選為英國皇家學(xué)會(huì)院士1954年自殺身亡2025/11/21132025/11/2114ACMTuringAward(圖靈獎(jiǎng))美國計(jì)算機(jī)協(xié)會(huì)(AssociationforComputingMachinery)于1966年設(shè)立的第一個(gè)獎(jiǎng)項(xiàng)宗旨:獎(jiǎng)勵(lì)在計(jì)算機(jī)科學(xué)研究中做出創(chuàng)造性貢獻(xiàn)、推動(dòng)計(jì)算機(jī)科學(xué)技術(shù)發(fā)展的杰出計(jì)算機(jī)科學(xué)家獎(jiǎng)金額:最初2萬美金;1989年增至2萬5千美金2025/11/2115二戰(zhàn)時(shí)期,美國進(jìn)行武器研制,彈道計(jì)算和原子彈研制的計(jì)算量非常龐大。為了解決這一問題,1943年,在賓夕法尼亞大學(xué),開始研制電子計(jì)算機(jī),主要參加人員:JohnW.Mauchly(莫奇萊)J.PresperEckert(??颂兀㎎ohnVonNeumann(馮·諾依曼)電子計(jì)算機(jī)(1946~1956)1946年,第一臺(tái)真正意義上的數(shù)字電子計(jì)算機(jī)ENIAC(埃尼阿克,ElectronicNumericalIntegratorAndComputer)誕生,開始研制于1943年,完成于1946年,負(fù)責(zé)人是JohnW.Mauchly和J.PresperEckert,重30噸,用了18000個(gè)電子管,功率25千瓦,主要用于計(jì)算彈道和氫彈的研制。其中重要參與者美籍匈牙利科學(xué)家約翰·馮·諾依曼(John·von·Neumann)提出的“在電子計(jì)算機(jī)中存儲(chǔ)程序和程序控制”的概念,確立了現(xiàn)代計(jì)算機(jī)的基本結(jié)構(gòu),該結(jié)構(gòu)一直沿用至今,所以他也被譽(yù)為“現(xiàn)代計(jì)算機(jī)之父”。2025/11/2117馮
諾依曼體系構(gòu)架由馮·諾依曼等人在1946年6月在一篇報(bào)告“FirstDraftofaReportontheEDVAC
”中首先明確提出來的,其實(shí)這是基于J.PresperEckert和JohnWillianMauchy在UPen開發(fā)的ENIAC計(jì)算機(jī)體系結(jié)構(gòu)。這種計(jì)算機(jī)體系結(jié)構(gòu)的特點(diǎn)可以簡要地概括為以下幾點(diǎn):計(jì)算機(jī)(指硬件)應(yīng)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備5大基本部件組成計(jì)算機(jī)內(nèi)部采用二進(jìn)制來表示指令和數(shù)據(jù)將編好的程序的原始數(shù)據(jù)先存入存儲(chǔ)器中,然后再啟動(dòng)計(jì)算機(jī)工作2025/11/21181956年5月,中國第一臺(tái)電子計(jì)算機(jī)——復(fù)旦601型電子積分機(jī)在復(fù)旦大學(xué)誕生(攝于復(fù)旦大學(xué)校史館)2025/11/2119在電子管計(jì)算機(jī)時(shí)代,程序設(shè)計(jì)語言是用二進(jìn)制代碼表示的機(jī)器語言,以及使用助記符來表示機(jī)器指令或操作碼的匯編語言。計(jì)算機(jī)能直接識別和執(zhí)行機(jī)器語言;匯編語言要通過匯編程序?qū)⒎柗g成二進(jìn)制數(shù)的機(jī)器語言。二十世紀(jì)上半葉,出現(xiàn)了布爾代數(shù)(數(shù)學(xué))、圖靈機(jī)(計(jì)算模型)、馮諾依曼體系結(jié)構(gòu)(架構(gòu))、晶體管(器件)這四個(gè)現(xiàn)代計(jì)算技術(shù)的科學(xué)基礎(chǔ)。布爾代數(shù):描述程序和硬件如CPU的底層邏輯;圖靈機(jī):一種通用的計(jì)算模型,將復(fù)雜任務(wù)轉(zhuǎn)化為自動(dòng)計(jì)算、不需人工干預(yù)的自動(dòng)化過程;馮
諾依曼體系結(jié)構(gòu)(構(gòu)造計(jì)算機(jī)的三個(gè)基本原則):采用二進(jìn)制邏輯;程序存儲(chǔ)執(zhí)行;計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備這五個(gè)基本單元組成;晶體管:構(gòu)成基本的邏輯電路和存儲(chǔ)電路的半導(dǎo)體器件,是建造現(xiàn)代計(jì)算機(jī)之塔的“磚塊”。基于以上科學(xué)基礎(chǔ),計(jì)算技術(shù)得以高速發(fā)展,形成規(guī)模龐大的產(chǎn)業(yè)。晶體管計(jì)算機(jī)(1956~1964):產(chǎn)生電子管計(jì)算機(jī)已經(jīng)步入了現(xiàn)代計(jì)算機(jī)的范疇,但因其體積大、能耗高、故障多、價(jià)格貴,從而制約了它的普及和應(yīng)用。1948年,Bell實(shí)驗(yàn)室發(fā)明晶體管1950年,日本東京帝國大學(xué)的YoshiroNakamats發(fā)明了軟磁盤,其銷售權(quán)由IBM公司獲得。1953年,磁芯存儲(chǔ)器被開發(fā)出來。1956年,美國貝爾實(shí)驗(yàn)室用晶體管代替電子管,制成了世界上第一臺(tái)全晶體管計(jì)算機(jī)Lepreachaun。2025/11/2122晶體管計(jì)算機(jī)(1956~1964):發(fā)展晶體管計(jì)算機(jī):主機(jī)采用晶體管等半導(dǎo)體器件,以磁鼓和磁盤為輔助存儲(chǔ)器,采用算法語言(高級語言)編程,開始出現(xiàn)操作系統(tǒng)。1954年,IBM的JohnBackus和他的研究小組開始開發(fā)FORTRAN語言,1957年完成。這是一種適合科學(xué)研究使用的計(jì)算機(jī)高級語言。1959年,GraceMurrayHopper開始開發(fā)COBOL語言,完成于1961年。1960年,第一個(gè)結(jié)構(gòu)化程序設(shè)計(jì)語言ALGOL推出。2025/11/2123中、小規(guī)模集成電路計(jì)算機(jī)(1964-1971)1958年JackKilby發(fā)明了集成電路(IntegratedCircuit,IC),它是一種把晶體管、三極管、電阻、電容、電感及布線都加工到一片小小的硅片上的電子器件,不久科學(xué)家們又把更多的電子元件集成到了單一的半導(dǎo)體芯片上。于是,計(jì)算機(jī)變得更小,功耗更低,速度更快。1965年,DouglasEnglebart提出鼠標(biāo)器的設(shè)想,但沒有進(jìn)一步研究,直到1983年才被蘋果電腦公司大量采用。1969年,ARPANet(AdvancedResearchProjectsAgencyNetwork)計(jì)劃開始啟動(dòng),這是現(xiàn)代Internet的雛形。1971年完成。1967年,NiklausWirth開始開發(fā)PASCAL
語言,1971年完成。1970年,KenThomson和DennisRitchie開始開發(fā)UNIX操作系統(tǒng)。2025/11/2124大規(guī)模及超大規(guī)模集成電路計(jì)算機(jī)(1971年至今)計(jì)算機(jī)邏輯器件采用大規(guī)模集成電路(LargeScaleIntegration,LSI)和超大規(guī)模集成電路(VeryLargeScaleIntegration,VLSI)技術(shù),在硅半導(dǎo)體上集成了大量的電子元器件,集成度很高的半導(dǎo)體存儲(chǔ)器也取代了磁芯存儲(chǔ)器。同時(shí),操作系統(tǒng)不斷完善,各種應(yīng)用軟件也成為了現(xiàn)代工業(yè)的一部分。1972年,C語言開發(fā)完成。其主要設(shè)計(jì)者是UNIX系統(tǒng)的開發(fā)者之一DennisRitche。1985年11月,MicrosoftWindows發(fā)布。1989年,歐洲物理粒子研究所的TimBerners-Lee創(chuàng)立WorldWideWeb雛形。通過超文本鏈接,新手也可以輕松上網(wǎng)瀏覽。1993年,Internet開始商業(yè)化運(yùn)行。1994年,Netscape1.0瀏覽器發(fā)布。2025/11/2125計(jì)算機(jī)系統(tǒng)組成2025/11/2126計(jì)算機(jī)系統(tǒng)的硬件組成2025/11/21272025/11/21281.2程序設(shè)計(jì)語言的綜述指令(Instruction)可以被計(jì)算機(jī)理解并執(zhí)行的基本操作命令。程序(Program)供計(jì)算機(jī)執(zhí)行后,能完成特定功能的指令序列(Instructionssequence)程序=計(jì)算機(jī)指令序列軟件(Software)與計(jì)算機(jī)系統(tǒng)操作有關(guān)的計(jì)算機(jī)程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。2025/11/2129程序設(shè)計(jì)語言程序設(shè)計(jì)語言是人與計(jì)算機(jī)對話的工具,是用來書寫計(jì)算機(jī)程序的語言。2025/11/2130程序設(shè)計(jì)語言高級語言High-levelLanguage機(jī)器語言Machinelanguage匯編語言AssemblyLanguage自然語言NaturalLanguage2025/11/2131匯編語言匯編語言:用類英語單詞縮寫的符號指令代替機(jī)器語言的二進(jìn)制代碼指令匯編程序用匯編語言編寫的程序在計(jì)算機(jī)上執(zhí)行,先要將用匯編語言編寫的源程序轉(zhuǎn)換成機(jī)器語言程序。稱完成這個(gè)轉(zhuǎn)換功能的程序?yàn)椤皡R編程序“(assembler)2025/11/2132高級程序主要由語句(statements)構(gòu)成,語句是要計(jì)算機(jī)完成任務(wù)的命令有統(tǒng)一的語法,獨(dú)立于具體機(jī)器,便于人們編碼,閱讀和理解用高級語言編寫的程序(源程序)在計(jì)算機(jī)上執(zhí)行,先要由編譯器(也稱為編譯程序)將源程序轉(zhuǎn)換成機(jī)器語言程序既能方便地描述客觀對象,又能借助于編譯器轉(zhuǎn)換為計(jì)算機(jī)所接受的語言最接近自然語言的程序設(shè)計(jì)語言2025/11/2133機(jī)器語言/匯編語言/高級語言機(jī)器語言計(jì)算機(jī)匯編程序解釋器編譯器高級語言匯編語言AssemblerInterpreterCompiler高級語言的發(fā)展2025/11/21342025/11/2135非結(jié)構(gòu)化語言非結(jié)構(gòu)化語言是高級語言發(fā)展的第一階段,編程只要符合語法規(guī)則即可;程序的結(jié)構(gòu)性比較差,邏輯也較為復(fù)雜,由此導(dǎo)致程序變得難以閱讀和維護(hù)。COBOL、FORTRAN2025/11/2136結(jié)構(gòu)化語言為了解決非結(jié)構(gòu)化語言存在的問題,提出結(jié)構(gòu)化程序設(shè)計(jì)方法:自頂向下、逐步求精、功能分解程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)構(gòu)成,這些結(jié)構(gòu)可以嵌套,并且程序中的流程不允許隨意跳轉(zhuǎn)。用結(jié)構(gòu)化程序設(shè)計(jì)方法編寫的程序結(jié)構(gòu)清晰,易于閱讀和維護(hù)。PASCAL、C2025/11/2137面向?qū)ο蟮恼Z言目的是克服面向過程語言過分強(qiáng)調(diào)求解過程細(xì)節(jié),程序不易復(fù)用的缺點(diǎn)引入了對象、消息、類、繼承、封裝、抽象、多態(tài)性等機(jī)制和概念用面向?qū)ο笳Z言進(jìn)行程序設(shè)計(jì)時(shí),以問題中的對象為基礎(chǔ),將具有類似性質(zhì)的對象抽象成類,利用繼承機(jī)制,對差異進(jìn)行程序設(shè)計(jì)C++,Java等2025/11/2138結(jié)構(gòu)化程序設(shè)計(jì)方法程序結(jié)構(gòu)自頂向下(top-down)模塊化設(shè)計(jì)方法模塊算法的逐步求精(stepwiserefinement)設(shè)計(jì)方法用結(jié)構(gòu)化控制結(jié)構(gòu)描述算法和編寫程序自頂向下、逐步求精、功能分解2025/11/2139自頂向下模塊化設(shè)計(jì)方法核心思想是限制程序設(shè)計(jì)的復(fù)雜性把大程序按功能劃分成一些較小的部分,每個(gè)完成獨(dú)立功能分解模塊的原則是簡單性、獨(dú)立性和完整性模塊化設(shè)計(jì)方法使程序具有較高的可靠性和靈活性,同時(shí)便于程序的測試和維護(hù)2025/11/2140自頂向下模塊化設(shè)計(jì)方法(續(xù))在用模塊化方法劃分程序模塊時(shí),應(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è)計(jì)語言(C、C++、Java、Python)中的一種C語言簡史C語言特點(diǎn)C語言詞匯、數(shù)據(jù)類型、常量和變量2025/11/21412025/11/2142C語言之父:丹尼斯·里奇(DennisM.Ritchie)HarvardUniversity獲學(xué)士和博士學(xué)位1967年加入Bell實(shí)驗(yàn)室工作至今1972年發(fā)明C語言1978年,BrianW.Kernighan和DennisM.Ritchie合著《TheCProgrammingLanguage》Turing獎(jiǎng)(1983)和IEEE先驅(qū)獎(jiǎng)(1992)獲得者、美國工程院院士2025/11/21431.3.1C語言簡史1960年出現(xiàn)的ALGOL60是一種面向問題的高級語言,它離硬件比較遠(yuǎn),不宜用來編寫系統(tǒng)程序1963年英國的劍橋大學(xué)推出了CPL(combinedprogramminglanguage)語言。CPL語言在ALGOL60的基礎(chǔ)上接近硬件一些,但規(guī)模比較大,難以實(shí)現(xiàn)1967年英國劍橋大學(xué)的MartinRichards對CPL語言做了簡化,推出了BCPL(basiccombinedprogramminglanguage)語言2025/11/2144C語言發(fā)展史(續(xù))1970年美國貝爾實(shí)驗(yàn)室的KenThompson以BCPL語言為基礎(chǔ),設(shè)計(jì)出了簡單且很接近硬件的B語言(取BCPL的第一個(gè)字母),并用B語言寫了第一個(gè)UNIX操作系統(tǒng)。但B語言過于簡單,功能有限1972年至1973年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出了C語言(取BCPL的第二個(gè)字母)。C語言既保持了BCPL和B語言的優(yōu)點(diǎn)(精練,接近硬件),又克服了它們的缺點(diǎn)(過于簡單,數(shù)據(jù)無類型等)。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版2025/11/2145C語言發(fā)展史(續(xù))1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語言問世以來各種版本對C的發(fā)展和擴(kuò)充,制定了新的標(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)2025/11/21461.3.2C語言特點(diǎn)一個(gè)只輸出一行信息的C程序#include<stdio.h>voidmain()/*主函數(shù)*/{
printf("Thisbookis<ProgrammingwithCandc++languages>.\n");}2025/11/2147C程序特點(diǎn)一個(gè)C程序有一個(gè)名為main的主函數(shù)主函數(shù)前的關(guān)鍵字void表示該函數(shù)不返回結(jié)果在函數(shù)名之后要有一對圓括號,里面定義參數(shù)函數(shù)體用花括號“{}”括住?;ɡㄌ柨梢杂脕砝ㄆ鹑魏我唤MC代碼,從而構(gòu)成復(fù)合語句或分程序簡單C語句之后有一個(gè)分號“;”程序中的“/*…*/”表示程序的注釋部分。注釋便于人閱讀程序,對程序編譯和運(yùn)行都沒有作用#include<stdio.h>是編譯預(yù)處理命令行,指明有關(guān)C的輸入和輸出標(biāo)準(zhǔn)函數(shù)也將是程序的一部分2025/11/2148【例】讀入兩個(gè)整數(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的計(jì)算,求sum=x+y*//*9*/printf("x+y=%d\n",sum);/*輸出結(jié)果*//*10*/}2025/11/2149【例】利用公式: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)計(jì)算*/
c=5.0/9.0*(f-32.0);printf(“%3.0f%6.1f\n”,f,c);f=f+step;}}2025/11/2150【例】輸入兩個(gè)實(shí)數(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語言特點(diǎn)語言表達(dá)能力強(qiáng)具有數(shù)據(jù)類型的構(gòu)造能力和結(jié)構(gòu)化的程序控制結(jié)構(gòu)語言簡潔、緊湊、使用靈活方便能使編譯程序產(chǎn)生執(zhí)行效率較高的代碼用C語言可編寫移植性較好的程序自由度太大2025/11/21521.3.3C語言詞匯、數(shù)據(jù)類型、常量和變量C語言詞匯C語言數(shù)據(jù)類型常量和變量2025/11/2153C語言詞匯基本符號數(shù)字10個(gè)(0~9)英文字母大、小寫各26個(gè)(A~Z,a~z)下線字符“_”其它構(gòu)成特殊符號的字符集基本詞匯字面形式常量特殊符號(運(yùn)算符)關(guān)鍵字標(biāo)識符(命名數(shù)據(jù)對象)2025/11/2154關(guān)鍵詞(Keyword)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticstructswitchtypedefunionunsignedvoidvolatilewhile2025/11/2155關(guān)鍵詞(續(xù))下面幾個(gè)雖不屬于關(guān)鍵字,但建議把它們看作關(guān)鍵字,不要在程序中隨便使用。它們用在C程序的預(yù)處理命令行中defineundefincludeifdefifndefendiflineelif2025/11/2156標(biāo)識符(Identifier)作用:用來標(biāo)識變量、常量、類型、函數(shù)、語句等程序?qū)ο螅珻語言用標(biāo)識符給它們命名命名規(guī)則:在C語言中,一個(gè)合理的標(biāo)識符由英文字母或下線符開頭,后跟由字母、下線符、數(shù)字符組成的字符序列。一般以下線符開頭的標(biāo)識符作內(nèi)部使用2025/11/2157標(biāo)識符(續(xù))命名要求:標(biāo)識符作為程序成分對象的名稱,為了便于聯(lián)想和記憶,建議使用能反映該對象意義的標(biāo)識符限制:注意不同C系統(tǒng)對標(biāo)識符的有效字符個(gè)數(shù)有不同的規(guī)定。對于限制標(biāo)識符8個(gè)有效字符的系統(tǒng)來說,兩個(gè)超過8個(gè)字符的不同標(biāo)識符,當(dāng)前8個(gè)字符依次相同時(shí),系統(tǒng)就認(rèn)為它們是同一個(gè)標(biāo)識符2025/11/2158C語言數(shù)據(jù)類型三種數(shù)據(jù)類型基本數(shù)據(jù)類型、指針類型、復(fù)合數(shù)據(jù)類型基本數(shù)據(jù)類型:三種整型(short,int,long)實(shí)型(float,double,longdouble)字符型(char)2025/11/2159C語言數(shù)據(jù)類型(續(xù))復(fù)合數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉指針類型指針類型直接賦予數(shù)據(jù)對象在內(nèi)存中的地址2025/11/2160常量(Constant)在程序運(yùn)行過程中,其值不能改變或不允許改變的數(shù)據(jù)對象常量按值的表示形式區(qū)分它的類型整型常量:15浮點(diǎn)型常量:5.0字符型常量:’a’指針常量:NULL字符串常量:”ABC”2025/11/2161常量(續(xù))可用宏定義給常量命名其一般形式是
#define標(biāo)識符字符列如:#definePI3.141592025/11/2162變量(Variable)在程序運(yùn)行過程中,其值可以改變的數(shù)據(jù)對象變量在內(nèi)存中占據(jù)一定的存貯單元,存放變量的值與變量有關(guān)的概念有:變量名;變量數(shù)據(jù)類型;變量在程序中的有效作用范圍;變量在程序執(zhí)行期間的存在時(shí)間;等等2025/11/2163變量(續(xù))程序通過變量定義引入變量,變量定義的一般形式:
類型變量名列表;其中,變量名列表由一個(gè)或多個(gè)變量名組成。例如:inti,j,sum;/*定義三個(gè)int型變量*/intindex=100,big_int=100002025/11/21641.3.4C程序開發(fā)環(huán)境基礎(chǔ)知識C程序從開發(fā)到運(yùn)行大致要經(jīng)歷六個(gè)階段編輯(Edit)預(yù)處理(Pre-process)編繹(Compile)連接(Link)加載(Load)執(zhí)行(Execute)2025/11/2165編輯、預(yù)處理與編譯編輯程序員用系統(tǒng)環(huán)境提供的編輯器編輯源程序,產(chǎn)生一個(gè)源程序文件.c或.h
預(yù)處理編譯前,C編繹器先自動(dòng)調(diào)用預(yù)處理程序,對源程序文件作文字轉(zhuǎn)換,產(chǎn)生一個(gè)新的內(nèi)部程序代碼編譯若編譯過程中發(fā)現(xiàn)程序有錯(cuò)誤,則輸出錯(cuò)誤的詳細(xì)信息;對正確的源程序產(chǎn)生機(jī)器語言程序,稱為源程序的目的代碼2025/11/2166連接、加載與執(zhí)行連接連接程序?qū)⒛康拇a和一些庫函數(shù)的目的代碼連接起來,產(chǎn)生計(jì)算機(jī)可直接執(zhí)行的程序映象文件靜態(tài)連接vs.動(dòng)態(tài)連接加載將要執(zhí)行的程序裝入內(nèi)存執(zhí)行裝入內(nèi)存的程序在計(jì)算機(jī)的操作系統(tǒng)控制下執(zhí)行DevC++Dev-C++(或者叫做Dev-Cpp)是Windows環(huán)境下的一個(gè)輕量級C/C++集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE,用于提供程序開發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具)。自由軟件,遵守GPL許可協(xié)議分發(fā)源代碼。集合了功能強(qiáng)大的源碼編輯器、MingW64/TDM-GCC編譯器、GDB調(diào)試器和AStyle格式整理器等眾多自由軟件適合于在教學(xué)中供C/C++語言初學(xué)者使用非商業(yè)級普通開發(fā)者使用DevC++下載C語言、C++語言的編譯器有很多,初學(xué)者可以使用簡單的BloodshedDev-C++,它是一個(gè)跨平臺(tái)的編譯器,可以到網(wǎng)上下載然后安裝。DevC++5.11簡體中文版下載地址:官方下載:/projects/orwelldevcpp/百度網(wǎng)盤:/s/1mhHDjO8
提取密碼:mken
DevC++安裝DevC++下載完成后會(huì)得到一個(gè)安裝包(.exe程序),雙擊該文件即可開始安裝。1)首先加載安裝程序(只需要幾十秒)2)開始安裝:DevC++支持多國語言,包括簡體中文,但是要等到安裝完成以后才能設(shè)置,在安裝過程中不能使用簡體中文,所以這里我們選擇英文(English)。3)同意DevC++的各項(xiàng)條款4)選擇要安裝的組件:選擇“Full”,全部安裝。5)選擇安裝路徑:可以將DevC++安裝在任意位置,但是路徑中最好不要包含中文。6)等待安裝7)安裝完成配置DevC++首次使用DevC++還需要簡單的配置,包括設(shè)置語言、字體、和主題風(fēng)格。1)第一次啟動(dòng)DevC++后,提示選擇語言(這里選擇簡體中文)。2)選擇字體和主題風(fēng)格(這里保持默認(rèn))。3)提示設(shè)置成功。點(diǎn)擊“OK”按鈕,進(jìn)入DevC++,就可以編寫代碼了。Dev-C++操作示范1)運(yùn)行Dev-C++,單擊工具欄上新建按鈕,新建一個(gè)源程序。2)輸入C語言源代碼,如下圖所示,每個(gè)單詞和字符會(huì)呈現(xiàn)不同的顏色。一種顏色代表一個(gè)類別的符號,這樣閱讀起來十分清晰。3)單擊工具欄中保存按鈕(或快捷鍵Ctrl+S),在對話框中輸入文名1-1,然后保存。4)單擊編譯(或快捷鍵F9),可以看到屏幕下方出現(xiàn):表示編譯成功了,也有些版本會(huì)出現(xiàn)一個(gè)CompileProgress,里面的Status顯示為Done,表示編譯成功了。5)單擊工具欄的運(yùn)行按鈕(或快捷鍵F10),程序就運(yùn)行了,這里你需要從鍵盤輸入“1”,再輸入一個(gè)空格,再輸入“2”,再按回車Enter鍵,就可以看到上面的結(jié)果3了。1.4C程序設(shè)計(jì)基礎(chǔ)知識存儲(chǔ)和二進(jìn)制算法+數(shù)據(jù)結(jié)構(gòu)=程序編譯操作系統(tǒng)存儲(chǔ)和二進(jìn)制信息處理的基本單位:“比特”其英文為“bit”,它是binarydigit的縮寫,中文譯為“二進(jìn)制數(shù)字”或“二進(jìn)位”,一般簡稱為“位”,用小寫字母“b”表示比特只有兩種狀態(tài):0或1,它們不分大小,是組成數(shù)字信息的最小單位。2025/11/2183存儲(chǔ)的有關(guān)術(shù)語8位二進(jìn)制數(shù)表示一個(gè)字節(jié)英文用Byte表示,簡寫為B字節(jié)是計(jì)算機(jī)中用來表示存儲(chǔ)空間大小的最基本的容量單位千字節(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é))2025/11/2184二進(jìn)制數(shù)十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù),采用除以2取余的方法,例如,求14的二進(jìn)制數(shù),14
2=7余0;7
2=3余1;3
2=1余1;1
2=0余1;將余數(shù)從最后的1開始,從后向前倒序?qū)?,就?4的二進(jìn)制數(shù):1110。二進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù),從右往左依次用二進(jìn)制位上的數(shù)字乘以2的n次冪的和(n大于等于0),例如,二進(jìn)制數(shù)1110轉(zhuǎn)十進(jì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年圖靈獎(jiǎng)獲得者NiklausWirth提出的著名公式概括了程序設(shè)計(jì)的知識體系,也是計(jì)算機(jī)學(xué)科知識體系的核心部分。2025/11/2186NiklausWirth(1934~2024)1959年獲ETH(蘇黎世聯(lián)邦理工學(xué)院,Eidgen?ssischeTechnisch
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年黑龍江生態(tài)工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案詳解
- 2026年齊齊哈爾高等師范??茖W(xué)校單招職業(yè)傾向性測試題庫及參考答案詳解
- 2026年安徽審計(jì)職業(yè)學(xué)院單招職業(yè)傾向性考試題庫附答案詳解
- 2026年河北旅游職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及參考答案詳解
- 2026年山西工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫含答案詳解
- 2026年新疆輕工職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫參考答案詳解
- 2026年黑龍江林業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案詳解一套
- 2026年陜西省建筑工程總公司職工大學(xué)單招職業(yè)技能測試題庫附答案詳解
- 2026年云南省曲靖市單招職業(yè)適應(yīng)性測試題庫及參考答案詳解1套
- 2026年遂寧能源職業(yè)學(xué)院單招綜合素質(zhì)考試題庫附答案詳解
- 2025年10月注冊審核員《職業(yè)健康安全管理體系基礎(chǔ)》真題及答案
- 高效企業(yè)員工激勵(lì)演講稿范本
- 2026中國人民銀行直屬事業(yè)單位招聘60人筆試備考題庫附答案解析(奪冠)
- 產(chǎn)品質(zhì)量檢驗(yàn)標(biāo)準(zhǔn)化操作規(guī)程及模板
- 陰陽五行與人體課件
- 發(fā)展心理學(xué)-終結(jié)性考核-國開(GS)-參考資料
- 2025年秋季學(xué)期國家開放大學(xué)《憲法學(xué)》形考任務(wù)1-4答案
- 員工喝酒合同協(xié)議書
- 2025陜西三秦環(huán)??萍脊煞萦邢薰窘?jīng)理層成員市場化選聘工作5人考試筆試參考題庫附答案解析
- 2025年采購人員個(gè)人年終總結(jié)6篇
- 白蛋白肽的課件
評論
0/150
提交評論