_程序设计基础_的实施方案与改革实践_何钦铭

合集下载

“VB程序设计”基础课程教学改革探索与实践

“VB程序设计”基础课程教学改革探索与实践

“VB程序设计”基础课程教学改革探索与实践作者:宋荣杰陈勇来源:《黑龙江教育·高教研究与评估》 2017年第3期摘要:文章以西北农林科技大学为例,从当前“VB程序设计”基础课程教学现状出发,提出“以典型案例为示范、以项目实践为主线、以教学资源为支撑、以能力考核为导向”的教学改革实践策略,以强化学生实践能力与应用能力的培养。

关键词:VB程序设计;基础教学改革;高等农林院校中图分类号:G642.0文献标识码:A文章编号:1002-4107(2017)03-0016-03VB程序设计基础(简称“VB”)课程是西北农林科技大学面向全校非计算机专业学生开设的计算机公共基础课,也是许多高等院校非计算机专业本科生的计算机语言入门课程。

该课程以可视化编程、代码规范、数组、过程、文件为基础,围绕三大程序控制结构和常用算法开展,学习程序设计基本原理和方法。

课程强调学生程序设计思维方式培养,同时注重学生解决实际问题能力的培养,具有较强的实践性。

现有教学存在许多问题,突出表现为学生学完课程后不能“学以致用”,因此很多学者对该课程的教学进行了有益探索,如改革实验教学模式[1]、重视算法设计[2]、实施案例教学[3]和项目教学[4]、开展互动式教学等[5],这些教学改革均取得一定成效。

然而由于课程教学涉及学生专业背景、师资规模、教学平台和课时安排等众多因素,各高校仍需根据实际情况,更新教育理念、创新教学方法。

本文从“VB”课程教学现状和存在的问题出发,结合高等农林院校教学实际,提出“以典型案例为示范、以项目实践为主线、以教学资源为支撑、以能力考核为导向”的教学模式,以期提升课程教学质量。

一、“VB”课程教学现状分析“VB”课程是西北农林科技大学面向全校农、林、理、工等众多学科专业学生开设的一门公共必修课,课程教学由理论教学和实验教学两部分构成,其中理论教学主要以大班上课(90—120人)为主,实验教学采用分班教学(60人),2014版培养方案中该课程总课时减少为56学时。

以应用能力培养为核心的程序设计课程教学全面重构

以应用能力培养为核心的程序设计课程教学全面重构

0 引 言在当前新工科+工程教育认证的背景下,以学生为本就是要面向需求、目标制导、能力为尺,面向专业人才的社会需求制定培养目标,根据专业培养目标设计培养计划中各课程的教学实施方案,以学生应用能力高低作为课程教学质量的检验标准 [1]。

程序设计是高校计算机类专业的核心基础课程,也是理工科类专业的重要基础课程之一,其教学目标是使学生掌握程序设计的思想和方法,以及基本的程序设计过程和技巧,具备初步的分析问题和利用计算机求解问题的能力[2]。

该课程的教学质量直接关系到后续其他专业课程的学习。

但是以知识传授为主的传统教学模式已不能适配以能力培养为目标的教学要求,学生的个性化学习需求也不能得到满足,使得课程教学效果大打折扣。

围绕这门课程,许多高校从理念导向、教学模式、实践体系等不同角度提出了多种形式的教学改革方案[3-6]。

围绕学生应用能力培养,全面深入地改革程序设计课程,形成系统的、可借鉴推广的优质课程教学实施方案和资源,对提高计算机类专业乃至理工科类专业的学生培养质量具有重要的意义。

1 理念与思路程序设计课程是计算机类专业的基础课程,其教学目标是以学生的计算机基础编程能力培养为核心,在课程教学改革时需要从教学内容与资源、教学过程、教学方法以及考核方式等方面统筹考虑和设计,形成一个完整的、可推广应用的教学实施方案,从而惠及课程相关的所有学生。

以知识为载体、应用能力培养为核心,全面重构程序设计课程教学各要素,包括主题式的教学进程重构、共建共享的支撑手段重构、混合式的教学模式重构、自评随测的学习评价重构,见图1,充分体现“两性一度”;同时,课程教学要注重持续改进,通过设计反馈机制,迭代改进和提升各教学环节,从而令课程教学质量螺旋上升。

基金项目:浙江省高等教育“十三五”教学改革研究项目“基于OBE 的程序设计类课程的目标达成设计及学习评价反馈机制研究”(JG20190567)。

第一作者简介:张泳,男,副教授,研究方向为软件工程、计算机网络安全,******************.cn 。

C语言程序设计(何钦铭_颜晖_主编)课件

C语言程序设计(何钦铭_颜晖_主编)课件

