第一篇:VB程序连乘算法的教学设计
VB程序连乘算法的教学设计
摘 要:该文主要对程序设计课程中的连乘算法进行教学设计,结合实例介绍了连乘算法的关键点,对算法中经常会遇到的内存溢出问题进行解析,针对连乘算法的通用表达式进行了优化,使程序更易理解,达到加深理解,优化教学效果。
关键词:程序设计 算法 连乘算法 溢出
中图分类号:G64 文献标识码:A 文章编号:1672-3791(2015)12(a)-0220-02
在程序设计课程中,算法是课程的重点,同时也是难点,如何将算法原理向学生讲解透彻并可以让其轻松接受,是在教学过程中需要思考的一个问题。
在计算机中,算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令序列的集合。程序设计就是设计算法、编写代码、调试运行的过程。显而易见,算法是程序设计的基础,程序设计是算法的具体实现。在程序设计课程的教学设计过程中,常用算法一般包括求最大/最小值、累加/连乘、穷举法、递推法等,该文将主要针对连乘算法进行分析。连乘算法
在程序基础教学中,为了提高教学效果,针对刚入门的程序设计初学者,教师们一般采用任务驱动法[1]进行算法的分析,引导学生理解和掌握该算法的核心思想,进而再用程序的方式来描述与验证该算法。例如:
以上是一个典型的连乘算法,该算法描述的关键点可归纳如下:
(1)每一项和每次连乘之积是变化量。
(2)因此,需要两个变量:
①用T表示每一项的值:T=T+1。
②用S表示连乘之积:S=S*T。
(3)循环终止条件: 循环次数>n。
(4)初始化:S=1。内存溢出问题
在讲解程序算法时,大多数程序设计教程都很少提及赋值或计算中的“溢出”问题,然而在学生的编程操作中,“溢出”却是经常会遇到的一个问题[2],这些问题常常会让学生觉得困惑,查找原因时却无从下手,导致学生出现畏难情绪。因此,教师有必要在授课过程中,对程序在内存中的存储方式进行初步讲解,让学生可以了解程序的运行机制,加深理解。
软件在运行过程中,如果程序调用的数据文件过大,或程序设计中存在着死循环等bug,软件写入内存中的数据量超过了系统分配给该软件的内存空间大小,则会发生内存空间装不下而溢出的现象,这种现象就叫内存溢出。在求阶乘的算法中,由于阶乘的结果累积速度较快较大,容易发生数据溢出。
让学生进行程序的调试与运行,当n=10和=50时运行结果如图1所示,但当n=100时,却弹出如图2所示的警告信息。
分析导致“溢出”错误的原因:
当程序运行发生“溢出”错误时,通过调试跟踪,在T=(2* i)^ 2/((2*i-1)*(2*i+1))语句处,把光标移至i变量上,可以发现溢出时i的值为91;当i=91时,表达式((2*i-1)*(2*i+1))=,该表达式的值为33123。程序将结果值S设置为double类型,当i=91时,结果为33123,这个值按道理应在double类型的数值范围内,但程序仍然发生了溢出错误,问题在哪里呢?
实际上,产生这个溢出问题的原因是由于VB本身的内存分配机制造成的,VB在进行计算过程中,它总是分配一个最省内存的临时内存空间去存储这些中间计算结果数值,这个最省的内存空间容量根据表达式中数据类型决定,如上述相乘的两个表达式(2*i-1)和(2*i+1),他们当中的变量i是整型,因此,VB也将使用一个类型为整型的临时变量来存储两个表达式的乘积。所以,当i=91时,得到乘积结果33 123,此时即使是乘积结果变量S设置为double类型,但乘积结果(33 123)已超过了声明为整型的临时变量空间的极限(-32 768~+32 767),所以仍然会发生溢出错误。
根据上面的原因分析,可以从以下几方面进行修正:
(1)将变量 i 定义为长整型或实数型或变体型。
(2)将错误语句中的变量 i或常量(1或2)其一操作数利用转换函数Clng(i)或Clng(1),以求足以容纳计算结果。
(3)避免大数相乘,可将错误语句改为T=(2*i)^ 2/(2*i-1)/(2*i+1)。
(4)连乘算法的改进。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。虽然上述方法解决了“溢出”问题,但是表达式T=(2*i)^2/(2*i-1)*(2*i+1)显得很笨重,表达式明显复杂。能否有办法可以降低复杂度,简化表达式以求程序优化呢?
可以把通项表达式T=(2*i)^2/(2*i-1)*(2*i+1)中的分子式分解开来,把问题理解为简单表达式T=A/B(其中A=(2*i)^2和B=(2*i-1)*(2*i+1),如此一来问题就变得较为简单且易于解决。因此,求∏的近似值的VB程序代码优化实现如下:
在此例中,关键点在于如何将复杂的通项表达式分解为简单表达式,进而实现连乘算法的优化。因此,如何构造通项表达式尤为关键,必须注意2点。
(1)通项表达式T=B/A中的A或B均可为常量或变量表达式,A和B可以继续分解;①若A=1,则T=B;②若B=1,则T=1/A;
(2)必须精选变量A与B的数据类型,避免出现“溢出”。结语
该文对程序设计课程中关于连乘算法的问题进行了初步探讨,指出程序设计初学者中学习过程中经常会遇到的“溢出”问题,提出修正方法,并对连乘算法进行改进优化,加深理解,强化教学效果。
参考文献
[1] 杨晨霞,涂风涛.任务驱动教学法在Visual Basic程序设计教学中的应用[J].职教论坛,2012(18):79-81.[2] 贾颖.“VB 程序设计”课程教学中的变量类型使用问题研究[J].Computer Education,2008(20):138-139.
第二篇:八年级下册VB程序教学设计
第四课学学程序设计——初步认识编程软件VB 教学目标及要求:
知识目标:了解什么是程序设计语言和计算机程序以及语言的分类; 能力目标:培养学生的阅读总结和自主探索能力;
情感态度与价值观:通过学生利用所学的知识解决实际问题,激发学生的学习兴趣。教学重难点:
1.了解什么是程序设计语言。2.启发学生创新思维要求:
3.以任务为驱动,激发学生创新思维
教法及学法:讲授法谈话法讨论法、任务驱动和分组合作相结合 教学过程:
创设情境,导入新课:
教师运行游戏小程序,引起学生的兴趣,并打开程序的源代码说明编程并不很神秘。
试运行游戏小程序,激发学生的学习兴趣。教师讲授: 程序设计语言
教师活动:语言是人类交流思想、沟通感情最重要的工具。那么语言不通的人如何交流呢? 学生活动:请一个语言翻译或自己学会他人的语言 教师活动:计算机所做的事情均为人向机器下达的命令,那么操作者又是通过什么语言同计算机进行沟通的呢?
程序设计语言的分类及特点(1)、机器语言
教师活动:①计算机能听懂的语言(机器语言)②机器语言的实质(二进制语言)③二进制语言的特点。强调计算机内部只认识二进制 学生活动:谈对二进制语言的感受
教师小结:机器语言的特点(二进制、计算机直接能懂、难以理解,与人类语言差距较大)(2)汇编语言:用助记符表示面向机器的程序设计语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言。适合编写直接控制机器操作的程序,不容易使用。(3)、高级语言
高级语言最接近人的自然语言,即简单易学,它所编制的程序计算机执行时需要“翻译”,执行速度比二进制程序慢。计算机程序
教师提出问题一:什么是程序?
日常所说的“程序”是指事情的先后顺序。问题二:什么是计算机程序?
教师展示游戏程序部分的源代码语句,学生观察游戏程序的源代码。思考什么是计算机程序?
计算机程序是用程序设计语言编写好的一组指令,用来指示计算机的每一步动作。VB程序设计语言:
1、VB简介:
vb是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大。
2、认识VB窗口:
教师活动:打开准备好的VB程序----世博口号.exe 学生活动:新建标准工程进入VB环境
教师活动:指认VB环境中菜单栏、工具栏、工具箱、属性窗口、窗体、控件等的位置。工具箱:许多用于程序设计的控件 窗体编辑器:设计应用程序界面
工程资源管理器:帮助用户管理工程中的每一个文件 属性窗口:设置对象的特征
3、相关概念: ①对象的概念 教师活动:讲解所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等。② 控件的概念
教师活动:讲解控件的概念。(窗体界面中可供用户操作的元素)学生活动:认识范例窗体中有哪些是控件 教师活动:在工具栏中指认相应控件 学生活动:向窗体中添加相应控件 ③ 属性的概念
教师活动:讲解属性的概念。(控件的内部和外部特征)学生活动:尝试在属性窗口中找到某控件的相应属性 ④ 事件和代码的概念
师生活动:运行程序---点击按钮---请学生观察窗体变化
师生活动:结束运行状态---双击按钮进入代码窗口:观察点击按钮程序发生变化的原因(代码)---学生观察、教师讲解(代码改变控件属性方法:控件名.属性名=属性值)---学生尝试用此方式改变窗体中其他控件的属性(如Label1.Caption=”better city,better life”)教师演示:
1、教师演示设计运行程序“奔跑的小汽车”,学生认真观察。
2、教师将素材发送到学生机,布置任务: 依照教师演示编写程序“奔跑的小汽车”。学生体验:
1、学生编写程序“奔跑的小汽车”,教师巡回指导。
2、试修改程序,让汽车倒车、速度变慢。
五、教学评价:
1、教师点评 教师通过巡视,把部分学生修改的结果进行点评,指出典型的错误。
2、学生进行自评: 评价内容描述
对我的学习
满意 还可以
还需 努力
了解程序设计语言和计算机程序
初步认识VB窗口的组成和工作环境
对程序设计学习的兴趣
六、课后小结:
这节课,我们体验了用VB设计程序,了解程序有关知识。(回顾本节知识)希望同学们继续努力。
第三篇:VB常用算法总结
VB常用算法总结
一、变量值的交换
算法思想:若交换两个变量的值,必须引入第三个新的变量进行传递。以下代码是错误的:
X=12 :Y=34 :X=Y :Y=X 正确的代码是:
X=12 :Y=23 :T=X :X=Y :Y=T
二、判断一个数是否能被另一个数整除
算法思想:可以用整除的定义(余数为0)或X除以Y等于X整除Y等表达式进行判断。条件表达式可以为:X mod Y=0
或
X\ Y=X/Y
或
Int(X/Y)=X/Y 如果以上条件表达式为True,则表示X能被Y整除。
三、累加、阶乘、计数和求平均值
算法思想:使用循环语句,并用一个变量存放累加的中间及最终结果。注: 累加求和时变量初值为0,计算阶乘时变量初值为1。
统计计个数(计数)时可用一个变量作为统计个数的累加变量,每次加1即可。求平均值算法思想是先求和,再除以个数。条件求和(或计数):在循环语句中加入If-End If判断语句。
例题:计算1到10之间所有整数的累加和以及10!。n=10 sum=0
‘累加求和时,变量的初值一定为0 prod=1
‘累乘(连乘)时,变量的初值一定为1 For i=1 To n
sum=sum+i
prod=prod*i Next i Print sum,prod
例题:统计0—100之间能被3整除的数的个数、累加和及其平均值。
s=0
n=0
For i=0 To 100
If i mod 3 =0 Then
s=s+i
n=n+1
End If
Next i
Print n,s,s/n
四、随机数的产生 [a,b]之间的随机整数 Int((b-a+1)*rnd)+a(a,b)随机数(b-a)*rnd +a
五、求若干个数中最大值或最小值
六、常用字符处理函数
Mid函数:从字符串指定位置取指定个字符,格式为Mid(字符,p,n),从第p个字符开始,向后截取n个字符(若n省略则取到最后)。
Left和Right函数:从字符串左边或右边取指定个字符,格式为 Left(字符,n)和Right(字符,n)。Len函数:测试字符串长度。
UCase和LCase函数:UCase将小写字母转换为大写字母;LCase将大写字母转换为小写字母。
Instr([首字符位置 , ] 字符串1, 字符串2 [ , n]):在字符串1中查找字符串2,如果找到,返回字符串2的第一个字符在字符串1中出现的位置。首字符位置是可选的,如果不指定,从字符串起始位置开始查找;如果指明,从指定的位置开始查找。
Asc函数:返回字符串中第一个字符的ASCII码。Chr函数:将一个数值转换为其所对应的字符。
字符的比较规则是按ASCII码顺序比较,规则为 空格<”A”~”Z”<”a”~”z” 小写字母的ASCII比大写字母的ASCII小32。
例题:
1.将所有文本转换为大写(小写)字母
可以直接使用UCase(LCase)函数转换。例如: Text2.Text=UCase(Text1.Text)2.对某个字符串的所有字符逐一处理
算法思想:如果对某个字符串的所有字符逐一处理,即从字符串的第1个字符开始到最后一个字母,每次处理1个字符。可以使用For循环实现。通用代码为:
For i=1 To Len(s)
s1=Mid(s,i,1)……
Next i 3.字符转换
算法思想:通过字符的ASCII码进行处理(使用Asc函数),然后再使用Chr函数将ASCII转换成字符。例题:将文本框Text1中字符按如下规律转换a-b、b-c……z-a,并显示在文本框Text2中。
s = Text1.Text n = Len(s)For i = 1 To n
s1 = Mid(s, i, 1)
If s1 >= “a” And s1 <= “y” Then
s2 = s2 + Chr(Asc(s1)+ 1)
ElseIf s1 = “z” Then
s2 = s2 + “a”
End If Next i Text2.Text = s2 例题:将文本框Text1中的小写字母转换其对应的大写字母,将大写字母转换成小写字母,并显示在文本框Text2中。
Private Sub Command1_Click()s = Text1.Text n = Len(s)m = Asc(“a”)m)
End If
If s1 >= “A” And s1 <= “Z” Then
s2 = s2 + Chr(Asc(s1)+ m)
End If Next i Text2.Text = s2 End Sub 5.统计某字符出现次数
算法思想:对字符串中字符逐一判断,如果是某字符,则统计变量加1。
例题:统计文本框Text1中字符i和j出现的次数(不区分大小写)。
Private Sub Command1_Click()
s = Text1.Text
n = Len(s)
For i = 1 To n
s1 = Mid(s, i, 1)
If UCase(s1)= “I” Then ni = ni + 1
If UCase(s1)= “J” Then nj = nj + 1
Next i
Print ni, nj
End Sub
八、素数
素数定义:只能被1和本身整除的正整数称为素数(或称质数)。例如11就是素数,它只能被1和11整除。算法思想:判别某数n是否是素数的方法有很多,最简单的是从素数的定义来求解。对于n,从i=2,3,…,n-1判别n能够被i整除,只要有一个能整除,n就不是素数,否则n是素数。此种算法比较简单,但速度慢,因此,可以将n被2到(或n/2)间的所有整数除,如果都除不尽,则n就是素数,否则n是非素数。
注:执行For循环时,循环变量等于终值仍进入循环,遇到Next语句,循环变量会自动加上步长,因此如果循环正常完成后,循环变量的值将大于终值。例如:
For i=1 To 4 If …… Then Exit For Next i Print i 如果循环正常结束,则输出结果为5(大于4)。如果循环过程中满足If条件,执行Exit For语句退出循环,则i的值一定小于5。
例题:判断n是否是素数。Private Sub Command2_Click()n = Val(Text1.Text)For j = 2 To n100 * a)/ 10)c = i-Int(i / 10)* 10 If i = a ^ 3 + b ^ 3 + c ^ 3 Then Print i End If Next i End Sub
Private Sub Command1_Click()For n = 100 To 999 s = 0 a = n Do While a <> 0 b = a Mod 10 s = s + b * b * b a = a\ 10 Loop If s = n Then Print n Next n End Sub
十一、斐波那切数列的输出
该数列前两项为1,1从第三项开始,an=an-1+an-2
十二、进制转换 十三、三个数排序
十四、分段函数
十五、图形输出(双重循环)
十六、百鸡百钱问题
十七、迭代法P116页
十八、输入a,b,c,的值,求方程ax2+bx+c=0的解。
注意:对象只考文本框、标签、命令按钮和窗体。
本学期计算机基础及VB程序设计复习指导如下:
1、计算机基础的50道复习题,试卷上占20分,选择15题,填空5题。
2、VB习题集第一到五章控制结构的课后习题及试题解析(其中,控件只考窗体、文本框、标签、命令按钮)试卷上占40分。
3、经典算法。占40分。
第四篇:《我的第一个VB程序》教学设计
《我的第一个VB程序》教学设计 盐城中学何娟 教材分析
本节课是《算法与程序设计》(选修)第二章第一节的内容。第一节共分三个课时,这是第二课时的内容。前一课时集中介绍了VB集成开发环境和界面设计,这一课时通过一个实例介绍可视化编程的一般步骤,在程序编写过程中完成VB基本知识和技能讲解。教材中此部分内容详细清晰,对学生上机实践有很强的指导作用。学情分析
上节课主要介绍了VB集成开发环境、控件、对象、属性等基本概念,熟悉了标签、文本框和命令按钮等基本控件机器属性设置的操作,本节课在熟悉界面设计的基础上进一步了解可视化编程的一般步骤,尤其是代码设计。由于大部分学生是初次接触程序设计,而一般人对于程序设计有着“难”的偏见,因此学生既有好奇心,又有畏难情绪。因此教师应充分了解这一点,通过简单的例子,让同学体验成功的快乐,在揭开“编程”神秘的面纱的同时,激发学生学习的积极性和对程序设计的兴趣。教学目标
知识与技能目标:
要求学生熟悉可视化编程的一般步骤。
让学生了解事件、事件驱动机制等基本概念。学生能独立的完成一个简单的VB程序。过程与方法
设问导入新课,学生进行自主探究学习、小组合作交流学习等方式,激发学生的学习兴趣,让学生在“做中学”,既考验其动手能力和举一反三能力,又避免纸上谈兵,理解不透彻。老师在分析一个完整的程序基础上布置难易适中的任务,在学生操作过程中巡视指导。情感态度和价值观
★ 培养学生自主探索、协作学习的能力。★培养学生勇于实践和不断进取的精神。★ 培养学生的对程序设计的兴趣。
四、教学重点与难点
★ 重点:可视化编程的一般步骤。
★ 难点:学生在熟悉编程的一般步骤的基础上能编程解决实际问题。
五、教法与学法
★教学方法:讲解与演示相结合、启发式教学法、任务驱动法 ★学习方法:模仿学习、自主探究学习,小组交流合作学习
六、设计思想
尊重学生解决问题的思维过程,模拟学生的学习体验和情感体验,在以学生为主体、教师为主导的架构下,搭建以生为本的学习的平台,帮助学生通过学与练,以不断解决问题为手段,一步步完成学习任务。
新课标中提出了信息技术课程要以进一步提高学生信息素养为宗旨,强调通过合作解决实际问题,掌握信息技术,感受信息文化,增强信息意识,提高学生总体的信息素养。而在本节课中就坚持了以教师为主导,学生为主体,发展能力和提高素质为主线的启发式教学思想,努力为学生创设了开放式的学习环境。
本节课以编写一个完整地程序为主线,让学生了解事件、代码的基本组成、代码的书写规则以及具体语句中涉及到的知识点(主要包括:数据的类型、变量的定义与声明、表达式以及一些常用语句和函数)。通过自主编写程序发现问题,探究解决问题的方式,最后学会自我总结。让学生通过讨论学习,小组合作学习等方式掌握可视化编程的一般步骤,提高解决实际问题的能力。
七、教学过程 教学环节
教师/学生活动设计
设置疑问 导入新课
【导入】:展示上节课已经做好的程序界面(如下图),请同学根据界面猜想程序功能,教师运行测试,发现输入被加数和加数后单击计算按钮,不能正常显示结果。【教师提问】:造成这种情况的原因是什么呢? 【学生讨论、回答】
【教师分析总结】:该程序缺少代码。上节课我们只完成了界面设计部分,其实程序设计还有一个更重要的部分,那就是代码设计。[板书] 界面设计代码设计打个比方:就好像一只手表只有表壳和表带,而没有机芯,是无法正常工作的。所以两者齐全才可以成为一个真正的程序。[板书] 我的第一个VB程序
新课讲授: 创设情境 剖析代码
【教师操作并讲解】:(创设情境)那么代码该怎样编写呢?我们可以首先模拟前台,对于用户而言,输入被加数和加数后,用户希望单击计算按钮,可以从第三个文本框中看到计算结果。所以,代码添加在按钮里,双击计算按钮。机器会自动添加两行代码,代码的主体就在这两行中间添加。【教师讲解】:(知识迁移)由于同学对数学题目的解题步骤比较熟悉,我们姑且把它当作一道数学题来解答。首先,我们分析一下,题目中涉及到几个变量? 【学生回答】:
【教师讲解并操作】:在VB中,用到的变量应该先定义后使用,现在我们来定义这三个变量,假设我们分别以变量a,b,c来表示被加数、加数及和。先定义变量a,定义语句的格式为:dim 变量名 as 类型,所以语句为:dim a as single , 这里的single为实型,相当于数学里的实数。【教师提问】:那么变量b和c应该怎样定义呢? 【学生回答,教师演示】:dim b as single
dim c as single 【教师提问】:a,b,c三个量中哪些是已知条件?在数学题里已知条件被加数和加数由题目提供,而我们的程序被加数和加数是由谁提供的呢? 【学生回答】:用户 【教师提问】:那么用户把被加数填写在哪呢? 【学生回答】:
【教师讲解并操作】:所以a的值为text1.text,a=text1.text。那么b的值应该如何获取呢?请一位同学回答。【学生回答】: 【教师提问】:至此,我们已经知道a和b的值了,那么如何通过已知条件求解出c呢?请一位同学在教师机上演示。【学生操作】: 【故设悬疑】:程序编写到这里是否行了呢?同学的意见出现了分歧,都说实践是检验真理的唯一标准,那么我们就让机器来验证吧 【教师运行程序】: 【教师讲解】:程序并没有如我们所料想的那样显示结果,事实证明我们的程序存在一些小问题,那究竟是哪里出错了呢?正如同学们知道的,我们其实已经把和的值求出来了,可是程序为什么不显示结果呢?对!我们把求出来的结果存放在变量c中,而对于用户而言,并不知道变量c的存在,他只关心第三个文本框,所以,我们还应该将变量c显示在第三个文本框中。现在再请一位同学在教师机将代码修改正确。【教师分析总结】:一个完整的代码通常包括这样几个部分: 定义变量 输入 处理 输出
给次按钮Command2添加代码:End 【课堂实践一】:独立完成加法程序(提供界面和代码图片)
【展示学生程序】
举一反三 解决新问题
【课堂实践二】:已知圆的半径,求圆的周长和面积。(为节约时间,界面已提供)【教师巡回指导】
展示评价
【展示学生程序】老师不但可选成功的程序,也可选取较不成功的作品,但要有典型意义。
【学生评价】 【教师评价】
总结并提出希望
【教师总结】一直以来,在我们的印象中,编程是件很难的事。可是通过加法程序这部分内容的学习我们发现编程也是有章可循的,希望通过这节课的学习,同学们能喜爱上编程,让程序学习变成一件快乐的事。
第五篇:连乘应用题教学设计
教学内容:青岛版教科书三年级上册“用连乘的方法解决问题”。教学目标:
(1)结合现实情境,感知一般连乘应用题的特征,会口述解题思路,学会用连乘的方法解决问题,进一步体会连乘式题的运算顺序。
(2)运用直观策略培养学生自主获取信息、提出问题、发现问题的能力,通过对条件、问题关系的思考,提高分析、综合的思维能力。
(3)在解决问题的过程中,初步学会分析问题的方法,体验解决问题策略的多样化。
(4)使学生感受到生活中处处有数学问题,激发学生学习数学的兴趣,培养学生进一步的数学应用意识。
教学重点:结合现实情境,学会用乘法解决两步计算的问题。教学难点:在解决问题的过程中,体验解决问题策略的多样化。
教学过程:
一、复习旧知,铺垫新知
师:同学们,我们都知道,“温故”才能“知新”,学习新知识之前,我们先来复习一下学过的知识。(投影出示)
用 划出已知条件,用 划出问题,然后列式计算。二年级一班有9个小组,每组4人,一共有多少人? 向雅安地震募捐平均每人捐款5元,全班一共捐款多少元?
师:噢!也就是先划出条件和问题,再列式计算。默读题目,会做吗?(在学生做的过程中,教师提示学生如何找的条件和问题)
学生交流答案后,教师可问学生:还有问题吗?
(学生可能会问,解决问题不是至少要有两个已知条件,第二个问题怎么只有一个已知条件?如果学生问不出这个问题,教师可以提问。)
【设计意图:这里的“复习”用作铺垫,一是检测一下学生根据数量关系解决问题的能力,二是让学生弄清条件和问题是什么?因为接下来要学习的连乘问题,必须让学生明白其中两个条件的组合,可以寻求中间问题,从而解决最后的问题。这一环节的设计无论是在知识方面还是学习心理方面,都给学生搭了一个台阶,为后面的学习奠定了很好的基础。】
二、分析信息,解决问题
1、动态出示信息图,整理条件和问题
师:同学们,你们去过绿色生态园吗?看生态园里有很多美丽的花朵。(课件出示信息图)有粉色的、黄色的,还有红色的。三种颜色的花同样多,漂亮吧!这里面还藏着数学信息呢!你能说说还有哪些数学信息吗?(有的会发现每行有8盆,还有的会发现每种花有5行。)(根据学生发言,随机形成板书:三种颜色的花同样多,每种颜色各摆5行,每行8盆。)
师:看到这些信息,你能提出哪些数学问题?
(如果学生提出:每种颜色的花各多少盆?直接让学生解答,如果学生提出:三种颜色的花一共摆了多少盆?则板书。)
抽生完整地读一下这道题。
【设计意图:在动态出示信息图后,让学生通过观察找出需要的数学信息,并提出数学问题,将题目完整地呈现给学生,为接下来的分析问题做好了前期的准备。】
2、独立分析,解决问题
师:到底三种颜色的花一共有多少盆呢?(课件出示:由实物图到点子图的变化)你能借助点子图来圈一圈、画一画,然后把你的想法用算式写下来吗?
学生借助点子图独立分析、解决问题。教师巡视,注意搜集学生不同的解决方法。
3、交流讨论,算法多样
师:谁能借助点子图向大家介绍一下自己的方法。预计生可能出现:
第一种:先算一种颜色的花有几盆,再算3种颜色的花有几盆?
8×5×3=120(盆)
第二种:先求一大行有几盆,再求5大行有多少盆? 8×3×5=120(盆)
第三种:先求一共有多少行,再求一共有多少盆? 5×3×8=120(盆)
(这里是学生第一次学习用综合算式解决问题,教师在交流反馈环节,引导学生列综合算式解决问题。)
(如果有错误方法,可以在巡视时搜集,展示出来,让学生发现问题,并分析问题)
【设计意图:允许学生有不同的算法,是算法多样化的实质,体现了“用不同的方法学习数学”的思想。这一环节中,要让学生去思考、去议论、去探索,在引导学生自己介绍选择的方法及理由的同时,促使学生在交流中反思,在反思中进一步梳理了解题思路。】
4、比较归纳,总结方法
师:这个问题咱们已经解决了,写上答句就可以了。咱们同学真了不起,解决同一个问题找到了三种不同的方法。下面我们一起回顾一下,(课件回顾)
师:仔细观察,(教师指课件和板书)你发现了什么?
(学生可能会发现三种方法的不同点和相同点,如果学生发现不了问题,教师可启发学生:三种方法之间„„)
(学生找不同点时,会发现三种方法的“先算什么”也就是中间问题不同;学生找相同点时,教师引导学生明确连乘问题的基本结构,并板书课题:“用连乘的方法解决问题”)
师:同样是用连乘的方法解决问题,从不同的角度思考,就会有不同的方法。大家再来看,在分析问题的过程中,是什么帮了我们的大忙?是啊!我们以后解决问题的时候,咱们也可以利用这种画一画的方法来分析问题。
【设计意图:在学生通过独立思考,交流讨论后得出不同的解决方法后,教师引导学生观察、分析、比较,让学生在自主探究、交流比较中感悟到思考的角度不同,就可以得到不同的方法。】
三、巩固新知,拓展应用 1.队列问题
师:同学们再请看,(课件)知道这是什么时候的情景吗?国庆大阅兵。多么壮观,多么振奋人心呀!前段时间,我们学校举行了一次“学做小军人”的队列比赛,看!这是二年级的参赛情况,谁来读读,会做吗?
师:请同学们借助示意图思考,有困难的同学可以在示意图上圈圈画画,然后在下面 列式计算。
(交流时学生有不同方法,在学生对照示意图解释完算式后,教师用笔连到对应的算 式上。)
2.做贴画(教材自主练习1)
做一朵花需要6个贝壳,做这样的8张画需要多少个贝壳?
抽学生读题后,教师问,做8张画需要多少个贝壳?(学生可能会脱口而出:48个)
师反问:你们同意吗?(期待学生会发现问题,即还需要一个隐含的信息,即:每张画有5朵花,根据学生回答,课件补充完善问题,再让学生解决。)3.讲数学故事
师:同学们喜欢听故事吗?那我们来讲讲数学故事吧!就讲用连乘解决的数学故事。
(课件:每只羽毛球4元,一盒有6只羽毛球)你能接着讲完吗?(抽生解答)就像这样,你能再讲一个用连乘解决的数学故事吗?
【设计意图:第一个练习是仿例练习,由国庆大阅兵引入,旨在巩固新知,同时进一步体验连乘问题的结构及解决方法;第二个练习,为学生提供一个有隐含信息的问题,让学生在解决的过程中去发现问题、解决问题。第三个练习安排了讲数学故事的练习,通过讲故事使学生深刻理解连乘问题的数量关系,培养学生在生活中发现问题、提出问题的能力。】
四、归纳总结,提升思考
师:好了!同学们结合板书回想一下这节课我们学过的知识,你有什么新的收获,说出来和大家分享一下,有什么疑惑也说出来,我们共同解决。
师:看来大家的收获还真不小,不但解决了生态园中的数学问题,还弄清了连乘算式的运算顺序,学会了用连乘的方法解决问题。学完这节课,你还有什么新的问题或困惑吗?
有的同学还能从不同的角度思考问题,解决问题呢,很了不起!以后我们还会学到更多的解决问题的方法,相信大家会有更大的收获。这节课就上到这里!
【设计意图:板书是对教学内容的加工和提炼,不仅将教学内容结构化,而且突出了教学的重点和难点。这里引导学生根据本节课的学习,结合板书内容,谈谈自己的收获或疑惑,培养了学生归纳总结、提升方法的能力。】