问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【NOI】C++程序设计入门一(认识c++)

创作时间:
作者:
@小白创作中心

【NOI】C++程序设计入门一(认识c++)

引用
CSDN
1.
https://blog.csdn.net/qq_39180358/article/details/136877423

随着信息技术的飞速发展,编程已成为新时代的一项重要技能。无论是解决实际问题、提升工作效率,还是参与各类竞赛,掌握一门编程语言都是非常有益的。C++ 作为一种功能强大且应用广泛的编程语言,不仅在学术界有着重要的地位,也是全国青少年信息学奥林匹克竞赛(NOI)的指定语言之一。

本篇内容专为初学者量身打造,旨在引领大家轻松踏入 C++ 编程的大门。无论你是完全没有编程基础的新手,还是有一定经验的学习者,都能在这里找到适合自己的学习路径。通过本篇内容,你将了解到计算机的历史、程序的概念、C++ 的基础知识,并通过实践体验 C++ 编程的魅力。

一、导入

今天我们要学习的内容包括了解计算机的历史、了解程序的概念、C++知识和体验用C++当作计算器。

1.计算机历史

相信在座的各位对计算机肯定不陌生,毕竟大家都正在使用它学习,但是你们真的了解它吗?

换个问题,你们知道现在普遍使用的计算机是第几代计算机吗?

目前使用比较普遍的是第四代计算机,第四代计算机的特点是使用大规模、超大规模的集成电路作为电子元件。

大规模、超大规模的集成电路指的是在一个芯片上集成了几千、几万、几十万到几百万甚至更多晶体管的集成电路。集成度非常高,可以实现极其复杂的电路功能。感兴趣的同学可以看一看计算机组成原理这本书,相信大家看完以后就不感兴趣了。

其实现在已经有了第五代计算机,但它更多地指向研究和发展方向,比如人工智能、并行处理、自然语言处理等领域。

别看现在各位的正在使用的电脑小巧玲珑,其实早期的计算机非常的大。

世界上第一台现代电子数字计算机埃尼阿克(ENIAC),诞生于1946年2月14日的美国宾夕法尼亚大学。

ENIAC长30.48米,宽6米,高2.4米,占地面积约170平方米,30个操作台,重达30英吨,耗电量150千瓦,造价48万美元。(来自百度百科)

170平方米大家可能无法想象出有多大,学校里的教室大概是60-80的平方米,也就是差不多2个或者2个半教室才能装下ENIAC。

这么大的计算机能做什么呢?

ENIAC:我能每秒5000次加法或400次乘法。

各位心里可能想就这啊,我以为多狠呢。

确实这个速度给老年机提鞋都不配,更别说智能手机和咱们的计算机了。

但是在1946年,绝对的no.1。

百度百科显示,它是使用继电器运转的机电式计算机的1000倍、手工计算的20万倍。

同学们可能对1946年没什么概念,1945年9月2日日本投降,世界第二次大战结束,新中国都还没有成立,正在解放战争。隔壁美国已经造出了计算机。

要知道计算机被造出来的用途是做什么的?ENIAC最初是为了计算炮弹弹道轨迹而设计的。

我们还在“我的眼睛就是尺”的时候,别人已经实现GPS定位了。

虽然我们还是在抗美援朝中打败了美国,但是付出了很大的代价。

这就是落后就要挨打。

其实各位学习编程并不是要成为“程序猿”,而是学习时代前端的技术,了解相关信息才不会被时代淘汰。

扯远了。

扩展一点,实际上在eniac之前还有一个abc的计算机,在1937年开始设计,1942年成功。为什么它不是第一台通用计算机呢?它不能编程,他只能计算线性方程。

那这么厉害的计算机是由谁发明的呢?

冯-诺依曼,计算机之父。

他提出的冯·诺依曼架构是现代计算机的基本设计原则,他把计算过程描述为由许多指令按一定顺序组成的程序:

  1. 首先我们需要将这些信息输入到计算机中,因此需要输入设备,例如鼠标、键盘。
  2. 这些信息输入到计算机中,还需要使用存储器存储起来,例如硬盘。
  3. 存储的信息需要被处理,因此需要运算器。
  4. 处理后的信息重新保存到存储器中。
  5. 再将信息由输出设备输出,例如显示器。
  6. 而这些过程都是由控制器来控制运行、完成。
  7. 最后用线路将输入设备、输出设备、存储器、运算器和控制器五个部分连接。

当然我这里是用比较容易理解的话来形容,真实的计算机处理过程是比较复杂的。

