青少年信息學(xué)奧林匹克競(jìng)賽c教程_第1頁(yè)
青少年信息學(xué)奧林匹克競(jìng)賽c教程_第2頁(yè)
青少年信息學(xué)奧林匹克競(jìng)賽c教程_第3頁(yè)
青少年信息學(xué)奧林匹克競(jìng)賽c教程_第4頁(yè)
青少年信息學(xué)奧林匹克競(jìng)賽c教程_第5頁(yè)
已閱讀5頁(yè),還剩481頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE-PAGE482-目錄青少年信息學(xué)奧林匹克競(jìng)賽情況簡(jiǎn)介 5第一章計(jì)算機(jī)基礎(chǔ)知識(shí) 71.1計(jì)算機(jī)的基本常識(shí) 71.1.1計(jì)算機(jī)的產(chǎn)生與發(fā)展 71.1.2計(jì)算機(jī)系統(tǒng)及工作原理 71.1.3計(jì)算機(jī)中有關(guān)數(shù)及編碼的知識(shí) 81.1.4原碼、反碼與補(bǔ)碼 101.1.5邏輯運(yùn)算 101.2操作系統(tǒng) 111.2.1DOS(DiskOperatingSystem)的組成 111.2.2DOS的文件和目錄 111.2.3DOS命令 121.2.4Windows簡(jiǎn)介 121.3計(jì)算機(jī)網(wǎng)絡(luò)常識(shí) 131.3.1網(wǎng)絡(luò)基礎(chǔ)知識(shí) 131.3.2Internet簡(jiǎn)介 141.4計(jì)算機(jī)信息安全基礎(chǔ)知識(shí) 161.4.1計(jì)算機(jī)的網(wǎng)絡(luò)安全 161.4.2計(jì)算機(jī)病毒 171.4.3病毒的分類(lèi) 17第2章C++編程簡(jiǎn)介 192.1機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言 192.2C語(yǔ)言與C++的歷史 202.3C++標(biāo)準(zhǔn)庫(kù) 202.4結(jié)構(gòu)化編程 212.5簡(jiǎn)單程序 222.6簡(jiǎn)單程序:兩個(gè)整數(shù)相加 252.7算術(shù)運(yùn)算 272.8判斷:相等與關(guān)系運(yùn)算符 292.9新型頭文件與名字空間 31第3章C++輸入/輸出流 333.1簡(jiǎn)介 333.2流 333.2.1iostream類(lèi)庫(kù)的頭文件 343.2.2輸入/輸出流類(lèi)和對(duì)象 343.3輸出流 353.3.1流插入運(yùn)算符 353.3.2連續(xù)使用流插入/流讀取運(yùn)算符 373.3.3輸出char*類(lèi)型的變量 373.3.4用成員函數(shù)put輸出字符和put函數(shù)的連續(xù)調(diào) 383.4輸入流 393.4.1流讀取運(yùn)算符 393.4.2成員函數(shù)get和getline 413.5成員函數(shù)read、gcount和write的無(wú)格式輸入/輸出 443.6流操縱算子 453.6.1整數(shù)流的基數(shù):流操縱算子dec、oct、hex和setbase 453.6.2設(shè)置浮點(diǎn)數(shù)精度(precision、setprecision) 463.6.3設(shè)置域?qū)?setw、width) 473.6.4用戶(hù)自定義的流操縱算子 483.7流格式狀態(tài) 493.7.1格式狀態(tài)標(biāo)志 503.7.2尾數(shù)零和十進(jìn)制小數(shù)點(diǎn)(ios::showpoint) 503.7.3對(duì)齊(ios::left、ios::right、ios::internal) 513.7.4設(shè)置填充字符(fill、setfill) 533.7.5整數(shù)流的基數(shù):(ios::dec、ios::oct、ios::hex、ios::showbase) 543.7.6浮點(diǎn)數(shù)和科學(xué)記數(shù)法(ios::scientific、ios::fixed) 553.7.7大/小寫(xiě)控制(ios::upercase) 563.7.8設(shè)置及清除格式標(biāo)志(flags、setiosflags、resetosflags) 573.8流錯(cuò)誤狀態(tài) 58第4章文件處理 614.1簡(jiǎn)介 614.2文件和流 614.3建立并寫(xiě)入文件 614.4讀取文件中的數(shù)據(jù) 654.5更新訪問(wèn)文件 67第5章C++的字符串流 685.1流的繼承關(guān)系 685.2字串流的輸入操作 685.3字串流的輸出操作 695.4字串流在數(shù)據(jù)類(lèi)型轉(zhuǎn)換中的應(yīng)用 705.5輸入/輸出的狀態(tài)標(biāo)志 71第6章控制結(jié)構(gòu) 746.1簡(jiǎn)介 746.2算法 746.3控制結(jié)構(gòu) 746.4if選擇結(jié)構(gòu) 756.5if/else選擇結(jié)構(gòu) 766.6while重復(fù)結(jié)構(gòu) 786.7構(gòu)造算法:實(shí)例研究1(計(jì)數(shù)器控制重復(fù)) 786.8構(gòu)造算法與自上而下逐步完善:實(shí)例研究2(標(biāo)記控制重復(fù)) 806.9構(gòu)造算法與自上而下逐步完善:實(shí)例研究3(嵌套控制結(jié)構(gòu)) 856.10賦值運(yùn)算符 886.11自增和自減運(yùn)算符 886.12計(jì)數(shù)器控制循環(huán)的要點(diǎn) 916.13for重復(fù)結(jié)構(gòu) 926.14for結(jié)構(gòu)使用舉例 946.15switch多項(xiàng)選擇結(jié)構(gòu) 976.16do/while重復(fù)結(jié)構(gòu) 1016.17break和continue語(yǔ)句 1026.18邏輯運(yùn)算符 1046.19混淆相等(==)與賦值(=)運(yùn)算符 1056.20結(jié)構(gòu)化編程小結(jié) 106第7章函數(shù) 1087.1簡(jiǎn)介 1087.2數(shù)學(xué)函數(shù)庫(kù) 1087.3函數(shù) 1097.4函數(shù)定義 1097.5頭文件 1127.6作用域規(guī)則 1137.7遞歸 1167.8使用遞歸舉例,F(xiàn)ibonacci數(shù)列 1187.9遞歸與迭代 1207.10帶空參數(shù)表的函數(shù) 1217.11內(nèi)聯(lián)函數(shù) 1227.12函數(shù)重載 123第8章數(shù)組 1258.1簡(jiǎn)介 1258.2數(shù)組 1258.3聲明數(shù)組 1268.4使用數(shù)組的舉例 1268.5將數(shù)組傳遞給函數(shù) 1378.6排序數(shù)組 1418.7查找數(shù)組:線性查找與折半查找 1428.8多維數(shù)組 147第9章指針與字符串 1539.1簡(jiǎn)介 1539.2指針變量的聲明與初始化 1539.3指針運(yùn)算符 1549.4按引用調(diào)用函數(shù) 1569.5指針與常量限定符 1589.6按引用調(diào)用的冒泡排序 1639.7指針表達(dá)式與指針?biāo)惴?1679.8指針與數(shù)組的關(guān)系 1699.9指針數(shù)組 1739.10函數(shù)指針 1739.11字符與字符串處理簡(jiǎn)介 1779.11.1字符與字符串基礎(chǔ) 1779.11.2字符串處理庫(kù)的字符串操作函數(shù) 179第10章信息學(xué)奧賽中的常用算法 18510.1算法簡(jiǎn)介 18510.2枚舉算法 18710.3回溯算法 19110.4遞歸算法 19310.5遞推算法 19610.6分治算法 20010.7貪心算法 20210.8搜索算法一(深度優(yōu)先) 20510.9搜索算法二(廣度優(yōu)先) 20910.10動(dòng)態(tài)規(guī)劃法 21210.11高精度計(jì)算 215附錄 228ASCII表 228

青少年信息學(xué)奧林匹克競(jìng)賽情況簡(jiǎn)介

信息學(xué)奧林匹克競(jìng)賽是一項(xiàng)旨在推動(dòng)計(jì)算機(jī)普及的學(xué)科競(jìng)賽活動(dòng),重在培養(yǎng)學(xué)生能力,使得有潛質(zhì)有才華的學(xué)生在競(jìng)賽活動(dòng)中鍛煉和發(fā)展。近年來(lái),信息學(xué)競(jìng)賽活動(dòng)組織逐步趨于規(guī)范和完善,基本上形成了“地級(jí)市——省(直轄市)——全國(guó)——國(guó)際”四級(jí)相互接軌的競(jìng)賽網(wǎng)絡(luò)?,F(xiàn)把有關(guān)賽事情況簡(jiǎn)介如下:全國(guó)青少年信息學(xué)(計(jì)算機(jī))奧林匹克分區(qū)聯(lián)賽:

在舉辦1995年NOI活動(dòng)之前,為了擴(kuò)大普及的面,并考慮到多數(shù)省、直轄市、自治區(qū)已經(jīng)開(kāi)展了多年省級(jí)競(jìng)賽,舉辦了首屆全國(guó)青少年信息學(xué)(計(jì)算機(jī))奧林匹克分區(qū)聯(lián)賽??紤]到不同年級(jí)學(xué)生的知識(shí)層次,也為了鼓勵(lì)更多的學(xué)生積極參與,競(jìng)賽設(shè)提高組、普及組,并分初、復(fù)賽進(jìn)行,這樣可以形成一個(gè)梯隊(duì),確保每年的競(jìng)賽活動(dòng)有比較廣泛扎實(shí)的基礎(chǔ)。從1995年起,至2001年共舉辦了七屆全國(guó)青少年信息學(xué)奧林匹克分區(qū)聯(lián)賽,每年舉辦一次(下半年十月左右),有選手個(gè)人獎(jiǎng)項(xiàng)(省、國(guó)家級(jí))、選手等級(jí)證書(shū)、優(yōu)秀參賽學(xué)校獎(jiǎng)項(xiàng)。安徽省青少年信息學(xué)(計(jì)算機(jī))奧林匹克復(fù)決賽(簡(jiǎn)稱(chēng)AHOI):

省級(jí)信息學(xué)奧賽是一個(gè)水平較高的、有較大影響力的學(xué)科競(jìng)賽。由各市組織代表隊(duì)參賽,參賽名額實(shí)行動(dòng)態(tài)分配制度,每年舉辦一次(上半年五月左右)。從1984年起安徽省奧林匹克競(jìng)賽活動(dòng)得到了蓬勃發(fā)展。獎(jiǎng)項(xiàng)有個(gè)人一、二、三等獎(jiǎng),女選手第一、二、三名,獎(jiǎng)勵(lì)學(xué)校團(tuán)體總分1-8名、市團(tuán)體總分1-8名。全國(guó)青少年信息學(xué)(計(jì)算機(jī))奧林匹克競(jìng)賽(簡(jiǎn)稱(chēng)NOI):

由中國(guó)算機(jī)學(xué)會(huì)主辦的、并與國(guó)際信息學(xué)奧林匹克接軌的一項(xiàng)全國(guó)性青少年學(xué)科競(jìng)賽活動(dòng)。1984年舉辦首屆全國(guó)計(jì)算機(jī)競(jìng)賽。由各省市組織參賽,每年舉辦一次。獎(jiǎng)項(xiàng)有個(gè)人一、二、三等獎(jiǎng),女選手第一、二、三名,各省隊(duì)團(tuán)體總分名次排隊(duì)。國(guó)際青少年信息學(xué)(計(jì)算機(jī))奧林匹克競(jìng)賽(簡(jiǎn)稱(chēng)IOI):

