作为大多数计算机专业的入门课程,C语言容易浇灭很多编程学习者的热情。但任何领域的学习都需要耐心与努力,学习一门编程语言的唯一途径就是去实践、去敲代码,C语言也不例外,本文作为C语言的第一篇文章,将对C语言程序设计做一个基本的概括,去解释一些基本术语与概念······
01
机器指令
计算机能直接识别和接受的二进制代码
02
机器语言
机器指令的集合就是该计算机的机器语言(机器语言和人们平时习惯用的语言差别太大,难学、难记、难检查、难修改、难以推广,初期只有极少数的计算机专业人员会编写计算机程序)
03
符号语言
用一些英文字母和数字表示一个指令的语言。计算机不能直接识别和执行符号语言的指令,因此需要汇编程序将符号语言的指令转换为机器语言的指令。符号语言又被称为符号汇编语言或者汇编语言。
低级语言
机器语言和汇编语言是完全依赖于具体机器特性的,是面向机器的语言。这种语言称为低级语言。
高级语言
接近于人们习惯使用的自然语言和数学语言,并且功能强大,不依赖于机器,写的程序能够对任何型号的计算机都适应(或者只做极少数的修改)。这种语言称为高级语言。
编译程序
我们使用编译程序把高级语言写的程序(源程序)转换为机器指令的程序(目标程序)。
高级语言发展阶段
高级语言发展分为非结构化语言、结构化语言、面向对象语言三个阶段
非结构化语言
![1261c63fa3c43acc9cbe701c7a0d666a.png](https://i-blog.csdnimg.cn/blog_migrate/e4ef224284e45418c4d3de6a39c445b1.png)
编程风格随意,符合语法规则就好的语言
结构化语言
![2ef5b4bea452c277c49863d05961c127.png](https://i-blog.csdnimg.cn/blog_migrate/7ce4335eacdf8967f5561d1a2ba4d507.png)
规定程序必须由具备良好特性的基本结构(顺序结构、选择结构、循环结构)构成。这种程序结构清晰、易于编写、阅读和维护。
面向对象语言
![7e5b4b607e0beee2e487cce2bc067eda.png](https://i-blog.csdnimg.cn/blog_migrate/1c44e69ac462805196c39f135904dfb5.png)
其本质是以建立模型体现出来的抽象思维过程和面向对象的方法(这里不做要求)
C语言
发展历史
![f3479ab1890cc18b122f3d99173a57f1.png](https://i-blog.csdnimg.cn/blog_migrate/211ae87c092aa6678174979ba5d74390.jpeg)
丹尼斯·里奇//C语言之父,UNIX之父
C语言于1972年11月问世,1978年美国电话电报公司(AT&T)贝尔实验室正式发布C语言,1983年由美国国家标准局(American National Standards Institute,简称ANSI)开始制定C语言标准,于1989年12月完成,并在1990年春天发布,称之为ANSI C,有时也被称为 C89 或 C90。
![efe7f65ee22bd0e70a124fa8257b3301.png](https://i-blog.csdnimg.cn/blog_migrate/af63c3f6757def397c1fdde20083d005.png)
一
C语言主要特点
(1)语言简洁、紧凑、使用方便、灵活。
(2)运算符丰富
(3)数据类型丰富
(4)具有结构化的控制语句
(5)语法限制不太严格
(6)C语言允许直接访问物理地址
(7)用C语言编写的程序可移植性好
(8)生成代码质量高,程序执行效率高
二
C语言程序的结构特点
1.一个程序由一个或者多个源程序文件组成
一个源程序文件包括:
①预处理指令:如:#include //将stdio.h头文件的内容读进来
②全局声明:如:将定义int a;放在mian函数的前面
③函数定义:包括mian函数在内的所有函数
2.函数是C语言程序的主要组成部分
3.一个函数包括以下两个内容
(1)函数首部:函数类型 函数名 (函数参数类型 函数参数名,···函数参数类型 函数参数名) 如:int add(int a,int b)
(2)函数体:函数首部下花括号的部分。函数体包括:
a. 声明部分:定义在本函数中需要使用到的变量;声明在本函数中所需要用到的函数。
b. 执行部分:由若干个执行语句组成
4.程序总是从main函数开始执行
5.程序中要求计算机完成的操作是由函数中的C语句完成的
6.在每个数据声明和语句的最后必须有一个分号
7.C语言本身不提供输入输出语句
输入和输出语句通过scanf函数和printf函数完成
8.程序应当包含注释
三
运行C程序的步骤和方法
1.上机输入和编辑源程序(源程序的后缀名是.c)
2.对源程序进行编译,先用C编译系统所提供的“预处理器”对程序中的预处理指令进行预编译。由预处理之后得到的信息和程序的其他部分一起组成一个完整的、可以用来正式编译的源程序。然后由编译系统对其进行预编译。
编译的作用首先是对源程序进行检查,判断有无其语法方面的错误。编译程序自动将源程序转换为二进制形式的目标程序(后缀名为.obj)
3.进行连接处理:将所有的编译后得到的目标模块连接装配起来,再与函数库相连接成为一个整体,生成一个可供计算机执行的目标程序,称为可执行程序(后缀名是.exe)
4.运行可执行程序,得到运行结果
四
编译系统
为了编译、连接和运行C程序,必须要有相应的编译系统。目前使用的许多C编译系统都是集成开发环境(IDE)的,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,功能丰富,使用方便,直观易用。(这里在Window10环境下,使用Visual Studio2015或2017)
五
程序设计的过程
问题分析
设计算法
编写程序
对源程序进行编辑、编译和连接
运行程序,分析结果
编写程序文档
六
程序=数据结构+算法
1.数据结构:对数据的描述。在程序中指定用到哪些数据,以及这些数据的类型和数据的组织结构。
2.算法:对操作的描述。要求计算机进行操作的步骤。广义地说,算法是为解决一个问题而采取的方法和步骤。
七
算法的特性
1.有穷性:一个算法应包含有限的操作步骤,而不是无限的。
2.确定性:算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。
3.有零个或两个输入:所谓输入是指在执行算法时需要从外界取得必要的信息。
4.有一个或多个输出:算法的目的是为了求解,“解”就是输出。
5.有效性:算法中的每一个步骤都应当能够有效地执行,并得到确定的结果。
八
三种基本结构
1.顺序结构,依次执行操作框的内容
2.选择结构,根据给定的条件是否成立而选择执行哪一个操作框
3.循环结构。
当型(while)循环结构,当给定的条件成立,执行特定操作框。
直到(until)循环结构,当给定的条件不成立,执行特定操作框。
![6a05f352cceb007d485f1f43e21e19aa.png](https://i-blog.csdnimg.cn/blog_migrate/2a8c6e6c63bc5b26526a147a0b9059cd.png)
选择结构
顺序结构
![2be3a33651cac5d5722677b8bc609b47.png](https://i-blog.csdnimg.cn/blog_migrate/227306710a97f0604616ae796b9057ee.png)
![9da10263f5aa450a58ae6afb844a4047.png](https://i-blog.csdnimg.cn/blog_migrate/11ce56644c652ee5229818be644cf14c.png)
直到(until)循环
当(while)循环结构
![a59cd509a7d3a53c2aebac9282c70602.png](https://i-blog.csdnimg.cn/blog_migrate/6c4d69825dd3ad0592c478ce40ce200a.png)
九
表示一个算法的方式
1.用自然语言表示算法
通过使用人们日常使用的语言,如汉语、英语或者其他语言来描述算法。
2.用流程图表示算法
![b91f26cef6122dfc29d4f9304697a0e1.png](https://i-blog.csdnimg.cn/blog_migrate/b2b81a567aaaa8933063ffc8bc794eea.png)
流程图包括:
1.表示相应操作的框
2.带箭头的流程图
3.框内外必要的文字说明
3.N-S流程图表示算法
![4281a2dbb107ee0018c11786517df26d.png](https://i-blog.csdnimg.cn/blog_migrate/da028eae6fab8a6aa98c3d88bab3e391.png)
N-S顺序结构
![27f88aea3566e6fe61152b0bc2978d24.png](https://i-blog.csdnimg.cn/blog_migrate/8f198359839721dad62675e72d62adf8.png)
N-S选择结构
![cd0e1be831b507aa2b47c5f4f551f0ef.png](https://i-blog.csdnimg.cn/blog_migrate/9f7c259de20f0cbc1bd22a806e5110b6.png)
![578007afe98da9bf4ec595ffdfbb1739.png](https://i-blog.csdnimg.cn/blog_migrate/8245a97fd13e2122987c9aee4036b143.png)
N-S的while循环结构(左)和until循环结构(右)
4.用伪代码表示算法
伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以中英文混用,只要把意思表达清楚,便于书写和阅读即可,书写的格式要写成清晰易读的形式。
![e58e986caa136fa070dc6d1b29ef7817.gif](https://i-blog.csdnimg.cn/blog_migrate/3f0ed9264a0e9c8daa3cd4f86066c1f2.gif)
![90a7ac844ef3ead70d2c3f53ed9e4b6f.png](https://i-blog.csdnimg.cn/blog_migrate/3dc3b8d612fa81d9d86369e6efa5176b.jpeg)