初學者遇到最多的困惑是:上課也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因有三個:
1,所謂的看懂聽明白,只是很膚淺的文法知識,而我們編寫的程式或軟體是要根據要解決問題的實際需要控製程序的流程,如果你沒有深刻地理解C語言的語句的執行過程(或流程),你怎麼會編寫程式解決這些實際問題呢?
2,用C語言編程解決實際問題,所需要的不僅僅是C語言的編程知識,還需要相關的專業知識。例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程式來。
3C語言程式設計是一門實踐性很強的課程,“紙上談兵”式的光學不練是學不好C語言的。例如,大家都看過精彩單車雜技表演,假如,你從來沒有騎過單車,光聽教練講解相關的知識、規則、技巧,不要說上台表演、就是上路你恐怕都不行。
第一步、驗證性練習
在這一步要求按照教材上的程式執行個體進行原樣輸入,運行一下程式是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括建立、開啟、儲存、關閉C程式,熟練地輸入、編輯C程式;初步記憶新學章節的知識點、養成良好的C語言編程風格)。 單擊此處查看【C語言的編程風格】
使用《Turbo C/C++ for Windows 整合實驗與學習環境》軟體可以很方便地看著軟體整合的《C語言入門教程》輸入練習其中的程式例題。具體使用方法參見軟體協助部分。
初學者最容易犯的錯誤是:
1、沒有區分開教材上的數字1和字母l,字母o和數字0的區別,造成變數未定義的錯誤。另一個易錯點是將英文狀態下的逗號,分號;括弧()雙引號""輸入出入成中文狀態下的逗號,分號;括弧(),雙引號“”造成非法字元錯誤。
2、C語言初學者易犯語法錯誤:使用未定義的變數、標示符(變數、常量、數組、函數等)不區分大小寫、漏掉“;”、“{”與“}”、“(”與“)”不匹配、控制語句(選擇、分支、迴圈)的格式不正確、調用庫函數卻沒有包含相應的標頭檔、調用未聲明的自訂函數、調用函數時實參與形參不匹配、數組的邊界超界等。
3、修改C語言語法錯誤時要注意以下兩點:
(1)、由於C語言文法比較自由、靈活,因此錯誤資訊定位不是特別精確。例如,當提示第10行發生錯誤時,如果在第10行沒有發現錯誤,從第10行開始往前尋找錯誤並修改之。
(2)、一條語句錯誤可能會產生若干條錯誤資訊只要修改了這條錯誤,其他錯誤會隨之消失。特別提示:一般情況下,第一條錯誤資訊最能反映錯誤的位置和類型,所以偵錯工具時務必根據第一條錯誤資訊進行修改,修改後,立即運行程式,如果還有很多錯誤,要一個一個地修改,即,每修改一處錯誤要運行一次程式。
第二步、照葫蘆畫瓢
在第一步輸入的C程式的基礎上進行實驗性的修改,運行一下程式看一看程式結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現“輸入”加深知識的記憶,“修改”加深對知識的理解。記憶和理解是相輔相成的,相互促進。
例如:將最簡單的Hello World!程式
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的
printf("Hello World!\n");
中的Hello World!改成你的姓名,運行一下程式,看有什麼變化?
再如求1+2+3...+100的和的程式
#include <stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次將for(i=1;i<=100;i++)中的100改成50,運行一下程式,看有什麼變化?
第2次將for(i=1;i<=100;i++)中的i++改成i=i+2,運行一下程式,看有什麼變化?
找出程式結果變化的原因,就加深了對C語句的理解。
第三步、自己試做類似問題。
在這一步要求不看教材,即使程式不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。
對比前兩步,設計一些相同的問題,試著自己編程,然後調試,再逐漸擴大,增加程式行,添加一些協助工具功能。
第四步、增強程式的調試能力
在《Turbo C/C++ for Windows 整合實驗與學習環境》整合的教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程式改成錯誤的程式,運行一下程式,看出現的錯誤資訊提示,並記下錯誤資訊,再將程式改成正確的,運行一下程式。這樣反覆修改,就能夠學習C語言程式發生錯誤的原因和修改錯誤的能力。
注意:每次只改錯一個地方,目的是顯示發生該錯誤的真正原因,避免一次改動多個地方,搞清發生錯誤的真正原因,切記!!!!
注意:上機偵錯工具時要帶一個記錄本,記下英文錯誤提示資訊和解決該錯誤問題的方法,積累程式調試經驗,避免在編程犯同樣的錯誤,切記!!!!。
例如,將Hello World程式中語句
printf("Hello World!\n");中的;改成中文的分號;
運行一下程式,看有什麼結果?
C語言的錯誤資訊的形式:(下面例子是的Turobo C2.0錯誤資訊,1)
錯誤 檔案名稱 行號 冒號 錯誤內容
↓ ↓ ↓ ↓ ↓
Error E:\WinTc\WinTc\frist.c 5 : Function call missing) in function main
C語言的錯誤資訊的形式:(下面例子是Visual C++6.0 錯誤資訊,2)
檔案名稱 行號 冒號 錯誤碼 冒號 錯誤內容
↓ ↓ ↓ ↓ ↓ ↓
e:\wintc\wintc\frist.c ( 5 ) : error C2143 : syntax error : missing ')' before ';'
軟體整合了高校教學用的最多的兩個編譯器Visual C++6.0和Turbo c 2.0,支援C、標準C、C++、標準C++、WINDOWS C程式的編輯、編譯、和調試。軟體根據使用者輸入程式的類型智能選擇編譯器,不用使用者幹涉。
偵錯工具是一種實踐性很強的事,光紙上談兵是是沒用的,就像遊泳運動員只聽教練講解示範,而不親自下水練習,是永遠學不會遊泳的。
即使在優秀的程式員編寫程式也會犯錯誤的,可能事最低級的語法錯誤,但他能快速發現錯誤並改正錯誤,而我們C語言初學者面對錯誤提示,不知道發生了什麼錯誤,如何改正,這就是差別。
第五步、研究典型的C語言程式,提高程式設計能力
經過上述過程的學習,我們已經學會了C語言各種語句的流程(即電腦是如何執行這些語句的過程),然後就可以研讀別人編寫C語言經典程式,看懂別人是如何解決問題的,學習解決問題的方法和程式設計技巧,提高自己的程式設計能力。
在軟體中有50多個典型的來源程式,研究它的實現方法,提高自己的程式設計能力。
第六步、研究課程設計源成序,提高C語言程式設計能力和調試較大程式的能力。
C語言課程設計的目的:是讓學生綜合利用所學的C語言知識,解決一些接近實際問題題目,提高程式設計和調試較大程式的能力,為進一步進行軟體開發打下堅實的基礎。
軟體中有4個注釋詳細的課程設計來源程式
摘自《Turbo C/C++ for windows 整合實驗與學習環境》的《C語言入門教程》
C語言好學嗎?
C語言好學嗎?初學者常常問這個問題。答案很簡單,對C語言感興趣,有強烈的學習慾望,就容易學。如果不感興趣,再簡單的知識也學不會。
試想一下,現在有幾個學校教學生打遊戲呢?答案是否定的,可是很多學生都會打遊戲,而且還經常交流打遊戲的心得體會。
如果你對C語言感興趣,為什麼不把學習打遊戲的經驗用到學習C語言呢?如果這樣的話,C語言還難學嗎?
最後送C語言初學者一句話來共勉:首先要相信自己是有能力學好C語言的,然後不惜一切代價把這種能力表現出來,你就成功了。做任何事,何嘗不是這樣呢?