所谓程序,就是一组计算机能识别和执行的指令。每一条指令能使计算机执行特定的操作。
人与人之间交流需要通过语言,我们中国人之间交流用普通话,英国人用英语,俄国人用俄语等。
那人和计算机之间交流当然也要使用一种语言了,所以我们创造了一种计算机和人都能识别的语言,这就是计算机语言。
计算机语言是为了编写计算机程序而设计的符号语言,是用于对计算过程进行描述、组织和推导,方便人机交互的一种语言。
1、从低级语言到高级语言
(1)机器语言
由于计算机工作基于二进制,计算机硬件只能识别由0、1字符串组成的机器指令序列,也就是机器指令程序,我们把它称为机器语言,所以机器语言是最基本的计算机语言。用机器语言编制程序效率低、可读性差,也难以理解、修改和维护。
(2)汇编语言
由于使用机器语言对于人类来说太不友好了,所以人们设计了汇编语言,用一些容易记忆的符号代替0、1序列,来表示机器指令中的操作码和操作数。例如:用ADD表示加法、SUB表示减法等。相对于机器语言,使用汇编语言编写程序的效率和程序可读性有所提高,但汇编语言是面向机器的语言,其书写格式在很大程度上取决于特定计算机指令。
由于它比较“贴近”于计算机,或者说“偏向”于计算机,对计算机比较友好,所以机器语言和汇编语言被称为低级语言。
(3)高级语言
随着计算机的发展,人们开发了功能更强、可读性更高、更加“偏向”于人们逻辑思维的语言,为了更好的支持程序设计,因此产生了面向各类应用的程序设计语言,即高级语言。高级语言更接近于人们习惯使用的自然语言和数学语言,程序中用到的语句和指令是用英文单词来表示的,用到的运算符和表达式和我们日常用的数学算式差不多,比较容易理解。
我们常用的高级语言有C、C++、Java、PHP、Python等,这类语言与人们使用的自然语言比较接近,能够大大的提高程序设计的效率。
编译程序和解释程序
尽管人们可以借助高级语言与计算机进行交互,但是计算机仍然只能理解和执行由0、1序列构成的机器语言,所以高级程序设计语言需要翻译成计算机能够识别的机器语言,担负这一任务的程序称为“语言处理程序”。由于应用程序设计语言不同,语言之间的翻译也是多种多样的,它们大致可以分为汇编程序、解释程序和编译程序。
用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。如果源程序是用汇编语言编写的,就需要汇编程序来把它翻译成目标程序才能执行;如果源程序是用某种高级语言编写的,就需要对应的解释程序或者编译程序进行翻译才能执行。
(1)编译程序:计算机是不能直接识别高级语言程序的,需要用一种称为编译程序的软件把用高级语言写的程序(源程序)转换成为机器指令的程序(目标程序),计算机才能够执行,最后才能得到结果。高级语言的一个语句往往对应多条机器指令。
C语言是编译型语言,从C语言源程序到可执行的目标程序需要经过预处理、编译和连接三个步骤。
(2)解释程序:也称为解释器,它可以直接解释执行源程序,或者将源程序翻译某种中间表示形式后再加以执行,不生成独立的目标程序。
程序设计语言的基本成分包括数据、运算、控制和传输等。
程序设计语言的数据成分是指程序设计语言所支持的数据类型。数据是程序操作的对象,具有类型、名称、作用域、存储类别和生存期等属性,在程序运行过程中要为他分配内存空间。
数据名称可以由用户通过标识符命名,标识符通常由字母、数字和下划线'_'组成,且只能由字母和下划线开头,不能是关键字和保留字;
数据类型说明数据占用内存的大小和存放形式;
作用域则说明这个数据的使用范围;
存储类别说明数据在内存中的位置;
生存期说明数据占用内存的时间范围。
从不同的角度来看,可以将数据进行分类。
(1)根据程序运行时数据的值能否被改变可分为常量和变量。在程序中数据可以具有左值和右值,左值是指数据的存储空间(内存地址),右值是指数据的内容(值)。在程序运行中,数据的左值是不可被改变的,也就是常量,右值是可以被改变的,也就是变量。也有一些符号和数值类型等,只有右值,在程序运行过程中其右值不可被改变,所以也将他们称为字符常量和数值常量。
(2)按照数据类型不同可分为基本类型、特殊类型、用户自定义类型、构造类型及其它类型等。
C/C++的数据类型如下:
基本类型(type):整型(int、short、long、unsigned)、字符型(char)、实型(float、double)和布尔类型(bool)。
特殊类型:空类型(void)。
用户定义类型:枚举类型(enum)。
构造类型:数组(type [])、结构体(struct)、共用体(union)。
指针类型:type *。
抽象数据类型:类、对象。
(3)按照作用域的不同可分为全局量和局部量。全局量的作用域为整个程序,所以它在整个程序中都是可用的,在程序运行中其存储空间一般不可改变;而局部量的作用域为一条语句或者一个函数中,它在其他语句或者函数中是不可用的。
运算成分指明允许使用的运算符号及运算规则。大多数高级程序设计语言的基本运算可分为算术运算、关系运算和逻辑运算等类型,有些语言还提供了位运算(如C、C++),运算符和数据类型密切相关,为了得到明确的运算结果,运算符号要规定优先级和结合性,必要时需要使用圆括号来改变其运算顺序。
算术运算符:+、-、*、/、%(取余)、++(自增)、--(自减)。
赋值运算符:=(赋值)、+=、-=、*=、/=、%=。
关系运算符:<、>、<=(小于等于)、>=、!=(不等于)、==(等于)。
逻辑运算符:&&、||、!。(与、或、非)
位运算符:<<、>>。
控制成分是指程序设计语言允许使用的控制结构,程序员可以使用控制成分来构造程序中的控制逻辑。控制结构可分为顺序、选择和循环这三种。
(1)顺序结构:用来表示一个计算操作序列的计算过程是按照所描述的第一个操作开始执行,按顺序依次执行后续操作,直到执行完最后一个操作。
C语句:一个C语言程序由若干条C语句组成,每一条语句完成一个任务,除特殊格式以外,C语句都需要以‘;’分号结束。
复合语句:又称为语句块,是多条语句的组合,用‘{}’(大括号)括起来,被看作一个整体进行处理。
(2)选择结构:也称为分支结构,它提供了在两个或多个分支中选择其中一个的逻辑。首先选择结构指定一个条件,然后根据条件是否成立来决定程序的走向,能从两个或多个分支中选择一个满足条件的来执行。
C语言中的分支结构有两种,分别为:
①if……else选择分支结构
②switch……case多分支结构
(3)循环结构:描述了重复计算的过程。通常由初始化、需要重复计算的部分和重复计算的条件组成。
C语言中的循环结构有三种,分别为:
①for循环
②while循环
③do……while循环
传输成分是指程序设计语言的输入和输出等数据传输。
(1)格式化输出函数
基本格式:
printf(格式控制,输出列表);
(2)格式化输入函数
基本格式:
scanf(格式控制,输入列表);
//注意给变量输入值时需要取变量的地址(&)
括号内包括两个部分:
①格式控制
格式控制是用双引号括起来的一个字符串,称为“转换控制字符串”,简称“格式化字符串”。
它包括两个信息:
●格式声明:由%和格式字符组成,用作将输出的数据转换为指定的格式然后输出。格式声明符总是由‘%’字符开始的。
常用的格式声明符有:
%d(十进制),%o(八进制),%x(十六进制),%u(无符号十进制),%c(单个字符),%s(字符串),%f(单精度),%lf(双精度),%e(科学计数法),%i(自适应整数类型),%g(自适应浮点类型)。
●普通字符:即需要在输入/输出时原样输入/输出的字符。
如:\n、\t、\a、空格、逗号等。
printf(“a=%d\n”,a);//这里的a=和\n是原样输出的,a=1’\n’
②输入/输出列表
输出列表就是程序需要输出的一些数据,可以是常量、变量或表达式。
输入列表就是一些需要赋值的变量,从键盘向cmd控制台以特定格式给变量赋值。
格式化输出函数printf是个函数,所以“格式控制字符串”和“输出列表”实际上都是函数的参数。
printf函数的一般形式可以表示为:printf(“参数1”,参数2,参数3,…,参数n);
参数1是格式控制字符串,参数2~参数n是所需要输出的数据。
我们还可以自定义输入/输出的分隔符和格式。
如:printf(“%d %c %f\n”,a,b,c);、printf(“%d,%c,%f\n”,a,b,c);、printf(“%d\t%c\t%f\n”,a,b,c);
scanf(“%d %f %d”,&a,&b,&c);、scanf(“%d%f%c”,&a,&b,&c);、
scanf(“%d,%f,%d”,&a,&b,&c);、scanf(“%d %f,%c”,&a,&b,&c);
格式化字符串中所描述的格式是怎样的,那么输入/输出后的格式就会是怎样的。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!