除了冯诺依曼还有一个人我们需要记住——图灵。

艾伦·麦席森·图灵,英国计算机科学家、“计算机科学之父”、“人工智能之父”。

他本人虽然没有参与ENIAC的研究,发明出第一台计算机。但是他对计算机科学的贡献是非常巨大的,否则他的名字也不会成为计算机最高奖项-图灵奖

图灵在1936年提出被称为图灵机的逻辑机通用模型。

图灵机,又称图灵计算机,是一个抽象的机器。

它将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。

图灵机有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个读写头在纸带上移来移去。读写头有一组内部状态,还有一些固定的程序。在每个时刻,读写头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

图灵机不仅是计算机科学的一个重要理论模型,更是现代计算机技术和信息科学的基石。

感兴趣的同学可以看一个关于图灵的电影《模仿游戏》。

2.计算机

说完关于计算机的历史,接下来我们将目光转移到计算机本身。

计算机系统由硬件系统和软件系统组成。

硬件系统你可以理解能摸得到的东西,我们刚才说的冯-诺依曼结构就属于硬件系统。你想想鼠标、键盘、显示器、打印机是不是可以摸到。

那么显而易见软件系统就应该是我们摸不着的部分,比如程序(并不全面,只是举例)。

程序是一系列指令的集合,这些指令告诉计算机如何执行特定的任务。

那程序是怎么来的呢?在每一个程序背后都有一群程序员在默默的付出。程序员编写程序告诉计算机,你要帮我做什么、怎么做。

那程序员是怎么编写程序、指挥计算机工作的呢?

计算机无法直接听懂人类的语言,所以需要使用一种计算机和我们人类都能“听”得懂的语言,这种语言就是计算机语言。程序员正是通过这个语言来编写程序,指挥计算机工作。

计算机语言分为高级语言和低级语言。

高级语言和低级语言的区别在于,高级语言设计的更接近自然语言,使用这些语言编写的程序更容易被人理解。

而低级语言主要指汇编语言和机器语言,机器语言是计算机硬件直接理解和执行的二进制指令集。

高级语言编写的程序在被执行之前,需要通过一个翻译过程转换为低级语言,具体来说就是机器语言,这样计算机才能执行这些指令。

c++属于高级语言,这个翻译过程在C++中叫做编译。

编译是预处理、词法分析、语法分析、语义分析和代码生成等一系列复杂过程的结果,最终得到的机器码可以在不依赖源代码的情况下直接运行

3.C++

接下来我们讲一下C++,c++是由c语言发展而来,所以兼容c语言,后面我们会学到很多c语言的写法。

C语言是1972年由美国贝尔实验室设计而成的。1980年前后,贝尔实验室开始研发C++。C++是一种功能强大的混合型程序设计语言,利用它既可以进行面向过程的结构化程序设计,也可以进行面向对象的程序设计。

简单来说非常厉害,它也是信奥赛指定的唯一语言。

那如何通过c++编程呢?

Dev-C++是一个常用的c++集成开发环境,用此软件可以实现 C++程序的编辑、编译、运行和调试等工作。

如果没有安装DEV C++,请先点击下方链接前往学习关于Dev C++的相关教程。

Dev C++的安装与使用方法,超详细教程。

二、体验C++

1.体验程序

  1. 双击打开软件,让我们来试一试c++编程。选择“文件”→“新建”→“源代码”,新建一个源程序文件。

  2. 接下来练习这段代码,在刚才新建的文件中。


#include<bits/stdc++.h>
using namespace std;
int main(){
        
    return 0;    
}

2.程序语言规则

可以看到,我们大致把C++程序分成三个部分。1.头文件引用,2.命名空间引用,3.主函数。接下来分别对三个部分进行讲解。

2.1 头文件引用 #include<bits/stdc++.h>

想象一下,编写程序就像组装一辆乐高汽车。每一块积木代表不同的功能模块,比如轮子用来滚动,车身用来承载乘客。

在C++编程中,我们也有一堆这样的“积木块”,它们被称为函数或者类,藏在各种各样的“盒子”里,这些盒子就叫做“头文件”。

如何引入这些头文件呢?

#include是一个预处理指令,用于包含头文件。

#include头文件名

,就可以引入头文件。

接下来介绍信奥赛中常用的万能头文件“bits/stdc++.h”。

