面向对象的语言

出发点:更直接地描述客观世界中存在的事物(对象)以及它们之间的关系。

特点:

是高级语言。

将客观事物看作具有属性和行为的对象。

通过抽象找出同一类对象的共同属性和行为,形成类。

通过类的继承与多态实现代码重用

面向对象的语言

优点:

使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。

面向过程的程序设计方法

设计思路

自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。

程序结构:

按功能划分为若干个基本模块,形成一个树状结构。

各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。

其模块化实现的具体方法是使用子程序。

面向过程的结构化程序设计方法

优点:

有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

面向过程的结构化程序设计方法

缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件

把数据和处理数据的过程分离为相互独立的实体。

当数据结构改变时,所有相关的处理过程都要进行相应的修改。

每一种相对于老问题的新方法都要带来额外的开销。

图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。

面向对象的方法

将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。

对同类型对象抽象出其共性,形成类。

类通过一个简单的外部接口,与外界发生关系。

对象与对象之间通过消息进行通信。

优点:

程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。

通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。

面向对象的软件工程是面向对象方法在软件工程领域的全面应用。

它包括:

面向对象的分析(OOA)

面向对象的设计(OOD)

面向对象的编程(OOP)

面向对象的测试(OOT)

面向对象的软件维护(OOSM)

计算机的数字系统

计算机采用的是二进制数字系统。

基本符号:0、1

进位原则:逢二进一

优点:

易于物理实现

二进制数运算简单

机器可靠性高

通用性强

缺点:对人来说可读性差

程序设计中常用的数制

不同进位记数制间的转换

——R 进制→十进制

各位数字与它的权相乘,其积相加。

例如:

(11111111.11)2=1×27+1×26+1×25+1×24 
+1×23+1×22+1×21+1×20+1×2-1+1×2-2 
=(255.75)10

(3506.2)8=3×83+5×82+0×81+6×80+2×8-1
=(1862.25)10

(0.2A)16=2×16-1+10×16-2=(0.1640625)10

不同进位记数制间的转换
       ——十进制→ R 进制

十进制整数转换成R进制的整数

“除R取余”法,例如:

2   68                        余 数

2   34 ┄┄┄┄┄┄┄┄┄┄┄┄ 0  低位

2   17 ┄┄┄┄┄┄┄┄┄┄┄ 0

2   8 ┄┄┄┄┄┄┄┄┄┄┄ 1

2   4  ┄┄┄┄┄┄┄┄┄┄ 0

2   2 ┄┄┄┄┄┄┄┄┄┄ 0

2   1  ┄┄┄┄┄┄┄┄┄ 0

0  ┄┄┄┄┄┄┄┄┄ 1   高位

所以 6810=10001002

不同进位记数制间的转换
       ——十进制→ R 进制

十进制小数转换成R进制小数

“乘 R 取整”法,例如:

高位

0.3125 ×2 = 0 .625

0.625  ×2 = 1 .25

0.25   ×2 = 0 .5

0.5    ×2 = 1 .0

所以 0.312510  = 0.01012

信息的存储单位

位(bit,b):度量数据的最小单位,表示一位二进制信息。

字节(byte,B):由八位二进制数字组成(1 byte = 8 bit)。

千字节    1 KB = 1024 B

兆字节    1 MB = 1024 K

吉字节    1 GB = 1024 M

二进制数的编码表示:原码

"符号──绝对值表示"的编码

例如:

X=+0101011    [X]= 0 0101011

X=-0101011    [X]= 1 0101011

符号位

缺点:

零的表示不惟一:
[+0] =000...0 [-0] =100...0

进行四则运算时,符号位须单独处
理,且运算规则复杂。

二进制数的编码表示:补码

模数:

n位整数(包括一位符号位),则它的模数为 2n  n位小数,小数点前一位为符号位,则它的模数为 2。

补数:

