1 / 35

《C 语言程序设计 》 课程教学方法探讨 

《C 语言程序设计 》 课程教学方法探讨 . 华中师范大学 计算机科学系. 王敬华. Email: jhuawang@126.com 手 机: 13707103274. 讨论提纲:. 一、 C 语言课程教学存在的问题 二、 C 语言课程研究型教学方法的探讨 三、 C 语言课程教学重、难点及解决方法. 一、 C 语言课程教学存在的问题. 教师方面: 教学内容与教学时数之间的矛盾 教师的综合业务水平有待提高 教学方法、方式陈旧 重课堂教学,轻实验教学 学生方面: 学习目的不明,动力不足 逻辑思维能力较弱,想象空间较窄 初学者易产生厌学情绪

rupert
Download Presentation

《C 语言程序设计 》 课程教学方法探讨 

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 《C语言程序设计》课程教学方法探讨  华中师范大学计算机科学系 王敬华 Email: jhuawang@126.com 手 机: 13707103274

  2. 讨论提纲: 一、C语言课程教学存在的问题 二、C语言课程研究型教学方法的探讨 三、C语言课程教学重、难点及解决方法

  3. 一、C语言课程教学存在的问题 • 教师方面: • 教学内容与教学时数之间的矛盾 • 教师的综合业务水平有待提高 • 教学方法、方式陈旧 • 重课堂教学,轻实验教学 • 学生方面: • 学习目的不明,动力不足 • 逻辑思维能力较弱,想象空间较窄 • 初学者易产生厌学情绪 • 重教轻学,重理论轻实践 • 考试能力强,编程能力弱

  4. 二、C语言课程研究型教学方法的探讨 1、什么是研究型教学? 2、教学模式对人才培养质量的影响 3、研究型教学与传统教学的区别 4、C语言课程研究型教学实施方案

  5. 1、什么是研究型教学? 研究型教学模式是相对于以单向性知识传授为主的教学模式提出的,是指教师以课程内容和学生的学识积累为基础,引导学生创造性地运用知识和能力,自主地发现问题、研究问题和解决问题,在研讨中积累知识、培养能力和锻炼思维的新型教学模式。 研究型教学的要点: 在于极大地引起学生对学科的兴趣,拓宽学生的视野,提高学生的学习积极性,从而对学科进行比较深入地探究、研究,最终使得学生能够有所发现、发明和创造。

  6. 2、教学模式对人才培养质量的影响 社会 家庭 传统教学模式、 研究型教学模式 结果对(好、较好)或结果错 数据结构 + 算法 计算机解决实际问题流程: 输出结果 编写程序 实际问题 学生生源 + 教学模式 合格(好、较好)或不合格 大学人才培养流程: 毕业生 教学培养 大一新生

  7. 研究型教学模式 传统教学模式 教学理念 TO THEM WITH THEM 或BY THEM 教学目标和重点 知识传承 学生能力与整体素质的培养与开发 将知识传授给他们 学生(教师起着主导作用,是学习情景的设计者、推动者和控制者,教师通过与学生一起探究知识来共同学习) 教师 跟他们一起学 教学主体 通过他们自己来学 全面考察学生的知识、技能、能力与行为,评价具有相对稳定性和可预测性 注重学生知识的掌握 ,单纯以知识为考察的评价具有暂时性,预测性不强 教学考核 教师角色 学习的推动者(Facilitator) 单一的知识传授者(Instructor) 最终转变为学习的指导者(Mentor) 少而精、宽而新 ,突出核心的知识点 全面而细致 讲授内容 互动性 差 强 较多 少或没有 课堂讨论 期末至少占60%以上 期末可占40%以下,重点是平时 成绩占比 3、研究型教学与传统教学的区别

  8. 4、C语言课程研究型教学实施方案 (1)加强学生研究型教学理念的培养 (2)编制详细的研究型教学设计方案 (3)建立严格的学生考核机制 (4)转变传统教学方式 (5)以学生为导向,加强教学方法的改革 (6)实施教学手段多样化 (7)建立与研究型教学相适应的实验教学新模式 (8)建立定期的课外讨论机制 (9)加强课后练习,巩固对课本知识的把握

  9. 4、C语言课程研究型教学实施方案 (1)加强学生研究型教学理念的培养   研究型教学包含教师和学生两大主体,从字面上来理解研究型教学包含两个方面的内容: • 研究型教   即主讲老师如何从传统的授课模式中走出来,对传统单一的授课模式进行大胆的改进和探索,以建立引导学生创造性地运用知识和能力,自主地发现问题、研究问题和解决问题,在研讨中积累知识、培养能力和锻炼思维的新型授课模式,这是主讲教师应重点研究的内容; • 研究型学   即学生如何从传统的被动式或压迫式学习方式中解放出来,以建立能够适应新的授课模式,能够提高学生自主学习及创新能力的新的学习模式和学习方法,这是广大学生需思考的内容

  10. 4、C语言课程研究型教学实施方案 (2)编制详细的研究型教学设计方案 《C语言程序设计研究型教学课程设计方案》是进行研究型教学具体实施的主线,它相当于一场演出的节目单,老师是导演和主持人,是场景的设计者和组织者,学生是演员是主角。   主要内容包括: 教学日期、教学时数、教学内容、讨论主题、实验内容、作业布置、教学方法和教学手段。

  11. 4、C语言课程研究型教学实施方案 (3)建立严格的学生考核机制 •  建立学生学习、研究小组 •    分组原则:小组内部异质化 ,小组之间同质化 •  建立每个学生平时学习成绩档案

  12. 《C语言程序设计》研究型课程学生平时考评得分一览表《C语言程序设计》研究型课程学生平时考评得分一览表

  13. 4、C语言课程研究型教学实施方案 (3)建立严格的学生考核机制 •  制定公平合理的成绩评定方案 • 学期总评成绩 = 平时成绩 × 70% + 期末考试成绩 × 30% • 平时成绩 = 基数分 + 小组奖惩分 + 个人在全班中的奖惩分 + 个人在小组内的奖惩分 • 其中: •   小组奖惩分 =(小组得分 - 小组平均分)* d1 •   个人在全班中的奖惩分 =(个人分值 –全班个人平均分)* d2 •   个人在小组内的奖惩分 =(个人分值 –小组内个人平均分)* d3 •   基数分可定义为80,d1,d2,d3为调整系数,其值均小于1,可设定d1 = 0.35,d2 = 0.25,d3 = 0.3。

  14. “填鸭式”学习 “讨论式”学习 4、C语言课程研究型教学实施方案 (4)转变传统教学方式 具体做法: 1、每次授课结束前,布置预习思考题,共布置12章预习思考题(共150多道题)。要求学生在课下充分预习。课上围绕思考题展开讨论:每次课分组讨论1-2次,每次3-5分钟;学生课堂讨论、发言或回答问题的总时间总计约占总学时的18%。 2、随机抽查回答问题与各组指派同学回答问题相结合。每位同学都有机会。评价回答问题的水平不以答案的正确性为唯一依据,而更注重表达过程的清晰度和逻辑性,尤其鼓励问题回答者阐述自己的观点或提出预习中的疑惑之处。统计表明,学生回答问题次数多者达10多次,平均水平有6-8次。 3、让学生分组主讲课程中的部分章节。 4、以上在课堂教学过程中的学生表现按评分标准将其分值记入到学生平时成绩档案中。

  15. 4、C语言课程研究型教学实施方案 (5)以学生为导向,加强教学方法的改革 教师的着眼点:引导学生走向知识,而不是带着知识走向学生 能力的提高 良好的开端 扎实的基础 • 善于培养兴趣 • 善于总结归纳 • 善于互动交流 • 善于发现问题 • 善于合理施压 • “案例教学法”贯穿教学全过程 • “任务驱动法”引导学生学习 • “负反馈教学法”解决学生学习中问题 • 以“算法为中心”实现问题求解 • 用“多媒体”教案扩大课堂信息量

  16. 4、C语言课程研究型教学实施方案 (6)实施教学手段多样化 • 精心制作了一套与教材配套的数据结构CAI课件 • 建立师生交流平台。 • C语言学习和答疑的QQ群, • 申请电子邮箱:CMessage@126.com • 学习资料上传下载的公共邮:CLanguageMsg@126.com • 利用internet网络平台,建立了《C语言程序设计》教学博客

  17. 4、C语言课程研究型教学实施方案 (7)建立与研究型教学相适应的实验教学新模式 • 减少验证型实验比例,增加研究型实验和综合性实验的比例 • 建立以小组为单位的实验完成机制 • 加强实验报告的规范 • 实验总结 • 鼓励实验动手能力的较强的同学自己设计实验项目

  18. 4、C语言课程研究型教学实施方案 (8)建立定期的课外讨论机制 星期一发布讨论主题 以小组为单位进行准备 专题讨论 进行点评 表现分值入档

  19. 4、C语言课程研究型教学实施方案 (9)加强课后练习,巩固对课本知识的把握   除了每堂课布置一些课后练习题外,我还为每章编制了相应的自测试卷,本学期共编制12套自测试卷,每章授课完毕均将自测试卷上传到学生公共邮箱共同学们下载,并要求学生定时上交作业和自测试卷,同时进行认真的批改,并安排时间进行习题课的组织与讲解.

  20. 三、C语言课程教学重、难点及解决方法 1、教材选取 2、学时安排 3、学前引导 4、课程教学重、难点及分析

  21. 1、教材的选取 • 教材特点: • 站在计算机内存的角度来介绍C语言的数据类型。 • 从正反两方面来介绍C语言语法。 • 加深对C语言库函数的学习 • 以VC编译环境为基础同时兼顾其它C语言版本。 • 以大量的图表来阐述知识内容 • 配备大量经典实例程序,对每行语句作详尽的解释 • 注重章节学习意义,提出章节学习目标 • 配备大量的习题,习题类型丰富,难度各异,具有广泛的代表性和实战性 • 配备有完美的、非常适合教学的课件 • 配备有习题解答及实验指导参考书 • 主教材 • C语言程序设计教程(第二版)王敬华编著 清华大学出版社 • 实验教材 • C语言程序设计教程(第二版)习题解答与实验指导王敬华编著 清华大学出版社

  22. 2、学时安排 (课堂:54学时,实验:36学时)

  23. 3、学前引导 • C语言是什么?为何要学C语言? • C语言在整个计算机课程体系中的作用与地位 • 学完C语言=会编程序? • C与JAVA、C++、C#之间的关系

  24. 4、课程教学重、难点及分析 C语言内容主要包含两个大的方面:数据类型、程序结构 (1)C语言中数据类型的正确理解和把握 牢牢抓住数据在内存中存储与变化这条主线 • 简单类型数据在内存中存储与变化 • 简单数据类型的表示范围 • 有符号数与无符号数

  25. 符号位(表示负) 符号位(表示负) 按位求反,末位加1 按位求反,末位加1 取低16位 低地址 低字节 低字节 低地址 高字节 高地址 高地址 高字节 例:十六进制整数在内存中的表示 • -0X8AB6: • 对于16位的内存单元: 对于32位的内存单元: (+0X8AB6)补= 0000 0000 0000 0000 1000 1010 1011 0110 (+0X8AB6)补= 0 1000 1010 1011 0110 (-0X8AB6)补= 1111 1111 1111 1111 0111 0101 0100 1010 (-0X8AB6)补= 1 0111 0101 0100 1010 真值为:-35510 ! 真值为:+30026 ! 符号位 表示负 符号位 表示正 十六进制数-0X8AB6两个字节的内存实际存放形式 十六进制数-0X8AB6四个字节的内存实际存放形式

  26. 【例】变量的存储范围 十进制数 对应的机器数(补码) 80 00 0 00 0 0 0 0 1 0 1 0 0 0 0 ch + 50 00 0 00 0 0 0 00 1 1 0 0 1 0 ————————————————— 00 0 00 0 0 0 10 0 0 0 0 1 0 符号位 #include <stdio.h> void main ( ) { char ch; int x; ch = 80 + 50; x = 80 + 50; printf ("ch = %d\n", ch); printf ("x = %d\n", x); } 1 0 0 0 0 0 1 0 为什么??? 真值:-126 ch = -126 x = 130

  27. #include <stdio.h> void main ( ) { unsigned int a = 30; int b = -130, c; c = (a + b) / 2; printf("c = %d\n", c); } #include <stdio.h> void main ( ) { int b = -130, c; c = (30 + b) / 2; printf("c = %d\n", c); } 程序一 程序二 例:表达式中有符号数与无符号数的计算问题 表达式(30 + b) /2的计算,因整常数30为有符号数,b与整常数之间操作时不影响b的类型,运算结果仍然为int型,所以(30 + b) / 2其实就是(30 - 130) / 2 = -50(VC、BC下)。 对于表达式(a + b) / 2在运算之前,考虑到变量a为无符号整型,因此b必须被转化为无符号整型,即b被转化为4294967166(VC下,-130的四个字节的补码,最高位为数据位)或65406(BC下,-130的两个字节的补码,最高位为数据位),所以(a + b)/ 2其实就是(30 + 4294967166) / 2 = 2147483598(VC下)或(30 + 65406)/ 2 = 32718(BC下)。 Why? Why? 运行结果: c = -50(VC下) c = -50(BC下) 运行结果: c = 2147483598(VC下) c = 32718(BC下)

  28. 4、课程教学重、难点及分析 #include <stdio.h> void print (int w); void main ( ) { print ( 3 ); } void print (int w)//递归函数 { int i; if ( w != 0) //递归结束条件 { print (w-1); for (i = 1; i <= w; ++i) printf ("%d ", w); printf ("\n"); } } (2)程序设计算法思想 (3)函数的理解及参数的传递 (4)递归程序设计 运行结果: 1, 2,2, 3,3,3,

  29. w w 1 0 w print(0); 2 返回 w (4)输出:1 (4)输出:1 主程序 print(1); 3 (3) 输出:2, 2 (3) 输出:2, 2 print(2); w=3; (2) 输出:3, 3, 3 (2) 输出:3, 3, 3 print(w) (1) (1) top (3)w=1 (1 ) 3 (4)w=0 (2)w=2 (3)w=1 (2) 2 (1)w=3 (2)w=2 (1) 3 top (1)w=3 top (4) 0 top (3) 1 (3) 1 top (2)w=2 (2) 2 (2) 2 (1)w=3 (1) 3 (1) 3 (1)w=3 top top top 结束 递归调用执行情况如下:

  30. 4、课程教学重、难点及分析 (5)变量的作用域和生存期 (6)指针与指针变量

  31. …... 整型变量i 变量的地址 2000 10 2001 2002 整型变量i的内容 2003 指针变量 变量地址(指针) 变量i_pointer 2004 地址存入 指针变量 指向 2005 变量 变量值 2006 …... 指针变量i_pointer的内容 (是地址) • 指针:一个变量的地址 • 指针变量:专门存放变量地址的变量 指针 2000 指针变量

  32. 4、课程教学重、难点及分析 (7)利用指针编程 关键:时刻记住当前指针的位置 (8)链表的定义及操作

  33. head ∧ 90 p p p 78 65 70 pnew 65 3 4 1 0 2 【例】 链表插入操作函数Insert_LinkList。 void Insert_LinkList(NODE *head, NODE *pnew, int i) { NODE *p; int j; p = head; for (j = 0; j < i && p != NULL; j++) //将p指向要插入的第i个节点 p = p->next; if (p == NULL) //表明链表中第i个节点不存在 { printf ("the %d node not foundt!\n", i); return; } pnew->next = p->next ;//将插入节点的指针域指向第i个节点的后继节点 p->next = pnew;//将第i个节点的指针域指向插入节点 } 假设i = 2

  34. 文件指针 位置指针 4、课程教学重、难点及分析 (9)文件指针与文件位置指针 文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。 文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。 □ □ □ □ □ □ □ □

  35. 谢谢大家!

More Related