版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1教学与教案设计教学与教案设计 谌卫军谌卫军清华大学清华大学 2内容结构内容结构1. 课程定位课程定位2. 教学内容设计教学内容设计3. 教案设计教案设计4. 课堂教学课堂教学5. 我的故事我的故事31. 课程定位课程定位 了解该课程在课程体系中的定位了解该课程在课程体系中的定位了解课程的教学对象了解课程的教学对象教学理念与教学目标教学理念与教学目标41)该课程在课程体系中的定位)该课程在课程体系中的定位J几年级的课程?几年级的课程?J前置课程?后继课程?前置课程?后继课程?J授课学时,实验学时。授课学时,实验学时。5“计算机程序设计基础计算机程序设计基础”J计算机软件专业的计算机软件专业的第
2、一门第一门专业基础专业基础课,大一上学期;课,大一上学期;J前置课程:无;前置课程:无;J后继课程:数据结构、操作系统、后继课程:数据结构、操作系统、编译原理等。编译原理等。J授课授课48学时,实验学时,实验48学时。学时。62)了解课程的教学对象)了解课程的教学对象J讲课不是讲课不是个人秀个人秀,而是让学生学到,而是让学生学到知识,有进步知识,有进步J“知己知彼,方能百战不殆知己知彼,方能百战不殆”,课,课程程深度深度,讲课速度?,讲课速度?J学生构成一般是学生构成一般是复杂复杂的的7授课对象:软件专业大一新生授课对象:软件专业大一新生5/6010/6035/6010/60曾经参加过曾经参加
3、过程序设计类程序设计类比赛(市、比赛(市、省、全国)省、全国)使用过使用过C语语言或其他言或其他语言,编语言,编写过一些写过一些小程序小程序熟悉电脑操熟悉电脑操作,熟悉各作,熟悉各种应用软件种应用软件的使用,但的使用,但没写过程序没写过程序没有接触没有接触过太多的过太多的计算机计算机83)教学理念和教学目标)教学理念和教学目标J了解了课程和学生以后,要制订教了解了课程和学生以后,要制订教学理念和教学目标学理念和教学目标J个人观点:能力比知识更重要,任个人观点:能力比知识更重要,任何一门课程,应该是以提高学生的何一门课程,应该是以提高学生的各种能力为目标,而不仅仅是知识各种能力为目标,而不仅仅是
4、知识的传授。的传授。9以以“计算机程序设计基础计算机程序设计基础”为例为例J学生善于学生善于 读书读书; 学习学习C语言的语言的语法语法J学生不善于学生不善于 解决实际的解决实际的编程问题编程问题10课程目标课程目标J掌握掌握C语言的基本语法语言的基本语法J让学生掌握程序设计的基本原理和让学生掌握程序设计的基本原理和方法,提高他们的能力方法,提高他们的能力J能力包括:自学能力、算法分析和能力包括:自学能力、算法分析和设计能力、动手实践能力和创新能设计能力、动手实践能力和创新能力。力。111int x, y, t;x = y = 3;t = +x | +y;y的值为的值为:(A)0 (B)4 (
5、C)3 (D)12一个字符串,有小写字一个字符串,有小写字母、大写字母和空格,母、大写字母和空格,编写一个程序,把小写编写一个程序,把小写字母放在最前,空格放字母放在最前,空格放中间,大写字母放最后,中间,大写字母放最后,且小写大写字母原来的且小写大写字母原来的顺序不能乱。顺序不能乱。 某年的计算机等级考试某年的计算机等级考试试题,考察的是知识试题,考察的是知识某年微软工程院的面试题,某年微软工程院的面试题,考察的是能力考察的是能力In general, we hope that after the course, the students will pass the programming
6、test of a leading software company such as Microsoft, if they go to a job interview. JJ122. 教学内容设计教学内容设计 内容为目标服务内容为目标服务教学大纲:讲哪些内容,每部分教学大纲:讲哪些内容,每部分内容多少学时内容多少学时重点、难点、创新点重点、难点、创新点131)内容为目标服务)内容为目标服务J根据教学目标来安排教学内容及学根据教学目标来安排教学内容及学时数。时数。J以以“计算机程序设计基础计算机程序设计基础”为例,为例,目标是提高学生能力,则教学内容目标是提高学生能力,则教学内容要做相应的调整,
7、少讲知识型内容,要做相应的调整,少讲知识型内容,多讲能力型内容。多讲能力型内容。14language syntax1/3programming examples2/315如果表达式如果表达式1 1为真,执行语句为真,执行语句1 1;否则如果表达式;否则如果表达式2 2为真,执为真,执行语句行语句2 2;否则如果表达式;否则如果表达式3 3为真,执行语句为真,执行语句3 3;否则;否则, ,,如果表达式如果表达式m m为真,执行语句为真,执行语句m m,否则执行语句,否则执行语句m+1m+1。语法语法.16还是语法还是语法.真真假假结束循环结束循环17在在8 88 8的棋盘上,放置的棋盘上,放置
8、8 8个个皇后皇后(棋子),使两两之(棋子),使两两之间互不攻击。所谓互不攻击是说任何两个皇后都要间互不攻击。所谓互不攻击是说任何两个皇后都要满足:满足:(1 1)不在棋盘的同一行;)不在棋盘的同一行;(2 2)不在棋盘的同一列;)不在棋盘的同一列;(3 3)不在棋盘的同一对角线上。)不在棋盘的同一对角线上。因此可以推论出,棋盘共有因此可以推论出,棋盘共有8 8行,故至多有行,故至多有8 8个皇后,个皇后,即每一行有且仅有一个皇后。这即每一行有且仅有一个皇后。这8 8个皇后中的每一个个皇后中的每一个应该摆放在哪一列上是解该题的任务。应该摆放在哪一列上是解该题的任务。编程案例编程案例182)教学
9、大纲)教学大纲J讲什么,讲多久,先讲什么、后讲讲什么,讲多久,先讲什么、后讲什么。什么。19章节章节名称名称主要内容主要内容学时学时第第1章章程序设计概述程序设计概述3第第2章章数据类型与表达式数据类型与表达式 数据类型、常量、变量、运算符和表达式等数据类型、常量、变量、运算符和表达式等3第第3章章顺序结构程序设计顺序结构程序设计C语句、数据的输入与输出语句、数据的输入与输出2第第4章章选择结构程序设计选择结构程序设计关系运算符和表达式、逻辑运算符和表达式、关系运算符和表达式、逻辑运算符和表达式、if语句、语句、switch语句语句2第第5章章循环控制循环控制for语句、语句、while语句、
10、语句、do-while语句、语句、break和和continue语句、程序举例语句、程序举例5第第6章章数组数组一维数组、二维数组、字符数组、程序举例一维数组、二维数组、字符数组、程序举例3第第7章章函数函数函数使用、变量作用范围、函数调用实现过程函数使用、变量作用范围、函数调用实现过程3第第8章章指针指针指针的基本概念、指针变量、指针与数组、指指针的基本概念、指针变量、指针与数组、指针与字符串针与字符串8第第9章章结构体结构体结构体、结构体数组与指针、链表等结构体、结构体数组与指针、链表等6第第10章章算法引论算法引论算法分析、查找算法、排序算法、递推算法、算法分析、查找算法、排序算法、递推
11、算法、基于分治和回溯策略的递归算法基于分治和回溯策略的递归算法9第第11章章编程规范与程序调试编程规范与程序调试3203)重点、难点、创新点)重点、难点、创新点J课程内容一定要课程内容一定要主次分明主次分明;J课程内容要有创新,仍然是服务于课程内容要有创新,仍然是服务于教学目标教学目标21以以“计算机程序设计基础计算机程序设计基础”为例为例J正确的学习方法正确的学习方法J编程规范编程规范J程序的调试与测试程序的调试与测试J函数调用的实现过程函数调用的实现过程223. 教案设计教案设计 搜集材料搜集材料融会贯通融会贯通教案设计的一些要求和技巧教案设计的一些要求和技巧231)搜集材料)搜集材料J教
12、案制作要教案制作要“站在巨人的肩膀上站在巨人的肩膀上”,要搜集尽可能多的相关课程的资料,要搜集尽可能多的相关课程的资料,如课件、参考书、习题等;如课件、参考书、习题等;J资料来源:资料来源:其他教师其他教师、互联网(其、互联网(其他大学的相关课程、互联网作为知他大学的相关课程、互联网作为知识来源)识来源)24搜集其他大学相关课程的资料搜集其他大学相关课程的资料J构造一个著名大学列表构造一个著名大学列表J用用google搜索每所大学计算机系的搜索每所大学计算机系的主页主页J在系主页中,会有课程列表和描述,在系主页中,会有课程列表和描述,寻找感兴趣的课程,再通过链接找寻找感兴趣的课程,再通过链接找
13、到相关课程的主页到相关课程的主页25美国大学研究生院计算机系排名.txt国内呢?国内呢?2627282930直接用直接用google去搜索相关课程去搜索相关课程 3132与教材配与教材配套的套的PPT33互联网作为知识来源互联网作为知识来源维基维基百科百科34百度百度百科百科352)融会贯通)融会贯通J资料多了是一种幸福,也是一种资料多了是一种幸福,也是一种负负担担,需要把别人的东西真正变成自,需要把别人的东西真正变成自己的东西,从己的东西,从N到到1;J资料的使用方法:原样照搬法、东资料的使用方法:原样照搬法、东拼西凑法、加工改进法。拼西凑法、加工改进法。36原样照搬法:不可取!没有任何一个
14、课件是完美的,没有理解的课件是无法使用的。37for循环语句循环语句Jfor循环的语法循环的语法Jfor循环使用方法举例循环使用方法举例Jfor循环编程举例循环编程举例常用方法常用方法1:东拼西凑法:东拼西凑法38for循环的语法:来源循环的语法:来源1一般形式:一般形式:真真假假结束循环结束循环39for循环使用方法举例:来源循环使用方法举例:来源2/* Frog lifetime */int days;for(days = 155; days 0; days-)work_all_day(); sleep_all_night();die_quietly();40for循环编程举例:来源循环编
15、程举例:来源3 德国数学家高斯,在上小学的时候,老师出了德国数学家高斯,在上小学的时候,老师出了一道难题,计算一道难题,计算1+2+3+ + 100,高斯很快就在,高斯很快就在自己的小石板上写出了答案自己的小石板上写出了答案5050,老师非常惊讶,老师非常惊讶,高斯怎么算得这么快呢?原来,高斯不是一个数一高斯怎么算得这么快呢?原来,高斯不是一个数一个数按部就班地加起出来的,而是发现这些数字有个数按部就班地加起出来的,而是发现这些数字有一个规律,一头一尾依次两个数相加,它们的和都一个规律,一头一尾依次两个数相加,它们的和都是一样的:是一样的:1+100=101,2+99=101,一直到,一直到5
16、0+51=101,一共是,一共是50个个101,所以,他很快就把,所以,他很快就把答案算出来了。请编程解决该问题。答案算出来了。请编程解决该问题。41总之,既要精挑细选,又要有机地融和,形成一个完整、和谐的整体。42常用方法常用方法2:加工改进法:加工改进法该问题(案例)是别人提出的,但你觉得不满意,可以对它进行改进,成为一个更好的例子。437151311461044思路分析思路分析71513114715131171513111iiiabc 令 7, 5 3 11, 1, 1, 1,iiab451. 循环语句:循环控制条件循环体;循环语句:循环控制条件循环体;2. 循环控制条件的设计:题目已指
17、明,当最后循环控制条件的设计:题目已指明,当最后一项的绝对值小于等于一项的绝对值小于等于 10-6 时,循环结束;时,循环结束;3. 循环体语句的设计:需计算每一项的值,并循环体语句的设计:需计算每一项的值,并把它们把它们累加累加起来。起来。ci = bi / aiai+1= ,初值为,初值为 ;bi+1 = ,初值为,初值为 。思路分析(续)思路分析(续)ai + 2 1-1 * bi 1461. 任何一种循环语句均可,事件驱动,最任何一种循环语句均可,事件驱动,最好是好是while或或do-while;2. 初始值的设置;初始值的设置;3. 先计算、后累加;先计算、后累加;4. 第一项和最
18、后一项。第一项和最后一项。具体实现具体实现47void main( ) int num = 0; / 总项数总项数 double pi = 0, a = 1.0, b = 1.0, c = 1.0; / a为分母为分母, b为分子为分子 while( fabs(c) 1e-6 ) pi = pi + c;/ 累加每一项累加每一项 num = num + 1;/ 总项数加总项数加1 a = a + 2.0;/ 计算下一项的分母计算下一项的分母 b = -b;/ 分子变正负号分子变正负号 c = b / a;/ 计算下一项计算下一项 pi = 4.0 * pi; printf(pi = %.6fn
19、, pi); printf(num = %dn, num); 48493)教案设计:组织结构)教案设计:组织结构J章节结构清晰,各部分内容之间前章节结构清晰,各部分内容之间前后关联、逻辑性强后关联、逻辑性强50第第1章章“程序设计概述程序设计概述”J这是一个计算机的时代;这是一个计算机的时代;J计算机功能强大(深蓝、语音识别)计算机功能强大(深蓝、语音识别)J软件与程序软件与程序J计算机程序设计计算机程序设计J计算机语言计算机语言J一个典型的一个典型的C语言程序语言程序51操作系统第操作系统第3章章“存储管理存储管理”J单道程序存储管理单道程序存储管理J分区存储管理分区存储管理J页式存储管理页
20、式存储管理J虚拟存储技术虚拟存储技术JLinux的存储管理的存储管理524)教案设计:内容安排)教案设计:内容安排J内容安排的一般模式:对于每一部内容安排的一般模式:对于每一部分内容分内容A,为什么要引入,为什么要引入A?A是什是什么?如何使用么?如何使用A?Why-What-HowJ例如:例如:“循环结构循环结构”的讲授的讲授53Why循环结构循环结构?程序员失去循环语句,世界将会怎么样?54计算机的执行速度计算机的执行速度10,000,000行行C代码代码/秒秒 程序员的编程速度程序员的编程速度12行可用的行可用的C代码代码/每天每天 编写一个运行时间为编写一个运行时间为1秒的程序,需要秒
21、的程序,需要多少天多少天?55一般形式:一般形式:真真假假结束循环结束循环What?56How?int i;for(i = 100; i 0; i -= 2) printf(“%dn”, i);57Why函数函数?提高工作效率,减少重复劳动!提高工作效率,减少重复劳动!生活中亦如此生活中亦如此. 5859在编程时在编程时.我想从键盘读入一个数据我想从键盘读入一个数据我想生成一个随机数我想生成一个随机数我想计算一个字符串的长度我想计算一个字符串的长度我想知道一个人的星座和属相我想知道一个人的星座和属相用用scanf函数!函数!用用rand函数!函数!用用strlen函数!函数!自己编写函数!自己
22、编写函数! 60什么是函数什么是函数? 数学里面的函数:正弦函数、余弦函数、指数函数数学里面的函数:正弦函数、余弦函数、指数函数等等;等等; C语言里面的函数:也称为子程序(语言里面的函数:也称为子程序(subroutine),),它是一组程序代码(包括数据和指令),用来完成它是一组程序代码(包括数据和指令),用来完成某个特定的功能。某个特定的功能。 C语言的函数既可以有返回值,也可以无返回值,语言的函数既可以有返回值,也可以无返回值,不像不像Pascal等语言,严格地区分为函数等语言,严格地区分为函数(function)和过程()和过程(procedure)。)。61函数原型函数原型void
23、 main ( ) 函数调用函数调用 函数定义函数定义函数的使用模式函数的使用模式声明该函数声明该函数定义一个函数定义一个函数使用该函数使用该函数如何使用函数?如何使用函数?625)教案设计:问题驱动)教案设计:问题驱动J通过问题(例子)来引出内容,通通过问题(例子)来引出内容,通过问题来复习内容,不要干巴巴地过问题来复习内容,不要干巴巴地直接讲,而是用到什么讲什么。直接讲,而是用到什么讲什么。J其他专业其他专业也应该适用,如法律条例也应该适用,如法律条例很多,可用具体案件引出。很多,可用具体案件引出。63某参考书的目录某参考书的目录64问题描述问题描述“编写一个程序,计算所有课程的编写一个程
24、序,计算所有课程的GPA(Grade Point Average)”4分制(分制(04)一个典型的一个典型的C C语言程序语言程序65计算方法计算方法 将每门课程的学分乘以学时,累加后除将每门课程的学分乘以学时,累加后除以总学时,得出平均分。以总学时,得出平均分。例如:某学生的五门课程的学时和成绩为:例如:某学生的五门课程的学时和成绩为:A课程课程4个学时,成绩个学时,成绩92(A););B课程课程3个学时,成绩个学时,成绩80(B););C课程课程2个学时,成绩个学时,成绩98(A););D课程课程6个学时,成绩个学时,成绩70(C););E课程课程3个学时,成绩个学时,成绩89(B)。)。
25、 GPA(4*43*32*46*23*3)()(432 63)3.00 为简化问题,假设为简化问题,假设所有课程成绩均不所有课程成绩均不低于低于C,且学时数,且学时数相同。相同。66 让用户输入成绩分别为让用户输入成绩分别为A A、B B、C C的课程数的课程数 计算总分数(分子)计算总分数(分子) 计算总的课程数(分母)计算总的课程数(分母) 计算计算GPAGPA 在屏幕上显示计算结果在屏幕上显示计算结果基本思路基本思路1. 变量的定义与使用(数变量的定义与使用(数据类型、整型、实型)据类型、整型、实型)2. 算术运算算术运算3. 输入和输出输入和输出67#include /* 编译预处理,
26、文件包含编译预处理,文件包含 */void main( )/* 主函数主函数 */ int nA, nB, nC; /* 成绩为成绩为A、B、C的课程数的课程数*/ double totalCourses, totalPoints, gpa; printf(你得了多少个你得了多少个A? ); scanf(“%d”, &nA);/输入成绩为输入成绩为A的课程数的课程数 printf(你得了多少个你得了多少个B? ); scanf(%d, &nB); printf(你得了多少个你得了多少个C? ); scanf(%d, &nC); totalPoints = nA * 4
27、+ nB * 3 + nC * 2; totalCourses = nA + nB + nC; gpa = totalPoints / totalCourses; printf(你的你的GPA是:是:%.2f, gpa);686)教案设计:案例教学)教案设计:案例教学J案例教学是一种重要的教学手段,案例教学是一种重要的教学手段,将讲授内容融入在案例之中。通过将讲授内容融入在案例之中。通过案例教学,可以实现具体与抽象、案例教学,可以实现具体与抽象、理论与实践的有机结合,从而培养理论与实践的有机结合,从而培养学生分析问题、解决问题的能力。学生分析问题、解决问题的能力。J哈佛商学院的经济管理案例。哈
28、佛商学院的经济管理案例。69案例不是简单的小例子,而是精心设计案例不是简单的小例子,而是精心设计的,具有完整内容的单元,往往覆盖多的,具有完整内容的单元,往往覆盖多个知识点。个知识点。70Page 70字符数组定义和引用定义和引用例:例:static char str8=112,114,111,103,114,97,109,0;static char str8=p,r,o,g,r,a,m,0;static char str8=program;static char str=program; 字符串字符串- 字符串常量,例如:字符串常量,例如:chinachina- 没有字符串变量,用字符数组来
29、存放字符串没有字符串变量,用字符数组来存放字符串- 字符串以字符串以00为结束标志为结束标志 字符数组的初始化字符数组的初始化71输出一个字符串输出一个字符串main() static char c10=I,a,m,a,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n);运行结果:运行结果: I am a boy72案例案例1. 凯撒密码凯撒密码问题背景:问题背景:史上最早的一种加密系统是由史上最早的一种加密系统是由Julius Caesar发明的:若需要加密的字母是字母表中的第发明的:若需要加密的字母是字母表中的第N个字个字母,那么就
30、用第母,那么就用第(N+K)个字母来代替它,其中个字母来代替它,其中K是是某个固定的整数(凯撒使用的是某个固定的整数(凯撒使用的是K=3)。通常把空)。通常把空格字符看成是第格字符看成是第0个字符,即总共有个字符,即总共有27个字符。例个字符。例如,若如,若K=1,则消息,则消息“ATTACK AT DAWN”就会就会被加密为被加密为“BUUBDLABUAEBXO”。73问题描述:问题描述:读入一部词典和加密后的文字,程序将读入一部词典和加密后的文字,程序将确定所使用的确定所使用的K值,并显示经过解密后的原值,并显示经过解密后的原始内容。原始内容仅包含字母和空格。始内容。原始内容仅包含字母和空
31、格。输入:词典不超过输入:词典不超过100行,每行是一个大行,每行是一个大写单词,长度不超过写单词,长度不超过20,词典以,词典以#结尾。加结尾。加密后的文字只有一行,密后的文字只有一行,长度不超过长度不超过250。注:。注:词典不一定包含原文所有单词,且无序。词典不一定包含原文所有单词,且无序。741. K=1, 2, 3, 26,逐一进行测试;,逐一进行测试;2. 根据根据K值,对密文进行解密,得到一行文值,对密文进行解密,得到一行文字,即字,即“单词单词”序列;序列;3. 将这些将这些“单词单词”与词典进行比较,统计与词典进行比较,统计出有效单词的个数;出有效单词的个数;4. 选择有效单
32、词数最多的。选择有效单词数最多的。算法思路算法思路751. 对密文进行解密,得到对密文进行解密,得到“单词单词”序列;序列;2. 单词抽取;单词抽取;3. 在词典中查找特定的单词;在词典中查找特定的单词;4. 有效单词的统计;有效单词的统计;5. 有效单词个数的最大值。有效单词个数的最大值。关键技术关键技术76案例要生动有趣,而且要富有挑战案例要生动有趣,而且要富有挑战性,能吸引人。性,能吸引人。77案例案例2. 猜数字游戏猜数字游戏问题描述:问题描述:电脑随机产生一个数字不重复的四位数电脑随机产生一个数字不重复的四位数,由玩家来猜,每猜一次,电脑将显示形如由玩家来猜,每猜一次,电脑将显示形如
33、“*A*B”的结果,的结果,A代表位置正确数字也正代表位置正确数字也正确,确,B代表数字正确但位置不正确代表数字正确但位置不正确,例如:,例如:2A2B。总共。总共有有10次机会次机会。7879案例设计案例设计J对于计算机程序设计课程的案例,对于计算机程序设计课程的案例,包括以下内容:问题描述、问题分包括以下内容:问题描述、问题分析、算法设计、编码和测试。析、算法设计、编码和测试。J以以“猜数字游戏猜数字游戏”为例为例80问题描述:问题描述:电脑随机产生一个数字不重复的四位数电脑随机产生一个数字不重复的四位数,由玩家来猜,每猜一次,电脑将显示形如由玩家来猜,每猜一次,电脑将显示形如“*A*B”
34、的结果,的结果,A代表位置正确数字也正代表位置正确数字也正确,确,B代表数字正确但位置不正确代表数字正确但位置不正确,例如:,例如:2A2B。总共。总共有有10次机会次机会。811. 如何随机产生一个数字不重复的四位数?如何随机产生一个数字不重复的四位数?2. 对于玩家猜测的一个四位数,如何计算对于玩家猜测的一个四位数,如何计算相应的相应的A和和B的数量?的数量?3. 如何实现如何实现“总共有十次机会总共有十次机会”?问题分析问题分析82 在在ANSI CANSI C中生成随机数中生成随机数1 1、要产生随机数需要在程序开头加入头文件、要产生随机数需要在程序开头加入头文件 #include #
35、include 2 2、rand()rand()是产生随机数的函数,是产生随机数的函数, int rand(void);int rand(void); 它可生成它可生成0 0至至RAND_MAXRAND_MAX的整数,的整数,RAND_MAX =RAND_MAX = 0 x7FFF = 32767 0 x7FFF = 3276783已知目标数和猜测数,如何计算相应的已知目标数和猜测数,如何计算相应的A A和和B B的数量?的数量? 假设目标数为假设目标数为T1 T2 T3 T4T1 T2 T3 T4, 猜测数为猜测数为G1 G2 G3 G4G1 G2 G3 G4; 一种方法:一种方法:T Ti
36、 i和和G Gi i相比,相同则相比,相同则A A加加1 1;不相;不相同则把同则把T Ti i和剩余三个猜测位相比,若有相同和剩余三个猜测位相比,若有相同者,则者,则B B加加1 1。841. 随机产生一个数字不重复的四位数,将它拆随机产生一个数字不重复的四位数,将它拆分为四位数字分为四位数字T1 T2 T3 T4;2. 让用户输入一个数字不重复的四位数,将它让用户输入一个数字不重复的四位数,将它拆分为四位数字拆分为四位数字G1 G2 G3 G4;3. 计算相应的计算相应的A和和B的数量;的数量;4. 如果结果为如果结果为4A0B,则成功;否则,将猜测的,则成功;否则,将猜测的次数加次数加1
37、,如果不超过,如果不超过10,则转第,则转第2步;否则步;否则猜测失败。猜测失败。算法思路算法思路85编码与测试编码与测试略略867)教案设计:启发式教学)教案设计:启发式教学J教学的目的是让学生获得知识、提教学的目的是让学生获得知识、提高能力,而要做到这一点,前提是高能力,而要做到这一点,前提是学生的学生的参与参与。而学生的参与程度取。而学生的参与程度取决于各种教学设计,如启发式教学。决于各种教学设计,如启发式教学。J启发式教学的最高境界是:教师尚启发式教学的最高境界是:教师尚未细述,而学生已经给出了答案。未细述,而学生已经给出了答案。87 例例1 1:“存储管理存储管理”如何实现多道存储管
38、理如何实现多道存储管理?n内存的分配内存的分配n内存的回收内存的回收n内存的管理(数据结构)内存的管理(数据结构)88 例例2 2:“变量的定义与使用变量的定义与使用”why变量?变量?茄子茄子750750克、肉片克、肉片5050克、克、葱姜蒜葱姜蒜5050克、酱油、盐、克、酱油、盐、糖、鸡粉适量,水淀粉糖、鸡粉适量,水淀粉适量。适量。有何共同点?有何共同点?89 例例3 3:“数据文件格式解析数据文件格式解析”该案例用于复习以下内容该案例用于复习以下内容n二进制、十六进制二进制、十六进制n整数编码整数编码n实数编码实数编码90问题描述:问题描述:1. K线数据线数据(结束时间、开盘价、最高价
39、、最低(结束时间、开盘价、最高价、最低价、收盘价、成交金额、成交量等)价、收盘价、成交金额、成交量等)2. 一只股票的所有一只股票的所有K线数据保存在同一个文件当线数据保存在同一个文件当中;中;3. 已知一个数据文件和所有的已知一个数据文件和所有的K线信息,要求解线信息,要求解析数据文件的格式(文件头的长度、记录的长析数据文件的格式(文件头的长度、记录的长度、每个字段的含义)。度、每个字段的含义)。文件样例文件样例9192基本思路:基本思路:1. 切分记录。数据文件的大体结构为:文件头、切分记录。数据文件的大体结构为:文件头、记录记录1、记录、记录2、记录、记录3、,但文件头的长度不但文件头的
40、长度不知,记录的长度不知知,记录的长度不知;2. 找到找到某个某个记录所对应的交易信息;记录所对应的交易信息;3. 将两者进行比较,寻找规律。将两者进行比较,寻找规律。936F 45 CA 71 48 4E 00 B0 52 4E 00 B0 2A 4E 00 B0 3E 4E 00 B0 9D 90 76 04 5E 0A 39 00 4C BC 16 00BE 09 1F 00 3C 00 00 00结束时间:结束时间:2009-9-8下午下午14:55,开盘,开盘20.04,最高,最高20.05,最低,最低20.01收盘收盘20.03,金额,金额7488万,成交量万,成交量37382手。
41、手。9C 45 CA 71 F0 14 00 B0 0E 15 00 B0 E6 14 00 B0 0E 15 00 B0 6A 78 02 95 DF D5 17 00 25 08 0E 00BA CD 09 00 31 00 00 00结束时间:结束时间:2009-9-8下午下午15:00,开盘,开盘5.36,最高,最高5.39,最低,最低5.35收盘收盘5.39,金额,金额840万,成交量万,成交量15621手。手。记录样例记录样例94谜底揭晓谜底揭晓 时间:时间:4个字节,格式:个字节,格式:YYMMDDHHMM,年,年份用份用2位表示,要减去位表示,要减去1990; 开盘价、最高价、
42、最低价、收盘价、金额各占开盘价、最高价、最低价、收盘价、金额各占4个字节,低个字节,低28位为有效数字,高位为有效数字,高4位为指数,大位为指数,大于于8则进行除法;小于则进行除法;小于8则进行乘法;则进行乘法; 成交量:成交量:4个字节,整数;个字节,整数; 其他:不知其他:不知95样例样例1616进制编码数据进制编码数据 有效数字有效数字指数指数解码数据解码数据9D 90 76 040 x476909D0 x00 74879133C7 DE 9F 110 x19FDEC70 x01 2725447106A 78 02 950 x502786A0 x09 8404797.84F 42 68
43、A60 x668424F0 x0A 1074960.1532 0F 00 B00 x0000F320 x0B 3.89968)教案设计:创新教学方法)教案设计:创新教学方法J结合课程的内容和特点,善于发现结合课程的内容和特点,善于发现和总结规律,提出新的、适合于该和总结规律,提出新的、适合于该类课程的教学方法。类课程的教学方法。J以以“计算机程序设计基础计算机程序设计基础”为例。为例。97问题描述问题描述源代码源代码 算法算法1. 大量的编程案例大量的编程案例2. 编程模式编程模式3. 在线训练系统在线训练系统教学方法教学方法98编程模式编程模式J定义定义:一些经常使用的算法片段。:一些经常使
44、用的算法片段。J累加模式:计算一组数据之和;累加模式:计算一组数据之和;J最大值模式:寻找一组数据当中的最大值模式:寻找一组数据当中的最大值最大值/最小值。最小值。99脆弱的输入脆弱的输入方式方式编程实现:编程实现:对用户的输对用户的输入进行合法入进行合法性检查。性检查。高斯的难题高斯的难题编程实现:编程实现:1+2+3+ + 100编程实现:编程实现:输入一组整输入一组整数,统计其数,统计其中正数和负中正数和负数的个数。数的个数。当输入为当输入为0时结束。时结束。累加模式累加模式 永真模式永真模式 ? ?对其他专业的启发?对其他专业的启发?100在线训练系统在线训练系统J即使算法思路正确,也
45、不一定能编即使算法思路正确,也不一定能编写出相应的代码并正确运行。写出相应的代码并正确运行。J“机考机考”、“机练机练”,平时作业和,平时作业和期末考试均为编程题,学生提交的期末考试均为编程题,学生提交的是源代码;是源代码;J为了便于学生自习,开发了一个功为了便于学生自习,开发了一个功能强大的在线训练系统。能强大的在线训练系统。1011021039)教案设计:内容要生动有趣)教案设计:内容要生动有趣J听课是一个听课是一个体力活体力活,时间长了容易,时间长了容易疲倦;疲倦;J生动有趣的内容容易留下深刻的印生动有趣的内容容易留下深刻的印象,且记得牢。象,且记得牢。104方法一方法一J用生活中的例子
46、来类比,把单调抽用生活中的例子来类比,把单调抽象的内容变成具体形象的内容。象的内容变成具体形象的内容。105过山车有何特点?过山车有何特点?1. 若干节车厢组成若干节车厢组成2. 物是人非物是人非3. 有序有序4. 大小相同大小相同5. 有名字有名字(风神、飞天凤凰风神、飞天凤凰) 例例1 1:一维数组的定义和引用:一维数组的定义和引用106什么是数组?什么是数组?定义:一组有序、有名、具有相同数据类型定义:一组有序、有名、具有相同数据类型 的变量。的变量。 有名:数组有一个名字,如有名:数组有一个名字,如RollerCoaster; 有序:数组元素连续存放,有序:数组元素连续存放,0, 1,
47、 2, ; 同类型:长度相同,如同类型:长度相同,如int, double, char; 变量:数组元素的值可变。变量:数组元素的值可变。107 例例2 2:二进制:二进制这是什么?这是什么?是某种可爱是某种可爱的动物?的动物?或仅仅是一或仅仅是一些些ASCIIASCII字符字符的组合?的组合?108在计算机科学中,基本信息单元是在计算机科学中,基本信息单元是bit(bit(位位) )! 每个每个bitbit是一个二进制数:是一个二进制数:0 0或或1 1; 任何信息都可用若干个任何信息都可用若干个bitbit所组成的位流来表示所组成的位流来表示(即编码:整数、实数、字符等);(即编码:整数、
48、实数、字符等);(why bit?)(why bit?) 二进制的二进制的bitbit容易用计算机硬件来表示和实现,如容易用计算机硬件来表示和实现,如电路的接通与断开、电压的高与低,等等;电路的接通与断开、电压的高与低,等等; 但对于人来说,二进制的位流是一个但对于人来说,二进制的位流是一个“梦魇梦魇”,因此需要把数据的外在含义和内部实现区别因此需要把数据的外在含义和内部实现区别开来,即程序员的角度和计算机的角度。开来,即程序员的角度和计算机的角度。1090 1 0 0 0 0 1 10 1 0 1 0 0 1 10 1 0 0 0 1 0 10 0 1 1 0 0 0 10 0 0 0 0
49、0 1 0CSE12计算机计算机程序员程序员110 例例3 3:虚拟存储管理:虚拟存储管理111方法二方法二J风趣幽默、寓教于乐。风趣幽默、寓教于乐。112例例1 1:逻辑运算符和逻辑表达式:逻辑运算符和逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来用逻辑运算符将关系表达式或逻辑量连接起来的式子,就是逻辑表达式。的式子,就是逻辑表达式。C 语言提供了语言提供了 3 种逻辑运算符,包括:种逻辑运算符,包括:(1) &(逻辑与,双目运算符)(逻辑与,双目运算符)(2) | (逻辑或,双目运算符)(逻辑或,双目运算符)(3) !(逻辑非,单目运算符)(逻辑非,单目运算符)113 a b
50、真真假假真真真真假假假假假假假假a & ba | b假假真真假假真真真真真真假假真真 a b真真假假!a假假真真a!a114如何用逻辑表达式描述:报纸上的如何用逻辑表达式描述:报纸上的征婚广告,女征男,年龄大于征婚广告,女征男,年龄大于30,有车、有房、年薪大于有车、有房、年薪大于10万。万。115int Age, NumOfCars, NumOfHouses;double Salary;if(Age = 30) & (NumOfCars 0) & (NumOfHouses 0) & (Salary 100000) arrange a meeting.116例例
51、2 2:函数的参数传递:函数的参数传递 实参:在调用一个函数时,所指定的参数称为实参:在调用一个函数时,所指定的参数称为“实际参数实际参数”,可以是常量、变量或表达式;,可以是常量、变量或表达式; 形参:在定义一个函数时,所指定的参数称为形参:在定义一个函数时,所指定的参数称为“形式参数形式参数”,必须是一个变量。,必须是一个变量。调用者调用者函数函数实参实参形参形参返回值返回值接收变量接收变量1. 匹配?匹配?2. 个数?个数?3. 方向?方向?117void main( ) int salary, nCars, nHouses; salary = 3000; nCars = 0; nHou
52、ses = 0; DayDreaming(salary, nCars, nHouses); printf(%d %d %d, salary, nCars, nHouses);void DayDreaming(int salary, int cars, int houses) salary = salary * 3; cars += 2; houses +;118例例3 3:递归函数:递归函数从前有座山,山上有座庙,庙里有一个老和尚从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,老和尚正在给小和尚讲故事。和一个小和尚,老和尚正在给小和尚讲故事。讲的是什么故事呢?他说,从前讲的是什么故事呢?
53、他说,从前119void tell_story( ) int old_monk, young_monk; tell_story ( ); / 递归调用递归调用?120void tell_story( ) static int old_monk, young_monk; old_monk = old_monk + 1; / 年龄大了一岁年龄大了一岁 young_monk = young_monk + 1; if(old_monk y) printf(“最大值是最大值是 %d”, x);if (temperature 38) printf(You have a fever. n); printf(
54、Go see the doctor n);有点问题吧?有点问题吧?130计算绝对值计算绝对值问题描述:问题描述: 计算计算x的绝对值的绝对值|x|,把结果保存在,把结果保存在abs变量中。变量中。 方案方案1if(x = 0) abs = x;if(x 0 ) abs = -x; 方案方案2abs = x;if(x = 0) abs = x;else abs = -x;哪一个正确?哪一个正确?131void main( ) int homer, *lisa; int *bart3; lisa = &homer; bart0 = lisa; *(bart + 2) = malloc(2*
55、sizeof(int); Test(lisa, &bart1);void Test(int *marge, int *maggie) *maggie+ = marge; *maggie = 1;112ff6c12ff7012ff7412ff7812ff7c43043012ff18marge(int *)12ff1cmaggie(int *)bart0(int *)bart1(int *)bart2(int *)lisa(int *)homer(int ) 0012ff7c 0012ff7c 00430430 0012ff7c 0012ff70 0012ff7c 0012ff74 例例3
56、 3:多级指针:多级指针132例例4 4:回文问题:回文问题问题描述:问题描述:回文是指具有如下特性的一个短语:该回文是指具有如下特性的一个短语:该短语顺过来读和反过来读所得到的字母序列短语顺过来读和反过来读所得到的字母序列是完全相同的。例如:是完全相同的。例如:“level” 就是一个回就是一个回文。编写一个程序,输入一个短语,然后判文。编写一个程序,输入一个短语,然后判断它是否是回文。断它是否是回文。133回文判断用首尾比较算法,将字符串的第回文判断用首尾比较算法,将字符串的第一个字符与最后一个字符进行比较,第二个一个字符与最后一个字符进行比较,第二个字符和倒数第二个字符进行比较,字符和倒
57、数第二个字符进行比较,.。若出。若出现不相等的情形,则立即退出。现不相等的情形,则立即退出。算法思路算法思路134level0str 0 1 2 3 4 5level1. str0 str4:l l;2. str1 str3:e e;3. str2 str24. 完成!完成!若字符串长度若字符串长度为为N,则最多,则最多需要需要 次次比较即可。比较即可。N / 2135#include #include void main( ) char str80, flag; int i, j; printf(输入一个字符串:输入一个字符串:); scanf(%s, str); i = 0; j = st
58、rlen(str)-1; flag = Y; for(; i j; i+, j-) if(stri != strj) flag = N; break; if(flag = Y) printf(%s是一个回文是一个回文n, str); else printf(%s不是一个回文不是一个回文n, str);如何测试本如何测试本程序?程序?汉字回文?汉字回文?136测试数据:测试数据:输入一个字符串:输入一个字符串:aa是一个回文是一个回文输入一个字符串:输入一个字符串:aaaa是一个回文是一个回文输入一个字符串:输入一个字符串:abab不是一个回文不是一个回文输入一个字符串:输入一个字符串:abaa
59、ba是一个回文是一个回文输入一个字符串:输入一个字符串:abbabb不是一个回文不是一个回文输入一个字符串:输入一个字符串:abccbaabccba是一个回文是一个回文输入一个字符串:输入一个字符串:abcdefghijklabcdefghijkl不是一个回文不是一个回文1373)辅助工具的使用)辅助工具的使用J根据所授课程的特点和内容,选择根据所授课程的特点和内容,选择合适的辅助工具,其目的是以直观、合适的辅助工具,其目的是以直观、形象的形式展示相应的内容形象的形式展示相应的内容。138分而治之(分而治之(divide-and-conquer)的算法)的算法设计思想:设计思想:1. Divi
60、de:把问题划分为若干个子问题;:把问题划分为若干个子问题;2. Conquer:以同样的方式分别去处理各:以同样的方式分别去处理各个子问题;个子问题;3. Combine:把各个子问题的处理结果综:把各个子问题的处理结果综合起来,形成最终的处理结果。合起来,形成最终的处理结果。基于分治策略的递归算法基于分治策略的递归算法139140Visual studio141猜数字游戏猜数字游戏#include #include #include void main() int Target, T1, T2, T3, T4; int Guess, G1, G2, G3, G4; int nA, nB, NumGuess; double d; / 随机产生一个数字不重复的四位数随机产生一个数字不重复的四位数 srand(unsigned)t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游戏设计师创意策划与执行力绩效考评表
- 2025-2026学年小班松鼠教学设计
- 环保设备销售经理销售策略与市场开拓能力绩效考评表
- 2025-2026学年片段教学设计过程
- 2025-2026学年跷跷板教学设计美术
- 大数据平台建设与优化实施方案
- 4.2 细胞的能量货币ATP教学设计及反思-2023-2024学年高一上学期生物人教版必修一
- 2025-2026学年汽车氛围灯设计教学视频
- 2025-2026学年鳜鱼苗养殖教学设计
- 热疗在基础护理中的护理技术发展
- 农民工 合同模板
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 《送东阳马生序》拼音版
- 社区获得性肺炎病例讨论
- GA/T 2095-2023危险化学品道路运输通行路线规划指南
- 客户之声(VOC)收集与应用
- 变更申请单模板
- 劳动纠纷应急预案
- 容量瓶的校正技术
- 铁路建设工程风险管理技术规范
- 机动车维修竣工出厂合格证
评论
0/150
提交评论