學(xué)好Scratch后,除了學(xué)習(xí)Python還可以學(xué)習(xí)c語(yǔ)言。筆者認(rèn)為,如果讓孩子直接從純代碼編程開(kāi)始學(xué)習(xí)并不合適,從Scratch開(kāi)始學(xué)習(xí)便能起到非常好的引導(dǎo)作用,孩子在學(xué)習(xí)的過(guò)程中采用圖形化的方式了解未來(lái)純代碼語(yǔ)言中的變量、數(shù)組、分支、循環(huán)等知識(shí)點(diǎn)。由淺入深理解了這些知識(shí)后,等積累到了一定層次后自然就可以學(xué)習(xí)其他純代碼語(yǔ)言了。今后我們也會(huì)增加一些c語(yǔ)言的內(nèi)容,讓我們能夠接觸更高級(jí)的編程知識(shí)。
今天就用c語(yǔ)言統(tǒng)計(jì)輸入字符的數(shù)量:“輸入一行文字,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間以空格分開(kāi)”。例如輸入“My name is Teacher_chen”,統(tǒng)計(jì)應(yīng)得出有4個(gè)單詞。
首先我們要確定解題思路,如何確定出現(xiàn)了一個(gè)新的單詞呢?從第一個(gè)單詞逐個(gè)字符進(jìn)行檢查,判斷此字符是否屬于新的單詞,如果有新單詞出現(xiàn),變量num的值增加1(這里使用變量num統(tǒng)計(jì)單詞數(shù)量),最后得到的num的值就是單詞的總數(shù)。
根據(jù)出現(xiàn)空格來(lái)判斷出現(xiàn)了新單詞,連續(xù)若干個(gè)空格只作為一次空格。如果偵測(cè)到某個(gè)字符為非空格,只需要判斷它前面的字符是否為空格,如果前面字符為空格表示新單詞開(kāi)始了,則num+l,否則還是原來(lái)的單詞,不改變num。因此新增一個(gè)變量word判斷是否出現(xiàn)了新單詞,若word等于o表示前一個(gè)字符為空格,如果word等于1,意味著前一個(gè)字符為非空格。我們用流程圖表示(如圖1)。
有了思路之后便可以據(jù)此編寫(xiě)代碼,在c語(yǔ)言學(xué)習(xí)中我們會(huì)使用到C-Free軟件,它是一款支持多種編譯器的專(zhuān)業(yè)化c/c++集成開(kāi)發(fā)環(huán)境(IDE)。c語(yǔ)言是一門(mén)面向過(guò)程的,抽象化的程序設(shè)計(jì)語(yǔ)言,應(yīng)用于底層的開(kāi)發(fā),而且書(shū)寫(xiě)格式極其嚴(yán)格。
第一行#includeVstdio h>為“預(yù)處理指令”,是c語(yǔ)言中的一個(gè)頭文件,stdioh頭文件包含了c語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)的定義。c語(yǔ)言程序和其他語(yǔ)言一樣都是由一個(gè)或多個(gè)程序組成,必須包含一個(gè)mam函數(shù)(如圖2)。
在代碼中我們可以看到,首先定義了一個(gè)字符串和一些變量。c語(yǔ)言的循環(huán)寫(xiě)法也有所不同,注意第日行代碼for(i=0,(c=string[i]),二‘\o,i++)分成了二部分,每部分用分號(hào)隔開(kāi)。
第一部分是初始化變量i=0,第一部分是循環(huán)判斷條件,只要字符不是“\()”就繼續(xù)執(zhí)行,第三部分就是增量,執(zhí)行完循環(huán)體語(yǔ)句后的操作。在9到16行的循環(huán)體中先判斷字符是否為空格,如果字符為空格則word等于(),如果不為空格且word值為(),則使word為1,num累加1,表示增加一個(gè)單詞。
這樣我們就將流程圖轉(zhuǎn)化成了代碼,根據(jù)代碼運(yùn)行直至這串字符結(jié)束,便可以統(tǒng)計(jì)出單詞的數(shù)量(如圖3)。
c語(yǔ)言相比其他語(yǔ)言有著更嚴(yán)格的格式要求,所以大家在學(xué)習(xí)過(guò)程中一定要多上機(jī),多敲代碼,學(xué)會(huì)記筆記,遇到問(wèn)題要記得網(wǎng)上有豐富的學(xué)習(xí)資料,會(huì)幫助你解決難題的,加油!