《从问题到程序》第一、二章学习总结
《从问题到程序》第一、二章学习总结
程序设计与C语言
程序设计过程
程序一词也来自生活,通常指完成某些事务的一种既定方式和过程。一个复杂的程序分解成为若干相对简单一些的程序,部分编程序时所需要掌握的恰恰就是这种工作方式。我们需要从问题的要求出发,从高层开始设计程序,并逐步分解程序功能。当将程序所需功能分解到一定的细节程度之后,就可以借助于程序语言的结构,描述程序工作中的细节步骤了。
C程序
用 C 语言写的程序简称为 C 程序。
#include <stdio.h>
int main () {
printf("Good morning!\n");
return 0;
}
上面这个简单程序可分为两个基本部分:第一行是个特殊行,说明程序用到 C 语言系统提供的标准功能,为此要参考标准库文件 stdio.h,有关细节在第五章介绍。空行下的几行是程序基本部分,描述程序所完成的工作。该程序的意义就是产生一行输出“Good morning!”。
C 语言是高级程序语言,用 C语言写出的程序通常称作源程序,人容易使用、书写和阅读,但计算机却不能直接执行,因为计算机只能识别和执行特定二进制形式的机器语言程序。为使计算机能完成某个 C 源程序所描述的工作,就必须首先把这个源程序(如上面简单例子)转换成二进制形式的机器语言程序,这种转换由 C 语言系统完成。
数据对象与计算
本章主要讲述了C语言对各种数据在写法上的规定,我们如何在程序中表达我们想要完成的任务。包括对标识符,数据类型,运算符,函数的介绍。
基本字符与标识符
一个 C 程序就是 C 语言基本字符的一个符合规定形式的序列。C 语言基本字符包括:
- 数字字符,0,1,2,3,4,5,6,7,8,9;
- 大小写拉丁字母:a~z,A~Z;
- 其他一些可打印(可以显示)的字符(如各种标点符号、运算符号、括号等),包括:~!%&*()_-+={}[]:;"'<>,.?/|\。
- 还有一些特殊字符,如空格符、换行符、制表符等。空格符、换行符、制表符等统称为空白字符。空白字符在程序中主要用于分隔其他成分。
程序中常常需要定义一些东西,以便在各处使用。为了在定义和使用之间建立联系,表示不同位置用的是同一个对象,基本的方式就是为程序对象命名,通过名字建立起定义与使用间、同一对象的不同使用间的联系。为了这种需要,C 语言规定了名字的书写形式。程序中的名字称为标识符。一个标识符是字母和数字字符的一个连续序列,其中不能有空白字符,而且要求第一个字符必须是字母。为了方便起见,C 语言特别规定将下划线字符“_”也当作字母看待。
数据与类型
整数类型int 长整数类型long int
实数类型:单精度浮点数类型float 双精度类型double 长精度类型long double
字符类型char,长用特殊字符:换行字符'\n',双引号字符'"',单引号字符''',反斜线字符'\'。
#include <stdio.h>
int main () {
printf("Welcome\nto\nBeijing!\n");
printf( "%d+%d=%d\n"2,3,5);
printf("len:%f, width:%f, area:%f\n", 2.2, 3.5, 7.7);
return 0;
}
上述程序将输出:
Welcome
to
Beijing
2+3=5
len:2.200000, width:3.500000, area:7.700000
运算符
C语言的算术运算度一共有5个,如下表。
5个算术运算符的运算优先级如下.
具有相同优先级的运算符相邻出现时,C语言规定一元算术运算符自右向左结合;二元算术运算符自左向右结合,优先级相同时左边的运算符先计算。如果用括号括起表达式中的某个部分,括号里面的表达式将先行计算,得到的结果再参与括号外面的其他计算。
当某个运算符的运算对象具有不同类型时,就出现了混合类型计算。例如表达式:3.27 + 201,这里的一个运算对象是 double 类型,而另一个运算对象是 int 类型。当表达式计算中遇到混合类型计算时,处理方式是转换某个(或两个)运算对象的值,先从计算对象转换出相同类型的值,然后再做实际计算。这种由混合类型计算引起的类型转换称为算术运算中的自动类型转换。“自动”的意思就是说这种转换不需要在程序里明确写出。自动类型转换的基本原则是把表示范围小的类型的值转换到表示范围大的类型的值。按规定,几个算术类型转换的排列顺序从小到大是:int long float double long double.
函数及其使用
要使用一个函数,只需要知道:
- 该函数的名字,
- 该函数的使用方式,
- 该函数完成什么计算,能给出什么结果。
在表达式中使用函数的一般形式是:
函数名(实际参数)
函数名(实际参数, 实际参数)
#include <stdio.h>
#include <math.h>
int main () {
printf("Area of the triangle: %fm^2\n",
3.5 * 4.72 * sin(37.0 / 180 * 3.1416) / 2);
return 0;
}
上述函数是在求两邻边长度分别为 3.5 和 4.72 米,两边夹角为 37 度的三角形的面积。