C语言程序设计课程的线上线下混合式教学模式
2022-12-06朱子楠
张 竞 朱子楠 梁 晗 张 丽
咸阳师范学院计算机学院 陕西咸阳 712000
在C语言程序设计课程中,基于雨课堂、阿尔法等教学平台,经过精心设计的线上线下教学混合式教学模式的步骤:创设场景,激发学生的学习兴趣和动力→适应场景,养成良好的学习习惯→内化场景,形成专业能力→升级场景,形成专业技术→升华场景,上升为专业艺术。通过这样小步慢走的进步,希望能够更好地、超预期地完成C语言程序设计课程的教学任务。
1 在线上,教师引导学生在实际中遇到问题或者发现问题,激发学生想解决问题的兴趣和动力
例如,在C语言程序设计课程的循环模块教学中,给学生提出如下三个问题:
例1-1 已知一个数列的第n项an=3n+2,计算该数列的前n项和sn。
例1-2 已知一个数列的第n项an=a*n+b(a和b都是常量),计算该数列的前n项和sn。
2 在线上,教师指导学生找到解决问题的方法或者探索解决问题的方法,使学生提高环境适应能力
不提倡任课教师直接给出解决问题的方法答案,课上首先让学生自己寻找或者探索解决问题的方法,然后教师再提供参考答案(培养学生自学能力和环境适应能力)。
例如,引导学生自己通过教材、书籍、网络等自学或请教别人,寻找探索计算数列的前n项和sn的方法。
步骤1 首先,学生寻找探索计算数列的前n项和sn的方法。
步骤2 然后,教师再提供计算数列的前n项和sn的参考答案。
例1-1 已知一个数列第n项an=3n+2,计算该数列的前n项和sn
方法1 使用while语句的循环程序实现
#include
int main()
{ int n,k=1,an,sn=0;
printf("n = ");
scanf("%d",&n);
while(k<=n)
{ an=3*k+2;
sn=sn+an;
k++;
}
printf("sn = %d ", sn);
return 0;
}
方法2 使用for语句的循环程序实现
#include
int main()
{ int n,k,an,sn=0;
printf("n = ");
scanf("%d",&n);
for(k=1;k<=n;k++)
{ an=3*k+2;
sn=sn+an;
}
printf("sn = %d ", sn);
return 0;
}
例1-2 已知一个数列第n项an=a*n+b,计算该数列的前n项和sn(a和b是常量)。
方法1 使用while语句的循环程序实现
#include
int main()
{ int a,b,n,k=1,an,sn=0;
printf("a b n = ");
scanf("%d%d%d",&a,&b,&n);
while(k<=n)
{ an=a*k+b;
sn=sn+an;
k++;
}
printf("sn = %d ", sn);
return 0;
}
方法2 使用for语句的循环程序实现
#include
int main()
{ int a,b,n,k,an,sn=0;
printf("a b n = ");
scanf("%d%d%d",&a,&b,&n);
for(k=1;k<=n;k++)
{ an=a*k+b;
sn=sn+an;
}
printf("sn = %d ", sn);
return 0;
}
3 在线下,学生积累解决问题的场景或者拓展解决问题的场景,使学生的适应能力上升为专业能力
首先,通过努力,学生初步探索尝试性地解决了一个新问题,然后需要独立使用该方法解决一定数量的同类问题,才有可能基本掌握这类解决问题的通用方法。因此,需要学生自己独立解答下面这些练习题并需要做更多的练习题:
习题3-1 计算自然数列1,2,3,4,5,6,7,8,…的前n项和sn。[1]
习题3-2 计算斐波那契数列1,1,2,3,5,8,13,21,34,55,…的前n项和sn。[2]
步骤1 学生最好能独自设计出上面的练习题程序(训练学生独自设计程序能力)。
步骤2 教师给出设计上面的练习题程序的参考答案,供大家参考。
习题3-1 计算自然数列1,2,3,4,5,6,7,8,…的前n项和sn。[1]
方法1 使用while语句的循环程序实现
#include
int main()
{ int n,k=1,an,sn=0;
printf("n = ");
scanf("%d",&n);
while(k<=n)
{ an=k+1;
sn=sn+an;
k++;
}
printf("sn = %d ", sn);
return 0;
}
方法2 使用for语句的循环程序实现
#include
int main()
{ int n,k,an,sn=0;
printf("n = ");
scanf("%d",&n);
for(k=1;k<=n;k++)
{ an= k;
sn=sn+an;
}
printf("sn = %d ", sn);
return 0;
}
习题3-2 计算斐波那契数列1,1,2,3,5,8,13,21,34,55,……的前n项和sn。[2]
方法1 使用while语句的循环程序实现
#include
int main()
{ int a1=1,a2=1,k=3,n,an,sn=a1+a2;
printf("n = ");
scanf("%d",&n);
if(n==1) sn=a1;
else if(n==2) sn=sn;
else while(k<=n)
{ an=a1+a2;
sn=sn+an;
a1=a2;
a2=an;
k++;
}
printf("sn = %d ", sn);
return 0;
}
方法2 使用for语句的循环程序实现
#include
int main()
{ int a1=1,a2=1,k,n,an,sn=a1+a2;
printf("n = ");
scanf("%d",&n);
if(n==1) sn=a1;
else if(n==2) sn=sn;
else for(k=3;k<=n;k++)
{ an=a1+a2;
sn=sn+an;
a1=a2;
a2=an;
}
printf("sn = %d ", sn);
return 0;
}
4 在线下,学以致用,培养学生对知识的应用能力
在线下,通过学生使用可以更新的题库平台,测验检查并训练学生更正确、更规范地运用知识解决问题的应用能力,使自己的专业能力逐步不断地向专业技术方面升级。
学习的目的,是为了应用,在线下通过认真做题库的测验检查,训练并提升学生掌握专业技能的熟练程度。学生一旦通过测验检查,就有可能把知识内化成自己的技能,创造更高的价值。
学生会做题,并不能保证逻辑合理、过程规范、方法简捷、结果正确。只有通过不断地超大量的正规测验检查的训练,才有可能使得自己的专业能力升华为专业技术。
在C语言程序设计课程教学中,伴随着题库升级,学生不断地使用雨课堂和阿尔法平台测验检查,只有累积测验成绩的平均分不低于80分的学生,才可以通过本门课程的正规测验检查。
方法1 雨课堂平台的测验检查
方法2 阿尔法平台的测验检查
5 为学生开放线上线下可共享的随时交流平台
学生可以通过面对面或者电话、QQ、微信、邮件等方式进行交流。通过交流,在老师启发、引导下,唤醒学生的意识,使学生在学习上获得顿悟,突然理解了知识点,使学生的专业知识技术升华为专业艺术。
改进C语言程序设计课程的教学方法,除了采用线上线下混合式教学模式以外,也需要借鉴一些优秀教师的教学方法,关注最新的教学技术发展,不断引入新的理论知识,对自身的教学内容进行更新,还需要根据学生自身的个性特点,提高教学的趣味性,让学生对课程产生喜爱,激发学生的兴趣。要与时俱进,跟上时代的步伐,增强学生主动探索能力和对知识的综合应用能力,改进课程教学方法,达到提高课堂教学的效果。