我们与编程语言及C++的第一次相逢

前言

嗨啰大家好,这个就当是自己梳理学习C++的第一篇文章了。自我介绍一下,我是非科班出身刚刚踏入计算机领域并成功找到一份小破厂C++程序员工作的XX大学不知名混子,但是因为没有系统学习过计算机编程语言,所以在当前的猪里脊(助理级)工程师的日常工作中时常会把一些简单的问题抛给高级工程师(我慈祥的导师)。所以想着趁着空闲时间把相关的知识学一遍过一遍。而以这种文章的形式发出来也是作为给自己梳理知识点的方法。如有谬误,还望斧正。
参考材料来源于实体书、百度百科、CSDN、博客、B站等,如有侵权,请告知并会第一时间删除对应内容。
当然打算做这件事情了我就希望文章能够满足小白、新人以及菜鸟工程师的阅读条件,尽管比较难,但是不试试怎么知道。

编程语言

提到计算机,我们就绕不开编程语言,就像人类社会需要语言交流一样,你想要计算机正常运作起来,你就需要借助计算机的编程语言。而很巧的是,就像我们人类社会存在汉语、英语、法语、德语等等各种语言一样,计算机的社会里也存在各种各样的语言,我们管他们叫做编程语言。就像我的leader需要给我下发迭代任务让我完成对应工作一样,计算机社会里你想要那群电子零件好好听话,你作为当前设备的绝对主宰也需要借助某一种语言完成任务的下发。所以学好编程语言还是很重要的,你总不希望你未来工作的领导是一个明明是他任务表述有问题结果出了事情要求你全责背锅的人吧,同理,计算机也是这么想的。
言归正传,我们来看一下2023年7月TIOBE【注:TIOBE 编程社区指数是一个衡量编程语言受欢迎程度的指标,评判的依据来自世界范围内的工程师、课程、供应商及搜索引擎】 发布 7 月编程语言排行榜,当然,不推荐单纯的跟着排名去选择你的第一门编程语言。
2023年 7 月编程语言排行榜
从上图我们不难发现Python、C、C++、C#(发音:shapu)等前几个都挺常见的。Python作为入门快、生态好的优势稳居第一,且在我大学生涯中最常听到的还得是Python,但同样Python如果想做到顶级也是很难得(把一件事情做好这件事本身就很难,几乎所有行业应该都是这样吧)。然后就到了C和C++,其实我是觉得可以直接把C++理解成C的超集,本科是学过C的,后来找工作开始学的C++,是有这种感觉的。C++附魔了一些新的能力,比如面向对象编程【对象的概念之后一定会说,但一定不是上课让你领个对象去让她坐你对面敲代码,那只会降低你编码的手速】。
在上学或者尝试接触C语言的同学应该听说过:任何比C语言高级的语言都能用C语言来代替,而任何比C语言低级的语言都不足以完整的抽象一个计算机系统。原因嘛,因为C足够底层。这也可能就是无论是科班或者非科班接触编程时,一般都会被安排学习C的一个原因吧。
所以如果时间充裕或者是准备今年上大学整计算机的同学可以跟C++干上了。如果你只是业余爱好,那我觉得Python可能会更加合适吧,毕竟加个OpenCV【跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上】,学点基本的QT【一种跨平台C++图形用户界面应用程序开发框架】,往你的电脑上怼上一个摄像头【这个没啥好解释的,但是为了排比工整…】,你就能做出一个门禁检测/身高检测/…的一些小玩意,还是比较有成就感(说白了没接触过的人看了会觉得超级酷,内行人看了好像也还行)。

何为底层

其实我也不太理解,我个人认为底层就是趋近设备硬件,毕竟他们认的是汇编语言,地位高于人类社会的英语,成功到了大一统时期。而C语言能够直接操作底层硬件【C语言直接操作内存的特性,对于硬件操作具有重要意义】,提供了足够的抽象层次,同时也提供了较高的性能,这使得C语言成为了编写操作系统和底层驱动程序的首选语言。

语言的还分三六九等?

OK,接下来可能今年的准大学生就要问了,为什么还分高级语言和低级语言,难道在计算机世界语言还分三六九等吗?其实不是,这里说的高级和低级更像是人类社会的拼音文字和象形文字,没有所谓的高低之分,你要说区别拼音文字更注重表达【贴近人类交流,简洁高效】而象形文字更注重表意【贴近底层世界,生动形象】。而我们说的高级语言和低级语言也是如此,低级语言是相对于高级语言而言,所谓低级,也是指接近电脑底层的编程语言,像汇编这一类就属于低级语言,而Java【读音:jia wa】、C++这种属于高级语言。

