欢迎来到专业的尚善文档网平台! 工作总结 工作计划 读后感 发言稿 心得体会 申请书大全 思想汇报 述职报告
当前位置:尚善文档网>范文大全 > 礼仪知识 > 以内存知识为线,以软件工程为导向,教好C语言

以内存知识为线,以软件工程为导向,教好C语言

时间:2022-05-03 18:40:03 浏览量:

摘要:本文就C语言教学中,C语言与内存和软件工程的联系和关系展开论述。

关键词:C语言;内存;软件工程

中图分类号:G642 文献标识码:B

C语言具有语言简洁、紧凑、运算符和数据类型丰富、结构化的控制语句和直接访问物理地址以及生成目标代码执行效率高等特点。虽然随着大型软件开发的需要,面向对象的编程语言(如c++,Java等)成为当下学习的热点,但是面向对象的编程基础是面向过程的程序设计方式。另外,C语言适合作为系统描述语言,它既可以编写系统软件,又可以编写应用软件。所以,C语言仍然是目前国际与国内各大专院校广泛采用的软件编程教学语言。

无论是讲解还是学习,C语言都比其它语言难以把握。许多一线教师都反应C语言难教,无论讲得多好,学生都难以理解其中的知识点,更不用说编程了。怎样教好C语言,使学生轻松、透彻、系统地掌握其中的基础知识,养成良好的编程习惯,逐步建立起软件工程的编程思维方式,一直困扰着广大的师生。

在长期的教学实践中,通过与学生的交流和不断的总结,我发现如果单纯地讲解课本知识(谭浩强教授编著的《C程序设计》),学生对于基础知识和程序编写都很难系统的理解和掌握。其实,C语言可以分为两部分来讲解,一部分是基础知识,一部分是程序设计。基础知识包括各种数据类型、变量以及语法知识,数据类型的定义与使用以及变量的引入等都与内存有关;语法知识可以站在软件工程的高度来表述。程序设计主要与软件工程和算法有关,与内存知识也有着千丝万缕的联系。

首先,探讨一下有关C语言基础知识与内存和软件工程的关系。

1 基础知识与内存

在教学过程中,教师应注重知识的陈述和引入。那么怎样把C语言和内存知识及作用联系起来呢?随着计算机知识的普及,无论是计算机专业还是非计算机专业的学生,都知道计算机是用来处理数据的,而且处理数据的硬件是CPU,由此向学生展开讲解计算机的工作原理。在讲解计算机工作原理的过程中,得到一个结论:内存在计算机处理数据的过程的中有着非常重要的作用--内存是数据的中转站,任何出入CPU的数据都必须经过内存。也就是说,要处理的数据先要放入内存,才能再传给CPU处理;CPU处理完的数据,也要先转入内存再传输给别的设备。程序设计的目的就是利用计算机处理数据,既然要处理数据,就应该先把数据放入内存中。无论程序复杂还是简单,设计完美或一般,先要解决的问题是怎样把数据放入内存中,然后才是具体的编程解决方案

C语言的基础知识主要是解决如何把现实世界中的各种数据放入内存,交给计算机配合程序进行处理。C语言定义了各种数据类型,一方面是为了解决实际需求,另一方面是为了实现准确的对内存写入和取出数据。(如图二所示)C语言使用类型标识符(如int,float等)和存储类别符号(如auto,static等)来控制数据占用内存空间大小和在内存中的生存期,使用变量名与内存地址进行挂接,这样就能把相关数据存入内存并能正确的从内存中取出,和程序结合进行处理了。例如:int a;a=1;这两句C语句,第一句的作用是在内存中获取两个连续的字节空间,并把变量a与两个字节的首地址1001联系起来,第二句的作用是利用赋值运算(=)把1这个数据放入内存中,当程序要使用这个数据时就能够直接把它从和a相联系的内存中取出。其他数据类型标记符在C语言中的作用如同int类型标记符一样,都是为了合理的把不同类型数据存入和取出内存而设计构造的。

这样,在引入计算机工作原理特别是内存知识和作用后,教师就可以以点带面完成基础知识地讲解,学生也能够利用内存这根线把基础知识(如为什么要用变量,类型标记符的作用等)系统、牢固、深入地掌握好。

2 基础知识与软件工程

基礎知识看似与软件工程没有关系,恰恰相反,站在软件工程的角度来讲解C语言,会使得学生从更高层次学习软件设计,学好编程。例如上面的两个语句:int a;a=1;目的是为了把1这个数据写入内存,但是完成这个任务是visual c++或者turbo c++等编译系统。像int,=等这些符号都可以看作是面向对象中的类等,特别是大量的函数以及c语句语法都是软件工程的体现。在学生有了一定的编程基础后,把基础知识与编译系统结合在一起讲解,有利于学生在编写软件时拓宽思路,更早地进入软件工程的领域。

其次,探讨一下有关编写c程序与内存和软件工程的关系。

1、编程与内存知识

编写软件往往先演化为各种算法,然后再转化为能用编程语言描述的程序。在从数学算法转化成实际程序时,或多或少的要涉及到内存知识的运用。有时两者相结合,才能设计出符合要求的程序。下面,以两数互换为例讨论编程与内存的关系。

用数学算法,完成两数互换这样表达(如果两个数分别是a与b):

a=b;b=a;

但是用C语句,这么做无法实现互换要求

a对应的内存所存数据2,在经过a=b赋值后,2已经不复存在。解决方案只能是先把存放在与a相对应的内存中的数据保留下来,再执行a=b的运算,最后把预先保存的a原值再赋给b,完成a与b的互换。

这就是为什么引入第三变量的原因,也是编程与内存关系的典范示例。把图画完、讲完,学生也随之明白了程序设计与内存的关系,为学好编程打下一定的基础。

2. C语言编程与软件工程

对于初学者来说,学习编写程序是一个循序渐进的过程,最终都会上升到软件工程的高度。面对复杂多变的问题,我们要教给学生编写程序的"思路"和"套路",让学生逐渐领悟软件工程的理论思想。

在解决怎样编程的问题上,我给学生总结编程为四个字:"核心"与"扩展"。"核心"就是找到问题最先要解决的内容,实际上就是算法。"扩展"就是把程序完善。在软件工程上,就是由"小"到"大"的编程思想。这种做法,表面上看不符合现代编程发展的方向。但是,无论多么复杂的软件,按照系统分析后,把"大"拆"小"后,在面对一个个模块或类时,我们还是先要找到解决问题的核心-对应的具体算法,再扩展为完整的程序。在面向对象的编程方式大行于天下时,C语言的面向过程编程方式并没有过时,它还是每个类中具体的编程方法。下面以求素数为例,说明由"小"到"大"的编程方法。

参考文献

[1]谭浩强.《C程序设计(第三版)》[M] .北京:清华大学出版社,2009:1.

作者简介:谢宗仁(1973-),男,山东省青州市人,山东冶金技术学院讲师,硕士,主要从事计算机教学研究。

推荐访问: 软件工程 导向 内存 语言 知识