区分数字字符和数字
'1'
1
则:'A'+1=66,对应字符 'B'
a
25
转 义 字 符
反斜杠后跟一个字符或数字
字符常量,代表一个字符
'\n' '\101' '\x41' 'A'
所有字符都可以用转义字符表示
a
26
6.2.2 变量
在程序运行过程中,其值可以被改变的量。
变量必须先定义,后使用 定义变量时要指定变量名和数据类型 变量应该先赋值,后引用
a
30
6.3.1 整型数据的输入输出
printf (格式控制, 输出参数1, ... , 输出参数n); scanf (格式控制, 输入参数1, ... , 输入参数n);
格式控制说明 %…
十进制 八进制 十六进制
int
%d
%o
%x
long
%ld
%lo
%lx
unsigned
%u
%o
%x
unsigned long %lu
数据长度 16或32位
16位 32位
a
10
基本数据类型-整型
扩展的整数类型:short long unsigned [int]
有符号整型 无符号整型
数据长度
int
unsigned [int]
16或32位
short [int] unsigned short [int] 16位
long [int] unsigned long [int]
以小数或指数形式输入一个双精度浮点数
输出 printf()

《程序设计基础》课程教学改革实践

《程序设计基础》课程教学改革实践

《程序设计基础》课程教学改革实践摘要:为加强《程序设计基础》课程建设,做如下改革实践:推行探究式课堂教学;建构主义理论指导编程,注重算法设计;尝试分组实验教学并适时教学信息反馈。

经过近两年的实践,已初见成效。

关键词:程序设计;基础课程;教学改革;教学实践引言《程序设计基础》是一门计算机公共基础课,依据2006年修订的本科专业人才培养方案的要求,该课程共108学时,要求两个学期完成。

主要讲授C++程序设计基础和面向对象程序设计,不仅需要学生掌握C++语言的语言规则,而且还要学会程序设计的思维方法,是一门理论和实践结合性很强的课程。

为了让学生充分认识到程序设计课程的重要性,对程序设计产生兴趣,经过教学改革实践,我们探索出一套适合我校教授学生《程序设计基础》行之有效的教学方法。

1 教学指导理论的变革1.1探究式课堂培养学生创新思维能力创新思维就是要标新立异,勇于提出新问题。

从培养学生创新思维的能力要求出发,我们提倡不唯书,不惟师,大胆指出教材的不足,引导学生去思考,逐步培养学生的质疑精神。

为了使学生克服求同的思维定势,突破教材的既定知识框架,在课堂教学中,我们以问题为主线,精心设置教学情境引导学生去思考。

比如,让学生讨论示例程序功能的不足等问题,培养学生的问题意识,使之在教师的因势利导下主动提出问题,进而分析和解决问题。

1.2建立以算法为中心的程序设计思维模式学习程序设计,在开始阶段要注重程序的模仿。

我们坚持“阅读分析——模仿编程——自主编程”循序渐进的教学原则。

在学生掌握C++语言语法和基本程序结构及基本程序设计方法的基础上,引入程序限时阅读,强化学生阅读程序的能力;分析例题中提出的问题、思考解决问题的方法,锻炼学生分析问题的能力;通过课后习题让学生自己动手编程解决实际问题,最终检测学生的编程能力。

算法是程序设计的关键。

