第一篇:程序設(shè)計(jì)語(yǔ)言
程序設(shè)計(jì)語(yǔ)言
一般分為機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。
1、機(jī)器語(yǔ)言
機(jī)器語(yǔ)言是用二進(jìn)制數(shù)表示的、計(jì)算機(jī)唯一能理解和直接執(zhí)行的程序語(yǔ)言。機(jī)器語(yǔ)言不直觀,編寫難度大,易于出錯(cuò),調(diào)試、修改繁瑣,但執(zhí)行速度最快。機(jī)器語(yǔ)言是最低級(jí)的程序設(shè)計(jì)語(yǔ)言。
2、匯編語(yǔ)言
匯編語(yǔ)言是將機(jī)器語(yǔ)言“符號(hào)化”的程序設(shè)計(jì)語(yǔ)言。
匯編語(yǔ)言編寫的程序,機(jī)器不能直接識(shí)別,要由匯編程序?qū)⑵浞g成機(jī)器語(yǔ)言才能執(zhí)行。
特點(diǎn):比機(jī)器語(yǔ)言程序更易于編寫、檢查和修改,也保持了機(jī)器語(yǔ)言編程質(zhì)量高、運(yùn)行速度快、占用存儲(chǔ)空間少等優(yōu)點(diǎn)。但匯編語(yǔ)言的通用性和可移植性差。匯編語(yǔ)言也屬于低級(jí)語(yǔ)言。
3、高級(jí)語(yǔ)言
常用的高級(jí)語(yǔ)言有BASIC、FORTRAN、PASCAL、C、C++、JAVA等。
特點(diǎn):與匯編相比,①更接近自然語(yǔ)言,一般采用英語(yǔ)單詞表達(dá)語(yǔ)句,便于理解、記憶和掌握。②易于編寫、查找錯(cuò)誤和修改③通用性強(qiáng)。
第二篇:如何學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言
如何學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言
經(jīng)常有人會(huì)問(wèn),“怎樣才能學(xué)會(huì)某某語(yǔ)言?”、“我該怎么學(xué)好某某語(yǔ)言?”,其實(shí)在學(xué)習(xí)某種程序設(shè)計(jì)語(yǔ)言之前,你需要弄明白一個(gè)問(wèn)題,編程的目的是什么?我們?yōu)槭裁匆幊蹋烤幊叹褪菫榱私鉀Q各種問(wèn)題,通過(guò)一系列的指令來(lái)解決這些問(wèn)題。那我們學(xué)習(xí)編程,到底需要學(xué)什么呢?因?yàn)榫幊痰哪康氖菫榱私鉀Q問(wèn)題,顯而易見,我們學(xué)編程,就是要學(xué)會(huì)如何解決問(wèn)題。高手和新手就是看你解決問(wèn)題的能力。
我們應(yīng)該如何學(xué)習(xí)?舉個(gè)例子,有一天你想買個(gè)空調(diào)(我想學(xué)編程),于是就是市場(chǎng)上了解空調(diào)的情況,進(jìn)行比較,最終確定某個(gè)品牌的空調(diào)(對(duì)目前的編程語(yǔ)言作些了解,根據(jù)自身的情況,最終確定一門語(yǔ)言來(lái)學(xué)習(xí))。空調(diào)買來(lái)后,有專業(yè)的安裝工人給你安裝調(diào)試(學(xué)習(xí)前先配置好程序的調(diào)試運(yùn)行環(huán)境,讓你編寫的程序能在電腦上跑起來(lái),通過(guò)網(wǎng)上的教程或者購(gòu)買的書本來(lái)了解這方面的知識(shí))。安裝工人走了之后,你想學(xué)會(huì)控制空調(diào),這時(shí)你就遇到問(wèn)題了“我怎么才能學(xué)會(huì)控制它呢?”(我該如何學(xué)習(xí)編程呢?)首先,你會(huì)找來(lái)空調(diào)的說(shuō)明書(程序語(yǔ)言的語(yǔ)法手冊(cè),可以從網(wǎng)上查找或者買本書來(lái)看)和遙控器(電腦),邊看說(shuō)明書,邊通過(guò)遙控器來(lái)控制空調(diào)(邊看資料邊在電腦上編寫程序解決某個(gè)問(wèn)題),隨著操作的熟練你就不再看說(shuō)明書了。當(dāng)說(shuō)明書上的說(shuō)明和你實(shí)際的操作對(duì)應(yīng)不起來(lái)時(shí),你會(huì)向廠家咨詢,問(wèn)明原因(可以在某個(gè)技術(shù)社區(qū)或聊天工具上向熟手請(qǐng)教)。總之,一句話,學(xué)習(xí)時(shí)邊看資料邊實(shí)踐(在電腦上編寫、運(yùn)行、調(diào)試你的程序)。
在寫代碼前,一定要先養(yǎng)成良好的習(xí)慣,先把握住程序的整體,然后再細(xì)分,一步一步去完善、去實(shí)現(xiàn)全部功能。無(wú)論做哪一步時(shí),你都要明白,你的程序在為你解決什么問(wèn)題?不然,你的解決問(wèn)題的能力無(wú)法提高,學(xué)習(xí)的目的性也不強(qiáng)。不是有句話,“書到用時(shí)方恨少”,就是在你實(shí)際操作時(shí),會(huì)遇到各種各樣問(wèn)題,你通自己的探索來(lái)解決各種問(wèn)題時(shí),是最有針對(duì)性的學(xué)習(xí),因?yàn)槟阌羞@個(gè)需求“要如何解決這個(gè)問(wèn)題”,所以當(dāng)你滿足自己的這個(gè)需求時(shí),也是最有動(dòng)力學(xué)習(xí)的時(shí)候了。學(xué)習(xí)編程,特別在程序出現(xiàn)問(wèn)題,不按照自己的意愿去運(yùn)行時(shí),一定要有耐心,一行、一行的去閱讀程序,想辦法輸出它的運(yùn)行結(jié)果,看看是否符合自己的意愿,然后找出出現(xiàn)錯(cuò)誤的這一行代碼,最后針對(duì)這行代碼進(jìn)行分析、調(diào)試來(lái)解決這個(gè)BUG。
當(dāng)你完成一個(gè)學(xué)習(xí)任務(wù)后,其實(shí)你已經(jīng)進(jìn)入編程的大門了,以后只要按照這個(gè)思路繼續(xù)學(xué)習(xí),你就會(huì)掌握越來(lái)越多的知識(shí)和經(jīng)驗(yàn),解決問(wèn)題的能力也會(huì)越來(lái)越強(qiáng)。
如何學(xué)習(xí)程序設(shè)計(jì)
有許多網(wǎng)友都曾迷惑地問(wèn)我:“怎么樣才能學(xué)好程序設(shè)計(jì)?”,這不是一兩句話能說(shuō)
清楚的,于是我就寫了這篇文章,給廣大愛(ài)好者一個(gè)能解惑的方法,無(wú)論你是什么樣的“鳥”相信都能在這篇文章里找到你想要的什么是程序設(shè)計(jì)
話就從一個(gè)著名的公式說(shuō)起:程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法
每當(dāng)我寫下這個(gè)公式的時(shí)候,心中總有一種新的感悟,可是就這個(gè)程序界盡人皆知的公
式卻難倒了一大批想和Bill·Gates一爭(zhēng)高下的朋友,下面我為大家解剖這個(gè)公式:
“程序設(shè)計(jì)”說(shuō)白了就是大家所謂編程,先不管這個(gè)詞中有什么深刻的內(nèi)涵,先看看等式
右面的這兩個(gè)名詞。
按照官方的定義:數(shù)據(jù)結(jié)構(gòu)即非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中的計(jì)算機(jī)的操作對(duì)象以及它
們之間的關(guān)系和操作;算法是對(duì)特定問(wèn)題求解步驟的一種描述,是對(duì)指令的有序序列。官方的解釋就是經(jīng)典,可是我們看了卻更糊涂了。別急,聽我給大家解釋。
程序設(shè)計(jì)就像蓋房子,數(shù)據(jù)結(jié)構(gòu)就像磚、瓦,而算法就是設(shè)計(jì)圖紙。你若想蓋房子首先
必須有原料(數(shù)據(jù)結(jié)構(gòu)),但是這些原料不能自動(dòng)地蓋起了你想要的房子;你必須按照設(shè)計(jì)圖紙(算法)上的說(shuō)明一磚一瓦地去砌。這樣你才能擁有你想要的房子。程序設(shè)計(jì)也一樣,你使用的編譯工具中有各種功能語(yǔ)句或基本結(jié)構(gòu),它們不會(huì)自動(dòng)排列成你要的程序代碼。你得按照程序規(guī)定的功能去編寫,而程序的功能是實(shí)現(xiàn)就是算法的具體體現(xiàn)。所以通俗地說(shuō):你必須按照特定的規(guī)則,把特定的功能語(yǔ)句和基本結(jié)構(gòu)按照特定的順序排列起來(lái),形成一個(gè)有
特定功能的程序,這就是:程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法。數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)這座大廈的基礎(chǔ),沒(méi)有基礎(chǔ),無(wú)論設(shè)計(jì)有多么高明,這座大廈不可能建造起來(lái)的。算法則是程序設(shè)計(jì)的思想,它的靈魂!沒(méi)有靈魂的程序不能叫程序,只是一堆雜亂無(wú)章的符號(hào)而已。在程序設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)就像物質(zhì),算法就是意識(shí)。這就像哲學(xué)上說(shuō)的:意識(shí)是依賴與物質(zhì)而存在的,物質(zhì)是由于意識(shí)而發(fā)展。雙方是相互依存、缺一不可的!
數(shù)據(jù)結(jié)構(gòu)內(nèi)容不多僅僅有幾個(gè)系統(tǒng)自帶的基本結(jié)構(gòu)(像順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)過(guò)程)數(shù)據(jù)類型(整型、實(shí)型、布爾、字符等)和用戶定義的高級(jí)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)(數(shù)組、集合、文件、指針(隊(duì)列、棧、樹、圖等)······)就這么多。可是算法卻不同了,它是多中多樣的!它可以讓你讓數(shù)據(jù)以你想要的方式排列(當(dāng)然要符合語(yǔ)法和功能要求^_^)。再打
個(gè)比方,數(shù)據(jù)結(jié)構(gòu)是人體的各種組織、器官,算法則是人的思想。你可以用你的思想去支配你身體的各個(gè)可以運(yùn)動(dòng)的器官隨意運(yùn)動(dòng)。如果,你想去取一個(gè)蘋果,你可以走過(guò)去,也可以跑過(guò)去,只要你想,你甚至可以爬過(guò)去。但是無(wú)論如何,你你的器官還你的器官(沒(méi)有變),目的還是同一個(gè)目的(取蘋果),而方式卻是隨心所欲!這就是算法的靈活性,不固定性。因此可以這樣說(shuō):數(shù)據(jù)結(jié)構(gòu)是死的,而算法是活的!現(xiàn)在明白許多了吧!GO ON
怎樣學(xué)習(xí)程序設(shè)計(jì)
上面說(shuō)了許多數(shù)據(jù)結(jié)構(gòu)的在程序設(shè)計(jì)中重要性,所以努力學(xué)習(xí)好數(shù)據(jù)結(jié)構(gòu)是學(xué)好程序設(shè)計(jì)的第一步,也是關(guān)鍵的一步。你初學(xué)起來(lái)一定會(huì)覺(jué)得難,枯燥(其實(shí)我當(dāng)時(shí)也是這么想的 ^_^),什么標(biāo)準(zhǔn)文件、標(biāo)準(zhǔn)類型、標(biāo)準(zhǔn)函數(shù)、標(biāo)準(zhǔn)過(guò)程搞的你煩不勝煩。于是,就有許多初學(xué)者就厭倦了,停滯不前了,退縮了。你若是想編好程序的話就想:難道就這么一點(diǎn)點(diǎn)小困難就難倒我了嗎?我還要挑戰(zhàn)Bill·Gates呢?我一定能行,相信自己,一定會(huì)闖過(guò)這一關(guān)的!這樣以來(lái),你就具備了程序員最基本的素質(zhì)——毅力。這一點(diǎn)是程序員必備的,否則在后面開發(fā)程序的漫長(zhǎng)時(shí)間里,你會(huì)熬不住的。而且只有這樣你才能靜下心來(lái)學(xué)習(xí)。這一端時(shí)間沒(méi)有什么捷徑,只有多看書、多練習(xí),把所有結(jié)構(gòu)和類型的用法都找掌握牢固。不懂就要問(wèn)。最好呢,有一位老師指引,這樣比自己在這條路是摸黑前進(jìn)強(qiáng)多了,而且往往還事半功倍。切記!只要跨出了第一步,以后就容易多了,萬(wàn)事開頭難嘛!一定要堅(jiān)持,當(dāng)你過(guò)了這一端時(shí)間以后,你就發(fā)現(xiàn)程序設(shè)計(jì)根本沒(méi)有你想象的那樣難。當(dāng)你把所有的東東都學(xué)會(huì)時(shí),程序設(shè)計(jì)的大門已經(jīng)向你敞開了一扇,而另一扇就是······
算法,這個(gè)是程序設(shè)計(jì)的重點(diǎn),也是難點(diǎn)。許多菜鳥和老鳥的區(qū)別主要在對(duì)算法掌握的熟練程度上面。有許多朋友曾這樣問(wèn)我:“我數(shù)據(jù)結(jié)構(gòu)上面的都學(xué)會(huì)了,也知道該怎么樣用,可是我為什么還是在編程時(shí),不知道該怎樣用呢?其實(shí),這就是缺少算法思想的一個(gè)具體表現(xiàn)。并不是學(xué)好了數(shù)據(jù)結(jié)構(gòu)就會(huì)編程了。算法是靈活多變的,它不像數(shù)據(jù)結(jié)構(gòu)那樣有固定的形式。算法是不固定性就決定了它的特點(diǎn),你不可能把所有的算法都學(xué)會(huì),因?yàn)樗菬o(wú)窮盡的。但是你要是能把自己學(xué)的有限的算法融會(huì)貫通了,那你就了不起了。就好象你只學(xué)會(huì)了1、2、3這三個(gè)數(shù),但是你可以組成12、23、32、123······。所以算法這條路既長(zhǎng)有短,既難又易。
學(xué)習(xí)好算法的方法不少,在此詳細(xì)的給大家舉幾個(gè)例子。
首先,你要養(yǎng)成一個(gè)良好的程序設(shè)計(jì)風(fēng)格和習(xí)慣。這也分許多種。其中最重要的是養(yǎng)成自上向下逐步求精的程序設(shè)計(jì)思想和方法。怎樣才是自上向下逐步求精的程序設(shè)計(jì)呢。舉個(gè)例子。有這樣一個(gè)問(wèn)題:已知三角形的兩邊及夾角,求第三邊及面積。
現(xiàn)在,當(dāng)你看到這個(gè)問(wèn)題是,你不要立即下手去編寫,而是要思考一下怎樣才能求解(算法),然后把她寫下來(lái)以免忘記。于是就寫了:
一級(jí)算法:
1 輸入兩邊的長(zhǎng)度a、b以及夾角A
2 計(jì)算第三邊c和面積s
3 輸出c以及s
當(dāng)你寫完之后,你若覺(jué)得第2步不太清晰,還不能寫出代碼,那就繼續(xù)求精。二級(jí)求精:
1、將α的角度轉(zhuǎn)換為弧度;
2、c=sqrt(a*a+b*b-2*a*b*cos(α));
3、s=1/2*(a*b*sin(α))
哈哈,這樣問(wèn)題不就得到解決了嗎?接著就可以輕松的編代碼了。再仔細(xì)看看上面的步驟:先寫出一級(jí)算法,如果覺(jué)得由此還是得不到源代碼,或者是其中有一步還有很多步驟要寫,那么就繼續(xù)求精,直到你認(rèn)為可以很清晰的寫出代碼為止。但是求精可以因人而異,像上面的題目,若是一個(gè)編過(guò)很多程序的大蝦來(lái)說(shuō),可能不用什么求精,代碼就可以直接寫出來(lái)了;但要是一個(gè)菜鳥(像我一樣)就可能要寫到二級(jí)求精。
這樣說(shuō)來(lái),你可能認(rèn)為這個(gè)求精是不是太慢,抑或根本就是在浪費(fèi)時(shí)間。我大聲告訴你:根本不是!這可是眾多的編程先驅(qū)、編程達(dá)人們推薦的基本方法。你知道編程中,主要時(shí)間用在了哪里嗎?不是編寫代碼,而是用在了求解算法和調(diào)試程序上了!而算法的求精就是縮短這些時(shí)間的最好的方法。它可以使你不用再很費(fèi)力的苦思冥想到底該怎樣構(gòu)造算法,使這個(gè)過(guò)程更條理、更簡(jiǎn)明;它也很可能使你不用再為了一個(gè)小小BUG而調(diào)試半天,因?yàn)椋o出的算法已經(jīng)趨于完美。其實(shí),列一個(gè)小提綱(算法)就可以解決很多的問(wèn)題,生活中不也是如此嗎?!所以,第一,求精算法這個(gè)最重要的習(xí)慣一定要養(yǎng)成哦!
還有一個(gè)好的習(xí)慣就是要做到:程序源代碼的清晰度與可讀性一定要高。
這是為什么呢?在源代碼中,每行代碼前面的空格的有無(wú)與多少并不影響程序的運(yùn)行,但是它影響人的閱讀。你想,當(dāng)你看到一片代碼,格式雜亂無(wú)章,沒(méi)有什么主次內(nèi)外一定會(huì)頭痛不已,絕對(duì)是看了第一遍就不想再看第二遍了。而且當(dāng)你調(diào)試這樣的代碼時(shí),也會(huì)被一
個(gè)小錯(cuò)誤弄的找不到北了。如果格式很清晰的話,這樣的代碼就非常易讀,結(jié)構(gòu)很清晰,begin..end都看的清清楚楚。我想這樣的代碼閱讀和調(diào)試起來(lái)一定很順手的。
還有就是在有些重要的代碼塊后加入注釋,也可以提高程序的可讀性。不說(shuō)別人,就說(shuō)我就深有體會(huì):以前代碼不加注釋,當(dāng)時(shí)對(duì)其結(jié)構(gòu)很清楚,可是過(guò)了幾個(gè)星期之后,再看代碼簡(jiǎn)直就像看另外一個(gè)人寫的一樣,要費(fèi)不少工夫才能弄懂,代碼越多越如此。自己還很難理解自己的代碼,更不用說(shuō)別人了。因此費(fèi)點(diǎn)力氣加上注釋還是值得的。
還有的人喜歡用 goto語(yǔ)句跳來(lái)跳去,雖然增加了編寫代碼的靈活性,可是卻嚴(yán)重破壞了程序的結(jié)構(gòu)化,容易造成程序運(yùn)行和大腦思維的邏輯混亂,很可能導(dǎo)致一些很不容易發(fā)現(xiàn)的錯(cuò)誤。而且所有的goto都可以用其他的語(yǔ)句來(lái)代替。所以在這里建議大家少用goto。能不用就不用。以上是說(shuō)了要提高代碼的清晰度與可讀性。
上面用了不少字來(lái)介紹程序設(shè)計(jì)中良好習(xí)慣的作用與好處,這算是程序設(shè)計(jì)的一個(gè)基礎(chǔ),希望對(duì)大家能有所幫助。下面介紹其他促進(jìn)編程水平的方法。
其次,就是多加練習(xí)和多多與別人交流心得,研究和欣賞別人優(yōu)秀的程序代碼(上面說(shuō)的清晰度與可讀性的重要的一點(diǎn)就在這里體現(xiàn)了)。無(wú)論干任何事情,只有經(jīng)常練習(xí)才能熟練的掌握與應(yīng)用。它不僅能幫你提高對(duì)算法的認(rèn)知程度,還可以使你更好的理解數(shù)據(jù)結(jié)構(gòu);而交流心得與欣賞別人的代碼則是要你學(xué)習(xí)別人優(yōu)秀的獨(dú)特的見解與邏輯思維,許多?老鳥?就是在研究?jī)?yōu)秀代碼中慢慢成長(zhǎng)起來(lái)的。但研究和欣賞并不是意味著讓你?全盤西化?;它是說(shuō)既不要拘泥于自己一成不變的思考方式,也不要成為別人思想奔馳的高速路,而是讓你取長(zhǎng)補(bǔ)短,取其精華,去其糟粕,這才是我要說(shuō)的。另外,在編譯一個(gè)程序時(shí),要多想幾種不同的算法,反復(fù)比較,看看究竟哪個(gè)更適合這個(gè)程序。這樣,不僅有助于提高你程序的運(yùn)行效率,更重要的是有助于提高你對(duì)算法的認(rèn)識(shí)和思維的廣度。
看完上面這么多,你會(huì)發(fā)現(xiàn)程序設(shè)計(jì)的這半扇門似乎并不是想象的那么容易打開;但是如果你能耐住寂寞與枯燥的考驗(yàn),按部就班、循序漸進(jìn)的練習(xí),思考,不知不覺(jué)中你的水平已經(jīng)提高了很多。
除了上面說(shuō)的求精算法和數(shù)據(jù)結(jié)構(gòu)外,數(shù)學(xué)方法和邏輯思想對(duì)你的程序設(shè)計(jì)也會(huì)有一定的影響(這也屬于算法)先說(shuō)數(shù)學(xué)方法,它是指導(dǎo)你學(xué)習(xí)的一個(gè)重要的助手。比如你要實(shí)現(xiàn)一個(gè)看似很復(fù)雜的函數(shù),而且你編寫了一大堆代碼,什么結(jié)構(gòu)和類型都用上了,可是還是實(shí)現(xiàn)不了。這時(shí)候先別著急,也許在你做這個(gè)函數(shù)前就要靜下心來(lái),仔細(xì)思考,看看有什么數(shù)學(xué)上學(xué)習(xí)的特別公式能夠?qū)崿F(xiàn)這個(gè)問(wèn)題嗎?如果你真的靈感大發(fā),把它挖了出來(lái),恭喜你!
(答對(duì)了!)我想這個(gè)時(shí)候你一定會(huì)高興的手舞足蹈,這種感受,我想大家在做數(shù)學(xué)題OR其他難題時(shí)一定深有體會(huì)。
這樣說(shuō)太空洞,不如舉個(gè)例子:將8個(gè)?車?放在8X8的國(guó)際象棋棋盤上,如果它們兩兩均不能互吃,那么稱8個(gè)?車?處于安全狀態(tài)。問(wèn)總共有多少種不同安全狀態(tài)?對(duì)于這樣的題一般的解法是用?回溯法?,即先有順序的固定一個(gè)棋子,然后將剩下的逐行試探,如果可以則擺放下一個(gè),要是不行就把該棋子換一個(gè)位置,直到所有的方法都用(遍歷)一遍。這樣看來(lái)這個(gè)方法真的很麻煩,不因需要編寫大量代碼,而且還要用到?遞歸?(編程的一個(gè)重要的算法)。使程序的效率大大降低。但是我們可以想想有沒(méi)有更好的數(shù)學(xué)方法。肯定有!你看在第一行中,棋子可以在8個(gè)空格內(nèi)隨意擺放而不會(huì)受到攻擊;而第二行,棋子則只有在7個(gè)空格內(nèi)再挑選一個(gè)了;第三行就只有6個(gè)……依次類推第8行就只剩下一個(gè)空格了。所以這個(gè)方法一共有8X7X6X5X4X3X2X1即8!種解法,這不就是數(shù)學(xué)中的排列與組合的問(wèn)題嗎?若不進(jìn)一步思考,盲目地逐個(gè)枚舉方案,其笨拙是可想而知的了。所以在設(shè)計(jì)算法時(shí),一定要仔細(xì)思考有沒(méi)有更好的數(shù)學(xué)公式或思想與之相關(guān)聯(lián),這樣往往會(huì)收到意想不到的好效果。
說(shuō)完數(shù)學(xué),再說(shuō)哲學(xué)。
其實(shí),哲學(xué)是所有學(xué)科是總和。她當(dāng)然也包括程序設(shè)計(jì)這門新興的學(xué)科了。(不要以為它們之間沒(méi)有關(guān)系哦!)
我這里說(shuō)的是哲學(xué)的一小部分,那就是邏輯學(xué)。一個(gè)人若沒(méi)有嚴(yán)格的邏輯思維,他/她的程序一定有不少蟲子(bug)。然而對(duì)于這些蟲子,他/她可能不知道;也很有可能知道了,但是就不知道哪里出錯(cuò)了。這就是因?yàn)樗?她沒(méi)有把問(wèn)題出現(xiàn)的情況(包括出錯(cuò)的情況)考慮全面而造成的。雖然理論上所有的程序都有一定的漏洞(尤其是代碼越多的程序越是如此),但是我們可以盡我們的全力把問(wèn)題考慮全面,使錯(cuò)誤發(fā)生的幾率降低到最小,以確保程序的穩(wěn)定性。咱們來(lái)看一個(gè)很有趣的反面例子:偶在很久以前編過(guò)一個(gè)小程序(老師布置的作業(yè)),其功能是輸入你的生日,然后再輸入某天的日期,最后計(jì)算出你到這一天一共活了多少天。我很快就完成了,用數(shù)據(jù)測(cè)試幾次還不錯(cuò),于是讓老師來(lái)檢查我的作業(yè)。他讓我輸入,我于是就輸入了1989 1 28,然后回車,再輸入1999 1 28,我太激動(dòng)了把1999輸入成了1899,而且我竟然沒(méi)有發(fā)覺(jué)。于是偶自信的敲了回車。結(jié)果出來(lái)了,當(dāng)時(shí)大家都笑翻了,此后,我有一段時(shí)間再也不敢讓老師“欣賞”我作的題目…… 以上就是偶因?yàn)檫壿嫴粐?yán)密造成的笑話,大家可不要學(xué)我啊!所以說(shuō),提高邏輯思維能力也是提高編程效率的很有效的方法。
世界上所有的學(xué)科都有聯(lián)系。當(dāng)數(shù)學(xué)與邏輯學(xué)擦出?愛(ài)情?的火花時(shí),程序設(shè)計(jì)就有了雛形。
其實(shí)還有其他的學(xué)科也會(huì)影響程序設(shè)計(jì),比如英語(yǔ),地球人都知道,現(xiàn)在絕大多數(shù)程序源代碼是用英文編寫的,而且很多開發(fā)工具、編譯工具還有一些用來(lái)參考的小程序幾乎都是英文界面。學(xué)好英語(yǔ)對(duì)代碼的分析、對(duì)數(shù)據(jù)結(jié)構(gòu)的了解以及對(duì)開發(fā)程序或軟件的效率都有幫助。因此在學(xué)習(xí)程序設(shè)計(jì)這門課程時(shí),可不要丟了其他啊!
學(xué)習(xí)編程心態(tài)要放低,雖然你可能夢(mèng)想要打倒微軟帝國(guó),可是你不要以為自己真的就有實(shí)力把Bill PK掉,一定要從最簡(jiǎn)單的開始做起,不要眼高手低,荒于練習(xí)。否則你可能給他打工他都不要哦!(必備)
一顆堅(jiān)定的信念。搞程序設(shè)計(jì)有時(shí)是很累人的(要不然大家都成軟件工程師了,BILL的飯碗不就砸了),在某一個(gè)關(guān)鍵點(diǎn)是你要付出超乎想象的汗水和不計(jì)其數(shù)的腦細(xì)胞。這就叫“衣帶漸寬終不悔,為伊消的人憔悴!”要保持一種吃苦耐勞的打不垮精神,革命才能成功啊!同志們。(必備)
其實(shí)總而言之呢,無(wú)論是新手還是大蝦,要的就是勤學(xué)苦練,只有這樣,你才能走上通向程序設(shè)計(jì)金殿的成功之路。
到了這里你會(huì)發(fā)現(xiàn),這就是程序設(shè)計(jì),就這么簡(jiǎn)單、有趣,而有充滿的艱辛與苦澀。設(shè)計(jì)一個(gè)艱難的程序,就像母親分娩一樣,一定會(huì)有巨大的痛楚。但當(dāng)你為你早已調(diào)試了N^N次的代碼加上最后一筆時(shí),一個(gè)嶄新的生命就誕生了!Eureka!它帶著羞澀而好奇的神態(tài)向這個(gè)世界發(fā)出第一句“Hello,World!”的問(wèn)候時(shí)。你那種感覺(jué)就像是上帝面對(duì)自己親手造出來(lái)的生命,你以往所有的不快都會(huì)煙消云散。你會(huì)發(fā)現(xiàn)程序設(shè)計(jì),這項(xiàng)偉大的工程,教予你的不僅僅是一種技術(shù),更是對(duì)生命的熱愛(ài),對(duì)人生的執(zhí)著,對(duì)完美夢(mèng)想的追求!
有人說(shuō),學(xué)習(xí)是無(wú)聊的,但有億萬(wàn)蕓蕓學(xué)子不懈地投入其中。
有人說(shuō),科學(xué)是艱難的,但仍有大批科學(xué)家為之奮斗終生。
也有人說(shuō),編程是枯燥的,可是我要站起來(lái)最全世界說(shuō):”我愛(ài)她,就像愛(ài)我的生命!“
第三篇:2008級(jí)程序設(shè)計(jì)語(yǔ)言(Java)教學(xué)大綱
《程序設(shè)計(jì)語(yǔ)言(Java)》教學(xué)大綱
課程名稱: 程序設(shè)計(jì)語(yǔ)言(Java)英文名稱:Programming Language(Java)課程編碼: 212013 學(xué) 分: 4
學(xué) 時(shí): 64(其中理論學(xué)時(shí): 32,實(shí)踐學(xué)時(shí): 32)適用專業(yè):非計(jì)算機(jī)專業(yè)理工類本科 先修課程: 《大學(xué)計(jì)算機(jī)基礎(chǔ)》
一、課程的性質(zhì)、目的與任務(wù) 課程性質(zhì):
該課程面向全校非計(jì)算機(jī)專業(yè)理工類本科生,是程序設(shè)計(jì)語(yǔ)言類必修的公共基礎(chǔ)課之一。該課程的前導(dǎo)課程是《大學(xué)計(jì)算機(jī)基礎(chǔ)》,側(cè)重于Java語(yǔ)言的基本語(yǔ)法和面向?qū)ο缶幊谭椒ǖ慕榻B。課程目的:
通過(guò)本課程的學(xué)習(xí),學(xué)生不僅應(yīng)掌握 Java語(yǔ)言的基本特點(diǎn)和編程方法,還應(yīng)掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想、基本概念和基本方法,并能運(yùn)用所學(xué)的知識(shí)和技能對(duì)一般問(wèn)題進(jìn)行分析和程序設(shè)計(jì),能解決本專業(yè)的一些實(shí)際問(wèn)題。課程任務(wù):
本課程采用引導(dǎo)式、啟發(fā)式、實(shí)例講解和實(shí)作演練等教學(xué)方法來(lái)組織教學(xué),在注重Java語(yǔ)言基本概念和基本語(yǔ)法知識(shí)介紹的同時(shí),注重培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)能力和思維方式,加強(qiáng)學(xué)生創(chuàng)新能力的培養(yǎng),為進(jìn)一步使用Java進(jìn)行技術(shù)開發(fā)奠定堅(jiān)實(shí)基礎(chǔ)。
二、教學(xué)基本要求
通過(guò)本課程的學(xué)習(xí),學(xué)生應(yīng)達(dá)到下列基本要求:
1.掌握J(rèn)ava語(yǔ)言的基本語(yǔ)法、數(shù)據(jù)類型、運(yùn)算符和表達(dá)式、流程控制語(yǔ)句、數(shù)組、向量和字符串、Swing界面設(shè)計(jì)、Applet小應(yīng)用程序編制以及常見Java數(shù)據(jù)流的使用。
2.掌握對(duì)象和類的基本概念,學(xué)會(huì)使用Java進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)開發(fā)的基本技能。
3.理解Java語(yǔ)言的特點(diǎn)、抽象類和內(nèi)部類的概念、異常處理方法、控制組件外觀的方法、Applet的安全機(jī)制和生命周期。
4.了解Java包的工作機(jī)制、對(duì)象持續(xù)化的基本概念、常見Java類的用法以及API文檔的查閱方法。
三、教學(xué)條件
本課程教學(xué)在多媒體教室進(jìn)行,實(shí)踐教學(xué)要求在計(jì)算機(jī)機(jī)房進(jìn)行,要為每個(gè)學(xué)生提供一臺(tái)高性能計(jì)算機(jī),并安裝有JDK 6.0,UltraEdit,JCreator等開發(fā)工具。實(shí)踐教學(xué)完成后,要上交相應(yīng)部分的實(shí)驗(yàn)報(bào)告。
四、教學(xué)內(nèi)容與學(xué)時(shí)安排
本課程共分三篇十章,內(nèi)容涉及Java語(yǔ)言的基本概念和面向?qū)ο蟮木幊谭椒ā5谝黄獮镴ava編程基礎(chǔ)篇,包括第1,2,3章,主要介紹Java的基本語(yǔ)法、數(shù)據(jù)類型及其流程控制語(yǔ)句;第二篇為Java編程提高篇,包括第4,5,6章,主要介紹數(shù)組、向量和字符串、Java面向?qū)ο蟮木幊谭椒ㄒ约爱惓L幚恚坏谌獮镴ava編程進(jìn)階篇,包括第7,8,9,10章,介紹Java圖形界面設(shè)計(jì)、Applet以及數(shù)據(jù)流方面的知識(shí)。第1章 概述 1.1 什么是Java語(yǔ)言
1.2 一個(gè)基本的Java應(yīng)用程序 1.3 程序的編譯和運(yùn)行 1.4 常見錯(cuò)誤
1.5 使用Java核心API文檔
第2章 標(biāo)識(shí)符和數(shù)據(jù)類型 2.1 Java的基本語(yǔ)法單位 2.2 Java編碼體例
2.3 Java的基本數(shù)據(jù)類型 2.4 復(fù)合數(shù)據(jù)類型
2.5 類和對(duì)象的初步介紹
第3章 表達(dá)式和流程控制語(yǔ)句 3.1 表達(dá)式 3.2 流控制
第4章 數(shù)組、向量和字符串 4.1 數(shù)組
4.2 Vector類 4.3 字符串類型
第5章 進(jìn)一步討論對(duì)象和類 5.1 抽象數(shù)據(jù)類型
5.2 對(duì)象的構(gòu)造和初始化 5.3 this引用 5.4 子類 5.5 方法重寫 5.6 Java包 5.7 類成員
5.8 關(guān)鍵字final 5.9 抽象類 5.10 接口 5.11 內(nèi)部類 5.12 過(guò)時(shí)信息
第6章 Java語(yǔ)言中的異常 6.1 異常 6.2 異常示例 6.3 異常處理 6.4 異常分類 6.5 拋出
(2學(xué)時(shí))
(4學(xué)時(shí))
(4學(xué)時(shí))
(4學(xué)時(shí))
(4學(xué)時(shí))
2學(xué)時(shí))
(6.6 創(chuàng)建自己的異常
第7章 Java的圖形用戶界面設(shè)計(jì)(4學(xué)時(shí))
7.1 AWT與Swing 7.2 容器 7.3 布局 7.4 事件處理
第8章 Swing組件(4學(xué)時(shí))
8.1 按鈕 8.2 標(biāo)簽 8.3 組合框 8.4 列表 8.5 文本組件 8.6 菜單組件
8.7 對(duì)話框、標(biāo)準(zhǔn)對(duì)話框與文件對(duì)話框 8.8 控制組件外觀
第9章 Java Applet(2學(xué)時(shí))
9.1 編寫Applet 9.2 Applet的方法和Applet的生命周期 9.3 Applet的運(yùn)行
9.4 在Applet中的多媒體處理 9.5 Applet的事件處理
9.6 Applet與普通應(yīng)用程序的結(jié)合
第10章 Java數(shù)據(jù)流(2學(xué)時(shí))
10.1 數(shù)據(jù)流的基本概念 10.2 基本字節(jié)數(shù)據(jù)流類 10.3 基本字符流 10.4 文件的處理
五、考核方式和成績(jī)記載
本課程結(jié)束后由計(jì)算中心統(tǒng)一安排無(wú)紙化上機(jī)考試,成績(jī)記載為: 總評(píng)成績(jī)(理論)=平時(shí)成績(jī)(40%)+無(wú)紙化上機(jī)考試成績(jī)(60%)
其中:平時(shí)成績(jī)=平時(shí)出勤和課堂提問(wèn)(50%)+作業(yè)(50%)總評(píng)成績(jī)(實(shí)踐)=平時(shí)成績(jī)(60%)+綜合課題設(shè)計(jì)成績(jī)(40%)
其中:平時(shí)成績(jī)=上機(jī)出勤和表現(xiàn)(40%)+上機(jī)練習(xí)記錄(30%)+單元實(shí)驗(yàn)報(bào)告(30%)
六、教學(xué)參考書 [1] 辛運(yùn)幃等,《Java程序設(shè)計(jì)(第二版)》,清華大學(xué)出版社,2006年8月 [2] 辛運(yùn)幃等,《Java程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版)》,清華大學(xué)出版社,2006年11月
七、說(shuō)明
執(zhí)筆人: 普運(yùn)偉 審定人: 王建華 教學(xué)基層組織主任: 秦衛(wèi)平
第四篇:《程序設(shè)計(jì)語(yǔ)言強(qiáng)化課程設(shè)計(jì)》教學(xué)大綱
《程序設(shè)計(jì)語(yǔ)言強(qiáng)化課程設(shè)計(jì)》教學(xué)大綱
周數(shù):2 學(xué)
分:2
適用專業(yè):網(wǎng)絡(luò)工程 執(zhí)筆人:周燕 審核人:崔如春 編寫日期:2013年9月
項(xiàng)目一:學(xué)生成績(jī)排名
一、目的和要求:
1.熟悉并鞏固C程序設(shè)計(jì)語(yǔ)言的基本概念和知識(shí)。
2.培養(yǎng)學(xué)生自主學(xué)習(xí),獨(dú)立思考的能力,學(xué)會(huì)查找資料并善于分析資料的能力。3.培養(yǎng)學(xué)生獨(dú)立設(shè)計(jì),獨(dú)立調(diào)試程序的能力。
二、主要內(nèi)容:
采用選擇法,將學(xué)生成績(jī)從高到低進(jìn)行排序,再輸入一個(gè)學(xué)生的成績(jī),將此成績(jī)按照排序規(guī)律插入已排好序的學(xué)生成績(jī)數(shù)組,最后將排好序的成績(jī)單進(jìn)行反序存放。
1.定義一個(gè)數(shù)組a[11],用以存放學(xué)生的成績(jī)。2.從鍵盤輸入10個(gè)學(xué)生成績(jī)。
3.采用選擇法,將學(xué)生成績(jī)按照從高到低進(jìn)行排序。
4.再輸入一個(gè)學(xué)生的成績(jī),將此成績(jī)按照排序規(guī)律插入原學(xué)生成績(jī)數(shù)組。
5.將排好序的成績(jī)單進(jìn)行反序存放,即原來(lái)是從高到低,現(xiàn)在改為從低到高排列。6.將以上每一步驟的結(jié)果均打印輸出,驗(yàn)證程序是否正確實(shí)現(xiàn)題目要求。
三、教學(xué)方式和時(shí)間安排:
1.教學(xué)方式:講授,討論,指導(dǎo)。2.時(shí)間安排:5學(xué)時(shí)。
四、場(chǎng)所安排:
校內(nèi)機(jī)房。
五、考核方式:
檢查程序完成情況和課程設(shè)計(jì)報(bào)告完成情況。
六、成績(jī)?cè)u(píng)定:
課程設(shè)計(jì)成績(jī)由課程設(shè)計(jì)考勤、課程設(shè)計(jì)程序完成情況、課程設(shè)計(jì)報(bào)告綜合評(píng)定。課程設(shè)計(jì)不得無(wú)故缺席,否則無(wú)課程設(shè)計(jì)成績(jī)。課程設(shè)計(jì)考勤占20%,課程設(shè)計(jì)程序完成情況占30%,課程設(shè)計(jì)報(bào)告占50%,對(duì)于在課程設(shè)計(jì)中具有較強(qiáng)綜合實(shí)驗(yàn)?zāi)芰蛣?chuàng)新能力的學(xué)生,在評(píng)定成績(jī)時(shí)應(yīng)給予適當(dāng)?shù)丶臃帧?/p>
項(xiàng)目二: 根據(jù)條件進(jìn)行學(xué)生成績(jī)排名
一、目的和要求:
1.熟悉并鞏固C程序設(shè)計(jì)語(yǔ)言的基本概念和知識(shí)。
2.培養(yǎng)學(xué)生自主學(xué)習(xí),獨(dú)立思考的能力,學(xué)會(huì)查找資料并善于分析資料的能力。3.培養(yǎng)學(xué)生獨(dú)立設(shè)計(jì),獨(dú)立調(diào)試程序的能力。
二、主要內(nèi)容:
在函數(shù)中進(jìn)行 10個(gè)學(xué)生成績(jī)從高到低排名,再改進(jìn)函數(shù),進(jìn)行 n個(gè)學(xué)生成績(jī)從高到低排名, 排名方式根據(jù)函數(shù)的style參數(shù)進(jìn)行,如style為‘a(chǎn)'按升序排,style為 ' d ' 按降序排。(a:ascending 升,d:descending 降)
編寫多個(gè)不同函數(shù),使之能實(shí)現(xiàn)不同的排序算法(3種以上),再編寫一個(gè)通用輸出函數(shù),(要求用函數(shù)指針做參數(shù))能分別打印不同排序算法的結(jié)果。
1.在函數(shù)中進(jìn)行10個(gè)學(xué)生成績(jī)從高到低排名 sort(int a[10])2.改進(jìn)第一步的函數(shù)為sort(int a[],int n),進(jìn)行n個(gè)學(xué)生成績(jī)從高到低排名, 改進(jìn)第二步的函數(shù)為sort(int a[],int n, char style), 將n個(gè)學(xué)生成績(jī)從高到低排名,排名方式根據(jù)sort()函數(shù)的style參數(shù)進(jìn)行,如style為‘a(chǎn)’按升序排,style為’d’按降序排。(a:ascending 升,d:descending 降)
3.編寫4個(gè)排序函數(shù),實(shí)現(xiàn)4種不同的排序算法(用冒泡法進(jìn)行升序排序,用冒泡法進(jìn)行降序排序,選擇法進(jìn)行升序排序,選擇法進(jìn)行降序排序等),函數(shù)返回指向排好序的數(shù)組的指針。
4.編寫通用輸出函數(shù) show(int a[ ],int n,int *(* fun)(a[ ], int n)),其中a[]為成績(jī)數(shù)組,n為數(shù)組元素個(gè)數(shù)。fun為函數(shù)指針,函數(shù)的特點(diǎn)為有兩個(gè)參數(shù),一個(gè)為整型數(shù)組,一個(gè)為整數(shù),返回值為指向整型變量的指針)5.編寫主函數(shù)調(diào)用以上函數(shù)。
三、教學(xué)方式和時(shí)間安排:
1.教學(xué)方式:講授,討論,指導(dǎo)。2.時(shí)間安排:5學(xué)時(shí)。
四、場(chǎng)所安排:
校內(nèi)機(jī)房。
五、考核方式:
檢查程序完成情況和課程設(shè)計(jì)報(bào)告完成情況。
六、成績(jī)?cè)u(píng)定:
課程設(shè)計(jì)成績(jī)由課程設(shè)計(jì)考勤、課程設(shè)計(jì)程序完成情況、課程設(shè)計(jì)報(bào)告綜合評(píng)定。課程設(shè)計(jì)不得無(wú)故缺席,否則無(wú)課程設(shè)計(jì)成績(jī)。課程設(shè)計(jì)考勤占20%,課程設(shè)計(jì)程序完成情況占30%,課程設(shè)計(jì)報(bào)告占50%,對(duì)于在課程設(shè)計(jì)中具有較強(qiáng)綜合實(shí)驗(yàn)?zāi)芰蛣?chuàng)新能力的學(xué)生,在評(píng)定成績(jī)時(shí)應(yīng)給予適當(dāng)?shù)丶臃帧?/p>
項(xiàng)目三:鏈表的操作
一、目的和要求:
1.熟悉并鞏固C程序設(shè)計(jì)語(yǔ)言的基本概念和知識(shí)。
2.培養(yǎng)學(xué)生自主學(xué)習(xí),獨(dú)立思考的能力,學(xué)會(huì)查找資料并善于分析資料的能力。3.培養(yǎng)學(xué)生獨(dú)立設(shè)計(jì),獨(dú)立調(diào)試程序的能力。
二、主要內(nèi)容:
建立一個(gè)動(dòng)態(tài)鏈表,將學(xué)生數(shù)據(jù)(學(xué)號(hào),成績(jī))存入鏈表結(jié)構(gòu)中,實(shí)現(xiàn)鏈表的訪問(wèn)(求學(xué)生成績(jī)的平均分,找到最高分,最低分,將其數(shù)據(jù)輸出)。刪除指定學(xué)號(hào)的學(xué)生數(shù)據(jù),對(duì)學(xué)生數(shù)據(jù)進(jìn)行排序,分別在鏈表頭部,中間,末尾插入學(xué)生數(shù)據(jù)。
三、教學(xué)方式和時(shí)間安排:
1.教學(xué)方式:講授,討論,指導(dǎo)。2.時(shí)間安排:5學(xué)時(shí)。
四、場(chǎng)所安排:
校內(nèi)機(jī)房。
五、考核方式:
檢查程序完成情況和課程設(shè)計(jì)報(bào)告完成情況。
六、成績(jī)?cè)u(píng)定:
課程設(shè)計(jì)成績(jī)由課程設(shè)計(jì)考勤、課程設(shè)計(jì)程序完成情況、課程設(shè)計(jì)報(bào)告綜合評(píng)定。課程設(shè)計(jì)不得無(wú)故缺席,否則無(wú)課程設(shè)計(jì)成績(jī)。課程設(shè)計(jì)考勤占20%,課程設(shè)計(jì)程序完成情況占30%,課程設(shè)計(jì)報(bào)告占50%,對(duì)于在課程設(shè)計(jì)中具有較強(qiáng)綜合實(shí)驗(yàn)?zāi)芰蛣?chuàng)新能力的學(xué)生,在評(píng)定成績(jī)時(shí)應(yīng)給予適當(dāng)?shù)丶臃帧?/p>
項(xiàng)目四:學(xué)生成績(jī)文件管理
一、目的和要求:
1.熟悉并鞏固C程序設(shè)計(jì)語(yǔ)言的基本概念和知識(shí)。
2.培養(yǎng)學(xué)生自主學(xué)習(xí),獨(dú)立思考的能力,學(xué)會(huì)查找資料并善于分析資料的能力。3.培養(yǎng)學(xué)生獨(dú)立設(shè)計(jì),獨(dú)立調(diào)試程序的能力。
二、主要內(nèi)容:
定義一個(gè)結(jié)構(gòu)體數(shù)組,存放10個(gè)學(xué)生的學(xué)號(hào),姓名,三門課的成績(jī),輸出單門課成績(jī)最高的學(xué)生的學(xué)號(hào)、姓名、以及該門課程的成績(jī),輸出三門課程的平均分?jǐn)?shù)最高的學(xué)生的學(xué)號(hào)、姓名及其平均分,將10個(gè)學(xué)生的相關(guān)數(shù)據(jù),存入文件中,再?gòu)奈募凶x出,按照平均分?jǐn)?shù)從高到低進(jìn)行排序,分別將結(jié)果輸出到屏幕上和另一文件中,再?gòu)奈募凶x取第 1,3,5,7,9個(gè)學(xué)生的數(shù)據(jù)。
1.定義一個(gè)結(jié)構(gòu)體數(shù)組,存放10個(gè)學(xué)生的學(xué)號(hào),姓名,三門課的成績(jī) 2.從鍵盤輸入10個(gè)學(xué)生的以上內(nèi)容
3.輸出單門課成績(jī)最高的學(xué)生的學(xué)號(hào)、姓名、以及該門課程的成績(jī) 4.輸出三門課程的平均分?jǐn)?shù)最高的學(xué)生的學(xué)號(hào)、姓名及其平均分 5.從鍵盤輸入10個(gè)學(xué)生的以上內(nèi)容,存入文件stud.dat,關(guān)閉文件 6.打開stud.dat文件,將數(shù)據(jù)讀出,查看是否正確寫入,關(guān)閉文件。
7.打開文件stud.dat文件,讀出數(shù)據(jù),將10個(gè)學(xué)生按照平均分?jǐn)?shù)從高到低進(jìn)行排序,8.分別將結(jié)果輸出到屏幕上和另一文件studsort.dat中。
9.從studsort.dat 文件中讀取第1,3,5,7,9個(gè)學(xué)生的數(shù)據(jù)。
三、教學(xué)方式和時(shí)間安排:
1.教學(xué)方式:講授,討論,指導(dǎo)。2.時(shí)間安排:5學(xué)時(shí)。
四、場(chǎng)所安排:
校內(nèi)機(jī)房。
五、考核方式:
檢查程序完成情況和課程設(shè)計(jì)報(bào)告完成情況。
六、成績(jī)?cè)u(píng)定:
課程設(shè)計(jì)成績(jī)由課程設(shè)計(jì)考勤、課程設(shè)計(jì)程序完成情況、課程設(shè)計(jì)報(bào)告綜合評(píng)定。課程設(shè)計(jì)不得無(wú)故缺席,否則無(wú)課程設(shè)計(jì)成績(jī)。課程設(shè)計(jì)考勤占20%,課程設(shè)計(jì)程序完成情況占30%,課程設(shè)計(jì)報(bào)告占50%,對(duì)于在課程設(shè)計(jì)中具有較強(qiáng)綜合實(shí)驗(yàn)?zāi)芰蛣?chuàng)新能力的學(xué)生,在評(píng)定成績(jī)時(shí)應(yīng)給予適當(dāng)?shù)丶臃帧?/p>
項(xiàng)目五:一個(gè)綜合系統(tǒng)(五選一)
一、目的和要求:
1.熟悉并鞏固C程序設(shè)計(jì)語(yǔ)言的基本概念和知識(shí)。
2.培養(yǎng)學(xué)生自主學(xué)習(xí),獨(dú)立思考的能力,學(xué)會(huì)查找資料并善于分析資料的能力。3.培養(yǎng)學(xué)生獨(dú)立設(shè)計(jì),獨(dú)立調(diào)試程序的能力。
二、主要內(nèi)容:
1.學(xué)生成績(jī)管理系統(tǒng)
數(shù)據(jù)庫(kù)的數(shù)據(jù)項(xiàng)主要數(shù)據(jù)包括:學(xué)號(hào)、姓名、年級(jí)、專業(yè)、成績(jī)
1、成績(jī)
2、成績(jī)
3、平均成績(jī)、總成績(jī)。
要求具有以下功能:
(1)添加、刪除任意個(gè)記錄。(2)修改任意個(gè)記錄。(3)顯示、保存記錄。
(4)排序功能:打開學(xué)生數(shù)據(jù)庫(kù),計(jì)算每個(gè)學(xué)生的平均成績(jī)和總成績(jī),用冒泡法或選擇排序法將平均成績(jī)和總成績(jī)排序后生成兩個(gè)新文件(從大到小),存盤并顯示這兩個(gè)文件的全部記錄。
(5)查詢功能:打開總成績(jī)排序文件,用折半查找法統(tǒng)計(jì)出給定分?jǐn)?shù)的人數(shù)并顯示。
要求:
(1)設(shè)計(jì)一個(gè)主函數(shù)和多個(gè)子函數(shù),每個(gè)子函數(shù)完成一個(gè)相對(duì)獨(dú)立的子功能。(2)程序運(yùn)行時(shí),首先進(jìn)行口令檢查,再顯示菜單。并能根據(jù)菜單調(diào)用相應(yīng)的函數(shù)功能。
口令程序段的功能要求:
《1》提示用戶輸入一個(gè)口令。
《2》用戶輸入口令后,若口令對(duì),則提示用戶通過(guò),可執(zhí)行后續(xù)程序;否則不通過(guò)。
《3》可對(duì)用戶的口令輸入進(jìn)行次數(shù)限制(如:重復(fù)輸入3次都不對(duì)),則自動(dòng)退出系統(tǒng)。
(3)顯示數(shù)據(jù)時(shí),一頁(yè)顯示不下,可分頁(yè)顯示。2.教師信息管理系統(tǒng)設(shè)計(jì)
教師信息包括教師號(hào)、姓名、性別、年齡、學(xué)歷、職稱、工資、住址、電話等(教師號(hào)不重復(fù))。試設(shè)計(jì)一教師信息管理系統(tǒng),使之能提供以下功能:(1)系統(tǒng)以菜單方式工作(2)教師信息錄入功能--輸入(3)教師信息刪除功能
(4)教師信息瀏覽功能 --輸出(5)查詢和排序功能:(至少一種查詢方式)--算法
按教師號(hào)查詢
按職稱查詢等 要求:
(1)設(shè)計(jì)一個(gè)主函數(shù)和多個(gè)子函數(shù),每個(gè)子函數(shù)完成一個(gè)相對(duì)獨(dú)立的子功能。(2)程序運(yùn)行時(shí),首先進(jìn)行口令檢查,再顯示菜單。并能根據(jù)菜單調(diào)用相應(yīng)的函數(shù)功能。
口令程序段的功能要求:
《1》提示用戶輸入一個(gè)口令。
《2》用戶輸入口令后,若口令對(duì),則提示用戶通過(guò),可執(zhí)行后續(xù)程序;否則不通過(guò)。
《3》可對(duì)用戶的口令輸入進(jìn)行次數(shù)限制(如:重復(fù)輸入3次都不對(duì)),則自動(dòng)退出系統(tǒng)。
(3)顯示數(shù)據(jù)時(shí),一頁(yè)顯示不下,可分頁(yè)顯示。3.圖書信息管理系統(tǒng)設(shè)計(jì)
圖書信息包括:登錄號(hào)、書名、作者名、分類號(hào)、出版單位、出版時(shí)間、價(jià)格等。試設(shè)計(jì)一圖書信息管理系統(tǒng),使之能提供以下功能:(1(2(3)圖書信息瀏覽功能--輸出。(4)查詢和排序功能:(至少一種查詢方式)
按書名查詢
按作者名查詢
(5)圖書信息的刪除與修改。要求:
(1)設(shè)計(jì)一個(gè)主函數(shù)和多個(gè)子函數(shù),每個(gè)子函數(shù)完成一個(gè)相對(duì)獨(dú)立的子功能。(2)程序運(yùn)行時(shí),首先進(jìn)行口令檢查,再顯示菜單。并能根據(jù)菜單調(diào)用相應(yīng)的函數(shù)功能。
口令程序段的功能要求:
《1》提示用戶輸入一個(gè)口令。
《2》用戶輸入口令后,若口令對(duì),則提示用戶通過(guò),可執(zhí)行后續(xù)程序;否則不通過(guò)。
《3》可對(duì)用戶的口令輸入進(jìn)行次數(shù)限制(如:重復(fù)輸入3次都不對(duì)),則自動(dòng)退出系統(tǒng)。
(3)顯示數(shù)據(jù)時(shí),一頁(yè)顯示不下,可分頁(yè)顯示。4.電話簿管理程序
數(shù)據(jù)庫(kù)的主要數(shù)據(jù)包括:姓名、工作單位、電話號(hào)碼、E-mail地址。要求具有以下功能:(1(2)添加、刪除、修改任意個(gè)記錄。(3)顯示、保存記錄。
(4)排序功能:按電話號(hào)碼排序和按照姓名字母序排序。(5)查詢功能:按人名查詢電話號(hào)碼和按電話號(hào)碼查詢?nèi)嗣R螅?/p>
(1)設(shè)計(jì)一個(gè)主函數(shù)和多個(gè)子函數(shù),每個(gè)子函數(shù)完成一個(gè)相對(duì)獨(dú)立的子功能。(2)程序運(yùn)行時(shí),首先進(jìn)行口令檢查,再顯示菜單。并能根據(jù)菜單調(diào)用相應(yīng)的函數(shù)功能。
口令程序段的功能要求:
《1》提示用戶輸入一個(gè)口令。
《2》用戶輸入口令后,若口令對(duì),則提示用戶通過(guò),可執(zhí)行后續(xù)程序;否則不通過(guò)。
《3》可對(duì)用戶的口令輸入進(jìn)行次數(shù)限制(如:重復(fù)輸入3次都不對(duì)),則自動(dòng)退出系統(tǒng)。
(3)顯示數(shù)據(jù)時(shí),一頁(yè)顯示不下,可分頁(yè)顯示。
三、教學(xué)方式和時(shí)間安排:
1.教學(xué)方式:講授,討論,指導(dǎo)。2.時(shí)間安排:16學(xué)時(shí)。
四、場(chǎng)所安排:
校內(nèi)機(jī)房。
五、考核方式:
檢查程序完成情況和課程設(shè)計(jì)報(bào)告完成情況。
六、成績(jī)?cè)u(píng)定:
課程設(shè)計(jì)成績(jī)由課程設(shè)計(jì)考勤、課程設(shè)計(jì)程序完成情況、課程設(shè)計(jì)報(bào)告綜合評(píng)定。課程設(shè)計(jì)不得無(wú)故缺席,否則無(wú)課程設(shè)計(jì)成績(jī)。課程設(shè)計(jì)考勤占20%,課程設(shè)計(jì)程序完成情況占30%,課程設(shè)計(jì)報(bào)告占50%,對(duì)于在課程設(shè)計(jì)中具有較強(qiáng)綜合實(shí)驗(yàn)?zāi)芰蛣?chuàng)新能力的學(xué)生,在評(píng)定成績(jī)時(shí)應(yīng)給予適當(dāng)?shù)丶臃帧?/p>
第五篇:最流行的程序設(shè)計(jì)語(yǔ)言
最流行的程序設(shè)計(jì)語(yǔ)言
想要知道哪一種程序設(shè)計(jì)語(yǔ)言最受歡迎嗎?雖然收集各類數(shù)據(jù)來(lái)統(tǒng)計(jì)流行度意義不大,也有點(diǎn)難度,結(jié)果未必科學(xué),但也許很有趣,這么做純粹是“just for fun”。而多數(shù)有經(jīng)驗(yàn)的程序員是可以在一周內(nèi)了解新語(yǔ)言的基礎(chǔ),幾周內(nèi)可以上手開發(fā),精通則需要多點(diǎn)時(shí)間。由于Google反對(duì)用戶利用它的API,因 此作者采用了雅虎的搜索API,搜索關(guān)鍵詞“l(fā)anguage programming”。未經(jīng)過(guò)處理的搜索結(jié)果顯示(從高到低排列):C最多,其次是java,PHP,C++,visual basic,perl,c#,python,shell....細(xì)化搜索,專業(yè)網(wǎng)站如求職網(wǎng)站craigslist.org,可以了解計(jì)算機(jī)行業(yè)對(duì)程序語(yǔ)言的需求,結(jié)果是:SQL,C,PHP,Java,JavaScript,C#,C++,perl,visual basic,Ruby,python,shell,Cobol....搜索亞馬遜程序語(yǔ)言類書籍,結(jié)果是:C,java,visual basic,C++,SQL,Pascal,F(xiàn)ortron,c#,Assembly,perl,JavaScript...已經(jīng)發(fā)布實(shí)體的開源項(xiàng)目,反映了程序員的興趣(數(shù)據(jù)來(lái)自Freshmeat):C,java,C#,PHP,perl,python,JavaScript,shell,SQL,Tcl....Del.icio.us,反映了開發(fā)者關(guān)注的或?qū)λ杏玫馁Y料:JavaScript,PHP,Java,C,Python,Ruby,C#,Perl,C++,Lisp....綜合標(biāo)準(zhǔn)化對(duì)比結(jié)果:C,Java,PHP,C++,JavaScript,SQL,Perl,Python,C#,visual basic,Ruby....作者還統(tǒng)計(jì)了哪一種語(yǔ)言人們談?wù)摰淖疃啵占藖?lái)自programming.reddit.com,Slashdot等科技新聞社區(qū)的數(shù)據(jù)。