版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言程序設(shè)計
—基礎(chǔ)篇第1章C語言概述2023/7/20課程教學目標 以C語言為平臺,介紹程序設(shè)計的思想和方法。通過學習,使學生不但掌握高級編程語言的知識、編程技術(shù)和基本算法,更重要的是掌握程序設(shè)計的思想和方法,具備利用計算機求解實際問題的基本能力,能靈活應(yīng)用高級語言進行程序設(shè)計。2023/7/20教學內(nèi)容與教學環(huán)節(jié)教學內(nèi)容包括“程序設(shè)計”和“語言知識”兩部分,在教學過程中被分為若干個主題,以程序設(shè)計做為貫穿各主題的主線。對教學內(nèi)容的詳細描述見教學大綱。課程教學環(huán)節(jié)包括課堂教學、課外自學、上機實踐、答疑討論和考核。2023/7/20教學環(huán)節(jié)(1)課堂教學:教師通過案例分析,重點講解程序設(shè)計的思想和方法,輔以必要的語言知識介紹。(2)課外自學:學生根據(jù)自己的實際情況,自主學習不同層次的學習資料。(3)上機實踐:學生必須完成大量的上機練習,包括基本訓練(自測作業(yè)和主題作業(yè))和綜合訓練大型作業(yè):通過大型作業(yè),從而達到在實踐中掌握知識,培養(yǎng)程序設(shè)計能力的目的。2023/7/20本課程學習分三個階段基礎(chǔ)篇(5周)第1章C語言概述第2章C語言簡單程序設(shè)計㈠順序、選擇控制結(jié)構(gòu)第3章C語言簡單程序設(shè)計㈡循環(huán)控制結(jié)構(gòu)第4章數(shù)組第5章算法2023/7/20本課程學習分三個階段基礎(chǔ)篇(5周)進階篇(7周)第1章數(shù)據(jù)類型與輸入輸出(二)第2章運算符和表達式第3章函數(shù)(一)第4章預(yù)編譯與C程序工程文件(期中測試)第5章指針(一)第6章數(shù)組(二)2023/7/20本課程學習分三個階段基礎(chǔ)篇(5周)進階篇(7周)提高篇(5周)第1章指針與函數(shù)(2)第2章結(jié)構(gòu)體第3章文件第4章位運算2023/7/20C語言程序設(shè)計
—基礎(chǔ)篇第1章C語言概述2023/7/201.1C語言簡介
1.1.1程序設(shè)計語言的發(fā)展第一代:機器語言是一種CPU機器語言。 由數(shù)字0、1組合而成。 優(yōu)點:機器可直接執(zhí)行,速度快。 缺點:程序長,難記,難理解,不易查錯。第二代:匯編語言用助記符描述的指令系統(tǒng)。如:
MOVAX,[BP+4] PUSHDL 優(yōu)點:比機器語言較易理解,執(zhí)行速度快。 缺點:難度大,非專業(yè)人士難以掌握。2023/7/201.1.1程序設(shè)計語言的發(fā)展第三代:面向過程的高級語言或稱算法語言。 如:Fortran,Basic,Pascal,C等等。優(yōu)點:靈活,易于理解,容易查錯。缺點:對大型程序而言維護性較差,對“擬定”好的程序難以擴充,修改(所謂牽一而動百)。第四代:非過程化的高級語言是一種面向?qū)ο蟮脑O(shè)計語言,如:C++,Java等等。 優(yōu)點:靈活、易于理解、維護、修改、擴充。 缺點:掌握難度較大。第五代:可視化多媒體程序設(shè)計工具。具有面向?qū)ο蟮乃枷?,如:VisualC++,VisualBasic,Delphe等等。2023/7/201.1.2C語言發(fā)展過程1960年出現(xiàn)了Algol60語言。1967年,MatinRichards對CPL進行改進、簡化、推出了BCPL。1970年,美國貝爾實驗室KenThomson以BCPL為基礎(chǔ),再次簡化推出了B語言,并寫了第一個UNIX系統(tǒng)。1972年美國貝爾實驗室D.M.Ritchie在B語言基礎(chǔ)上設(shè)計出了C語言,并用其將UNIX系統(tǒng)全部改寫并實現(xiàn)。經(jīng)進一步改進,至1977年出現(xiàn)了與具體機器無關(guān)的C編譯文本,從而使C語言廣泛應(yīng)用,各種機器皆可使用。2023/7/201.1.2C語言發(fā)展過程1978年,美國BrainW.Kernighan與Dennis.M.Ritchie聯(lián)合出版一書《TheCProgrammingLanguage》成為ANSIC之基礎(chǔ)。1983年,美國標準化協(xié)會(ANSI)制定了ANSIC。以ANSIC為基礎(chǔ):
不同機器有不同版本,尤其是函數(shù)均應(yīng)參考相應(yīng)的機器。
C語言的編譯環(huán)境有多種,如:
DOS/Windows平臺:Borland/TurboC,MicrosoftC等Unix/Linux平臺:GNUC2023/7/201.1.2C語言發(fā)展過程在C的基礎(chǔ)上,一九八三年又由貝爾實驗室推出了C++。C++進一步擴充和完善了C語言,成為一種面向?qū)ο蟮某绦蛟O(shè)計語言。C是C++的基礎(chǔ),C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向?qū)ο蟮恼Z言,從而達到事半功倍的目的。2023/7/201.2C語言的特點應(yīng)用面廣C語言是一種過程化的語言。既可編寫系統(tǒng)軟件(如:DOS、Windows、UNIX);又可編寫應(yīng)用軟件。2023/7/201.2C語言的特點簡潔、緊湊、方便、表達能力強32個關(guān)鍵字,9種控制語句,主要用小寫字母。autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizofstructswitchtypedefunionunsignedvoidvolatilewhile2023/7/201.2C語言的特點運算符豐富(共有34種運算符)。除了最基本的+、-、×、÷、%等運算外,還將括號、賦值、類型強制轉(zhuǎn)換等均作為運算符。數(shù)據(jù)類型豐富,結(jié)構(gòu)化程度高除基本類型外,有指針,結(jié)構(gòu)體、共同體等類型。語法嚴格,靈活如:數(shù)據(jù)類型可相互通用:整型、字符型通用。2023/7/201.2C語言的特點可與機器硬件打交道直接訪問內(nèi)存地址,具有“高”、“低”級語言的功能。生成目標代碼質(zhì)量高,執(zhí)行效率高。語言簡潔,可移植性好可移植性優(yōu)于匯編語言。2023/7/201.3簡單的C程序介紹為了更好、更快地掌握C程序,我們先看幾個C語言程序:【例1.1】Hello,World!#include<stdio.h>intmain(){printf("Hello,world!\n");return(0);}運行結(jié)果:
Hello,world!2023/7/20【例1.2】加法/*Exampleforaddprogram*/#include<stdio.h>intmain(){ inta,b,sum;
/*這是定義變量*/
a=123;b=456;
/*給變量賦值*/
sum=a+b;
/*求兩個數(shù)之和*/
printf("a+b=%d\n",sum); return(0);}運行結(jié)果:
a+b=5792023/7/20【例1.3】求兩數(shù)中較大者/*ExampleforFunctionprogram*/#include<stdio.h>intmax(intx,inty) /*對形參x、y作類型定義*/{
intz; /*max函用到的變量z,也要加以定義*/
z=y; if(x>y)z=x; return(z); /*將z的值返回,通過max帶回調(diào)用處*/}intmain() /*主函數(shù)*/{
inta,b,c; /*定義變量*/
scanf("%d,%d",&a,&b);/*輸入變量a和b的值*/
c=max(a,b); /*調(diào)用max函數(shù),將得到的值賦給c*/ printf("max=%d\n",c); /*輸出c的值*/
return(0);}運行結(jié)果:12,34max=342023/7/20通過實例,初步看到C的程序結(jié)構(gòu)C程序全部由一個一個的函數(shù)構(gòu)成。至少有且僅有一個主函數(shù)main(),也稱為主程序,其內(nèi)容在其后的一對花括號{}內(nèi),其它函數(shù)可被主函數(shù)調(diào)用或相互調(diào)用。其它函數(shù)可為C函數(shù)庫中函數(shù),也可為用戶定義的函數(shù)。2023/7/20一個函數(shù)有兩部分組成:函數(shù)的首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)參數(shù)(形參)名和參數(shù)類型。 int max(int x, int y)↓ ↓ ↓ ↓ ↓ ↓函數(shù)類型 函數(shù)名參數(shù)類型參數(shù)名 參數(shù)類型參數(shù)名 一個函數(shù)名后面必須跟一對圓括弧,函數(shù)參數(shù)可以沒有,如main()。2023/7/20一個函數(shù)有兩部分組成:函數(shù)體,即函數(shù)首部下面的大括弧{……}內(nèi)的部分。如果一個函數(shù)內(nèi)有多個大括弧,則最外層的一對{}為函數(shù)體的范圍。 函數(shù)體一般包括:聲明部分:在這部分中定義所用到的變量,如果需要,也要對所調(diào)用的函數(shù)進行聲明。執(zhí)行部分:有若干個語句組成。在某些情況下也可以沒有聲明部分,甚至可以既無聲明部分,也無執(zhí)行部分。如: dump() {}2023/7/20一個C程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序的最后面,或在一些函數(shù)之前,在另一些函數(shù)之后)。C程序書寫格式自由,一行也可以寫幾個語句,一個語句可以寫在多行上。但為了程序的閱讀和理解,C程序書寫需按照某些書寫規(guī)則,稍后將介紹。2023/7/20每個語句和數(shù)據(jù)定義的最后必須有一個分號。C語言本身沒有輸入、輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成。可以用/*……*/對C程序中的任何部分作注釋。2023/7/20為便于閱讀,養(yǎng)成良好的程序書寫風格每一對{}上下對齊;每一對{}都對應(yīng)于段首和段尾;每一行只寫一條語句;每一對{}內(nèi)的語句左對齊;不同的語句段采用縮進格式以示區(qū)別;關(guān)鍵語句要有注釋。2023/7/20C語言程序?qū)嵗CApacheHTTP服務(wù)器源代碼片段#include"apr.h"#include"apr_strings.h"#include"apr_getopt.h"#include"apr_general.h"#include"apr_lib.h"#include"apr_md5.h"#defineAPR_WANT_STDIO#defineAPR_WANT_STRFUNC#include"apr_want.h"
#defineCORE_PRIVATE#include"ap_config.h"#include"httpd.h"#include"http_main.h"#include"http_log.h"#include"http_config.h"#include"http_core.h"#include"http_vhost.h"#include"apr_uri.h"#include"util_ebcdic.h"#include"ap_mpm.h"#include"mpm_common.h"/*WARNING:Win32bindshttp_main.cdynamicallytotheserver.Pleaseplace*externfunctionsandglobaldatainanotherappropriatemodule.**Mostsignificantmain()globaldatacanbefoundinhttp_config.c*/
2023/7/20staticvoidshow_mpm_settings(void){intmpm_query_info;apr_status_tretval;printf("ServerMPM:%s\n",ap_show_mpm());retval=ap_mpm_query(AP_MPMQ_IS_THREADED,&mpm_query_info);if(retval==APR_SUCCESS){printf("threaded:");if(mpm_query_info==AP_MPMQ_DYNAMIC){printf("yes(variablethreadcount)\n");}elseif(mpm_query_info==AP_MPMQ_STATIC){printf("yes(fixedthreadcount)\n");}else{printf("no\n");}}retval=ap_mpm_query(AP_MPMQ_IS_FORKED,&mpm_query_info);if(retval==APR_SUCCESS){printf("forked:");if(mpm_query_info==AP_MPMQ_DYNAMIC){printf("yes(variableprocesscount)\n");}elseif(mpm_query_info==AP_MPMQ_STATIC){printf("yes(fixedprocesscount)\n");}else{printf("no\n");}}}2023/7/20intmain(intargc,constchar*constargv[]){charc;intconfigtestonly=0;constchar*confname=SERVER_CONFIG_FILE;constchar*def_server_root=HTTPD_ROOT;constchar*temp_error_log=NULL;constchar*error;process_rec*process;server_rec*server_conf;apr_pool_t*pglobal;apr_pool_t*pconf;apr_pool_t*plog;/*Pooloflogstreams,reset_after_eachreadofconf*/apr_pool_t*ptemp;/*Poolfortemporaryconfigstuff,resetoften*/apr_pool_t*pcommands;/*Poolfor-D,-Cand-cswitches*/apr_getopt_t*opt;apr_status_trv;module**mod;constchar*optarg;APR_OPTIONAL_FN_TYPE(ap_signal_server)*signal_server;AP_MONCONTROL(0);/*turnoffprofilingofstartup*/apr_app_initialize(&argc,&argv,NULL);process=create_process(argc,argv);pglobal=process->pool;pconf=process->pconf;ap_server_argv0=process->short_name;#ifAPR_CHARSET_EBCDICif(ap_init_ebcdic(pglobal)!=APR_SUCCESS){destroy_and_exit_process(process,1);}#endif2023/7/20apr_pool_create(&pcommands,pglobal);apr_pool_tag(pcommands,"pcommands");ap_server_pre_read_config=apr_array_make(pcommands,1,sizeof(char*));ap_server_post_read_config=apr_array_make(pcommands,1,sizeof(char*));ap_server_config_defines=apr_array_make(pcommands,1,sizeof(char*));error=ap_setup_prelinked_modules(process);if(error){ap_log_error(APLOG_MARK,APLOG_STARTUP|APLOG_EMERG,0,NULL,"%s:%s",ap_server_argv0,error);destroy_and_exit_process(process,1);}ap_run_rewrite_args(process);
/*MaintainAP_SERVER_BASEARGSlistinhttp_main.htoallowtheMPM*tosafelypassonourargsfromitsrewrite_args()handler.*/apr_getopt_init(&opt,pcommands,process->argc,process->argv);while((rv=apr_getopt(opt,AP_SERVER_BASEARGS,&c,&optarg))==APR_SUCCESS){char**new;switch(c){case'c':new=(char**)apr_array_push(ap_server_post_read_config);*new=apr_pstrdup(pcommands,optarg);break;case'C':new=(char**)apr_array_push(ap_server_pre_read_config);*new=apr_pstrdup(pcommands,optarg);break;2023/7/20 case'd':def_server_root=optarg;break;case'D':new=(char**)apr_array_push(ap_server_config_defines);*new=apr_pstrdup(pcommands,optarg);
/*Setting-DDUMP_VHOSTSisequivalenttosetting-S*/if(strcmp(optarg,"DUMP_VHOSTS")==0)configtestonly=1;
/*Setting-DDUMP_MODULESisequivalenttosetting-M*/if(strcmp(optarg,"DUMP_MODULES")==0)configtestonly=1;break;}}
/*badcmdlineoption?thenwedie*/if(rv!=APR_EOF||opt->ind<opt->argc){usage(process);}apr_pool_create(&plog,pglobal);apr_pool_tag(plog,"plog");apr_pool_create(&ptemp,pconf);apr_pool_tag(ptemp,"ptemp");
/*Notethatwepreflighttheconfig*beforereadingit_again_inthemainloop.*Thisallowsthings,logfilesconfiguration*forexample,tosettledown.*/2023/7/20ap_server_root=def_server_root;if(temp_error_log){ap_replace_stderr_log(process->pool,temp_error_log);}server_conf=ap_read_config(process,ptemp,confname,&ap_conftree);if(!server_conf){destroy_and_exit_process(process,1);}
if(ap_run_pre_config(pconf,plog,ptemp)!=OK){ap_log_error(APLOG_MARK,APLOG_STARTUP|APLOG_ERR,0,NULL,"Pre-configurationfailed");destroy_and_exit_process(process,1);}rv=ap_process_config_tree(server_conf,ap_conftree,process->pconf,ptemp);if(rv==OK){ap_fixup_virtual_hosts(pconf,server_conf);ap_fini_vhost_config(pconf,server_conf);apr_hook_sort_all();if(configtestonly){ap_run_test_config(pconf,server_conf);ap_log_error(APLOG_MARK,APLOG_STARTUP,0,NULL,"SyntaxOK");
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 直播帶貨產(chǎn)品課件
- 2025年熔化焊接與熱切割(復審)模擬考試題庫試卷
- 2024年長沙客運資格證模擬考試題庫下載電子版
- 2024年??诳蛙噺臉I(yè)考試題庫及答案
- 甘南市重點中學2025屆高一數(shù)學第一學期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 福建省師大附中2025屆高一生物第一學期期末教學質(zhì)量檢測模擬試題含解析
- 湖北省宜昌市長陽縣第一高級中學2025屆高三生物第一學期期末學業(yè)質(zhì)量監(jiān)測試題含解析
- 西塔塔吊施工方案科技雙優(yōu)化匯報
- 2025屆湖北省黃岡市浠水實驗高中高三數(shù)學第一學期期末學業(yè)質(zhì)量監(jiān)測試題含解析
- 2025屆湖南省岳陽縣一中、汨羅市一中生物高三上期末質(zhì)量跟蹤監(jiān)視試題含解析
- 審查意見答復模板
- 中考作文考前輔導:意高文自勝
- 公司收購聲明與承諾函
- 歷年北京市中小學生天文觀測競賽_天文知識_小學組
- 語文論文淺談如何在語文教學中培養(yǎng)學生情感
- 危險化學品安全使用許可適用行業(yè)目錄(2013年版)3
- 濕法脫硫工藝計算書
- 轎車子午線輪胎用簾線品種及其性能
- 天然氣室外立管吊裝專項施工方案(完整版)
- 淺談博物館布展設(shè)計的內(nèi)容與形式
- 在音樂教學中培養(yǎng)學生的人文素養(yǎng)
評論
0/150
提交評論