一个数减去另一个数,或者说一个数加上一个负数,等于第一个数加上第二个数的补数。例:8+(-2)=8+10 ( mod  12 )

一个二进制负数可用其模数与真值做
加法 (模减去该数的绝对值) 求得其补
码。

二进制数的编码表示:反码

正数的反码与原码表示相同。

负数的反码与原码有如下关系:

符号位相同(仍用1表示),其余各位取反(0变1,1变0)。例如:
X=-1100110 [X] =11100110 [X] =10011001
X=+0000000 [X] =00000000 [X] =00000000

反码中零的表示也不惟一

X=-0000000 [X] =10000000 [X] =11111111

反码只是求补码的中间码

二进制数的编码表示:补码

负数的补码由该数反码的末位加 1 求得

对补码再求补即得到原码

补码运算规则

符号位可作为数值参加运算

减法运算可转换为加法运算:

加上一个负数等于加上该数的补码

补码运算的结果仍为补码

运算结果溢出:

负数之和得正数,或正数之和得负数

实数的表示方法

计算机中通常采用浮点方式表示实数
一个数 N 用浮点形式表示可以写成:
      N=M×2E

E表示2的幂,称为数N的阶码。阶码确定了数N的小数点的位置,其位数影响该浮点数所表示的范围。

M表示数N的全部有效数字,称为数N的尾数。其位数影响数据的精度。

非数值信息的表示

西文字符:

ASCII码:用7位二进制数表示一个字符,最多可以表示27=128个字符

EBCDIC码:用8位二进制数表示一个字符,最多可以表示28=256个字符

汉字:"国家标准信息交换用汉字编码"(GB2312-80标准),简称国标码。是二字节码,用二个七位二进制数编码表示一个汉字。

算术表达式和赋值表达式

核心:表达式一定有数值!

1、算术表达式:+,-,*,/,%

注意:“/” 两边都是整型的话,结果就是一个整型。 3/2的结果就是1.

“/” 如果有一边是小数,那么结果就是小数。 3/2.0的结果就是1.5

“%”符号要注意是余数,最容易算成了除号。%符号两边要求是整数。不是整数就错了。[注意!!!]

2、赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

3.复合语句一定用{};

4、自加表达式:

自加、自减表达式:假设a=5,++a(是为6), a++(为5);

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,

再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

口诀:++在前先加后用,++在后先用后加。

5、逗号表达式:

优先级别最低。表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

z=(2,3,4)(整个是赋值表达式) 这个时候z的值为4。(有点难度哦!)

z=  2,3,4 (整个是逗号表达式)这个时候z的值为2。

补充:

1、空语句不可以随意执行,会导致逻辑错误。

2、注释是最近几年考试的重点,注释不是C语言,不占运行时间,没有分号。不可以嵌套!

3、强制类型转换:

一定是 (int)a 不是  int(a),注意类型上一定有括号的。

注意(int)(a+b) 和(int)a+b 的区别。前是把a+b转型,后是把a转型再加b。

4、三种取整丢小数的情况:

       1、int a =1.6;

2、(int)a;  

3、1/2; 3/2;

4.不丢小数办法,在相应的格式中加前缀.2保留2位,四舍五入

字符

1)字符数据的合法形式::

'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

  '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。

一般考试表示单个字符错误的形式:'65'    "1"  

字符是可以进行算术运算的,记住: '0'-0=48

大写字母和小写字母转换的方法: 'A'+32='a'  相互之间一般是相差32。

2)转义字符:

转义字符分为一般转义字符、八进制转义字符、十六进制转义字符。

一般转义字符:背诵\0、 \n、 \’、 \”、 \\。

八进制转义字符:  ‘\141’ 是合法的, 前导的0是不能写的。

十六进制转义字符:’\x6d’ 才是合法的,前导的0不能写,并且x是小写。

C++字符集

大小写的英文字母:AZaz

数字字符:09

特殊字符:

!#%^&*_+=-~<>/\;.,:?()[]{}