软件和固件说不清道不明的关系

这个如果你们接触到学通信/电科的同学你们就会知道他们的一个很重要(至少对于我收到的Offer上来看)就业路径。你们问他们干啥工作,他们说固件工程师,但是你再问工作内容是什么?你就会听到包含写代码在内的工作并产生轻微的惊讶,我暂称为量子微讶。
其实真的论起来固件算是夹在软件和硬件两者之间的位置,他的代码一般进入【烧录不是焚烧】板子之后除了特殊情况一般不会再修改了,软件更多的还是可修改性强一些。
实在听不懂也没事,因为写这段我也不知道为什么,想到了就写下来了。

前端和后端到底是说啥?

好,那我们进入下一个环节,这时候就有比较机敏的小伙伴就要问了,你说编程语言是分成高级和低级,但是我怎么听说是分为前端和后端的?
这个问题就很及时,因为我正打算写一下。就像我们之前提到的,人类社会的语言分为象形文字和拼音文字,又可以分为汉语、英语等等一样,前端语言和后端语言也是另外一种分类方法。你这么理解,负责开发界面展示的语言叫做前端语言,负责背后默默付出程序的语言叫做后端语言。常见的前端语言:前端三侠客H5【HTML5】C3【CSS3】JS【JavaScript】,后端语言嘛就比如Java【和前面的那个叫JavaScript的也就名字像一点】。这个时候那个机敏的小伙伴又要提问了:你不是C++吗?那C++属于啥?说起来,C++能够借助QT或者MFC实现前端开发,又能完成后端开发,所以C++在这一项上属于是双生武魂【两个都能干】了。

算法与数据结构

唔嚯,繁琐的枯燥的简介终于聊完了,那么我们准备开始学习了。如果你想要学习编程语言,你就绕不开数据结构,你要是接触数据结构,伴生的算法咱们就一定会接触。

数据结构,这大哥是谁?

让我们看一下百度上的定义:数据结构是计算机存储、组织数据的方式,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
就像我们的语言被语法记录在纸张上一样,我们涉及到的数据也需要按照某种方式存储起来。
常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等,这个具体是指的是什么后期会继续讲解,这次只是带哥几个给各位认识一下,以后的生活离不开这哥几个的辅佐。

为什么算法和数据结构能喜结连理

数据结构和算法两者相互依存。数据结构是为算法服务的,毕竟总不能让数据存储都没有章法,那么算法将会成为空谈,因此我们说算法在制定好的数据结构之上执行。而如果只有数据结构,连算法这位执行者都不存在话,存储的再好,没人使用终究是一场空。因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。
再举一个人类社会的例子,数据结构就像是编写法律的人,把上位者的命令收录进当朝法律中,而负责执行法律审判的人在审理案件的时候,会根据某种制定好的流程,去查阅当朝法律,完成案件的审理。在这个例子中数据结构就充当编写法律的人,而算法就是负责审判消费法律的人。

初识C++

算法就先告一段落了,因为我也不会,但是后期我会持续学习,如果上面说的不对还望指正。OK,接下来就是本系列的主体:C++。
在正式学习C++之前我先给第一次接触C++的朋友们普及一些最最基础的知识,如果你是大二及以上学生请自觉忽略。
那么我们先来思考一下啊,我们平时说话一般是怎么构成的。海洋扔掉了所有香菜,海洋是主语,扔掉谓语,香菜是宾语。我们平时说话是有一些定式的,那么在我们程序语句中也需要一些规则。
首先每个C++程序是一定有一个或者多个函数组成的且有且仅有一个主函数,也就是main函数,而我们的系统是从主函数开始运行程序的。

基本的输入输出

int main()
{
    printf("Hello World!");
    return 0;
}

或者

#include<iostream>
using namespace std;
int main()
{
    cout<<"Hello World!";
    return 0;
}

这两种其实都能用,实现效果的话其实就是输出一行:Hello World!
至于说为什么会出现两种方法能实现这种最基本的输出先不用管,这其实涉及到C++的发展趋势,但是两种方法都可用,前者是C的写法后者是C++的写法。后期会用到日志库,这种简单的输入输出新人练几遍试试什么效果就可以了。后面估计我也会说明一下,虽然应该不占多少字符。唯一一个需要解释的是<<,这个代表的是输出运算符,用于打印消息。

IDE

