开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[开发教程] C++初级教程 第一章 基础概念

 发表于 2024-6-16 13:44:31 来自手机|显示全部楼层|阅读模式 IP:辽宁省
本帖最后由 Jesner_Joen 于 2024-7-12 13:20 编辑

啊哈,虽然不知道这种教程在论坛内有没有意义,但是我实在是没事闲的了。所以,我管你们能不能听懂,只要能给我贡献推荐量就行
第一章 基础概念

1.1 声明头文件

先来看个示例:
  1. #include <iostream>
  2. #include <sstream>
  3. #include <stack>
  4. #include <cctype>
  5. #include <cstdlib>

  6. using namespace std;

  7. class Calculator {
  8. private:
  9.     stack<double> nums;
  10.     stack<char> ops;

  11.         int priority(char op) {
  12.         if (op == '+' || op == '-') return 1;
  13.         if (op == '*' || op == '/') return 2;
  14.         return 0;
  15.     }

  16.     void eval() {
  17.         if (nums.size() < 2 || ops.empty()) return;

  18.         double b = nums.top(); nums.pop();
  19.         double a = nums.top(); nums.pop();
  20.         char op = ops.top(); ops.pop();

  21.         double result;
  22.         switch (op) {
  23.             case '+': result = a + b; break;
  24.             case '-': result = a - b; break;
  25.             case '*': result = a * b; break;
  26.             case '/': result = a / b; break;
  27.             default: return;
  28.         }

  29.         nums.push(result);
  30.     }

  31. public:
  32.     double calculate(string expr) {
  33.         stringstream ss(expr);
  34.         char ch;
  35.         double num;

  36.         while (ss >> ch) {
  37.             if (isdigit(ch) || ch == '.') {
  38.                 ss.putback(ch);
  39.                 ss >> num;
  40.                 nums.push(num);
  41.             } else if (ch == '(') {
  42.                 ops.push(ch);
  43.             } else if (ch == ')') {
  44.                 while (!ops.empty() && ops.top() != '(') {
  45.                     eval();
  46.                 }
  47.                 ops.pop();
  48.             } else {
  49.                 while (!ops.empty() && priority(ops.top()) >= priority(ch)) {
  50.                     eval();
  51.                 }
  52.                 ops.push(ch);
  53.             }
  54.         }

  55.         while (!ops.empty()) {
  56.             eval();
  57.         }

  58.         if (!nums.empty()) {
  59.             return nums.top();
  60.         }

  61.         return 0;
  62.     }
  63. };

  64. int main() {
  65.     Calculator calc;
  66.     string expr;
  67.     double last_result = 0.0;
  68.     bool use_last_result = false;

  69.     while (true) {
  70.         if (!use_last_result) {
  71.             cout << "Enter an expression (or 'exit' to quit): ";
  72.             getline(cin, expr);
  73.         } else {
  74.             cout << "Enter an expression (using last result: " << last_result << ") (or 'exit' to quit): ";
  75.             getline(cin, expr);
  76.         }

  77.         if (expr == "exit") {
  78.             break;
  79.         }

  80.         if (expr.empty()) {
  81.             use_last_result = true;
  82.         } else {
  83.             use_last_result = false;
  84.             last_result = calc.calculate(expr);
  85.             cout << "Result: " << last_result << endl;
  86.         }
  87.     }

  88.     cout << "Calculator exited." << endl;

  89.     return 0;
  90. }
复制代码


在本代码中,我体现了C++中几乎所有的基础语法,写了个计算器,语法甚至还稍微超纲了一些。大家现在还不需要懂代码为什么要这样写,只需要先听我了解一下C++中的一些基础概念。在第一节课,我不得不提醒大家:那些你听不懂的词有些来源于自然语言,还有些真的是专业术语。我想跟大家说的是,不要老是死揪那个词不放,也不要因为那个词就放弃了自己的兴趣。随着时间的增长,你会越来越能理解那些自然语言。而又随着知识面的增长,你会对那些专业术语有更进一步的理解。接下来,由我给大家说一下C++中的基础概念。
1)头文件:
开头第一行的
  1. #include <iostream>
复制代码

