C++感受6-Hello World 交互版

这篇具有很好参考价值的文章主要介绍了C++感受6-Hello World 交互版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 变量、常量
  • 输入、输出、流
  • getline() 函数读入整行输入
  • Hello() 函数复习
  • 新定义函数 Input() 实现友好的人机交互
  • 还有 “痘痘” 为什么挤不到的分析……

C++感受6-Hello World 交互版,C++快速感受与探索之旅,白话C++,c++,开发语言

 

1. DRY 原则简介

上一节课,我们写了两版“问候”程序。第一版的最大问题是重复的内容比较多,每一次问候都在重复从 cout 到 endl 的代码,中间只有人名不同。

刚学编程的人可能会说:“代码重复怕什么啊?在电脑里 复制、 粘贴 文本非常快啊!”

问题不在于写代码是快还是慢,而在于重复的代码,难以修改、难以维护。

重复的代码,它们的背后的业务逻辑往往是相同或者高度相似的。如果有一天,这个业务逻辑发生改变,就会造成代码中所有重复的地方都要修改。我们现在的代码才几行而已,如果有一天q有上千,上万行代码,我们很可能都无法找出所有重复的地方,一个个修改过去也极大可能引发新的错误。

“不要到处写重复的代码”,这已经成为专门一条行业内的编码规矩,称为 “DRY”原则,也就是 “Dont’t repeat yourself”,不要重复你自己。

2. 新情景、新需求

第二版的问候程序,有很大的进步。因为我们把重复的,问候操作,写成一个函数,叫Hello(),多次调用。这样一来,将来,如果问候操作,需要变化,我们也只需要修改这个Hello()函数即可。

// 我的第一个函数
void Hello(std::string_view XXX)
{
    std::cout << "你好," << XXX << "!" << std::endl;
}

 这一节课,我们要为问候业务,提出新的场景需求:模拟在上班路上,碰到谁,就问候谁的过程。

碰上谁,就问候谁……那我们能事先知道每一天上班会碰到谁吗?当然无法预知。这样一看,现有的这第二版问候程序就显得非常“死板”了。每一次运行这个程序,都是先问候志玲,再问候幂幂,再问候冰冰……无论运行多少次,它的问候过程都是一成不变的。

这就说到了“变”!我们需要可以变的姓名;这就引出这节谭,们要学习第一个重要的知识点:变量。

3. 认识变量和常量

程序中的数据,可以按可变和不可变区分,分成两大类:常量和变量。

3.1 常量

常量,就是在程序运行之后,无法修改,或禁止修改它的“量”的数据。

这里的“量”,更通俗易懂的说法是一个数据的“值”,或者说,一块内存里存放的内容。

我们以后会重点讲解常量。不过,大家要在今天记住这两个描述:“无能力修改” 和 “禁止修改”。

来举一个“恶俗”,但绝对管用的例子吧——

假设你是一个非常喜欢挤别人痘痘的人。然后,有个女生说她后背某个地方长了一颗很大的痘痘,可是她不告诉你这颗痘痘的位置。请问,你能挤掉一颗你看不见,摸不着的痘痘吗?当然不能,这就叫“无能力修改”。

另外一种情况,这颗痘痘就长在女生鼻头上,你看得见,摸得着,但是你能伸手就挤掉它吗?也不能,因为人家女生不允许你动它。

C++感受6-Hello World 交互版,C++快速感受与探索之旅,白话C++,c++,开发语言

这就是将来我们会学习到的,最常见的两种类型的常量:一种是代码在客观上没有能力修改的数据,一种在语法上明确标明不让修改的数据。上一课第一版代码中的名字字符串,就是第一种,叫“字面常量”。它就像我们白纸黑字签下的字,一旦写下,就涂改不了。

3.2 变量

初中学习的代数,当一个数据我们暂时不知道它会是什么值时,我们可以用个字母,比如 x、y、z,来暂时先代表这个数据。在程序中,一个数据,我们暂时不知道它会是什么值;或者,知道它一开始的值,但这个值会随着程序的运行而不断变化,这情况下,我们也可以用一个字母,或者更好的,用一个单词来表达它,表达这个会变化的数据。