词法记号

关键字 C++预定义的单词

标识符 程序员声明的单词,它命名程序正文中的一些实体

文字 在程序中直接使用符号表示的数据

操作符 用于实现各种运算的符号

分隔符 ()   {}   ,    :    ;  
用于分隔各个词法记号或程序正文

空白符 空格、制表符(TAB键产生的字符)、垂直制表符、换行符、回车符和注释的总称

标识符的构成规则

以大写字母、小写字母或下划线(_)开始。

可以由以大写字母、小写字母、下划线(_)或数字09组成。

大写字母和小写字母代表不同的标识符。

 

整数数据及取值范围

类型说明符 位数数值范围

短整 short 16 -32768~32767

基本  int 32   -231~(231-1)

长整 long 32 -231~(231-1)

无符号
unsigned short 16 0~65535
unsigned [int] 32 0~(232-1)
unsigned long 32 0~(232-1)

  

字符常量

单引号括起来的一个字符,
如:'a', 'D', '?', '$'

字符变量

用来存放字符常量

字符数据在内存中的存储形式

以ASCII码存储,占1字节,用7个二进制位

    

字符数据的使用方法

字符数据和整型数据之间可以运算。

字符数据与整型数据可以互相赋值。

字符串常量

例:"CHINA"
     "a"
     'a'

所以:char  c;
      c="a";

    

布尔型数据的取值:只有 false true 两个值

数据类型
    混合运算时的类型转换

不同类型数据进行混合运算时,C++编译器会自动进行类型转换。

为了避免不同的数据类型在运算中出现类型问题,应尽量使用同种类型数据。

变量的存储类型

auto

属于一时性存储,其存储空间可以被若干变量多次覆盖使用。

register

存放在通用寄存器中。

extern

在所有函数和程序段中都可引用。

static

在内存中是以固定地址存放的,在整个程序运行期间都有效。

 

 

算术运算符与算术表达式

基本算术运算符

+  -  *  /(若整数相除,结果取整)

%(取余,操作数为整数)

优先级与结合性

先乘除,后加减,同级自左至右

++, --(自增、自减)

例:i++;    --j;

赋值运算符和赋值表达式
     简单的赋值运算符"="

 

逗号运算和逗号表达式

格式

表达式1,表达式2

求解顺序及结果

先求解1,再求解2,最终结果为表达式2的值

 

逻辑运算符
        !()   &&()   ||()
优先次序:   高        →        低

逻辑表达式
  例如:(a > b) && (x > y)
 其结果类型为 bool,值只能为 true false

 

 

逻辑运算与逻辑表达式

&& 短路特性

表达式1 && 表达式2

先求解表达式1

若表达式1的值为false,则最终结果为false,不再求解表达式2

若表达式1的结果为true,则求解表达式2,以表达式2的结果作为最终结果

||也具有类似的特性

 

条件运算符与条件表达式

一般形式

表达式1?表达式2:表达式3

表达式1 必须是 bool 类型

执行顺序

先求解表达式1,

若表达式1的值为true,则求解表达式2,表达式2的值为最终结果

若表达式1的值为false,则求解表达式3,表达式3的值为最终结果

例: x = a > b ? a : b;

条件运算符与条件表达式

注意:

条件运算符优先级高于赋值运算符,低于逻辑运算符

表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。

 

 

简单的输入、输出

向标准输出设备(显示器)输出

例:int x;

cout << "x=" << x;

从标准输入设备(键盘)输入

例:int x;

cin >> x;

 

 

算法的基本控制结构

 

 

顺序结构

分支结构

循环结构

 

If语句

switch 语句

while 语句

do-while 语句

for 语句

 

 

break continue 语句

break语句

使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。

continue 语句

结束本次循环,接着判断是否执行下一次循环。

typedef语句

为一个已有的数据类型另外命名

语法形式

typedef  已有类型名  新类型名表;

 

 

枚举类型—enum

