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)类
(未编辑完成) import tkintker[贴吧_呵呵] 自从开始学汇编到现在,就感觉C++很烂,就怎么说呢,我感觉C++不咋地 一只晨月鸭 发表于 2024-6-16 16:48
自从开始学汇编到现在,就感觉C++很烂,就怎么说呢,我感觉C++不咋地
但是C++是个以稳为主的语言嘛,不像Java啥的会改语法写法 出一期python的好不好 不错的教程,但我认为这个更适合发在编程分享里 jxhdamjr 发表于 2024-6-16 21:50
出一期python的好不好
个人感觉Python简单的都不需要单独出教程,哪天C++课堂知识点少的时候就顺便带一下吧。 好家伙,原来玩MC可以成为C++大佬 呃呃呃呃大佬 好难好难 忒少了啊
页: [1]