在课堂讨论中注重灌输程序的算法思想,对教学案例中实现的功能,引导学生讨论如何去改善算法,以提高程序的运行效率。

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第七章 课后答案

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第七章 课后答案
/*找第max列中最小值所在行下标min*/
min=0;
for(j=0;j<n;j++)
if(a[j][max]<a[min][max])min=j;
if(min==i){flag=1;break;}
}
/*根据flag值输出结果*/
if(flag==1)printf("鞍点是a[%d][%d]=%d\n",min,max,a[min][max]);
{
int i,j,n,a[6][6],max,min,flag;
printf("Enter n :"); /*输入一个正整数n */
scanf("%d",&n);
printf("Enter %d integers :\n",n); /*输入一个n阶方阵,存储在数组a中*/
for(i=0;i<n;i++)
{
int i,j,n,a[6][6],flag;
printf("Enter n :"); /*输入一个正整数n */
scanf("%d",&n);
printf("Enter %d integers :\n",n); /*输入一个n阶方阵,存储在数组a中*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i]>a[index1])index1=i;
if(a[i]<a[index2])index2=i;
}
/*交换位置:最大值与最后一个数交换,最小值与第一个数交换*/

《C语言程序设计基础》实验实施计划表及实验说明

《C语言程序设计基础》实验实施计划表及实验说明

《程序设计基础》实验教学实施计划注:该表由课程负责人或任课教师填写,并于每学期初随教学进度表一起交教务科。

填写人:2010 年8 月31 日《C程序设计》实验说明实验一:C语言编程环境、简单C程序实验实验目的:了解C语言的编程环境,初步掌握在Eclipse CDT + gcc + gdb环境下对C程序进行编辑、编译和运行的基本方法和步骤。

用printf函数实现一个简单的文本输出程序。

实验环境(硬/软件要求):Windows 2000 (XP) + Eclipse CDT + gcc + gdb实验内容:1. 启动Eclipse CDT;2. 初步了解Eclipse CDT + gcc + gdb集成环境的界面和主要功能;3. 创建一个新的空工程,并向工程添加源代码文件;4. 关闭工程、重新打开工程;5. 编写简单C程序(只有printf语句),编译、运行该程序。

6. 在gdb中单步执行程序;实验主要步骤:1.启动Eclipse CDT开发平台;2.新建一个空工程;3. 向工程添加文件;4. 关闭和删除工程;5. 通过“import”导入工程;6. 编写并运行最简单的C语言程序(main函数中没有任何语句);7. 用printf函数实现图形/文字输出,输出内容可以是以下字符图形中的一种,也可以是其他自己设计的图形。

(1)……………………………………………………………………………………╭⌒╮下雨啦━┅~ ¤╭⌒╮╭⌒╮╭⌒╭⌒╮╭⌒╮~╭⌒╮︶︶,︶︶,︶︶︶︶,''︶~~ ,''~︶︶,''╱◥█◣╱◥█◣︱田︱田︱︱田︱田︱╬╬╬╬╬╬╬╬╬╬╬╬╬╬ ……………………………………………………………………………………(2)……………………………………………………………………………………\\\|///\\.-.-//.(.@.@)+-------oOOo-----(_)-----oOOo---------+|||祝你快乐!!!|||+-------+(3)……………………………………………………………………………………*☆∵▁▂▄▂▁.★∵∴☆.★∵∴∴★◢█████◣* ☆.∴★∵★ * ☆☆◢████☆██◣.∴天氣冷了,☆◢■◤█████◥█◣.送你一件毛衣,* ★◥◤∴█████.◥◤∵小心別著涼了!(4)……………………………………………………………………………………★★★★★★★★★★★★★★★★★★★★★★★★★★★祝你快乐!★★★★★★★★★★★★★★★★★★★★★★★★★评分标准:1. 实验报告是否规范、完整(10 %);2. 源代码排版是否规范(10 %);3. 程序能否正确运行(30 %);4. 输出结果及程序的难易程度(50 %);实验报告形式(纸质/电子):电子填写人签名:填写日期:2010年 6 月10 日实验二:数据类型、运算符与表达式实验实验目的:理解数据类型概念,掌握整数、实数、字符三种基本数据类型概念及其实用,理解常量和变量的含义,理解赋值、算术运算等基本运算的含义。

C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案

C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案

//差几分钟
//差几秒
6. *编写函数:把两个链表合并成一个链表,并返回新练表(的表头)-----提高篇 //定义链表结构—职工信息表 struct zg{ char *name; int salary; struct zg *next; } (struct zg* ) merge( struct zg *list1, struct zg *list2) { struct zg *p; for( p=list1; p->next!=NULL; p->next=list2; return list1; } 7. *复制链表 L 到新链表 NEW 上。 (新链表NEW仅有一个表头指针,其余节点需要新建---提高篇 (struct zg*) copy( struct zg *L) { if( L==NULL) { //若源链表是空表,则返回 NULL return NULL; } //L 非空,则逐个复制到 NEW 中 struct zg *NEW, *tail, *p,*q; p= p->next) ; //p 指向链表 list1 的尾部(尾部特征是 next 指针为空)
8~11 略 12. 写一函数,得到一个 16 位二进制数中的任何一位的数值。即给定一个长度为 2B 的整数 x,和一个位数 k,该函数返 回 x 转换成二进制数后的第 k(k=0,1,…,15)位数字 ???????????????? 15 。 。 。 6543210 分析:利用位运算规则:0 或 1 与 0 做按位与&运算,都是 0;0 或 1 与 1 做&运算,都是它本身。 故对给定的 x 和 k, 只需将 x 与一个 16 位二进制数(第 k 位为 1,其余 15 位为 0)按位与即可:若 x 中的第 k 位是 0, 则计算结果是 16 个 0,转换为十进制数就是 0;若 x 中第 k 位是 1,则计算结果是 15 个 0,第 k 位是 1,转换成十进制 数一定不等于 0. 与 x 做按位与的整数是:第 k 位为 1,其余 15 位是 0,即 2 的 k 次幂。 #include<math.h> //pow() int digit( int x, int k) //k=0,…,15 { if( k<0 || k>15) return -1; int y= pow(2,k); if( x&y==0) return 0; else return 1; }

_程序设计基础_课程教学实施方案_何钦铭

_程序设计基础_课程教学实施方案_何钦铭

中国大学教学 2010年第5期62何钦铭,浙江大学计算机科学与技术学院教授;颜 晖,浙江大学城市学院教授;苏小红,哈尔滨工业大学计算机科学与技术学院教授。

“程序设计基础”课程教学实施方案何钦铭 颜 晖 苏小红 叶乃文摘 要:“程序设计基础”是计算机科学与技术专业的核心课程之一。

在教育部高等学校计算机科学与技术教学指导委员会统一组织下,作者针对程序设计基础课程的培养目标和教学实施中普遍存在的问题,提出了课程教学实施方案。

本文介绍了该实施方案的总体框架,并围绕教学内容组织、重点与难点问题、实践环节等方面的内容分析了课程实施的要点,对在不同类型计算机人才培养中课程实施的不同侧重点进行了说明。

关键词:程序设计基础;计算机科学与技术专业;核心课程;课程教学;教学实施“程序设计基础”是计算机科学与技术专业的核心课程之一,主要讲授程序设计语言的基本知识和程序设计方法,使学生了解高级程序设计语言的结构,掌握程序设计的思想和方法,以及基本的程序设计过程和技巧,具备初步的分析问题和利用计算机求解问题的能力。

程序设计基础是一门教学难度较大的课程。

作为程序设计入门课程,本课程是学生深入接触计算机学科领域知识的第一门课程,因而,学生往往难以理解程序设计的思维方式,对教学内容似懂非懂,而掌握良好的程序设计方法则更加困难;在课程教学实施中还存在着学生基础差异大的问题,教师很难把握教学进度与教学内容深度;本课程的主要目标是让学生掌握程序设计的方法和技能,即培养学生程序设计的能力,而如何通过切实可行的编程训练来提高学生的程序设计能力,是许多从事这门课程教学工作的教师非常关心的问题。

近年来,许多高校的任课教师为了提高课程教学质量,在教学内容、实践体系、教学方法和教学手段等方面进行了积极的改革,取得了一些成效。

特别是,一些学校在程序设计基础精品课程的建设方面积累了丰富的经验。

为了很好地整理和总结这些经验,根据教育部高等学校计算机科学与技术教学指导委员会的统一部署,由浙江大学计算机科学与技术学院何钦铭教授、哈尔滨工业大学计算机科学与技术学院苏小红教授、北京工业大学计算机学院叶乃文副教授和浙江大学城市学院颜晖教授等高校的相关教师组成课题组,结合各校在本课程长期教学改革中所取得的实践经验,共同研究程序设计基础课程教学实施方案,供承担本课程教学任务的广大教师参考。

《C语言程序设计》-何钦铭

《C语言程序设计》-何钦铭

《C语⾔程序设计》-何钦铭第⼀章引⾔1.2 程序与程序设计语⾔冯 · 诺依曼模型的存储程序概念:将程序与数据共同存储结构化的程序设计⽅法:将复杂程序划分为若⼲个相互独⽴的模块(⼀个模块可以是⼀条语句、⼀段程序或⼀个函数等)使完成每个模块的⼯作变得单纯⽽明确,在设计⼀个模块时不受其他模块的牵连。

同时,通过现有模块积⽊式的扩展就可以形成复杂的、更⼤的程序模块或程序1.3 C语⾔的发展历史与特点C语⾔的特点:(拥有底层操作能⼒)1.结构化语⾔2.易于移植3.简洁紧凑,使⽤⽅便灵活4.强⼤的处理能⼒5.⽣成的⽬标代码质量⾼,运⾏效率⾼第⼆章⽤C语⾔编写程序2.3 计算分段函数#include <stdio.h> //编译预处理指令程序运⾏时,⾸先从main函数开始运⾏%f指定输出时保留6位⼩数,%.2f则指定输出时保留2位⼩数循环体语句只能是⼀条语句(如果循环体语句由多条语句组成,必须⽤⼤括号把他们括起来,变成⼀条复合语句)整型数据的输出格式控制说明%md,指定了数据的输出宽度为m(包括符号位)。

若数据的实际位数(含符号位)⼩于m,左端补空格;若⼤于m,按实际位数输出实型数据的输出格式控制说明 %m.nf,指定了输出浮点型数据时保留n位⼩数,且输出宽度是m(包括符号位和⼩数点)。

若数据的实际位数(含符号位)⼩于m,左端补空格;若⼤于m,按实际位数输出f是针对浮点型数据⽽⾔,若输出数据为整型,则%m.nf应改为%md赋值运算符左边只能是⼀个变量第三章分⽀结构ch = getchar() //从键盘输⼊⼀个字符,并赋值给变量chputchar(输出参数); //输出参数是字符型变量或字符型常量第四章循环结构else和 if 的匹配准则:else与最靠近它的、没有与别的 else 匹配过的匹配do-while语句:循环条件需要在循环体中明确,且⾄少会执⾏⼀次循环体do {循环体语句} while (表达式);//判断⼀个数是否为素数#include <stdio.h>int main() {int i,m;printf("Enter a number:");scanf("%d", &m);for(i=2;i<=m/2;i++)if(m%i==0)break; //若m能被某个i整除,则m不是素数,提前结束循环if(i>m/2 && m!=1) //若循环正常结束,说明m不能被任何⼀个i整除printf("%d is a prime number! \n", m);elseprintf("No! \n");return 0;}break语句强制循环结束,不再执⾏循环体中位于其后的其他语句,break语句应该和if语句配合使⽤,即条件满⾜时,才执⾏break跳出循环;否则若break⽆条件执⾏,意味着永远不会执⾏循环体中break后⾯的其他语句continue语句:跳过循环体中continue后⾯的语句,继续下⼀次循环,continue语句⼀般也需要与if语句配合使⽤break语句和continue语句的区别在于,break结束循环,⽽continue跳过后⾯语句继续循环。

《C程序设计应用基础》课程设计实施方案

《C程序设计应用基础》课程设计实施方案

《程序设计应用基础》课程设计实施方案根据长沙理工大学《大学计算机》公共基础课程改革方案的要求,“理工大类专业学生利用学过的计算机程序设计内容,结合应用最好结合专业开发一个计算机应用程序系统”,以培养学生实践能力与创新精神,训练学生程序设计的基本素养,掌握最基本算法的设计与实现方法。

1.设计要求(1)学生自选题目,程序规模适当(语句不少于200行)。

建议选题:游戏类、基于文件存储的信息管理类和应用工具类。

(2)模块化程序设计(3)锯齿型程序书写格式(4)必须上机在VC++2010环境调试通过2.设计报告格式(见参考模板)(1)设计目的(2)总体设计(程序设计组成框图、流程图)(3)详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)(4)调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施(5)源程序清单和执行结果:清单中应有足够的注释注:要求每个小组题目不可重复。

3. 课程设计考核办法及成绩评定标准课程设计成绩根据学生平时表现、设计成果及答辩情况确定。

(1)参见文件《C程序设计应用基础》课程设计实施具体步骤(2)成绩评定应综合以下因素:①设计成果质量、问题规模及技术难度60%。

②论文及答辩情况20%。

③出勤情况及设计过程表现20%。

(3)课程设计成绩按100分制,占期末考试成绩的50%。

4.时间安排第1:任课老师布置任务,确定题目和分组(每组不超过3人)第2:由行政班组织评议,推选30%的组参与优秀答辩(任课老师不参加)。

各组确定组内排名顺序,并提交设计报告。

第3:由任课老师安排优秀答辩,确定优秀人选,并确定其他同学的成绩。

5.材料提交要求(1)提交纸质材料清单课程设计封面;课程设计计划书(装在课程设计论文的第一页);课程设计报告(以上所有表格及格式要求见参考模板)课程设计成绩评定单;按规定顺序(封面→任务书→设计报告→程序源码(作品) →成绩评定单等)对设计文件进行装订。

C语言程序的设计何钦铭

C语言程序的设计何钦铭

第3章分支结构【练习3-1】例3-4中使用else-if 语句求解多分段函数,为了检查else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。

解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。

可再给出x=0和x=15时的两种情况。

【练习3-2】计算符号函数的值:输入一个整数x ,计算并输出下列分段函数sign(x)的值。

-1 x<0 ry=sig n( x)= 0 x=01 x>0 I解答:#i nclude <stdio.h>int main(v oid){int x, y;prin tf("E nter x:");sca nf("%d", &x); if(x>0) y=1;else if (x==0) y=0;else y=-1;printf("sign( %d ) = %d\n",x,y);return 0;}【练习3-3】统计学生平均成绩与及格人数:输入一个正整数n,再输入n个学生的成绩,计算平均成绩,并统计所有及格学生的人数。

试编写相应程序。

解答:# in elude <stdio.h>int main(v oid){int coun t, i, n;double grade, total;printf("Enter n:"); sca nf("%d", &n); total = 0;count = 0;for(i = 1; i <= n; i++){ printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total + grade; if(grade >= 60) count++;} printf("Grade average = %.2f\n", total / n); printf("Number of pass= %d\n", count);return 0;}【练习3-4 】统计字符:输入10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

浙江大学《C程序设计》本科教学课件(何钦铭版)jc_chap04

浙江大学《C程序设计》本科教学课件(何钦铭版)jc_chap04

图形初始化 鼠标初始化 输出计算器外观 鼠标控制计算器的使用
结束 简单计算器的流程图
第4章 大型综合程序范例解析
简单计算器
界面外观 :
第4章 大型综合程序范例解析
简单计算器
界面设计:
(1)背景采用浅蓝色,用灰色作底色和红色作前景色画一个bar3d图 形,模拟立体效果;
(2)第1行是数据输入和结果输出的信息显示框,使用bar函数,用 黄色填充;
第4章 大型综合程序范例解析
简单计算器
数据结构设计: 简单计算器进行加减乘除运算的函数compute()
中,定义以下主要标志变量:
(1) sign:表示'+'、'-'、'*'、'/'等运算符的整数变量。 值为0表示当前未单击过运算符。 (2) flag:输入数据时是否单击了小数点。单击了小 数点,flag为1,否则为0。
第4章 大型综合程序范例解析
简单计算器-函数设计
picture.c
void picture()
绘制计算 器界面
① 使用图形函数绘制计算器外框
② 调用公用函数bottonup()绘制弹 起效果的按钮
③ 调用系统outtextxy()输出按钮 标签
④ 调用系统outtextxy()输出使用 说明等信息
初始化,接着显示简单计算器外观,并接受用户的 鼠标控制使用。如果单击了鼠标右键,则程序关闭 图形方式并结束运行。
第4章 大型综合程序范例解析
简单计算器
主程序流程:
void main() {
GraphInit(); initmouse(); picture(); compute (); closegraph(); }

c语言程序设计(何钦铭)

c语言程序设计(何钦铭)

c语言程序设计(何钦铭)C语言程序设计是一门基础而重要的计算机编程课程,它不仅教授编程语言的语法和结构,还涵盖了程序设计的基本概念和方法。

何钦铭教授编写的《C语言程序设计》教材,以其深入浅出的讲解和丰富的实例,深受广大学生和教师的喜爱。

C语言简介C语言是一种通用的、过程式的计算机程序设计语言,由丹尼斯·里奇在1972年开发。

它具有高效、灵活、功能强大等特点,广泛应用于系统软件、应用软件、嵌入式系统等领域。

C语言的特点1. 简洁性:C语言的语法简洁,易于学习。

2. 结构化:C语言支持模块化编程,有利于程序的组织和管理。

3. 可移植性:C语言编写的程序可以在不同的计算机系统上运行,具有很好的可移植性。

4. 高效性:C语言编译后的程序执行效率高。

5. 功能强大:C语言提供了丰富的运算符和数据类型,支持指针、结构体等高级特性。

C语言的基本结构C语言程序由函数组成,其中`main()`函数是程序的入口点。

程序的基本结构包括:- 预处理指令:如`#include`、`#define`等。

- 函数定义:包括返回类型、函数名和参数列表。

- 变量声明:定义变量的类型和名称。

- 语句:执行程序逻辑的代码块。

数据类型和变量C语言提供了多种基本数据类型,如整型(`int`)、浮点型(`float`、`double`)、字符型(`char`)等。

变量是程序中存储数据的容器,需要先声明后使用。

控制语句C语言的控制语句包括:- 条件语句:`if`、`switch`- 循环语句:`for`、`while`、`do-while`- 跳转语句:`break`、`continue`、`return`、`goto`函数函数是C语言中实现代码复用的基本单位。

用户可以定义自己的函数,也可以使用标准库中的函数。

函数包括:- 返回类型:指定函数返回值的类型。

- 函数名:唯一标识函数的名称。

- 参数列表:函数接收的输入值。

- 函数体:实现函数功能的代码块。

从计算思维到大学计算机基础教学核心课程建设

从计算思维到大学计算机基础教学核心课程建设
25
• 已有高校改革中比较有共性的方法 – 分类教学:针对校内不同学科类别,开设不同内容课程
计算思维培养需要分类分层次逐步推进
• 对计算思维的认识 • 广大教师的理解 • 学生培养的定位
14
内容方面:基础教学知识体系
认识与理解 计算环境
流程设计与 程序实现
面向专业应用的 信息处理技术
开发方法及典型 行业应用系统
系统平台与 计算环境
算法基础与 程序设计
数据管理与 信息处理
系统开发与 行业应用
按时间排序 重用 折中和结论
验证构造:
大问题的复杂性
– 预防、保护、冗余、容错、纠错
一致性和完备性
– 多维度考良(时间、空间、简洁、 效率
社会、成本)
安全性
8
计算思维与传统思维
抽象级问题 求解
指令/语言级问 题求解
数学思维 计算思维
逻辑思维
工程思维
系统级问题 求解
9
计算机基础教学的改革需求
自然和社会系统自身的内部禀赋着丰富的属于计 算的演化规律
计算不仅是一门关于人工现象的科学,还是一门 关于自然现象的科学
4
•CMU周以真(Jeannette M. Wing)教 授认为:
• 计算思维:用计算的基础概念去求解问 题、设计系统、理解人类行为 – 本质:抽象和自动化
*Communications of ACM, Vol.49, No.3, March 2006
引出的知识:
1、二进制和十进制 2、信息编码的基本概念
拓展思考:
1、对应三进制的表怎么构造 2、是否可以构造不等大小的表 3、是否可以构造一个同时猜姓和属相的游戏
21
例2:图像编码与校验
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12“程序设计基础”的实施方案与改革实践浙江大学 何钦铭今天我与各位教师交流一门具体课程——“程序设计基础”的教学改革经验和教学实施方案。

1 教学中存在的问题李未院士讲到“程序设计”是计算机学科的核心课程,吴文虎教授也谈到“程序设计”课程的教学经验,凡是主管这门课程的教师都知道,这门课程很难上,学生在学习过程中很难理解教学内容,掌握起来也有难度。

原因有以下几方面:(1) 教师以自己为中心,重教轻学;(2) 教学中重理论轻实践,纸上谈兵,忽略了对程序设计能力的培养;(3) 信息技术在中学的普及存在差异,教学中对学生个性化学习需求关注不够。

因此,大学教师在教学中需要重点解决的两个问题是: (1) 如何提高学生的实际编程能力;(2) 如何在考虑学生基础差异性的基础上实施教学。

2 浙江大学教学改革与实践浙江大学从90年代初开始进行该课程的教学改革,目标是:(1) 培养学生的程序设计能力; (2) 解决学生基础差异的问题。

经过十多年的探索,我们总结出一套经验,目前基本形成了比较完整的教学体系,该课程还于2004年被评为“国家精品课程”。

突破口概括起来有两点,第一,课堂教学中采用案例驱动教学方式;第二,建立较好的教学实践体系。

2.1 改革研究的主要内容总结十多年的改革,我们研究的主要内容有以下五个方面:(1) 教学内容的组织方式:以程序设计为主,语言知识为辅。

(2) 在课堂教学中采用“案例引入的主题式教学”方法。

① 教学内容分主题,以程序设计作为贯穿各主题的主线。

② 各主题的教学过程是:“案例分析-要点讲解”、“自学/上机实践”、“疑难解答”。

(3) 建立实践训练体系:通过2类训练/3种作业,从知识点、内容主线和应用面3个层次上逐步提高编程能力;不同类型的学生在这个体系中都有自己的发展空间。

(4) 强化动手能力的考核方式。

笔试(50%)+(在线编程考试+平时编程练习)(50%) (5) 借用网络支撑环境建设,包括考试系统和网站等。

13① 支撑实践教学的开展。

② 鼓励个性化、自主学习。

2.2 突破口一——案例驱动教学2.2.1 以程序设计为主线,编程案例为驱动学生在高中阶段接触到计算机并学习了如何使用计算机,到了大学阶段,“程序设计基础”是大一或大二学生深刻理解计算机核心理念和思路的第一门课。

在没有计算思维方式的情况下,学生的学习具有一定困难。

如果照本宣科,以理论为主,学生无法学习到核心内容,也就对程序设计产生畏难情绪,很难接受。

案例教学是很好的方法,通过具体案例让学生理解程序设计的理念和方法。

教师在教学中把整个课程分为多个主题,每个主题通过案例引入程序设计的解决方案,其中贯穿讲解程序设计的方法,再引导学生进行上机实践,在上机过程中发现学生的疑难问题,并统一进行讲解。

这四部曲周而复始,循环往复,以程序设计为主线,编程案例为驱动,其中程序设计贯穿各主题(纵向),编程应用为驱动(横向),通过实践训练学生的编程能力。

2.2.2 教学案例如在讲解循环结构时,我们遵循“案例分析-要点讲解”、“自学/上机实践”、“疑难解答”的教学过程,用以下几个具体案例进行案例教学:(1) 输出华氏摄氏温度转换表 学习的循环结构:for(2) 用格里高利公式求π的近似值 学习的循环结构:while (3) 统计一个整数的位数 学习的循环结构:do-while (4) 判断素数学习的循环结构:break /continue (5) 求1! + 2! + …. + 100! 学习的循环结构:嵌套循环2.3 突破口二——程序设计实践能力的培养2.3.1 加强实践存在的障碍在“程序设计基础”课程中,提高学生的实践能力至关重要,也是最核心的内容,具体就是让学生通过练习达到学习的目的。

但在实际操作中,无论是在学生方面还是在教师方面都存在一定困难。

计算机专业学生一般四年内的编程量应在2万行以上,重点学校学生应在4万行以上。

分解到每个学年,第一年至少完成程序5000行以上,本课程应在2000行以上。

以每个编程题30行计算,至少需要练习60道编程题。

以一个班30名学生计算,教师批改作业量至少在6万条以上,这基本不可能完成。

因此本课教师布置的作业量少,而学生无法得到充分锻炼。

第二,学生的计算机基础悬殊太大,作业量大,基础弱的学生完不成任务;作业量少,根本无法满足基础强学生的要求。

因此,学生的差异、教师工作量的差异导致本课的实际训练量不够,学生编程能力的培养和提高就存在严重障碍。

2.3.2 培养与提高学生实践能力的主要途径与方法为了培养和提高学生的实践能力,我们开展了课程实践教学和课外实践活动(竞赛)。

课程实践教学培养学生的基本实践能力,实践训练体系包括2类训练/3种作业,从知识点、内容主线和应用面3个层次上逐步提高编程能力。

(1) 基本编程训练包括自测作业(系统,在线判题)和主题作业。

这两种训练是平常作业,有近100道题。

(2) 综合编程训练(project)包括大型作业、小组合作、自己命题、分组答辩。

学生小组合作做项目,鼓励学生创新,考核以答辩方式进行。

学生在学习过程中找素材,团队合作,提高了自学能力、团队合作能力、探索能力和创新能力。

课外实践活动培养学生的创新实践能力,满足一部分优秀学生的发展需求。

我们采取了多层次、多方位的编程实践训练,采用了多种手段激发学生学习兴趣,学生根据自身水平和兴趣选择适合的训练方式,不同水平的学生在课程中都有锻炼机会。

我们还提供了丰富的资源供学生自学,让不同程度的学生有不同的发展空间,鼓励个性化、自主性学习。

14 在考核方式上,我们采取了“笔试+在线编程考试+平时练习”的方法,在保证基本要求的基础上,以相对做题数作为衡量标准,鼓励学生多学多练,给基础好和基础弱的学生都留有空间。

我们广泛应用了网络化辅助教学手段作为支撑环境,如建设了国家精品课程网站、作业和考试平台、浙江大学ACM程序竞赛网站等,组织校内外的竞赛,取得了良好的效果。

作业和考试平台是我在20年前做的平台,随着教学的发展而日臻完善。

它的程序自动评判功能有效地解决了学生平时练习和上机考试评分难的问题;能将日常的教学过程与考核有机结合,引导学生加强平时的学习和训练,如图1所示。

图1 “程序设计基础”作业和考试平台从1997年起,全校范围内已有10届4万名左右的学生使用过它,它可以自动组卷和评分,对各种语言的程序进行自动判别,减轻了教师负担,还从强化实践的角度加强了对学生的要求。

课堂的教学时间毕竟有限,教师鼓励学生学习完这门课后继续开展课外实践活动。

为了促进精英化教育向平民化、大众化运动转变,我们计算机学院设计和维护了浙江大学ACM程序设计竞赛网站,目前已积累2100余道题目,举办全球公开赛80多场,在线提交量达420万余人次,是全球最有影响力的程序设计竞赛类网站之一。

网站的界面如图2所示。

图2 浙江大学ACM程序设计竞赛网站2.4 教学应用效果2.4.1 培养学生的自主学习能力和基本编程能力在这样的教学和学习过程中,连续10届4万多名学生使用了考试与练习平台,平均每年4000人左右。

通过多种编程训练,学生编程能力明显提高。

学生完成大型作业时,编写的C源程序达到1000~6000多行,为全校范围的程序设计竞赛奠定了良好的基础。

2.4.2 程序设计竞赛活动在全校蓬勃开展每年有40多个专业(包括非计算机专业)的1000多名学生参加程序设计竞赛。

统计数据如表1所示。

表1 历年参加程序设计竞赛情况统计表年份200120022003 2004 2005 20062007 参加队数48 76 100 135 213 277286 参加人数100多207257 346 587 近1000涉及专业数10多20多20多 20多34 40多2.4.3 省内推广从2002年开始,程序设计竞赛活动在全省推广,我校开始承办浙江省程序设计竞赛。

情况如下:(1) 2003年(邀请赛):69队、学校数15所。

(2) 2004年:162队、学校数45,占全省高校比例63%。

15(3) 2005年:183队、学校数50,占全省高校比例70%。

(4) 2006年:295队、学校数59,占全省高校比例82%。

(5) 2007年:173队、学校数69,占全省高校比例95%。

计算机编程竞赛使学生的实践能力迅速提高,使全省高校计算机教学水平快速提高,很多学校学生的编程水平提高较快,就业形势很好。

2.5 主要固化成果2.5.1 教材——支撑案例教学(1)《C 语言程序设计》,何钦铭、颜晖主编,高等教育出版社,“十一五”规划教材,2008.1。

该书以程序设计为主线,用典型例子引导组织内容。

(2)《C 语言程序设计实验指导》,颜晖主编,高等教育出版社,2008.1。

该书遵循“模拟\改编\编写”程序的思路编写,循序渐进地组织实践内容。

(3)《C 程序设计基础课程设计》,张引、何钦铭等,浙江大学出版社,2007.9。

该书指导学生应用软件工程的思想和方法编写大型程序。

2.5.2 程序自动评判系统——支撑实践体系(略) 2.5.3 案例引导的教学内容设计例子——“第4章 循环结构”比如“第4章 循环结构”使用案例引导的教学内容设计如图3所示。

图3 “第4章 循环结构”教学内容设计为了加强学生的实践能力,浙大在“程序设计基础”课程中的改革持续了10多年,80%的课程包含了大的项目(projects)。

2007年9月,计算机学院组织编写了国内计算机专业第一套较完整的课程设计系列教材,共13本,其中包括一本《C 程序设计基础课程设计》。

它的内容结构是这样的:第1章:通过一个简单的“扫雷”游戏软件的开发,详细讲解基于软件工程的大型程序开发方法。

第2章:介绍编写大型程序可能会涉及到的硬件基础知识。

第3章:一些高级编程技术,包括文本和图形的显示、键盘和鼠标的操作控制、图形绘制、动画生成、乐曲演奏、汉字显示、图像显现和精确的时间控制等。

第4章:分析3个大型程序范例,通讯录\计算器\俄罗斯方块。

第5章:提供9个大型程序训练的题目,给出了问题的描述、难点分析、主要数据结构及主要算法提示。

下面我来详细介绍“程序设计基础”课程实施方案的内容。

3 课程教学实施方案研究背景2008年,教育部高等教育司函[2008]71号文件批准了地方院校计算机应用人才培养研究与试点等5个项目立项,“高等学校计算机科学与技术专业核心课程内容实施方案研究”项目包括8门课程,即离散数学、程序设计基础、数据结构、操作系统、计算机组成、计算机网络、数据库系统、软件工程,针对科学、工程、应用三种类型。

我们的工作目标是,在“专业规范”的指导下强化课程教学对人才培养的支持;围绕课程培养目标实施教学;对具体课程教学有指导意义。

相关文档
最新文档