每年舉辦一次,由各參賽國(guó)家組隊(duì)參賽。全國(guó)青少年信息學(xué)(計(jì)算機(jī))奧林匹克分區(qū)聯(lián)賽競(jìng)賽大綱一、初賽內(nèi)容與要求:(#表示普及組不涉及,以下同)計(jì)基算本機(jī)常的識(shí)*誕生與發(fā)展*特點(diǎn)*在現(xiàn)代社會(huì)中的應(yīng)用*計(jì)算機(jī)系統(tǒng)的基本組成*計(jì)算機(jī)的工作原理#*計(jì)算機(jī)中的數(shù)的表示*計(jì)算機(jī)信息安全基礎(chǔ)知識(shí)*計(jì)算機(jī)網(wǎng)絡(luò)計(jì)基算本機(jī)操的作*MSDOS與Windows的使用基礎(chǔ)*常用輸入/輸出設(shè)備的種類(lèi)、功能、使用*漢字輸入/輸出方法*常用計(jì)算機(jī)屏示信息程序設(shè)計(jì)基本知識(shí)程序的表示*自然語(yǔ)言的描述*PASCAL或BASIC語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的類(lèi)型*簡(jiǎn)單數(shù)據(jù)的類(lèi)型*構(gòu)造類(lèi)型:數(shù)組、字符串*了解基本數(shù)據(jù)結(jié)構(gòu)(線性表、隊(duì)列與棧)程序設(shè)計(jì)*結(jié)構(gòu)化程序的基本概念*閱讀理解程序的基本能力*具有完成下列過(guò)程的能力:現(xiàn)實(shí)世界(指知識(shí)范疇的問(wèn)題)—>信息世界(表達(dá)解法)—>計(jì)算機(jī)世界(將解法用計(jì)算機(jī)能實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)和算法描述出來(lái))基本算法處理*簡(jiǎn)單搜索

*字串處理*排序

*查找*統(tǒng)計(jì)

*分類(lèi)

*合并*簡(jiǎn)單的回溯算法*簡(jiǎn)單的遞歸算法二、復(fù)賽內(nèi)容與要求:在初賽的內(nèi)容上增加以下內(nèi)容(2008年修改稿):計(jì)算機(jī)軟件*操作系統(tǒng)的使用知識(shí)*編程語(yǔ)言的使用數(shù)據(jù)結(jié)構(gòu)*結(jié)構(gòu)類(lèi)型中的記錄類(lèi)型*指針類(lèi)型*文件(提高組必須會(huì)使用文本文件輸入)*鏈表*樹(shù)*圖#程序設(shè)計(jì)*程序設(shè)計(jì)能力*設(shè)計(jì)測(cè)試數(shù)據(jù)的能力*運(yùn)行時(shí)間和占用空間的估算能力#算法處理*排列組合的應(yīng)用*進(jìn)一步加深回溯算法、遞歸算法*分治法*搜索算法:寬度、深度優(yōu)先算法*表達(dá)式處理:計(jì)算、展開(kāi)、化簡(jiǎn)等#*動(dòng)態(tài)規(guī)劃#三、初賽試題類(lèi)型:注:試題語(yǔ)言?xún)烧哌x一(程序設(shè)計(jì)語(yǔ)言:FREEPASCAL、C、C++)*判斷*填空*完善程序*讀程序?qū)戇\(yùn)行結(jié)果*問(wèn)答四、推薦讀物:*分區(qū)聯(lián)賽輔導(dǎo)叢書(shū)*學(xué)生計(jì)算機(jī)世界報(bào)及少年電世界雜志第一章計(jì)算機(jī)基礎(chǔ)知識(shí)1.1計(jì)算機(jī)的基本常識(shí)1.1.1計(jì)算機(jī)的產(chǎn)生與發(fā)展計(jì)算機(jī)的產(chǎn)生是20世紀(jì)最重要的科學(xué)技術(shù)大事件之一。世界上的第一臺(tái)計(jì)算機(jī)(ENIAC)于1946年誕生在美國(guó)賓夕法尼亞大學(xué),到目前為止,計(jì)算機(jī)的發(fā)展大致經(jīng)歷了四代:①

第一代電子管計(jì)算機(jī),始于1946年,結(jié)構(gòu)上以CPU為中心,使用計(jì)算機(jī)語(yǔ)言,速度慢,存儲(chǔ)量小,主要用于數(shù)值計(jì)算;②

第二代晶體管計(jì)算機(jī),始于1958年,結(jié)構(gòu)上以存儲(chǔ)器為中心,使用高級(jí)語(yǔ)言,應(yīng)用范圍擴(kuò)大到數(shù)據(jù)處理和工業(yè)控制;③

第三代中小規(guī)模集成電路計(jì)算機(jī),始于1964年,結(jié)構(gòu)上仍以存儲(chǔ)器為中心,增加了多種外部設(shè)備,軟件得到了一定的發(fā)展,文字圖象處理功能加強(qiáng);④

第四代大規(guī)模和超大規(guī)模集成電路計(jì)算機(jī),始于1971年,應(yīng)用更廣泛,很多核心部件可集成在一個(gè)或多個(gè)芯片上,從而出現(xiàn)了微型計(jì)算機(jī)。我國(guó)從1956年開(kāi)始電子計(jì)算機(jī)的科研和教學(xué)工作,1983年研制成功1億/秒運(yùn)算速度的“銀河”巨型計(jì)算機(jī),1992年11月研制成功10億/秒運(yùn)算速度的“銀河II”巨型計(jì)算機(jī),1997年研制了每秒130億運(yùn)算速度的“銀河III”巨型計(jì)算機(jī)。目前計(jì)算機(jī)的發(fā)展向微型化和巨型化、多媒體化和網(wǎng)絡(luò)化方向發(fā)展。計(jì)算機(jī)的通信產(chǎn)業(yè)已經(jīng)成為新型的高科技產(chǎn)業(yè)。計(jì)算機(jī)網(wǎng)絡(luò)的出現(xiàn),改變了人們的工作方式、學(xué)習(xí)方式、思維方式和生活方式。

1.1.2計(jì)算機(jī)系統(tǒng)及工作原理1.計(jì)算機(jī)的系統(tǒng)組成計(jì)算機(jī)系統(tǒng)由軟件和硬件兩部分組成。硬件即構(gòu)成計(jì)算機(jī)的電子元器件;軟件即程序和有關(guān)文檔資料。(1)

計(jì)算機(jī)的主要硬件輸入設(shè)備:鍵盤(pán)、鼠標(biāo)、掃描儀等。輸出設(shè)備:顯示器、打印機(jī)、繪圖儀等。中央處理器(CPU):包括控制器和運(yùn)算器運(yùn)算器,可以進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算;控制器是計(jì)算機(jī)的指揮系統(tǒng),它的操作過(guò)程是取指令——分析指令——執(zhí)行指令。存儲(chǔ)器:具有記憶功能的物理器件,用于存儲(chǔ)信息。存儲(chǔ)器分為內(nèi)存和外存

①內(nèi)存是半導(dǎo)體存儲(chǔ)器(主存):它分為只讀存儲(chǔ)器(ROM)和隨機(jī)存儲(chǔ)器(RAM)和高速緩沖存儲(chǔ)器(Cache);

ROM:只能讀,不能用普通方法寫(xiě)入,通常由廠家生產(chǎn)時(shí)寫(xiě)入,寫(xiě)入后數(shù)據(jù)不容易丟失,也可以用特殊方法(如紫外線擦除(EPROM)或電擦除(EEPROM_)存儲(chǔ)器);

RAM:可讀可寫(xiě),斷電后內(nèi)容全部丟失;

Cache:因?yàn)镃PU讀寫(xiě)RAM的時(shí)間需要等待,為了減少等待時(shí)間,在RAM和CPU間需要設(shè)置高速緩存Cache,斷電后其內(nèi)容丟失。

②外存:磁性存儲(chǔ)器——軟盤(pán)和硬盤(pán);光電存儲(chǔ)器——光盤(pán),它們可以作為永久存器;

③存儲(chǔ)器的兩個(gè)重要技術(shù)指標(biāo):存取速度和存儲(chǔ)容量。內(nèi)存的存取速度最快(與CPU速度相匹配),軟盤(pán)存取速度最慢。存儲(chǔ)容量是指存儲(chǔ)的信息量,它用字節(jié)(Byte)作為基本單位,1字節(jié)用8位二進(jìn)制數(shù)表示,1KB=1024B,1MB=1024KB,lGB=1024MB(2)計(jì)算機(jī)的軟件計(jì)算機(jī)的軟件主要分為系統(tǒng)軟件和應(yīng)用軟件兩類(lèi):

①系統(tǒng)軟件:為了使用和管理計(jì)算機(jī)的軟件,主要有操作系統(tǒng)軟件如,WINDOWS95/98/2000/NT4.0、DOS6.0、UNIX等;WINDOWS95/98/2000/NT4.0是多任務(wù)可視化圖形界面,而DOS是字符命令形式的單任務(wù)的操作系統(tǒng)。

②應(yīng)用軟件:為了某個(gè)應(yīng)用目的而編寫(xiě)的軟件,主要有輔助教學(xué)軟件(CAI)、輔助設(shè)計(jì)軟件(CAD)、文字處理軟件、工具軟件以及其他的應(yīng)用軟件。2.計(jì)算機(jī)的工作原理到目前為止,電子計(jì)算機(jī)的工作原理均采用馮.若依曼的存儲(chǔ)程序方式,即把程序存儲(chǔ)在計(jì)算機(jī)內(nèi),由計(jì)算機(jī)自動(dòng)存取指令(計(jì)算機(jī)可執(zhí)行的命令=操作碼+操作數(shù))并執(zhí)行它。工作原理圖如下:1.1.3計(jì)算機(jī)中有關(guān)數(shù)及編碼的知識(shí)1.計(jì)算機(jī)是智能化的電器設(shè)備計(jì)算機(jī)就其本身來(lái)說(shuō)是一個(gè)電器設(shè)備,為了能夠快速存儲(chǔ)、處理、傳遞信息,其內(nèi)部采用了大量的電子元件,在這些電子元件中,電路的通和斷、電壓高低,這兩種狀態(tài)最容易實(shí)現(xiàn),也最穩(wěn)定、也最容易實(shí)現(xiàn)對(duì)電路本身的控制。我們將計(jì)算機(jī)所能表示這樣的狀態(tài),用0,1來(lái)表示、即用二進(jìn)制數(shù)表示計(jì)算機(jī)內(nèi)部的所有運(yùn)算和操作。2.二進(jìn)制數(shù)的運(yùn)算法則二進(jìn)制數(shù)運(yùn)算非常簡(jiǎn)單,計(jì)算機(jī)很容易實(shí)現(xiàn),其主要法則是:0+0=00+1=11+0=11+1=0

