SCI、SSCI、EI、SCOPUS指导服务
论文翻译润色 论文预审评估 质量分析报告 期刊匹配推荐

与学术顾问沟通

程序设计教学的科学性和严密性

分类:数学论文发表 时间:2021-01-23 10:45 关注:(1)

  计算机程序设计课程教学内容应符合新时代的需要,面向行业培养学生的创新意识和创业能力。教学中应将职业及岗位所需的经验及技巧融入到问题描述、问题分析、关键知识点、任务实现、程序优化、代码阅读这六个环节中。文章提出,教师在教学过程中,应重视编程逻辑思维的培养,注重内容的科学性与严密性。

程序设计教学的科学性和严密性

  关键词:程序设计;科学性;严密性;教学方法

  教学的科学性体现在它必须要符合自身内在的客观规律,不能违背规律进行[5]。目前程序设计类的教学方法很多,主要分为三类:第一类是经典类,以语言本身为目标,强调知识点的学习。第二类是案例类,将知识点融入到案例中。第三类是程序设计思想与方法类,一般描述比较抽象,内容较深。项目教学法与这三类教学法有所不同,是以一个完整的企业项目为载体展开的(例如学生成绩管理系统)。项目教学法在深度和广度上达到了本科教育层次要求,在组织方式上,则按照职业任务构建和展开。和前面的三类相比,项目教学法有许多值得肯定的地方[1]。不过,在使用过程中发现,项目内容设计常常缺乏应有的科学性与严密性[2,4]。本文归纳如下,借此与同行商榷。

  1值得研究的表述

  例如:一杯清水和一杯盐水,交换两个杯子中的液体。交换两个杯子中的液体,一般需要借助一个空杯子。解决问题的步骤如下:⑴将清水杯中的水倒入空杯子中;⑵将盐水杯中的水倒入清水杯子中;⑶将空杯子中的清水倒入盐水杯中。分析:这里⑶空杯子的清水,表述不当,空杯子怎么会有清水。建议修改为“第三个杯子”。

  2前后矛盾

  2.1计算王晨同学三门课程的平均分

  #include<stdio.h>voidmain(){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]<r[2]),则将两个记录交换之,然后比较第二个数据和第三个数据。依次类推,直至第n-1个数据和第n个数据比较过为止。其结果是使得最大(或最小)数据被安置到最后一个位置上;第二趟,对前面的n-1个记录进行同样的操作,其结果是使次大的数据被安置到第n-1位置;以此类推,直到全部排序完毕。给出的主要代码如下:for(i=0;i<7;i++)//冒泡排序算法开始{for(j=i;j<7;j++){if(stu_score[i]>stu_score[j]){temp=stu_score[j];stu_score[j]=stu_score[i];stu_score[i]=temp;}}}//冒泡排序算法结束for(i=0;i<7;i++)//输出排好序的数据printf("%d\n",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实现功能有误

  阅读下面的程序,写出输出结果。#include<stdio.h>voidmain(){inti,j;for(i=1;i<=3;i++){for(j=1;j<=4;j++){if(i==j)printf(“i*j=%d\n”,i*j);}}}故最终的输出结果为:1*1=12*2=43*3=9分析:要使结果如上的显示,则程序中的if语句修改为:if(i==j)printf(“%d*%d=%d\n”,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<N;i++){printf("%5.1f",*(p+i));sum=sum+*(p+i);}avg=sum/N;printf("平均成绩:%5.1f",avg);printf("\n");}main(){structstuInfoyang={2014106,89.5,95.0,87.5};mycompute(yang.num,yang.name,yang.score);}分析:函数mycompute的代码中,sum变量的作用是累加求和,故变量应该初始化0,即sum=0。根据结构体的定义及教材的运行结果图分析,main函数中对结构体初始化,也缺少对成员name的初始化,应修改为:structstuInfoyang={2014106,“陈奕杨”89.5,95.0,87.5}。

  7结束语

  众所周知,教学内容的选用对学习效果有非常重要的影响,是我们开展教学的重要环节,在该环节万万不可忽视科学性与严密性[3]。本文的探讨若有不妥,谨望同行专家及读者不吝指正。

  作者:傅荣会

期刊目录网是一家专业从事国内国外期刊学术论文发表指导,著作出版,发明专利的权威平台,提供文章翻译、文章润色、文章预审、期刊推荐、发表支持、书号申请、出书指导、专利申请等评职称相关学术成果服务。是您评职称学术成果指导首选权威平台。

Copyright © 2013-2022 www.qikanmulu.com,All Rights Reserved