今天,我们不知道什么?答,我们不知道每一天上班路上会先遇到谁,后遇到谁。所以,就让我们写的C++程序,定义第一个真正意义上的变量,取名为 “” 吧!

你当然也可以使用 X 来表达,这样显得更加有科技感和神秘感。但是,我觉得用名字是“谁”这个变量,来表达程序中可能遇到谁谁谁谁……想一想是不是也挺直观的?

没错,这也是我们今天学习到又一个重要的知识点:变量的名字一定要能直观地表达它的作用

来看一些常量与变量使用对比的例子——

  • “我的体重是 60 公斤”:人的体重很少一成不变,所以我们得用变量表达它,这个变量的名字可以叫 weight。

  • “我的身高 175 厘米……”:也一样,从小到大再到老,身高也会变化,这个变量可以叫 height。

3.3 变量常见使用过程

结合用变量表达待问候的人名的例子,我们来看看变量最常见的使用过程。

(1)定义变量

要使用变量,首先需要定义变量。C++定义变量时,需要给出变量名字,还需要直接或间接给出变量的类型。今天我们学习其中的“直接”方式:

变量类型 变量名字;

即:先写下变量的类型,再写下它的名字,然后用分号结束,这是定义变量的一种常见语法。

在我们的例子,变量名是,它实际是要表达人的名字,所以它的类型应该是字符串。在 C++ 的标准库中,有一个叫 string 的类型,用来表达字符串。

std::string 谁;  // 定义了一个变量,名字叫谁,类型是 std::string

大家还记得前面课堂学习到的名字空间的知识点吧?特别是这个 std:: 的写法,你应该很熟悉了。

这样定义的变量谁,一开始时,它并不持任何字符内容(或者说,它持有一个空的字符串)。

2)修改变量的值

有了一个变量,接下来,就可以修改它的“量”了,也就是为它赋值。你可能猜到了,赋值操作在C++中,就是日常的 “=” 操作符(等号)。

下面演示了赋值 “张三” 给 的代码:

谁 = "张三";  // 修改这个变量的值 (量、内存)

(3)使用变量

变量很方便用来传递一个值,比如,我们可以把 谁 作为之前我们写的 Hello() 函数的入参,以实现将 谁 的当前值(第2步中的 “张三”)传递给 Hello() 函数的入参(还记得吗,这个入参是一个“偷窥狂”,哦不是,是“观察者”)……

Hello(谁);  // 将谁的当前值,传递给 Hello() 函数入参,再于函数内部输出其值

(4)再改,再用

变量变量,比孙悟空还善变,悟空才能连续72变,我们的变量可以无穷尽地变下去……

谁 = "李天王";
Hello(谁);

谁 = "孙悟空";
Hello(谁);

// ...

3.4 变量使用完整示例代码

#include <iostream>
#include <string>
#include <string_view>

void Hello(std::string_view XXX)
{
    std::cout << "你好," << XXX << "!" << std::endl;
}

int main()
{
    std::string 谁; 

    谁 = "志玲";
    Hello(谁);

    谁 = "幂幂";
    Hello(谁);

    谁 = "冰冰";
    Hello(谁);

    谁 = "热巴";
    Hello(谁);

    谁 = "真木阳子";
    Hello(谁);

    谁 = "井川遥";
    Hello(谁);

    谁 = "Lily Collins";
    Hello(谁);
}

问题来了:这个使用变量的版本,感觉写起来,比之前的常量版本还啰嗦呀?

4. 人机交互!

4.1 认识 getline()

尽管用了变量,但这个版本每次运行起来,输出结果还是一成不变;甚至写起来比常量的那个版本,还要麻烦、还啰嗦,并且,没有引入什么新功能呀?!

我们准备这样来模拟每天上班路上遇到谁问候谁的过程:我们让用户(其实,就是我们自己),在程序运行时,通过键盘输入一个姓名,输入谁,就表示我们遇到谁。

我们要输入的是一个姓名,一个字符串。并且,如果是外国人的话,那么他们的姓名中间可能包含空格。C++标准库提供了一个 getline() 的函数,特别适合于读入整行的字符串,包括中间的空格。

