C语言程序设计简明教程 Qt实战

978-7-115-58486-1
作者: 彭凌西唐春明黄铮陈统
译者:
编辑: 赵祥妮
分类: C语言

图书目录:

详情

本书主要介绍C语言程序设计,帮助读者掌握C语言的相关概念、基础知识和实际应用。内容讲解循序渐进,重点突出。全书内容包括计算机基础知识和编程环境的搭建,C语言入门基础知识,流程图,基本结构,函数,断点调试,数组,指针,枚举和结构体,以及文件读写。全书通过100多个编程或实战案例,结合Qt工具,让读者在实践中掌握C语言程序设计基础,并进一步掌握计算机程序设计。 本书语言简洁,通俗易懂,不仅适合大专院校的学生使用,也适合对程序设计感兴趣的读者作为入门教程。

图书摘要

版权信息

书名:C语言程序设计简明教程:Qt实战

ISBN:978-7-115-58486-1

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


版  权

著    彭凌西 唐春明 黄 铮 陈 统

责任编辑 赵祥妮

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内容提要

本书主要介绍C语言程序设计,帮助读者掌握C语言的相关概念、基础知识和实际应用。内容讲解循序渐进,重点突出。全书内容包括计算机基础和编程环境搭建,C语言入门,流程图,顺序、分支和循环结构,函数,断点调试,数组,指针,结构体和枚举,以及文件读写。全书通过近100个编程实例,结合Qt工具,让读者在实践中掌握C语言程序设计基础,并进一步掌握计算机程序设计。

本书语言简洁,通俗易懂,不仅适合大专院校的学生使用,也适合对程序设计感兴趣的读者作为入门教程。

国务院在2017年7月印发了《新一代人工智能发展规划》,明确提出实施全民智能教育项目,逐步推广编程教育。

本书有机结合编者在高校和企业多年的教学和研究经验,深入浅出地讲解C语言的函数、数组和指针等概念,并且对流程图的绘制、Qt编程中的断点调试、编译纠错等过程进行了详细介绍。

相信本书会对想尽快掌握C语言和Qt编程的读者和研究人员大有裨益,对编程教育和人工智能的发展起到很大的促进作用。同时也希望有更多的读者能够通过阅读本书掌握编程技术,参与到人工智能的研究和教育工作当中,为推动我国新一代人工智能创新活动的蓬勃发展做出自己的贡献。

中国科学院院士

2021年12月

第1章 计算机基础和编程环境搭建

C语言是一种仅产生少量的机器语言且编译后可不需要任何运行环境支持便能运行的高级计算机语言。本章主要介绍计算机硬件系统的基本组成及其工作原理、计算机语言及C语言特性以及如何搭建编程环境。

【目标任务】

初步认识计算机,掌握Qt编程环境搭建的方法。

【知识点】

初步认识计算机,包括计算机硬件系统的基本组成及工作原理。

计算机语言简介及C语言特性。

搭建编程环境。

1.1 认识计算机

计算机(Computer)是一种用于高速计算的电子计算机器,它既可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。计算机是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。计算机的外观如图1-1所示。

计算机是20世纪最重要的科学技术发明之一,对人类的生产活动和社会活动产生了极其深远的影响,并以强大的生命力飞速发展。计算机的发明者冯·诺依曼(von Neumann)在1945年3月与他人起草了一个全新的“存储程序通用电子计算机方案”——EDVAC(Electronic Discrete Variable Automatic Computer),这一方案也被称为冯·诺依曼体系结构。冯·诺依曼体系结构至今仍为电子计算机设计者所遵循,其主要思想是计算机硬件系统由存储器、控制器、运算器、输入设备和输出设备5个基本部分组成,各基本部分的功能如下。

存储器不仅能存放数据,而且能存放指令。两者在形式上没有区别,但计算机能区分是数据还是指令。

图1-1 计算机的外观

控制器能自动取出指令并执行。

运算器能进行加、减、乘、除4种基本算术运算,还能进行一些逻辑运算和附加运算。

操作人员可以通过输入设备、输出设备和主机进行通信。

计算机硬件系统的基本组成及工作原理如图1-2所示。

图1-2 计算机硬件系统的基本组成及工作原理

计算机内部以二进制表示指令和数据,其中数据只用0和1的二项式序列表示,即{0,1},n为正整数。每条指令由操作码和地址码两部分组成。操作码指出操作类型,地址码指出操作数的地址。计算机采用“存储程序”工作方式。

