Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/54: Рейтинг темы: голосов - 54, средняя оценка - 4.96
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406

101 Basic Computer Games

25.05.2024, 16:17. Показов 18712. Ответов 273
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно я натолкнулся в сети на книгу, о которой никогда не слышал.
Книга называется "101 Basic Computer Games". Она была выпущена DEC в 1975 году
и содержит тексты игр с аннотациями. Игры написаны на BASIC, на компьютере PDP-11.

Очень интересная коллекция для начинающих программистов, и не только.

Коллекция игр с описаниями и переводом на другие языки программирования находится по адресу:

https://github.com/coding-horr... uter-games
4
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2024, 16:17
Ответы с готовыми решениями:

Создайте график функций x^3 на отрезке [-101; 101]. В качестве значений используйте массив x размером в 101 элемент
Создайте график функций x^3 на отрезке . В качестве значений используйте массив x размером в 101 элемент. Для создания массива значений...

Coodo Games & Datcroft Games Java Developer (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты:...

Coodo Games & Datcroft Games AS3.0 Developer (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты: Fragoria,...

273
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.10.2024, 18:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от testuser2 Посмотреть сообщение
Авто-схемопостроитель кода, вот это было бы наверное достойно )
Это аццкая недетерминировщина, годы тяжёлой работы(ещё и с возможностью обосраться) и самое главное - зачем?
В чём профит этой разработки, которая код приведёт в схематический вид?
0
1406 / 864 / 93
Регистрация: 08.02.2017
Сообщений: 3,682
Записей в блоге: 2
07.10.2024, 18:46
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это аццкая недетерминировщина, годы тяжёлой работы(ещё и с возможностью обосраться)
Почему адская то, и почему годы и именно тяжелой работы. Для меня не спорю, это тяжело, для профессионалов не думаю, что там какой-то ад. Я вообще себе представляю схему как совокупность неких прямоугольников с разным цветом границы.. Любые структурные блоки можно представить как прямоугольники (может быть еще какие-то ярлычки), If, For, и т.д. а от этих прямоугольников изогнутые стрелки, идущие в разных направлениях. Мысль в чем, визуально можно быстрее поймать суть схематической 2D картинки, чем монотонного текста.
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
07.10.2024, 20:15
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Спасибо. Ну как я и подозревал, то же самое: происходит вызов функций msvcrt. Ну а если без неё? Ну как бы код непереносимый.
Что за ересь ты несешь? Этот код без переделки скомпилирует абсолютно любой компиль, хоть под винду, хоть под мак, хоть под линукс, хоть под микроконтроллер.

Добавлено через 4 минуты
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это аццкая недетерминировщина, годы тяжёлой работы(ещё и с возможностью обосраться) и самое главное - зачем?
В чём профит этой разработки, которая код приведёт в схематический вид?
Так VERILOG/VHDL компилятор делает такую работу - пишешь код, а он тебе на основе него создает схему на элементарной логике. Скорее всего и для С что-то подобное есть.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.10.2024, 21:49
Цитата Сообщение от The trick Посмотреть сообщение
Так VERILOG/VHDL компилятор делает такую работу - пишешь код, а он тебе на основе него создает схему на элементарной логике. Скорее всего и для С что-то подобное есть.
Не помню точно, какой, но один из ASM отладчиков тоже схемы выдаёт после анализа, он пачки инструкций
оборачивает в прямоугольные блоки и рисует между ними стрелками переходы. В общем инструменты есть,
но их явно писали не один год.
Тут основная сложность сделать так, чтобы визуально оно выглядело корректно и стрелки между блоками
не пересекались.
Сделать стрелки и блоки по коду само по себе нетрудно. А вот разложить блоки на плоскости и рассчитать
форму стрелок - тут уже много нетривиальных задач и проблем и одно зависит от другого. Самому разработать
эти алгоритмы не взирая на чужие методы - думаю работка не на раз два.
Верилог не знаю, поэтому мне трудно судить в чём там сложность.
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
07.10.2024, 21:59
Quiet Snow, там электрические схемы строятся.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.10.2024, 22:52
Цитата Сообщение от testuser2 Посмотреть сообщение
Для меня не спорю, это тяжело, для профессионалов не думаю, что там какой-то ад.
про профессионалов
Это ад для любого, если человек опирается исключительно на свои знания.
А так, например, тоже не знаю, мол, как генерировать лабиринты, пошёл, взял чужой алгоритм и вуаля,
но меня это профессионалом не сделает. Все знают как это называется, когда человек честен перед собой.
Большинство таких "профессионалов" не двигают отрасль никуда. Об этом много говорил на форуме.
Это следствие того, что "творится" в IT уже не один десяток лет и будет только хуже.
Одно дело технические детали, например API системы, это базис, их не надо изобретать. Хотя это и не возбраняется.
Совсем другое - алгоритмы или одностороннее обесценивание чужого кода. Например "NIH синдром",
когда ты честно пашешь, а расслабленные туши в креслах тебе говорят, что ты велосипедист и лох.
Эти процессы уже давно поразили наше общество и оно уже давно, 20 с х*ром лет огребает и в последние
годы очень хорошо всё это вскрылось, оказалось что наше общество не способно изобретать от слова совсем,
потому что всё китайское и американское привозилось 30 лет, формально нужды не было, хотя все понимали
к чему это ведёт, к пагубной зависимости. По софту тоже самое. Кто-то скажет ну это менее критично и
можно написать, можно да, те же годы потратив с конца 80-х годов все популярные софты разрабатывают.
Вся суть в том, что кол-во реальных профессионалов, не дутых, сильно уменьшилось по сравнению с 90-ми.
И лычка "сеньор" не говорит со 100% вероятностью о том, что человек профи и что он вообще какие-то
задачи потянет в одно лицо. Это может сказать в большинстве случаев лишь о том, что он виртуозно тырит
чужой код и манипулирует библиотеками которых он сам не писал и никогда не сможет.
Это тоже зависимость и часто она сказывается, когда функционала не хватает и начинают переводить
софт с одной библиотеки на другую, похеривая кучу архитектурных нюансов, формировавшихся не один год.
Это я так ещё, очень аккуратно эти вопросы затрагиваю. Ну потому что эти люди прекрасно знают кто
они есть, если их оставить без интернета, гугла, хабров и стековерфловов...


Добавлено через 3 минуты
Цитата Сообщение от The trick Посмотреть сообщение
Quiet Snow, там электрические схемы строятся.
Он генерирует элементы и провода к ним на плоскости без пересечений оных? Масштабы любые?

Добавлено через 27 минут
Да и от вопроса первоначального мы ушли, зачем электротехнические схемы это понятно,
а зачем testuser2-у просто схемы из кода. Это же потребуется "усреднять" языки,
делать некоторый, общий, псевдокод, чтобы в него конвертировать из разных ЯП и только потом
уже его переводить в схемы. Если бы это была интерактивная модель, которая бы позволяла
мониторить текущее положение и состояние - тогда смысл имеет, правда трудно представить себе
всё это на большом проекте, потому что это по сути тоже самое что и код, чуть более визуально
просто оформленный. Или же имеется в виду что после разбора в схематику эта схематика
становится компилируемой моделью? Ну так это тоже непросто, столько же времени, а может
и больше пилить функционал корректного редактирования этих схем, чтобы тоже всё без пересечений,
тут тоже много вопросов о механике взаимодействия с готовой схемой, что можно, что нельзя.
Я если чё без преувеличения, это реально жёсткая задача, даже в каком-то одном варианте.
0
1406 / 864 / 93
Регистрация: 08.02.2017
Сообщений: 3,682
Записей в блоге: 2
08.10.2024, 02:07
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это же потребуется "усреднять" языки,
делать некоторый, общий, псевдокод, чтобы в него конвертировать из разных ЯП и только потом
уже его переводить в схемы.
Вы уже накрутили много лишнего, я имел в виду, толко визуальное представление кода "read-only" в виде прямоугольничков с ярлычками, идущих друг под другом (или вложенных) + стрелки. Стрелки можно делать пересекающиеся, почему нет.. Единственное что можно еще добавить - щелкнул по квадратику - перешел на нужный участок кода. Но если честно, я сам слабо представляю, это надо рисовать, чтобы понять самому..
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
08.10.2024, 04:33
Цитата Сообщение от testuser2 Посмотреть сообщение
Стрелки можно делать пересекающиеся, почему нет.
Если мы хотим сделать хорошо, а не тяп ляп - то это явно не лучшее решение. Ни стрелки, ни блоки не должны
мешать друг другу, а т.е. должны друг друга обходить, стрелки вырастать там, где нужно и огибать блоки,
разделяясь на несколько рёбер. Примерно теми же сходными характеристиками обладают задачи по оптимизации,
к примеру, заготовок на листах, но они в разы проще, чем эта задача.
Представь программу на несколько килострок, которую скормишь этому софту и что будет, если блоки
встанут не скоординированно, а стрелки - друг на друге. Это будет бардак, клубок, который не распутать
и все положительные качества, которые в этом способе видишь - будут сразу нивелированы.

Цитата Сообщение от testuser2 Посмотреть сообщение
Вы уже накрутили много лишнего
Отнюдь. А как и чем эта идея может ещё упростить жизнь? Хотим визуально, значит надо визуально.
К тому же это по сути пустая ниша, хочешь - занимай, мне идей не жалко, всё равно туда копать не решусь.
Хочешь - исследуй, там непочатый край аналитики, за пяток лет можешь что-то толковое создать, нагнуть
часть имеющихся решений. Главное чётко понимать, видеть концепт, зачем оно и что будет по итогу.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
08.10.2024, 12:55
Цитата Сообщение от locm Посмотреть сообщение
В лине и маке при сборке будет использована другая либа, какая доступна у них для сишного рантайма.
Разве не статическая либа? У меня в gcc именно так. Никаких dll не подключается. В lcc тоже самое. Подозреваю, что в tcc также. Понимаете, код который зависит от подгружаемой библиотеки, ну как бы это мягко сказать.. не по сишному что ли..
А то что непереносим, да признаю, сморозил глупость.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ты чё оттрассировать не сможешь, в бейсике с этим какие-то проблемы?
Почему не смогу? Смогу. Даже в своей башке. Я пытаюсь донести, что можно описывать работу алгоритма чисто словесным описанием. И что структурный алгоритм нельзя выразить словесным описанием. То есть сложно документировать.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
прогер,
читающий твой код вынужден скроллить(если код чуть больше 10 строчек) и бегать глазами.
Код с goto ДОЛЖЕН документироваться. Или ide должна автоматически прыгать на метку, с запоминанием истории действий.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Но не самый
печальный, про невозможность модификации готового кода ты и так знаешь.
Я же не экстремал. Понятно, что код должен быть декомпозирован. Я не против while и т.п. Пусть будут, для простых решений. Я видел первый компилятор, который сам Вирт писал. Он тоже использовал goto, хотя и ненавидел его. Потому что там хорошо видно, что без него код стал бы менее понятным и эффективным.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это у тебя оно безымянное, ты нам про цифры вещал когда-то. Все тутошние помнят.
А у нас каждый блок именован и понятно для чего он нужен.
Блок, в моем понимании - отдельное состояние. У вас он безымянен. If это не имя блока, а имя конструкции языка.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А вот ты не объяснил, что даст
комментирование этой "элементарной" сортировки, ни у тебя ни у меня оно ничего не даст и ничего не покажет,
будет одинаково и тут и там.
Чтобы объяснить как работает алгоритм, та же сортировка Шелла, одних визуализаций мало, нужно точно понимать, какая переменная за что отвечает и т.д., потому что речь идет о понимании кода. А мы что делаем, а мы предлагаем понять алгоритм просто взглянув на код, то есть размотать его в своей голове, не на бумаге, а в голове. Хорошо если алгоритм достаточно прост, а если нет, как его разматывать? Если там сотни состояний, которые зависят от сотни условий, удерживать в голове всю эту смесь просто невозможно. Потому что запись алгоритма в структурном виде это просто идиома, то есть нечто типа иероглифа. Разрабатывать его на бумаге невозможно.
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,049
Записей в блоге: 7
08.10.2024, 13:41
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Разве не статическая либа? У меня в gcc именно так.
Что прилинкуете то и будет.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Понимаете, код который зависит от подгружаемой библиотеки
Если забыли, WinAPI это dll и все проги для винды от них зависят.
В других системах примерно также.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
08.10.2024, 14:31
Цитата Сообщение от locm Посмотреть сообщение
Если забыли, WinAPI это dll и все проги для винды от них зависят.
Да я больше про стандартную библиотеку Си имел ввиду.
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,049
Записей в блоге: 7
08.10.2024, 14:42
Я уже несколько раз писал что стандартная сишная библиотека msvcrt.dll входит в дистрибутив винды 95 OSR2. То есть это компонент винды. https://en.wikipedia.org/wiki/... rary_files
MSVCRT.DLL — это стандартная библиотека C для компилятора Visual C++ (MSVC) с версии 4.2 по 6.0. Она предоставляет программам, скомпилированным этими версиями MSVC, большинство стандартных функций библиотеки C. К ним относятся манипуляция строками, выделение памяти, вызовы ввода/вывода в стиле C и другие. MSVCP*.DLL — это соответствующая библиотека C++.
Она поставляется с версиями Windows, начиная с Windows 95 OSR2.5, для использования другими компонентами Windows; более ранние версии поставлялись с библиотекой CRTDLL.DLL.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
08.10.2024, 16:07
Цитата Сообщение от locm Посмотреть сообщение
Я уже несколько раз писал что стандартная сишная библиотека msvcrt.dll входит в дистрибутив винды 95 OSR2. То есть это компонент винды.
Так никто с этим и не спорит. Причем здесь gcc и другие, которые предлагают свои библиотеки, причем статические. Конечно, можно заставить и gcc использовать сторонний код, но из коробки почему линковщик не выкидывает лишнее.
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,049
Записей в блоге: 7
08.10.2024, 16:49
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Причем здесь gcc и другие, которые предлагают свои библиотеки, причем статические.
Можно статически прилинковать, но вам же не нравится размер который в итоге получается. Определитесь нужен минимальный размер приложения или статическая линковка?
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Конечно, можно заставить и gcc использовать сторонний код, но из коробки почему линковщик не выкидывает лишнее.
В PB, в винде gcc используется только как компилятор Си - в объектник. Линкует polink / lld-link / link (из vs).
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
08.10.2024, 17:25
Цитата Сообщение от locm Посмотреть сообщение
Определитесь нужен минимальный размер приложения или статическая линковка?
И то и другое! Я изначально об этом говорил, что мусорная архитектура.
Цитата Сообщение от locm Посмотреть сообщение
Линкует polink / lld-link / link (из vs).
Ужас. Прикрутили то, взяли отсюда..
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,049
Записей в блоге: 7
08.10.2024, 17:44
Цитата Сообщение от CoderHuligan Посмотреть сообщение
И то и другое!
Тогда пишите свою реализацию функции.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Прикрутили то, взяли отсюда.
Но ведь работает. И нормально работает.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
08.10.2024, 20:09
Цитата Сообщение от CoderHuligan Посмотреть сообщение
то есть размотать его в своей голове, не на бумаге, а в голове.
Кодер, не каждый человек размотает в голове чисто логический, абстрактно математически сложный алгоритм.
Это человеческий фактор. Поэтому сортировкам учат.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
И что структурный алгоритм нельзя выразить словесным описанием.
Всё там можно выразить, бейсик\Паскаль это и есть словесное описание, самое что ни на есть, каждая конструкция
это слово из языка. Так и задумывалось. И тем не менее программирование это не просто язык, есть и правила.
А сортировки это считай отдельная предметная область внутри программирования и нифига не простая.
Ты хотел показать что 1 действие неструктурного занимает меньше текста, так вот это всё херня.
Суммарно текста будет ровно столько же. Ты не сможешь представить последовательность шагов
меньшей мыслью, чем это вообще возможно. И если ты думаешь, что программисты видя два FOR, вдруг,
не понимают что это двойной цикл и что там может происходить - то в этом ты ошибаешься.
Да они точно и сразу не всегда поймут что происходит(просто на одних параметрах без трассировки),
но в общих чертах по каждому блоку суть поймут и это не страшно, это разбирается и на бумаге
руками(после перерасчёта формул, т.н. "ремаппинг", т.е. подставив в финальную формулу изм. значения)
и гораздо проще с помощью банальных пошаговых выводов на экран значений счётчиков.
И большинство программирования значительно проще, чем сухая математико-логическая сортировка,
это как раз простые шаговые процессы, где не только состояния влияют, но и данные(именно поэтому
эффективность старой идеологии, которой ты присягнул, сводится в 99% случаев на нет и на ВУ она
вообще смысла не имеет). И плохо, что ты застрял где-то между ассемблером и ВУ. Либо назад, либо вперёд.
Да так можно писать и люди писали, но это были копеечные программы по текущим меркам. Идеология
моментально изжила себя, её нужно знать и кое где применять, но её не нужно использовать массово.
Ты не начнёшь нормально писать софт, пока не откажешься от неё.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Код с goto ДОЛЖЕН документироваться.
Любой код должен документироваться, причём не столько код, сколько сами структуры и алгоритмы.
Причина не в структурности. Структурность и процедурность - лишь парадигмы, удобные формы описания.
По голому коду не всегда просто понять суть, это уже от программиста зависит. Один напишет супер
понятный код, другой напишет лютую ахинею, которую вообще мало кто поймёт, вот для таких случаев
дока и нужна чтобы выкинуть код дурака(или выпендрёжника) и переписать его нормально.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Или ide должна автоматически прыгать на метку, с запоминанием истории действий.
Допустим IDE будет прыгать, а вот голова, имхо, не будет. Ты похоже забыл, что программы бывают большими,
и что рандомные прыжки, которые так любят ценители старой идеологии 70-80-х, немного не вяжутся
с вложенностью, про которую ты нам вещал, ведь интеллект это способность удерживать в голове определённый
уровень мыслей, т.е. вложенность. После пятого прыжка и скроллинга пол программы(дабы понять "где я и кто я")
человек, опухнув, пошлёт такое программирование куда подальше. Причём это будет значительно раньше чем
даже 1k кода. Человек любит последовательность, собранность, упорядоченность, а не хаотичность.

Добавлено через 12 минут
Цитата Сообщение от locm Посмотреть сообщение
Определитесь нужен минимальный размер приложения или статическая линковка?
Я выбрал бы статику по части рантаймов и библиотек. И не брал бы крупные и толстые либы.
По возможности лучше вообще без стороннего. Код до половины мегабайта - ну вполне адекватно
и сейчас и на 20 летнем железе. Загрузится в клик(максимум десятые доли секунды), а со второго
раза уже закешируется. Не о чем переживать. Переживать надо, когда, например, загрузки IDE QB64
ждёшь 20 секунд, а компиляции - 4 секунды, вот тут да - жопа сгорает напрочь.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
09.10.2024, 11:44
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Всё там можно выразить, бейсик\Паскаль это и есть словесное описание, самое что ни на есть, каждая конструкция
это слово из языка. Так и задумывалось.
Лео Броуди в своей книге "Способ мышления - Форт" привел пример вложенного if/else. Там было где-то с десяток уровней. И он написал: "глаза бы мои этого не видели". Вот что такое лапша. Настоящая, где каждая лапшинка безымянна, её просто зовут лапшинкой. Он предложил альтернативу в виде компонентной декомпозиции. Но проблему это решает только наполовину. А проблема есть..
Когда мы доходим до 4-9 уровня и видим там что-то типа "end if". Возникает вопрос: а какому уровню оно относится? Ведь дядюшка Вирт считал, что программы надо читать сверху вниз. А если так, то нужно изначально удерживать в памяти всю структуру уровней. Если блоки имеют имена, то нам надо удерживать в памяти лишь один уровень. При этом легко прослеживаются все пути, по которым передается управление, без особого напряжения ума.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
И плохо, что ты застрял где-то между ассемблером и ВУ. Либо назад, либо вперёд.
Да так можно писать и люди писали, но это были копеечные программы по текущим меркам.
Я просто предлагаю вытащить алгоритм наружу, показать все его внутренности, а не прятать его за красивыми словами типа while else. И я не предлагаю вернуться к числовым меткам.
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,049
Записей в блоге: 7
09.10.2024, 12:39
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Когда мы доходим до 4-9 уровня и видим там что-то типа "end if". Возникает вопрос: а какому уровню оно относится?
Зачем так писать?
Обычно у меня в коде не больше 4-ех уровней вложенности if.
Но даже если больше, есть отступы. Есть ИДЕ которая подскажет.

Код должен быть разделен на функции / процедуры, каждая из которых не больше 300 строк кода. Прыжки между функциями оператором goto недопустимы.
Тогда путаницы будет меньше, т. к. точно знаешь что код ограничен текущей функцией.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
А если так, то нужно изначально удерживать в памяти всю структуру уровней.
Если есть отступы, сразу видно к какому уровня относится код.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Если блоки имеют имена, то нам надо удерживать в памяти лишь один уровень.
А если имени нет, то все уровни?
Напишите коммент и таким образом присвойте имя блоку если вам так проще.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я просто предлагаю вытащить алгоритм наружу, показать все его внутренности, а не прятать его за красивыми словами типа while else.
Эти "красивые слова" создают четкие правила. Например увидев while точно знаешь что блок закончится ключевым словом wend (или других, в зависимости от языка и диалекта). А когда видишь в коде Goto VasiaPupkin совершенно непонятно куда был послан. И хорошо если недалеко и быстро удастся найти место назначения.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
09.10.2024, 13:06
Цитата Сообщение от locm Посмотреть сообщение
Если есть отступы, сразу видно к какому уровня относится код.
Даже если есть отступы это мало помогает. Отступы - костыль.
Цитата Сообщение от locm Посмотреть сообщение
А если имени нет, то все уровни?
Напишите коммент и таким образом присвойте имя блоку если вам так проще
Не вижу в этом никакого смысла.
Цитата Сообщение от locm Посмотреть сообщение
Например увидев while точно знаешь что блок закончится ключевым словом wend (или других, в зависимости от языка и диалекта). А когда видишь в коде Goto VasiaPupkin совершенно непонятно куда был послан
Как это непонятно? Внутри функции имя блока (метки) уникально. Это уникальное состояние. И если , как вы пишете, в функции не более 300 строк кода, то найти метку не составляет труда. И если она выше, то понятно, что тут может быть цикл, а может и не быть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.10.2024, 13:06

Coodo Games & Datcroft Games 3d Artist (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты:...

Coodo Games & Datcroft Games Lead Java Developer / Team Lead
Для решения задач, связанных с разработкой серверной части казино игр, нам в команду требуется сильный Java developer. Помимо технических...

Выполнить следующие операции в двоичной системе счисления: 10101,10101+1001,0011 101110,101-101,11 1011*111 1010101
Прямой, обратный и дополнительный коды двоичных чисел, их использование в двоичной арифметике. Выполнить с использованием кодов двоичных...

Даны действительные числа x1,…,x101, y1…,y101. Получить действительные x'1,…,x'101, y'1,…,y'101
Написать код в Free Pascal. Помогите, пожалуйста! Даны действительные числа x1,…,x101, y1…,y101. Получить действительные x'1,…,x'101,...

Bsod - *50,*3B, *101, *101
Доброго времени суток. Началось все после того как снял 2ю GTX 550 Ti(SLI) и немного разогнал оставшуюся(GPU c 900 до 1000, память с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
260
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru