C程序设计基础
上机实验指导书
李文杰、李桂芝、鱼涛编写
杨根兴审定
北京机械工业学院计算中心
目次
说明
怎样学习C语言
实验一 C程序集成开发环境熟悉
实验二数据的输入和输出
实验三表达式的计算
实验四选择结构语句
实验五循环结构语句
实验六数组应用(一)
实验七数组应用(二)
实验八函数及程序结构(一)
实验九函数及程序结构(二)
实验十指针的应用
说明
C程序设计同其他程序设计一样,使实践性很强的课程。除了要听好课,多看课外书外,还需大量的上机实践才能更好地理解和掌握所学到的内容。一般来说,上机和讲课时间之比应不少于1:1。但由于目前各校安排的教学时数限制,课内时间将更多的精力用于讲课上,课内安排的上机时间相对较少,学生不要因此对上机的重要性有所误解。学生应在课外再花一定的时间进行C语言的上机实践,这样才能学好该门课。
上机实验的目的有以下几个方面:
⑴验证所编写的程序的正确性。
⑵进一步理解教材和课堂授课中介绍的内容
⑶熟练地掌握C程序开发环境的使用,为今后开发大型软件打好基础。
⑷学习和掌握一般程序的调试和测试方法。
上机前应充分做好以下准备工作:
⑴复习和掌握与本次实验有关的教学内容。
⑵根据本次实验的内容,在纸上编写好准备上机调试的程序,并初步检查无误。
⑶准备好对程序进行测试的数据。
⑷对每种测试数据,给出预期的程序运行结果。
⑸预习实验步骤,对实验步骤中提出的一些问题进行思考。
上机实验后,应及时写出实验报告,实验报告应包括以下内容:
⑴实验目的和内容。
⑵程序说明,包括程序结构、各模块的算法(N-S图表示)。
⑶打印出的调试正确的源程序。
⑷打印出的程序运行记录(包括对不同测试数据的运行结果)。
⑸针对实验步骤中提出的问题,写出解决办法及对运行结果的分析。
怎样学习C语言
很多同学对学习C语言感到很难,尤其是在各高校将C语言放在大学第一学年教学时经常会考试不及格。究竟怎样才能学好C语言?这里将我对C语言的理解给大家介绍一下,
计算机语言挺枯燥的,如何提起兴趣?
首先要明确学习的目标,没有明确的学习目标就没有学习动力。给自己定一个目标,比如这次一定通过课程考试,或者这个月学习完做个东西出来等等。其次,确定了目标之后,要认真去做,多上机操作实践,遇到不懂的要多跟教师和其他同学交流,千万不能放弃。当自己编的一段小程序运行通过,或攻下一道难题,自己就会获得一种成就感,可能还会很兴奋,也就渐渐有了兴趣。最后,要把所学的知识运用到实际问题当中,这样既可以巩固所学的知识,不至于完学了就忘,还可以根据实际需要拓展知识面。这样良性循环,兴趣也会越来越浓。
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。不要总是抱着书本逐行啃,而是学习它们的例程。学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止。这一过程,就和我们学习任何其他语言比如英语和汉语一样。我们大家都有体会,我们学习一门语言,都是从最基本的语法开始,然后学习一些字和词,再来学习一些词组或句子,然后再用词组和句子组成一段话,表达一个简单的意思,最后才是写一篇文章或者是一本书,表达更复杂的思想。我们知道,在我们完成这一过程时,并不是像说得这么简单。在我们能写出一篇好的文章或者一本好书之前,我们可能需要阅读大量的其他人写的好文章或好书,有时我们还要把它们背下来;同样的,在我们写出一个好的程序或者软件前,我们也需要阅读大量的样本例程或者软件的源代码,甚至要背一些好的程序代码。
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。?
那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫?张三?的人,你该怎么办?第一种方法:直接对这10个人问:?谁叫张三?。第2种方法:你挨个去问?你是不是张三??,直到问到的这个人就是张三。第三种方法:你去挨个问一个人?你认不认识张三,指给我看?。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。
实验一 C程序集成开发环境熟悉
一、实验目的
掌握在Visual C++ 6.0集成开发环境下怎样编辑、编译、连接、执行、修改和调试C语言程序。
二、实验内容
1.进入可视化的C++ 6.0集成开发环境
⑴启动计算机,进入窗口环境操作界面。
⑵鼠标依次点击?开始?→?程序?→?Microsoft Visual Studio 6.0?
→?Microsoft Visual C++ 6.0?启动VC6.0集成开发环境。
⑶选择?文件?(File)菜单中的?新建?(New)命令, 在新建
此处输入源程序文件名
单击此处来修改文件保存位置
图1
对话框中,选择?文件?选项卡,再选择?C++ Source File?类型,按图示操作后单击对话框中的?确定?按钮。(见图1)
⑷接着就会出现如图2所示的VC界面。
⑸在编辑窗口中,输入如下内容:
#include "stdio.h"
//以上行对于本书中的例子没有给出。望同学们对于所有的
//程序都保留这样一行。
main( )
{
printf("Hello!这是我的First C程序.\n");
}
⑹选择?编译?菜单中的?编译 my_c1.cpp?命令,并在出现的对话框中选择?是(Y)?结果如图3。
图2
⑺选择?编译?菜单中的?构件my_c1.exe?命令,构建可执行程序my_c1.exe,再选择?编译?菜单中的?!执行my_c1.exe?命令。在出现的对话框中选择?是(Y)?,结果屏幕如图4所示。
编译信息窗
图4
图中的黑色窗口为运行结果窗口。按任意键就可返回编辑界面。
⑻修改上述程序,将printf行括号中的双引号去掉左边的,重复⑹,可以看到图5。其中的编译信息窗显示:
my_c1.obj - 16 error(s), 1 warning(s)
可以看到由于一个双引号的漏写,导致出现16个语法错误,而实际上的错误只有一个,这是C编译器的特点,当它遇到错误时,会做出一些判断或推测,有时这种推测判断正确,有时也会错误。了解这一特点后,希望同学们在上机时,先去修改第一个错误,一般可以在修改一个错误后立即重新编译,这
样可以快速减少错误的数目。下面请同学们用鼠标点击滚动条上的滑块,查看第一条错误信息,并用鼠标双击第一个错误信息。(图6),
图6
可以看到,C编译器将Hello理解为了标识符,而前面又没有对Hello的说明,所以认为它是未声明的标识符(undeclared identifier),这个错误在初学者的程序里非常多见,希望同学们记住它。将双引号加上再重新编译,就可恢复为无错误了。
⑼修改上述程序,在#include ?stdio.h?这一行的最左边加两个?/?,即使得这一行成为注释(显示为绿色),重复⑹,可以看到图7所示的错误。相信同学们对其中的错误说明不难理解了,C编译器说printf是未声明的标识符。原因是printf不是C语言的基本部分,它是定义在?stdio.h?中,这也就是我们为什么在前面说要在自己的程序前部加#include ?stdio.h?的原因。
再按上面的步骤(3)~
鼠标点击滚动条,查看错误信息
当前错误所在的位置指示
#include "stdio.h"
void main()
{
int a=1,b=2,c=3;
printf("Some output: %d %d %d\n",a,b,c,c);
}
①把第6行变量声明语句的第一个逗号改为分号
②把第7行printf()改为print()
③去掉第7行中的第2个双引号
④把第7行中a,b,c,c改为a,b,c
⑤去掉printf语句末尾的分号
⑥去掉用于结束的花括号
注意,在引入每一个错误并编译后,开始引入下一个错误前将上一错误再改正。
2.程序的调试手段
作为程序员编写程序,一个难以避免的工作就是对程序的调试。调试包括语法方面的,这一般通过编译就可基本解决,比如在上述图3中,细心的同学可能注意到在底部的编译信息窗中,编译报告中说:my_c1.obj - 0 error(s),
1 warning(s),意思是编译过程中没发现错误(0 error(s)),但有一个不合
规范的使用(1 warning(s))。编程序应最好是达到 0 error和0 warning,但有时无法做到如此完美,只要达到 0 error就可以了。若不能做到0 error,将不能产生机器语言程序,因而也就无法执行程序。所以同学们在调试自己的程序时,必须是做到经编译后0 error。好在编译器对发现的错误都有一个比较正确的修改意见,同学们按意见修改后一般就可消除错误,只是修改意见是英文的,同学们需有一定的专业词汇或者经过一定时间与VC++的接触,就可理解;另一类就是逻辑方面的,这类错误的消除相对麻烦。好在VC提供了非常丰富的调试手段,帮助我们分析错误,前提是程序已经没有语法错误,也就是说编译已经通过(0 error(s))。
下面我们了解一些常用的,为了便于说明,请先选择?文件?菜单的?关闭工作区?命令,再按上面的步骤(3)~(5)操作将编辑窗口的程序更换为如下程序文本:
#include "stdio.h"
void main()
{
float i;
float sum;
sum=1.0;
i=2.0;
while (i<=100)
{
sum+=1/i;
i =i+2;
}
printf("sum=%f\n",sum);
}
⑴打开调试器
首先定位光标到main函数的函数首部所在行,选?编译?→?开始调试”→“Run to cursor”,出现如下图8所示界面。在该界面中,?debug?菜单取代了?编译?菜单。?debug?菜单的主要子菜单如下图9。
Go(去) ………………连续执行程序
Restart……………不管程序运行到何处,重新从头开始执行程序
Stop Debugging……停止调试器
Step Into…………单步进入语句内执行,如函数调用、复合语句内等 Step Over…………单步越过语句执行,即一步执行完函数调用或复合
语句
Step Out……………单步从语句的执行中跳出。如从函数内跳出或从复
合语句中跳出。
Run to Cursor……程序一次执行到光标所在位臵暂停
⑵在图10左下角的小窗口中,可以观察程序中用到的变量的取值情况。如果
程序中变量很多,可在右下角的窗口中设定一些特别关心的变量,并可设定几组。例如,当选择了?step into?命令后,屏幕如下图10所示,在重点变量观察窗的Name列输入i,然后单步执行程序,观察i的值Value变化情况。有关这方面的更多内容,请参阅Microsoft Visual C++ 6.0手册。
三、对上述实验进行总结,将自己在这次实验中所学到的C语言程序上机操作方法及步骤写在实验报告中。
图8
图10
实验二顺序结构程序设计
一、实验目的
1.掌握scanf和printf的主要用法。
2.掌握常用转换控制符的用法。
3.掌握赋值语句的用法。
4.掌握算术运算符的运算规律。
二、实验内容
1.编辑如下程序并运行,记录程序的输出结果,体会格式输出的使用。#include "stdio.h"
void main( )
{
printf("%d\n",42);
printf("%5d\n",42);
printf("%f\n",123.45);
printf("%12f\n",123.45);
printf("%e\n",123.45);
printf("%13e\n",123.45);
printf("%g\n",123.45);
printf("%8g\n",123.45);
printf("%.5d\n",42);
printf("%.0d\n",42);
printf("%8.3f\n",123.45);
printf("%8.1f\n",123.55);
printf("%8.0f\n",123.55);
printf("%g\n",123.56789);
}
2.编辑如下的程序,并上机运行3次,在每次运行提供输入数据时分别采用数据之间插入空格、每输入一个数据就按回车键、数据之间用TAB键分割,看结果有什么不同?
#include "stdio.h"
void main( )
{
int x,y,t;
printf("Enter x & y:\n");
scanf("%d%d",&x,&y);
printf("x=%d y=%d\n",x,y);
t=x;
x=y;
y=t;
printf("x=%d y=%d\n",x,y);
}
3.改错题。下列程序多处有错,请通过上机改正。使之符合下面的要求。#include "stdio.h"
void main( )
{
double a,b,c,s,v;
printf(Input a,b,c:\n);
scanf("%d%d%d",a,b,c);
s=a*b;
v=a*b*c;
printf("a=%d b=%d c=%d\n",a,b,c);
printf("s=%f\n",s, "v=%d\n",v);
}
当本程序运行时,要求按如下方式显示和输入:
Input a,b,c:2.0 2.0 3.0 (此处的2.0 2.0 3.0为用户输入的)a=2.000000 b=2.000000 c=3.000000
s=4.000000 v=12.000000
4. 编辑如下程序:
/* 字符类型定义及使用*/
#include "stdio.h"
void main()
{
char c1, c2;
c1 = 'a';
c2 = ‘b’;
printf (?%c %c\n?, c1, c2);
}
(1运行此程序,记录运行结果。
(2在最后增加一个语句:printf(?%d%d\n?,c1,c2);再运行,并记录分析结果。(3再将第5行char c1,c2;改为:int c1,c2;再使之运行,并观察记录结果。
(4再将第6、7行改为:
c1 = a; /* 不用单引号*/
c2 = b;
再运行,记录分析其运行结果。
(5再将第6、7行改为:
c1 = ?a?; /* 用双引号*/
c2 = ?b?;
再运行,记录分析其运行结果。
(6再将第6、7行改为:
c1 = 300; /* 用大于255的整数*/
c2 = 400;
再运行,记录分析其运行结果。
5. 编辑如下程序:
/* 自增自减运算符*/
#include "stdio.h"
void main()
{
int i,j,m,n;
i = 8;
j = 10;
m = ++i;
n = j++;
printf(“%d,%d,%d,%d”, i, j, m, n);
}
(1)运行程序,记录i、j、m、n 各变量的值,分别作以下改动并运行。
(2)将第7、8行改为下面所示,再运行。
m = i++;
n = ++j;
记录i、j、m、n 各变量的值
(3)在(1)的基础上,将printf 语句改为:
printf(“%d,%d”, ++i, ++j);
运行程序,记录i、j、m、n 各变量的值。
(4)再将printf 语句改为:
printf(“%d,%d,%d,%d”, i, j, i++, j++);
运行程序,记录i、j、m、n 各变量的值。
(5)再修改程序如下,运行程序记录i、j、m、n 各变量的值。
#include "stdio.h"
void main()
{
int i, j, m=0, n=0;
i = 8;
j = 10;
m+= i++; n-= --j;
printf(“i=%d,j=%d,m=%d,n=%d”, i, j, m, n);
}
6. 编程题。编写程序,完成对于任意输入的两个整数,求出它们的商和余数
并进行输出。
三、对上述实验内容进行总结,写出实验报告。
实验三表达式的计算
一、实验目的
1.掌握算术表达式、逗号表达式、赋值表达式的计算。
2.特别注意运算符%、/(整数的相除)、++和--运算的规律。
二、实验内容
1.已知三角形的三边a,b,c,求三角形面积的公式为:
area=sqrt(s(s-a)(s-b)(s-c))
其中:s=(a+b+c)/2,sqrt(x)表示x的平方根。要求编一程序,对任意输入的a,b,c值,计算并输出三角形的面积范围。
提示:sqrt是C的标准库函数,使用该函数应将库文件?math.h?包含到源文件中。另外注意三角形三边的基本关系。
2.对以下程序进行分析,看程序的输出结果应是什么,然后上机运行该程序看实际结果与你分析的有无不同,找出原因。
#include "stdio.h"
void main( )
{
int x=1,y=2,t; float m;
t=x/y; m=x/y;
printf("%d \t%8.3f\n",t,m);
t=x/(float)y;m= x/(float)y;
printf("%d \t%8.3f\n",t,m);
t=(float)x/y;m=(float)x/y;
printf("%d \t%8.3f\n",t,m);
}
3.编辑以下程序:对程序进行分析,看程序的输出结果在下列各种情况下应是什么,然后上机运行该程序看实际结果(写在实验报告里)与你分析的有无不同,找出原因。
#include "stdio.h"
void main( )
{
int x,y,t;
double a;
float b;
int c;
scanf(“%d%d”,&x,&y);
c=b=a=20/3;
t=(x%y,x/y);
printf("%d %d\n",x--,--y);
printf("%d\n",t);
printf("%d\n",(x=5*6,x*4,x+5));
printf("%d %f %f\n",c,b,a);
}
⑴程序运行时,在键盘上输入20 3
⑵程序运行时,在键盘上输入15 5
三、对上述实验进行总结,写出实验报告,把你通过本实验掌握的内容整理出来。
实验四选择结构程序设计(一)
一、实验目的
1. 掌握关系表达式和逻辑表达式的使用。
2. 熟悉选择结构程序设计。
3. 熟练使用if语句进行程序设计。
4. 使用switch语句实现多分支选择结构。
二、实验内容
1.运行以下程序,说明表达式值1和表达式值2的不同。
#include "stdio.h"
void main()
{
int a=3,b=2,c=1,d=0;
printf("表达式1=%d\n",d==a>b+c);
printf("表达式2=%d\n",d=a>b+c);
2.以下程序的功能是:从键盘输入一个字符型数据,若输入一个数字字符(…0?-…9?),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。
#include "stdio.h"
void main( )
{
char c;
scanf("%c",&c);
if('0'<=c<='9') /*条件表达式*/
{ c=c-'0';
printf("c=%d\n",c);
}
else printf("data error!\n");
}
实验步骤:
⑴上机调试以上程序;
⑵输入…0?—…9?之间的任何字符,验证输出结果是否和程序功能相符合;
⑶输入…0?—…9?之外的任何字符,例如,输入字母?a?,验证输出结果是否和程序功能相符合;
⑷将条件表达式if('0'<=c<='9')改为if('0'<=c&&c<='9'),重复2、3步骤。分析、比较以上的输出结果,总结字符变量c的取值在‘0’-‘9’之间在C语言编程中的正确描述。
3.if语句的第一种形式为基本形式 if(表达式) 语句;其语义是:如果表达式的值非零(为真),则执行其后的语句,否则不执行该语句。
编程:输入两个整数,输出其中的大数。
提示:输入两个数a,b。把a先赋予变量max,再用if语句判别max和b 的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max 的值。
4.if语句的第二种形式为if-else形式
if(表达式) 语句1;
else 语句2;
其语义是:如果表达式的值非零(为真),则执行语句1,否则执行语句2 。程序填空题。下列程序用于完成对输入的整数判断它是奇数还是偶数,并给出相应的提示。试完成它缺少的部分,并上机验证。
#include "stdio.h"
void main( )
{
int x;
scanf("%d",&x);
if( ) printf("x=%d is Even\n",x);
else printf("x=%d is Odd\n",x);
编程:输入两个整数,输出其中的大数。
提示:改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。
5.if语句的第三种形式为if-else-if形式(嵌套的if)
当有多个分支选择时,可采用if-else-if语句,其一般形式为:
if(表达式1) 语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;…else if(表达式m) 语句m;
else 语句n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n 。然后继续执行后续程序。
编程:要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。这是一个多分支选择的问题,用if-else-if语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为“g”,输出显示它为小写字符。在嵌套中要特别注意if和else的配对问题。为了避免二义性,C语言规定,else 总是与它前面最近的if配对。
6.分析以下程序的运行结果并上机调试。
程序1:
#include "stdio.h"
void main()
{
int a=3,b=4,c=5,d=0;
if(a>b) d=a;
else
if(c>b) d=c;
else d=b;
printf("d=%d\n",d);
}
程序2:
#include "stdio.h"
void main()
{
int a=3,b=4,c=5,d=0;
if(a>b)
if(c>b) d=c;
else d=b;
else d=a;
printf("d=%d\n",d);
程序3:
#include "stdio.h"
void main()
{
int a=3,b=4,c=5,d=0;
if(a>b)
if(c>b) d=c;
else d=b;
printf("d=%d\n",d);
}
程序4:
#include "stdio.h"
void main()
{
int a=3,b=4,c=5,d=0;
if(a>b)
{if(c>b) d=c;}
else d=b;
printf("d=%d\n",d);
}
编程:比较键盘依次输入的两个数a和b的大小关系,并根据大小关系分别输出1(若a>b)、0(若a=b)、-1(若a
7.条件运算符和条件表达式
由条件运算符组成条件表达式的一般形式为:
表达式1? 表达式2:表达式3
其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。用条件表达式对4中要求的输出两个数中的大数的程序重新编程。
8.switch语句
C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:switch(表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…
case 常量表达式n: 语句n;
default : 语句n+1;
}
在switch语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出
整个switch 语句。这是与前面介绍的if语句完全不同的,应特别注意。
程序分析题。分析以下程序,对分析的结果上机检验。
#include "stdio.h"
void main( )
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;break;
case 1: b++;break;
} //abc
case 2:
a++;b++;break;
}
printf("a=%d, b=%d\n",a,b);
}
在程序中的//abc前面,}后面添加一个break; 再次运行该程序,程序结果有何变化?在实验报告中对结果作出解释。
三、对上述实验进行总结,写出实验报告,把你通过本实验掌握的内容整理出来。
实验五选择结构程序设计(二)
一、实验目的
进一步掌握选择结构程序设计,熟练运用选择语句编写程序,提高调试和修改程序的能力。
二、实验内容
1.输入三个整数,输出最大数和最小数。
分析:首先比较输入的a,b的大小,并把大数装入max,小数装入min中,然后再与c比较,若max小于c,则把c赋予max;如果c小于min,则把c赋予min。因此max内总是最大数,而min内总是最小数。最后输出max和min的值即可。
2.有一函数:
y=
x x<1
2x-1 1= 3x-11 x>=10 用scanf函数输入x的值(分别为x<1,1—10,>=10三种情况),求y值。 分析:y是一个分段表达式。要根据x的不同区间来计算y的值。所以应使 用if语句。 3.编写程序,输入三角形三边 a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。实验步骤与要求: (1) 输入一组数据3,4,8,观察程序运行结果,并与实验二中程序2做比较 (2) 另外再输入几组数据进行测试: 3,4,5 3,3,3 3,3,5 (3)如果程序有误,可采用“单步跟踪执行”的调试方法,确定错误的出处。 4.输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E 方法一:(用if语句的嵌套) 分析:由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。 实验《用打点计时器测速度》教学设计 一、教材分析 1.本节新课位于高中物理必修一第一章第四节,重点介绍打点计时器这一高中重要的计时仪器,计时的同时还能记录物体的运动情况。 2.平均速度和瞬时速度是本节的难点,教材用极限的思想,从平均速度过渡到瞬时速度。 3.将过去教材中“用平滑曲线把点连起来”改为“用一条平滑曲线来拟合坐标系中描出的点”,即将验证性实验改为探究性实验,思路不一样、逻辑线索不一样。 二、学生分析 1.原有认知发展分析:在初中阶段,学生所做的几乎都是定性或半定量的实验,而且实验处理的方法、手段与高中相比也大不相同,本次实验对学生来说还是第一次,不管是在理解上,还是在操作上,难度可能都非常大。 2.原有知识结构分析:通过前几节的学习,学生对速度的概念有了较为深刻的认识,但对速度的计算还只是停留在理论上,现在要通过实验测量并处理纸带上的信息,可能还是难题。 3.非认知因素分析:学生实验的积极性比较高涨,探索精神比较强,对物理探究保持着浓厚的兴趣。 三、教学目标 大的方面来看,教材上明确指出中学生做实验,出于以下几个目的: 1.经历科学过程,体会科学方法,树立科学的价值观。 2.更加热爱科学,体验科学工作的乐趣。 3.学习科学知识,提高操作技能。 就本节实验课而言,我们需要完成以下教学目标: (一)知识与技能 1.了解两种打点计时器的结构和工作原理。 2.会安装并使用打点计时器。 3.理解根据纸带测量速度的原理并测量瞬时速度。 4.明确速度—时间图象的意义,描点法画图象的方法,并画出该实验中的速度—时间图象。(二)过程与方法 1.通过学生自己看打点计时器的说明书,培养学生独立学习的能力。 2.通过对纸带的处理过程培养学生获取信息、处理信息的能力,体会处理问题的方法,领悟如何间接测一些不能直接测量的物理量的方法。 3.通过画速度—时间图象培养学生用图象法处理数据的能力,体验数学工具在物理发展中的作用。 4、体验实验中理性思维的重要,既要动手,更要动脑。 (三)情感、态度与价值观 1.感觉打点计时器的巧妙设计思路,体会物理原理在解决实际问题中的指导作用,增强将物理知识应用于生活实际的意识。 2.经历实验过程,体验科学实验过程的艰辛与喜悦,并乐于探索自然界的奥妙。 3.培养学生敢于创新和实事的科学态度和科学精神。 四、教学环境 五、信息技术应用思路 使用PPT课件辅助教学,提高课堂效率,提升直观认识,拓展课堂容量。录制播放学生视频,突出学生主体地位,增加学生参与意识,培养学生实验兴趣和穿新能力。教学中展示数字传感器,拓展学生见识,提高学生兴趣。依托媒体教育技术手段,培养学生的综合能力。 1.了解电磁打点计时器和电火花打点计时器的基本构成,知道打点计时器的计时原理,并学会安装并使用打点计时器。 2.学会根据纸带上的点分析速度的变化情况,并学会测定平均速度和测量瞬时速度。 3.明确速度—时间图象的意义,描点法画图象的方法,并画出实验中的速度—时间图象。 4.通过对纸带的处理过程培养学生获取信息、处理信息的能力,体会处理问题的方法,领悟如何间接测一些不能直接测量的物理量的方法。 5.通过画速度—时间图象培养学生用图象法处理数据的能力,体验数学工具在物理发展中的作用。 二、教学重点与难点 重点:1.打点计时器的使用。 2.由纸带计算物体运动的瞬时速度。 3.画物体的速度—时间图象。 难点:1.对纸带数据的处理。 2.画图象的方法。 三、教学方法 实验探究式教学方法 四、教学设计 (一)新课内容 1.打点计时器的认识 先让学生阅读教材,然后老师提出问题,引导学生回答: (1)电磁打点计时器使用的是直流电还是交流电?其工作电压为多少? (2)我国交流电的频率为50Hz,使用这种电源时,每隔多长时间打一个点,即相邻两个点之间的时间间隔是多少? (3)打点计时器打出的纸带可以记录某段时间内的位移,能不能记录时间? (4)说出电磁打点计时器的构造?工作原理?如图1—4—1所示。 (5)复写纸放在纸带上边还是下边? (6)解释电火花计时器的工作原理?如图1—4—2所示,它与电磁打点计时器相比,哪一种误差小?原因是什么? 2.练习使用打点计时器 指导学生动手练习使用打点计时器,要让学生按步骤有序操作,并打出几根纸带。 选择一条点迹清晰的纸带,如图1—4—3所示,引导学生回答下列问题: 图1—4—3 1、如图所示是一条打计时器在纸带做匀加速直线运动时打出的纸带的一部分,其中A.B.C.D.E是其中的5个计数点,相邻两计数点间的时间间隔是,但C点处被墨水污染,无法测量,只测出AB=3.62cm,DE=5.83cm.由此可以算出,纸带运动的加速度a=________m/s2,C点与B点间距离的理论值是________cm. 2、图是用电磁打点计时器研究物体做匀变速直线运动时得到的纸带.选定的计数点a、b、c、d、e……之间具有相同的时间间隔T,……为相邻的计数点间的距离,则物体的加速度a等于 3、图示的纸带是由斜面下滑的小车通过打点计时器拉出来的,打点的时间间 隔是,现按每10个点划分纸 带,数据已标在图上,则小车 运动的加速度为_________cm/. 4、利用打点计时器测定物体做匀加速直线运动的加速度.实验中采用50Hz 低压交流电源.在打出的纸带上选定若干计数点.相邻两计数点间都有四个点不标出[] A.相邻两计数点间的时间间隔为 B.若交流的频率偏低而未被发觉,则测 得的加速度值比真实值偏小 C.若交流的频率偏低而未被发觉,则测得的加速度值比真实值偏大 D.若交流的频率偏低而未被发觉,对测量结果没有影响 5、某次用打点计时器研究匀变速运动的实验中,用打点计时器打出小车带动的纸带如图,电源的频率为50Hz.在纸带上按时间顺序取0、1、2、3、4、5共六个计数点,每相邻的两点间均有四个点未画出.用米尺量出1、2、3、4、5点到0点的距离标在了纸带下面,则小车的加速度大小为____________m/,方向____________________. 6、某打点计时器记录的一条纸带如图所示,O为第一个点,A.B.C.D……为计数点,每相邻两计数点间有4个点,打点计时器打点的频率为f,图中s1、s2、s3……都可测出. ①满足什么条件,可以确定纸带做的是匀变速直线运动 ②如果纸带的运动是匀变速运动,打C点时的速度是多大 ③纸带作匀变速运动的加速度多大 7、如图是某次实验时用打点计时器打出的一条纸带.计时器所用电源的频率为50Hz.图中A、B、C、D、E为按时间顺序所取的五个计数点,A、B、C、D、E各点与O点的距离在图中标出(单位是cm),则打B点时纸带的运动速度大小是______________m/s,纸带运动过程中的加速度大小是______________________m/. 准答案 一、多选题:本大题共1小题,第1小题为4分;共计4分。 1、◆标准答案:CD 二、实验题:本大题共40小题,从第2小题到第5小题每题2分小计8分;第6小题为3分;从第7小题到第13小题每题4分小计28分;从第14小题到第18小题每题5分小计25分;从第19小题到第29小题每题6分小计66分;第30小题为7分;从第31小题到第38小题每题8 分小计64分;第39小题为9分;第40小题为10分;第41小题为15分;共计235分。 2、★ 试题详解: , 3、◆标准答案:45.66g 4、★ 试题详解:直接测1个周期,有效数字只能是2位,测30个周期,可以提高到3位. 5、★ 试题详解: A 实验报告 一、 实验名称: 用打点计时器测速度 二、实验目的: 1. 理解打点计时器的原理,会正确使用打点计时器。 2. 掌握纸带上运动信息的处理方法。 3. 掌握用v-t 图象处理实验数据的方法。 三、实验原理:(略)见课堂讲解和实验报告册P2 四、实验器材:电火花计时器、纸带、刻度尺、电源等。 五、实验方法与过程: 1. 练习使用打点计时器: (1) 把打点计时器固定在桌子上,对照打点计时器的使 用说明书了解它的结构及作用 (2) 将打点计时器与交流电源相连接,并按照说明书将 纸带装好。 (3) 接通打点计时器的电源,用手水平地拉动纸带,打 点计时器就会在纸带上打出一行小点。随后立即关闭电源 (4) 取下纸带,给纸带编号,如:“纸带1” (5) 在“纸带1”上从某个点开始,向后数出若干个点,如果数出的个数为n ,由每两个点间的时间间隔可以计算出从打下第一个点到打下第n 个点过程中纸带运动的时间,用刻度尺测量出第一个点到第n 个点的距离。将上述数据填到“记录数据的表格中” 2. 用打点计时器测速度: (1) 重新给打点计时器装上纸带,用打点计时器再打出 两条纸带,给纸带编上号,如“纸带2”、“纸带3”。 (2) 在“纸带2”上,每隔0.1s 取一个点,在纸带上 分别标出A 、B 、C 、D 、E 、F 等点,测量出相邻点间的位移 ,记录在表二中,同时记录对应的时间 ,将上述数据记录到相应的表格中。 (3) 在“纸带3”上,选取点迹清晰、间距适当的几个 连续点,并标上0、1、2、3、4、5、6。测量出与各点相邻两点间的距离, 并计算出平均速度,把它当做打点计时器打下这个点时的瞬时速度,填入相应的表格,点0做为计时的开始,即t=0. 六、实验记录及处理 1.纸带采集 图为 一条已经编好计数点的纸带,其比例尺为1:2(图上距离/实际距离) 2.实验数据记录 表三:测纸带瞬时速度的数据记录表 坐标纸: 2变量的指针和指针变量的区别是什么。 答;一个变量的地址指出了变量的存储单元在内存中的具体位置,能对变量进行存取操作。这个变量的地址就是变量的指针。指针是一种具有特殊意义的整型数,指针不能存放在一般的整型变量中,必须存放在专门指针的变量中,这类变量就是指针变量。 3 一维数组元素的引用有哪些方式。 答;下标法、地址法、指针法 4 2维数组列地址有哪些计算方法。 答;1 根据数组元素所在的行计算出行地址,然后把行地址转换成行中首元素的地址,再根据数组元素所在的列计算数组元素的地址。 2 根据2维数组的数组元素在存储空间上按行连续存放的特点,每个数组元素的地址等于2维数组元素的首元素地址加上该数组元素相对于首元素位置的偏移量。 3把2维数组的每一行当作一个一维数组,用一维数组元素地址的计算方法计算相应的2维数组元素的地址。 第9章结构体与共用体 1 什么是链表。其中单向链表具有哪些特点。 答;链表是若干个同样类型的结构通过依次串接方式构成的一种动态数据结构。链表中的每一个结构体数据成为结点,链表可以分成单向链表和双向链表 单向链表的特点;1 链表中的结点数据可以改变的 2 结点占用的内存是动态分配内存和动态释放内存函数。 2 对单向链表的常用操作有哪些。 答;对单向链表的常用操作有建立、显示、插入,删除和查找。 3 什么是共用体。 答;共用体是一个集合体。它的各个成员的数据类型可以是不相同的,所有成员共享同一段存储空间,存储空间的大小取决存储单元最大的成员的数据类型。 4 指向结构体类型变量的指针变量引用形式有哪些。 答;有两种形式;【星号指针变量名】。成员名和指针变量名-大于号成员名。 第10章位运算及编译预处理 1 C提供的编译预处理功能有哪些。如何实现。 答;功能有三种;宏定义、文件包含和条件编译,分别用宏定义命令、文件包含命令、条件编译命令实现。 2 文件包含的基本功能是什么。 答;文件包含处理是一个源文件可以将另一个源文件的全部内容包含到本文件中来,作为本文件的一部分,这可以节省程序设计人员的重复劳动。 【3【在C语言中提供了几种什么样的位运算符。 答;-、小于小于、大于大于、 4 文件包含需要注意哪些问题 答;一个井include命令只能指定一个被包含文件,包含多个文件侧需多个井include命令;文件包含可以嵌套,即一个被包含文件中可以包含另一个被包含的文件;在井include命令中,文件名可以用双引号或尖括号括起来。 第11章文件 1 文件的结束标志有哪些。 答;每个文件都有一个结束标志。当文件的位置指针移到文件的结束标志处时,表示文件结束。如何测试文件是否结束,常有2种方法 1 ASCII码文件的结束标志用【-1】表示。 实验用打点计时器测速 度 Company number【1089WT-1898YT-1W8CB-9UUT-92108】 实验:用打点计时器测速度 [目标定位] 1.了解电磁打点计时器、电火花计时器的构造及工作原理,学会使用打点计时器.2.掌握测瞬时速度的方法,会用打出的纸带求瞬时速度.3.理解速度随时间的变化图象,并能根据图象分析物体的运动. 一、了解打点计时器 1.作用及分类 打点计时器是一种使用交流(填“交流”或“直流”)电源的计时仪器,当电源频率为50Hz时,它每隔打一次点.打点计时器和纸带配合,可以记录物体运动的时间及在一段时间内的位移.供高中学生实验用的打点计时器有电磁打点计时器和电火花计时器两种. 2.电磁打点计时器 (1)工作电压:6V以下的交流(填“交流”或“直流”)电源. (2)原理:接通电源后,在线圈和永久磁铁的作用下,振片便振动起来,带动其上的振针上下振动.这时,如果纸带运动,振针就通过复写纸在纸带上留下一行小点. 3.电火花计时器 (1)工作电压:220V交流(填“交流”或“直流”)电源. (2)原理:当接通电源、按下脉冲输出开关时,计时器发出的脉冲电流经放电针、墨粉纸盘到纸盘轴,产生火花放电,于是在运动的纸带上就打出一行点迹.4.两种打点计时器误差比较 电火花计时器使用中对纸带运动阻力极小,因而系统误差较小. 二、练习使用打点计时器 1.实验步骤 (1)把打点计时器固定在桌子上并穿好纸带. (2)把打点计时器的两个接线柱接到交流电源上(电磁打点计时器接6V低压交流电,电火花计时器接220V交流电). (3)先接通电源开关,再用手水平拉动纸带,纸带上就打下一行小点,随后立即关闭电源. (4)取下纸带,从能看得清的某个点开始,往后数出若干个点,如果共有n个点,那么n个点的间隔数为n-1个,则纸带的运动时间Δt=(n-1)×. (5)用刻度尺测量出从开始计数的点到最后的点间的距离Δx. (6)利用公式v=Δx Δt 计算出纸带在这段时间内的平均速度. 2.注意事项 (1)打点前应把手停在靠近打点计时器的位置. (2)打点时,应先接通电源,待打点计时器打点稳定后,再拉动纸带. (3)打点之后应立即关闭电源. (4)对纸带进行测量时,不要分段测量各段的位移,正确的做法是一次测量完毕(可先统一测量出各个测量点到起始测量点O之间的距离).读数时应估读到毫米的下一位. 三、用打点计时器测量平均速度和瞬时速度 1.根据纸带计算平均速度 用刻度尺测出n个点之间的间距Δx,n个点之间的时间Δt=(n-1)×.则平均 速度v=Δx Δt . 2.根据打点计时器计算瞬时速度 (1)原理:取包含某一位置在内的一小段位移Δx,根据v=Δx Δt 测出这一段位移 内的平均速度,用这个平均速度代表纸带经过该位置的瞬时速度.一般地,取以这个点为中间时刻的一段位移来计算. 如图1所示,E点的瞬时速度可用D、F两点间的平均速度代表,即v E=Δx Δt . 图1 (2)数据处理:把纸带上能看得清的某个点作为起始点O,以后的点分别标上A、 B、C、D、……,如图2所示,依次测出各点到O点的距离,再算出OA、AB、 1.变量的指针和指向变量的指针变量 读起来很拗口,说白了就是变量的地址和用来存放变量地址的地址变量。因为一个变量在编译的时候系统要为它分配一个地址,假如再用一个变量来存放这个地址,那么这个变量就叫做指向变量的指针变量,也就是用来存放变量地址的这么一个变量。所谓"指向"就是指存放××的地址,如指向变量的指针变量,"指向"就是指用来存放变量的地址,再如指向数组的指针变量,"指向"就是指存放数组的地址。只要理解了这个,指针也就不难了。另外,还有指向字符串的指针变量,指向函数的指针变量,指向指针的指针变量等。 1) 指针变量的定义 形式:类型标识符*标识符如:int *pointer; 要注意两点:*表示pointer是个指针变量,在用这个变量的时候不能写成*pointer,*pointer 是pointer指向的变量。一个指针变量只能指向同一个类型的变量。如上面 pointer只能指向int型变量。 2)指针变量的引用 两个有关的运算符: & 取地址运算符&a 就代表变量a的地址 * 指针运算符*a就代表变量a的值 2.数组的指针和指向数组的指针变量 数组的指针指数组的起始地址,数组元素的指针指数组元素的地址。 1)指向数组元素的指针变量的定义与赋值 定义和指向变量的指针变量定义相同,c规定数组名代表数组的首地址,即第一个数组元素地址。 2)通过指针引用数组元素 我们通常引用数组元素的形式是a,如果用指针可以这样引用,*(a+i),或定义一个指针变量p,将数组a的首地址赋给p,p=a;然后用*(p+i)引用。 注意:指针变量p指向数组a首地址,则p++指向数组a的下一元素地址,即a[1]的地址。 3)数组名作函数参数 形参数组和实参数组之间并不是值传递,而是共用同一段地址,所以在函数调用过程中如果形参的值发生变化,则实参的值也跟着变化。 4)指向多维数组的指针和指针变量 1.4 实验:用打点计时器测速度 ★新课标要求 (一)知识与技能 1、了解两种打点计时器的结构和工作原理。 2、会安装并使用打点计时器。 3、理解根据纸带测量速度的原理并测量瞬时速度。 4、明确速度—时间图象的意义,描点法画图象的方法,并画出该实验中的速度—时间图象。 (二)过程与方法 1、通过学生自己看打点计时器的说明书,培养学生独立学习的能力。 2、通过对纸带的处理过程培养学生获取信息、处理信息的能力,体会处理问题的方法,领悟如何间接测一些不能直接测量的物理量的方法。 3、通过画速度—时间图象培养学生用图象法处理数据的能力,体验数学工具在物理发展中的作用。 4、体验实验中理性思维的重要,既要动手,更要动脑。 (三)情感、态度与价值观 1、感觉打点计时器的巧妙设计思路,体会物理原理在解决实际问题中的指导作用,增强将物理知识应用于生活实际的意识。 2、经历实验过程,体验科学实验过程的艰辛与喜悦,并乐于探索自然界的奥妙。 3、培养学生敢于创新和实事求是的科学态度和科学精神。 ★教学重点 1、打点计时器的使用。 2、由纸带计算物体运动的瞬时速度。 3、画物体的速度—时间图象。 ★教学难点 1、对纸带数据的处理。 2、画图象的方法。 ★教学方法 教师启发、引导,学生自主阅读、思考,亲自动手实验,并讨论、交流学习成果。 ★教学过程 (一)课前活动 教师活动:课前布置学生预习本节实验。 学生活动:学生看书明确实验的各项任务及实验仪器。 (二)进行新课 1、对“打点计时器的认识”的学习 教师活动:教师布置学生对照仪器看说明书,引导学生注意其重点部分 学生活动:观察打点计时器并阅读其使用说明书,明确两种打点计时器的结构、各部分的名称、工作原理及使用方法。 教师活动:指导学生动手练习使用打点计时器,并引导学生思考:纸带上的点与小车的位移和时间是如何对应的,怎样将纸带上的点变成相关的数据。 学生活动:动手练习使用打点计时器,打出几条纸带,讨论怎样获取数据,并用列表格的形式把数据列出。 教师活动:聆听学生回答,进行点评和指导。 学生活动:思考23页的思考与谈论:怎样根据纸带上的点迹计算纸带的平均速度?如果纸带上的点 使用打点计时器测速度和加速度练 习题 一、多选题:本大题共1小题,第1小题为4分;共计4分。 1、用单摆测定重力加速度g时,下面哪些做法可以减小误差? [ ] A.摆线长度不宜太长,取0.1m左右为宜 B.因为周期跟摆球质量无关,所以摆球用木球或铁球都一样 C.测摆长必须从悬点到摆球球心 D.测周期必须用n次全振动总时间除以n 二、实验题:本大题共40小题,从第2小题到第5小题每题2分小计8分;第6小题为3分;从第7小题到第13小题每题4分小计28分;从第14小题到第18小题每题5分小计25分;从第19小题到第29小题每题6分小计66分;第30小题为7分;从第31小题到第38小题每题8分小计64分;第39小题为9分;第40小题为10分;第41小题为15分;共计235分。 2、如图所示是一条打计时器在纸带做匀加速直线运动时打出的纸带的一部分,其中A.B.C.D.E是其中的5个计数点,相邻两计数点间的时间间隔是0.1s,但C点处被墨水污染,无法测量,只测出AB=3.62cm,DE=5.83cm.由此可以算出,纸带运动的加速度a=________m/s2,C点与B点间距离的理论值是________cm. 3、有一架托盘天平,没有游码,最小砝码是100mg.用这架天平称量一个物体,把物体放在天平左盘里,右盘中加入45.60g砝码时,天平指针偏向左侧约1.5小格,再在右盘里放100mg砝码时,指针偏向右侧约1小格,如图所示.则该物体的质量应为________g. 4、在“用单摆测重力加速度”的实验中,需要测量单摆的周期T,在测周期T时一般不直接测量1个周期的数值,而是测量n(例如n=30)个周期的总时间t,再计算出周期T的值(T=t/n),这种方法称为累积法.某同学实验时使用的单摆的摆长约为90cm,测量时间的停表是机械式的,其最小分度为0.1s.如果他直接测量1个周期的值,测得的数据的有效数字位数是________位.如果他采用累积法,测30个周期的总时间,测得的周期值的有效数字位数是________位. 5、打点计时器是 [] A.测量时间的仪器B.测量加速度的仪器 C.测量长度的仪器D.测量速度的仪器 6、在用打点计时器研究匀变速直线运动时,如测得各连续相等的时间间隔内位移之差不是一个恒量,其主要原因是 [] A.长度测量不精确B.打点计时器打点的间隔不均匀 C.运动中受到变化的摩擦力作用D.木板未调成水平 7、图是用电磁打点计时器研究物体做匀变速直线运动时得到的纸带.选定的计数点a、b、c、d、e……之间具有相同的时间间隔T,……为相邻的计数点间的距离,则物体的加速度a等于 [] 9.2 变量的指针和指向变量的指针变量 变量的指针就是变量的地址。可以定义一个指向一个变量的指针变量。为了表示批针变量和它所指向的变量之间的联系,用"*"符号表示"指向",可以看到,*i-pointer也是代表一个变量,它与变量i是同一回事。下面两个语句作用相同: 1:1i=3; 2:2*i-pointer=3; 第2个语句的含意是:将3赋给指针变量i-pointer所指向的变量。 C语言规定所有变量在使用前必须定义,规定其类型。指针变量不同于整型变量和其它类型的变量,它是用来专门存放地址的。必须将它定义为"指针类型"。 在定义指针变量时要注意两点: (1)标识符前面的"*",表示该变量为指针变量。 (2)一个指针变量只能指向同一个类型的变量。 请牢记,指针变量中只能存放地址(指针),不要将一个整型量(或任何其它非地址类型的数据)赋给一个指针变量。 例9.1 main( ) {int a,b; int * pointe r-1,* pointer-2; a=100;b=10; pointer-1=&a; pointer-2=&b; printf(″℅,d℅d\n″,a,b); printf(″℅,d℅d\n″,* pointe r-1,* pointer-2); } 运行结果为: 100,10 100,10 对程序的说明: 1、在开头处虽然定义开头处虽然定义了两个指针变量pointer-1和pointer-2,但它们并未指向任何一个整型变量。 2、最后一行的*pointer-1和*pointer-2,就是变量a和b。 3、程序中有两处出现*pointer-1和*pointer-2,请区分它们的不同含意。 4、第 5、6行"pointer-1=&a;"和"pointer-2=&b;"是将a和b的地址分别赋给pointer-1,和pointer-2。 下面对"&"和"*"运算符再做些说明: 1、如果已执行了"pointer-1=&a;"语句,若有&*pointer-1 它的含意是什么?"&"和"*"两个运行符的优先级别相同,但按自右而左方向结合,因此先进行*pointer-1与&a相同。如果有 pointer-2=&*pointer-1;它的作用是将&a(a的地址)赋给pointe-2,如果pointer-2原来指向b,现在已不再指向b而也指向a了。 2、*&a的含意是什么?先进行&a运算,得a的地址,再进行*运算。 3、(*pointer-1)++相当于a++。 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。 为了使在函数中改变了的变量值能被main函数所用,不能采取上述把要改变值的变量作为参数的办法,而应该用指针变量作为函数,在函数过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化依然保留下来,这样就实现了"调用函数改变变量的值,在主调函数(如main函数)中使用这些改变 §1.4实验:用打点计时器测速度 一、三维目标 知识与技能 1. 了解打点计时器的计时原理,理解纸带中包含的物体运动的信息(时间和位移) 2. 会安装并使用打点计时器,理解利用纸带测量速度的原理并会测量瞬时速度 3. 明确速度---时间图象的物理意义,描点法画图象的方法,并画出该实验 的速度---时间图象 过程与方法 1. 通过学生自己看打点计时器的说明书,培养学生独立学习的能力 2. 通过实验得出物体的运动信息,用数学的方法表述出来.培养学生获取信 息处理信息的能力,体会处理问题的方法,领悟如何间接测量一些不能直接测 量的物理量的方法 3. 通过画速度---时间图象培养学生用图象法处理数据的能力,体验数学工具在物理发展中的作用 4. 体验实验中理性思维的重要,即要动手,又要动脑 5. 经历科学探究过程认识科学探究的意义,尝试应用科学探究的方法研究物体的运动 情感态度价值观 1. 感受打点计时器的巧妙设计思路,体会物理原理在解决实际问题中的指 导作用,增强将物理知识应用于实际生活的意识 2. 经历实验过程,体验科学实验过程的艰辛与喜悦,并乐于探索自然界的奥秘 3. 体验用图象方法描述物理现象的乐趣,培养学生用数学方法处理物理问 题的意识 4. 培养学生的交流与合作精神,有将自己的见解与他人交流的愿望,并养成 尊重他人的习惯 二、教学重点 1. 学会使用打点计时器 2. 能根据纸带计算物体运动的瞬时速度 3. 会用描点法描绘物体的速度---时间图象,并从中获取物理信息 三、教学难点 处理纸带的方法,用描点法画图象的能力 教具准备 课件投影仪幻灯片 课时安排 2课时 第1课时 四、教学设计 [新课导入](5分钟) 测定物体的运动速度并不是一件容易的事,特别是物体的速度在不断变化时.为了简化我们今天只研究物体的直线运动.当物体沿直线运动时,其位移在不断变化,要研究物体的运动,我们首先要准确记录物体的运动信息.怎样记录呢? 课堂活动 请同桌的两位同学合作用彩笔和纸带模拟打点计时器. 思考1. 彩笔打出的点能不能准确记录纸带的位置? 2. 在打点时间间隔大致相同的情况下,纸带拉动的快慢对纸带上点的间隔有无影响? 学生讨论: 总结:彩笔打出的点可以记录纸带的位置.但在打点时间间隔大致相同的情况下,纸带拉动的快慢对纸带上点的间隔有影响(拉的越慢纸带上点越密,反之就会越稀疏)考虑到用手打点的时间间隔不能准确相等,所以无法准确测定物体的运动速度.原因在哪? 生: 原因出在用手打点时的时间间隔不能严格相等,要是有一台打点时间间隔严格相等的仪器问题就可以解决了. 新课教学(25分钟) 师:我们今天要介绍的打点计时器就是可以精确记录时间间隔和位移的仪器. 一电磁打点计时器 1.振片 2。线圈3。永久磁铁 4。振针 5。纸带 6。限位孔 7。复写纸 布置学生阅读打点计时器的说明书:明确打点计时器的结构,个部分的名称,工作原理 及使用方法. 总结:电磁打点计时器是一种使用交流电的计时仪器.工作电压为4—6V.当电源频率为50H z时, 打点计时器每隔0.02s打一个点.通电前把纸带穿过限位孔并压在复写纸的下面. 通电时,线圈产生的交变磁场使振动片磁化,振动片的一端位于永久磁铁的磁场中,由于振动片的磁极随着电流方向的改变而不断变化,在永久磁铁的作用下,振动片将上 1.4 实验:用打点计时器测速 一、教学目标 1.了解电磁打点计时器,电火花计时器的基本构成,理解打点计时器的计时原理 2.经历使用打点计时器的过程,能正确、熟练地使用打点计时器。 2.会根据纸带上的点迹计算物体运动的平均速度,理解用平均速度表示瞬时速度所采用的思想方法,会用这种方法计算瞬时速度。 3.明确速度—时间图象的意义,描点法画图象的方法,并画出实验中的速度—时间图象。 4.能运用实验数据描绘v-t图象,并会根据画出的图象描绘物体运动速度的变化特点。 二、教学重点与难点 重点:1.打点计时器的使用。2.由纸带计算物体运动的瞬时速度。3.画物体的速度—时间图象。 难点:1.对纸带数据的处理。2.画图象的方法。 三、教学方法:实验探究式教学方法 四、教学过程 1.打点计时器的认识 先让学生阅读教材,然后老师提出问题,引导学生回答: (1)电磁打点计时器使用的是直流电还是交流电?其工作电压为多少? (2) 说出电磁打点计时器的构造?工作原理?如图1—4—1所示。 (3) 复写纸放在纸带上边还是下边? (4) 我国交流电的频率为50Hz,使用这种电源时,每隔多长时间打一个点,即相邻两个点之间的时间间隔是多少?日本的交流电频率是60Hz,打点计时器还能用吗?能用,相邻两个点之间的时间间隔是多少? (5) 打点计时器打出的纸带可以记录某段时间内的位移,能不能记录时间? (6)解释电火花计时器的工作原理?如图1—4—2所示,它与电磁打点计时器相比,哪一种误差小?原因是什么? 电磁打点计时器是一种使用低压交流的计时仪器,其结构如图所示。它的工作电压是4~6V。电源频率是50Hz时,它每隔O.02s打一个点。 指针函数的用法 1、例:char *getnum(int num,int addr) 字符型指针函数返回值为字符地址。即:return返回指针地址。 例:声明字符型指针char *a。返回值只能写return a;不能写return *a; 也不能写:char a; return a; 会报“cannot convert from 'char' to 'char *'”错误 2、cout<<*getnum(12,addr)< 物理教师教育实训案例讲稿 《用打点计时器测速度》详案 【教学目标】 1.知识与技能 (1)了解打点计时器的计时原理,理解纸带中包含的物体运动的信息(时间和位移)。 (2)会使用打点计时器,理解利用纸带测量速度的原理并会测量瞬时速度。 (3)明确速度—时间图象的物理意义,描点法画图象的方法。 2.过程与方法 (1)通过实验得出物体的运动信息,用数学的方法表述出来。培养学生获取信息处理信息的能力,体会处理问题的方法,领悟如何间接测量一些不能直接测量的物理量的方法。 (2)体验实验中理性思维的重要,即要动手,又要动脑。 (3)经历科学探究过程认识科学探究的意义,尝试应用科学探究的方法研究物体的运动。 3.情感态度与价值观 (1)感受打点计时器的巧妙设计思路,体会物理原理在解决实际问题中的指导作用,增强将物理知识应用于实际生活的意识。 (2)体验用图象方法描述物理现象的乐趣,培养学生用数学方法处理物理问题的意识。 【教学重、难点】 1.重点 (1)学会使用打点计时器 (2)能根据纸带计算物体运动的瞬时速度 (3)会用描点法描绘物体的速度---时间图象,并从中获取物理信息 2.难点 处理纸带的方法,用描点法画图象。 【教学过程】 1、新课引入: 同学们大家好,今天我们来学习第四节《用打点计时器测速度》。 测定物体的速度并不是一件容易的事情,特别是当物体的速度在不断变化时,测定某时刻的速度更是比较困难,比如飞舞的苍蝇,要确定它某时刻的速度是非常困难的,我们现在只研究直线运动的速度的测量问题。 当物体沿直线运动时,其位移在不断变化,要研究物体的运动,我们首先要准确记录物体运动的信息。直接测量物体运动的速度在技术上是比较复杂的。我 目录(?)[-] 1. 指针和指向的变量 2. 改变指针的内容 1. 指针内容和指针指向的内容变量 2. 通过指针赋值的形式改变指针内容 3. 将指针作为函数参数改变指针内容 在C语言中,函数传参分为两种:传址和传值。 传值是一个复制的过程。 传址对于变量和对象来说是传址,而针对于同一级的指针来说也是传值。传址针对的对象是指针指向的对象,此时对指针的一切行为都是为了间接的操作指针所指向的对象。但如果想要操作指针本身的内容值,那么就需要在指针层面再往下一层,让指针本身上升为变量的地位,让深一层的指针(二级指针)指向指针变量,二级指针在函数参数作为输出参数时用得较广。 1 指针和指向的变量 指针是C语言数据类型中一种独立的数据类型:指针类型。作为C语言的精华,当定义一个指针变量时,此变量的作用就是用来存相应数据结构(变量、函数)的地址。然后通过变量的地址(指针变量的值)取地址内容的方式(*指针变量)访问(读、写)相应的变量。如定义一个整形变量和一个整形指针,用指针指向整形变量。 [plain]view plainc opyprint? 1.int i; 2.i = 1; 3.int *p = NULL; 4.p = &i; 5.*p = 2; 此小段程序的功能就是通过指针p访问所指向的i,并通过p改变了所指向的变量i的内容。p地址通过取地址内容符*就能访问地址中存的变量了(变量作为地址的内容)。 它们的关系如下i, p的关系如下: 图1 指针和变量 指针本身作为一个变量,也有自己的地址。指针作为一种特殊的变量作用是用来存地址,指针获取数据结构的地址之后可以通过指针变量访问(读写)到对应的数据结构。通过*p的形式访问的是变量,改变的是指针存的内容中的内容。如上图中,*p = 2;时是通过指针p改变的0x0001(指针值)中的i(0x0001地址中存的内容)的值。 2 改变指针的内容 试想一下,在外定义一个指针变量p1,并将它指向某个变量( var )。当向函数传递一个一级指针时,它传递给函数指针参数p2的是var变量的地址,如果在函数内对p2操作的代码是*p2( 访p2地址中的内容),那么所涉及的内容都是var变量;如果在函数内对p2的操作代码是p2,如p2 = var1( 另一个变量),那么只能代表p2指向的目标变量发生了变化,p2的值也发生了变化。综上,对p2的任何操作都跟外部定义的指针p1无关,p1不会受到任何影响。 2.1指针内容和指针指向的内容(变量) 指针内容是指指针的值,是指针指向内容的地址(如i的地址0x0001)。指针指向的内容是指指针指向的那个变量(如p指向的是变量i)。 2.2 通过指针赋值的形式改变指针内容 第四节 实验:用打点计时器测速度 【巩固教材—稳扎稳打】 1.根据打点计时器打出的纸带,我们可以从纸带上直接得到的物理量是 ( ) A .时间间隔 B .平均速度 C .位移 D .瞬时速度 2.某同学将纸带穿过限位孔,接通打点计时器的电源,拉动纸带,但在纸带上打不上点, 其可能原因是 ( ) A .复写纸放反 B .使用了直流电源 C .振针过短 D .纸带运动过快 3.小车拖动的纸带经过打点计时器后,在纸带上留下的点中有6个连续清晰的点,测出这 6个点间的距离为18 cm ,则 ( ) A .小车运动的平均速度为0.03m/s B .小车运动的平均速度为1.5m/s C .小车运动的平均速度为1.8m/s D .小车运动的平均速度为180m/s 4.某同学用手水平地拉动纸带通过打点计时器后,纸带上打下了一列点,他要根据这些点 计算纸带运动的平均速度,下列操作正确的是 ( ) A .他首先查清共有多少个点 B .首先从第一个能看清的点数起,查清共有多少个点 C .分别测出每两个相邻清晰点间的距离,然后相加,把相加的结果作为所有能看清点 间的长度,用来计算平均速度 D .分别测出每两个相邻清晰点间的距离,用来计算各段的平均速度 【重难突破—重拳出击】 1.打点计时器打点的周期,决定于 ( ) A .交流电压的高低 B. 交流电的频率; C .永久磁铁的磁性强弱; D. 振针与复写纸间的距离. 2. 在“练习使用打点计时器”的实验中,下列操作正确的是 ( ) A .打点前,小车应靠近打点计时器,要先接通电源,待计时器开始打点再释放小车; B .要舍去纸带上密集点,然后选取计数点。 C .打点频率为50Hz ,每四个点取一个计数点,则计数点之间的时间间隔为0.01S 。 D .实验中应使小车速度尽量小些。 3. 一学生在练习使用电磁打点计时器时,纸带上打出的不是圆点,而是一些短线,这可能 是因为 ( ) A .打点计时器错接在直流电源上; B .电源电压不稳定; C .打点计时器使用的电压频率不稳定; D .振针到复写纸片的距离太小 4. 某物体的v -t 图象如图1-3所示,则该物体 ( ) A .做往复运动 B .做匀速直线运动 C .朝某一方向做直线运动 D .以上说法均不正确 5.在练习使用打点计时器的实验中,某同学操作中有以下实验步骤,步骤顺序排列正确的 是 ( ) ①.把计时器上的电源插头插在交流220 V 电源插座上,按下脉冲输出开关,用手水平 的拉动两条纸带,纸带上就打下一列小点 ②.把电火花计时器固定在桌子上 t v 图1-3 4-10 &的“引用”或“取地址”和“*指针”的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化。 ★相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址; 引用是某块内存的别名。 ★区别: 1. 指针是一个实体,而引用仅是个别名; 2. 引用使用时无需解引用(*),指针需要解引用; 3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 引用“从一而终” ^_^ 4. 引用没有const,指针有const,const 的指针不可变; 5. 引用不能为空,指针可以为空; 6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小; typeid(T)== typeid(T&)恒为真,sizeof(T)== sizeof(T&)恒为真,但是当引用作为类成员名称时,其占用空间与指针相同4个字节(没找到标准的规定)。 7. 指针和引用的自增(++)运算意义不一样; ★联系 1. 引用在语言内部用指针实现(如何实现?)。 2. 对一般应用而言,把引用理解为指针,不会犯严重语义错误。引用是操作受限了的指针(仅容许取内容操作)。 引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n 是m 的一个引用(reference),m 是被引用物(referent)。 int m; int &n = m; 物理实验报告 班级组号学号姓名 数据处 ①选取一小段纸带,用固体胶粘贴如下: 理 ②测量各记数点间的距离,推算各时间段,建立相应 表格并填入表格 中间点 A B C D O——B A——C B——D C——E 左右两 点 两点间 距离 两点间 时长 平均速 度 瞬时速 度 误差分 析 实验结 论 4 实验:用打点计时器——测速度 一作业与测试: 1.电磁打点计时器,是一种使用电源的仪器,工作电压是,当电源的频率是50Hz时,它每隔秒打一次点。 2.电火花计时器应接在V的交流电源上,使用时,墨粉纸盘套在纸盘轴上,并夹在之间,当电源频率是50Hz时,它是每隔秒打一次点。 3.物体带着纸带在打点计时器上打下一系列点,记录了物体运动的时间,纸带上的点子表示物体在不同时刻的,点子之间的间隔,表示物体。舍掉开头密集不清的点子,找一个清晰便于测量的点作为开始点,并用每打五次点的时间T作为时间的单位,则T= s。 4.某组同学研究小车从斜面上滑下的实验,得到如图所示的纸带,纸带上的计数点用O、A、B、C、D、E表示,根据图上的数据,小车经过B点时的速度是,经过D点时速度是,从B到D过程中小车的速度变化快慢是。 5.某组同学在《用打点计时器测速度》的实验中,得到如图所示的纸带,在纸带上的计数点用O、A、B、C、D、E表示,其中每两个计数点之间还有四个点没有画出,根据图上的数据,每两个计数点之间的时间间隔是,小车经过D点时的速度是,经过G点时速度是,小车速度变化快慢是。 6.某次实验用打点计时器的交流电频率是50Hz,纸带的记录如图所示,图中O点为纸带第一个点,接下来的前几个点模糊, 高中物理-实验:用打点计时器测速度教学设计 一、学习目标: 1.知识与技能: (1)了解两种打点计时器的构造( 2)学会利用打点计时器测速度 2.过程与方法:(1)培养学生的实验技能和技巧(2)利用v-t图象分析数据,描述物体的运动 3.情感态度与价值观: 培养学生分析和解决 问题的能力 二、重点难点: 1.打点计时器的使用 2.用打点计时器测速 度 三、学法指导:实验法分析法 四、讲述要点:瞬时速度的计算 五、学讲过程: 一.两种打点计时器 1. 电磁打点计时器是一种 仪器,它使用_____电源,由学生电源供 电,工作电压在___V以下。当电源 频率是50Hz时,它每隔s打一个点。通电前,把纸 带穿过,再把套在轴上的________压在纸带上面。 2.电火花计时器的计时原理与电磁打点计时器相同,不 过在纸带上打点的不是振针和复写纸,而是 ________和。 3.两种计时器的比较 (1)两种计时器使用的都是______电源,当电源的频率是50Hz时,都每隔_______s打一个点。不过它们使用的工作电压不同,电磁打点计时器的工作电压在_____V以下,电火花计时器的工作电压是V (2)电火花计时器工作时,纸带运动时受到阻力比较_____, 实验误差也 就比较____。 二.实验目的: 用打点计时器测物体运动的______速度和______速度。 三.实验器材: 打点计时器、复写纸(墨粉纸)、纸带、_____电源、导线、_______ 四.实验步骤: 1.把打点计时器_____好 2.安装纸带(纸带应装在复写纸或墨粉纸的_____) 3.启动电源,用手_____地拉动纸带,打完后,立即__________. 4.取下纸带,从____________的某个点开始,往后数出n个点,纸带从第一个点到第n个点的运动时间是____________s 5.计算出两点之间的_______速度和某点的_______速度。 六、限时训练 1.某同学打出的一条纸带如图所示,图中直尺的单位为cm,点O为纸带上记录到的第一点,点A、B、C、D、…依次表示点O以后连续的各点.已知交流电的频率为50Hz.则OG间的距离为_____cm,O到G的平均速度为________m/s,DG段的平均速度为______m/s,DF段的平均速度为_______m/s,E点的瞬时速度为______m/s 位置1234 5 时间/s v/(m.s-1)用打点计时器测速度教学设计
高中实验:用打点计时器测速度教案
使用打点计时器测速度和加速度练习题
用打点计时器测速度实验报告
变量的指针和指针变量的区别是什么
实验用打点计时器测速度
变量的指针和指向变量的指针变量
实验 用打点计时器测速度教案
使用打点计时器测速度和加速度练习题
变量的指针和指向变量的指针
实验用打点计时器测速度(教案)
1.4 实验:用打点计时器测速度(2)
c++指针函数和变量地址做形参的用法
用打点计时器测速度(详案)
C指针的值和地址
实验:用打点计时器测速度练习题及答案
引用或取地址和指针的区别
(最新整理)4 用打点计时器测速度实验报告.doc
高中物理-实验:用打点计时器测速度教学设计