getline() 有两个入参。第一个入参指定输入流。什么叫“输入流”?

【输入、输出】:首先来理解什么叫“输入”:往程序里“塞”数据,就叫“输入”。大家顺便可以理解一下什么叫 “输出”,程序往外“吐”数据,就叫输出,也就是,编程时讲的输入和输出,是以程序为中心来理解的。

【流】:那什么叫流:水流、电流,都是流。流就是在同一个方向上的排着队的一大堆数据。比如,“车流”就是:同一个行驶方向上,有很多车一辆接一辆地往前走。

C++感受6-Hello World 交互版,C++快速感受与探索之旅,白话C++,c++,开发语言

本站深入讲解,包含多个实践项目的 C++“流”的高级课程:
《C++“流”编程视频辅导》课程 建议及时加深学习

我们现在写的程序,暂时只能使用键盘往程序里输入数据,一阵“噼噼啪啪”敲键盘,就可以往程序里输入一大串字符,因此它满足“输入流”的概念的三个要素:

  • 同一个方向:键盘到主机
  • 支持连续:噼噼啪啪快速输入,一个字符都不会丢
  • 支持排队(即有序):无论你击键有多少,都不可能出现先输入字符的后到,后输入的字符先到的乱序情况

所以,C++标准库就把键盘输入,包装成一个 标准字符输入流,并且预先定义成一个变量。

如果是我写的标准库,那这个变量的名字肯定得叫 噼噼啪啪,可惜不是。
这个预先定义的,代表标准输入流,或者说,绝大多数情况下,代表键盘的变量,它的真正的名字叫 cin。c指字符,in 指输入 。加上标准库名字空间直接限定,就是 std::cin。

getline() 函数的第二个入参,在本例中,我们给的是我们自己定义的字符串变量,也就是

当程序这样写时:

getline(std::cin, 谁); 

执行该句代码并完成 getline() 的调用之后,变量的值,就是用户从键盘上输入的一行文本。输入一行文本,是指用户输入一些普通字符内容(包括汉字内容)之后,非常潇洒的拍下键盘上的回车键。getline()开始从行首一直读到行尾,不含回车换行

如果用户在此期间就是不碰键盘,那程序就会“卡”在这一行一动不动。

4.2 问候程序的人机交互第一版

#include <iostream>
#include <string_view>
#include <string>


void Hello(std::string_view XXX)
{
    std::cout << "你好," << XXX << "!" << std::endl;
}

int main()
{
    std::string 谁; 

    std::getline(std::cin, 谁);
    Hello(谁);

    std::getline(std::cin, 谁);
    Hello(谁);
}

为了不浪费版面,暂时就只支持上班路上遇到两个吧!后面的遇到的,管他是大老板还是小保安,管她是不是你暗恋的办公室女神,咱们就全都假装没看到。

5. 是时候看视频了……

ffls09-HelloWorld-交互版

6. 最终版本代码

将 “遇见” 的过程,也封装成一个函数:Input(),该函数返回用户输入的姓名,并且提供了更好的人机交互界面。

#include <iostream>
#include <string_view>
#include <string>

// 负责问候(输出)
void Hello(std::string_view XXX)
{
    std::cout << "你好," << XXX << "!" << std::endl;
}

// 负责遇见(输入)
std::string Input()
{
    std::cout << "遇见谁了?请输入他的名字:";

    std::string name;
    std::getline(std::cin, name);
    return name;
}

int main()
{
    std::string 谁; 
	
    谁 = Input(); // 遇见谁
    Hello(谁);  // 问候谁

    谁 = Input(); // 纵不遇见你
    Hello(谁);   // 也想问候你
}

「本课终」文章来源地址https://www.toymoban.com/news/detail-860077.html