<bits/stdc++.h> 是一个特殊的头文件,它实际上包含了标准 C++ 库中的几乎所有常用头文件。你可以理解为百宝箱,要啥有啥。直接用它的好处是方便快捷,可以一次性包含大量的标准库功能,避免了多次单独包含头文件的麻烦。不过,它的缺点是增加了编译时间,因为编译器需要处理更多的代码。

2.2 命名空间 using namespace

那什么是命名空间?

当在代码中引入了同名的变量或者方法,就会出现不知道是谁或者错误的情况,为了避免这种事情的发生,我们应当明确的告诉计算机或者程序我们使用的对象。

using namespace std;

std 是标准库的命名空间,包含了许多标准库中的函数、类和对象。

它的作用是将命名空间std中的所有标识符引入当前的作用域中,这样就可以直接使用std命名空间中的函数和变量,而不需要在每个标识符前加上std::前缀。

当然我们也可以不引入命名空间。

例如,使用cout输出内容时,如果没有使用using namespace std,则需要写成std::cout<<“周长:”<<c<<" 面积:"<<s; 。

当我们有多个输入输出语句时,每行代码前面都要写std::是一件很麻烦的事,所以引入头文件后,引入命名空间也是很必要的事。

2.3 主函数 int main

main函数(咩~)是C++程序执行的入口点,每个可执行的C++程序都必须有一个且只能有一个main函数。

主函数里面就是我们处理问题的程序。包含输入数据,数据处理,输出结果等。

3.cout

3.1 cout

cout 输出流对象

作用:输出数据到标准输出设备(通常是屏幕)

<< 插入运算符

作用:将数据插入到输出流中。

其实就可以把cout看成是一张屏幕,<<就是一个将显示内容放到屏幕的工具,<<后面跟的是要显示的内容。

3.2 try 1 try

试着在固定代码中写几句话,输出到屏幕显示。


cout<<"你好,世界!";       			//输出了一句话到屏幕上。
cout<<1+2;                          //输出了1+2的和到屏幕上。
  1. 使用英文格式下的符号。
  2. 每一行结束时要用分号结尾。

找到dev-c++快捷栏这三个图标。

  1. 第一个编译
  2. 第二个运行
  3. 第三个编译运行

没错,第三个图标的功能就是第一个+第二个,所以我们点击第三个图标就可以运行程序了。

如果你是第一次运行这个程序,它会让你选择保存程序的地址,你就选择经常保存程序的文件夹,或者保存到桌面的文件夹中,文件名最好是题号,方便查找。

怎么样?成功了吗?真不错!

是不是觉得写两个cout有点麻烦?你可以试试这样写!


cout<<”你好,世界!”<<1+2;

试试加上操纵符endl,有什么不同?


cout<<”你好,世界!”<<endl<<1+2;

endl有两个作用:

  • 插入换行符\n
  • 刷新cout缓冲区(立即显示到屏幕)

三、实战

问题1:胖胖应该付多少钱?

来吧,展示你的c++技巧和数学功底的时候到了!

  1. 第一步写上我们的固定代码。
  2. 输出数学模型(就是怎么列式子求出答案的)。

#include<bits/stdc++.h>
using namespace std;
int main(){
    cout<<1*6+4*3;
    return 0;    
}

什么?你没看答案就做出来了?你可真是一个天才

好吧,我们今天就讲到这里,下个章节再见!

四、练习

选择3道数学题,并使用c++完成。

五、总结

在本篇内容中,我们从计算机的历史入手,介绍了计算机的发展历程和第四代计算机的特点。通过了解 ENIAC 这样的早期计算机,我们认识到计算机技术的巨大进步和其在现代社会中的重要性。随后,我们探讨了计算机的基本组成,包括硬件系统和软件系统,并简要介绍了冯·诺依曼架构和图灵机这两个重要的理论模型。

接着,我们详细介绍了 C++ 语言的基础知识,包括 C++ 的起源、特点及其在 NOI 竞赛中的应用。通过 Dev-C++ 集成开发环境,我们体验了 C++ 编程的基本流程,从创建源代码文件到编译、运行和调试程序。我们还学习了 C++ 程序的基本结构,包括头文件引用、命名空间引用和主函数的使用。

最后,我们通过几个简单的编程实例,巩固了所学的知识。希望这些内容能够激发你对编程的兴趣,为你今后的学习和探索打下坚实的基础。

如果你在学习过程中遇到任何问题或有新的想法,欢迎随时交流和讨论。编程是一门实践性很强的学科,只有通过不断的练习和探索,才能真正掌握其精髓。祝你在编程的道路上越走越远,取得更大的成就!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号