只要将需要的变量值一一列举出来,便构成了一个枚举类型。

枚举类型的声明形式如下:

enum  枚举类型名  {变量值列表};

枚举类型应用说明:

对枚举元素按常量处理,不能对它们赋值。例如,不能写:SUN = 0;

枚举元素具有默认值,它们依次为: 0,1,2,......。

也可以在声明时另行指定枚举元素的值,如:

enum Weekday{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};

枚举值可以进行关系运算。

整数值不能直接赋给枚举变量,如需
要将整数赋值给枚举变量,应进行强
制类型转换。

[知识梳理]课本1&2.1-2.5的更多相关文章

  1. [知识梳理]课本3&9.1

    函数:关键词:参数.返回值.函数返回类型.函数体. 函数按照返回类型,可以分为有参函数和无参函数. 函数根据是否有返回值,可以分为返回值函数和非返回值函数.     函数的定义:函数的定义可以放在任意 ...

  2. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  3. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  4. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  5. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  6. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  7. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

  8. Anliven - 基础知识梳理汇总 - 软件测试

    基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...

  9. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

随机推荐

  1. [ZJOI2006]书架(树状数组水过)

    这道题显然平衡树,splay,treap什么的随便切 然而我不想打,决定水过这道题 把空间开3倍,树状数组维护它前面的树的个数,开个id数组记录位置 找一个数排名直接二分加求前缀和,log^2的搞一搞 ...

  2. [BZOJ2296] [POJ Challenge] 随机种子

    Description 1tthinking除了随机算法,其他什么都不会.但是他还是可以ac很多题目,他用的是什么呢?他会选择一个好的随机种子,然后输出答案.往往他选择的一个好的种子可以有99%的概率 ...

  3. iBrand 教程 0.1:Windows + Homestead 5 搭建 Laravel 开发环境

    统一开发环境 为了保证在学习和工作过程中避免因为开发环境不一致而导致各种各样的问题,Laravel 官方为了我们提供了一个完美的开发环境 Laravel Homestead,让我们无需再本地安装 PH ...

  4. MyBatis相关配置

    在MyBatis中,不免会有一些配置要设置,我们先来看一下MyBatis配置XML文件的层次结构,这些层次是不能够颠倒顺序的,下面是层次结构: <?xml version = "1.0 ...

  5. rpm 相关问题

    specfies multiple packages 错误 这是安装了多个相同的rpm包,所以无法卸载,可以加上--allmatches rpm -e xxx.rpm --allmatches err ...

  6. 颜色的RGB值表示法

    颜色的RGB值表示法 从物理光学试验中得出:红.绿.蓝三种色光是其他色光所混合不出来的.而这三种色光以不同比例的混合几乎可以得出自然界所有的颜色. 如红光与不同比例的绿光混合可以得出橙.黄.黄绿等色: ...

  7. 微信小程序调接口常见问题解决方法

    第一次调接口时遇见的bug. 注意:接口的域名不能使用 IP 地址或 localhost,且不能带端口号: 微信小程序如何调接口? wx.request({ url: 'http://miniapp/ ...

  8. delphi 数组复制利用CopyMemory 最为完美

    在各网站的文章里面,见复制数据的方法中,有move的,有system.copy的,而要实际应用中,这两种方法,并不是很完美,会遇到一些问题,比如copy在记录里面的复制时,编译都过不去,而CopyMe ...

  9. protobuf lib库的使用

    问题记录: 1.在使用protobuf反射机制动态加载解析proto文件时,发现当proto文件中含有import系统proto文件的语句时,无法解析文件,解决方法是添加路径映射. google::p ...

  10. 【Python】 零碎知识积累 II

    [Python] 零碎知识积累 II ■ 函数的参数默认值在函数定义时确定并保存在内存中,调用函数时不会在内存中新开辟一块空间然后用参数默认值重新赋值,而是单纯地引用这个参数原来的地址.这就带来了一个 ...