C语言程序设计教学解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计教学解析
金献忠
(江阴职业技术学院,江苏江阴214433)
[摘要]C语言是学习计算机程序设计的首选入门语言,其应用十分广泛,通过多年的C语言教学得到了一些教学心得,在此与大家分享。
[关键词]C语言;程序设计;C语言变量
[中图分类号]G712[文献标志码]A[文章编号]2096-0603(2020)04-0178-02
学过编程语言的读者都知道,编程语言与程序设计是两个不同的概念,编程语言从低级到高级种类繁多,是程序员与计算机交互的工具;而程序设计是程序员运用编程语言编写的控制计算机运行的方法,描述的是计算机对某种数据处理的过程与步骤,编程语言与程序设计的关系相当于人类语言与人类大脑思想之间的关系。
在教学过程中,要准确把握教材编排的内容,着重讲解C语言的数据结构、词法、语法和句法及它们的功能等,也就是C语言使用的整套规则和方法上,即它所具有的工具属性,而程序设计方法可以介绍得相对简单一些,初学者只要掌握简单程序编写的方法,复杂的程序设计方法需要程序员专门学习和大量的实践经验才能获得。
下面我将就C语言程序设计教学过程中的一些概念谈谈自己的心得。
一、C语言词法元素使用的要点
C语言的词法元素是指C程序中出现的程序实体名称,包括标识符、关键字、运算符、分隔符等,是构成C程序语句不可或缺的成分。
C语言对各个程序实体名称规定了相应词法规则,例如:标识符的命名规则,分隔符的输入规则等,初学者往往不遵循规则而导致在开发程序时无法编译执行,这在教学过程中必须反复强调。
对变量名、函数名、数组名等标识符与关键字的区别,可以从定义主体上加以区分记忆,标识符是程序员在编写程序时自行定义的程序实体名称的统称,关键字则是C编译系统预先定义的具有特定含义的单词。
运算符是计算机处理数据时告诉编译程序执行特定算术或逻辑操作的符号,C语言系统有一套比较丰富的运算符,共有34种,运算符知识的学习除掌握其功能以外,还必须把握运算符的优先级和结合性两个属性。
运算符的优先级是指C语言规定了复合运算表达式中数据参与运算的次序与运算符的关系,其规则可用口诀记忆:“圆方括号、箭头一句号,自增自减非反负、针强地址长度,乘除,加减,再移位,小等大等、等等不等,八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。
”其中每个逗号为一个等级分段。
注释如下:“圆方括号、箭头一句号”指最高的第15级运算符,其中圆方括号指“()、[]”,“箭头”指的是指向结构体成员运算符“->”,“句号”指的是结构体成员运算符“.”;“自增自减非反负、针强地址长度”指的是第14级的运算符,其中“非”指的是逻辑运算符“!”,“反”指的是按位取反运算符“~”,“负”指的是负号运算符“-”,“针”指的是指针运算符“*”,“强”指的是强制类型转换运算符,“地址”指的是地址运算符“&”,“长度”指的是长度运算符“sizeof”;“乘除,加减,再移位”移位指的是左移运算符“<<”和右移运算符“>>”,其中除法还包括取余运算符“%”;“小等大等、等等不等”:“小等大等”指的是第10级到第9级的运算符;<、<=、>和>=,“等等”是指等于运算符“==”,不等指的是运算符“!=”;“八位与,七位异,六位或”:“八位与”指的是第8级按位与运算符“&”,“七位异”指的是第7级按位异或运算符“^”,“六位或”指的是第7级按位或运算符“|”;“五与,四或”指的是第5级、第4级的逻辑与运算符“&&”和逻辑或运算符“||”;“三疑,二赋,一真逗”:“三疑”指的是第3级到第1级的运算符,三疑指的是条件运算符“?:”(“三”有双重含义:既指优先级为三,还指其参与运算的数据的个数为三),“二赋”指的是赋值运算符,包括复合赋值运算符,“一真逗”指的是最低级的第一级运算符“,”。
还要指出的是,多义性运算符在不同的语境中有不同的功能及作用,如“&”符号可以表示取地址运算,也可以表示位与运算,还可以表示逻辑与运算的一部分,这一点务必提醒初学者。
运算符的结合性指运算的方向,在C语言中有自左至右和自右至左两种结合方式,大家只要记住一个规律:单目运算符、条件运算符和赋值运算符是自右至左结合,其他算术运符都是自左至右结合。
二、C语言变量定义的意义
在教学过程中,除了讲解定义变量的语法,还要解释定义变量的意义,这里简单说明一下:(1)从程序员的角度看,编写一个简洁高效的程序让计算机处理数据是重要的,程序员编程时一定会根据处理的数据的种类合理选择合适存储空间及格式,即数据结构,而变量的类型正是数据结构的体现。
(2)从计算机硬件角度看,由于计算机的硬件资源相对有限,为便于系统合理管理
作者简介:金献忠(1970—),男,汉族,江苏江阴人,江阴职业技术学院电子信息工程系讲师,现主要从事应用电子实验和教学研究工作。
178--
. All Rights Reserved.
内存资源,系统以定义数据类型的方式来确定变量的作用域或生存期,适时分配和回收内存资源,减少不必要的内存开销,提高程序执行的效率。
(3)变量定义还隐含约定了该变量能否参与某种类型的数据运算,如算术运算中的求余运算只能整型数据参与,而实型数据是不能进行求余运算的。
三、C语言变量访问的方式归纳
变量在内存中存储数据的写入和读出统称为对变量的访问,访问的途径可以是直接访问,也可以是间接访问,其实质都是系统由变量对应的内存单元地址对内存单元进行数据操作。
在形式上,数据写入的句法有三种:(1)通过标准输入函数(如scanf())实现;(2)通过对变量赋值实现;(3)通过定义变量时对
变量初始化实现。
数据读出的句法有两种:(1)通过标准输出函数(如printf())实现;(2)计算机处理数据时,变量在表达式中参与运算,其内容将被系统直接读出。
值得注意的是,C语言本身不提供输入输出语句,终端与主机之间的输入与输出都是通过调用C标准函数库中的函数来实现的。
C编译系统不提供输入输出语句是为了C编译系统的简单化,避免处理与硬件相关的问题,达到通用性强,可移植性好,便于在各种计算机上实现的目的。
对变量访问概念和形式的描述这里只作简单的罗列归纳,是初学者必须掌握的基本知识,不再举例说明,至于其他编程语言还有的变量访问的形式也不再介绍。
四、C语言中函数的隐含作用
函数是C语言程序中至关重要的概念,是指能够完成一定功能的相对独立的程序模块,有的地方也称为程序零件。
除了主函数外,C语言中通过引入函数的概念,规定了函数声明、定义和访问的语法,成功地把函数作为程序零件进行拆分和组装,为C 语言成为结构化程序设计语言奠定了坚实的基础。
教学过程中要强调了函数定义的语法格式要求,函数的调用遵循相应的规则,在这我还要讲讲函数声明的必要性:(1)从编译系统的角度看:编译器要根据函数声明时给每个参数在入栈的时候分配合适的内存空间,保证系统对数据的正确处理。
另外,编译器在检查函数调用时,如果函数没有事先声明,编译器就无法知道调用是否正确,可能会发出一些提示警告信息,但初学者往往会忽略警告,假设此时函数参数的数量和类型在函数定义和调用时不一致,将导致最后程序运行时出现异常。
(2)从程序员的角度看:假设一个程序开发团队用C语言开发一个大型应用程序,在团队的分工协作中,函数作为程序零件成为编程任务分解的手段,此时,函数声明作为函数定义和函数调用接口的功能其意义凸显,原因是函数的定义与函数的调用不是由程序员单独完成的,负责函数定义的程序员不需要了解函数在什么时候被调用,也不必知道函数被谁调用,是被主函数调用还是被其他函数调用,只需知道函数的名称、功能、参与运算的参数类型和个数以及返回值的类型,而负责函数调用程序员不需要知道函数的程序是如何编写的,采用的是什么样的算法,甚至连源代码也不必知晓,同样只需知道函数的名称、功能、参与运算的参数类型和个数以及返回值的类型,显然函数声明涵盖了所有信息,是定义函数的程序员和调用函数的程序员的技术约定,它的存在就不可或缺了。
五、C语言集成开发环境的介绍
C语言集成开发环境C语言编辑、编译、运行程序的平台,C 语言集成开发环境有很多种,常用的集成开发环境有TurbC、visualc++6.0、DEVC++、C-Free等,TurboC是dos环境下的,比较好用,但不支持复制、粘贴等功能;visualc++6.0报错比较准确,但比较难用,是微软推出一个功能强大的可视化软件开发工具。
Dev-C++是一款拥有软件开发工具,主要适用于在w indo w s环境下载使用,专门针对刚接触编程开发以及C语言学习,非常实用,可自行调节语言,支持中文显示。
C-Free是一款可支持多种编译器且专业化的C/C++集成开发环境(IDE)。
小伙伴们可以使用这款C-Free完成需要的编辑、运行、调试C/C++、编译等操作处理。
C-Free可以增强智能输入功能、添加语言加亮器、代码定位等功能。
对不同的集成开发环境,应该熟悉各自的使用方法和特点,比如说数据在内存中存储时所占内存空间的大小,有参函数调用过程中参数列表中如果含有多个表达式时表达式计算的次序等。
六、初识两种程序设计理念
面向过程的程序语言和面向对象的程序语言,是指程序开发时选用的两类不同的程序设计思路的计算机语言,主要区别在于程序设计的着眼点不同。
面向过程的程序设计着眼点在过程,设计程序时先把项目自顶向下分析出解决问题所需要的步骤,即过程,然后把这些步骤分步编程实现,程序特点是对数据的管理与操作是分开的,C语言是典型的面向过程的程序设计语言。
面向对象的程序设计是通过引入类的概念建立了对象,程序设计时把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为,程序特点是对些数据的管理与操作进行包装,是不分开的,典型的程序设计语言是JAVA语言。
初学者不必理会这些概念,可以在以后程序设计进阶学习中了解。
以上是我对C语言部分知识的理解与归纳,不足之处希望能得到大家的批评指正。
参考文献:
[1]谭浩强.C语言程序设计[M].北京:清华大学出版社,2012.
[2]阚道宏.C++语言程序设计[M].北京:清华大学出版社,2017.
◎编辑陈鲜艳
179--
. All Rights Reserved.。