0*0=00*1=01*0=01*1=1由于運(yùn)算簡(jiǎn)單,電器元件容易實(shí)現(xiàn),所以計(jì)算機(jī)內(nèi)部都用二進(jìn)制編碼進(jìn)行數(shù)據(jù)的傳送和計(jì)算。3.十進(jìn)制與二進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)之間的相互轉(zhuǎn)換(1)數(shù)的進(jìn)制與基數(shù)計(jì)數(shù)的進(jìn)制不同,則它們的基數(shù)也不相同,如表1-1所示。進(jìn)制基數(shù)特點(diǎn)二進(jìn)制0,1逢二進(jìn)一八進(jìn)制0,1,2,3,4,5,6,7逢八進(jìn)一十六進(jìn)制0,1,2,...,9,A,B,C,D,E,F逢十六進(jìn)一(2)數(shù)的權(quán)不同進(jìn)制的數(shù),基數(shù)不同,每位上代表的值的大小(權(quán))也不相同。如:(219)10=2*102+1*101+9*100

(11010)2=1*24+1*23+0*22+1*21+1*20

(273)8=2*82+7*81+3*80

(27AF)16=2*163+7*162+10*161+15*160

(3)十進(jìn)制數(shù)轉(zhuǎn)換任意進(jìn)制

1)將十進(jìn)制整數(shù)除以所定的進(jìn)制數(shù),取余逆序。

(39)10=(100111)2

(245)10=(365)8

2)將十進(jìn)制小數(shù)的小數(shù)部分乘以進(jìn)制數(shù)取整,作為轉(zhuǎn)換后的小數(shù)部分,直到為零或精確到小數(shù)點(diǎn)后幾位。如:(0.35)10=(0.01011)2

(0.125)10=(0.001)2(4)任意進(jìn)制的數(shù)轉(zhuǎn)換十進(jìn)制按權(quán)值展開(kāi):如:(219)10=2*102+1*101+9*100

(11010)2=1*24+1*23+0*22+1*21+1*20=26

(273)8=2*82+7*81+3*80=187

(7AF)16=7*162+10*161+15*160=18674.定點(diǎn)數(shù)與浮點(diǎn)數(shù)定點(diǎn)數(shù)是指數(shù)據(jù)中的小數(shù)點(diǎn)位置固定不變。由于它受到字長(zhǎng)范圍的限制,所能表示的數(shù)的范圍有限,計(jì)算結(jié)果容易溢出。浮點(diǎn)數(shù)的形式可寫(xiě)成:N=M*2E(其中M代表尾數(shù),E代表階碼)其形式如下:階碼尾數(shù)(包括符號(hào)位)5.ASCII編碼由于計(jì)算機(jī)是電器設(shè)備,計(jì)算機(jī)內(nèi)部用二進(jìn)制數(shù),這樣對(duì)于從外部輸入給計(jì)算機(jī)的所有信息必須用二進(jìn)制數(shù)表示,并且對(duì)于各種命令、字符等都需要轉(zhuǎn)換二進(jìn)制數(shù),這樣就牽涉到信息符號(hào)轉(zhuǎn)換成二進(jìn)制數(shù)所采用的編碼的問(wèn)題,國(guó)際上統(tǒng)一用美國(guó)標(biāo)準(zhǔn)信息編碼(ASCII)它可用7位二進(jìn)制數(shù)表示,存儲(chǔ)時(shí)用一個(gè)字節(jié),它的最高位為0。因此基本的ASCII字符集有128個(gè)如:0-9:48-57:00110000-...A-Z:65-90:01000001-...a-z:97-122:01100000-...6.漢字編碼與漢字輸入法(1)機(jī)內(nèi)碼ASCII碼不能表示漢字,因此要有漢字信息交換碼,我國(guó)國(guó)家標(biāo)準(zhǔn)是gb2312,它也被稱(chēng)作國(guó)際碼。它由兩個(gè)字節(jié)組成,兩個(gè)字節(jié)的最高位都為1。gb2312共收納6763個(gè)漢字,其中,一級(jí)漢字(常用字)3755個(gè)按漢字拼音字母順序排列,二級(jí)漢字3008個(gè)按部首筆畫(huà)次序排列。(2)漢字輸入碼(外碼)目前,漢字輸入法主要有鍵盤(pán)輸入、文字識(shí)別和語(yǔ)音識(shí)別。鍵盤(pán)輸入法是當(dāng)前漢字輸入的主要方法。它大體可以分為:

流水碼:如區(qū)位碼、電報(bào)碼、通信密碼,優(yōu)點(diǎn)重碼律少,缺點(diǎn)難于記憶;

音碼:以漢語(yǔ)拼音為基準(zhǔn)輸入漢字,優(yōu)點(diǎn)是容易掌握,但重碼律高;

形碼:根據(jù)漢字的字型進(jìn)行編碼,優(yōu)點(diǎn)重碼少,但不容易掌握;

音形碼:將音碼和形碼結(jié)合起來(lái),能減少重碼律同時(shí)提高漢字輸入速度。(3)漢字字模供計(jì)算機(jī)輸出漢字(顯示和打印)用的二進(jìn)制信息叫漢字字形信息也稱(chēng)字模。通用漢字字模點(diǎn)陣規(guī)格有16*16,24*24,32*32,48*48,64*64,每個(gè)點(diǎn)在存儲(chǔ)器中用一個(gè)二進(jìn)制位((bit)存儲(chǔ),如一個(gè)16*16點(diǎn)陣漢字需要32個(gè)字節(jié)的存儲(chǔ)空間。1.1.4原碼、反碼與補(bǔ)碼在計(jì)算機(jī)中,數(shù)據(jù)是以補(bǔ)碼的形式存儲(chǔ)的:在n位的機(jī)器數(shù)中,最高位為符號(hào)位,該位為零表示為正,為1表示為負(fù);其余n-1位為數(shù)值位,各位的值可為0或1。當(dāng)真值為正時(shí):原碼、反碼、補(bǔ)碼數(shù)值位完全相同;當(dāng)真值為負(fù)時(shí):

原碼的數(shù)值位保持原樣,

反碼的數(shù)值位是原碼數(shù)值位的各位取反,

補(bǔ)碼則是反碼的最低位加一。注意符號(hào)位不變。

如:若機(jī)器數(shù)是16位:十進(jìn)制數(shù)17的原碼、反碼與補(bǔ)碼均為:

0000000000010001十進(jìn)制數(shù)-17的原碼、反碼與補(bǔ)碼分別為:1000000000010001、1111111111101110、11111111111011111.1.5邏輯運(yùn)算1.邏輯運(yùn)算

邏輯與:同真則真

邏輯或:有真就真

邏輯非:你真我假

邏輯異或:不同則真2.按位運(yùn)算

按位與∩:同1則1如10010101∩10110111=10010101

按位或∪:有1則1如10010101∪10110111=101101113.邏輯化簡(jiǎn)

化簡(jiǎn)定律:

(1)交換律:A+B=B+A,A·B=B·A(2)結(jié)合律:(A+B)+C=A+(B+C),(A·B)·C=A·(B·C)(3)冪等律:A·A=A,A+A=A(4)吸收律:A·(A+B)=A,A+(A·B)=A(5)分配律:A·(B+C)=A·B+A·C,A+(B·C)=(A+B)·(A+C)(6)互補(bǔ)律:A+A=1,A·A=0(7)非深入:A+B=A·B,A·B=A+B(8)0-1律:A+0=A,A+1=1,A·1=A,A·0=0

例:化簡(jiǎn)函數(shù)Q=AD+AD+AB+ACEF。這個(gè)函數(shù)有5個(gè)自變量,化簡(jiǎn)過(guò)程如下:Q=AD+AD+AB+ACEF=A+AB+ACEF=A+ACEF=A練習(xí):求證:(A+B)(A+C)=AB+AC1.2操作系統(tǒng)1.2.1DOS(DiskOperatingSystem)的組成MS—DOS采用模塊結(jié)構(gòu),它由五部分組成:ROM中的BIOS模塊、IO.SYS模塊、MSDOS.SYS模塊、COMMAND.COM模塊和引導(dǎo)程序。(1)BIOS模塊:在PC機(jī)主板上有一個(gè)ROM芯片,該芯片中存有系統(tǒng)自測(cè)試程序,

CMOS設(shè)置程序和基本輸入輸出程序(BIOS)。BIOS是一組程序和參

表,其中程序部份是可以通過(guò)中斷方式調(diào)用的一組驅(qū)動(dòng)程序,參數(shù)

給出外設(shè)的地址和參數(shù)。BIOS是計(jì)算機(jī)硬件和操作系統(tǒng)之間的接口

通過(guò)它操作系統(tǒng)管理計(jì)算機(jī)硬件資源。(2)IO.SYS模塊:IO.SYS是MS—DOS和ROMBIOS之間的接口程序。它和RON

BIOS一起完成系統(tǒng)設(shè)備的管理。(3)MSDOS.SYS模塊:MSDOS.SYS用于實(shí)現(xiàn)文件管理,包括文件管理、目錄管理、內(nèi)存管理等功能。它以功能調(diào)用的形式實(shí)現(xiàn)用戶(hù)和MS—DOS之間的程序級(jí)接口。(4)COMMAND.COM模塊:COMMAND.COM的主要功能是負(fù)責(zé)接收、識(shí)別、解釋和執(zhí)行用戶(hù)從鍵盤(pán)輸入的MS—DOS命令。(5)引導(dǎo)程序:引導(dǎo)程序又叫“引導(dǎo)記錄”,其作用是檢查當(dāng)前盤(pán)上是否有兩個(gè)系統(tǒng)文件,若有系統(tǒng)文件則把DOS系統(tǒng)從磁盤(pán)裝人內(nèi)存。一張系統(tǒng)盤(pán)上應(yīng)該包含有:引導(dǎo)記錄、IO.SYS、MSDOS.SYS和COMMAND.COM等模塊。

1.2.2DOS的文件和目錄1)文件概念:文件是指記錄在存儲(chǔ)介質(zhì)(如磁盤(pán)、光盤(pán))上的一組相關(guān)信息的集合。2)文件標(biāo)識(shí):驅(qū)動(dòng)器號(hào)+路徑+文件名(1到8各字符)+擴(kuò)展名(1到3個(gè)字符代表文件的類(lèi)型)3)通配符:*代表從該位置起的一個(gè)或多個(gè)合法字符;?代表所在位置的任一個(gè)合法字符。4)樹(shù)形目錄:DOS采用樹(shù)形目錄結(jié)構(gòu)。由一個(gè)根目錄和若干層子目錄組成。這種目錄結(jié)構(gòu)一是能夠解決文件重名問(wèn)題,即不同的目錄可以包含相同的文件名或目錄名;二是能夠解決文件多而根目錄容量有限帶來(lái)的問(wèn)題。在查找某個(gè)子目錄下的一個(gè)文件時(shí),要使用目錄路徑。指定路徑有兩種方法:絕對(duì)路徑和相對(duì)路徑。絕對(duì)路徑是從根目錄開(kāi)始到文件所在目錄的路徑。例如要查找UCDOS子目錄下的二級(jí)子目錄DATA下的README.TXT文件,絕對(duì)路徑為:\UCDOS\DATA。路徑中第一個(gè)“\”符號(hào)代表根目錄。相對(duì)路徑是從當(dāng)前目錄開(kāi)始到文件所在目錄的路徑。當(dāng)前目錄指在不特意指定路徑情況下DOS命令所處理的目錄。例如系統(tǒng)提示符為:“C:\UCDOS\DATA>”,則DATA是當(dāng)前目錄。1.2.3DOS命令1.內(nèi)部命令

