时间:2022-09-08 01:21:55
【前言】学习程序和算法要让学生开放思维,绝不能禁锢思想由文秘帮小编整理而成,但愿对你的学习工作带来帮助。①用循环把十个数输入到数组中。 ②从A[1]到A[10],相邻的两个数两两比较。 ③在每次的比较中把大的放在前面,若在后对换,若在前边则不用。 5 6 4 3 7,5和6 比较,交换位置,排成下列顺序: 6 5 4 3 7,5和4比较,不交换。 6 5 4 3 7,4和3比较,不交换。 6 5 4 3 7...
摘 要:我校开设算法和程序设计课程一年来,据学生学习调查及考核情况来看,存在一些问题。对于高中阶段学生和初学者来说,不可能让每个学生成为程序老手,但至少要让学生会分析问题,找到解决问题的方法。
“编程不思考,等于吃饭不消化”,因此,学习程序和算法,在高中阶段让学生学会如何去解决问题的方法,养成良好的行为习惯。
作为程序员,良好的习惯是制胜的法宝。编写程序前的分析思考和编写程序及调试,前者是漫长的黑夜,后者就是黎明。没有黑夜就没有黎明的到来。在此为大家举一个很小的例子。
课堂上要求学生解决问题“编程输入十个正整数,然后按照从大到小的顺序输出”。学生在拿到这个任务后首先做的应该是对问题的分析,第一我们要得到一组数,然后要实现对这组数的降序输出,此时想到没有现成的函数,那么就要做出大小的判断,并且降序排列。大小的判断可以用比较,交换位置使用交换,正好可以使用上节课学习的交换的过程。有学生用自然语言做出了操作步骤。
①用循环把十个数输入到数组中。
②从A[1]到A[10],相邻的两个数两两比较。
③在每次的比较中把大的放在前面,若在后对换,若在前边则不用。
5 6 4 3 7,5和6 比较,交换位置,排成下列顺序:
6 5 4 3 7,5和4比较,不交换。
6 5 4 3 7,4和3比较,不交换。
6 5 4 3 7,3和7比较,交换位置,排成如下顺序:
6 5 4 7 3,经过以上步骤后最小的数放在了最后。
同样经过十轮比较之后就完成了整个任务。
更有一些同学做完算法设计后已经进行了编程。其中一名同学的程序如下:
Program xeam10;
Const n=10;
Var a:array[1..n]of integer];
I,j:integer;
Procedure swap(var x,y:integer);
Var t:integer;
Begin
T:=x;x:=y;y:=t;
End;
Begin
For i:=1 to n do
Begin
Write(I,’:’);
Readln(a[i]);
End;
For j:=1 to n-1 do
For i:=1 to n-j do
If a[i]
For i:=1 to n do
Write(a[i]:6);
Readln;
End.
很快学生完成了程序的编写,并且进行了调试。
反过来如果不进行完整的分析,就不可能很顺利地完成。
不同的学生有不同的思维,有不同的解决问题的方法,同一个学生站在不同的角度也有不同的方法,因此课堂需要学生能够从不同的角度去分析解决问题。同样笔者也举一个小例子。
设计程序交换两个变量的值
一学生做出了直接交换变量的程序。
Program exam521;
Const a=5;b=8;
Var c:integer;
Begin
C:=a;a:=b;b:=c;
Writeln(‘a=’:8,a,’b’:8,b);
Readln
End.
对于这个学生的程序虽然调试出现了错误,但他的想法很好,我们也可以借助自定义函数和过程来完成。该学生只要把change定义为过程就可以了(他定义的是函数)。
由此观之,我们应该调动学生的积极性,发挥学生的想象与智慧,不拘一格。作为高中阶段的教学也应该从这方面出发。让我们的学生掌握解决问题的方法,认识问题求解方法的多样性。
总之,高中阶段的学生思维活跃,开设程序课程目的应在于让学生学会方法,掌握正确的解决问题的方法,形成良好的习惯。
作者简介:张江江,男,1982年出生,本科,就职于陕西丹凤中学,信息技术教师。