gamecreator Wrote:почти всегда алгоритм можно построить таким образом, что он будет иметь ровно одну точку входа и одну точку выхода.
Да, я знаю.
Но это может привести к ухудшению читаемости кода: (Click to View)
Согласись ведь, что такой код:
PHP Code:
char* name_of_digit(unsigned int* digit) // функция возвращает название цифры в десятичной системе { if (!digit) return "Error: null pointer";
switch (*digit) { case 0: return "Zero"; case 1: return "One"; case 2: return "Two"; case 3: return "Three"; case 4: return "Four"; case 5: return "Five"; case 6: return "Six"; case 7: return "Seven"; case 8: return "Eight"; case 9: return "Nine"; default: return "Error: non-digit"; } }
выглядит значительно лучше, чем если бы он составлялся без goto-подобных switch и return?
Berserker Wrote:Вирт в Оберонах вообще убрал беззнаковый тип.
Ну и зря. Например, я хочу написать свой класс - динамический массив типа наподобие std::vector, с перегруженной операцией "квадратные скобки". И при этом, я хочу иметь нумерацию его элементов именно с нуля - дабы программист не мог обратиться к "отрицательному" элементу. И как же мне сделать это в Обероне, если там нету беззнакового типа?