1)內(nèi)部命令:當(dāng)啟動(dòng)DOS系統(tǒng)時(shí),計(jì)算機(jī)引導(dǎo)程序?qū)⑾到y(tǒng)以及常用的命令處理模塊駐留在計(jì)算機(jī)的內(nèi)存中,我們稱(chēng)之為內(nèi)部命令。

2)常用的內(nèi)部命令:

(1)目錄命令:

DIR(顯示文件目錄)

MD、CD、RD(子目錄的建立、進(jìn)入、刪除命令)

(2)文件操作命令:

COPY(復(fù)制命令)、DEL(刪除命令)、REN(更改文件名)

TYPE(顯示文本文件內(nèi)容)

(3)其他內(nèi)部命令

DATA、TIME、VER、CLS等

·

2.外部命令

1)外部命令:存儲(chǔ)在外存儲(chǔ)器上的DOS可執(zhí)行的文件,這些文件程序所占的存儲(chǔ)容量比較大,當(dāng)用戶(hù)使用外部命令時(shí),計(jì)算機(jī)從外存調(diào)入內(nèi)存,當(dāng)執(zhí)行完外部命令,就自動(dòng)從內(nèi)存中退出。

2)常用的外部命令

(1)磁盤(pán)格式化命令:

FORMAT

盤(pán)符

[/S)I/V]

其作用,能夠清除原盤(pán)中所有信息,并將磁盤(pán)規(guī)范成計(jì)算機(jī)所能接受的格式,以便有效存儲(chǔ)信息。

(2)軟盤(pán)復(fù)制命令:

DISKCOPY

[盤(pán)符1:][盤(pán)符2:]

其作用,能夠進(jìn)行軟盤(pán)之間的全盤(pán)復(fù)制(以磁道方式),不僅可以復(fù)制系統(tǒng)文件而且可以復(fù)制隱含文件。1.2.4Windows簡(jiǎn)介Windows是一個(gè)多任務(wù)圖形用戶(hù)界面,該環(huán)境可以在基于MS-DOS的計(jì)算機(jī)上運(yùn)行,在多任務(wù)圖形用戶(hù)環(huán)境下,Windows提供了一個(gè)基于下拉菜單、屏幕窗口和鼠標(biāo)的界面,在該環(huán)境下運(yùn)行的應(yīng)用程序必須進(jìn)行專(zhuān)門(mén)的設(shè)計(jì)才能發(fā)揮這些特征的優(yōu)點(diǎn)。1.Windows的特點(diǎn)Windows能夠充分發(fā)揮計(jì)算機(jī)的作用,其圖形接口能夠組織用戶(hù)程序和文件、同時(shí)運(yùn)行幾個(gè)用戶(hù)程序、在文檔之間移動(dòng)和復(fù)制信息、在平臺(tái)上進(jìn)行應(yīng)用程序的切換等。為了提高效率,Windows還提供了一些輔助程序,如字處理器、畫(huà)筆及其他標(biāo)準(zhǔn)應(yīng)用程序等。Windows具有以下主要特點(diǎn)。(1)圖形化的用戶(hù)界面Windows提供了一種不同于DOS系統(tǒng)下命令行的工作方式,它通過(guò)對(duì)窗口、圖標(biāo)、選單、對(duì)話框、命令按鈕、滾動(dòng)框等圖形符號(hào)與畫(huà)面的操作來(lái)實(shí)現(xiàn)對(duì)計(jì)算機(jī)的各種操作。(2)標(biāo)準(zhǔn)化的操作界面在Windows中,所有的操作都是通過(guò)窗口中的圖形界面進(jìn)行的。(3)多任務(wù)機(jī)制和執(zhí)行性能在Windows中,平穩(wěn)的多任務(wù)機(jī)制可以同時(shí)運(yùn)行多道程序以及執(zhí)行多項(xiàng)任務(wù),各程序與各任務(wù)之間不僅轉(zhuǎn)換容易,而且還可以方便地交換數(shù)據(jù)。(4)充分利用內(nèi)存Winddws利用虛擬內(nèi)存技術(shù),允許應(yīng)用程序超過(guò)640陽(yáng)常規(guī)內(nèi)存的運(yùn)行空間,從而最大限度地利用了計(jì)算機(jī)系統(tǒng)的所有內(nèi)存資源,從而使內(nèi)存較小的微機(jī)也能運(yùn)行大型的應(yīng)用程序。(5)強(qiáng)大的聯(lián)網(wǎng)功能在Windows中,可以簡(jiǎn)單直觀地實(shí)現(xiàn)網(wǎng)絡(luò)的安裝、配置、瀏覽,從而可以更加方便地實(shí)現(xiàn)網(wǎng)絡(luò)管理和資源共享。(6)豐富的多媒體功能Windows提供大量輔助程序,用以實(shí)現(xiàn)文字、圖形、圖像、聲音、視頻等多媒體功能,同時(shí)還支持其他廠商基于Windows標(biāo)準(zhǔn)開(kāi)發(fā)的各種相應(yīng)軟件。(7)TryType技術(shù)TryType(真實(shí)字體)屬于內(nèi)建式比例字體,可以任意平滑放大與縮小。這種字體能使屏幕上顯示的效果與實(shí)際打印機(jī)輸出的信息完全一致,這就是所謂的“所見(jiàn)即所得”。[例]在Windows95中,“任務(wù)欄”的作用是____。A)顯示系統(tǒng)的所有功能B)只顯示當(dāng)前活動(dòng)窗口名C)只顯示正在后臺(tái)工作的窗口名D)實(shí)現(xiàn)窗口之間的切換解答:在任務(wù)欄中,顯示了所有打開(kāi)的程序的圖標(biāo)。本題正確答案為D。1.3計(jì)算機(jī)網(wǎng)絡(luò)常識(shí)1.3.1網(wǎng)絡(luò)基礎(chǔ)知識(shí)1.網(wǎng)絡(luò)的概念計(jì)算機(jī)網(wǎng)絡(luò)是將地理位置不同的計(jì)算機(jī),用通信鏈路連接起來(lái),共同遵守一定的協(xié)議,以實(shí)現(xiàn)計(jì)算機(jī)軟硬件資源共享為目標(biāo)的通信系統(tǒng)。2.網(wǎng)絡(luò)的組成計(jì)算機(jī)網(wǎng)絡(luò)由網(wǎng)絡(luò)硬件和網(wǎng)絡(luò)軟件組成。網(wǎng)絡(luò)軟件包括網(wǎng)絡(luò)操作系統(tǒng)、通信軟件、通信協(xié)議(計(jì)算機(jī)之間實(shí)現(xiàn)數(shù)據(jù)通信共同遵守的相關(guān)規(guī)定)。網(wǎng)絡(luò)硬件包括網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)、網(wǎng)絡(luò)服務(wù)器、網(wǎng)絡(luò)工作站、傳輸介質(zhì)和設(shè)備。3.網(wǎng)絡(luò)的分類(lèi)(1)按通信距離分:局域網(wǎng)(LAN):局限于某個(gè)范圍(10公里左右)廣域網(wǎng)(WAN):跨地區(qū)的局域網(wǎng),Internet是覆蓋全球的廣域網(wǎng)。(2)按網(wǎng)絡(luò)的使用目的分:共享資源網(wǎng):使用者可分享網(wǎng)絡(luò)的各種資源(如Internet)。數(shù)據(jù)處理網(wǎng):用于數(shù)據(jù)處理(企業(yè)經(jīng)營(yíng)管理用的網(wǎng)絡(luò))。數(shù)據(jù)傳輸網(wǎng):用于數(shù)據(jù)的收集、交換和傳輸(情報(bào)檢索網(wǎng)絡(luò))。(3)按網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)分:星形網(wǎng):以一臺(tái)計(jì)算機(jī)為中心,以放射狀連接若干臺(tái)計(jì)算機(jī)。環(huán)形網(wǎng):傳輸線路構(gòu)成一個(gè)封閉的環(huán),入網(wǎng)的計(jì)算機(jī)連到這個(gè)環(huán)形線路上??偩€網(wǎng):用一條通信線路作主干,入網(wǎng)的計(jì)算機(jī)通過(guò)相應(yīng)接口連到線路上。4.

開(kāi)放系統(tǒng)互聯(lián)模型

(OSI模型)

OSI模型分7層:各層功能如下:

1.物理層物理層與移動(dòng)二進(jìn)制數(shù)和維護(hù)物理連接有關(guān)。2.?dāng)?shù)據(jù)鏈路層數(shù)據(jù)鏈路層通過(guò)幀在一個(gè)給定的物理鏈路傳輸分組(報(bào)文),保持幀的有序以及發(fā)現(xiàn)檢測(cè)到的各種錯(cuò)誤,包括傳輸錯(cuò)誤,但是數(shù)據(jù)鏈路層只了解在鏈路另一端的對(duì)等實(shí)體。數(shù)據(jù)鏈路層的地址是為了將網(wǎng)絡(luò)中一點(diǎn)的數(shù)據(jù)幀送到另一點(diǎn)。3.網(wǎng)絡(luò)層網(wǎng)絡(luò)層知道每個(gè)數(shù)據(jù)鏈路的對(duì)等進(jìn)程,并負(fù)責(zé)在鏈路間移動(dòng)分組,把它送到目的地。網(wǎng)絡(luò)層地址是為了把單一分組從網(wǎng)絡(luò)的一端送到目的地。4.傳輸層傳輸層注意的是整個(gè)網(wǎng)絡(luò),該層是第一個(gè)端到端層。其對(duì)等實(shí)體位于分組的最終目的地。傳輸層依靠網(wǎng)絡(luò)層經(jīng)過(guò)中間節(jié)點(diǎn)移動(dòng)分組。傳輸層地址是為了把網(wǎng)絡(luò)一端進(jìn)程的完整信息送到最終目的地的對(duì)等進(jìn)程。5-7.會(huì)話層、表示層和應(yīng)用層提供了如下功能:

處理計(jì)算機(jī)間數(shù)據(jù)表示的差別。確保數(shù)據(jù)在網(wǎng)絡(luò)傳輸中不被竊取和泄露,并且確保網(wǎng)絡(luò)不允許未經(jīng)授權(quán)就訪問(wèn)數(shù)據(jù)。最高效地使用網(wǎng)絡(luò)資源通過(guò)應(yīng)用程序及活動(dòng)同步來(lái)管理對(duì)話和活動(dòng)。在網(wǎng)絡(luò)節(jié)點(diǎn)間共享數(shù)據(jù)。1.3.2Internet簡(jiǎn)介Internet英文直譯為“互聯(lián)網(wǎng)”,中文名為“因特網(wǎng)”。是世界上眾多計(jì)算機(jī)網(wǎng)絡(luò)的集合起源于20世紀(jì)80年代。1.Internet的IP地址、IP地址類(lèi)型和主機(jī)域名(1)在Internet網(wǎng)上采用統(tǒng)一的網(wǎng)絡(luò)協(xié)議TCP/IP,與Internet相連的計(jì)算機(jī)必須具有唯一的主機(jī)地址,稱(chēng)IP地址。IP地址采用分段地址方式,使用數(shù)字表示;如:4,其中由三個(gè)點(diǎn)隔開(kāi)的四個(gè)數(shù)是十進(jìn)制,其大小是0-255,每個(gè)數(shù)對(duì)應(yīng)一個(gè)8位二進(jìn)制數(shù),所以IP地址用32位二進(jìn)制位存放站4個(gè)字節(jié)。(2)IP地址類(lèi)型:最初設(shè)計(jì)互聯(lián)網(wǎng)絡(luò)時(shí),為了便于尋址以及層次化構(gòu)造網(wǎng)絡(luò),每個(gè)IP地址包括兩個(gè)標(biāo)識(shí)碼(ID),即網(wǎng)絡(luò)ID和主機(jī)ID。同一個(gè)物理網(wǎng)絡(luò)上的所有主機(jī)都使用同一個(gè)網(wǎng)絡(luò)ID,網(wǎng)絡(luò)上的一個(gè)主機(jī)(包括網(wǎng)絡(luò)上工作站,服務(wù)器和路由器等)有一個(gè)主機(jī)ID與其對(duì)應(yīng)。IP地址根據(jù)網(wǎng)絡(luò)ID的不同分為5種類(lèi)型,A類(lèi)地址、B類(lèi)地址、C類(lèi)地址、D類(lèi)地址和E類(lèi)地址。

