1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C语言程序设计基础(01)—— 计算机与程序设计基础

C语言程序设计基础(01)—— 计算机与程序设计基础

时间:2019-05-27 01:52:47

相关推荐

C语言程序设计基础(01)—— 计算机与程序设计基础

C语言程序设计基础(01)——计算机与程序设计基础

一、计算机组成及基本原理1、计算机硬件系统2、计算机软件系统3、计算机工作原理二、程序设计基础1、程序设计风格2、结构化程序设计(structured programming)三、C语言程序基本结构和开发过程1、C语言程序的基本结构2、C语言程序开发过程3、程序开发环境

写在前面

我刚上大学的时候,学的第一门计算机编程语言就是C语言,当时觉得这仿佛是天书,毕竟脑子里只有中学数学课上那点简单的流程图和VB概念,但是随着多年的练习和开发使用,我渐渐地开始掌握并喜欢上了这门语言,并且也开始学习C++、C#、JAVA等其它编程语言。不得不说,C语言的学习为我打下了良好的编程基础,同样也让我越来越清晰地认识到自己的不足。如今时代呈现指数式发展,尤其在IT等行业,必须保证自己永远在学习新的知识技能,否则迎接你的就是淘汰。

大一课堂使用的课本是《C语言程序设计(第2版)》(姚琳 主编,屈微 副主编),虽然课本上也有一些小的瑕疵,但掩盖不了它开蒙启智的光辉。搬砖之余,在这里整理回顾下C语言的基础知识,感谢当年老师细致入微的指导,帮助我们解决了程序上数不尽的bug,为我们打下了良好的编程基础。

一、计算机组成及基本原理

计算机系统构成:

硬件系统主机内存储器(内存)中央处理器(CPU,Central Processing Unit) 运算器控制器 外部设备(外设)输入输出设备外存储器(外存)软件系统应用软件系统软件操作系统语言处理程序服务程序

完整的计算机系统包含两个部分:硬件系统、软件系统。二者相辅相成,仿佛躯体和灵魂不可分割。

1、计算机硬件系统

(1)概念

组成计算机的各种电磁、机械部件和设备装置的总称,硬件(Hard ware)系统是计算机实现自动控制和运算的物质基础。

(2)冯·诺依曼结构

组成:运算器、存储器、控制器、输入设备、输出设备

特点:程序和数据以二进制形式存在存储器中,在控制器的指挥下,自动从存储器中取指令并执行。1

运算器

对数据进行处理和运算。基本操作:算术运算、逻辑运算

包括算术逻辑单元ALU,Arithmetic Logic Unit)和寄存器存储器

用来存储程序和数据。由许多存储单元组成,每个单元有自己的地址,可根据地址找到所需数据和程序。

分为两类:

内存储器(主存储器):存储当前要执行的程序和数据以及中间结果和最终结果。

外存储器(辅助存储器):长期存储大量暂时不参与运算的数据和程序以及运算结果。控制器

指挥计算机各部件协调工作。控制:将输入设备输入的程序和数据存入存储器,按照程序要求指挥运算器进行运算处理并把结果再存入存储器中,最后将结果传给输出设备。

主要组成部分:

程序计数器(PC,Program Counter):存放当前要执行的指令地址,有自动加1的功能。

指令寄存器(IR,Instruction Register):存放当前要执行的指令代码。

指令译码器(ID,Instruction Decoder):识别IR中指令的性质和操作。

操作控制器(Operation Controller):根据ID的译码,产生实现该指令全部动作的控制信号。输入设备

将用户的程序、数据和命令输入到计算机内存的设备。标准输入设备是键盘。其它常用输入设备:鼠标、扫描仪、语音输入设备、手写识别输入设备等。输出设备

显示、打印或保存计算机运算和处理结果。标准输出设备是显示器。其它常用输出设备:打印机、绘图仪、数据投影设备(投影仪)等。

2、计算机软件系统

(1)概念

软件(Software)是计算机系统中各类程序、有关文档以及所需要的数据的总称。

程序:为了解决某一问题而设计的一系列指令或语句的集合。只是软件的一部分。

源程序(Source Program):用户为解决自己的问题编制的程序。

