本文是系统学习 郑莉c++第五版+b站视频的学习笔记。
郑莉老师b站内容分为 导学
文章目录
第0章:学习怎么学习–论道开篇+怎样学c++
论道开篇
你会学习吗?
学生问题过于真实。
学生问题:
首先就是1.看书枯燥。看书不会。
2.例题会,程序不会。考试过,程序不过。
哈哈,老师说了
看书枯燥原因是还没入门,所以枯燥,因此每章都加个导学,带着入门,讲讲每章该怎么学。好!
看书不会是因为每章都有重点难点,郑莉老师会带着学,包括实践环节怎么训练。只能说nice。
总结下
首先就是靠零零碎碎的学是学不会的,必须系统。
第二个就是要多写程序,还得写大程序。
第三就是不要急,系统学习就不要急,慢慢学,慢慢学也是不慢的。
总结下就是跟着我慢慢学,多写程序,保证ok。
怎样学c++
自学最主要的就是很难坚持,学着学着就学不下去放弃了。
老师强调理科学习一定要学完整的课,零零碎碎的看几十个小时也是没用的,反而浪费时间。
代码分为例题和实验,要多做例题和实验。
预习对学习是至关重要的,学生不喜欢预习往往是不会预习。
预习应该是简单,轻松,有趣的。
老师比喻,预习就好像跟团旅游,出发前导游提前给你报点让你准备什么,路上有什么风景。
预习只需要几分钟就够了,像那种几小时的就不叫预习了,叫学习了,深以为然。
听课最主要的是继续和记笔记,你可能会不懂,也可能懂,但都不要停下来,最主要的就是继续。不懂的记笔记。
复习最重要的就是当天复习,通过复习可以解决我们听课不懂的疑问。并加以练习巩固。
通常,我们把复习和练习一并进行。
还要写复习笔记。复习笔记就是解决听课过程中问题的笔记。
练习至关重要。
一定要做练习,如果没有做练习,则不能进入下一章。
学不会往往是因为前面的还没学会,则新知识涉及的旧知识和新难点就很然前进。
例题,实验,习题。
一旦延迟就及时忘掉。多调整。
跟着例题做,会做例题了就代表本章可以,就继续前进
第1章绪论 导学笔记(学堂在线+b站)
学堂在线
本章是对计算机的初步了解。
1.计算机系统
1.0 由硬软组成
1.1 还有指令系统,是硬软的中间件
指令系统是cpu提供的二进制指令集。
2.计算机语言
2.0 计算机语言
计算机语言是人类和计算机沟通桥梁,告诉计算机解决问题的方法和数据,让计算机去计算。
2.1 语言级别
由低级到高级。低级语言与我们自然语言差距最大,高级语言差距越小。
2.2 c++是面向对象的高级语言
将事物看作对象,同类对象形成类,类封装细节只对外暴漏接口,对象间通过消息进行通信。
3.程序设计方法
基于过程
基于对象
泛型
4.程序开发过程(针对初学者,了解就行)
计算机只会计算,我们自己需要先知道怎么计算,通过计算机语言将计算方法告诉计算机,替我们计算。所以第一步是算法设计。再用计算机语言描述算法。
5.信息的存储与表示 (了解就行)
信息的二进制表示
6.本章要求
教学视频至少一遍,不懂的回头看。
第1章绪论 学习笔记(学堂在线)
1.计算机系统
1.1 计算机硬件
1.cpu只和内存打交道
2.所有外设都通过内存和cpu打交道
1.2 计算机指令系统
指令系统:计算机硬件所能识别的所有指令的集合。
计算机软件都将被翻译为指令。
1.3 计算机软件
软件 = 程序 + 文档
0 系统软件
1 应用软件
2 中间件
提供系统软件和应用软件的连接。
2.计算机语言
低级到高级(抽象层次)
语言越来越复杂,抽象层次从低到高,越来越接近人类语言,使程序员编写程序越来越简单
指令系统 - 机器语言
汇编语言
高级语言
c++语言 :支持面向对象,将客观事物看作对象,更符合客观思维。
3.程序设计方法
程序设计指的是程序是什么
基于过程程序设计
软件由过程组成。程序员负责给定过程。
但复杂软件难以给定过程。同时,我们无法知道所有现象的过程。
基于对象程序设计
软件由对象构成。对象之间通过消息通信
泛型程序设计
之后在学
4.基于对象程序设计基本概念(重点)
对象
将现实中的事物看作对象。
在软件中进行模拟。
抽象和分类
抽象出共同属性和行为的对象,叫做类。
分类所依原则:抽象
对象的特点
封装
封装指的是封装起来,只留接口。
对象都是封装的,只留接口以供使用
继承
继承指的是继承+发展。有助于发展。
对象都是可继承的,通过改造和扩展已有类,提高代码重用,不需要从头开始写。
多态(?)
多态指的是人语说话中非常常见的现象,例如play pingpong。每种球的打法不一样,但我们不需要明确表示每一种打法,只用play即可。但此时也知道使用的是乒乓打法。从而只用play就可完成。是一种非常简便的方法。
5.程序开发过程
算法指的是归纳一类问题的解法。
连接指的是将程序中调用的其他模块连接在一起(二进制)
6.信息表示与存储
计算机只能做计算。
计算需要数据
进制转换
R进制 与 十进制 的转换
R:表示 2 8 16
编码表示
二进制计算机能直接识别,为什么还需要编码呢
原码
补码
实验一
第1章绪论 导学笔记(b站)
绪论是非常重要的,往往也是最难的,他是本书的精髓。往往学完整本书才能领会绪论的内涵。
绪论不是看一遍就看懂的,而是不断学习才能明白。
我们不能踏入两个极端。一是不注重绪论,二是过于注重绪论,因为绪论你是一时半会不明白的。
语法跟编译相关,我们不需要死扣语法。
我们的自然语法是复杂的,所以我们支持我们表达复杂逻辑。高级语法也是复杂的,所以类似。
低级语言语法是简单的,但相反,用低级语言表达同样逻辑却是更难的。
继承黑箱。
将不同子类当作同一类处理。
溢出与补码反码。
第2章简单程序(1) 导学笔记
1.给变量分配的空间一开始都是垃圾数据。
状态类似于擦黑板,不用了但是黑板没擦。
2.写程序把自己当成老板,对象就是手底下的员工,你用员工做什么。
3.不要关注语法,要关注这个语法能替我们表达什么。
第2章:简单程序
第二章是基础语法。
语法不是靠看一遍书就会熟练使用,而是反复的练习,不断使用。
快速过一遍即可。
标准io
基本数据类型和表达式
分为整数和浮点数。
初始化
等号不代表赋值,仅代表初始化的方式。
常量
const float pi = 3.14;
constexpr float Pi = pi + 2;
初学者可以不用管constexpr
sizeof运算符
sizeof并不是函数
算数运算
运算符的结果与类型有关。不同类型不同结果。
逗号表达式
逻辑运算 短路特性
不要在逻辑运算中进行计算。
第2章 简单程序(2)
if语句
注意
if语句也是一条语句。
单条语句不需要{},多条语句需要{}。
if语句的三种形式
缩略if:
if(表达式)
这算作一条语句
完整if:
if(表达式)
else
这也算作一条语句
多个if:
if(表达式1)
else if(表达式2)
else if(表达式3)
else
这也算作一条语句
if嵌套
嵌套指的是if里用if
if嵌套:
if(表达式1)
if(表达式2)
else
else
if(表达式3)
else
注意:嵌套的时候省略else会出现else匹配问题。
因为c++编辑器不能通过缩进分辨层级,准确来讲c++是没有层级这一概念的,
只有语句问题,而else会根据向上最近的if匹配,所以当省略else的时候,需要加上{}.
例:
#include<iostream>
using namespace std;
int main() {
if (1)
if (0)
cout << "no";
else
cout << "hello";
return 0;
}
我们不能通过缩进确定else是if(1)的语句,此时else会被判定为if(1)的,而要想不被判定,则加{}来确定
else不是if(1)的语句。
switch语句
switch适用
switch只适用于判断一个表达式的值。
switch和多个if的区别
switch只判断一个表达式。
switch语法
switch(表达式){
case 常量表达式1: 语句; break;
case 常量表达式2: 语句; break;
case 常量表达式3: 语句; break;
case 常量表达式4: 语句; break;
default: 语句; break;
}
注意
1.为什么是常量表达式。因为switch是计算表达式的值,所以表达式的值肯定为常量。
2.常量必须是整形常量。
3.每个case后都必须有break
switch先根据表达式值选择哪个case,如若这个case没有写break,则不会跳出switch,而是继续执行,知道跳出或者执行完。
例
#include <iostream>
using namespace std;
int main() {
int day;
cin >> day;
switch (day) {
case 0:
cout << "Sunday" << endl;
//break;
case 1:
cout << "Monday" << endl;
break;
case 2:
cout << "Tuesday" << endl;
break;
case 3:
cout << "Wednesday" << endl;
break;
case 4:
cout << "Thursday" << endl;
break;
case 5:
cout << "Friday" << endl;
break;
case 6:
cout << "Saturday" << endl;
break;
default:
cout << "Day out of range Sunday .. Saturday" << endl;
break;
}
return 0;
}
tips
多个case可以共用一组语句。
例
switch(month){
case 1:
case 5:
case 7:
语句;
break;
case 4:
case 6:
case 9:
语句;
break;
default:
语句;
break;
}
第2章 简单程序(3)
while
注意:while语句要含有表达式改变的语句
while语法
while (表达式) 语句
do while
适用于第一次不需要判断就能执行的循环。
do while语法
do 语句 while(表达式)
条件断点
第2章 简单程序(4)
for
for与while可以互相替代,但通常while用于次数未知,for用于次数已知。
例2-8修改
for语法
for(初始化语句;表达式1;表达式2) 语句
注意:初始化语句定义的变量仅能在for中使用;
表达式1为真时执行语句;
表达式2在语句执行完之后执行,可看作语句的最后一句
循环与选择嵌套。
其他控制语句
都不建议使用。