高茂嬋 呂雪 彭星星 孫新杰
摘要:現(xiàn)在人們對計(jì)算機(jī)中的算法的要求越來越高,順序結(jié)構(gòu)已經(jīng)滿足不了人們的需求,我們需要探索更高層次的操作算法。在程序設(shè)計(jì)中,我們操作的時(shí)候經(jīng)常遇到需要重復(fù)執(zhí)行的情況,而循環(huán)結(jié)構(gòu)就恰恰滿足了這個(gè)要求。在程序設(shè)計(jì)中,循環(huán)結(jié)構(gòu)是算法中必不可少的部分。在我們使用編程時(shí)一定要明確什么操作下需要反復(fù)執(zhí)行,操作在什么情況下重復(fù)執(zhí)行等等問題,它們分別對應(yīng)循環(huán)體和循環(huán)條件。知道這些問題后就能用c語言中的循環(huán)語句(for,while和do-while)來實(shí)現(xiàn)循環(huán)操作。
關(guān)鍵詞:c語言;循環(huán)結(jié)構(gòu);程序設(shè)計(jì);學(xué)習(xí)者
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)06-0058-03
1循環(huán)結(jié)構(gòu)中的三中循環(huán)語句
1.1while循環(huán)語句
從上面的while循環(huán)語句的代碼和流程圖實(shí)例可以明顯看出,在執(zhí)行循環(huán)操作之前,我們要先給i賦一個(gè)初始值4,并且其值是滿足絕對值小于等于20的,我們的目的是為了讓它的初始值的循環(huán)條件一定為真,保證循環(huán)能順利執(zhí)行。其次while要進(jìn)行判斷i是否滿足循環(huán)條件,因?yàn)橹挥衖<=20時(shí)才能執(zhí)行循環(huán)操作。在后面的循環(huán)操作中,每執(zhí)行一次都會重新計(jì)算i的值,這將意味著什么時(shí)候結(jié)束循環(huán)。從流程圖中可直觀看出當(dāng)i的值小于等于20時(shí)為”真”,程序一直循環(huán)執(zhí)行,直到i的值大于20時(shí)變?yōu)椤奔佟?,循環(huán)就會中止執(zhí)行并輸出結(jié)果Sum。由上可總結(jié)得出在while循環(huán)語句中,只有條件為”真”時(shí),我們才能執(zhí)行循環(huán);當(dāng)條件變?yōu)椤奔佟睍r(shí)就會跳出循環(huán)然后輸出結(jié)果。從上面例題中也能看出while語句的構(gòu)成非常簡單,它只含有一個(gè)循環(huán)條件,即i<=20,同樣也只含有一個(gè)循環(huán)體,即Sum=sum+3.0/i。通常,while循環(huán)語句用在沒有直接給出循環(huán)的次數(shù),而是由某一個(gè)值來控制循環(huán)這種情況。在本例題中,我們沒有指定的循環(huán)次數(shù),若指定了循環(huán)次數(shù)的話,最好就采用for循環(huán)語句,這樣會更清晰,更容易理解。我們還要特別注意一點(diǎn):在使用while的循環(huán)語句時(shí)一定要包括能最后判斷出while循環(huán)語句條件的真假性的操作過程。
從上面的do-while循環(huán)語句的代碼和流程圖實(shí)例可以明顯看出,在執(zhí)行循環(huán)操作之前,我們要先給k賦一個(gè)初始值1,sum的初始值為0。do-while循環(huán)語句與while循環(huán)語句有所不同,while語句是循環(huán)前判斷循環(huán)條件,只有條件滿足的時(shí)候才能執(zhí)行循環(huán),如果條件從起初就不滿足的話,循環(huán)是一次都不可能執(zhí)行的。然而do-while從一開始進(jìn)入循環(huán)時(shí),首先執(zhí)行循環(huán)體語句,即sum+=k;k+=2;然后在判斷循環(huán)條件,即k<=10的值小于等于10時(shí)為”真”,程序繼續(xù)執(zhí)行循環(huán),直到k的值大于10為”假”,循環(huán)就會中止并輸出sum。由上可總結(jié)得出在do-while環(huán)語句中,只有條件為”真”時(shí),我們才能執(zhí)行循環(huán);當(dāng)條件變?yōu)椤奔佟睍r(shí)就會跳出循環(huán),然后輸出結(jié)果。從上面例題中也能看出do-while語句的構(gòu)成非常簡單,它只含有一個(gè)循環(huán)條件,即k<=10同樣也只含有一個(gè)循環(huán)體語句,即例題中的sum+=k;k+=2。最重要也是同學(xué)們最容易出錯(cuò)的一點(diǎn)就是do-while循環(huán)語句中一定要包括能最后判斷出do-while循環(huán)語句條件的真假性的操作過程。
1.3for循環(huán)語句
1.3.1我們?nèi)匀挥靡粋€(gè)來解釋for循環(huán)的含義
在上面例題中。我們使用的是for循環(huán)語句,循環(huán)的次數(shù)是由輸入的b來決定,但是在上面例題for循環(huán)中,b的值在執(zhí)行循環(huán)之前就已經(jīng)確定了值。在此循環(huán)中,因?yàn)閟um=sum+a是在原來的累加和sum的基礎(chǔ)上一步步地來累加a得到值的,所以為了確定sum能在0的基礎(chǔ)上累加,我們一開始就必須把sum的值設(shè)置為0。首先,我們需要分別給循環(huán)變量a和sum賦一個(gè)初始值,即a=1,sum=0,其實(shí)這就是我們所說的初始化。其次,當(dāng)for循環(huán)語句在執(zhí)行第一個(gè)表式(a=1)之后就開始對循環(huán)條件(a<=b)進(jìn)行判斷,如果條件滿足時(shí)就開始執(zhí)行循環(huán)。當(dāng)a的值小于等于b時(shí)為”真”,程序繼續(xù)執(zhí)行循環(huán),直到k的值大于b時(shí)為”假”。循環(huán)就會中止并輸出sum。還有在循環(huán)體語句Sum=sum+a中,我相信所有人能明顯看出它是一條完整的復(fù)合語句,其實(shí)它也可以是空句,就像懶鬼一樣什么都不用做。在上面的例題中,我們?nèi)绻胍淖僨or循環(huán)語句中循環(huán)條件的真假性,只需要改變循環(huán)變量的值,即改變a++的值就可以,但是如果缺少了a++,那么a的值就一直不會改變,而我們的循環(huán)條件a<=b也會一直為”真”,這就會造成死循環(huán),也就是循環(huán)會一直無法結(jié)束。最后也要注意三點(diǎn):1.初始值(a=1)只執(zhí)行一次,那就是在進(jìn)入循環(huán)之前,而其他部分將會重復(fù)執(zhí)行;2.在for循環(huán)語句中,有三個(gè)表達(dá)式(a=1;a<=b;a++),需用兩個(gè)分號隔開,還有學(xué)者們超級容易犯的一個(gè)錯(cuò)誤就是在for的后面加上分號,一定要切記for的后面是沒有分號的,還有我們寫程序的時(shí)候也不要隨便在for循環(huán)語句中隨便添加分號。這些小細(xì)節(jié)往往是學(xué)者們最容易被忽略的;3.在for循環(huán)語句中,如果含有多條循環(huán)體語句的話,一定要記得用大括號括起來,把它們改變成一條復(fù)合語句,這是我經(jīng)常犯的錯(cuò)特別提醒。
1.3.2 break語句和continue語句
在for循環(huán)語句中,break語句和continue語句也是特別重要的,經(jīng)常出現(xiàn)在我們的高級程序設(shè)計(jì)中。
現(xiàn)在我們先來談?wù)刡reak語句,在for循環(huán)語句中,如果循環(huán)條件為”真”時(shí),它就會一直執(zhí)行循環(huán),只有循環(huán)條件為”假”時(shí)才會跳出循環(huán)。那如果我們想要在執(zhí)行循環(huán)的時(shí)候跳出循環(huán),不讓它再繼續(xù)執(zhí)行下去的話,我們該怎么辦呢?這個(gè)時(shí)候我們就要用到break語句了。break語句具有強(qiáng)行中止循環(huán)的作用,只要使用了break語句,循環(huán)操作就會提前停止,就不會再繼續(xù)執(zhí)行排在break后面的其他語句了。這其實(shí)就是我們生活中的普遍存在的現(xiàn)。比如,當(dāng)一個(gè)小孩正在打游戲,父母叫他不要打,他不聽繼續(xù)打時(shí),父母就會采取一定的措施強(qiáng)制他停止,這個(gè)措施對應(yīng)的就是我們所說的break語句。Break語句基本都是和if語句搭配使用的,目的是為了設(shè)置一定的條件來滿足break語句跳出循環(huán);不然的話,如果break是沒有條件執(zhí)行的,則程序?qū)⒂肋h(yuǎn)不會執(zhí)行break語句后面多的其他語句。Break語句除了可以強(qiáng)行中止循環(huán)之外,它還可以作用在switch語句里面。
對于continue語句來說,它的作用是結(jié)束正在執(zhí)行的本次循環(huán),接著執(zhí)行下一次循環(huán)。比如:for(a=l;a<5;a++)if(a==3)continue;當(dāng)這個(gè)循環(huán)結(jié)束的時(shí)候,a=6,盡管在a=3的時(shí)候操作了continue,也不會影響循環(huán)的所有執(zhí)行。
2循環(huán)結(jié)構(gòu)中的程序設(shè)計(jì)
在程序的設(shè)計(jì)當(dāng)中,我們?nèi)绻枰M(jìn)行重復(fù)執(zhí)行某些操作,那么就要用上循環(huán)結(jié)構(gòu),學(xué)習(xí)者要注意區(qū)分循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu),雖然這兩種結(jié)構(gòu)都會用到條件判斷,但判斷以后的形式完全不同,分支結(jié)構(gòu)中的語句它只執(zhí)行操作一次,但循環(huán)結(jié)構(gòu)中的語句,可以進(jìn)行重復(fù)多次。
我們學(xué)習(xí)循環(huán)程序的實(shí)現(xiàn)要點(diǎn)有兩條分別是:
1)要?dú)w納出哪些操作需要反復(fù)執(zhí)行循環(huán)體一循環(huán)體。
2)這些操作在什么情況下進(jìn)行重復(fù)執(zhí)行一循環(huán)控制的條件。
只要確定了循環(huán)體和循環(huán)的條件,那么循環(huán)結(jié)構(gòu)差不多就確定了,再選擇C語言給我學(xué)習(xí)提供的三中循環(huán)語句(for,whie,do-while)來實(shí)現(xiàn)循環(huán)。
如果在執(zhí)行的過程中遇到了循環(huán)問題,我們?nèi)绾稳ミx擇哪一種語句呢?一般情況下,它們都是通用的,但用的時(shí)候它們各有自己的特色和差別。
一般說,操作定了循環(huán)次數(shù),那么我們首選for語句,它看起來是最清晰的,循環(huán)的4個(gè)組成部分了就一目了然;沒有明確次數(shù)的話,那就需要通過其他的條件來控制循環(huán)。
3學(xué)生如何熟練應(yīng)用掌握循環(huán)結(jié)構(gòu)
對于我們計(jì)算機(jī)專業(yè)的學(xué)生,C語言中學(xué)習(xí)循環(huán)結(jié)構(gòu)是非常重要的,這對我們進(jìn)行編程和處理問題有很大的用處,作為一個(gè)編程人員,循環(huán)結(jié)構(gòu)的使用也是必須了解掌握。
1)課前預(yù)習(xí)
利用書本,資料、線上學(xué)習(xí)視頻先預(yù)習(xí)知識點(diǎn),把不理解的記下,課堂中帶著問題去學(xué)習(xí)。
2)課堂中練習(xí)
認(rèn)真聽課,解決課前預(yù)習(xí)的問題,在老師講課的同時(shí),要了解所學(xué)課程,教師的代碼要理解每個(gè)代碼的含義,也可以寫出程序的知識。操作過程中所遇到的問題困難及時(shí)向老師求教。
3)課后總結(jié)復(fù)習(xí)
預(yù)習(xí)和課堂中學(xué)習(xí)是不夠的,我們課后還有不斷的理解總結(jié)所學(xué)的知識,反復(fù)操作,到達(dá)熟練使用,并遷移知識的應(yīng)用。
4結(jié)束語
循環(huán)結(jié)構(gòu)語句中有while語句、for語句、do-while這三種語句。使用循環(huán)語句前應(yīng)先判斷條件for、while語句。進(jìn)入循環(huán)必須要滿足條件。先執(zhí)行循環(huán)體然后要判斷循環(huán)條件的是do-while語句。通過學(xué)習(xí)循環(huán)結(jié)構(gòu)的過程中,會遇到許多困難和問題,比如程序運(yùn)行錯(cuò)誤、語義不通。對于C語言的學(xué)習(xí)有了逐步了解,所以學(xué)習(xí)中要更加努力,才能更好地掌握這門語言!