版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言實(shí)現(xiàn)
C語(yǔ)言實(shí)現(xiàn)1第一章:C語(yǔ)言概論課程目標(biāo):程序與程序語(yǔ)言C語(yǔ)言的組成C語(yǔ)言的上機(jī)過(guò)程第一章:C語(yǔ)言概論課程目標(biāo):2第一節(jié)程序與程序語(yǔ)言
程序的概念
程序是計(jì)算機(jī)的指令序列,編制程序的工作就是為計(jì)算機(jī)安排指令序列。程序語(yǔ)言的發(fā)展對(duì)程序設(shè)計(jì)語(yǔ)言的分類(lèi)可以從不同的角度進(jìn)行,如面向機(jī)器程序的設(shè)計(jì)語(yǔ)言,面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。其中最常見(jiàn)的方式是按使用方式和功能可分為低級(jí)語(yǔ)言和高級(jí)語(yǔ)言。第一節(jié)程序與程序語(yǔ)言程序的概念程3
高級(jí)語(yǔ)言只是要求人們向計(jì)算機(jī)描述問(wèn)題的求解過(guò)程,而不關(guān)心計(jì)算機(jī)的內(nèi)部結(jié)構(gòu),所以把高級(jí)語(yǔ)言稱(chēng)為“面向過(guò)程語(yǔ)言”,它易于被人們理解和接受,典型的面向過(guò)程語(yǔ)言有BASIC,FORTRAN,COBOL,C,Pascal等等。
低級(jí)語(yǔ)言包括機(jī)器語(yǔ)言和匯編語(yǔ)言。機(jī)器語(yǔ)言就是計(jì)算機(jī)指令的集合,它與計(jì)算機(jī)同時(shí)誕生,是第一代的計(jì)算機(jī)語(yǔ)言;匯編語(yǔ)言是用符號(hào)來(lái)表示計(jì)算機(jī)指令,被稱(chēng)為第二代語(yǔ)言。機(jī)器語(yǔ)言和匯編語(yǔ)言都是圍繞特定的計(jì)算機(jī)或計(jì)算機(jī)族而設(shè)計(jì)的。是面向計(jì)算機(jī)的語(yǔ)言。要使用這種語(yǔ)言必須了解計(jì)算機(jī)的內(nèi)部結(jié)構(gòu),而且難學(xué),難寫(xiě),難記憶,把這種語(yǔ)言稱(chēng)為低級(jí)語(yǔ)言。
“面向過(guò)程”是程序設(shè)計(jì)的基礎(chǔ),尤其對(duì)于程序設(shè)計(jì)的初學(xué)者。所以,我們將以面向過(guò)程的C程序設(shè)計(jì)語(yǔ)言為背景,主要介紹程序設(shè)計(jì)的基本概念和方法。高級(jí)語(yǔ)言只是要求人們向計(jì)算機(jī)描述問(wèn)題的4第二節(jié)C語(yǔ)言組成與上機(jī)過(guò)程
C語(yǔ)言是國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語(yǔ)言,它是1973年由美國(guó)貝爾實(shí)驗(yàn)室設(shè)計(jì)發(fā)布的。由于C語(yǔ)言既是一個(gè)非常成功的系統(tǒng)描述語(yǔ)言,又是一個(gè)相當(dāng)有效的通用程序設(shè)計(jì)語(yǔ)言,所以,從C語(yǔ)言誕生至今雖然只有近三十年的歷史,但其發(fā)展速度和應(yīng)用范圍卻是任何一種程序設(shè)計(jì)語(yǔ)言所無(wú)法比擬的。作為現(xiàn)代計(jì)算機(jī)語(yǔ)言的代表之一,C語(yǔ)言展現(xiàn)出強(qiáng)大的生命力。
第二節(jié)C語(yǔ)言組成與上機(jī)過(guò)程C語(yǔ)言是國(guó)5一、C語(yǔ)言的結(jié)構(gòu)
(一)兩個(gè)簡(jiǎn)單的C程序?qū)嵗齟g1-1:/*ThisisaHELLOCprogram.*/Voidmain(){Printf(“================\n”);Printf(“Howareyou!\n”);Printf(“================\n”);}這個(gè)程序的功能是輸出三行信息:================Howareyou!================一、C語(yǔ)言的結(jié)構(gòu)(一)兩個(gè)簡(jiǎn)單的C程序?qū)嵗齟g16eg1-2:計(jì)算函數(shù)M(x)是值。函數(shù)M(x)為:M(x)=bx+a2x<=aa(c-x)+c2x>a其中,a,b,c為常數(shù)實(shí)現(xiàn)此算法的C程序如下:eg1-2:計(jì)算函數(shù)M(x)是值。函數(shù)M(x)為:bx+7#include<stdio.h>main(){intx,m;scanf(“%d”,&x);m=sub(x);printf(“m=%d\n”,m);}intsub(intx1){inta,b,c,n;a=6;b=30;c=15;if(x1<a||x1==a)n=b*x1+a*a;elsen=a*(c-x1)+c*c;return(n);}這個(gè)程序的執(zhí)行結(jié)果如下:3(輸入3給x,其中表示回車(chē)符)126(輸出m的值)#include<stdio.h>8二、C語(yǔ)言的組成
一個(gè)C程序是C語(yǔ)言基本字符構(gòu)成的一個(gè)序列。C語(yǔ)言的基本字符集包括:數(shù)字字符:0,1,2,3,4,5,6,7,8,9拉丁字母:A,B,C……,Z,a,b,c……,z(注意:字母的大小是可區(qū)分的。如:abc與ABC是不同的)運(yùn)算符:+、-、*、/、%、=、<、>、
<=、>=、!=、==、<<、>>、&、|、&&、||、^、~、(、)、[、]、->、.、!、?、:、,、;特殊符號(hào)和不可顯示字符:_(連字符或下劃線),空格,換行,制表符對(duì)初學(xué)者來(lái)說(shuō):書(shū)寫(xiě)程序要從一開(kāi)始就養(yǎng)成良好的習(xí)慣,力求字符準(zhǔn)確,工整,清晰,尤其要注意區(qū)分一些字形上容易混淆的字符,避免給程序的閱讀,錄入和調(diào)試工作帶來(lái)不必要的麻煩。(一)基本字符集二、C語(yǔ)言的組成一個(gè)C程序是C語(yǔ)言基本字符構(gòu)成的一9在程序中有許多需要命名的對(duì)象,以便在程序是其他地方使用。這些名字包括:變量名、常數(shù)名、函數(shù)名、文件名、類(lèi)型名等,通常被統(tǒng)稱(chēng)為“標(biāo)識(shí)符”。(二)標(biāo)識(shí)符C語(yǔ)言規(guī)定,標(biāo)識(shí)符由字母、數(shù)字或下劃線(_)組成,它的第一個(gè)字符必須是字母或下劃線。這里要說(shuō)明的是,為了標(biāo)識(shí)符構(gòu)造和閱讀的方便,C語(yǔ)言把下劃線作為一個(gè)特殊使用,它可以出現(xiàn)在標(biāo)識(shí)符字符序列的任何地方,特別是它可以作為標(biāo)識(shí)符的第一個(gè)字符出現(xiàn)。C語(yǔ)言還規(guī)定,標(biāo)識(shí)符中同一個(gè)字母的大寫(xiě)與小寫(xiě)被看作是不同的字符。這樣,a和A,AB、Ab是互不相同的標(biāo)識(shí)符。在程序中有許多需要命名的對(duì)象,以便在程10C語(yǔ)言有一些具有特定含義的關(guān)鍵字,用作專(zhuān)用的定義符。這些特定的關(guān)鍵字不允許用戶作為自定義的標(biāo)識(shí)符使用。C語(yǔ)言關(guān)鍵字絕大多數(shù)是由小寫(xiě)字母的字符序列,它們是:(按字母次序排列)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile
(三)關(guān)鍵字C語(yǔ)言有一些具有特定含義的關(guān)鍵字,用作專(zhuān)用的定義符11語(yǔ)句是組成的基本單位,它能完成特定操作,語(yǔ)句的有機(jī)組合能實(shí)現(xiàn)指定的計(jì)算機(jī)處理功能。C語(yǔ)言中的語(yǔ)句有以下幾類(lèi):(四)語(yǔ)句選擇語(yǔ)句if,switch流程控制語(yǔ)句循環(huán)語(yǔ)句for,while,do_while轉(zhuǎn)移語(yǔ)句break,continue,return,gotoC語(yǔ)句表達(dá)式語(yǔ)句復(fù)合語(yǔ)句空語(yǔ)句這些語(yǔ)句的形式和使用見(jiàn)后續(xù)相關(guān)章節(jié)。語(yǔ)句是組成的基本單位,它能完成特定操作,語(yǔ)句的有12(五)標(biāo)準(zhǔn)庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)不是C語(yǔ)言本身的組成部分,它是由C編譯系統(tǒng)提供的一些非常有用的功能函數(shù)。例如,C語(yǔ)言沒(méi)有輸入/輸出語(yǔ)句,也沒(méi)有直接處理字符串的語(yǔ)句,而一般的C編譯系統(tǒng)都提供了完成這些功能的函數(shù),稱(chēng)為標(biāo)準(zhǔn)庫(kù)函數(shù)。MicrosoftVisualC++6.0編譯系統(tǒng)提供了四百多個(gè)庫(kù)函數(shù),常用的有數(shù)學(xué)函數(shù),字符函數(shù)和字符串函數(shù),輸入輸出函數(shù),動(dòng)態(tài)分配函數(shù)和隨機(jī)函數(shù)等幾個(gè)大類(lèi)。(五)標(biāo)準(zhǔn)庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)不是C語(yǔ)言本身的組13三、C程序的上機(jī)執(zhí)行過(guò)程
編寫(xiě)出C程序僅僅是程序設(shè)計(jì)工作中是一個(gè)環(huán)節(jié),寫(xiě)出來(lái)的程序需要在計(jì)算機(jī)上進(jìn)行調(diào)式運(yùn)行,直到得到正確的運(yùn)行結(jié)果為止。C語(yǔ)言的上機(jī)過(guò)程C語(yǔ)言處理系統(tǒng)提供的開(kāi)發(fā)環(huán)境是編譯系統(tǒng),所以,C程序的上機(jī)執(zhí)行過(guò)程一般要經(jīng)過(guò)如圖1-1所示的四個(gè)步驟,即:編輯,編譯,連接和運(yùn)行。圖中虛線框內(nèi)是C編譯系統(tǒng)提供是語(yǔ)言處理程序和C標(biāo)準(zhǔn)庫(kù)函數(shù),單線框內(nèi)是用戶程序。下面分別說(shuō)明上機(jī)執(zhí)行過(guò)程。三、C程序的上機(jī)執(zhí)行過(guò)程編寫(xiě)出C程序僅僅14C庫(kù)函數(shù)連接程序C編譯系統(tǒng)編輯程序編譯程序用戶編輯C源程序.文件編譯目標(biāo)程序.obj文件可執(zhí)行程序.exe文件連接其它目標(biāo)文件結(jié)果執(zhí)行圖1-1程序的上機(jī)執(zhí)行過(guò)程C庫(kù)函數(shù)連接程序C編譯系統(tǒng)編輯程序編譯程序編輯C源程序編譯目15(一)編輯C源程序編輯是用戶把編寫(xiě)好的C語(yǔ)言源程序輸入計(jì)算機(jī),并以文本文件的形式存放在磁盤(pán)上。其標(biāo)識(shí)為:“文件名.C”其中文件名是由用戶指定的符合C標(biāo)識(shí)符規(guī)定的任意字符組合,擴(kuò)展名要求為“.C”,表示是C源程序。例如File1.c,t.c等。(二)編譯C源程序編譯是把C語(yǔ)言源程序翻譯成用二進(jìn)制指令表示的目標(biāo)文件。編譯過(guò)程由C編譯系統(tǒng)提供的編譯程序完成。(一)編輯C源程序編輯是用戶把編寫(xiě)好的C語(yǔ)言16(三)程序連接目標(biāo)程序計(jì)算機(jī)還是不能執(zhí)行的。程序連接過(guò)程是用系統(tǒng)提供的連接程序(也稱(chēng)鏈接程序或裝配置程序)將目標(biāo)程序,庫(kù)函數(shù)或其它目標(biāo)程序連接裝配成可執(zhí)行的目標(biāo)程序??蓤?zhí)行程序的文件名為:“文件名.exe”,擴(kuò)展名:“.exe”是可執(zhí)行程序的文件類(lèi)型標(biāo)識(shí)。絕大部分系統(tǒng)生成的可執(zhí)行文件的擴(kuò)展名是“.exe”,但UNIX系統(tǒng)中,生成的可執(zhí)行文件自動(dòng)確定為“a.out”,除非在編譯時(shí)用戶特別規(guī)定自己的文件名。
有的C編譯系統(tǒng)把編譯和連接放在一個(gè)命令文件中,用一條命令即可完成編譯和連接任務(wù),減少了操作過(guò)程。(三)程序連接目標(biāo)程序計(jì)算機(jī)還是不能執(zhí)行的17(四)運(yùn)行程序運(yùn)行程序是指將可執(zhí)行的目標(biāo)投入運(yùn)行。以獲取程序處理的結(jié)果。如果程序運(yùn)行結(jié)果不正確,可重新回到第一步,重新對(duì)程序進(jìn)行編輯修改,編譯和運(yùn)行。與編譯,連接不同的是,運(yùn)行程序可以脫離語(yǔ)言處理環(huán)境。因?yàn)樗菍?duì)一個(gè)可執(zhí)行程序進(jìn)行操作,與C語(yǔ)言本身已經(jīng)沒(méi)有聯(lián)系,所以可以在語(yǔ)言開(kāi)發(fā)環(huán)境下運(yùn)行,也可直接在操作系統(tǒng)下運(yùn)行。必須指出,對(duì)不同型號(hào)計(jì)算機(jī)上的C語(yǔ)言版本,上機(jī)環(huán)境各不同,編譯系統(tǒng)支持性能各異,上述步驟有些可再分解,有些也可集成進(jìn)行批處理,但邏輯上是基本相同的。目前在微機(jī)上常用的C語(yǔ)言編譯系統(tǒng)中,BorlandInternational公司的TurboC和Microsoft公司的MicrosoftVisualC++,GNUCcompiler等都被廣泛使用。以下簡(jiǎn)單介紹MicrosoftVisualC++6.0集成開(kāi)發(fā)的使用。(四)運(yùn)行程序運(yùn)行程序是指將可執(zhí)行的目標(biāo)投入18切換tc編譯器的窗口大小的快捷方式是alt+enter。F9編譯,ctrl+F9運(yùn)行,alt+F5屏幕顯示!F1
獲得TurboC2.0編輯命令的幫助信息;F5
擴(kuò)大編輯窗口到整個(gè)屏幕;F6
在編輯窗口與信息窗口之間進(jìn)行切換;F10
從編輯窗口轉(zhuǎn)到主菜單。切換tc編譯器的窗口大小的快捷方式是alt+enter。F9191、新建VC工具啟動(dòng)VC后上圖,選擇菜單[File/New]將看到新建工程向?qū)?。圖1-2VC的界面1、新建VC工具啟動(dòng)VC后上圖,選擇菜單[File/New]20選擇Win32ConsoleApplication項(xiàng)目,并在Projectname下面的編輯框里輸入一個(gè)工程名,Location標(biāo)簽下面選擇工程存放的路徑,然后選擇OK。圖1-3VC工程向?qū)?選擇Win32ConsoleApplica21圖1-4VC工程向?qū)?選擇Asimpleapplication然后點(diǎn)擊Finish。就回到
下面這個(gè)界面:圖1-4VC工程向?qū)?選擇Asimpleapplic22圖1-5VC工程編輯器VC工程編輯器主要分成三個(gè)部分:工作區(qū),
程序編輯區(qū),輸出區(qū)。圖1-5VC工程編輯器VC工程編輯器主要分成三個(gè)部分232、編譯和連接 代碼編輯完成后,就可以選擇菜單項(xiàng)[Build/CompileMyProgram.cpp]來(lái)對(duì)源文件進(jìn)程編譯。如果程序有錯(cuò),編譯系統(tǒng)會(huì)在輸出區(qū)給出編譯結(jié)果報(bào)告,并將警告和錯(cuò)誤信息(包括錯(cuò)誤說(shuō)明及位置)顯示在輸出中,雙擊出錯(cuò)信息的程序行,自動(dòng)進(jìn)入編輯狀態(tài)。全部修改完成后,重心進(jìn)行編譯即可。3、運(yùn)行程序
運(yùn)行編譯連接后的.EXE文件。選擇菜單項(xiàng)[Build/ExecuteMyProgram.exe]。2、編譯和連接 代碼編輯完成后,就可以選擇菜單項(xiàng)[Build24第三節(jié)實(shí)例:使用VisualC++6.6開(kāi)發(fā)環(huán)境
一、VC菜單介紹(一)File菜單:包含對(duì)文件和工作區(qū)的打開(kāi),關(guān)閉,保存的功能項(xiàng)
(二)Edit菜單:包含代碼的定位,編碼功能
(三)View菜單:包含查看類(lèi)對(duì)話框,資源對(duì)話框,和其它幾個(gè)功能窗口的功能(四)Insert菜單:新建類(lèi),資源等
(五)Project菜單:以整個(gè)工程為操作對(duì)象
(六)Build菜單(七)Tools菜單第三節(jié)實(shí)例:使用VisualC++6.6開(kāi)發(fā)環(huán)境一25二、VC工程的創(chuàng)建與執(zhí)行(一)嘗試創(chuàng)建一個(gè)Console工程,輸入如下代碼進(jìn)行編譯連接,查看運(yùn)行結(jié)果/*
*我的第一個(gè)C程序
*/
#include“stdafx.h”
#include<stdio.h>Voidmain()
{
printf(“這是我的第一個(gè)C程序\n”);}運(yùn)行結(jié)果輸出如下,如果達(dá)不到這個(gè)結(jié)果,則應(yīng)檢查編碼過(guò)程有沒(méi)出錯(cuò)。這是我的第一個(gè)C程序二、VC工程的創(chuàng)建與執(zhí)行(一)嘗試創(chuàng)建一個(gè)Console工26第四節(jié)實(shí)例:打印星號(hào)一、程序要求用“*”號(hào)打印一個(gè)“中”字。輸出效果如下圖:***
***
**************
*******
**************
***
***
***第四節(jié)實(shí)例:打印星號(hào)一、程序要求用“*”號(hào)打印一個(gè)27二、編碼提示要使用輸出函數(shù)Printf,必須要在文件開(kāi)頭有#include<satdio.h>輸出時(shí)每行要用空格來(lái)控制字樣輸出時(shí)用\n來(lái)?yè)Q行。若是在VC環(huán)境,則要在文件頭有#include”stdafx.h”語(yǔ)句,否則編譯時(shí)會(huì)報(bào)告錯(cuò)誤:找不到預(yù)編譯頭。如果實(shí)在不想包含這個(gè)文件,也可以用下面這個(gè)辦法,點(diǎn)擊菜單[Project/Settings…]彈出下面這個(gè)對(duì)話框:二、編碼提示要使用輸出函數(shù)Printf,必須要在文件開(kāi)頭有#28圖1-6設(shè)置不使用VC預(yù)編譯頭 在圖1-6中選擇C/C++屬性頁(yè),在Category里選擇PrecompiledHeaders,然后選擇Notusingprecompiledheaders并點(diǎn)擊OK。這樣的設(shè)置下就不會(huì)報(bào)告類(lèi)似的錯(cuò)誤了。頂點(diǎn)位置(290,128)矩形大小(639,465)光標(biāo)坐標(biāo)(710,376)圖1-6設(shè)置不使用VC預(yù)編譯頭 在圖1-6中選擇C/C++屬29三、程序清單#include“stdafx.h”
#include<stdio.h>Voidmain()
{
printf(“***\n”);
printf(“***\n”);
printf(“************\n”);
printf(“*******\n”);
printf(“************\n”);
printf(“***\n”);
printf(“***\n”);
printf(“***\n”);
}三、程序清單#include“stdafx.h”
#inc30本章總結(jié)程序是指為解決某一問(wèn)題而設(shè)計(jì)的計(jì)算機(jī)指令的稽核,程序設(shè)計(jì)語(yǔ)言則是編寫(xiě)計(jì)算機(jī)程序所使用的語(yǔ)言。隨著計(jì)算機(jī)的發(fā)展,程序設(shè)計(jì)語(yǔ)言經(jīng)歷了幾個(gè)大的階段:機(jī)器語(yǔ)言,匯編語(yǔ)言和高級(jí)語(yǔ)言,高級(jí)語(yǔ)言使用類(lèi)似自然語(yǔ)言的形式描述對(duì)問(wèn)題的處理過(guò)程。C語(yǔ)言也屬于高級(jí)語(yǔ)言中的一種,因此具有高級(jí)語(yǔ)言的特性,不僅僅C語(yǔ)言還可以象匯編語(yǔ)言那樣直接處理通常要由機(jī)器指令來(lái)實(shí)現(xiàn)的各種運(yùn)算。一個(gè)完整的C語(yǔ)言程序由一個(gè)或多個(gè)具有相對(duì)獨(dú)立功能的程序模塊組成,這些模塊稱(chēng)為函數(shù),一個(gè)C程序至少有一個(gè)稱(chēng)為main的函數(shù),用來(lái)標(biāo)識(shí)整個(gè)程序的起點(diǎn)和終點(diǎn)。在每個(gè)程序模塊內(nèi)部和模塊之間使用C語(yǔ)言定義的語(yǔ)法描述程序功能的實(shí)現(xiàn)。
一個(gè)C語(yǔ)言程序要正確的運(yùn)行必須經(jīng)過(guò)編輯,編譯,連接和運(yùn)行則幾個(gè)步驟。本章總結(jié)程序是指為解決某一問(wèn)題而設(shè)計(jì)的計(jì)算機(jī)31作業(yè)編寫(xiě)一段C語(yǔ)言程序,輸出學(xué)員的姓名。體驗(yàn)C語(yǔ)言的上機(jī)過(guò)程作業(yè)編寫(xiě)一段C語(yǔ)言程序,輸出學(xué)員的姓名。體驗(yàn)C語(yǔ)言的上機(jī)過(guò)程32C語(yǔ)言實(shí)現(xiàn)
C語(yǔ)言實(shí)現(xiàn)33第一章:C語(yǔ)言概論課程目標(biāo):程序與程序語(yǔ)言C語(yǔ)言的組成C語(yǔ)言的上機(jī)過(guò)程第一章:C語(yǔ)言概論課程目標(biāo):34第一節(jié)程序與程序語(yǔ)言
程序的概念
程序是計(jì)算機(jī)的指令序列,編制程序的工作就是為計(jì)算機(jī)安排指令序列。程序語(yǔ)言的發(fā)展對(duì)程序設(shè)計(jì)語(yǔ)言的分類(lèi)可以從不同的角度進(jìn)行,如面向機(jī)器程序的設(shè)計(jì)語(yǔ)言,面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。其中最常見(jiàn)的方式是按使用方式和功能可分為低級(jí)語(yǔ)言和高級(jí)語(yǔ)言。第一節(jié)程序與程序語(yǔ)言程序的概念程35
高級(jí)語(yǔ)言只是要求人們向計(jì)算機(jī)描述問(wèn)題的求解過(guò)程,而不關(guān)心計(jì)算機(jī)的內(nèi)部結(jié)構(gòu),所以把高級(jí)語(yǔ)言稱(chēng)為“面向過(guò)程語(yǔ)言”,它易于被人們理解和接受,典型的面向過(guò)程語(yǔ)言有BASIC,FORTRAN,COBOL,C,Pascal等等。
低級(jí)語(yǔ)言包括機(jī)器語(yǔ)言和匯編語(yǔ)言。機(jī)器語(yǔ)言就是計(jì)算機(jī)指令的集合,它與計(jì)算機(jī)同時(shí)誕生,是第一代的計(jì)算機(jī)語(yǔ)言;匯編語(yǔ)言是用符號(hào)來(lái)表示計(jì)算機(jī)指令,被稱(chēng)為第二代語(yǔ)言。機(jī)器語(yǔ)言和匯編語(yǔ)言都是圍繞特定的計(jì)算機(jī)或計(jì)算機(jī)族而設(shè)計(jì)的。是面向計(jì)算機(jī)的語(yǔ)言。要使用這種語(yǔ)言必須了解計(jì)算機(jī)的內(nèi)部結(jié)構(gòu),而且難學(xué),難寫(xiě),難記憶,把這種語(yǔ)言稱(chēng)為低級(jí)語(yǔ)言。
“面向過(guò)程”是程序設(shè)計(jì)的基礎(chǔ),尤其對(duì)于程序設(shè)計(jì)的初學(xué)者。所以,我們將以面向過(guò)程的C程序設(shè)計(jì)語(yǔ)言為背景,主要介紹程序設(shè)計(jì)的基本概念和方法。高級(jí)語(yǔ)言只是要求人們向計(jì)算機(jī)描述問(wèn)題的36第二節(jié)C語(yǔ)言組成與上機(jī)過(guò)程
C語(yǔ)言是國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語(yǔ)言,它是1973年由美國(guó)貝爾實(shí)驗(yàn)室設(shè)計(jì)發(fā)布的。由于C語(yǔ)言既是一個(gè)非常成功的系統(tǒng)描述語(yǔ)言,又是一個(gè)相當(dāng)有效的通用程序設(shè)計(jì)語(yǔ)言,所以,從C語(yǔ)言誕生至今雖然只有近三十年的歷史,但其發(fā)展速度和應(yīng)用范圍卻是任何一種程序設(shè)計(jì)語(yǔ)言所無(wú)法比擬的。作為現(xiàn)代計(jì)算機(jī)語(yǔ)言的代表之一,C語(yǔ)言展現(xiàn)出強(qiáng)大的生命力。
第二節(jié)C語(yǔ)言組成與上機(jī)過(guò)程C語(yǔ)言是國(guó)37一、C語(yǔ)言的結(jié)構(gòu)
(一)兩個(gè)簡(jiǎn)單的C程序?qū)嵗齟g1-1:/*ThisisaHELLOCprogram.*/Voidmain(){Printf(“================\n”);Printf(“Howareyou!\n”);Printf(“================\n”);}這個(gè)程序的功能是輸出三行信息:================Howareyou!================一、C語(yǔ)言的結(jié)構(gòu)(一)兩個(gè)簡(jiǎn)單的C程序?qū)嵗齟g138eg1-2:計(jì)算函數(shù)M(x)是值。函數(shù)M(x)為:M(x)=bx+a2x<=aa(c-x)+c2x>a其中,a,b,c為常數(shù)實(shí)現(xiàn)此算法的C程序如下:eg1-2:計(jì)算函數(shù)M(x)是值。函數(shù)M(x)為:bx+39#include<stdio.h>main(){intx,m;scanf(“%d”,&x);m=sub(x);printf(“m=%d\n”,m);}intsub(intx1){inta,b,c,n;a=6;b=30;c=15;if(x1<a||x1==a)n=b*x1+a*a;elsen=a*(c-x1)+c*c;return(n);}這個(gè)程序的執(zhí)行結(jié)果如下:3(輸入3給x,其中表示回車(chē)符)126(輸出m的值)#include<stdio.h>40二、C語(yǔ)言的組成
一個(gè)C程序是C語(yǔ)言基本字符構(gòu)成的一個(gè)序列。C語(yǔ)言的基本字符集包括:數(shù)字字符:0,1,2,3,4,5,6,7,8,9拉丁字母:A,B,C……,Z,a,b,c……,z(注意:字母的大小是可區(qū)分的。如:abc與ABC是不同的)運(yùn)算符:+、-、*、/、%、=、<、>、
<=、>=、!=、==、<<、>>、&、|、&&、||、^、~、(、)、[、]、->、.、!、?、:、,、;特殊符號(hào)和不可顯示字符:_(連字符或下劃線),空格,換行,制表符對(duì)初學(xué)者來(lái)說(shuō):書(shū)寫(xiě)程序要從一開(kāi)始就養(yǎng)成良好的習(xí)慣,力求字符準(zhǔn)確,工整,清晰,尤其要注意區(qū)分一些字形上容易混淆的字符,避免給程序的閱讀,錄入和調(diào)試工作帶來(lái)不必要的麻煩。(一)基本字符集二、C語(yǔ)言的組成一個(gè)C程序是C語(yǔ)言基本字符構(gòu)成的一41在程序中有許多需要命名的對(duì)象,以便在程序是其他地方使用。這些名字包括:變量名、常數(shù)名、函數(shù)名、文件名、類(lèi)型名等,通常被統(tǒng)稱(chēng)為“標(biāo)識(shí)符”。(二)標(biāo)識(shí)符C語(yǔ)言規(guī)定,標(biāo)識(shí)符由字母、數(shù)字或下劃線(_)組成,它的第一個(gè)字符必須是字母或下劃線。這里要說(shuō)明的是,為了標(biāo)識(shí)符構(gòu)造和閱讀的方便,C語(yǔ)言把下劃線作為一個(gè)特殊使用,它可以出現(xiàn)在標(biāo)識(shí)符字符序列的任何地方,特別是它可以作為標(biāo)識(shí)符的第一個(gè)字符出現(xiàn)。C語(yǔ)言還規(guī)定,標(biāo)識(shí)符中同一個(gè)字母的大寫(xiě)與小寫(xiě)被看作是不同的字符。這樣,a和A,AB、Ab是互不相同的標(biāo)識(shí)符。在程序中有許多需要命名的對(duì)象,以便在程42C語(yǔ)言有一些具有特定含義的關(guān)鍵字,用作專(zhuān)用的定義符。這些特定的關(guān)鍵字不允許用戶作為自定義的標(biāo)識(shí)符使用。C語(yǔ)言關(guān)鍵字絕大多數(shù)是由小寫(xiě)字母的字符序列,它們是:(按字母次序排列)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile
(三)關(guān)鍵字C語(yǔ)言有一些具有特定含義的關(guān)鍵字,用作專(zhuān)用的定義符43語(yǔ)句是組成的基本單位,它能完成特定操作,語(yǔ)句的有機(jī)組合能實(shí)現(xiàn)指定的計(jì)算機(jī)處理功能。C語(yǔ)言中的語(yǔ)句有以下幾類(lèi):(四)語(yǔ)句選擇語(yǔ)句if,switch流程控制語(yǔ)句循環(huán)語(yǔ)句for,while,do_while轉(zhuǎn)移語(yǔ)句break,continue,return,gotoC語(yǔ)句表達(dá)式語(yǔ)句復(fù)合語(yǔ)句空語(yǔ)句這些語(yǔ)句的形式和使用見(jiàn)后續(xù)相關(guān)章節(jié)。語(yǔ)句是組成的基本單位,它能完成特定操作,語(yǔ)句的有44(五)標(biāo)準(zhǔn)庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)不是C語(yǔ)言本身的組成部分,它是由C編譯系統(tǒng)提供的一些非常有用的功能函數(shù)。例如,C語(yǔ)言沒(méi)有輸入/輸出語(yǔ)句,也沒(méi)有直接處理字符串的語(yǔ)句,而一般的C編譯系統(tǒng)都提供了完成這些功能的函數(shù),稱(chēng)為標(biāo)準(zhǔn)庫(kù)函數(shù)。MicrosoftVisualC++6.0編譯系統(tǒng)提供了四百多個(gè)庫(kù)函數(shù),常用的有數(shù)學(xué)函數(shù),字符函數(shù)和字符串函數(shù),輸入輸出函數(shù),動(dòng)態(tài)分配函數(shù)和隨機(jī)函數(shù)等幾個(gè)大類(lèi)。(五)標(biāo)準(zhǔn)庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)不是C語(yǔ)言本身的組45三、C程序的上機(jī)執(zhí)行過(guò)程
編寫(xiě)出C程序僅僅是程序設(shè)計(jì)工作中是一個(gè)環(huán)節(jié),寫(xiě)出來(lái)的程序需要在計(jì)算機(jī)上進(jìn)行調(diào)式運(yùn)行,直到得到正確的運(yùn)行結(jié)果為止。C語(yǔ)言的上機(jī)過(guò)程C語(yǔ)言處理系統(tǒng)提供的開(kāi)發(fā)環(huán)境是編譯系統(tǒng),所以,C程序的上機(jī)執(zhí)行過(guò)程一般要經(jīng)過(guò)如圖1-1所示的四個(gè)步驟,即:編輯,編譯,連接和運(yùn)行。圖中虛線框內(nèi)是C編譯系統(tǒng)提供是語(yǔ)言處理程序和C標(biāo)準(zhǔn)庫(kù)函數(shù),單線框內(nèi)是用戶程序。下面分別說(shuō)明上機(jī)執(zhí)行過(guò)程。三、C程序的上機(jī)執(zhí)行過(guò)程編寫(xiě)出C程序僅僅46C庫(kù)函數(shù)連接程序C編譯系統(tǒng)編輯程序編譯程序用戶編輯C源程序.文件編譯目標(biāo)程序.obj文件可執(zhí)行程序.exe文件連接其它目標(biāo)文件結(jié)果執(zhí)行圖1-1程序的上機(jī)執(zhí)行過(guò)程C庫(kù)函數(shù)連接程序C編譯系統(tǒng)編輯程序編譯程序編輯C源程序編譯目47(一)編輯C源程序編輯是用戶把編寫(xiě)好的C語(yǔ)言源程序輸入計(jì)算機(jī),并以文本文件的形式存放在磁盤(pán)上。其標(biāo)識(shí)為:“文件名.C”其中文件名是由用戶指定的符合C標(biāo)識(shí)符規(guī)定的任意字符組合,擴(kuò)展名要求為“.C”,表示是C源程序。例如File1.c,t.c等。(二)編譯C源程序編譯是把C語(yǔ)言源程序翻譯成用二進(jìn)制指令表示的目標(biāo)文件。編譯過(guò)程由C編譯系統(tǒng)提供的編譯程序完成。(一)編輯C源程序編輯是用戶把編寫(xiě)好的C語(yǔ)言48(三)程序連接目標(biāo)程序計(jì)算機(jī)還是不能執(zhí)行的。程序連接過(guò)程是用系統(tǒng)提供的連接程序(也稱(chēng)鏈接程序或裝配置程序)將目標(biāo)程序,庫(kù)函數(shù)或其它目標(biāo)程序連接裝配成可執(zhí)行的目標(biāo)程序??蓤?zhí)行程序的文件名為:“文件名.exe”,擴(kuò)展名:“.exe”是可執(zhí)行程序的文件類(lèi)型標(biāo)識(shí)。絕大部分系統(tǒng)生成的可執(zhí)行文件的擴(kuò)展名是“.exe”,但UNIX系統(tǒng)中,生成的可執(zhí)行文件自動(dòng)確定為“a.out”,除非在編譯時(shí)用戶特別規(guī)定自己的文件名。
有的C編譯系統(tǒng)把編譯和連接放在一個(gè)命令文件中,用一條命令即可完成編譯和連接任務(wù),減少了操作過(guò)程。(三)程序連接目標(biāo)程序計(jì)算機(jī)還是不能執(zhí)行的49(四)運(yùn)行程序運(yùn)行程序是指將可執(zhí)行的目標(biāo)投入運(yùn)行。以獲取程序處理的結(jié)果。如果程序運(yùn)行結(jié)果不正確,可重新回到第一步,重新對(duì)程序進(jìn)行編輯修改,編譯和運(yùn)行。與編譯,連接不同的是,運(yùn)行程序可以脫離語(yǔ)言處理環(huán)境。因?yàn)樗菍?duì)一個(gè)可執(zhí)行程序進(jìn)行操作,與C語(yǔ)言本身已經(jīng)沒(méi)有聯(lián)系,所以可以在語(yǔ)言開(kāi)發(fā)環(huán)境下運(yùn)行,也可直接在操作系統(tǒng)下運(yùn)行。必須指出,對(duì)不同型號(hào)計(jì)算機(jī)上的C語(yǔ)言版本,上機(jī)環(huán)境各不同,編譯系統(tǒng)支持性能各異,上述步驟有些可再分解,有些也可集成進(jìn)行批處理,但邏輯上是基本相同的。目前在微機(jī)上常用的C語(yǔ)言編譯系統(tǒng)中,BorlandInternational公司的TurboC和Microsoft公司的MicrosoftVisualC++,GNUCcompiler等都被廣泛使用。以下簡(jiǎn)單介紹MicrosoftVisualC++6.0集成開(kāi)發(fā)的使用。(四)運(yùn)行程序運(yùn)行程序是指將可執(zhí)行的目標(biāo)投入50切換tc編譯器的窗口大小的快捷方式是alt+enter。F9編譯,ctrl+F9運(yùn)行,alt+F5屏幕顯示!F1
獲得TurboC2.0編輯命令的幫助信息;F5
擴(kuò)大編輯窗口到整個(gè)屏幕;F6
在編輯窗口與信息窗口之間進(jìn)行切換;F10
從編輯窗口轉(zhuǎn)到主菜單。切換tc編譯器的窗口大小的快捷方式是alt+enter。F9511、新建VC工具啟動(dòng)VC后上圖,選擇菜單[File/New]將看到新建工程向?qū)?。圖1-2VC的界面1、新建VC工具啟動(dòng)VC后上圖,選擇菜單[File/New]52選擇Win32ConsoleApplication項(xiàng)目,并在Projectname下面的編輯框里輸入一個(gè)工程名,Location標(biāo)簽下面選擇工程存放的路徑,然后選擇OK。圖1-3VC工程向?qū)?選擇Win32ConsoleApplica53圖1-4VC工程向?qū)?選擇Asimpleapplication然后點(diǎn)擊Finish。就回到
下面這個(gè)界面:圖1-4VC工程向?qū)?選擇Asimpleapplic54圖1-5VC工程編輯器VC工程編輯器主要分成三個(gè)部分:工作區(qū),
程序編輯區(qū),輸出區(qū)。圖1-5VC工程編輯器VC工程編輯器主要分成三個(gè)部分552、編譯和連接 代碼編輯完成后,就可以選擇菜單項(xiàng)[Build/CompileMyProgram.cpp]來(lái)對(duì)源文件進(jìn)程編譯。如果程序有錯(cuò),編譯系統(tǒng)會(huì)在輸出區(qū)給出編譯結(jié)果報(bào)告,并將警告和錯(cuò)誤信息(包括錯(cuò)誤說(shuō)明及位置)顯示在輸出中,雙擊出錯(cuò)信息的程序行,自動(dòng)進(jìn)入編輯狀態(tài)。全部修改完成后,重心進(jìn)行編譯即可。3、運(yùn)行程序
運(yùn)行編譯連接后的.EXE文件。選擇菜單項(xiàng)[Build/ExecuteMyProgram.exe]。2、編譯和連接 代碼編輯完成后,就可以選擇菜單項(xiàng)[Build56第三節(jié)實(shí)例:使用VisualC++6.6開(kāi)發(fā)環(huán)境
一、VC菜單介紹(一)File菜單:包含對(duì)文件和工作區(qū)的打開(kāi),關(guān)閉,保存的功能項(xiàng)
(二)Edit菜單:包含代碼的定位,編碼功能
(三)View菜單:包含查看類(lèi)對(duì)話框,資源對(duì)話框,和其它幾個(gè)功能窗口的功能(四)Insert菜單:新建類(lèi),資源等
(五)Project菜單:以整個(gè)工程為操作對(duì)象
(六)Build菜單(七)Tools菜單第三節(jié)實(shí)例:使用VisualC++6.6開(kāi)發(fā)環(huán)境一57二、VC工程的創(chuàng)建與執(zhí)行(一)嘗試創(chuàng)建一個(gè)Console工程,輸入如下代碼進(jìn)行編譯連接,查看運(yùn)行結(jié)果/*
*我的第一個(gè)C程序
*/
#include“stdafx.h”
#include<stdio.h>Voidmain()
{
printf(“這是我的第一個(gè)C程序\n”);}運(yùn)行結(jié)果輸出如下,如果達(dá)不到這個(gè)結(jié)果,則應(yīng)檢查編碼過(guò)程有沒(méi)出錯(cuò)。這是我的第一個(gè)C程序二、VC工
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷氫化知識(shí)課件
- 苯并二氮雜卓類(lèi)藥物的分析
- 志愿消防隊(duì)伍建設(shè)方案
- 培訓(xùn)機(jī)構(gòu)咨詢管理制度
- 律師學(xué)習(xí)培訓(xùn)管理制度
- 項(xiàng)目部年度安全培訓(xùn)制度
- 教育培訓(xùn)機(jī)構(gòu)全職人員管理制度
- 工廠作業(yè)培訓(xùn)日常管理制度
- 外派培訓(xùn)制度及流程
- 學(xué)校工會(huì)干部培訓(xùn)制度
- 數(shù)字孿生方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評(píng)規(guī)范
- 2026長(zhǎng)治日?qǐng)?bào)社工作人員招聘勞務(wù)派遣人員5人備考題庫(kù)及答案1套
- 機(jī)動(dòng)車(chē)駕校安全培訓(xùn)課件
- 河道清淤作業(yè)安全組織施工方案
- 2025年役前訓(xùn)練考試題庫(kù)及答案
- 2024VADOD臨床實(shí)踐指南:耳鳴的管理課件
- 2026年七臺(tái)河職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2021海灣消防 GST-LD-8318 緊急啟停按鈕使用說(shuō)明書(shū)
- 煙花爆竹零售經(jīng)營(yíng)安全責(zé)任制度
- 方小丹建筑地基基礎(chǔ)設(shè)計(jì)的若干問(wèn)題課件
評(píng)論
0/150
提交評(píng)論