重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
《C語言程序設計》說課教案
目前創新互聯公司已為上千余家的企業提供了網站建設、域名、網絡空間、網站托管、企業網站設計、裕安網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
授課班級:07應用電子
授課課時:2課時
授課地點:計算機實驗室
課題 制作數字電子時鐘―――循環嵌套
一、教學目標
1、通過本次課教學,學生能進一步理解順序、分支和循環三種基本結構,特別是While、Do-While、for三種循環循環語句的使用;
2、掌握循環嵌套概念;
3、掌握多種循環程序設計方法并根據任務要求 “制作數字電子時鐘”;
4、通過本次任務,了解gotoxy()和Clrscr()函數的作用,并掌握這兩個函數在實際應用程序中的使用方法。
5、技能目標:培養學生邏輯思維能力、綜合運用知識的能力和自主學習能力;
二、教材分析
選用教材為李志球、劉昊編著的《C語言程序設計教程》(第二版),該教材由電子工業出版社出版,教材特點如下:
1、在內容上體現科學性、時代性、實用性,編排上面向應用,理論與實踐有機結合;
2、采用任務驅動、項目教學等教學手段,全書圍繞項目“學生成績管理系統”作為案例,貫穿整個課程進行難點講解,以實際應用作為突破口,使學生能夠真實體驗到知識的實際應用,提高興趣,促進理解;教學與項目開發融為一體,淺顯易懂,符合高職學生認知規律。
3、實驗實訓環節結合教學內容,實驗項目豐富。課程設計中案例學生熟悉。
本節課教學內容參考教材第4章的4.4節:循環嵌套。
三、學生分析
07應用電子是普招類(高中畢業生)學生,它們高中期間文化基礎較扎實,但計算機專業知識薄弱,C語言程序設計是他們學習的第一門計算機語言類課程,開始學習時較困難,但入門提高較快。本次課的教學內容中循環嵌套概念他們很容易理解,簡單的多重循環編程對他們不難,但循環嵌套在實際應用中的編程較為困難,如本次課的任務“制作數字電子時鐘”牽涉許多知識,如屏幕定位、輸入初始時間等。
另外,高職學生對于上機實際操作要比學習理論知識更為有興趣;簡單的實驗項目都能完成,但解決實際應用問題的能力也較差。因此,在教學中通過演示讓學生有感性認識,提高學習興趣;通過提出問題讓學生討論議一議,主動思考如何解決;通過一個教學任務讓學生動手做一做。
四、教學重點、難點及解決辦法
1、本次課教學重點
1)循環嵌套概念;
2)gotoxy()和Clrscr()函數使用方法;
3)循環嵌套結構程序設計方法及實際應用。
在教學過程的敘述中,要抓住教學的重點、最能體現教學理念的內容和最能展示教學藝術的環節,作較為詳細的敘述。
2、本次課教學難點
1)循環嵌套編程
2)算法分析及程序結構
3)編程完成“制作數字電子時鐘”
3、難點解決辦法
1)通過演示讓學生有感性認識,并從for語句基本語法入手,逐步引入循環嵌套概念,弱化實用性不強的細節;
2)圍繞任務“制作數字電子時鐘”程進行難點講解,以實際應用作為突破口,使學生能理解循環嵌套在實際中的應用,提高學習興趣;
3)針對難點設置上機實際操作內容,進一步掌握循環嵌套程序設計方法。
4)在實驗實訓過程中布置任務項目,通過實踐環節進一步理解和掌握重點難點,達到學習目的。
五、教學理念、方法及手段
本次課采用理(論)實(踐)一體化教學理念通過任務驅動(項目教學)、講練結合等教學手段。
1、任務驅動:通過“制作數字電子時鐘”這一任務,掌握循環嵌套程序設計認方法。并掌握相應知識點,突出重點,分解難點。
2、講練結合:授課地點為計算機實驗室,采用邊講邊練的教學互動形式。教學過程中,適當安排學生在計算機上進行進行實際程序設計,通過運行調試自己設計的程序,讓學生親自觀察和體驗程序設計的成功感受,加深知識的理解。
六、教學設計(時間分配)
1、任務提出,演示成果程序,明確目標,提出要求。(2分鐘)
(1)演示成果程序,在屏幕固定位置顯示“制作數字電子時鐘”。
(2)任務分析:完成本次課的任務所需知識―――三種基本程序設計結構。
2、知識回顧(2分鐘)
循環結構概念、三種循環語句(while、do-while、for)、當型和直到型循環、重點語句for語句應用、注意事項。
3、上機實訓1(2分鐘)
簡單程序:用for語句編程,實現在屏幕上顯示0、1、2……59。
(上機技能訓練的操作、指導、輔導過程,以學生實際操作動手為主,教師進行輔導指導、師生共同探討完成,應充分體現學生的主體地位)
思考提問:如何讓0-59重復變化,以接近實際生活中秒的變化情況。
4、導入新課(6分鐘)
(1)通過練習1,分析在屏幕上顯示秒的變化程序中存在的問題。一是數字“0-59”以滾動卷屏方式顯示;二是每個數字顯示速度太快,如何實現以實際一秒時間顯示一個數。
第一個問題使用gotoxy()函數或clrscr()函數解決;第二個問題在程序中每顯示一秒后都設置一個時間延遲,時間延遲用方法空循環結構實現,它的位置在循環內屏幕每顯示一個數值后。通過講解解決第二個問題的程序結構,引入本次課新知識―――循環嵌套概念。
for(s=0;s=59;s++)
{printf("\%2d",s);
for (i=1;i=200000000;i++); }
(2)循環嵌套概念、結構和程序設計時注意事項。
5、上機實訓2(5分鐘)
使用循環嵌套結構編程,在屏幕固定位置能以分秒變化的時鐘:
10:11
編程和上機操作時要理解兩點:一是gotoxy()函數的使用,二是空循環實現延時循環終值的調試,以接近實際生活中時間變化。
本部分內容所用到知識是本次課的核心,是基本的能力目標,所以教學時要以重點內容處理。
6、程序設計講解(4分鐘)
編程完成本次課任務,制作一個帶有時、分、秒變化的數字電子時鐘。(四重循環)。
(1)算法分析
(2)定義變量及類型
(3)程序結構設計
(3)源程序核心結構編程
7、上機實訓3(5分鐘)
(1)調試程序時要注意觀察程序運行情況,調整空循環變量i的終值,盡量與實際運轉時間一致。計算機運行速度越快,則這個數值越大。
(2)本程序需運行24小時才能結束,如果要停止程序運行,可以按Ctrl-C或連續按兩次Ctrl-Break強制中斷程序運行。
(3)修改變量i類型,將它定義為整形后再次運行程序,觀察運行結果,分析程序出錯原因,提醒以后編程時注意。
8、提出問題,任務完善―――源程序提高與擴展 之一(4分鐘)
前面的程序每次運行都從0點0分0秒開始,不能從當前實際時間開始運行。解決問題的辦法可以在程序第一次循環開始時輸入一次當前實際時間。為了只在開始運行時設置一次初始時間,可以引入一個邏輯變量first,其初始值為0 ,輸入初始時間后,將其值置為非0。在后面程序運行中,通過if語句控制不再需要輸入初始時間。
9、上機實訓4(5分鐘)
上機修改程序,使數字電子鐘能從指定時間(輸入初始時間)開始運轉。
10、思考和作業(5分鐘)
(1)源程序提高與擴展 之二:本程序只能運行24小時,請同學們將程序進一步改進,使它能顯示年、月、日、星期、時、分、秒等數據的電子鐘。
(2)“九九乘法表”。
10、課堂小結及作業(5分鐘)
11、Question Answer(1-2分鐘)
七、學法指導
1、鼓勵學生自主探索和合作交流。引導學生自主地從事觀察、分析、交流等活動,使學生形成對計算機語言知識有效的學習策略。
2、鼓勵與提倡解決問題的多樣性,引導學生在與他人的交流中去選擇合適的策略,豐富自己的思維方式,獲得成功的體驗和不同的發展。
3、引導學生將所學計算機知識應用到其他學科中去,使學生覺得計算機有很用,同時也培養了學生邏輯思維能力。
C語言的輸出函數是:printf("%format...",
string1...);需要包含頭文件:#include
C++的輸出函數是:std::cout
"Helloworld";需要包含頭文件:#include
你輸入的\0被認為是2個字符。
'\\'和'0',不是'\0'
至于輸入abcdefghij時出問題,那是數組邊界問題。
用字符數組保存字符串時,要預留一個數組成員,用來保存結尾符號'\0'。
所以char[10]只能保存長度為9的字符串。
printf輸出字符串的時候,只有遇到'\0'才會停止輸出。
'\0'的值就是0.它會一直輸出直到在后面連續的內存里遇到'\0'
2.putchar() getchar() 輸出輸入函數只針對單個字符的操作。3.puts(),gets() 輸出輸入函數可以單個字符操作(但是功能有限的),主要是針對字符串操作。 下面我們定義int a用scanf("%d",a)可以獲取整型a的值,a=getchar(),gets(a)無法從鍵盤獲取數字用printf("%d",a)可以打印數字a的值,putchar(a),puts(a)沒法打印數字方面:printf()和scanf()勝char a用scanf("%c",a) 可以獲取字符a的值,用a=getchar()能獲取a的值,用gets(a)不能獲取用printf("%c",a)可以打印字符a的值 用a=getchar()可以打印a的值,用puts(a)不能打印字符方面:getchar()和putchar()第1 scanf()和printf()第2 gets和puts()敗補充:puts()和gets()能接收和打印單個字符只限制變量是數組變量例如 char a[50]; gets(a); put(a);你輸入一個字符就會打印一個字符但如果是字符變量 char a='x'; char a; puts(a); 或 gets(a); puts(a);就無法運行char a[50]用scanf("%s",a)能獲取數組a的值,用a=getchar()無法獲取,用gets(a)能獲取a的值用printf("%s",a)能打印數組a的值 用putchar(a)無法打印,用puts(a)能打印a的值字符串(數組)方面:gets()和puts()第一,scanf()和printf()第2,getchar()和putchar()敗可見scanf()和printf()什么都能實現,但對字符和字符串操作沒有其他兩種好getchar()和putchar()對字符操作優勢明顯,但不能操作數字變量,字符數組變量gets()和puts()對字符串操作優勢明顯,但也不能操作數字變量,字符變量scanf()和printf()格式輸入輸出能同時按格式一起輸入輸出字符,數字,字符串這是其他兩種不能比的所以程序以scanf()和printf()為主,其他兩種作為輔助,發揮各自的長處。最后來個總結,用程序表示#include stdio.hmain(){ char a,b[50]; printf("請輸入第一個字符:\n"); scanf(" %c",a); getchar(); //獲取前面的回車 printf("第一個的字符為:%c\n",a); printf("請輸入第二個字符:\n"); a=getchar(); printf("第二個字符為:"); putchar(a); putchar('\n'); printf("請輸入第一個字符串:\n"); scanf(" %s",b); getchar(); //獲取前面的回車 printf("第一個的字符為:%s\n",b); puts("請輸入第二個字符串:"); gets(b); puts("第二個字符串為:"); puts(b); }