Jesner_Joen 发表于 2024-6-16 13:44:31

C++初级教程 第一章 基础概念

本帖最后由 Jesner_Joen 于 2024-7-12 13:20 编辑

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

1.1 声明头文件

先来看个示例:
#include <iostream>
#include <sstream>
#include <stack>
#include <cctype>
#include <cstdlib>

using namespace std;

class Calculator {
private:
    stack<double> nums;
    stack<char> ops;

      int priority(char op) {
      if (op == '+' || op == '-') return 1;
      if (op == '*' || op == '/') return 2;
      return 0;
    }

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

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

      double result;
      switch (op) {
            case '+': result = a + b; break;
            case '-': result = a - b; break;
            case '*': result = a * b; break;
            case '/': result = a / b; break;
            default: return;
      }

      nums.push(result);
    }

public:
    double calculate(string expr) {
      stringstream ss(expr);
      char ch;
      double num;

      while (ss >> ch) {
            if (isdigit(ch) || ch == '.') {
                ss.putback(ch);
                ss >> num;
                nums.push(num);
            } else if (ch == '(') {
                ops.push(ch);
            } else if (ch == ')') {
                while (!ops.empty() && ops.top() != '(') {
                  eval();
                }
                ops.pop();
            } else {
                while (!ops.empty() && priority(ops.top()) >= priority(ch)) {
                  eval();
                }
                ops.push(ch);
            }
      }

      while (!ops.empty()) {
            eval();
      }

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

      return 0;
    }
};

int main() {
    Calculator calc;
    string expr;
    double last_result = 0.0;
    bool use_last_result = false;

    while (true) {
      if (!use_last_result) {
            cout << "Enter an expression (or 'exit' to quit): ";
            getline(cin, expr);
      } else {
            cout << "Enter an expression (using last result: " << last_result << ") (or 'exit' to quit): ";
            getline(cin, expr);
      }

      if (expr == "exit") {
            break;
      }

      if (expr.empty()) {
            use_last_result = true;
      } else {
            use_last_result = false;
            last_result = calc.calculate(expr);
            cout << "Result: " << last_result << endl;
      }
    }

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

    return 0;
}

在本代码中,我体现了C++中几乎所有的基础语法,写了个计算器,语法甚至还稍微超纲了一些。大家现在还不需要懂代码为什么要这样写,只需要先听我了解一下C++中的一些基础概念。在第一节课,我不得不提醒大家:那些你听不懂的词有些来源于自然语言,还有些真的是专业术语。我想跟大家说的是,不要老是死揪那个词不放,也不要因为那个词就放弃了自己的兴趣。随着时间的增长,你会越来越能理解那些自然语言。而又随着知识面的增长,你会对那些专业术语有更进一步的理解。接下来,由我给大家说一下C++中的基础概念。
1)头文件:
开头第一行的
#include <iostream>
就是头文件。它声明了我们代码中要用到的库。这个语句在每个程序中都必须要打出,因为在C++中有一个原则:任何东西,都必须先声明,才可运行。如果你的程序的第一句不是以井号(#)开头的头文件,那么你的程序在编译软件里就是一摊空气,相当于什么也没有。这就好比小明去参加考试,但是卷子(好比写代码用的软件)上没有写他自己的名字(好比没写头文件),导致他的分数(好比运行结果)得了零分。
在C++中,我们有很多头文件,但是以后再说。
2)编译:
人类写的C++代码都是不能直接运行的,而是需要其它软件的编译,将人类语言转化成机器语言。代码是给人看的,机器语言是给机器运行的。那直接学机器语言不就行了?还学什么C++!不,你还是太年轻了。

3)注释:
注释是C++里面最好理解的一条语法。当字符后出现注释,编译软件会直接跳过它。注释在C++里有两种写法,分别是
switch (op) {
            case '+': result = a + b; break;//声明加法
            case '-': result = a - b; break;//声明减法
            case '*': result = a * b; break;//声明乘法
            case '/': result = a / b; break;//声明除法
            default: return;
      }

switch (op) {
            case '+': result = a + b; break;
            case '-': result = a - b; break;
            case '*': result = a * b; break;
            case '/': result = a / b; break;
            default: return;
      }
/*本段声明加法,
                  减法,
                  乘法,
                  除法,
       的实现方法.*/
其中,双斜杠(//)只能让在其后面的一行字符变成注释,而(/*,*/)组合可以让它们两个之间的字符都变成注释。
4)类
(未编辑完成)

boomsclothes379 发表于 2024-6-16 14:29:02

import tkintker[贴吧_呵呵]

林梦泽 发表于 2024-6-16 16:48:30

自从开始学汇编到现在,就感觉C++很烂,就怎么说呢,我感觉C++不咋地

Jesner_Joen 发表于 2024-6-16 17:14:05

一只晨月鸭 发表于 2024-6-16 16:48
自从开始学汇编到现在,就感觉C++很烂,就怎么说呢,我感觉C++不咋地

但是C++是个以稳为主的语言嘛,不像Java啥的会改语法写法

jxhdamjr 发表于 2024-6-16 21:50:13

出一期python的好不好

小研Y 发表于 2024-6-16 22:14:19

不错的教程,但我认为这个更适合发在编程分享里

Jesner_Joen 发表于 2024-6-17 21:53:37

jxhdamjr 发表于 2024-6-16 21:50
出一期python的好不好

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

Bylvc 发表于 2024-7-7 19:18:44

好家伙,原来玩MC可以成为C++大佬

oeoeoe 发表于 2024-7-8 02:57:12

呃呃呃呃大佬 好难好难

浑源太极马保国 发表于 2024-7-14 17:36:26

忒少了啊
页: [1]
查看完整版本: C++初级教程 第一章 基础概念