作為一個(gè)計(jì)算機(jī)專業(yè)的學(xué)生編程是必備技能,但是作為一個(gè)剛?cè)腴T的編程新手,該如何形成一個(gè)編程思維呢?
你有沒有發(fā)現(xiàn),老師課堂上講的你都懂,書上的代碼你能看懂,但是當(dāng)你自己寫的時(shí)候,卻不知如何下手,這就是沒有形成一個(gè)編程思維。
很多人嘴皮子厲害,但是動(dòng)手能力不行,你讓他講一段代碼講一個(gè)思想,他都能講出來,但是一讓他動(dòng)手,他就懵了,不會(huì)寫,手放在鍵盤上盯著屏幕半天敲不出一句代碼。
為什么?因?yàn)閷懙纳侔。∧阆胂肽闾焯炻犂蠋熤v課,老師在課堂上PPT代碼都寫好了,直接復(fù)制粘貼運(yùn)行,然后結(jié)果出來了,一看好像很簡(jiǎn)單啊,這么簡(jiǎn)單根本不需要?jiǎng)邮致铩?/p>
這你就錯(cuò)了,編程這個(gè)東西,你不動(dòng)手你永遠(yuǎn)學(xué)不會(huì),就好比學(xué)游泳,學(xué)羽毛球,你試試你不下水,不拿起拍子,你看你能學(xué)會(huì)嗎?
聽的時(shí)候什么都懂,做起來啥都不會(huì),是我們國(guó)家計(jì)算機(jī)專業(yè)學(xué)生的典型問題。動(dòng)手能力太差了,我曾經(jīng)在大學(xué)的時(shí)候,就有很多同學(xué)是這樣的,比如上課的時(shí)候聽的很認(rèn)真,做理論題也很厲害,每次期末考試都是前幾名,年年拿獎(jiǎng)學(xué)金,但是你讓他寫代碼,對(duì)比起!
他不會(huì)的,連編程的編輯器,編譯器都不會(huì)用。
這樣的同學(xué)我相信不少,你不動(dòng)手,就形成不了編程的思維,別人寫的代碼是別人的思維,不是你的,你抄別人的代碼,能把別人的思維變成你的思維嗎?肯定不行啊。
所以作為一個(gè)計(jì)算機(jī)專業(yè)的學(xué)生,學(xué)習(xí)編程是肯定要?jiǎng)邮值模粌H要?jiǎng)邮诌€要不斷的思考。
比如要你設(shè)計(jì)一個(gè)搶紅包的程序。
需求是一個(gè)大V直播抽獎(jiǎng),獎(jiǎng)品是現(xiàn)金紅包,分別有{20, 100 , 500, 800, 1000}五個(gè)獎(jiǎng)金。請(qǐng)使用代碼模擬抽獎(jiǎng)。
打印出每個(gè)獎(jiǎng)項(xiàng),獎(jiǎng)項(xiàng)的出現(xiàn)順序要隨機(jī)且不重復(fù)。打印效果如下:(隨機(jī)順序,不一定是下面的順序)
20元的獎(jiǎng)金被抽出 500元的獎(jiǎng)金被抽出 1000元的獎(jiǎng)金被抽出你會(huì)怎么設(shè)計(jì)呢?
首先當(dāng)然是分析需求,既然是抽獎(jiǎng)那肯定有獎(jiǎng)項(xiàng),獎(jiǎng)項(xiàng)是5個(gè)固定的金額,那就需要5個(gè)變量來存儲(chǔ)這5個(gè)金額,那么要聲明5個(gè)變量嗎?
完全沒有必要啊,可以使用數(shù)組啊,一個(gè)整型數(shù)組的變量可以存儲(chǔ)很多個(gè)整型數(shù)字呢!
比如先定義一個(gè)整型數(shù)組:
int[] award = new int[5];然后是設(shè)計(jì)一個(gè)隨機(jī)程序,這個(gè)隨機(jī)數(shù)可以用一個(gè)函數(shù)來生成,而這個(gè)函數(shù)在C語(yǔ)言中叫rand(),所以生成隨機(jī)數(shù)的代碼如下:
int n=rand()%5其中rand()是生成一個(gè)隨機(jī)整型數(shù),但是這個(gè)數(shù)值可能會(huì)很大,具體的最大數(shù)值根據(jù)編譯器的環(huán)境確定。
所以還需要對(duì)這個(gè)生成的數(shù)進(jìn)行裁剪,而這個(gè)裁剪方式就是對(duì)5進(jìn)行取余操作。假如rand()函數(shù)生成的隨機(jī)數(shù)是26對(duì)5取余后就是等于1,那這個(gè)索引就是1,再使用這個(gè)索引去獲取存儲(chǔ)的獎(jiǎng)項(xiàng),就是int[1],根據(jù)獎(jiǎng)項(xiàng)的順序那就是100元,因?yàn)樵贑語(yǔ)言中,數(shù)組的索引是從0 開始的。
還需要對(duì)已經(jīng)抽取的獎(jiǎng)項(xiàng)進(jìn)行記錄,因?yàn)榫?個(gè)獎(jiǎng)項(xiàng),已經(jīng)抽取的肯定不能再次被抽取了,需要定義一個(gè)數(shù)組用來記錄已經(jīng)抽取的獎(jiǎng)項(xiàng)。
int m= new int[5];然后再分析,需求是需要打印輸出抽到的獎(jiǎng)項(xiàng),同樣需要一個(gè)變量來存儲(chǔ),這些打印的數(shù)據(jù),這個(gè)打印數(shù)據(jù)是一個(gè)字符串,那么可以使用字符串變量存儲(chǔ)。
比如定義:
char prize[] = "20元的獎(jiǎng)金被抽出";整個(gè)分析過程如下:
定義一個(gè)數(shù)組用于存儲(chǔ)這些獎(jiǎng)金金額。 定義一個(gè)數(shù)組用于記錄已經(jīng)抽到的金額。 每次抽獎(jiǎng)都隨機(jī)一個(gè)索引,取出索引對(duì)應(yīng)的獎(jiǎng)金金額,判斷該金額之前是否抽中過,抽中過重新抽一次。 把抽到的獎(jiǎng)項(xiàng)打印輸出。這就是一個(gè)編程思維,把一個(gè)具體的問題,變成一段段的代碼,每一句代碼都有它的含義。
所以要想形成自己的編程思維,首先是分析問題,把解決問題的步驟寫下來,然后把每一個(gè)步驟變成代碼,最后才是寫到編輯器上調(diào)試執(zhí)行查看結(jié)果,而這個(gè)過程需要先動(dòng)腦再動(dòng)手。
按照上述方法去做幾道書上的題目,把正確的結(jié)果都執(zhí)行出來,我相信你很快就能形成一個(gè)自己的編程思維了,但是記住一定要自己手敲代碼,復(fù)制的不算哦。
歡迎關(guān)注我,學(xué)習(xí)更多計(jì)算機(jī)知識(shí)!
責(zé)任編輯:Rex_08