A類(lèi)IP地址

一個(gè)A類(lèi)IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”,地址范圍從

1.0.0B類(lèi)IP地址一個(gè)B類(lèi)IP地址由2個(gè)字節(jié)的網(wǎng)絡(luò)地址和2個(gè)字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”

C類(lèi)IP地址一個(gè)C類(lèi)IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“110”

D類(lèi)地址用于多點(diǎn)廣播(Multicast)。D類(lèi)IP地址第一個(gè)字節(jié)以“l(fā)ll0”

E類(lèi)IP地址以“l(fā)lll0”全零(“0.0.0.0”)地址對(duì)應(yīng)于當(dāng)前主機(jī)。全“1”的IP地址(“255.255.255.在IP地址3種主要類(lèi)型里,各保留了3個(gè)區(qū)域作為私有地址,其地址范圍如下:A類(lèi)地址:~55B類(lèi)地址:~55C類(lèi)地址:~55(3)為了使用方便,在訪問(wèn)Internet上的主機(jī)時(shí),通常使用主機(jī)域名而不是IP地址,但主機(jī)域名和IP地址一一對(duì)應(yīng),它由圓點(diǎn)分隔的一序列單詞組成如“P"。IP地址如同電腦的身份證號(hào)碼,而域名相當(dāng)電腦的姓名。2.Internet的功能

(1)信息瀏覽(WWW)WWW(WorldWideWeb),中文名為”萬(wàn)維網(wǎng)“,是基于超文本的、方便用戶(hù)信息瀏覽和信息搜索的信息服務(wù)系統(tǒng)。用戶(hù)在瀏覽器中輸入網(wǎng)址即可得到需要的信息。人們常用的瀏覽器有網(wǎng)景公司的Netscape瀏覽器和Microsoft公司的InternetExplorer瀏覽器。網(wǎng)址的輸入是使用協(xié)議提供的服務(wù)+服務(wù)器地址(IP地址或主機(jī)域名)如http://;ftp://

(2)文件傳輸(FTP)FTP(FileTransferProtocol)是Internet的一種標(biāo)準(zhǔn)協(xié)議,這一協(xié)議使用戶(hù)能在聯(lián)網(wǎng)的計(jì)算機(jī)之間傳送文件如上載(UPLOAD把本地計(jì)算機(jī)上地文件復(fù)制到遠(yuǎn)程計(jì)算機(jī)上)和下載(DOWNLOAD把遠(yuǎn)程計(jì)算機(jī)上的文件復(fù)制到本地計(jì)算機(jī)上)。

(3)傳送電子郵件(E-mail)電子郵件地址=用戶(hù)名+@+主機(jī)域名;如:zhangming@(4)電子公告牌(BBS)(5)遠(yuǎn)程登錄(telnet)(6)電子商務(wù)等3.TCP/IP參考模型TCP/IP協(xié)議的開(kāi)發(fā)研制人員將Internet分為五個(gè)層次,以便于理解,它也稱(chēng)為互聯(lián)網(wǎng)分層模型或互聯(lián)網(wǎng)分層參考模型,如下表:應(yīng)用層(第五層)傳輸層(第四層)互聯(lián)網(wǎng)層(第三層)網(wǎng)絡(luò)接口層(第二層)物理層(第一層)各層簡(jiǎn)要說(shuō)明如下:

物理層:對(duì)應(yīng)于網(wǎng)絡(luò)的基本硬件,這也是Internet物理構(gòu)成,即我們可以看得見(jiàn)的硬件設(shè)備,如PC機(jī)、互連網(wǎng)服務(wù)器、網(wǎng)絡(luò)設(shè)備等,必須對(duì)這些硬件設(shè)備的電氣特性作一個(gè)規(guī)范,使這些設(shè)備都能夠互相連接并兼容使用。網(wǎng)絡(luò)接口層:它定義了將數(shù)據(jù)組成正確幀的規(guī)程和在網(wǎng)絡(luò)中傳輸幀的規(guī)程,幀是指一串?dāng)?shù)據(jù),它是數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)膯挝弧;ヂ?lián)網(wǎng)層:本層定義了互聯(lián)網(wǎng)中傳輸?shù)摹靶畔备袷?,以及從一個(gè)用戶(hù)通過(guò)一個(gè)或多個(gè)路由器到最終目標(biāo)的""信息包""轉(zhuǎn)發(fā)機(jī)制。傳輸層:為兩個(gè)用戶(hù)進(jìn)程之間建立、管理和拆除可靠而又有效的端到端連接。應(yīng)用層:它定義了應(yīng)用程序使用互聯(lián)網(wǎng)的規(guī)程。1.4計(jì)算機(jī)信息安全基礎(chǔ)知識(shí)1.4.1計(jì)算機(jī)的網(wǎng)絡(luò)安全1、不同環(huán)境和應(yīng)用中的網(wǎng)絡(luò)安運(yùn)行系統(tǒng)安全,即保證信息處理和傳輸系統(tǒng)的安全。它側(cè)重于保證系統(tǒng)正常運(yùn)行,避免因?yàn)橄到y(tǒng)的崩潰和損壞而對(duì)系統(tǒng)存貯、處理和傳輸?shù)男畔⒃斐善茐暮蛽p失,避免由于電磁泄漏,產(chǎn)生信息泄露,干擾他人,受他人干擾。網(wǎng)絡(luò)上系統(tǒng)信息的安全。包括用戶(hù)口令鑒別,用戶(hù)存取權(quán)限控制,數(shù)據(jù)存取權(quán)限、方式控制,安全審計(jì),安全問(wèn)題跟蹤,計(jì)算機(jī)病毒防治,數(shù)據(jù)加密。網(wǎng)絡(luò)上信息傳播安全,即信息傳播后果的安全。包括信息過(guò)濾等。它側(cè)重于防止和控制非法、有害的信息進(jìn)行傳播后的后果。避免公用網(wǎng)絡(luò)上大量自由傳輸?shù)男畔⑹Э?。網(wǎng)絡(luò)上信息內(nèi)容的安全。它側(cè)重于保護(hù)信息的保密性、真實(shí)性和完整性。避免攻擊者利用系統(tǒng)的安全漏洞進(jìn)行竊聽(tīng)、冒充、詐騙等有損于合法用戶(hù)的行為。本質(zhì)上是保護(hù)用戶(hù)的利益和隱私。網(wǎng)絡(luò)安全的特征2、網(wǎng)絡(luò)安全應(yīng)具有以下四個(gè)方面的特征:保密性:信息不泄露給非授權(quán)用戶(hù)、實(shí)體或過(guò)程,或供其利用的特性。完整性:數(shù)據(jù)未經(jīng)授權(quán)不能進(jìn)行改變的特性。即信息在存儲(chǔ)或傳輸過(guò)程中保持不被修改、不被破壞和丟失的特性??捎眯裕嚎杀皇跈?quán)實(shí)體訪問(wèn)并按需求使用的特性。即當(dāng)需要時(shí)能否存取所需的信息。例如網(wǎng)絡(luò)環(huán)境下拒絕服務(wù)、破壞網(wǎng)絡(luò)和有關(guān)系統(tǒng)的正常運(yùn)行等都屬于對(duì)可用性的攻擊;可控性:對(duì)信息的傳播及內(nèi)容具有控制能力。3、主要的網(wǎng)絡(luò)安全威脅自然災(zāi)害、意外事故;計(jì)算機(jī)犯罪;人為行為,比如使用不當(dāng),安全意識(shí)差等;“黑客”行為:由于黑客的入侵或侵?jǐn)_,比如非法訪問(wèn)、拒絕服務(wù)計(jì)算機(jī)病毒、非法連接等;內(nèi)部泄密;外部泄密;信息丟失;電子諜報(bào),比如信息流量分析、信息竊取等;信息戰(zhàn);網(wǎng)絡(luò)協(xié)議中的缺陷,例如TCP/IP協(xié)議的安全問(wèn)題等等。4、黑客常用的信息收集工具信息收集是突破網(wǎng)絡(luò)系統(tǒng)的第一步。黑客可以使用下面幾種工具來(lái)收集所需信息:SNMP協(xié)議,用來(lái)查閱非安全路由器的路由表,從而了解目標(biāo)機(jī)構(gòu)網(wǎng)絡(luò)拓?fù)涞膬?nèi)部細(xì)節(jié)。TraceRoute程序,得出到達(dá)目標(biāo)主機(jī)所經(jīng)過(guò)的網(wǎng)絡(luò)數(shù)和路由器數(shù)。Whois協(xié)議,它是一種信息服務(wù),能夠提供有關(guān)所有DNS域和負(fù)責(zé)各個(gè)域的系統(tǒng)管理員數(shù)據(jù)。(不過(guò)這些數(shù)據(jù)常常是過(guò)時(shí)的)。DNS服務(wù)器,可以訪問(wèn)主機(jī)的IP地址表和它們對(duì)應(yīng)的主機(jī)名。Finger協(xié)議,能夠提供特定主機(jī)上用戶(hù)們的詳細(xì)信息(注冊(cè)名、電話號(hào)碼、最后一次注冊(cè)的時(shí)間等)。Ping實(shí)用程序,可以用來(lái)確定一個(gè)指定的主機(jī)的位置并確定其是否可達(dá)。把這個(gè)簡(jiǎn)單的工具用在掃描程序中,可以Ping網(wǎng)絡(luò)上每個(gè)可能的主機(jī)地址,從而可以構(gòu)造出實(shí)際駐留在網(wǎng)絡(luò)上的主機(jī)清單。1.4.2計(jì)算機(jī)病毒計(jì)算機(jī)病毒是一種程序,是人為設(shè)計(jì)的具有破壞性的程序。計(jì)算機(jī)病毒具有破壞性、傳播性、可激發(fā)性、潛伏性、隱蔽性等特點(diǎn)。1.4.3病毒的分類(lèi)

(1)按病毒設(shè)計(jì)者的意圖和破壞性大小,可將計(jì)算機(jī)病毒分為良性病毒和惡性病毒。