通常将运算器和控制器统称为中央处理器(Central Processing Unit,CPU)。CPU是整个计算机的核心部件,是计算机的“大脑”,控制计算机的运算、处理、输入和输出等工作。根据存储器与CPU联系的密切程度,可将其分为内存储器(主存储器)和外存储器(辅助存储器,如硬盘、U盘等)两大类。内存储器(断电后数据会丢失)在计算机主机内,直接与运算器、控制器交换信息。其容量虽小,但存取速度快,一般只存放那些正在运行的程序和待处理的数据。为扩大内存储器的容量,引入了外存储器(断电后数据一般不会丢失)。外存储器作为内存储器的延伸,间接和CPU联系,常用来存放一些系统必须使用,但又不急于使用的程序和数据。程序必须调入内存储器方可执行。外存储器存取速度慢,但存储容量大,可以长时间保存大量信息。

二进制(Binary)是指在数学和数字电路中以2为基数的记数系统,用0或1来表示数据(因为计算机用高电平和低电平分别表示1和0)。每个二进制数占一位,即一个比特(binary digit,bit),每8个二进制数构成一个字节(Byte)。

一位二进制数1等于十进制数1,即一位二进制数能表示的最大十进制数为20=21−1=1,一位二进制数有0、1,对应十进制数为0、1,共21=2个一位二进制数。

两位二进制数11等于十进制数3,即两位二进制数能表示的最大十进制数为20+21=22−1=3,两位二进制数有00、01、10、11,对应十进制数为0~3,共22=4个两位二进制数。

三位二进制数111等于十进制数7,即三位二进制数能表示的最大十进制数为20+21+22=23−1=7,三位二进制数有000、001、010、011、100、101、110、111,对应十进制数为0~7,共23=8个三位二进制数。

……

依次类推,八位二进制数11111111等于十进制数255,即八位二进制数能表示的最大十进制数为20+21+22+23+24+25+26+27 = 28−1=255,它可表示十进制的0~255,共256个八位二进制数。由此可知,n位二进制数表示的最大十进制数为2n−1,共2nn位二进制数。

除了二进制之外,计算机也经常使用十六进制(Hexadecimal,HEX),它在数学中是一种逢16进1的进位制。一般用数字0~9和字母A~F(或a~f)表示,其中A~F分别表示十进制数的10~15。

1.2 计算机语言与C语言

计算机语言的种类非常多,总的来说可以分成机器语言、汇编语言和高级语言三大类。

机器语言是指机器能直接识别的程序语言或指令代码(无须经过翻译,每个指令代码在计算机内部都有相应的电路来完成),或指不经过翻译即可被机器直接理解和接受的程序语言或指令代码。

通用的编程语言有两种形式:汇编语言和高级语言。

