所屬欄目:軟件開發論文 發布日期:2021-01-25 09:58 熱度:
教學的科學性體現在它必須要符合自身內在的客觀規律,不能違背規律進行[5]。目前程序設計類的教學方法很多,主要分為三類:第一類是經典類,以語言本身為目標,強調知識點的學習。第二類是案例類,將知識點融入到案例中。第三類是程序設計思想與方法類,一般描述比較抽象,內容較深。項目教學法與這三類教學法有所不同,是以一個完整的企業項目為載體展開的(例如學生成績管理系統)。項目教學法在深度和廣度上達到了本科教育層次要求,在組織方式上,則按照職業任務構建和展開。和前面的三類相比,項目教學法有許多值得肯定的地方[1]。不過,在使用過程中發現,項目內容設計常常缺乏應有的科學性與嚴密性[2,4]。本文歸納如下,借此與同行商榷。
1值得研究的表述
例如:一杯清水和一杯鹽水,交換兩個杯子中的液體。交換兩個杯子中的液體,一般需要借助一個空杯子。解決問題的步驟如下:⑴將清水杯中的水倒入空杯子中;⑵將鹽水杯中的水倒入清水杯子中;⑶將空杯子中的清水倒入鹽水杯中。分析:這里⑶空杯子的清水,表述不當,空杯子怎么會有清水。建議修改為“第三個杯子”。
2前后矛盾
2.1計算王晨同學三門課程的平均分
#includevoidmain(){floataverage;unsignedintc_score=82;unsignedintmath_score=80;unsignedintenglish_score=76;average=(c_score+math_score+english_score)/3.0;}分析:程序沒有輸出,與算法特性中的至少一個輸出矛盾。
2.2選擇排序算法
基本思想:升序(或降序)排序過程,第1趟,在待排序記錄r[1]~r[n]中選出最小(或最大)的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小(或最大)的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小(或最大)的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。初始序列:{49276597761238}第1趟:12與49交換:12{276597764938}第2趟:27不動:1227{6597764938}第3趟:65與38交換:122738{97766549}第4趟:97與49交換:12273849{977665}第5趟:76與65交換:1227384965{9776}第6趟:97與76交換:12273849657697完成。分析:根據選擇排序算法思想,應修改第3、4、5趟為:第3趟:65與38交換:122738{97764965}第4趟:97與49交換:12273849{766597}第5趟:76與65交換:1227384965{7697}
2.3冒泡排序算法
假設待排序存放在數組r[n]中,升序(或降序)排序過程為,第一趟,將第一個數據和第二個數據進行比較,若r[1]>r[2](或r[1]stu_score[j]){temp=stu_score[j];stu_score[j]=stu_score[i];stu_score[i]=temp;}}}//冒泡排序算法結束for(i=0;i<7;i++)//輸出排好序的數據printf("%dn",stu_score[i]);分析:該程序主要代碼思想為選擇法排序。冒泡排序主要代碼應修改為:for(i=1;i<6;i++)//冒泡排序算法開始{for(j=0;j<6-i;j++)if(stu_score[j]>stu_score[j+1]){temp=stu_score[j];stu_score[j]=stu_score[j+1];stu_score[j+1]=temp;}}
3程序代碼與功能需求不一致
例如:在學生成績管理系統中,學生的信息包括學號、姓名、性別、C成績、高數成績、英語成績、Java成績,將某位男生高于60分的考試成績按照兩個一組輸出。輸出的主要代碼如下:if(count%3==0){printf("n");}分析:這里的if(count%3==0){printf("n");},功能是按照三個一組輸出,與題意兩個一組輸出明顯不一致。
4流程圖不完整及表達有誤
例如:讀下面switch語句的程序段,畫出其程序流程圖,并說明其執行過程。intx,y,z=97;scanf(“%d%d”,&x,&y);switch(x+y){case10:case20:printf(“%c”,z);break;case25:printf(“%d”,z);break;case30:printf(“%c”,z+5);}畫出的程序流程圖如圖1所示。分析:根據程序代碼x+y的值為10和20執行相同的代碼,并不是值為10時什么也不做,分支完應是一個出口。圖1switch分支流程案例圖修改后如圖2所示。
5實現功能有誤
閱讀下面的程序,寫出輸出結果。#includevoidmain(){inti,j;for(i=1;i<=3;i++){for(j=1;j<=4;j++){if(i==j)printf(“i*j=%dn”,i*j);}}}故最終的輸出結果為:1*1=12*2=43*3=9分析:要使結果如上的顯示,則程序中的if語句修改為:if(i==j)printf(“%d*%d=%dn”,i*j)。學生成績管理系統中,經常需要查找某個學生信息,而最準確的查找條件就是使用學號。也就是說,根據輸入的學生學號,查找該學生是否在系統中。查找的學生學號代碼主要如下:if(strcmp(stu_nos[i],sno)){break;}//如找到查找的學號,終止循環else{i++;}//沒有找到,則對比下一個分析:字符串比較函數strcmp,按照ASCII碼順序比較字符串1和字符串2的大小。如果字符串1和字符串2相同則結果為0;字符串1大于字符串2時結果為正數;字符串1小于字符串2時結果為負數。故if(strcmp(stu_nos[i],sno)){break;}else{i++;}應修改為:if(strcmp(stu_nos[i],sno)==0){break;}else{i++;}。
6變量初始化有誤
�、徘�50個學生的《C程序設計》課程考試成績的最高分和最低分。程序中最高分和最低分的初始化代碼如下:intc_scores[50],max=101,min=-1;//c_scores存分數、max最高分、min最低分分析:程序中的max=101,min=-1賦值出錯,根據題意應修改為:max=-1,min=101。⑵根據Student結構體類型定義,定義具體學生“陳奕楊”變量,并初始化該生信息。【示例】第一種直接整體賦初值示例如下:structStudentst={1005,"陳奕楊",100,'F'};第二種成員變量逐一賦值示例如下:structStudentst2;st2.num=1006;st2.name="許鐸”;st2.score=100;st2.gender='M';分析:第一種直接賦初值是可行的,但是第二種逐一賦值中的st2.name="許鐸”是錯誤的,字符串賦值不能直接使用等號,可以使用輸入函數scanf、gets及復制函數strcpy等方式。⑶假定學生基本情況包含學號和三門科目成績,編寫自定義函數myinit()實現求某學生信息的初始化,并將該生信息和平均成績輸出到屏幕上。代碼如下:#defineN3structstuInfo{longnum;charname[10];floatscore[N];}voidmycompute(longintnum,chara[],float*p){inti;floatsum,avg;printf("學號:%ld,",num);printf("姓名:%s",a);for(i=0;i
7結束語
眾所周知,教學內容的選用對學習效果有非常重要的影響,是我們開展教學的重要環節,在該環節萬萬不可忽視科學性與嚴密性[3]。本文的探討若有不妥,謹望同行專家及讀者不吝指正。
《在程序設計課程中教學的科學性和嚴密性研究》來源:《計算機時代》,作者:傅榮會
文章標題:在程序設計課程中教學的科學性和嚴密性研究
轉載請注明來自:http://m.anghan.cn/fblw/dianxin/ruanjiankaifa/44872.html
攝影藝術領域AHCI期刊推薦《Phot...關注:105
Nature旗下多學科子刊Nature Com...關注:152
中小學教師值得了解,這些教育學...關注:47
2025年寫管理學論文可以用的19個...關注:192
測繪領域科技核心期刊選擇 輕松拿...關注:64
及時開論文檢索證明很重要關注:52
中國水產科學期刊是核心期刊嗎關注:54
國際出書需要了解的問題解答關注:58
合著出書能否評職稱?關注:48
電信學有哪些可投稿的SCI期刊,值...關注:66
通信工程行業論文選題關注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關注:120
評職稱發論文好還是出書好關注:68
復印報刊資料重要轉載來源期刊(...關注:51
英文期刊審稿常見的論文狀態及其...關注:69
copyright © m.anghan.cn, All Rights Reserved
搜論文知識網 冀ICP備15021333號-3