①良性病毒:這種病毒的目的不是為了破壞計(jì)算機(jī)系統(tǒng),而只是為了編制者表現(xiàn)自己。此類(lèi)病毒破壞性較小,只是造成系統(tǒng)運(yùn)行速度降低,干擾用戶(hù)正常工作。

②惡性病毒:這類(lèi)病毒的目的是人為的破壞計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)。具有明顯破壞目標(biāo),其破壞和危害性都很大,可能刪除文件或?qū)τ脖P(pán)進(jìn)行非法的格式化。

(2)計(jì)算機(jī)病毒按照寄生方式可以分為下列四類(lèi):

①源碼病毒:在源程序被編譯之前,就插入到用高級(jí)語(yǔ)言編寫(xiě)的源程序當(dāng)中。編寫(xiě)這種病毒程序較困難。但是,一旦插入,其破壞性和危害性都很大。

②入侵病毒:是把病毒程序的一部分插入到主程序中。這種病毒程序也難編寫(xiě),一旦入侵,難以清除。

②操作系統(tǒng)病毒:是把病毒程序加入或替代部分操作系統(tǒng)進(jìn)行工作的病毒。這種病毒攻擊力強(qiáng)、常見(jiàn)、破壞性和危害性最大。

④外殼病毒:是把病毒程序置放在主程序周?chē)话悴恍薷脑闯绦虻囊环N病毒。它大多是感染DOS下的可執(zhí)行程序。這種病毒占一半以上,易編制,也易于檢測(cè)和消除。在日常維護(hù)中應(yīng)隔離計(jì)算機(jī)病毒的來(lái)源,經(jīng)常要用殺毒軟件檢查計(jì)算機(jī)系統(tǒng)和存儲(chǔ)器。[例]設(shè)一張軟盤(pán)已染上病毒,能清除病毒的措施是____。

A)刪除該軟盤(pán)上的所有文件

B)格式化該軟盤(pán)

C)刪除該軟盤(pán)上的所有可執(zhí)行文件

D)刪除該軟盤(pán)上的所有批處理文件

解答:軟盤(pán)染毒后,病毒隱藏在磁盤(pán)內(nèi)部,并感染磁盤(pán)上的文件,而且可能通過(guò)磁盤(pán)的使用進(jìn)而擴(kuò)散到其他磁盤(pán),造成更大的破壞。為了清除病毒,必須格式化軟盤(pán),從而徹底清除染毒文件和病毒本身。

本題正確答案為B。

第2章C++編程簡(jiǎn)介2.1機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言程序員用各種編程語(yǔ)言編寫(xiě)指令,有些是計(jì)算機(jī)直接理解的,有些則需要中間翻譯(tranlation)的步驟。如今使用的計(jì)算機(jī)語(yǔ)言有幾百種,可以分為三大類(lèi):1.機(jī)器語(yǔ)言2.匯編語(yǔ)言3.高級(jí)語(yǔ)言任何計(jì)算機(jī)只能直接理解本身酌機(jī)器語(yǔ)言(machinelanguage)。機(jī)器語(yǔ)言是特定計(jì)算機(jī)的自然語(yǔ)言,由計(jì)算機(jī)的硬件設(shè)計(jì)定義。機(jī)器語(yǔ)言通常由一系列數(shù)字組成(最終簡(jiǎn)化0和1),讓計(jì)算機(jī)一次一個(gè)地執(zhí)行最基本的操作。機(jī)器語(yǔ)言非常繁瑣,下面的機(jī)器語(yǔ)言程序?qū)⒐g工資和基礎(chǔ)工資相加,并把結(jié)果保存在工資總額中:+1300042774+1400593419+1200274027隨著計(jì)算機(jī)越來(lái)越普及,機(jī)器語(yǔ)言編程對(duì)大多數(shù)程序員顯然太慢、太繁瑣。程序員不用計(jì)算機(jī)直接理解的一系列數(shù)字,而是用類(lèi)似英文縮寫(xiě)的助記將來(lái)表示計(jì)算機(jī)的基本操作,這些助記符構(gòu)成了匯編語(yǔ)言(assemblylanguage)。稱(chēng)為匯編器(assembler)的翻譯程序以計(jì)算機(jī)的速度將匯編語(yǔ)言程序轉(zhuǎn)換為機(jī)器語(yǔ)言。下列匯編程序也是工齡工資和基礎(chǔ)工資相加,并將結(jié)果保存在總工資中,但要比相應(yīng)的機(jī)器語(yǔ)言清晰得多:LOADBASEPAYADDOVERPAYSTOREGROSSPAY盡管這種代碼對(duì)于人們一目了然,但計(jì)算機(jī)卻無(wú)法理解,必須先翻譯為相應(yīng)的機(jī)器語(yǔ)言。隨著匯編語(yǔ)言的出現(xiàn),計(jì)算機(jī)的使用迅速增加,然而即使是最簡(jiǎn)單的任務(wù).也需要許多條指令才能完成。為了加速編程過(guò)程,人們開(kāi)發(fā)了高級(jí)語(yǔ)言(high-levellanguage),用一條語(yǔ)句完成大量任務(wù)。稱(chēng)為編譯器(compiler)的翻譯程序?qū)⒏呒?jí)語(yǔ)言程序變?yōu)橄鄳?yīng)的機(jī)器語(yǔ)言。高級(jí)語(yǔ)言使程序員能夠編寫(xiě)更像英語(yǔ)的指令,可以包含常用的數(shù)學(xué)符號(hào)。將工齡工資和基礎(chǔ)工資相加.并把結(jié)果保存在總工資中,可以用下列高級(jí)語(yǔ)言程序:grossPay=basePay+overTimePay顯然,從程序員角度看,高級(jí)語(yǔ)言比機(jī)器語(yǔ)言和匯編語(yǔ)言都要強(qiáng)得多。C和C++是最強(qiáng)大最廣泛使用的高級(jí)語(yǔ)言。將高級(jí)語(yǔ)言程序編譯為相應(yīng)的機(jī)器語(yǔ)言的過(guò)程可能需要大量時(shí)間。解釋器(interpreter)程序可以直接執(zhí)行高級(jí)語(yǔ)言程序,而不必先將這些程序編譯成相應(yīng)的機(jī)器語(yǔ)言。盡管編譯程序的執(zhí)行速度比解釋程序更快,但解釋器在程序開(kāi)發(fā)環(huán)境中更常用,因?yàn)樵黾有绿匦院图m正錯(cuò)誤時(shí)經(jīng)常需要重新編譯程序。一旦程序開(kāi)發(fā)完成,編譯版本的運(yùn)行最有效。2.2C語(yǔ)言與C++的歷史C++是從C語(yǔ)言演變而來(lái)的,而C語(yǔ)言又是從兩個(gè)編程語(yǔ)言BCPL和B演變而來(lái)的、BCPL是MartinRichards于1967年開(kāi)發(fā)的,用于編寫(xiě)操作系統(tǒng)軟件和編譯器。KenThompson在他的B語(yǔ)言(1970年在貝爾實(shí)驗(yàn)室)。DCPL和B都是“無(wú)類(lèi)型”語(yǔ)言,每個(gè)數(shù)據(jù)項(xiàng)在內(nèi)存中占一個(gè)“字”(word)長(zhǎng)、如果要將數(shù)據(jù)項(xiàng)作為整數(shù)或?qū)崝?shù)處理,編程的工作量會(huì)很大。C語(yǔ)言是從D語(yǔ)言演變而成的,由貝爾實(shí)驗(yàn)室的DennisRitchie開(kāi)發(fā),最初于1972年在DECPDP—11計(jì)算機(jī)上實(shí)現(xiàn)。C語(yǔ)言使用了BCPL和B的許多重要概念,同時(shí)增加了數(shù)據(jù)類(lèi)型和其他特性。C語(yǔ)言最初作為UNIX操作系統(tǒng)的開(kāi)發(fā)語(yǔ)言而聞名于世。如今,大多數(shù)操作系統(tǒng)都是用C/C++寫(xiě)成的。二十多年來(lái),C語(yǔ)言已經(jīng)遍布在大多數(shù)計(jì)算機(jī)上。C語(yǔ)言是硬件無(wú)關(guān)的,只要仔細(xì)設(shè)計(jì)。就可以編寫(xiě)能移植列大多數(shù)計(jì)算機(jī)上的C語(yǔ)言程序。到20世紀(jì)70年代未期,C語(yǔ)言演變成現(xiàn)在所謂的“傳統(tǒng)C”、“經(jīng)典CPP或“Kernighan/RitchieC"。1978年P(guān)renticeHall公司出版了Kernighan和Ritchie合作的著作《TheCProgrmmmingLanguage》,引起了人們對(duì)C語(yǔ)言的廣泛關(guān)注(見(jiàn)參考文獻(xiàn)Ke78)。C語(yǔ)言在各種不同類(lèi)型計(jì)算機(jī)(有時(shí)稱(chēng)為硬件平臺(tái))上的普及導(dǎo)致了許多變形。它們雖然相似,但通常互不兼容。對(duì)需要為不同平臺(tái)編寫(xiě)可移植程序的開(kāi)發(fā)人員.這是個(gè)嚴(yán)重問(wèn)題,顯然需要有個(gè)標(biāo)準(zhǔn)的C語(yǔ)言版本。1983年,美國(guó)國(guó)家計(jì)算機(jī)與信息處理標(biāo)準(zhǔn)委員會(huì)(x3)成立了x3JII技術(shù)分會(huì),目的是提供無(wú)歧義性且與機(jī)器無(wú)關(guān)的語(yǔ)言定義。1989年推出了這種語(yǔ)言標(biāo)準(zhǔn)。AN5I與國(guó)際標(biāo)準(zhǔn)化組織(IS0)合作.在全球范圍內(nèi)將C語(yǔ)言標(biāo)淮化,1990年推出了聯(lián)合標(biāo)準(zhǔn)文檔。稱(chēng)為ANSI/IS09899:1990。這個(gè)文檔可以從ANSI獲得副本。1988年推出的Kernighan和Ritchie著作的第二版體現(xiàn)了該版本(稱(chēng)為ANSIC),這也是目前全世界使用的版本。C++是C語(yǔ)言的擴(kuò)展,是20世紀(jì)80年代初由貝爾實(shí)驗(yàn)室的Bjarnestroustrup開(kāi)發(fā)的。C++的許多特性是從c語(yǔ)言中派生的,但更重要的是,它提供了面向?qū)ο缶幊?object-orientedprogramming)的功能。軟件業(yè)正在醞釀一場(chǎng)革命,最終日標(biāo)是更快、更正確、更經(jīng)濟(jì)地建立軟件,新的、更強(qiáng)大的軟件需求迫在眉睫。對(duì)象(object)實(shí)際上是模擬實(shí)際項(xiàng)目的可復(fù)用軟件組件(component)。軟件開(kāi)發(fā)人員發(fā)現(xiàn),利用模塊化、面t向?qū)ο蟮脑O(shè)計(jì)和實(shí)現(xiàn)方法與過(guò)去結(jié)構(gòu)化編程方法相比較,可以使軟件開(kāi)發(fā)小組的生產(chǎn)率更高。面向?qū)ο缶幊痰膬?yōu)勢(shì)在于更容易理解、糾正和修改。許多面向?qū)ο蟮恼Z(yǔ)言也紛紛涌現(xiàn),包括最著名的由Xerox的PaloAlto研究中心(PARC)開(kāi)發(fā)的smalltalk。Smalltalk是純粹的面向?qū)ο蟮恼Z(yǔ)言,其所有的編程元素都是“對(duì)象”。C++則是一種“混合型語(yǔ)言“,可以用C語(yǔ)言方式、面向?qū)ο蠓绞交蚣嬗脙煞N方式進(jìn)行編程。2.9節(jié)將介紹基于C/C++的新語(yǔ)言——Java。2.3C++標(biāo)準(zhǔn)庫(kù)C++程序由類(lèi)(class)和函數(shù)(function)組成??梢杂枚鄠€(gè)小的軟件模塊構(gòu)成C++程序,但大多數(shù)C++程序員會(huì)利用C++標(biāo)準(zhǔn)庫(kù)中已有的類(lèi)和函數(shù)來(lái)編程。這樣,C++“世界”中實(shí)際要學(xué)習(xí)兩方面的知識(shí),第一是學(xué)習(xí)C++語(yǔ)言本身,第二是學(xué)習(xí)如何利用C++標(biāo)準(zhǔn)庫(kù)中現(xiàn)有的類(lèi)和函數(shù)(本教程將介紹許多類(lèi)和函數(shù))。Plauger的著作是程序員必讀的.可以幫助程序員深入了解C++中包括的ANSIC語(yǔ)言庫(kù)函數(shù),了解如何實(shí)現(xiàn)這些庫(kù)函數(shù),還可以了解如何用庫(kù)函數(shù)編寫(xiě)可移植代碼。標(biāo)準(zhǔn)庫(kù)函數(shù)通常由編譯器廠家提供。許多獨(dú)立軟件供應(yīng)商(indepandentsofterwarevender)也提供各種專(zhuān)用類(lèi)庫(kù)。常用數(shù)據(jù)類(lèi)型與Pascal數(shù)據(jù)類(lèi)型的比較:Pascal數(shù)據(jù)類(lèi)型C/C++ShorInt8位有符號(hào)整數(shù)CharByte8位無(wú)符號(hào)整數(shù)BYTE,unsignedshortSmallInt16位有符號(hào)整數(shù)ShortWord16位無(wú)符號(hào)整數(shù)unsignedshortInteger,LongInt32位有符號(hào)整數(shù)int,longCardinal,LongWord/DWORD32位無(wú)符號(hào)整數(shù)unsignedlongInt6464位有符號(hào)整數(shù)