这个时候可能就有动手能力强的小伙伴迫不及待打开txt打算敲上那么几行,这个时候就引出了IDE的概念。说白了,必须要一个集成开发环境,需要一把趁手的兵器。VS【Visual Studio】就可以。

控制流

在一个函数中语句一般是顺序执行的,也就是语句块的第一句会首先执行。那么这里就有几种控制流需要知道的。

1.while语句

while语句反复执行while中的代码,直到while中的条件为假或者触发了break。

//这里有个需求,输出十次:海洋不爱吃香菜
...
//已经输出的次数
int Num = 0;
while(Num < 10)
{
     cout<<"海洋不爱吃香菜";
     //这句其实就是Num = Num + 1;
     Num++;
}
...

好,那我们大家通过上面的例子得到了一个什么结论?什么?我真的不爱吃香菜,或许你说的对,但是更重要的是while的用法,就像是我们每天早上制定好六点半、七点、七点半的闹铃一样,根据我们制定好的规则去执行多次。

2.if语句

如果你能理解上面提到的while语句,那么你就能了解if判断语句。if,顾名思义,如果。那么如果今晚做菜不加香菜,那么海洋会来吃饭,如果加了,那么海洋就…
这段话用if怎么表示?

//如果
if(今晚没有香菜)
{
  海洋会来吃饭
}
//否则
else
{
  那么海洋就...
}

这里点一个小点哈,尽管很多数据都喜欢如果只有一行执行语句就不需要加{},但是我还是习惯加上,画好范围,避免误会。

3.for语句

比起上面的while,可能有小伙伴发现,while用一个参数来作为控制循环次数的关键,那么在C++中有没有为了应对循环条件的别的循环语句?有,也就是这一小节的for。
还是上面的例子,大喊十遍海洋不爱吃香菜,怎么办到?

...
for(int num = 1 ; num <= 10 ; num++)
{
  cout<<"海洋不爱吃香菜";
}
...

大体知道怎么用,具体的可以看一下其他教学视频,这算是高数里面的加减法。

注释

注释的作用不亚于程序逻辑代码本身,不要小看了它,人脑子总会遗忘些东西的,更何况话会有其他人维护你的代码的时候,同样你也有接别人代码的时候,就比如你可能接到代码注释是:当程序无法正常运行,给他磕一个并关机重启。
当然这是玩笑话,注释主要还是标记变量的用途或者你觉的晦涩难懂的代码段。一般公司会有自己的要求,因为签了保密协议公司的这个规范应该是秘密级所以也没办法发出来。总之,如果你拿不准你会不会忘,打上注释,好记性不如烂笔头。
啥?怎么写,OK,常见的是这两种:

int main()
{
    //这是注释,身高为184.7cm
    //可惜不能跨行使用,每一行都要加上“//”
    int height = 184.7;
    /* 输出海洋的身高
    而且这个可以跨行使用 */
    printf("海洋的身高为:%d",height);
    return 0;
}

注意:注释界定符不能嵌套使用。嵌套:一层包一层。

类和成员函数

OK,终于到了今天我认为唯一一个对于新人不友好的词汇了,“类”。
物以类聚,人以群分。中国文化还是博大精深的,用在这里解释也是不错的。
在C++中我们通过定义一个类来定义自己的数据结构,也就是说:一个类定义了一个类型以及与其关联的一组操作。先来看看类的样貌:

class XXX
{
private:
    // 保护数据的安全性,只在本类中使用
public:
    // 与struct中数据权限一样,可以在文件内任意位置获取
protected:
    // 属性或方法只能在类与子类之间使用
};

大家先看看一个基本的类长得什么样子,之后会经常用的。那么我们的标题是类与成员函数,成员函数又是什么鬼?函数就是函数,为什么还叫成员函数?
这好理解,这么想,这确实是一个函数,但是我们上面提到了,人以类聚,那么这些函数也是这个类的成员,所以也就是成员函数。先这么理解着吧。
而成员函数这个多变的人,有两副面孔,都是成员函数,先认识一下,免得到了后面觉得面生。

1.在类内定义和声明
class 类名
{
  返回类型 成员函数名(参数列表)
  {
    成员函数的函数体
  }
}2.在类内声明,类外定义
class 类名
{
  返回类型 成员函数名(参数列表)
} ;
返回类型 类名::成员函数名(参数列表)
{
  成员函数的函数体
}

今天就点到为止,原本打算把很多细节都敞开了说,后来确实还上班【加班】,也就潦草着写了,CSDN上有很多优秀的带学教程,看我的图一乐,真学还得看其他人了。就先这样,回见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值