Learn C++ by Accelerated C++(to be continued)

本文详细介绍C++编程的基础知识,包括第一个程序的编写、字符串的使用、循环与计数等核心概念。通过实例讲解如何进行输入输出操作,以及如何使用while和if语句进行流程控制,帮助初学者快速掌握C++编程技巧。


Learn C++ by Accelerated C++

0. Getting started

知识点

  • 标准库、核心语言
  • 程序结构:自由风格
  • 类型
  • 命名空间
  • 定义和头文件
  • 主函数
  • 花括号和分号

第一个C++程序

#include<iostream> // 标准库头文件,输入/输出流(Input/Output Stream)
int main(){       // 调用主函数响应程序需求(返回0或者其它)
    std::cout << "Hello, World!" << std::endl;
    //  使用标准库中的输出运算符 << 将 'Hello, World!'写到标准输出中,并显示在cout所在窗口,std::endl为当前输出语句行的结束,并实现换行(本质上是用两个<<实现了连续的输出)
    return 0;  // 返回0(表示成功)

}
  • #include指令是一种是调取头文件的工具,用来明确指定程序所需的那部分头文件
  • iostream是Standard library header 即标准库头文件
  • <<一种运算符(operator)
  • std::coutstd::endl操作数(operand),其中后者是控制器
  • cout是标准库中的对象;endl是一个函数模板
  • :作用域运算符std:cout表示的是在(名字空间)作用域std中的名称cout
  • "Hello, World!"表达式(expression)

一些问题:
什么是定义,什么是头文件?
在这里插入图片描述

头文件和标准库的区别?

什么是核心语言?什么是标准库?

习题:

  • 0-0
#include <iostream>

int main() {
  std::cout << "Hello, world!" << std::endl;

  return 0;
}
  • 0-2
#include <iostream>

int main() {
    std::cout << "This (\") is a quote, and this (\\) is a backslash."
    << std::endl;
    
    return 0;
}
  • 0-4
# include <iostream>

int main(){
    std::cout<<
    "#include <iostream>\n"
    "\n"
    "int main(){\n"
    "\tstd::cout<<\"Hello,world\"<<std::endl;\n"
    "\treturn 0;\n"
        "}\n"
    <<std::endl;
    return 0;
}


#include <iostream>

int main(){
	std::cout<<"Hello,world"<<std::endl;
	return 0;
}

Program ended with exit code: 0
  • 0-9
int main(){}
  • 0-10
#include<iostream>

int
main
(
)
{
std
::
cout
<<
"Hello, world!"
<<
std
::
endl
;
return
0
;
}

1. 使用字符串

知识点

  • 声明
  • 变量
  • 初始化
  • 输入
  • string 库

1.1 输入

#include<iostream>
#include<string>

int main(){
    // 请某人输入姓名
    std::cout << "Please enter your first name: ";
    // 读姓名
    std::string name; // 定义变量 name
    std::cin >> name; // 把姓名读进 name
    
    // 输出对这个人的问候语
    
    std::cout << "Hello, " << name << "!" << std::endl;
    return 0;
    
}

从现在开始,以后的代码不再由Xcode完成,而是转向使用jupyter notebook ,环境配置可查看之前的文章:Mac上配置环境并运行第一个C++程序

1.2 为姓名装框

std::cout << "Please enter your first name: ";
std::string name;     
std::cin >> name;
const std::string greeting = "Hello, " + name + "!";
const std::string spaces(greeting.size(), ' ');     
const std::string second = "* " + spaces + " *";
const std::string first(second.size(), '*');
std::cout << std::endl;     
std::cout << first << std::endl;     
std::cout << second << std::endl;     
std::cout << "* " << greeting << " *" << std::endl;     std::cout << second << std::endl;     
std::cout << first << std::endl;
Please enter your first name: Robin_pi

********************
 1.                  *
 2. Hello, Robin_pi! *
 3.                  *
