• 2017-2018-1 20179215 《从问题到程序》第三章


    #《从问题到程序》第三章总结 ### 回顾第二章的学习,我们可以进行从基本数据类型出发的简单计算过程,得到的仅是基于特定运算的一个结果,这章我们要考虑的是如何构造函数,使能达到一类问题的解决方法,而不是每次都要修改程序。 ###1.变量 ### 当一个变量被定义时,系统为它确定一个存储值的位置,这个存储位置所占存储器单元的多少由变量的类型确定,也就是说,由变量所要存储的数据值的大小决定。 ###注意:提倡在采用定义变量时直接初始化的方式,初始化时不能采用多重赋值的形式,即使需要赋给多个变量的初值完全相同,也必须一个一个地分开写。 ### 书中提出个问题:如果我们把前面程序例子的赋值语句改写成:s = (3 + 5 + 7) / 2;编译后运行时就会发现程序的结果不对。显然这是一个合法的语句,右边表达式算出的值也将先转换为双精度类型的值,而后赋给变量 s。但是,为什么这样改动之后,这个程序就会出现语义错误?请读者自己设法弄清楚。结果如下图: ### 其实,右半部分相当于整型做了除法取整运算,相当于得到了整型的7再把它转成double型,即为7.0,那么带入sqrt,(s-7)部分得0,所以最后打印0。 ###2.定义函数 ### 当主程序执行函数调用时,它自己的执行暂时中断,执行控制权转到被调用函数,使该函数开始执行。直到函数执行完毕,函数返回使执行控制权回到主程序,主程序才从中断点之后继续下去。如图3.2所示: ### 函数定义方法:函数头部说明了函数的名字和类型特征,在形式上是顺序写出的几个部分:函数的计算结果类型,函数名字,随后是写在一对括号里表述该函数参数情况的说明。最后这部分也称为函数的参数表,其中说明了本函数要求几个参数,它们各是什么类型的。参数表里还要为每个参数取一个名字,以便在函数体中的表达式和语句里使用这些参数值。在函数 c_ area的定义中,函数头部是:double c_ area (double r)。这表示本函数的名字是 c_ area,其返回值类型是 double;这个函数只有一个参数(参数表里只有一对类型描述和参数名 double r),参数的类型是 double,参数名是 r。 ### C语言的规定是:返回表达式的类型必须能转换到函数头部定义的返回值类型。执行到返回语句时, 其表达式求出的值先转换到函数头部所要求的类型, 再将转换结果作为返回值。例如在下面函数定义里, return 语句求出表达式的值之后就需要做类型转换: int fun (int m){ return 3.14159 * m; } ###3.关系表达式、逻辑表达式、条件表达式 ### C 语言规定关系运算得到 int 类型的值:当关系成立时,关系表达式求出的值是 1;关系不成立时求出的值是 0。这样, 3.24 ⇐ 2.98 的值是 int 类型的 0,而表达式 5 != 3 + 1 的值是 int 类型的 1。 ### 编程时经常需要描述复杂的关系。例如,可能要说当变量的值 x 在区间 [3, 5] 之内时z应取值 2,否则就取值 1。这种情况可以利用关系表达式和条件表达式描述:z = (x >= 3 ? (x ⇐ 5 ? 2 : 1) : 1);但采用这些写法,写出的描述常常不太直观。为了方便人们在程序里描述复杂的条件, C 语言提供了逻辑运算符,利用它们可以描述:多个条件同时成立,多个条件之一成立,某个条件不成立等等。 ###4.本章出现的有用程序模式

  • 相关阅读:
    集合操作
    聚合函数
    图存储3-十字链表
    图存储2-邻接表
    图存储1 临接矩阵
    字符串逆序,字符串翻转
    读写文件
    加密算法
    静态变量-动态变量
    【Qt】UserDefindeControl
  • 原文地址:https://www.cnblogs.com/yl-930/p/8016824.html
Copyright © 2020-2023  润新知