亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        “五步編程法”在《C程序設(shè)計(jì)》教學(xué)中的應(yīng)用研究

        2017-12-11 11:55:45柴群梁劍波
        電腦知識與技術(shù) 2017年31期

        柴群 梁劍波

        摘要:C程序設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)中開設(shè)的比較重要、基礎(chǔ)的專業(yè)課,大部分學(xué)生接觸程序設(shè)計(jì)都是從該門課開設(shè)的。學(xué)過的學(xué)生普遍反映C程序設(shè)計(jì)比較難,不容易掌握。該文根據(jù)《C程序設(shè)計(jì)》教學(xué)經(jīng)驗(yàn),從算法出發(fā),總結(jié)出“五步編程法”,幫助學(xué)生編程快速入門,以提高學(xué)生編程水平和編程能力。

        關(guān)鍵詞:C程序設(shè)計(jì);五步編程法;算法;編程

        中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)31-0140-02

        通過總結(jié)最近幾個學(xué)期的《C程序設(shè)計(jì)》的期末考試試卷發(fā)現(xiàn),學(xué)生對于C程序的掌握較差,得分率很低,原因主要存在兩個方面:(1)對C語言語法死記硬背,不能靈活使用,當(dāng)題目有變化時就不知道如何處理。(2)拿到題目后不知如何編寫符合題意的程序,不能將書本的知識解決現(xiàn)實(shí)問題。

        對于第一種情況,說明這些同學(xué)C語言知識掌握不牢,可以通過大量的練習(xí)來提高其編程能力。對于第二種情況,筆者總結(jié)了“五步編程法”來進(jìn)行針對性教學(xué),實(shí)踐表明,可以很好地提高學(xué)生的編程能力。

        1 第一步——算法分析

        算法從廣義上來說,是為了解決一個問題而采取的方法和步驟,它分為數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法兩大類。數(shù)值運(yùn)算的目的是求數(shù)值解,例如求解方程的跟、求一個函數(shù)的定積分等,都屬于數(shù)值運(yùn)算范疇,這類算法往往都有現(xiàn)成的模型、公式,可供學(xué)生使用。而非數(shù)值運(yùn)算算法包括的就十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域,這類算法運(yùn)算的種類繁多,要求各異,只有一些典型的非數(shù)值運(yùn)算算法,如排序算法,查找算法等。C程序設(shè)計(jì)所涉及的算法基本上以數(shù)值運(yùn)算算法為主,也接觸一些典型的非數(shù)值運(yùn)算算法,這樣算法具有一定的規(guī)律,可以引導(dǎo)學(xué)生查找這些算法的規(guī)律,提高學(xué)生的編程能力。①

        在這一步中,學(xué)生的主要是任務(wù)是尋找算法,并將算法用數(shù)學(xué)公式表達(dá)出來。

        例如求ax2+bx+c=0方程的根。a,b,c由鍵盤輸入,設(shè)b2-4ac>0,且a≠0。這是一個典型的二元一次方程,在中學(xué)的時候就知道,求解方程的根的公式是:

        [x1=-b+b2-4ac2a] …………①

        [x2=-b-b2-4ac2a] …………②

        為了表達(dá)方便,可以將公式分為兩項(xiàng):

        [p=-b2a],[q=b2-4ac2a],則公式①、②可變?yōu)?/p>

        [x1=p+q] …………③

        [ x2=p-q] …………④

        有了這些公式,只要知道a、b、c的值就可以求出方程的根。

        2 第二步——將算法用C語言語句表示

        C語言有自己的語法規(guī)則,在這一步,學(xué)生需要將數(shù)學(xué)公式轉(zhuǎn)換成符合C語言語法規(guī)則的表達(dá)式,并將該表達(dá)式轉(zhuǎn)換成可以執(zhí)行的C語句。

        根據(jù)C語言的語法規(guī)則,[p=-b2a]可以表示為

        [p=-b/(2*a)] …………⑤

        [q=b2-4ac2a]可以表示為

        [q=sqrt(b*b-4*a*c)/(2*a)] …………⑥

        其中 disc=b*b-4*a*c …………⑦

        sqrt()是編譯系統(tǒng)提供數(shù)學(xué)函數(shù),作用是求解[x],它在使用時必須在源文件中加入#include 語句。

        公式⑤⑥⑦在C語言中被稱為表達(dá)式,表達(dá)式轉(zhuǎn)換成可執(zhí)行的C語句的方法是在表達(dá)式后面加上“;”。根據(jù)語法規(guī)則,公式③④⑤⑥⑦轉(zhuǎn)換成C語句為:

        disc=b*b-4*a*c; …………⑧

        [p=-b/(2*a)]; …………⑨

        [q=sqrt(disc)/(2*a)]; …………⑩

        [ x1=p+q]; …………?

        [ x2=p-q]; …………?

        3 第三步——將得到的C語句填充到程序的主函數(shù)的函數(shù)體中

        C語言規(guī)定,程序的執(zhí)行總是從主函數(shù)(main)開始,并從主函數(shù)結(jié)束。而且C語言的輸入輸出都是通過庫函數(shù)實(shí)現(xiàn),這個庫函數(shù)被包含在stdio.h的頭文件中。C語言的main()函數(shù)語法格式(加上兩個頭文件,#include 和#include ):

        #include

        #include

        void main()

        {

        函數(shù)體

        } …………?

        將⑧~?填充到?中得到程序?yàn)椋?/p>

        #include

        void main()

        {

        disc=b*b-4*a*c; …………⑧

        [p=-b/(2*a)]; …………⑨

        [q=sqrt(disc)/(2*a)]; …………⑩

        [ x1=p+q]; …………?

        [ x2=p-q]; …………?

        } …………?

        4 第四步——查漏補(bǔ)缺

        C語言規(guī)定,任何變量必須“先定義、后使用”,例中disc,p,q,a,b,c,x1,x2都是變量,這些變量都需要在使用前先定義,在語句⑧之前添加給變量定義的語句。設(shè)變量a,b,c為整型,其它的變量為浮點(diǎn)型。根據(jù)語法規(guī)則,補(bǔ)充語句(帶陰影部分),得到源程序?yàn)椋?/p>

        #include

        #include

        void main()

        {

        int a,b,c;

        float disc,p,q,x1,x2;

        disc=b*b-4*a*c; …………⑧

        [p=-b/(2*a)]; …………⑨

        [q=sqrt(disc)/(2*a)]; …………⑩

        [ x1=p+q]; …………?

        [ x2=p-q]; …………?

        } …………?

        很多變量在使用前需要給它一個初始的值,這個過程被稱為賦初值。C語言一般通過兩種形式實(shí)現(xiàn),一個是通過賦值語句,一個是通過輸入函數(shù)scanf。使用輸入函數(shù),可以通過人機(jī)界面實(shí)現(xiàn)數(shù)據(jù)的輸入,編制的程序復(fù)用性高,是常見的變量賦值的方法,本題要求是通過輸入函數(shù)實(shí)現(xiàn)對a,b,c賦初值的。根據(jù)語法規(guī)則,補(bǔ)充語句(帶陰影部分),得到源程序?yàn)椋?/p>

        #include

        #include

        void main()

        {

        int a,b,c;

        float disc,p,q,x1,x2;

        scanf(“%d%d%d”,&a,&b,&c);

        disc=b*b-4*a*c; …………⑧

        [p=-b/(2*a)]; …………⑨

        [q=sqrt(disc)/(2*a)]; …………⑩

        [ x1=p+q]; …………?

        [ x2=p-q]; …………?

        } …………?

        編程的目的是想求解方程的根,輸入a,b,c就要得到方程的解(假設(shè)方程有解),因此還要加上輸出語句(用printf實(shí)現(xiàn))。根據(jù)語法規(guī)則,補(bǔ)充語句(帶陰影部分),得到源程序?yàn)椋?/p>

        #include

        void main()

        {

        int a,b,c;

        float disc,p,q,x1,x2;

        scanf(“%d%d%d”,&a,&b,&c);

        disc=b*b-4*a*c; …………⑧

        [p=-b/(2*a)]; …………⑨

        [q=sqrt(disc)/(2*a)]; …………⑩

        [ x1=p+q]; …………?

        [ x2=p-q]; …………?

        printf(“方程的兩個根分別是x1=%f\n,x2=%f\n”,x1,x2);

        } …………?

        至此,一個完整的求解二元一次方程根的源程序已經(jīng)編寫完成,下面就要進(jìn)行第五步,編譯、排錯、執(zhí)行。

        5 第五步——反復(fù)進(jìn)行編譯、排錯、執(zhí)行程序,直至輸出正確的結(jié)果

        編譯的作用首先是對源程序進(jìn)行檢查,判斷有沒有語法方面的錯誤,如有,則給出錯誤信息,通知編程人員進(jìn)行修改。修改程序后還要重新進(jìn)行編譯,如果有錯,還要進(jìn)行修改。這個過程會反復(fù)執(zhí)行,直到?jīng)]有語法錯誤為止。

        對沒有語法錯誤的源程序進(jìn)行連接處理,得到.obj文件。編譯系統(tǒng)在對.obj文件進(jìn)行處理得到可執(zhí)行文件.exe,運(yùn)行該文件即可得到結(jié)果。

        這里需要注意的是,由于編譯只能發(fā)現(xiàn)語法錯誤,不能發(fā)現(xiàn)邏輯錯誤,因此有時會出現(xiàn)源程序沒有語法錯誤,但是卻得不到正確的結(jié)果。這就要對源程序進(jìn)行單步調(diào)試,觀察變量的值,尋找邏輯錯誤。本例中語句⑨就存在邏輯錯誤,初學(xué)者很難發(fā)現(xiàn)。運(yùn)算符“[/]”的左右兩邊都是整型數(shù)值時,得到的數(shù)據(jù)也是整型,如果b<2*a,p的值就會是0,而不是一個小數(shù),因此需要將計(jì)算的結(jié)果轉(zhuǎn)換成小數(shù),語句⑨可修改為,[p=-b/(2.0*a)]; 這樣得到的程序才能計(jì)算出正確的結(jié)果。

        在學(xué)生掌握“五步編程法”基礎(chǔ)上,可以繼續(xù)對第一步、第二步進(jìn)行擴(kuò)充到選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、復(fù)合結(jié)構(gòu),從數(shù)值運(yùn)算擴(kuò)充到非數(shù)值運(yùn)算,從而慢慢地提高學(xué)生的編程能力,解決學(xué)生編程難的問題。

        參考文獻(xiàn):

        [1] 譚浩強(qiáng).C程序設(shè)計(jì)[M].四版.北京:清華大學(xué)出版社,16-17.

        亚洲av一二三区成人影片| 亚洲一区二区三区99区| 精品少妇爆乳无码aⅴ区| 亚洲最黄视频一区二区| 中文字幕精品一区二区三区| 久久久久亚洲精品无码系列| 日韩一卡2卡3卡4卡新区亚洲| 在教室伦流澡到高潮h麻豆| a午夜国产一级黄片| 少妇极品熟妇人妻高清| 久久亚洲精品一区二区三区| 午夜国产精品视频在线观看| 狠狠色噜噜狠狠狠8888米奇| 国产真实夫妇视频| 国产乱妇乱子视频在播放| 国产黑色丝袜在线观看视频| 亚洲美女一区二区三区三州| 日韩中文字幕在线观看一区 | 免费无码又黄又爽又刺激| 久久久久国产精品熟女影院 | 五月婷婷开心六月激情| 欧美又大粗又爽又黄大片视频| 日日躁夜夜躁狠狠躁| 欧美日韩中文国产一区| 久久精品国产亚洲AⅤ无码剧情| 女同一区二区三区在线观看| 久久久av波多野一区二区| 国产激情对白一区二区三区四| 国产高清精品在线二区| 伊人久久这里只有精品| 国产午夜成人av在线播放| 国产视频导航| 国产av一区二区三区国产福利 | 精品香蕉99久久久久网站 | 欧美精品一级| 美女极度色诱视频国产免费| 日韩va高清免费视频| 国产亚洲精品第一综合另类| 永久免费无码av在线网站 | 成人a级视频在线播放| 99精品电影一区二区免费看|