计算机指令:用来控制计算机、告诉计算机进行怎样操作的命令。

(2)两大分类

系统软件

用来管理、维护计算机及协调计算机内部更有效工作。

操作系统(核心软件)

对计算机系统进行控制和管理的大型软件。

操作系统的基本任务:

1)管理好计算机的全部资源(包括CPU、存储器、程序、数据、各种外设);

2)担任用户与计算机之间的接口。

操作系统的主要功能:

CPU管理、存储管理、文件管理、设备管理、作业管理。

语言处理程序

服务性程序

应用软件

为某个具体应用开发的软件。如文字处理软件、杀毒软件、财务软件、图形软件、工具软件、游戏程序等。

(3)计算机语言的发展

人类的语言一般称为自然语言。人为了让计算机完成某种任务而需要的语言就是计算机语言。机器语言是计算机语言发展的原点,高级程序设计语言是计算机语言发展的重要阶段。C语言是高级程序设计语言中的经典,是深入掌握其他程序设计语言的基础。

机器语言

指令通常包含两个部分

操作码(Operation Code):表示计算机执行什么操作

操作数(Operand):表示参加操作的数的本身或所在地址

计算机发展的初期,用指令的机器码(Machine Code)也就是用0和1组成的二进制代码形式来编写源程序。

是计算机能唯一识别和可直接执行的语言,被称为“面向机器的语言”。它占用内存少,执行速度快效率高,无须“翻译”。但编写麻烦,无通用性。汇编语言

通常用由指令功能英文单词缩写形成的助记符(Mnemonic)代替操作码,用符号(Symbol)表示操作数。

对于机器,必须用汇编程序将汇编语言源程序(.ASM)翻译成机器语言程序即目标程序(.OBJ),然后用连接程序将目标程序连接成可执行程序(.EXE)。

汇编语言同样具有很差的通用性,也属于“面向机器的语言”。高级语言(算法语言)

特点是和人类的自然语言(英语)及数学语言比较接近,与硬件无关,无须熟悉计算机的指令系统。

分类:

面向过程的高级语言:BASIC、FORTRAN、Pascal、C等。

面向对象的高级语言:C++、JAVA等。

高级语言的翻译方式:

编译方式:先通过编译程序将高级语言源程序(.C和.PAS等)编译成目标程序(.OBJ),翻译过程中进行语法检查,如果有错将给出错误信息,无错才形成二进制的目标程序;然后通过连接程序进行连接和定位,生成可执行程序文件(.EXE)。类似于笔译。

解释方式:通过解释程序,对源程序(.BAS)解释一条语句便执行一条语句,若发现错误便给出错误信息并停止解释和执行,无错便解释执行到最后。不生成目标文件和可执行文件,重复运行程序需重新翻译。效率低,执行速度慢,但便于人机对话。类似于口译。

3、计算机工作原理

冯·诺依曼结构计算机的工作原理最重要之处是“存储原理”,要先把编好的程序输入存储器中存储起来,然后依次取出指令执行。

每条指令的执行过程分为3个基本操作:

取出指令:从存储器某个地址中取要执行的指令;

分析指令:送指令译码器进行译码;

执行指令:向各个部件发送控制操作,完成指令要求。

二、程序设计基础

1、程序设计风格

风格会影响软件的质量和可维护性。好的程序设计风格可以使程序结构清晰合理,使代码便于维护。考虑因素如下。

(1)源程序文档化

标志符命名:见名知义。

程序注释信息:

序言性注释:位于程序开头,包括标题、程序主要功能、主要算法、作者等。

功能性注释:位于程序中间,描述变量含义、语句作用等。

视觉组织:程序清晰,便于阅读,使用空格、空行、缩进技巧。

(2)数据说明方法

数据说明应注意次序规范化。例如多个变量按照字母顺序排列,使用注释来说明复杂数据的结构等。

(3)语句构造

当不考虑效率时,程序编写应清晰第一,效率第二。

(4)输入输出

输入输出方式和格式应尽可能方便用户使用。

2、结构化程序设计(structured programming)

模块化设计为中心,基本原则是:采用自顶向下、逐步细化的方法进行设计,采用模块化原则和方法进行设计,限制使用goto语句。主要特点是:程序易于理解、使用和维护,提高了编程工作效率,降低了软件开发成本。