汇编语言(Assembly Language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,又称符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。汇编语言的优点是显而易见的,用汇编语言能完成的操作不是一般高级语言能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

高级语言是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程语言,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序,编写的程序称为源程序。

高级语言和汇编语言相比,不但将许多相关的机器指令合成为单条指令,而且去掉了与具体操作有关但与完成工作无关的细节,如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。高级语言是目前绝大多数编程者的选择。

1972年,美国贝尔实验室的丹尼斯·里奇(D. M. Ritchie)设计出了一种新的语言,命名为C语言。相对人类文明史及发展而言,C语言如刚出生的婴儿;而相对现代计算机发展史而言,C语言是一门古老的语言。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,制定出了第一个完备的C语言标准,简称“C89”,也就是“ANSI C”。截至2020年,最新的C语言标准为2018年6月发布的“C18”。C语言属于计算机高级语言的一种,到目前为止,C语言依然是最受欢迎的计算机语言之一。

C语言是一门面向过程的、抽象化的通用程序设计语言。所谓面向过程就是分析出解决问题需要的步骤,然后用函数一步一步地实现这些步骤,这样在使用的时候一个一个依次调用就可以了。

C语言也是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试。C语言的处理和表现能力都非常强大,依靠其非常全面的运算符和多样的数据类型,程序开发人员可以轻易完成各种数据结构的构建,通过指针类型更可对内存进行直接寻址并对硬件进行直接操作。因此,C语言既能用于开发系统程序,又能用于开发应用软件。C语言具有如下主要特点。

1.语言简洁

C语言包含的控制语句仅有9种,保留字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,C语言的语句构成与硬件的关联较少,且C语言本身不提供与硬件相关的输入/输出、文件管理等功能,如需此类功能,则要配合编译系统所支持的各类库进行编程,故C语言拥有非常简洁的编译系统。所谓编译,就是将编程语言翻译成可执行的机器语言。

2.具有结构化的控制语句

C语言是一种结构化的语言,提供的控制语句具有结构化的特征,如for语句、if...else语句和switch语句等。结构化的控制语句可用于实现函数的逻辑控制,方便面向过程的程序设计。

3.数据类型丰富

C语言包含的数据类型丰富,不仅包含传统的字符型、整型、浮点型、数组型等数据类型(但没有布尔型,即真假型),还包含其他编程语言所不具备的数据类型,其中以指针型数据使用最为灵活。因此,C语言可以通过编程对各种数据结构进行计算。

4.运算符丰富

C语言包含34个运算符。赋值、括号等均作为运算符来操作,使C语言的程序表达式类型和运算符类型均非常丰富。

5.可对物理地址进行直接操作

C语言不但具备高级语言的良好特性,又包含许多汇编等低级语言的优势,如C语言允许对硬件内存地址进行直接读写,以此实现汇编语言的主要功能,并可直接操作硬件,故其在系统软件编程领域有着广泛的应用。

6.可移植性强

C语言是面向过程的编程语言,用户只需要关注待解决问题本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需改动或仅需进行少量改动便可完成移植。这就意味着,在Windows系统的计算机上编写的C语言程序可在Linux系统的计算机上运行,从而减少了程序移植的工作量。

7.编译和执行效率较高

与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。

1.3 Qt下载和安装

Qt(音同 cute)是一个跨平台的C/C++开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以用来开发不带界面的命令用户接口(Command User Interface,CUI)程序。本书将使用Qt来开发C语言程序。Qt 官网有一个专门的资源下载网站,所有的开发环境和相关工具都可以从这里下载,地址是http://download.qt.io/,国内镜像网址是https://mirrors.tuna.tsinghua.edu.cn/qt/,在此可以下载development_releases离线版或者在线安装包。本书以Qt 5.12.10版为例介绍其安装过程,其他版本基本类似。Qt 从5.15版本开始(5.14.2是官方最后一个可下载.exe安装包进行离线安装的版本),对非商业版本,也就是开源版本,不再提供已经制作好的离线.exe安装包,只能在线安装。双击安装包开始安装,安装界面如图1-3所示,等待【Next】按钮被激活(变为黑色)。

图1-3 开始安装

单击【Next】按钮,进入图1-4所示界面,注册一个Qt账号,在邮箱中激活账号后单击【Next】按钮。

图1-4 注册Qt账号

进入图1-5所示界面,确认义务后,单击【下一步】按钮。

图1-5 确认义务

进入图1-6所示界面,确认安装目录后,单击【下一步】按钮。

图1-6 确认安装目录

在图1-7所示界面中阅读并同意许可协议后,单击【下一步】按钮。

图1-7 同意许可协议

在图1-8所示界面中选择开始菜单快捷方式后,单击【下一步】按钮。

图1-8 选择开始菜单快捷方式

在弹出界面中单击【安装】按钮即可进入图1-9所示界面,在列表中选择要安装的编译器组件。

图1-9 选择编译器1

在图1-9所示界面中选择编译器组件后,展开下面的列表,在图1-10所示界面中继续选择对应编译器。

图1-10 选择编译器2

注意,如果是32位的计算机请选择32位的编译器,如果是64位的计算机请选择64位的编译器。一定注意在两个界面中均要选择编译器,否则Qt程序无法编译。单击【下一步】按钮继续安装,最后在弹出的窗口中单击【完成】按钮,启动Qt,启动界面如图1-11所示。

图1-11 Qt启动界面

至此,Qt安装完成,编程环境搭建完毕。

Qt在统信UOS(由统信软件技术有限公司开发的国产操作系统)上的安装比较简单,在统信UOS的桌面上单击鼠标右键并选择【在终端中打开】命令,打开统信UOS的命令行终端,使用下述安装命令即可完成Qt 5.12.10的安装。

sudo apt-get install qt5-default qtcreator

输入命令后,sudo(类似于Windows的添加/删除程序)自动开始从网络下载所需的包,例如开发工具Qt、编译器qmake、帮助文档和开发样例等,下载过程中需要输入字母“y”来确认下载。

1.4 习题

(1)相对其他计算机语言,C语言有哪些特性?

(2)计算机硬件系统的基本组成及工作原理是什么?

相关图书

代码审计——C/C++实践
代码审计——C/C++实践
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)
大规模C++软件开发 卷1:过程与架构
大规模C++软件开发 卷1:过程与架构
C/C++程序设计竞赛真题实战特训教程(图解版)
C/C++程序设计竞赛真题实战特训教程(图解版)
C/C++函数与算法速查宝典
C/C++函数与算法速查宝典
C程序设计教程(第9版)
C程序设计教程(第9版)

相关文章

相关课程