Польза goto в C++

TL;DR: Дейскстра учился писать код с goto, научился, раскритиковал применение goto, учебные программы усложнили т.к. “так сказал великий Дейкстра”, учить детей программированию стало сложнее.

Польза goto в C++
1212

Когда goto применялся, то приложения были простые. Сейчас ты даже калькулятор не напишешь без десяти слоёв абстракций и MVC. Я вообще не понимаю, почему это в 2024 году надо серьёзно обсуждать, это какой-то первоапрельский рофл.

5
Ответить
Автор

Но в том то все и дело, что взяв нормальную библиотеку, например Arctic Engine, можно легко написать на С++ калькулятор всего в несколько строк кода, что-то вроде

double x = 0;
double acc = 0;
int res = 1;
int op = 0;
int next = 0;
b:
Clear();
if (res == 1) {
Print(acc);
}
if (res == 0) {
Print(x);
}
if (IsKey("1")) {
x = x * 10 + 1;
res = 0;
}
if (IsKey("2")) {
x = x * 10 + 2;
res = 0;
}
if (IsKey("3")) {
x = x * 10 + 3;
res = 0;
}
if (IsKey("4")) {
x = x * 10 + 4;
res = 0;
}
if (IsKey("5")) {
x = x * 10 + 5;
res = 0;
}
if (IsKey("6")) {
x = x * 10 + 6;
res = 0;
}
if (IsKey("7")) {
x = x * 10 + 7;
res = 0;
}
if (IsKey("8")) {
x = x * 10 + 8;
res = 0;
}
if (IsKey("9")) {
x = x * 10 + 9;
res = 0;
}
if (IsKey("0")) {
x = x * 10 + 0;
res = 0;
}
if (IsKey("+")) {
next = 0;
goto apply;
}
if (IsKey("-")) {
next = 1;
goto apply;
}
if (IsKey("*")) {
next = 2;
goto apply;
}
if (IsKey("/")) {
next = 3;
goto apply;
}
if (IsKey("=")) {
next = 4;
goto apply;
}
Show();
goto b;
apply:
if (op == 0) {
acc = acc + x;
}
if (op == 1) {
acc = acc - x;
}
if (op == 2) {
acc = acc * x;
}
if (op == 3) {
acc = acc / x;
}
if (op == 4) {
acc = x;
}
op = next;
next = 0;
x = 0;
res = 1;
goto b;

Ответить