[知识梳理]课本1&2.1-2.5
面向对象的语言
出发点:更直接地描述客观世界中存在的事物(对象)以及它们之间的关系。
特点:
是高级语言。
将客观事物看作具有属性和行为的对象。
通过抽象找出同一类对象的共同属性和行为,形成类。
通过类的继承与多态实现代码重用
面向对象的语言
优点:
使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
面向过程的程序设计方法
设计思路
自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。
程序结构:
按功能划分为若干个基本模块,形成一个树状结构。
各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。
其模块化实现的具体方法是使用子程序。
面向过程的结构化程序设计方法
优点:
有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
面向过程的结构化程序设计方法
缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件
把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改。
每一种相对于老问题的新方法都要带来额外的开销。
图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。
面向对象的方法
将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。
对同类型对象抽象出其共性,形成类。
类通过一个简单的外部接口,与外界发生关系。
对象与对象之间通过消息进行通信。
优点:
程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。
通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。
面向对象的软件工程是面向对象方法在软件工程领域的全面应用。
它包括:
面向对象的分析(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++字符集
大小写的英文字母:A~Z,a~z
数字字符:0~9
特殊字符:
!#%^&*_+=-~<>/\‘“;.,:?()[]{}
词法记号
关键字 C++预定义的单词
标识符 程序员声明的单词,它命名程序正文中的一些实体
文字 在程序中直接使用符号表示的数据
操作符 用于实现各种运算的符号
分隔符 () {} , : ;
用于分隔各个词法记号或程序正文
空白符 空格、制表符(TAB键产生的字符)、垂直制表符、换行符、回车符和注释的总称
标识符的构成规则
以大写字母、小写字母或下划线(_)开始。
可以由以大写字母、小写字母、下划线(_)或数字0~9组成。
大写字母和小写字母代表不同的标识符。
整数数据及取值范围
类型说明符 位数数值范围
短整 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的更多相关文章
- [知识梳理]课本3&9.1
函数:关键词:参数.返回值.函数返回类型.函数体. 函数按照返回类型,可以分为有参函数和无参函数. 函数根据是否有返回值,可以分为返回值函数和非返回值函数. 函数的定义:函数的定义可以放在任意 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
随机推荐
- 【BZOJ3436】小K的农场(差分约束)
[BZOJ3436]小K的农场(差分约束) 题面 由于BZOJ巨慢无比,使用洛谷美滋滋 题解 傻逼差分约束题, 您要是不知道什么是差分约束 您就可以按下\(Ctrl+W\)了 #include< ...
- [SDOI2015]星际战争
水题啦 网络流+二分 误差才10^-3,乱搞直接开longlong暴力每个都乘1000,输出时除一下就好了 # include <bits/stdc++.h> # define IL in ...
- ssh框架中struts.xml 的配置参数详解
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...
- Learn HTML5 in 5 Minutes!
There's no question, HTML5 is a hot topic for developers. If you need a crash course to quickly unde ...
- Java中的代理模式--静态代理和动态代理本质理解
代理模式定义:为其他对象提供了一种代理以控制对这个对象的访问. 代理模式的三种角色: Subject抽象主题角色:抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求. Real ...
- mui实现切换选项卡
mui切换选项卡头目对应选项内容是webAPP应用最多的功能 引入mui文件: 引入mui-segmented-control类实现顶部头目: 引入mui-content-padded类加入各选项卡内 ...
- Django数据模型——数据库字段类型
字段 一个模型最重要也是唯一必需的部分,是它定义的数据库字段 字段名称限制 1.字段名不能是python保留字,这样会导致python语法错误 2.字段不能包含连续一个以上的下划线,这样会和Djang ...
- Nagios详解(基础、安装、配置文件解析及监控实例)
一.Nagios基础 1.简介Nagios是一款开源网络监视工具.可监控网络服务(SMTP.POP3.HTTP.NNTP.ICMP.SNMP.FTP.SSH.PING---).监控主机资源.根据需求设 ...
- 1-1 spring基础
1.spring是一个开源的轻量级的应用开发框架,它提供了IOC(Inversion of Control控制反转)和AOP(Aspect -Oriented Programming 面向切面编程)的 ...
- angularJS前台传list数组,后台springMVC接收数组
有时候需要在前台自定义对象,然后把对象封装在list中,在传送到后台,这样的思想也比较合理 1. 前台代码 $scope.saveScore = function () { $scope.userSc ...