就是头文件。它声明了我们代码中要用到的库。这个语句在每个程序中都必须要打出,因为在C++中有一个原则:任何东西,都必须先声明,才可运行。如果你的程序的第一句不是以井号(#)开头的头文件,那么你的程序在编译软件里就是一摊空气,相当于什么也没有。这就好比小明去参加考试,但是卷子(好比写代码用的软件)上没有写他自己的名字(好比没写头文件),导致他的分数(好比运行结果)得了零分。
在C++中,我们有很多头文件,但是以后再说。
2)编译:
人类写的C++代码都是不能直接运行的,而是需要其它软件的编译,将人类语言转化成机器语言。代码是给人看的,机器语言是给机器运行的。那直接学机器语言不就行了?还学什么C++!不,你还是太年轻了。
Screenshot_20240616_131140.jpg
3)注释:
注释是C++里面最好理解的一条语法。当字符后出现注释,编译软件会直接跳过它。注释在C++里有两种写法,分别是
  1. switch (op) {
  2.             case '+': result = a + b; break;//声明加法
  3.             case '-': result = a - b; break;//声明减法
  4.             case '*': result = a * b; break;//声明乘法
  5.             case '/': result = a / b; break;//声明除法
  6.             default: return;
  7.         }
复制代码


  1. switch (op) {
  2.             case '+': result = a + b; break;
  3.             case '-': result = a - b; break;
  4.             case '*': result = a * b; break;
  5.             case '/': result = a / b; break;
  6.             default: return;
  7.         }
  8. /*本段声明加法,
  9.                   减法,
  10.                   乘法,
  11.                   除法,
  12.        的实现方法.*/
复制代码

其中,双斜杠(//)只能让在其后面的一行字符变成注释,而(/*,*/)组合可以让它们两个之间的字符都变成注释。
4)类
(未编辑完成)
苦力怕论坛,感谢有您~
 发表于 2024-6-16 14:29:02 来自手机|显示全部楼层 IP:陕西省
import tkintker
2#2024-6-16 14:29:02收起回复
Занима2024-8-22 06:55IP:湖北省
回复举报
这好像是Python
如果是C++好像创建窗口是
#include <Window.h>不记得Window后面要不要加s
boomsclothes3792024-8-26 09:25IP:陕西省
回复举报
这就是蟒蛇
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-6-16 16:48:30 来自手机|显示全部楼层 IP:湖南省
自从开始学汇编到现在,就感觉C++很烂,就怎么说呢,我感觉C++不咋地
3#2024-6-16 16:48:30回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 楼主|  发表于 2024-6-16 17:14:05 来自手机|显示全部楼层 IP:辽宁省
一只晨月鸭 发表于 2024-6-16 16:48
自从开始学汇编到现在,就感觉C++很烂,就怎么说呢,我感觉C++不咋地

但是C++是个以稳为主的语言嘛,不像Java啥的会改语法写法
4#2024-6-16 17:14:05回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-6-16 21:50:13|显示全部楼层 IP:安徽省
出一期python的好不好
5#2024-6-16 21:50:13回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-6-16 22:14:19 来自手机|显示全部楼层 IP:河北省
不错的教程,但我认为这个更适合发在编程分享里
6#2024-6-16 22:14:19收起回复
Jesner_Joen2024-6-17 22:24IP:辽宁省
回复举报
问一下,申请一次图章是不是只能在一个帖子里生效,不然我这帖得做的猴长
小研Y回复Jesner_Joen2024-6-18 08:02IP:河北省
回复举报
应该是的,你可以看看版规或者咨询一下编程版版主
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 楼主|  发表于 2024-6-17 21:53:37 来自手机|显示全部楼层 IP:辽宁省
jxhdamjr 发表于 2024-6-16 21:50
出一期python的好不好

个人感觉Python简单的都不需要单独出教程,哪天C++课堂知识点少的时候就顺便带一下吧。

评分

参与人数 1铁粒 +5收起理由
 jxhd*** + 5

查看全部评分

7#2024-6-17 21:53:37回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-7-7 19:18:44|显示全部楼层 IP:广东省
好家伙,原来玩MC可以成为C++大佬
8#2024-7-7 19:18:44回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-7-8 02:57:12|显示全部楼层 IP:河南省
呃呃呃呃大佬 好难好难
9#2024-7-8 02:57:12回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-7-14 17:36:26|显示全部楼层 IP:河北省
忒少了啊
10#2024-7-14 17:36:26回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-21 20:04

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3