0 引言
多媒体技术的发展使教学活动发生了显著的变化,许多先进的教学设备和教学软件系统纷纷走进了今天的课堂[1],教师的地位在发生着悄悄的变化,为了提高教学效率,针对不同的课程选择合适的教学手段成为了教师要思考的问题。增强学生学习的积极性,活跃课堂的气氛,将教学内容变抽象为具体、变难懂为易懂,可以取得简明高效的教学效果。本文针对C 语言教学之中存在的具体问题,作了深入分析,提出了使用MATLAB 来辅助教学活动的方案[2],实践表明,该方案可以解决上述问题。
1 C语言和MATLAB的特点
C 语言和其它计算机语言相比,具有很多自己的特点。例如它有丰富的数据类型,有自己独特的运算符,如++,--,有功能强大又很神秘的指针和编译器;它还有许多和程式逻辑息息相关的操作是编译器定义加上去的,使惯于循序思考的学生容易不知所措,总之C语言具有自己独特的特性,对于没有相关背景的初学者,难度很大[3]。
强大的绘图功能是MATLAB 的特点之一,这是C语言不具备的。它提供了一系列的绘图函数,即使是初学的用户,只需要掌握一些基本参数就能得到所需图形[4]。此外,MATLAB 可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等,它包含了许多制作动画和视频常用的函数,用户可以很方便的使用这些函数实现自己的目的而不必去思考具体的实现细节。
针对C 语言教学之中的种种问题,接下来本文将会结合具体案例进行仔细分析。
2 使用MATLAB解决C语言教学问题的案例
2.1 循环语句之for循环用法
循环结构可以将重复书写的代码的变得简单,用来描述重复执行某段过程的问题,这是程序设计中可以充分发挥计算机特长的程序结构,C 语言中主要包含四种循环,即goto 循环、while 循环、do while 循环和for 循环。
在MATLAB 中,最基本而且应用最为常见的绘图函数为plot,利用它可以在二维平面上绘制出各种曲线。为了说明for 循环的作用,本例子用MATLAB 绘制了5 个不同颜色的同心圆,图1 演示了使用for 循环绘制5 个同心圆的过程。
图1 使用for循环绘制的同心圆
其中,x 和y 是单个圆进行40 次采样的位置坐标数组,C 是设置颜色的数组,从图形可以看出,使用MATLAB 可以方便的绘制出不同色彩的图形方便学生理解,弥补了C 语言的不足。
2.2 函数递归之汉诺塔问题
函数递归是一种强大又复杂的编程技巧,它将大的问题分解为一组相似的小问题,每个小问题都有一个简单解。递归函数是会直接调用自身的一种函数,一般来说,递归函数反复调用自身直到问题最终解决。
“汉诺塔”是程序设计中一个经典的递归问题,是一个著名的益智游戏,描述如下:塔上有A、B、C 三根柱子和直径依次递减的空心圆盘,开始时A 柱子上的所有圆盘都按从大到小的顺序排列,通过每次移动一个圆盘到另一根柱子上,最终把所有圆盘移动到C 柱子上,过程中大的圆盘不能放在小圆盘上[5]。使用C 语言可以求出汉诺塔移动的过程,可是由于缺少绘图API,无法将整个运行流程动态的展现出来,因此本文采用了MATLAB 语言来编程实现这个问题。
首先是MATLAB 写的汉诺塔递归函数hanoi.m 文件,在这个函数里面引用了绘图函数arr.m。
其次是绘图函数文件arr.m,这个函数分别绘制了三个柱子上的圆盘放置情况,以及动态的变化过程,其中a,b,c 是三个存放盘子信息的数组,pause(2)是程序休眠;clf 代表清屏。
最后是程序启动的运行代码。
图2 使用MATLAB制作的汉诺塔演示动画
图形动画演示如图2 所示,左边是程序开始的截图,右边是程序运行结束的图形,从图形里可以看出,整个汉诺塔包含三根柱子,从左边挪到右边大概需要3分钟,层数越多,程序运行需要的递归次数越多,因而时间也越久。动画完整地展示了汉诺塔的运行流程,可以说MATLAB 让复杂的数学问题变得清晰易懂。
2.3 具体应用之动态规划问题
动态规划是求解决策过程最优化的数学方法,日常生活之中经常会碰到需要求解结果最优的问题,由于这类问题涉及到的技巧性,使用C 语言研究多阶段决策过程的优化问题,在各类编程竞赛和数学建模之中屡见不鲜[6]。最优化原理把多阶过程转化为一组简单的单阶段问题,利用各阶段之间的关系,逐个求解,这就是动态规划。
文章来源:《电脑编程技巧与维护》 网址: http://www.dnbcjqywh.cn/qikandaodu/2021/0301/729.html
电脑编程技巧与维护投稿 | 电脑编程技巧与维护编辑部| 电脑编程技巧与维护版面费 | 电脑编程技巧与维护论文发表 | 电脑编程技巧与维护最新目录
Copyright © 2018 《电脑编程技巧与维护》杂志社 版权所有
投稿电话: 投稿邮箱: