【C语言基础Ep1】谭浩强《C程序设计》学习笔记P1:C语言概述

(合计2427字,用时80min——)
第1章 程序设计和C语言
1.1 什么是计算机程序
程序:
定义:一组计算机能识别和执行的指令;
原理——
每一条指令使计算机执行特定的操作;
只要让计算机执行这个程序,计算机就会“自动地”执行各条指令,有条不紊地进行工作;
一个特定的指令程序,用来完成一定的功能;
为了使计算机系统能实现各种功能,需要成千上万个程序;
这些程序大多数是由计算机软件设计人员根据需要设计好的,作为计算机的软件系统的一部分提供给用户使用;
用户还可以根据自己的实际需要设计一些应用程序;
地位:计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成,
计算机的本质是程序的机器,程序和指令是计算机系统中最基本的概念,
只有懂得程序设计,才能真正了解计算机是怎样工作的,才能更深入地使用计算机,
1.2 什么是计算机语言
发展阶段:
机器语言(machine language):
原理:计算机工作基于二进制,从根本上说,计算机只能识别和接受由0和1组成的指令;
概述:在计算机发展的初期,一般计算机的指令长度为16,即以16个二进制数(0或1)组成一条指令,16个0和1可以组成各种排列组合;
概念:
机器指令(machine instruction):计算机能直接识别和接受的二进制代码;
机器语言(machine language):机器指令的集合;
特点:机器语言与人们习惯用的语言差别太大,难学、难写、难记、难检查、难修改,难以推广使用。
符号语言(symbolic language):
概述:为了克服机器语言的上述缺点,人们创造出符号语言(symbolic language),它用一些英文字母和数字表示一个指令,例如用ADD代表“加”,SUB代表“减”,LD代表“传送”;
概念:
符号汇编语言(symbolic assembler language):一般,一条符号语言的指令对应转换为一条机器指令,转换的过程称为“代真”或“汇编”,符号语言又称为符号汇编语言(assembler language);
低级语言(low level language):机器语言和汇编语言是完全依赖于具体机器特性的,是面向机器的语言,由于它“贴近”计算机,或者说离计算机“很近”,称为计算机低级语言(low level language)。
高级语言(high level language):
背景:为了克服低级语言的缺点,20世纪50年代创造出了第一个计算机高级语言——FORTRAN语言;
特点:
很接近于人们习惯使用的自然语言和数学语言,程序中用到的语句和指令是用英文单词表示的;
程序中所用的运算符和运算表达式和人们日程所用的数学式子差不多;
高级语言的一个语句往往对应多条机器指令;
概念:
高级语言(high level language):这种语言功能很强,且不依赖于具体机器,用它写出的程序对任何型号的计算机都适用(或只须作很少的修改),它与具体机器举例较远,故称为计算机高级语言;
编译:用一种称为编译程序的软件把用高级语言写的程序(称为源程序,source program)转换为机器指令的程序(称为目标程序,object program),然后让计算机执行机器指令程序,最后得到结果;
发展阶段:
非结构化的语言:初期的语言属于非结构化的语言,编程风格比较随意,只要符合语法规则即可,没有严格的规范要求,程序中的流程可以随意跳转;——难以阅读和维护;
结构化语言:程序必须由具有良好特性的基本结构(顺序结构、分支结构、循环机构)构成,程序中的流程不允许随意跳转,程序总是由上而下顺序执行各个基本机构;
基于过程的语言:在编写程序时需要具体制定每一个过程的细节,在编写规模较小的程序时,还能得心应手,但在处理规模较大的程序时,就显得捉襟见肘、力不从心了;
面向对象的语言:面对的不是过程的细节,而是一个个对象,对象是由数据以及对数据进行的操作组成的。
1.3 C语言的发展及其特点
发展:
BCPL语言:1967年英国剑桥大学的Martin Richards推出了没有类型的BCPL(Basic Combined Programming Language)语言;
B语言:1970年美国AT&T贝尔实验室的Ken Thompson以BCPL语言为基础,设计出了很简单且很接近硬件的B语言(取BCPL的第一个字母),但B语言过于简单,功能有限;
C语言诞生:1972-1973年间,美国贝尔实验室的D. M. Ritchie在B语言的基础上设计出了C语言;
C语言成长:最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的,1973年,Ken Thompson和D. M. Ritchie合作把UNIX的90%以上用C语言改写,随着UNIX的日益广泛使用,C语言也迅速得到推广;
ANSI C:ANSI C比原来的C有了很大的发展;
ISO对C 90做的修订(ISO/IEC 9899:1999):在基本保留原来的C语言特征的基础上,针对应用的需要,增加了一些功能,尤其是C++中的一些功能,命名为ISO/IEC 9899:1999。
概述:
C语言既保持了BCPL和B语言的优点(精炼,接近硬件),又克服了它们的缺点(过于简单、无数据类型等);
C语言的新特点主要表现在具有多种数据类型(如字符、数值、数组、结构体和指针等);
开发C语言的目的在于尽可能降低用它所写的软件对硬件平台的依赖程度,使之具有可移植性;
C语言是一种用途广泛、功能强大、使用灵活的过程性(procedural)编程语言,既可用于编写应用软件,又能用于编写系统软件。
特点:
语言简洁、紧凑,使用方便、灵活;
运算符丰富;
数据类型丰富;
具有结构化的控制语句(如if...else语句、while语句、do...while语句、switch语句和for语句);
语法限制不太严格,程序设计自由度大;
C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作;
用C语言编写的程序可移植性好;
生成目标代码质量高,程序设计效率高。