- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
// https://shitcode.net/557
int getChar(char charachter){
int returnValue = Z;
switch(charachter){
case 'A': returnValue = A; break;
case 'a': returnValue = A; break;
case 'B': returnValue = B; break;
case 'b': returnValue = B; break;
case 'C': returnValue = C; break;
case 'c': returnValue = C; break;
case 'D': returnValue = D; break;
case 'd': returnValue = D; break;
case 'E': returnValue = E; break;
case 'e': returnValue = E; break;
case 'F': returnValue = F; break;
case 'f': returnValue = F; break;
case 'G': returnValue = G; break;
case 'g': returnValue = G; break;
case 'H': returnValue = H; break;
case 'h': returnValue = H; break;
case 'I': returnValue = I; break;
case 'i': returnValue = I; break;
case 'J': returnValue = J; break;
case 'j': returnValue = J; break;
case 'K': returnValue = K; break;
case 'k': returnValue = K; break;
case 'L': returnValue = L; break;
case 'l': returnValue = L; break;
case 'M': returnValue = M; break;
case 'm': returnValue = M; break;
case 'N': returnValue = N; break;
case 'n': returnValue = N; break;
case 'O': returnValue = O; break;
case 'o': returnValue = O; break;
case 'P': returnValue = P; break;
case 'p': returnValue = P; break;
case 'Q': returnValue = Q; break;
case 'q': returnValue = Q; break;
case 'R': returnValue = R; break;
case 'r': returnValue = R; break;
case 'S': returnValue = S; break;
case 's': returnValue = S; break;
case 'T': returnValue = T; break;
case 't': returnValue = T; break;
case 'U': returnValue = U; break;
case 'u': returnValue = U; break;
case 'V': returnValue = V; break;
case 'v': returnValue = V; break;
case 'W': returnValue = W; break;
case 'w': returnValue = W; break;
case 'X': returnValue = X; break;
case 'x': returnValue = X; break;
case 'Y': returnValue = Y; break;
case 'y': returnValue = Y; break;
case 'Z': returnValue = Z; break;
case 'z': returnValue = Z; break;
case ' ': returnValue = _; break;
case '3': returnValue = B2; break;
case '<': returnValue = TEMP; break;
case '*': returnValue = FULL; break;
case '|': returnValue = LINE; break;
case '_': returnValue = _; break;
case ':': returnValue = COL; break;
case '-': returnValue = DASH; break;
case ')': returnValue = BRA2; break;
case '%': returnValue = SMILE; break;
case '.': returnValue = DOT; break;
case '^': returnValue = COLDOT; break;
}
return returnValue; //RETORNO DE INFORMAÇÃO
}
retorno de informaçinho
Но во всех функциях, которые не пожирают временные ресурсы, эта питушня создаёт синтаксиальную переголову.
Зато код выглядит как расстановка гардов и потом исполнение алгоритма на чистых данных.
1. Размер плохой? Садись на флешку!
2. Память не выделилась? Садись на флешку!
3. Кобенанта неворцеательная? Садись на флешку!
4. Вроде всё хорошо, исполняем код.
P.S. Ну и если багор случился где-то внутри двойного цикла, проще через return или goto отправиться на флешку, чем хитрожопить логику плавного выхода.
Да и выглядит оно не так уж и плохо, если сишку более-менее знать.
Простой, понятный, надёжный код, лучше можно сделать только с «RAII». Без «goto» это была бы лапша из ифов с кучей копипасты (освобождать f1 бы пришлось в трёх местах: после f2, после mem и перед нормальным выходом), при этом куча копипасты растёт квадратично от количества открываемых ресурсов.
Правда, с бряком могут быть проблемы, если есть вложенные циклы.
Надеюсь, ничего не напутал.
«Watcom C» в «Windows» (и в «OS/2») поддерживает try даже в няшной сишке посредством SEH. К сожалению, портабельный вариант они родить не смогли.
https://www.php.net/manual/ru/control-structures.break.php
Хотя всё равно опасная конструкция: если обернёшь цикл другим, придётся у всех бряков менять значение аргумента.
То ли дело «Java»:
«Точно-точно не goto, зуб даю!»
В общем-то в этих случаях код с goto неплохо читается, даже лучше чем без него.
>я плохо знаком с одновозвратничеством, но краем уха слышал
ГК потихоньку деградирует.
За весь тред ни разу не всплыла фамилия Дейкстра.
>скорее всего, goto у них ещё в большей анафеме, чем многовозврат
https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf
Повезло старику.
Он умер в 2002. А пхп изобрели в 1995.
Сволочи. Довели деда.
Которое сводится к вводу различных сочетаний букв и символов, пока программа наконец не скомпилируется.
Нужен же какой-то баланс между случайным клацаньем по кнопкам и просчитыванием всего в голове вместо компьютера.
Математика - это хорошо, но она сама же покажет, что если есть реальная задача, которую надо сделать наиболее эффективно, то придётся искать компромиссную точку минимума, а не впадать в крайности.
Наверное, дело в том, что во времена Дейкстры компьютеры действительно были инструментами математиков, так как пользователей в современном смысле в те времена попросту не существовало.
Да я каждый день пишу такие программы.
Выполняются они на каких-то удалённых компьютерах, которых я ни разу физически не видел.
Вы думаете, что ПИ знает заметно больше того деда - например, про внутренние питух-коды процессора или напряжения на ножках процессора под конкретными номерами?
Или наоборот, дед вообще ничего не знал про старые ВМ*, и просто хреначил код на жс или брейнфаке под абстрактную ВМ**?
Я думаю, дед знал то же самое, что и ПИ (в пересчёте на ...). Иначе он мог бы быть только кем-то вроде заказчика, а его код потом материли, перезаклеивали и перетыкивали.
Разница с ПИ - пинг повыше и терминал картонный, а не пластиковый с магниевым сплавом. А так - что там, что там - частные имплементации SSH.
_________
* вычислительная машина
** виртуальная машина
Зее альзо: ксерокс, джинсы
В любом обсуждении goto Дейкстра упоминается неявно.