到了这里,关于C++感受6-Hello World 交互版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ 编程入门(一)—— Hello World

    C++ 是什么 环境搭建 第一个 C++ 程序 本篇结语 C++ 是一种面向对象的计算机程序设计语言,由美国 ATT 贝尔实验室的 Bjarne Stroustrup 在 20 世纪 80 年代初期发明并实现(最初这种语言被称作 “C with Classes” 带类的 C 语言)。它是一种静态数据类型检查的、支持多重编程范式的通

    2024年02月15日
    浏览(53)
  • <C++>快来精通C++的“Hello world“写法

    C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。 为了解决软件危机, 20世纪80年代, 计算机界提出了 OOP(objectoriented programming:面向对象)思想 ,支持面向对象的程序设计语言应运而生

    2024年02月04日
    浏览(48)
  • 多机TCP通讯之hello world(C++)

    TCP(传输控制协议)是一种在计算机网络中广泛使用的协议,它提供了可靠的、面向连接的数据传输服务。TCP 是 OSI 模型中的传输层协议,它确保了数据的可靠性、顺序性和流控制。 以下是 TCP 通讯的一些关键特点和概念: 可靠性: TCP 提供可靠的数据传输。它使用确认机制

    2024年02月02日
    浏览(42)
  • C++并发编程学习01——hello concurrent world

    编译 gdb调试 管理线程的函数和类在 thread 中声明,而保护共享数据的函数和类在其他 头文件中声明 每个线程都必须具有一个初始函数(initial function),新线程的执行从这个函数开始。对于应用程序来说,初始线程是main(),但是对于其他线程,可以在 std::thread 对象的构造函数中

    2024年02月11日
    浏览(47)
  • Visual Studio 2022 CMake C++ Hello World

    C++自学精简教程 目录(必读) Visual Studio 2022 安装​​​​​​​ 什么是CMake CMake是跨平台的C/C++工程构建工具。 我们知道, 在Windows上用Visual Studio开发C/C++代码,工程文件是用.vcxproj文件来组织的; 在Linux上用gcc/g++开发C/C++代码,工程文件是用Makefile文件来组织的; 很多时候我

    2024年02月16日
    浏览(50)
  • 零基础快速上手HarmonyOS ArkTS开发1---运行Hello World、ArkTS开发语言介绍

    在华为开发者大会2023年8月4日(HDC.Together)大会上,HarmonyOS 4正式发布,其实在2021年那会学习了一点鸿蒙的开发: 不过因为现在的鸿蒙手机完全兼容Android应用,所以学习动力也不是很足,一直就搁置了,直到今年华为官方出了这么一则消息才让我对于学习它有一种紧迫感了,如

    2024年02月05日
    浏览(48)
  • ROS入门教程(二) 用C++ 实现Hello world

    代码在git link Hello world实现流程 无论是C++还是Python其他编程语言,实现流程都是大同小异: 创建工作空间 → 创建功能包 → 编辑源文件 → 编辑配置文件 → 编译并执行 step1.创建工作空间 Ctrl+Alt+T打开终端分别输入:【在主目录下创建工作空间】 其中helloworld_ws为我们命名的

    2023年04月10日
    浏览(39)
  • 用Visual Studio编写C++程序,输出Hello World

    1.创建新项目 必须是空项目  2.保存路径 自己选择合适的地方。 3.创建文件 进来之后一片空白,虽然我们已经建立了项目,但是项目都是由一个或多个文件组成的(相当于文件夹),这个项目里面还没有文件,所以需要在项目中创建文件。 右键点击“源文件”,选择添加-新

    2024年02月06日
    浏览(38)
  • 探索自动化网页交互的魔力:学习 Selenium 之旅【超详细】

    \\\"在当今数字化的世界中,网页自动化已经成为了不可或缺的技能。想象一下,您可以通过编写代码,让浏览器自动执行各种操作,从点击按钮到填写表单,从网页抓取数据到进行自动化测试。学习 Selenium,这一功能强大的自动化工具,将为您打开无尽的可能性。在本博客中,

    2024年02月13日
    浏览(50)
  • 【Java探索之旅】方法的概念 定义 执行流程 实参与形参的交互

    🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 方法是Java编程中非常重要的概念,它能够帮助我们组织代码、实现代码的重复使用,并使代码更加清晰易懂。本文将介绍方法的概念、定义以及调用执行过程,同时解释实参和形参之间的关

    2024年04月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包