********************
 4. List item

  • std::cout << "xxxx" 输出(write)
  • std::string name 定义变量name,类型为std::string
  • std::cin >> name 输入(read)
  • 运算符是左结合

  • 运算符是右结合

  • = 实现变量赋值(同时完成初始化
  • const 为常量关键字,可以确保常量变量的值不会改变

一些问题:
是什么是变量?作用是什么?和对象的区别是什么?
存放数据的地方,是一个具有名称对象,而对象是计算机中的一段具有类型内存空间
什么是类型?有哪些类型?

表达式包含操作数和运算符每一个操作数都具有一个类型,比如核心语言定义了int代表的是整数类型,定义了std::ostream作为提供了基于流的输出的类型。

小结

在这里插入图片描述注意:在一对花括号内定义的变量是局部变量

习题

暂略~

2. 循环和计数

知识点

  • 循环
  • 条件分支
  • 循环不变式

while 语句

while(condition)
    statement   // <font color =red>若statement为语句,则其本身包含了分号;,若为块语句,则它本身也会有{},所以没有分号;

或者

while(condition) statement
  • 设计循环语句

if 语句

if (condition)
    statement   // 同 while,这里面要么是语句(分号;结尾)要么是语句块(用花括号{}包起来)

或者

if (condition)
    statement1 
else
    statement2

略~

程序简化

  • using 声明
  • for 语句
for(init-statement condition;expression)  // 注意,初始化语句本身包含了分号;
    statement

例如:

#include<iostream>
#include<string>

int main(){
    for (int r = 0; r <= 3; ++r)  // `++r` 特指 `r = r + 1`,即返回相加后的值(若是`++r`则是返回r的原始值)
        std::cout << "*";
} 

一般而言,for语句的意义相当于:

{
init-statement     
while (condition) {
           statement           
           expression; 
           }
}

即:

#include<iostream>
#include<string>

int main(){
    int r=0;
    while (r<=3){
        std::cout << "*";
        ++r;
    }
    
}
  • 压缩检测

计数

  • 从0开始计数
for (string::size_type r = 0; r != rows; ++r) {
    // <输出一行>
}
  • 从1开始计数
for (string::size_type r = 1; r <= rows; ++r) {
    // <输出一行>
}

两种方式循环的次数一样,但是一般都选择从0开始计数:可以使用不对称区间来表示间隔。原因如下:

不对称区间的一个重要性质:在一个形式为[m,n)的区间包含 n-m 个元素,而形式[m,n]的区间中则有 m-n+1 个元素。(即可以很快地看出区间中所包含的元素个数)
从零计数使得循环不变式更易于表达:(对于[0,rows])到目前为止,我们已经输出了r 行。
用 != 比 <=使我们更能了解程序的状态:前者表示已经输出了r行,而后者表示至少输出了r行(可能更多!)

小结

(1)操作数(operators)
在这里插入图片描述在这里插入图片描述

(2)类型
在这里插入图片描述

本章的一些问题:

  • 为什么不直接使用int而是使用const intconst的作用是什么?
    一,减少出错的几率;二,明确地向读代码的人传递信息:不能修改这个变量
  • (定义字符串的长度变量时)为什么不直接使用const int cols而是使用const std::string::size_type colssize_typeint的用法区别?
    size_type为无符号类型,int为有符号类型(可能为负数)。一般我们都会用std::string::size_type来当做储存字符串长度的变量的变量类型。

习题

暂时决定:习题与理论分开(加快速度)

使用批量数据

一些数据类型

  • int:整型
  • double :双精度浮点类型
  • float :单精度浮点类型

一些操作:

  • ? : 运算符:条件运算符,是 if-else-then 的缩写,即 if xxx (?) else (:)xxx

类型定义:

  • typedef type name;

组织程序和数据

知识点

  • 函数(子程序)
  • 数据结构
  • 程序结构

变量引用:

  • vector<double>& hw = homework; //hw是homework的一个替代名
  • count vector<double>& chwl = chw; // 注意chwl是只读的

使用顺序容器并分析字符串

使用库算法

  • 泛型算法
  • 增量算法

使用关联容器

使用泛型函数

定义新类型

管理内存和低级数据结构

  • 指针与数组

定义抽象数据类型

使类对象像一个数值一样工作

使用继承与动态绑定

近乎自动地管理内存

再探字符图形

参考:

  1. 代码部分的参考答案(已下载至本地:github-Accelerated C++)
  2. 全部的答案(已下载本地:github-Accelerated-cpp-master)
  3. C++ reference——要多多查看官方文档!
内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值