_int64Single4字節(jié)浮點(diǎn)數(shù)float*Real486字節(jié)浮點(diǎn)數(shù)Double8字節(jié)浮點(diǎn)數(shù)double*Extended10字節(jié)浮點(diǎn)數(shù)LongdoubleCurrency64位貨幣類(lèi)型TDate/TDateTime8字節(jié)日期/時(shí)間Variant,OleVariant16字節(jié)可變類(lèi)型VARIANT,^Variant,^OleVariantChar,AnsiChar1字節(jié)字符CharWideChar2字節(jié)字符WCHAR*ShortString短字符串StringAnsiString/String長(zhǎng)字符串^AnsiStringWideString寬字符串^WideStringPChar,PAnsiCharNULL結(jié)束的字符串char*PWideCharNULL結(jié)束的寬字符串LPCWSTRBoolean,ByteBool1字節(jié)布爾類(lèi)型任何1字節(jié)WordBool2字節(jié)布爾類(lèi)型任何2字節(jié)BOOL,LongBool4字節(jié)布爾類(lèi)型BOOL注:有*前綴的是向前兼容類(lèi)型;有^前綴的是C++Builder特有類(lèi)型。2.4結(jié)構(gòu)化編程20世紀(jì)60年代,許多大型軟件的開(kāi)發(fā)遇到了嚴(yán)重困難。常常推遲軟件計(jì)劃,因而使成本大大超過(guò)預(yù)算,而且最終產(chǎn)品也不可靠。人們開(kāi)始認(rèn)識(shí)到,軟件開(kāi)發(fā)是項(xiàng)復(fù)雜的活動(dòng),比原來(lái)所預(yù)想的要復(fù)雜得多。20世紀(jì)60年代的研究結(jié)果是結(jié)構(gòu)化編程(structuredprogramming)的出現(xiàn),用規(guī)定的方法編寫(xiě)程序比非結(jié)構(gòu)化編程能產(chǎn)生更清晰、更容易測(cè)試/調(diào)試以及更容易修改的程序。本教程的第2章將介紹結(jié)構(gòu)化編程原理。第3章到第5章則會(huì)開(kāi)發(fā)多種結(jié)構(gòu)化程序。結(jié)構(gòu)化編程研究的一個(gè)更具體結(jié)果是1971年NiklausWirth教授推出了Pascal語(yǔ)言。Pascal語(yǔ)言是用17世紀(jì)著名數(shù)學(xué)家和哲學(xué)家巴雷斯·帕斯卡(BlaisePascal)的名字命名的,常用于教學(xué)中講解結(jié)構(gòu)化編程.因而很快成為了大學(xué)中受歡迎的語(yǔ)言。但是這個(gè)語(yǔ)言缺乏在商業(yè)、工業(yè)和政府應(yīng)用程序中所需要的許多特性,因此沒(méi)有被大學(xué)以外的環(huán)境所接受。Ada語(yǔ)言是在20世紀(jì)70年代和80年代初由美國(guó)國(guó)防部資助開(kāi)發(fā)的。在此之前,國(guó)防部的導(dǎo)彈命令與控制軟件系統(tǒng)是由幾百種不同語(yǔ)言生成的,國(guó)防部要求用一種語(yǔ)言來(lái)完成大多數(shù)工作。Ada以Pascal為基礎(chǔ).但最終結(jié)構(gòu)與Pascal大相徑庭。這個(gè)語(yǔ)言是根據(jù)著名詩(shī)人LordByron的女兒(AdaLovelace)的名字命名的。AdaLovelace在19世紀(jì)初編寫(xiě)了世界上第一個(gè)計(jì)算機(jī)程序,用于charlesBabbage設(shè)計(jì)的分析機(jī)引擎的計(jì)算設(shè)備。Ada的一個(gè)最重要功能是多任務(wù)(multiasking).程序員可以使多個(gè)活動(dòng)任務(wù)并行發(fā)生。我們要介紹的其他常用高級(jí)語(yǔ)言(包括C/C++)通常只讓程序員編寫(xiě)一次只有一個(gè)活動(dòng)任務(wù)的程序。2.5簡(jiǎn)單程序C++使用非程序員可能感到奇怪的符號(hào)。我們首先介紹一個(gè)簡(jiǎn)單程序:打印一行文本。程序及其屏輸出如圖2.2。這段程序演示了C++語(yǔ)言的幾個(gè)重要特性。我們?cè)敿?xì)介紹程序的每一行。//Fig.2.2:fig1_02.cpp//AfirstprograminC++以//開(kāi)頭,表示該選項(xiàng)其余部分是注釋語(yǔ)句(comment)。程序員手稿注釋語(yǔ)句用來(lái)說(shuō)明和提高程序的可讀性。注釋語(yǔ)句還可以幫助其它人閱讀和理解程序。在運(yùn)行程序時(shí)注釋語(yǔ)句并不使計(jì)算機(jī)采用任何操作。C++編譯器忽略注釋誤句,不產(chǎn)生任何機(jī)器目標(biāo)碼。注釋語(yǔ)句"firstprograminC++"只是描述該程序的用途。以//開(kāi)頭的說(shuō)明語(yǔ)句稱(chēng)為單行貹注釋語(yǔ)句(singned-linecomment),因?yàn)樵撟⑨屨Z(yǔ)句在行尾結(jié)束(注意:C++程序員也可以用C語(yǔ)言注釋語(yǔ)句樣式,即注釋語(yǔ)句以/*開(kāi)頭,以*/結(jié)束)。1//Fig.2.2:fig01_02.cpp2//AfirstprograminC++3#include<iostream>4usingnamespacestd;5intmain()6{7cout<<"WelcomtoC++!\n";89return0;//indicatethatprogramendedsucessfully10}輸出結(jié)果:WelcomtoC++!下列語(yǔ)句:#include<iostream>是條預(yù)處理指令(preprocessordirective),是發(fā)給C++預(yù)處理器的消息。預(yù)處理器先處理以#開(kāi)頭的一行語(yǔ)句之后再編譯該程序。為一行預(yù)處理指令告訴預(yù)處理器要在程序中包括輸入、輸出的頭文件iostream.h的內(nèi)容。應(yīng)該在任何使用C++式輸入、輸出泫從鍵盤(pán)輸入數(shù)據(jù)或向屏幕輸出數(shù)據(jù)的程序中包括這個(gè)頭文件。注意,最新ANSI、ISOC++雜標(biāo)準(zhǔn)實(shí)際上指定iostream.h和其它標(biāo)準(zhǔn)頭文件不需要后綴.h,如iostream。我們?cè)诒窘坛讨杏袝r(shí)繼續(xù)使用舊式頭文件,因?yàn)橛行┚幾g器還不支持最新的ANSI/ISOC++草案標(biāo)準(zhǔn)。下列語(yǔ)句:intmain()是每個(gè)C++程序都包的語(yǔ)句。main后面的括號(hào)表示main是個(gè)程序基本組件,稱(chēng)為函數(shù)(function)。C++程序包含一個(gè)或幾個(gè)函數(shù),其中有且只有一個(gè)main函數(shù)即使main不是程序中的第一個(gè)函數(shù),C++程序通常都從main函數(shù)開(kāi)始執(zhí)行。main左邊的關(guān)鍵字int表示main返回一個(gè)整數(shù)值。左花括號(hào)({)應(yīng)放在每個(gè)函數(shù)體(body)開(kāi)頭,對(duì)應(yīng)右花括號(hào)(})應(yīng)放在每個(gè)函數(shù)的結(jié)尾。下列語(yǔ)句:cout<<"WelcomtoC++!\n";讓計(jì)算機(jī)在屏幕上打印引號(hào)之間的字符串(string)。整個(gè)行稱(chēng)為語(yǔ)句(statement),包括cout<<運(yùn)算符、字銜串"WelcomtoC++!\n"和分號(hào)(;)。每條語(yǔ)句應(yīng)以分號(hào)(又稱(chēng)為語(yǔ)句終止符)結(jié)束。C++中的輸出和輸入是用字符流(stream)完成的,這樣,執(zhí)行上述語(yǔ)句時(shí),將字符流"WelcomtoC++!"發(fā)送到標(biāo)準(zhǔn)輸出流對(duì)象(standardoutputstreamobject)cout,通常cout將其輸出到屏幕。第3章“C++輸入/輸出流”中將詳細(xì)介紹cout。運(yùn)算符<<稱(chēng)為流插入符(streminsertionoperator)。執(zhí)行這個(gè)程序時(shí),運(yùn)算符右邊的值(歷操作數(shù))插入輸出流中。歷操作數(shù)通常按引號(hào)中的原樣直接打印。但注意字符\n不在屏幕中打印。反斜杠(\)稱(chēng)為轉(zhuǎn)義符(escapcharacter),表示要輸出特殊字符。字符串中遇到反斜杠時(shí),下一個(gè)字符與反斜杠組合,形成轉(zhuǎn)義序列(escapesequence)。轉(zhuǎn)義序列\(zhòng)n表示換行符(newline)。使光標(biāo)(即當(dāng)前屏幕位置的指示符)移到下一行開(kāi)頭。表2.3列出了常用轉(zhuǎn)義序列。下列語(yǔ)句:return0;//indicatethatprogramendedsucessfully放在每個(gè)main函數(shù)的末尾。C++的關(guān)鍵字return是退出函數(shù)的幾種方式之一。main函數(shù)末尾使用return語(yǔ)句時(shí),數(shù)值0表示順利結(jié)束。第3章將詳細(xì)介紹和解釋包括這個(gè)語(yǔ)句的原因。目前只要記住在每個(gè)程序中都要包括這個(gè)語(yǔ)句。否則在某些程序中編譯器會(huì)產(chǎn)生警告消息。右花括號(hào)(})表示main函數(shù)結(jié)束。轉(zhuǎn)義序列說(shuō)明\n換行符,使屏幕光標(biāo)移到屏幕中下一行開(kāi)頭\t水平制表符,使屏幕光標(biāo)移到下一制表位\r回車(chē)符,使屏幕光標(biāo)移到當(dāng)前行開(kāi)頭,不移到下一行\(zhòng)a警告,發(fā)出系統(tǒng)警告聲音\\反斜杠,打印反斜杠符\"雙引號(hào),打印雙引號(hào)圖2.3常用轉(zhuǎn)義序列許多程序員讓函數(shù)打印的最后一個(gè)字符為換行符(\n)。這樣可以保證函數(shù)使屏幕光標(biāo)移到屏幕中下一行開(kāi)頭,這種習(xí)慣能促進(jìn)軟件復(fù)用,這是軟件開(kāi)發(fā)環(huán)境中的關(guān)鍵目標(biāo)。確定一個(gè)喜歡的縮排長(zhǎng)度,然后一直堅(jiān)持這個(gè)縮排長(zhǎng)度??梢杂弥票矸煽s排,但制表位可能改變。建議用1/4英寸制表位或三個(gè)空格的縮排長(zhǎng)度。"WelcomtoC++!"可用多種方法打印。例如,圖2.4的程序用多條流插入語(yǔ)句,產(chǎn)生的程序輸出與圖2.2相同,因?yàn)槊織l流插人語(yǔ)句在上一條語(yǔ)句停止的位置開(kāi)始打印。第一個(gè)流插入語(yǔ)句打印“Welcome”和空格,第二條流插入語(yǔ)句打印同一行空格后面的內(nèi)容。C++允許以多種方式表達(dá)語(yǔ)句。一條語(yǔ)句也可以用換行符打印多行,如圖2.5。每次在輸出流中遇到\n轉(zhuǎn)義序列時(shí),屏幕光標(biāo)移到下一行開(kāi)頭。要在輸出中得到空行,只要將兩個(gè)\n放在一起即可,如圖2.5。1//Fig.2.4:fig01_04.cpp2//printingalinewithmultplestatements3#include<iostream>4usingnamespacestd;5intmain()6{7cout<<"Welcom";8cout<<"toC++!\n";910return0;11}輸出結(jié)果:WelcomtoC++!圖2.4用多條流插入語(yǔ)句打印一行1//Fig.2.5:fig01_05.cpp2//printingmultiplelineswithasinglestatement3#include<iostream>4usingnamespacestd;5intmain()6{7cout<<"Welcome\nto\n\nC++!\n";89return0;//indicatethatprogramendedsucessfully10}輸出結(jié)果:WelcometoC++!圖2.5用一條流插入語(yǔ)句打印多行2.6簡(jiǎn)單程序:兩個(gè)整數(shù)相加下一個(gè)程序用輸入流對(duì)象cin和流讀取運(yùn)算符>>取得用戶(hù)從鍵盤(pán)中輸入的兩個(gè)整,計(jì)算這兩個(gè)值的和,并將結(jié)果用cout輸出。程序及其輸出如圖2.6。1//Fig.2.6:fig01_06.cpp2//Additionprogram3#include<iostream>4usingnamespacestd;5intmain()6{7intinteger1,integer2,sum;//聲明三個(gè)變量89cout<<"Enterfirstinteger\n";//提示信息10cin>>integer1;//從鍵盤(pán)讀一個(gè)整數(shù)11cout<<"Entersecondinteger\n";//提示信息12cin>>integer2;//從鍵盤(pán)讀一個(gè)整數(shù)13sum=integer1+integer2;//兩整數(shù)相加,值賦給變量sum14cout<<"Sumis"<<sum<<endl;//輸出和1516return0;//返回0值表示程序運(yùn)行成功。17}輸出結(jié)果:Enterfirstinteger45Entersecondinteger72Sumis117圖2.6兩個(gè)整數(shù)相加注釋語(yǔ)句://Fig.2.6:fig01_06.cpp//Additionprogram指定文件名和用途。C++預(yù)處理指令:#include<iostream>將iostream.h頭文件的內(nèi)容放進(jìn)程序中。前面介紹過(guò),每個(gè)程序從main函數(shù)開(kāi)始執(zhí)行。左花括號(hào)表示main函數(shù)體開(kāi)頭,相應(yīng)右花括號(hào)表示main函數(shù)體結(jié)束。下列語(yǔ)句:intinteger1,integer2,sum;是個(gè)聲明(declaration)。integer1,integer2和sum是變量(variable)名。變量是計(jì)算機(jī)內(nèi)存中的地址,存放程序使用的值。這個(gè)聲明指定變量integer1,integer2和sum的數(shù)據(jù)類(lèi)型為int,表示這些變量保存整數(shù)值,如7、-11、0、31914。所有變量都應(yīng)先聲明名稱(chēng)和數(shù)據(jù)類(lèi)型后才能在程序中使用。幾個(gè)相同類(lèi)型的變量可以在同一聲明或多個(gè)聲明中聲明。我們可以一次只聲明一個(gè)變量,但一次聲明多個(gè)同類(lèi)型變量更加簡(jiǎn)練。稍后要介紹數(shù)據(jù)類(lèi)型float,(定義實(shí)數(shù),即帶小數(shù)點(diǎn)的數(shù),如3.4、0.0、—11.19)和char(定義字符型數(shù)據(jù).變量char只能保存一個(gè)小寫(xiě)字母、一個(gè)大寫(xiě)字母、一個(gè)數(shù)字或一個(gè)特殊字符,如x、$、7、*等等)。變量聲明可以放在函數(shù)的任何位置,但變量聲明必須放在程序使用變量之前。如果不用一條語(yǔ)句聲明三個(gè)變量也可以分別聲明。下列聲明:intinteger1;可以放在下列語(yǔ)句之前:cin>>integerl;下列聲明:intinteger2;可以放在下列語(yǔ)句之前:cin>>integer2;下列聲明:intsum;可以放在下列語(yǔ)句之前:sum=integer1+integer2;下列句:cout<<"Enterfirstinteger\n";在屏幕上打印字符串Enterfirstinteger(b也稱(chēng)為字符串直接量(stringliteral)或直接量(literal)),將光標(biāo)移到下一行開(kāi)頭。這個(gè)消息稱(chēng)為提示(prompt),提示用戶(hù)進(jìn)行特定操作。上述語(yǔ)句表示cout得到字符串“Enterfirstinteger\n".下列語(yǔ)句:cin>>integer1;用輸入流對(duì)象cin和流讀取運(yùn)算符>>取得鍵盤(pán)中的值。利用流讀取運(yùn)算符cin從標(biāo)準(zhǔn)輸入流讀取輸入(通常是鍵盤(pán)輸入)。上述語(yǔ)句表示cin提供integer1的值。計(jì)算機(jī)執(zhí)行上述語(yǔ)句時(shí),等待用戶(hù)輸入變量integer1的值。用戶(hù)輸入整數(shù)值并按Enter鍵(或Return鍵),將數(shù)值發(fā)送給計(jì)算機(jī)。然后計(jì)算機(jī)將這個(gè)數(shù)(值)賦給變量integer1。程序中后面引用integer1時(shí)都使用這個(gè)值。cout和cin流對(duì)象實(shí)現(xiàn)用戶(hù)與計(jì)算機(jī)之間的交互。由于這個(gè)交互像對(duì)話一樣,因此通常稱(chēng)為對(duì)話式計(jì)算(conversationalcomputing)或交互式計(jì)算(interactivecomputing)。下列語(yǔ)句:cout<<"Entersecondinteger\n";在屏幕上打印”Entersecondinteger"字樣,然后移到下一行的開(kāi)頭。這個(gè)語(yǔ)句提示用戶(hù)進(jìn)行操作。下列語(yǔ)句:cin>>integer2;從用戶(hù)取得變量integer2的值。賦值語(yǔ)句:sum=integer1+integer2;計(jì)算變量integer1和integer2的和,然后用賦值運(yùn)算符(assignmentoperator)"="將結(jié)果賦給變量sum。這個(gè)語(yǔ)句表示sum取得integer1加integer2的值。大多數(shù)計(jì)算都是在賦值語(yǔ)句中進(jìn)行的。“=”運(yùn)算符和前面的“+”運(yùn)算符稱(chēng)為二元運(yùn)算符,兩個(gè)操作數(shù)是integer1和integer2。而對(duì)于“=”運(yùn)算符,兩個(gè)操作數(shù)是sum和表達(dá)式integer1+integer2的值。下列語(yǔ)句:cout<<"Sumis"<<sum<<endl;打印字符串"Sumis"和變量sum的數(shù)值,加上稱(chēng)為流操縱算子的endl(endline的縮寫(xiě))。endl輸出一個(gè)換行符,然后刷新輸出緩沖區(qū),即在一些系統(tǒng)中,輸出暫時(shí)在機(jī)器中緩存,等緩沖區(qū)滿(mǎn)時(shí)再打印到屏幕上,endl強(qiáng)制立即輸出到屏幕上。注意,上述語(yǔ)句輸出多種不同類(lèi)的值,流插入運(yùn)算符知道如何輸出每個(gè)數(shù)據(jù)。在一個(gè)語(yǔ)句中使用多個(gè)流插入運(yùn)算符稱(chēng)為連接(concatenating)、鏈接(chaining)或連續(xù)使用流插入操作。這樣,就不必用多條輸出語(yǔ)句輸出多個(gè)數(shù)據(jù)。計(jì)算可以在輸出語(yǔ)句中進(jìn)行??梢詫⑸鲜稣Z(yǔ)句合二為一:cout<<"Sumis"<<integer1+integer2<<endl;從而不需要變量sum。右花括號(hào)告訴計(jì)算機(jī)到達(dá)了函數(shù)main的結(jié)尾。C++的一個(gè)強(qiáng)大我就是用戶(hù)可以生成自己的數(shù)據(jù)類(lèi)型(詳見(jiàn)第6章),然后可以告訴C++如何用>>和<<運(yùn)算符輸入或輸出這種類(lèi)型的值(稱(chēng)為運(yùn)算符重載,見(jiàn)第8章)。2.7算術(shù)運(yùn)算算術(shù)運(yùn)算符見(jiàn)圖2.10,注意這里使用了許多代數(shù)中沒(méi)有使用的符號(hào)。星號(hào)(*)表示乘法、百分號(hào)(%)表示求模(modulus)。圖2.10所示的算術(shù)運(yùn)算符都是二元運(yùn)算符,即這些運(yùn)算符取兩個(gè)操作數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論