这里给出了一个例程作为参考,读者可以根据自己的需要删减。通常,IDE都回带有专门的格式化代码的工具,也有专门的第三方工具可供使用。但是这些都只是对代码的缩进进行格式化,至于注释还需要自己合理安排和增加LOL赛事押注。
出于演示的需要,这里选择第3种。单击Finish按钮,出现图1-11的对线)该窗口显示了工程的一个摘要,说明该自动生成的工程都包含哪些文件。单击OK按钮就创建了一个简单的控制台应用程序,如图1-12所示。
该窗口显示了刚才创建的控制台应用程序。左边的工程管理栏内,ClassView选项卡显示了程序的类结构图,FileView选项卡显示了文件结构图。右边就是要编写程序的地方。
要对.h和.cpp文件进行注释,注释应该列出文件名、作者、功能、版本等。
编码规范是指编写代码时应该遵守的文字约束。一个好的编码规范不仅能够明显改善代码的可读性、可管理性,还可以提高程序的可靠性、可修改性、可维护性,以及一致性,从而保证代码的质量。当开发工作需要团队合作时,优秀、统一的编码规范更是合作能否成功的关键。
程序块采用缩进风格。每个缩进为4个空格位,要用TAB键缩进,而不要混合使用空格和Tab键。
(2)选择FileNew命令,打开New对线所示。该对话框主要用来选择要创建的工程类型,并选择工程文件的保存位置和工程名称。
第4条语句x=x1中,“”号表示加法运算,既将加号两边的对象相加。“=”号表示赋值,它将符号右边的运算结果放到符号左边的对象中。因此,该代码表示将对象x保存的值加1再放回x中。
第5条语句仍然是一条在标准输出设备上输出文字的代码。它包含3个输出操作符,第1个操作输入了文字x=x1。第2个操作符输出对象x保存的值。第3个操作符的右边是endl,它表示一个“回车换行”操作。因此,该代码在输出前两个文字后就将光标跳到新的一行上去。
Code::Blocks是一款全功能的、跨平台的C/C集成开发环境,属于开源软件。它提供了众多的工程模板,包括控制台应用、动态连接库、OpenGL应用、QT应用、Win32 GUI应用等。Code::Blocks的另一引人之处在于它具有丰富的插件,包括代码格式化、类向导、代码补全、代码统计、To-Do列表,以及WindowsXP外观等各种各样的插件。此外,它不仅支持GNU GCC编译器,还支持MS Visual C、Borland C编译器5.5,以及Digital Mars C等多种编译器。
(4)在这个窗口可以选择要创建的控制台程序的类型。如果上个窗口选择的工程类型不同,这里将出现不同的选项。该窗口实际上是选择要使用的模板。
An empty project:表示创建一个空工程,该工程不会自动生成程序文件,仅包含环境配置文件;
A simple application:表示创建一个简单程序,仅是一个简单的程序框架,不包含任何有用的代码;
这是一个集成开发环境,它提供了一个很好的编辑器和很多Wizard。它不仅可以用来开发C、C,还可以用来开发Visual Basic、VF等语言。使用Developer Studio,可以完成创建、调试、修改应用程序等各种操作。
MFC(Microsoft Foundation Classes,MFC)表示为微软基础类,它的应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。但是用Visual C编写代码也并不意味着一定要用MFC,使用STL、ATL、编写SDK程序一样没有限制。
程序结构是程序的组织结构,指该程序语言特定的语句结构、语法规则和表达方式,其内容包括代码的组织结构和文件的组织结构两部分。只有严格遵守这种规则,才能编写出高效、易读的程序。否则写出的代码将晦涩难懂,甚至不能被正确编译运行。
在这一节将通过一个简单程序向读者讲解C程序的基本结构,同时也说明C程序中输入输出操作的方法,以方便后续章节中的讲解。
标识符的名称可以是一个字符,也可以是多个字符。第一个字符必须是字母或下划线,后跟字母、数字、下划线的组合。标识符区分大小写。长度不得大于32个字符,而通常是前8个字符有效。例如,a、_a、a12等都是标识符。但是1、1a、?a、&a1等都不是合法的标识符。标识符的命名除了满足字符组合方面的原则外,还要遵循下述原则。
C语言应用极为广泛。尤其在底层编程和系统级编程上更是C的传统优势应用。在数据库和多媒体方面,C又以其卓越的稳定性而赢得了荣誉。
对象是人们要进行研究的任何事物。面向对象的核心思想是对象和对象间的消息,是建立在“对象”基础上的方法学。它将系统看做对象的组合,每个对象都能接受并处理数据,然后和其他对象通过消息来交换数据。面向对象编程具有以下3个基本特征:封装、继承和多态。
通过本章的学习,读者可以为后面的学习打好基础,并且可以对C有一个基本认识。
C作为当今业界应用最为广泛的编程语言之一,其涵盖的内容非常广泛而多样。本节将首先给读者一个初步的概念。
该输出说明链接时检测到0个错误,0个警告,生成可执行文件test.exe。
生成可执行文件后就可以执行该程序。执行一个32位控制台程序即可以从Windows的“资源管理器”中双击打开,也可以从命令行手工执行打开。在Visual Studio 6.0中,还可以选择BuilderExecute命令,执行该工程,如图1-13所示。
图中第一行是可执行程序test.exe的输出,第二行则不是。第二行是由Visual Studio 6.0开发环境执行完test.exe程序后输出的,表示“按任意键继续”,即按任何一个键就可返回到开发环境中去。到此为止,本节就完整演示了在Visual Studio 6.0中开发一个典型的C程序的过程。
(2)对该工程进行链接,以生成可执行文件。选择BuilderBuild命令,执行链接操作。如果输出如下所示,则表示链接正常,生成可执行文件正常。
(6)选择左边工程管理栏中的FileView页,双击Stdafx.h,打开该文件,如图1-12所示。在右边的代码区内找到stdio.h,将它修改为iostream。
说明:stdio.h是C语言的输入输出支持头文件,iostream.h是C的输入输出头文件。创建32位控制台应用程序时,Visual Studio 6.0默认使用的I/O头文件是stdio.h,因此需要改成iostream.h。这是将负责输入输出的头文件引入,为了在后面使用cin和cout输入输出流。修改后的stdafx.h文件如下所示。
注意:An application that supports MFC选项只是在程序中加入了MFC的头文件支持,具体的使用还需要程序手工增加。如果在创建新工程时,选择创建MFC型工程,则系统会自动创建一个MFC的使用框架。
其中,花括号包含了实现该函数所需的代码。C规定每个可执行程序都有且只能有一个名为mian的函数,它表示了程序的入口点。当C程序执行时,首先执行该函数,然后从该函数内调用其他需要的操作。下面依次分析每行代码的功能。
第1条代码int x表示定义一个对象,并命名为x。末尾的分号表示这条代码到此结束。
第6条语句return 0是一条跳出程序的代码。它表示从程序跳出并返回到操作系统,同时带有一个数字0作为返回值。
注意:有些编译器并不要求main函数一定返回值,例如Visual C。但是LOL赛事押注,有些编译器却要求必须有返回值,如开源软件MinGW。
当程序较小时,用一个文件就可以保存所有代码。但是有实际用途的程序一般都不会太小。所以,通常会将程序分成几个文件分别保存,再通过包含语句放到一起。这种做法既有利于模块化开发,也有利于代码的重用。
Insert菜单:该菜单包括创建新类、新表单、新资源及新的ATL对象等命令。
Tools菜单:该菜单允许用户简单快速地访问多个不同的开发工具,如定制工具栏与菜单、激活常用的工具(Spy等)或者更改选项等。
幸运的是Visual Studio 6.0提供了语法着色功能,该功能可以对C预定义的对象进行高亮度显示。因此,如果输入一个标识符后,该标识符被高亮度显示,这就说明它是一个保留字,不能用做其他用途。但是,没有被高亮度显示并不意味着就一定能用做自定义的标识符。例如,不能将iostream用做自定义的标识符。从1.3.1节可知,该文字虽然不是保留字,但却是C中重要的头文件。因此也不能被用做自定义的标识符。
练习使用Visual C 6.0开发环境,仿照1.2.4节的步骤,参照1.3.1节上机实现下述程序,并观察其运行情况。
在C中,用类来封装数据和数据上的操作,外界看不到该类的属性和方法。如果需要的话,系统一般会为每个属性提供set/get函数对。
继承就是从父类继承旧的属性、参数等。C可以进行公有、私有、保护3种类型的继承。有时为了避免内存的浪费,也可以进行虚继承。虚继承中,整个继承体系里公有的基类将不会被重复分配空间。
保留字就是系统已经预定义的标识符,不能再用来定义为其他意义,也被称作关键字。C中常见的保留字主要有表1-3所示的几种。
经过上述步骤就建立了一个输出字符串Hello world!的简单控制台应用程序。要想运行它还需要进行编译和链接LOL赛事押注。编译操作负责对源程序进行语法检查,然后生成目标代码。链接操作负责将目标代码和程序用到的库程序链接成可执行文件。在Visual Studio 6.0中,Builder菜单提供了编译、链接和执行程序的操作。编译和链接的步骤如下所示。
Visual Studio是微软公司推出的开发环境,它是目前最流行的Windows平台应用程序开发环境。在Visual Studio中可以创建应用程序和网络应用程序,以及智能设备应用程序和Office插件等。从7.0开始,Visual Studio加入了术,类似Java的JVM。目前,最新版本为9.0,也被称做Visual Studio 2008。如果不想使用.Net技术,6.0版本也是一个不错的选择。
第2部分是预处理部分,既在编译前要处理的工作。这里是以#include说明的头文件包含代码#include iostream.h,它指示编译器在预处理时,将文件iostream.h中的代码嵌入到该代码指示的地方。其中#include是编译指令。头文件iostream.h中声明了程序需要的输入输出操作的信息。
编译是对写好的程序进行检查,如果检查无误就会生成目标代码。生成目标代码后,还需要进行链接才能生成最终的可执行程序,然后才能执行程序。这些操作都要通过Builder菜单来完成。该菜单主要用于编译、创建和执行应用程序,如图1-7所示。
Workspaces选项卡可以创建一个工作空间,一个工作空间可以包含多个工程。如果编写的软件系统比较庞大,模块众多,就可以利用工作空间来统一管理。
Other Documents选项卡可以用来创建一些其他类型的文档,这要取决于操作系统都安装了什么样的软件。例如,如果安装了Office,这里就会出现Word、Excel等文档。在右部可以输入要创建的工程名称和存放位置。一般默认是create new workspace选项,如果有旧的工作空间,还可以选择加入到该空间内。
多态指用多种形态来实现。C中的多态包括函数重载、子类与基类间的覆盖、虚函数、运算符重载以及抽象类等方式。
要想发挥C的强大功能,就需要一个优秀的集成开发环境,因为一个好的编程环境常常可以起到事半功倍的效果。集成开发环境(IDE)是一个将程序编辑器教程知识、编译器、调试工具和其他建立应用程序的工具集成在一起,用于开发应用程序的软件系统。本节将向读者介绍常见的几款C开发环境,并着重介绍本书所用到的开发环境。
(7)经过上述修改后,还需要修改test.cpp文件,该文件是程序的主要实现文件。双击test.cpp文件打开它,如下所示。
菜单中Compile命令是编译当前文件,对当前文件进行语法检查。Build命令是链接当前工程,生成可执行文件。如果要编译全部文件,就要选择菜单中的Build All命令。当编译好文件后,可以单击Execute命令来执行程序。
在这一小节将给读者演示一个典型的C程序的开发过程,该程序用C语法输出字符串Hello world!。
保留字是系统预留的符号,这些符号已经被赋予特定的意义。所以程序员只能直接使用它们而不能修改其定义。例如,保留字int和float分别被用来表示整型数据类型和浮点型数据类型,for和while则被用来表示循环语句。
同一个模块内部的标识符命名要一致。例如,如果规定变量的首字母大写,用全部大写表示常量,那么整个模块内都应该这么写。
用词要准确,可以望文生义,避免概念模糊或形式相近的标识符。例如,定义Total表示合计要比随意用一个变量来表示要明确的多。myFun、temp等模糊概念的变量也要避免。
在保持准确性的前提性,要力争长度短、信息多。既用最短数目的字符数表示尽可能多的信息。例如,用Total表示合计,而不用TotalOfNumbers。
上述代码是创建新工程时自动生成的,该代码使用一条printf语句输出了字符串Hello world!。printf语句是C语言中的输出语句,C中的输出语句则使用cout流。因此,需要将代码区中的printf语句修改为如下代码:
本章主要讲述了C的一些基本知识,以及编程中需要注意的事项。本书的代码都是在Visual C 6.0开发环境下完成的,因此着重讲解了Visual C 6.0开发环境及其使用,并给出了一个简单的例子。另外,本章对于C程序的基本结构和编码中应该注意的规范也给出了说明。标识符是编程中必须要用到的,本章也作了一定的说明。第2章将着重讲解C中基本数据类型的用法。
工程是一个文件。该文件记录了程序中包含的文件和集成环境的配置参数。因此为了编写一个程序,首先就要创建一个工程。选择FileNew命令,打开新建工程对线创建工程
File菜单:包括对文件、项目、工作区及文档进行文件操作的相关命令或子菜单。
Edit菜单:除了常用的剪切、复制、粘贴命令外,还有为调试程序设置的Breakpoints命令,完成设置、删除、查看断点。此外还有为方便程序员输入源代码的List Members、Type Info等命令。
View菜单:该菜单中的命令主要用来改变窗口和工具栏的显示方式、检查源代码、激活调试时所用的各个窗口等。
解答:在1.5.1节中讲到保留字是系统已经预定义的标识符。因此,不能将用做保留字的文字再用于别的用途;否则编译将无法通过。例如,不能将int、struct、sizeof等再用做其他的用途,它们只能表示表1-3中所规定的意义。表1-3列出的只是常见的几种,C中的保留字比该表要多,有些保留字也很难记。
注释是为了增加程序的可读性和美观,给程序提供注解和备忘录。注解不能太多,也不能太少。太多有碍阅读,太少不利于注解代码。C中的注释有行注释和块注释两种。行注释用“//”,一次注释一行。块注释用“/**/”,星号中间是被注释的块,可以是多行,也可以是单行。
第3条语句cinx中,cin是一个代表标准输入设备(一般指键盘)的对象,也是C中预定义的对象。当程序需要从输入设备接收输入时,就需要在程序中使用该对象。输入的操作符是“”,它表示将从操作符左边接收的输入放到右边的对象中。当程序执行到该代码处时,将停止并等待来自标准输入设备的输入。输入完毕后,按下Enter键,cin接收输入并将输入放到相应的对象中,然后跳到下一条代码开始执行。
图中上部为菜单条,菜单条下面为工具栏。屏幕左部为工程管理面板,右部为工作区。工作区下部为输出窗口,再往下是状态栏。各菜单的功能如下所示。
(1)选择BuilderCompile命令,编译源程序。如果输出窗口内的输出内容如下所示,则表示没有语法错误,且正确生成了目标代码。
功能相对独立的程序块之间或for、if、do、while、switch等语句前后应加一空行。
这里总结了11项指南,实际编程时还有更多的规定。当然这仅是建议,程序员可以根据自己的需要酌情调整。
(3)选择Win32 Console Application选项,该选项表示要创建Windows下的32位控制台应用程序。然后在Project name文本框中输入工程名称test,在Location文本框中输入工程保存的位置。最后单击OK按钮,将打开图1-10所示的对线选择控制台程序的类型
Eclipse是目前开源平台中最著名的集成开发环境。最初主要用来支持Java语言编程,目前通过插件CDT也可以用来开发C/C程序。因为它本身只是一个框架,因此插件众多是它的一大特点。这使得Eclipse拥有其他支持单一语言的IDE环境很难具有的灵活性。
C语言是由C语言扩充而来。它是一门混合型的语言,既支持传统的结构化程序设计,又支持面向对象的程序设计,这使得C非常流行。它在编程中支持面向对象。因此,它比C更适合人们的思考方式,并且比C要安全、可靠、有效。但是它并不像Java那样全面实现类的使用,这使得它很灵活,能够适应多种场合的需要。
C是编译语言,性能良好,效率更高。它不像Java、PHP、ASP等解释型语言,需要在运行时转换为机器码,或者读一条语句执行一条。它直接被编译为机器可识别的机器码。
C编写的程序独立性好。只要C编译时产生的机器码不依赖外部的动态链接库,C就可以在不需要安装额外程序的情况下,移动到运行同样操作系统的其他机器和微处理器上。而移动Java程序时需要先安装Java运行期库。这是C语言成功流行的一个重要原因。
C的程序的文件类型有.h和.cpp两种,前者是头文件,后者是代码的实现文件。头文件中包含了类、函数、常量、全局变量等的声明,使用时用#include语句在程序的预处理部分包含进来即可。代码的实现文件是对头文件中声明的类、函数等的具体实现。不需要显示包含.cpp文件,当包含了与它对应的.h文件后,编译器会自动去找同名的.cpp文件。
Dev-C是Windows平台下的开源C编程环境。它集成了GCC、MinGW32等众多自由软件,界面类似Visual Studio,但体积要小的多。它的缺点是难以胜任规模较大的软件项目,但对于初学者是一个不错的选择。
Anjuta是一款GNOME桌面环境下的C/C编程的集成环境,也是开源软件。它不仅有项目管理、交互式调试以及强大的代码编辑和语法增色的功能,还可以直接开发Glade图形界面的程序。但是,它主要用在Linux、UNIX平台下,不支持Windows平台。目前,最新版本是2.4.x,可以从anjuta.sourceforge.net站点获得。
第2条语句使用cout流输出一行文字。其中,cout是一个代表标准输出设备(在这里指显示器)的对象,它是C中预定义的系统对象。当程序要向输出设备输出内容时,就需要在程序中使用该对象。输出的操作符用“”表示,它表示将操作符右边的内容输出到操作符左边的对象上。代码中操作符左边的内容用双引号包含起来,这表示它是一个字符串。因此,代码“cout”输入整数:“;”将在标准输出设备上输出字符串文字“输入整数:”。
技巧:如果希望写出更规范和优美的注释,可以参考开源软件doxygen的格式。该软件提供了一个内容丰富的风格规范,其更大的好处是可以用该软件将源代码中符合要求的注释导出成文当。
标识符就是为变量、函数、类以及其他用户对象所起的名称。本节主要讲解C中保留的标识符以及如何定义用户自己的标识符。
Visual C是微软公司推出的目前使用极为广泛的基于Windows平台的可视化集成开发环境。它包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档MSDN。Visual C IDE一般由3部分组成:Developer Studio、MFC、Platform SDK。
Visual C提供了一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境。通过集成开发环境程序员可以访问C源代码编辑器、资源编辑器,使用内部调试器,并且可以创建工程文件。本节将详细讲解Visual C 6.0集成开发环境各部分的使用方法。
ClassView选项卡显示工程中使用的类、函数、全局变量等,双击可以跳转到对应的代码处,如图1-4所示。
ResourceView选项卡显示工程中使用的资源,双击可以编辑该资源,如图1-5所示。
FileView选项卡显示工程中使用的文件。文件按类型管理,双击可以进行编辑,如图1-6所示。
技巧:每个工程类型都是一种代码的模板。如果预定义的模板不能满足程序员的要求,可以选择Custom AppWizard定义特定的模板。
工具栏是一组直观、快捷的图形化按钮和编辑框,熟练使用工具栏可以大大提高工作效率。Visual C中包含很多种工具栏,默认为图1-3所示的工具栏。
一般来讲,工具栏会根据当前工作的不同而不同。例如,调试程序时,会出现调试工具栏;编写数据库程序时,会出现数据库工具栏。如果要添加新的工具栏,只需右击工具栏,然后在弹出的快捷菜单中选中需要的功能,它就会出现在工具栏上。
C是一门应用非常广泛的计算机程序设计语言。它既支持过程化程序设计,也支持面向对象程序设计。从操作系统、设备控制到数据库、网络、多媒体等众多的应用领域都能看到它的身影。目前,业界应用比较广泛的是它的两个变种:Borland C和Visual C。这两种C都是在标准C的基础上做了一些扩展而来。本书将基于Visual C 6.0版本的开发环境,向读者讲授标准C的强大功能和编程方法。本章包括以下内容:
Байду номын сангаасint num=0; //存放最大数
代码不仅是写给编译器看的,也是写给其他同事或同行业的人看的。所以在保证程序正确性的前提性下,一定要注意代码的优雅和整洁。这既显示了程序员良好的素养,也显示了其优秀的编程风格。对代码的美化主要通过规范严谨的缩进和必要的注释。
避免使用过深的if语句嵌套。这样会增加代码的复杂度,降低可理解性。可以考虑改成函数来调用。
尽量不要写太长的语句。如果实在需要很长,可以考虑分行,更好的办法是拆成多条语句。LOL赛事押注