程序化设计的基本结构:

(1)顺序结构

最基本做常用的结构,按照书写顺序依次执行语句。

(2)选择结构(分支结构)

按照给定条件判断选择执行相应的语句序列,可改变程序的执行流程。

(3)循环结构(重复结构)

通过循环控制条件来决定是否重复执行相同的语句序列。包括当型循环和直到型循环。

由三部分构成

①初始化部分:为循环作准备,如为循环变量赋初值,往往位于循环语句前面。

②循环控制部分:循环控制的条件。

③循环体部分:循环工作的重复部分。

三、C语言程序基本结构和开发过程

1、C语言程序的基本结构

C语言程序的几点说明:

(1)以函数作为模块单位,有且仅有一个main()函数即主函数,总是从main函数开始执行,在main函数中结束。

(2)C函数模块分为两大部分

①函数说明部分(函数首部):包括函数类型、函数名、函数参数。

函数体部分:用左“{”表示开始,用右“}”表示结束。

(3)语句分为说明性语句可执行语句。每条语句必须以分号“;”结束,但书写格式自由,一行可以写多条语句,一条语句也可以占多行。

(4)编译预处理命令不是C语言语句,不能用分号结束,并且需要单独一行

(5)任何位置都可以用/**/进行注释,可以用英文或者中文进行注释,但建议使用英文注释,因为不同的开发环境使用的编码格式不同时,中文易导致乱码。

#include <stdio.h>/*编译预处理命令*//***** 主函数 *****/void main(void) /*函数首部*/{/*函数体开始*/int r; /*说明性语句*/float area;r = 2; /*可执行语句*/area = 3.14*r*r;printf("%f\n", area);} /*函数体结束*/

2、C语言程序开发过程

即:编辑、编译、连接、运行、调试

(1)源程序的编辑

使用文本编辑器(Editor)编写扩展名为.C的C语言源程序,实质是文本文件,可用任何文本编辑器来建立。

(2)源程序的编译

使用编译系统(编译器)对源程序文件进行编译。若没有语法错误,则生成目标程序文件(.OBJ),有错会给出错误信息提示。两类错误:

语法错误(Error):必须修改源文件的错误代码,否则无法生成目标程序文件。

警告错误(Warning):系统按照缺省处理方式生成目标程序文件,但不一定符合作者预期。

(3)目标程序文件的连接

利用连接器将一个或多个目标程序文件与库文件连接,生成可执行文件(.EXE),若找不到所需连接信息,会给出错误提示,不生成.EXE文件。

(4)可执行文件的运行

可执行文件可以直接运行。在集成开发环境(IDE,Integrated Development Environment)下,可以方便地进行代码的运行和调试。也可不使用IDE,在Windows系统中,可直接在命令提示符中键入文件名来运行可执行文件。

(5)可执行文件的调试

若.EXE文件运行异常,得不到正确结果,则要返回源程序进行修改。

3、程序开发环境

集成开发环境IDE

初学的比较经典的C语言集成开发环境有Microsoft Visual C++(简称VC++)和Microsoft Visual Studio(简称VS),前者是后者这个完整开发工具集中的针对C类语言的开发环境。在学校用的是 VC++ 6.0 和 VS 这两个版本。个人目前做嵌入式开发比较多,嵌入式C语言工程多结合具体的硬件设备开发,不同的产品可能有不同的IDE,比如经典的 ICCAVR、IAR、Keil、CodeWarrior 等。

关于编辑器

最近常用两款编辑器,一个是很火的Visual Studio Code,微软推出的跨平台、多语言文件格式、轻量级代码编辑器。一个是由Scitools发行的Understand,具有很强大的代码编辑跟踪和静态分析能力,而且界面非常方便友好,堪称神器。另外一些简单代码也会拿Windows记事本或者Notepad++直接撸,不得不说程序猿的工具还是相当多而且很人性的!

THE END

控制流可由控制器指向其余四个部分,但是运算器的数据只能跟存储器交换,控制器从存储器中取数据,也就是控制器与运算器之间没有直接的数据流,但有控制流。 ↩︎

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。