• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      C語(yǔ)言字符串類型缺陷及影響分析

      2019-05-23 10:45:26徐曉
      中國(guó)管理信息化 2019年10期

      徐曉

      [摘 要]二本院校計(jì)算機(jī)專業(yè)學(xué)生普遍感覺(jué)C語(yǔ)言難學(xué),學(xué)習(xí)效果差,不能為后續(xù)語(yǔ)言學(xué)習(xí)奠定基礎(chǔ)。本文從數(shù)據(jù)類型角度分析這種狀況產(chǎn)生的原因,提出C語(yǔ)言的數(shù)據(jù)類型存在的缺陷,其中字符串部分尤其突出,并提出相關(guān)解決方案,旨在為相關(guān)研究提供借鑒。

      [關(guān)鍵詞]C語(yǔ)言;字符串缺陷;二本院校

      doi:10.3969/j.issn.1673 - 0194.2019.10.088

      [中圖分類號(hào)]TP312 [文獻(xiàn)標(biāo)識(shí)碼]A [文章編號(hào)]1673-0194(2019)10-0-02

      1 二本院校計(jì)算機(jī)專業(yè)選擇C語(yǔ)言作為入門語(yǔ)言的原因

      大學(xué)計(jì)算機(jī)專業(yè)編程教學(xué)的入門語(yǔ)言多年來(lái)一直以C語(yǔ)言為主,不過(guò)近年來(lái)一些學(xué)校開(kāi)始選擇Java或Python作為入門語(yǔ)言。但是對(duì)于二本院校計(jì)算機(jī)專業(yè)來(lái)說(shuō),大多數(shù)還是選擇C語(yǔ)言作為入門語(yǔ)言,原因如下。第一,如果選擇Python作為入門語(yǔ)言,雖然入門容易,也很容易學(xué)會(huì),但是二本計(jì)算機(jī)專業(yè)學(xué)生畢業(yè)后很多還是從事前端、后端、客戶端等方面的開(kāi)發(fā)工作,其主要語(yǔ)言是Java、C#、Javascript、php等,其基礎(chǔ)語(yǔ)法都是基于C語(yǔ)言的語(yǔ)法,而Python的語(yǔ)法則與這些語(yǔ)言完全不同。同時(shí),二本學(xué)生的學(xué)習(xí)能力和應(yīng)用能力不如一本學(xué)生,學(xué)習(xí)Python后轉(zhuǎn)到Java、C#等語(yǔ)言的難度大。第二,如果選擇Java語(yǔ)言作為入門語(yǔ)言,雖然可以一步到位,但是零編程基礎(chǔ)的二本學(xué)生一開(kāi)始就要接觸大量編程知識(shí),學(xué)習(xí)難度很大。

      2 C語(yǔ)言數(shù)據(jù)類型的缺陷

      2.1 數(shù)據(jù)類型應(yīng)具備最低要求

      在軟件編程過(guò)程中,最長(zhǎng)的數(shù)據(jù)類型有兩大類:①數(shù)值類型,包括整數(shù)與浮點(diǎn)數(shù),用于表示多少或大小,如工資、價(jià)格、產(chǎn)量等;②字符串類型,用于表示是什么內(nèi)容,如姓名、品牌、部門、地點(diǎn)等。其中,字符串在數(shù)據(jù)庫(kù)中出現(xiàn)的頻率甚至超過(guò)了數(shù)值類型。雖然在C#、Java等語(yǔ)言中沒(méi)有把字符串作為最基本的類型,但是都提供了string類,讓開(kāi)發(fā)者把字符串作為基本類型。對(duì)于一個(gè)有經(jīng)驗(yàn)的程序員來(lái)說(shuō),在編程時(shí)認(rèn)為以下兩個(gè)語(yǔ)句都很基礎(chǔ),通常并不區(qū)分其中哪個(gè)更加基礎(chǔ)。

      int num=10;

      string name="phone";

      由此可見(jiàn),一門語(yǔ)言至少要提供數(shù)值類型和字符串類型,才能構(gòu)建完整的數(shù)據(jù)類型。但是C語(yǔ)言只提供數(shù)值類型,沒(méi)有提供字符串類型。

      2.2 C語(yǔ)言的數(shù)據(jù)類型缺陷及影響

      仔細(xì)研究C語(yǔ)言中的各種數(shù)據(jù)類型可以發(fā)現(xiàn),C語(yǔ)言在數(shù)據(jù)類型方面存在很多問(wèn)題,幾乎所有的數(shù)據(jù)類型都是數(shù)值類型。例如:char與int可以通用;沒(méi)有邏輯類型,邏輯值用0和1表示;沒(méi)有字符串類型,存放字符串需要用數(shù)組,而數(shù)組名本質(zhì)上是指針,而指針就是地址,實(shí)際也是一個(gè)長(zhǎng)整型數(shù)。教師可以在教學(xué)中給學(xué)生強(qiáng)調(diào)char和int的不同,但是從標(biāo)準(zhǔn)C提供的庫(kù)函數(shù)編譯系統(tǒng)并沒(méi)有嚴(yán)格區(qū)分char和int。例如下面的庫(kù)函數(shù)無(wú)論是形參還是返回值均應(yīng)該是char類型,但在標(biāo)準(zhǔn)C中都聲明為int類型。

      int toupper(int ch)

      這樣會(huì)導(dǎo)致學(xué)生在編寫(xiě)函數(shù)時(shí)很難正確理解和使用數(shù)據(jù)類型,也給教師講解函數(shù)編寫(xiě)帶來(lái)困難。例如編寫(xiě)一個(gè)返回字符的函數(shù)和返回整數(shù)的函數(shù)時(shí),學(xué)生用如下形式都是行得通的。

      int fun(....){......}

      另外,變量在賦值時(shí)應(yīng)該賦同一類型的值,這是基本編程訓(xùn)練中被反復(fù)強(qiáng)調(diào)的知識(shí)點(diǎn),但是在標(biāo)準(zhǔn)C中,明顯不一致的語(yǔ)句卻能暢通無(wú)阻運(yùn)行,導(dǎo)致學(xué)生對(duì)知識(shí)點(diǎn)產(chǎn)生困惑。C語(yǔ)言這種數(shù)據(jù)類型的設(shè)計(jì)最初是為了讓C語(yǔ)言具備最大的靈活性,充分發(fā)揮C語(yǔ)言作為中級(jí)語(yǔ)言的特長(zhǎng)。但是這種數(shù)據(jù)類型的單一性和靈活性對(duì)二本學(xué)生學(xué)習(xí)編程帶來(lái)了很大的問(wèn)題。

      (1)無(wú)法培養(yǎng)學(xué)生數(shù)據(jù)類型的意識(shí)。作為編程人員,看到一個(gè)變量會(huì)很自然地去想其屬于什么類型。C語(yǔ)言這種類型的單一性使學(xué)生很難培養(yǎng)對(duì)類型的敏感性,尤其是在編寫(xiě)函數(shù)以及后續(xù)語(yǔ)言中的類時(shí),對(duì)數(shù)據(jù)類型的感覺(jué)顯得尤其重要。

      (2)編程教學(xué)及練習(xí)題目單一,題型大多局限于數(shù)論或數(shù)值分析問(wèn)題,如素?cái)?shù)問(wèn)題、位數(shù)問(wèn)題、圓周率問(wèn)題等,類似一門數(shù)值分析的課程,而目前的應(yīng)用軟件大多數(shù)是數(shù)據(jù)處理功能,在這種情況下,學(xué)習(xí)C語(yǔ)言很難為學(xué)生開(kāi)發(fā)后續(xù)軟件奠定良好的基礎(chǔ)。

      3 C語(yǔ)言中字符串存在的問(wèn)題

      數(shù)據(jù)類型應(yīng)該包括數(shù)值和字符串兩大類,但C語(yǔ)言幾乎所有類型都?xì)w結(jié)為數(shù)值類型。C語(yǔ)言沒(méi)有專門的字符串類型,字符串是通過(guò)數(shù)組來(lái)存放,這樣的處理方式對(duì)二本學(xué)生來(lái)說(shuō)存在諸多問(wèn)題。

      3.1 C語(yǔ)言與后續(xù)語(yǔ)言關(guān)于字符串的差異性

      以目前常用的Java和C#為例,與C語(yǔ)言進(jìn)行關(guān)于字符串的用法對(duì)比,結(jié)果如表1所示。

      從上述比較可以看出,Java、C#等語(yǔ)言關(guān)于字符串的用法與C語(yǔ)言完全不同。換句話說(shuō),學(xué)習(xí)了C語(yǔ)言中的字符串方面的知識(shí)在后續(xù)語(yǔ)言中幾乎用不上。二本院校的學(xué)生學(xué)習(xí)能力稍弱,沒(méi)有必要花大力氣去學(xué)習(xí)后面幾乎用不上的字符串的

      知識(shí)。

      3.2 學(xué)習(xí)C語(yǔ)言字符串難度大

      二本學(xué)生普遍感覺(jué)C語(yǔ)言中的字符串難學(xué)。因?yàn)镃語(yǔ)言沒(méi)有字符串類型,而是使用數(shù)組存放字符串,在編程時(shí)需要考慮存儲(chǔ)問(wèn)題。例如,下面兩個(gè)語(yǔ)句前面的是正確的,后面的是錯(cuò)誤的。

      char x[5]="ok"; //正確

      char y[5]="hello" //錯(cuò)誤,數(shù)組存放不下字符串

      此外,學(xué)生常常搞不清楚將上述語(yǔ)句中的x理解為數(shù)組還是理解為字符串,在概念上的困惑會(huì)直接影響編程。

      3.3 學(xué)習(xí)指針的難度大

      二本學(xué)生普遍感覺(jué)指針難學(xué)。由于C語(yǔ)言用數(shù)組存放字符串,而數(shù)組名其實(shí)是指針,當(dāng)字符串作為函數(shù)參數(shù)時(shí)通常要寫(xiě)成指針形式。這樣一來(lái),學(xué)生為了學(xué)習(xí)C語(yǔ)言的字符串,需要先搞明白數(shù)組和指針,這樣就抬高了學(xué)生使用字符串的門檻。尤其是難學(xué)的指針攔在字符串的前面,導(dǎo)致二本學(xué)生覺(jué)得指針難學(xué),不能完全掌握并應(yīng)用自如。

      4 學(xué)習(xí)C語(yǔ)言字符串?dāng)?shù)的簡(jiǎn)單描述

      (1)C語(yǔ)言數(shù)據(jù)類型單一,各種類型幾乎都?xì)w結(jié)為數(shù)值類型,急需一種完全不同的類型(如字符串類型)來(lái)培養(yǎng)學(xué)生對(duì)數(shù)據(jù)類型的感覺(jué)。

      (2)C語(yǔ)言提供的字符串處理是通過(guò)數(shù)組、指針來(lái)實(shí)現(xiàn),對(duì)學(xué)生難度大,而且指針本身也是數(shù)值,不僅沒(méi)有起到豐富數(shù)據(jù)類型的作用,而且還十分難學(xué)。

      雖然學(xué)生學(xué)習(xí)C語(yǔ)言比較困難、學(xué)習(xí)效果差,但是目前尚未看到二本院校從上述角度去解決問(wèn)題,更多只是針對(duì)學(xué)生情況修改教學(xué)方案,但實(shí)際上,基于標(biāo)準(zhǔn)C的語(yǔ)法框架限制,這種修改沒(méi)有多少可以變動(dòng)的空間,往往是降低難度的同時(shí)降低了對(duì)學(xué)生的要求。對(duì)于一本學(xué)生而言,較強(qiáng)的自學(xué)能力和學(xué)習(xí)自主性能夠彌補(bǔ)C語(yǔ)言的缺陷;但是對(duì)于二本院校學(xué)生,這些缺陷卻能讓學(xué)生在學(xué)習(xí)過(guò)程中不知不覺(jué)地把主要精力陷入C語(yǔ)言語(yǔ)法知識(shí)中,疲于概念理解,不能掌握基本編程能力。一般而言,二本學(xué)生的及格率并不是很低,但這不表示學(xué)生已經(jīng)奠定了編程基礎(chǔ),只是教師降低了課程要求。換句話說(shuō),教師對(duì)此現(xiàn)狀沒(méi)有制定相應(yīng)對(duì)策,導(dǎo)致教師教得痛苦、學(xué)生學(xué)得痛苦,難以培養(yǎng)學(xué)生對(duì)專業(yè)的興趣。

      5 結(jié) 語(yǔ)

      對(duì)于二本學(xué)生來(lái)說(shuō),C語(yǔ)言在數(shù)據(jù)類型尤其是字符串上存在缺陷,導(dǎo)致二本學(xué)生學(xué)習(xí)C語(yǔ)言的效果不佳。因此,學(xué)校應(yīng)彌補(bǔ)這個(gè)缺陷,讓學(xué)生理解C語(yǔ)言,為后續(xù)課程的學(xué)習(xí)奠定扎實(shí)的基礎(chǔ)。

      主要參考文獻(xiàn)

      [1]王宇哲.C語(yǔ)言與Java對(duì)比下的優(yōu)點(diǎn)[J].電子世界,2018(2).

      [2]馬乾頡.程序設(shè)計(jì)語(yǔ)言C與Java之探討[J].信息技術(shù),2010(10).

      [3]車萬(wàn)翔,蘇小紅,袁永峰,等.計(jì)算機(jī)專業(yè)高級(jí)語(yǔ)言程序設(shè)計(jì)課程改革探索[J].計(jì)算機(jī)教育,2014(13).

      [4]胡國(guó)柱.基礎(chǔ)課程C語(yǔ)言與Java語(yǔ)言的優(yōu)劣漫談[J].福建電腦,2011(11).

      [5]蔣曉明,徐啟振.用C語(yǔ)言字符串實(shí)現(xiàn)多位整數(shù)的高精度計(jì)算[J].福建電腦,2004(6).

      [6]申定保.C語(yǔ)言考試中的語(yǔ)法結(jié)構(gòu)和算法分析[J].電腦知識(shí)與技術(shù),2004(2).

      [7]周建儒.C語(yǔ)言與C++語(yǔ)言幾點(diǎn)差異的應(yīng)用實(shí)例分析[J].河北軟件職業(yè)技術(shù)學(xué)院學(xué)報(bào),2016(1).

      [8]白春霞,張維寶.基于C語(yǔ)言中字符串長(zhǎng)度計(jì)算問(wèn)題的探討[J].電腦知識(shí)與技術(shù),2010(29).

      [9]倪瑞曉.C語(yǔ)言編程技術(shù)的分析研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009(12).

      [10]張盼盼.C語(yǔ)言之如何判斷回文串[J].現(xiàn)代計(jì)算機(jī),2016(31).

      [11]雷金,彭秋生.淺談C語(yǔ)言字符串格式化[J].湖南生態(tài)科學(xué)學(xué)報(bào),2012(1).

      南宫市| 临高县| 丰都县| 临朐县| 温州市| 赤峰市| 梓潼县| 内江市| 岫岩| 凤翔县| 同心县| 靖江市| 丰镇市| 通州区| 霍城县| 吉木乃县| 会宁县| 渭源县| 深圳市| 宜丰县| 建平县| 屏边| 临沭县| 新巴尔虎左旗| 句容市| 马关县| 婺源县| 承德县| 瑞丽市| 漳浦县| 南木林县| 永丰县| 嘉峪关市| 桃源县| 澳门| 兰考县| 迭部县| 凉城县| 伊金霍洛旗| 长寿区| 定兴县|