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

101 Basic Computer Games

25.05.2024, 16:17. Показов 18723. Ответов 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
04.10.2024, 18:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CoderHuligan Посмотреть сообщение
где находится определение функции SYS_Quit()?
Прототип SYS_Quit() - 55 строка.
Прототип функции выхода
C
1
integer __stdcall f_exitprocess_(integer) asm("_ExitProcess@4");
В конце тело функции.

C
1
2
3
4
5
void SYS_Quit() {
PB_EndFunctions();
f_heapdestroy_(PB_MemoryBase);
f_exitprocess_(PB_ExitCode);
}
Добавлено через 7 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Прогнал программку под отладчиком. Там дергается стандартная printf из msvcrt, то есть минуя gcc посредством dll.
Ну да, такое себе, "созависимое".))) Хотя а как иначе, винда это не DOS, где в память пульнул и
оно тебе вывело что надо. С другой стороны ненавижу Dll, всегда где только можно стараюсь от них
избавиться. Мне 100кб не жалко. Даже по меркам 30-ти летней давности это немного.

Добавлено через 14 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Меня это пока мало заботит. Могу линукс установить для тестинга. Я уже сидел на нем.
Тоже в нём сидел несколько лет в качестве элементарного юзера, Runtu, Mint, Ubuntu, но по сути
ничерта не педрю там. Базовое тестирование это не есть тестирование по всем нюансам, это должен
делать специалист, человек у кого эта система родная, кто напарывался и нюансы знает.
1
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
04.10.2024, 19:06
Цитата Сообщение от CoderHuligan Посмотреть сообщение
В VC около 20


Мб сначала собирать нужно научится правильно?
1
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,052
Записей в блоге: 7
04.10.2024, 20:44
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Смешно.
Что смешного?
Не верите, скачайте PB и лично убедитесь что передается GCC при компиляции объектника.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Про выходы из строя не слышал


Цитата Сообщение от Quiet Snow Посмотреть сообщение
Тут как раз парадокс. Эти чипы в основной своей массе - слабые.
Не особо они слабые.
Даже самые простые микроконтроллеры с M0 ядром, с производительностью около 50 миллионов операций в секунду и 32 КБ флеша 4 КБ ОЗУ вполне подходят для разработки на ЯВУ.
Про процы и говорить нечего. У 4 малины производительность примерно как у двухядерного проца на 775 сокете.

У маков M1/M2 говорят что производительность превышает Intel при том же потреблении, то есть они более экономичные.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
К примеру, где находится определение функции SYS_Quit()? Это же функция не из стандартной библиотеки.
В коде все есть.
C
1
2
3
4
5
void SYS_Quit() {
PB_EndFunctions();
f_heapdestroy_(PB_MemoryBase);
f_exitprocess_(PB_ExitCode);
}
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Там дергается стандартная printf из msvcrt, то есть минуя gcc посредством dll.
Вот, я же писал что там стандартная сишная функция.
А msvcrt это сишный рантайм который по умолчанию в системе начиная Win95 OSR2 и во всех последующих включая текущую Win11.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
С другой стороны ненавижу Dll, всегда где только можно стараюсь от них
избавиться.
Тогда нужно не использовать WinAPI что будет сложно под виндой.
Как же без KERNEL32.dll, USER32.dll и других?
msvcrt.dll почти тоже самое. Это не WinAPI, но dll которая используется некоторыми прогами винды и без ее винда скорее всего нормально работать не будет.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Мне 100кб не жалко.
Фред так и сделал начиная с версии 6.10 https://www.purebasic.fr/blog/?p=538
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2024, 22:19
Цитата Сообщение от locm Посмотреть сообщение
Тогда нужно не использовать WinAPI что будет сложно под виндой.
Я не против критических системных библиотек, которые условно всегда есть в системе, они не лежат в папке
с проектом и никак не мешают. Бесит то, что библиотеку всегда можно сделать банально - инклудом, но разрабы
начинают страдать этой хернёй с dll. Я например про FBSound, который написан на целевом ЯП, т.е. это
не враппер, но без dll уже не заработает. Такого много.
Мы ведь ничего с этого не имеем, библа грузится в память точно так же, суммарно во время работы программы
памяти потребляется ровно столько же, но плодятся лишние сущности не пойми зачем.
И то что, мол, вот будет программа, которая будет использовать эту же библиотеку(кроме общебазовых винды),
это всё предрассудки. Потому что пишут кастом, который, по сути, мало где.
1
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,052
Записей в блоге: 7
05.10.2024, 00:21
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Я например про FBSound, который написан на целевом ЯП
Если есть исходник, кинуть его в папку, подключить к проекту и dll не понадобится.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Мы ведь ничего с этого не имеем, библа грузится в память точно так же
Во время работы приложения можно загружать и выгружать dll. Было актуально раньше для экономии ОЗУ.
Один экземпляр загруженной dll могут использовать несколько процессов, что опять же экономит ОЗУ.
Можно смешивать разные ЯП (exe на одном, dll на другом). Это же можно с определенными ограничениями сделать и со статической библиотекой.
Можно поделится библиотекой не открывая ее исходный код.
0
1406 / 864 / 93
Регистрация: 08.02.2017
Сообщений: 3,682
Записей в блоге: 2
05.10.2024, 05:36
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А теперь стоит попробовать словесно описать работу хоть той же сортировки пузырьком, которая реализована в структурном коде. Я бы очень хотел это увидеть. Кто возьмется?
На VB так будет, не знаю как на старом диалекте Basic это должно выглядеть
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
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
Sub testBubbleSort2()
    Dim arr()
    arr = Array(3, 5, 2, 4, 1, 6)
    BubbleSort arr
End Sub
 
Sub BubbleSort(arInp())
Dim i&, j&, Tmp, endIter1&, endIter2&
 
endIter2 = UBound(arInp)
endIter1 = endIter2 - 1
 
i = LBound(arInp)
Cycle1:
 
j = i + 1
Cycle2:
    On (arInp(i) > arInp(j)) + 1 GoTo NextIter2
        Tmp = arInp(j)
        arInp(j) = arInp(i)
        arInp(i) = Tmp
NextIter2:
    j = j + 1
    On (j > endIter2) + 1 GoTo Cycle2
 
NextIter1:
    i = i + 1
    On (i > endIter1) + 1 GoTo Cycle1
 
End Sub
 
'https://wellsr.com/vba/2018/excel/vba-bubble-sort-macro-to-sort-array/
Sub BubbleSortOriginal(arInp())
Dim i&, j&, Tmp
 
For i = LBound(arInp) To UBound(arInp) - 1
    For j = i + 1 To UBound(arInp)
        If arInp(i) > arInp(j) Then
            Tmp = arInp(j)
            arInp(j) = arInp(i)
            arInp(i) = Tmp
        End If
    Next
Next
End Sub


Добавлено через 1 час 33 минуты
Если разрешается использовать If то такой варианд
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub BubbleSort4(arInp())
Dim i&, j&, Tmp, endIter1&, endIter2&
 
endIter2 = UBound(arInp)
endIter1 = endIter2 - 1
 
i = LBound(arInp)
Cycle1:
 
j = i + 1
Cycle2:
    If arInp(i) > arInp(j) Then
        Tmp = arInp(j)
        arInp(j) = arInp(i)
        arInp(i) = Tmp
    End If
If j < endIter2 Then j = j + 1: GoTo Cycle2
 
If i < endIter1 Then i = i + 1: GoTo Cycle1
End Sub
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
05.10.2024, 23:17
Цитата Сообщение от locm Посмотреть сообщение
Если есть исходник, кинуть его в папку, подключить к проекту и dll не понадобится.
Уже пробовал, там либа задизайнена так, что малой кровью её не переписать. Плюс я не изучал FB
настолько, насколько его изучил DJ Peters, он там код так навернул, что его долго колупать.
Свой рантайм, плагины, модули с ассемблером. Как говорит хулиган проще заново написать.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
06.10.2024, 13:55
Цитата Сообщение от locm Посмотреть сообщение
Не верите, скачайте PB и лично убедитесь что передается GCC при компиляции объектника.
Ну а если я передам этот код своему gcc, что тогда будет? Скушает или выплюнет?
Цитата Сообщение от The trick Посмотреть сообщение
Мб сначала собирать нужно научится правильно?
Не могли бы вы выложить исполняемый файл?
Цитата Сообщение от testuser2 Посмотреть сообщение
На VB так будет, не знаю как на старом диалекте Basic это должно выглядеть
Да я не об этом. Просто словесно на русском языке изложить алгоритм работы пузырьковой сортировки отталкиваясь от структурного кода. Типа как комментарий к нему. Но чтобы алгоритм можно было понять только пользуясь словесным описанием. Код с метками можно описать, структурный код описанию не поддается, ИМХО. Верификации тоже. Нет узловых точек алгоритма, на которые можно было бы ссылаться при верификации или описанию.
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,052
Записей в блоге: 7
06.10.2024, 14:22
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ну а если я передам этот код своему gcc, что тогда будет? Скушает или выплюнет?
Объектник должен скомпилировать.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
06.10.2024, 15:18
Цитата Сообщение от locm Посмотреть сообщение
Объектник должен скомпилировать.
У меня выдает 29 ошибок. Не хочет компилировать.
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,052
Записей в блоге: 7
06.10.2024, 15:54
Как собирали? Какие ошибки?
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
06.10.2024, 16:40
Компилировал как Си. Не понимает что такое inline.

Добавлено через 2 минуты
Вот
Кликните здесь для просмотра всего текста
||=== Build: Debug in hello2 (compiler: GNU GCC Compiler) ===|
E:\programming\cb\hello2\main.c|2|warnin g: ignoring #pragma warning [-Wunknown-pragmas]|
E:\programming\cb\hello2\main.c|28|error : expected '=', ',', ';', 'asm' or '__attribute__' before 'long'|
E:\programming\cb\hello2\main.c||In function 'f_exitprocess_':|
E:\programming\cb\hello2\main.c|31|error : expected declaration specifiers before 'asm'|
E:\programming\cb\hello2\main.c|32|error : expected '=', ',', ';', 'asm' or '__attribute__' before 'asm'|
E:\programming\cb\hello2\main.c|33|error : expected '=', ',', ';', 'asm' or '__attribute__' before 'asm'|
E:\programming\cb\hello2\main.c|34|error : expected '=', ',', ';', 'asm' or '__attribute__' before 'asm'|
E:\programming\cb\hello2\main.c|36|error : storage class specified for parameter 'tls'|
E:\programming\cb\hello2\main.c|37|error : parameter 'PB_ExitCode' is initialized|
E:\programming\cb\hello2\main.c|38|error : parameter 'PB_MemoryBase' is initialized|
E:\programming\cb\hello2\main.c|39|error : parameter 'PB_Instance' is initialized|
E:\programming\cb\hello2\main.c|43|error : expected '=', ',', ';', 'asm' or '__attribute__' before 'asm'|
E:\programming\cb\hello2\main.c|47|error : parameter 'PB_DEBUGGER_LineNumber' is initialized|
E:\programming\cb\hello2\main.c|48|error : parameter 'PB_DEBUGGER_IncludedFiles' is initialized|
E:\programming\cb\hello2\main.c|49|error : parameter 'PB_DEBUGGER_FileName' is initialized|
E:\programming\cb\hello2\main.c|51|error : storage class specified for parameter 'ms_s'|
E:\programming\cb\hello2\main.c|51|error : parameter 'ms_s' is initialized|
E:\programming\cb\hello2\main.c|51|warni ng: excess elements in scalar initializer [enabled by default]|
E:\programming\cb\hello2\main.c|51|warni ng: (near initialization for 'ms_s') [enabled by default]|
E:\programming\cb\hello2\main.c|54|error : parameter 'PB_OpenGLSubsystem' is initialized|
E:\programming\cb\hello2\main.c|55|error : parameter 'PB_Compiler_Unicode' is initialized|
E:\programming\cb\hello2\main.c|56|error : parameter 'PB_Compiler_Thread' is initialized|
E:\programming\cb\hello2\main.c|57|error : parameter 'PB_Compiler_Purifier' is initialized|
E:\programming\cb\hello2\main.c|58|error : parameter 'PB_Compiler_Debugger' is initialized|
E:\programming\cb\hello2\main.c|59|error : parameter 'PB_Compiler_DPIAware' is initialized|
E:\programming\cb\hello2\main.c|60|error : parameter 'PB_Compiler_XPSkins' is initialized|
E:\programming\cb\hello2\main.c|61|error : parameter 'PB_ExecutableType' is initialized|
E:\programming\cb\hello2\main.c|63|error : expected '=', ',', ';', 'asm' or '__attribute__' before '{' token|
E:\programming\cb\hello2\main.c|66|error : expected '=', ',', ';', 'asm' or '__attribute__' before '{' token|
E:\programming\cb\hello2\main.c|75|error : expected '=', ',', ';', 'asm' or '__attribute__' before '{' token|
E:\programming\cb\hello2\main.c|31|error : old-style parameter declarations in prototyped function definition|
E:\programming\cb\hello2\main.c|31|error : parameter name omitted|
E:\programming\cb\hello2\main.c|79|error : expected '{' at end of input|
E:\programming\cb\hello2\main.c|22|warni ng: 's_s' defined but not used [-Wunused-variable]|
E:\programming\cb\hello2\main.c||In function 'f_exitprocess_':|
E:\programming\cb\hello2\main.c|79|warni ng: control reaches end of non-void function [-Wreturn-type]|
||=== Build failed: 29 error(s), 5 warning(s) (0 minute(s), 0 second(s)) ===|
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
06.10.2024, 19:35
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Просто словесно на русском языке изложить алгоритм работы пузырьковой сортировки отталкиваясь от структурного кода.
Ты хочешь на полном серьёзе сказать, что структурный вид менее понятный только из-за того, что
сортировку трудно понять?

Ну это же не выдерживает никакой критики.

Во-первых, это задача мизерная и на её основе делать какие-то глобальные выкладки - глупо.
Во-вторых это задача учебная, в реальности в чистом виде не применяется(или только новичками).
3. Если человек не знает даже банальной пузырьковой сортировки, то какой смысл ему вообще что-то писать?
4. Любой разбор без понятной документации будет геморроем. Причём не всякую документацию удастся понять.
Однако хорошо оформленный, структурный код в линейном виде имеет больше шансов быть понятым без доки,
если там не используются сложные алгоритмы и структуры.
5. Есть простые алгоритмы, есть крайне сложные. Сортировка пузырьком это по сути бестолковый алгоритм.
который просто сравнивает числа и меняет местами, причём неэффективно, его даже алгоритмом трудно назвать,
это логическая задача, которая не делает реальных действий. Это то самое программирование ради программирования.
Зачем рассматривать в качестве задачи бестолковую? А сама суть сортировки это недетерминированная задача
и при этом ты говоришь про алгоритм в её ключе по отношению к структурности. Бро, ай яй яй!
Ну и да найти подопытного, который не знает сортировки, но при этом знает структурный подход, чтобы иметь
возможность сравнить - думаю невозможно. Плюс ты не сказал что это описание даст. Это демагогия чистой воды.

А описание простое: два цикла, первый влияет на второй, внутри сравнение и обмен значений.
Обмен в бейсике виден сразу по SWAP. Во всяком случае выцепить глазом сразу эту сортировку почти всегда
удастся, причём без комментариев даже. А вот попробуй выцепить её же, сделанную через GOTO добрым
десятком разных способов, т.е. у кого на что извилины горазды.

Ну и опять же подходы проверяются на крупных задачах. 10 строк - это смешно. 1000-2000 - уже что-то,
5000-10000 - очень прилично(тут уже модульность во всю), 20k-30k - это уверенный проф уровень, когда
вопросов не возникает что, где и как. Начиная от 1k уже не повыкабениваешься ассемблерами на весь код.
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,052
Записей в блоге: 7
06.10.2024, 21:51
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Компилировал как Си. Не понимает что такое inline.
Как-то вы не так собирали.
Этот код
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SetEnvironmentVariable("Path", #PB_Compiler_Home+"compilers\gcc\")
 
Compiler = RunProgram(#PB_Compiler_Home+"compilers\gcc\gcc.exe", "-O2 -fno-tree-vrp -freorder-blocks-algorithm=simple -fno-schedule-insns -fno-schedule-insns2 -fsigned-char -Wno-discarded-qualifiers -Wno-incompatible-pointer-types -Wno-overflow -Wno-int-conversion -c -o D:\PureBasic.obj D:\main.c", #PB_Compiler_Home+"compilers\gcc\", #PB_Program_Open | #PB_Program_Read)
Output$ = ""
If Compiler
  While ProgramRunning(Compiler)
    If AvailableProgramOutput(Compiler)
      Output$ + ReadProgramString(Compiler) + Chr(13)
    EndIf
  Wend
  Output$ + Chr(13) + Chr(13)
  Output$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
  
  CloseProgram(Compiler)
EndIf
MessageRequester("Output", Output$)
собирает объектник.
D:\main.c: In function 'pb_main':
D:\main.c:81:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration]
81 | printf("Hello world");
| ^~~~~~
D:\main.c:1:1: note: include '<stdio.h>' or provide a declaration of 'printf'
+++ |+#include <stdio.h>
1 | //
D:\main.c:81:2: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch]
81 | printf("Hello world");
| ^~~~~~
D:\main.c:81:2: note: include '<stdio.h>' or provide a declaration of 'printf'
Вложения
Тип файла: 7z C_obj.7z (1.8 Кб, 9 просмотров)
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
06.10.2024, 21:53
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Не могли бы вы выложить исполняемый файл?
Вот весь проект на VS2010.
Вложения
Тип файла: zip console_simple.zip (336.9 Кб, 9 просмотров)
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
07.10.2024, 14:43
Цитата Сообщение от The trick Посмотреть сообщение
проект
Спасибо. Ну как я и подозревал, то же самое: происходит вызов функций msvcrt. Ну а если без неё? Ну как бы код непереносимый.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ты хочешь на полном серьёзе сказать, что структурный вид менее понятный только из-за того, что
сортировку трудно понять?
Да причем здесь сортировка? Это просто простейший пример алгоритма. Можно взять любой не слишком простой алгоритм. Речь
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А сама суть сортировки это недетерминированная задача
и при этом ты говоришь про алгоритм в её ключе по отношению к структурности. Бро, ай яй яй!
Я говорю, что по структурному алгоритму нельзя создать вменяемое описание алгоритма. Структурную парадигму (СП) и придумали, чтобы код был самодокументируемым. Но этого не произошло. Более того, создавать новые алгоритмы в структурном стиле можно только в уме, а уж потом готовые переносить "на бумагу". А отлаживать всё это дело очень муторное занятие. А всё потому, что структурные конструкции, эти кирпичики, типа циклов, развилки и т.п. это все уже готовые идиомы, которые к самому алгоритму не относятся. Вот у нас цикл, а вот цикл в цикле. Ну и что?
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Плюс ты не сказал что это описание даст. Это демагогия чистой воды.
Зачем придумали uml диаграммы? Зачем тянутся к визуальным языкам? Да потому, что структурность не оправдывает себя. Вы посмотрите на ютуб сколько роликов о том какой вред от вложенных if/else. И вообще от вложенности, которую поощряет СП. Ну люди уже сами осознают, что отказавшись от одной лапши, пришли к более развесистой. Причем "та" лапша имела хотя бы именнованные сущности, а эта безымянна. Чтобы понять алгоритм нужно помнить порядок вложенности безымянных блоков! Во как! Может для дядечки Вирта это в порядке вещей, но для всех.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А описание простое: два цикла, первый влияет на второй, внутри сравнение и обмен значений.
Обмен в бейсике виден сразу по SWAP. Во всяком случае выцепить глазом сразу эту сортировку почти всегда
удастся, причём без комментариев даже.
Зачем? Разве не проще прокомментировать это дело: здесь идет сортировка такая то. Всё. И объяснение тут вовсе не простое." Два цикла, первый влияет на второй" - это не объяснение. Нужно еще понять, при каких условиях происходит переход из одного "цикла" в другой. Да и вообще: в настоящем алгоритме нет понятия цикла. Есть понятие "нахождение в в состоянии таком-то". У него есть свое уникальное имя. Когда мы прерываем цикл, это уже не цикл. И выпрыгиваем мы только за конец цикла, опять на безымянный код. Мы не можем прыгнуть в любую точку! СП этого не допускает! Но он допускает break. А это уже отход от любимой парадигмы! То есть создали СП и сразу её нарушили. Где тут последовательность?
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,052
Записей в блоге: 7
07.10.2024, 15:23
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ну как бы код непереносимый.
Я уже написал что msvcrt.dll присутствует на всех виндах начиная с 95 OSR2.
В лине и маке при сборке будет использована другая либа, какая доступна у них для сишного рантайма.
Так почему считаете код непереносимым?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.10.2024, 18:05
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Нужно еще понять, при каких условиях происходит переход из одного "цикла" в другой.
Нафига? Ты чё оттрассировать не сможешь, в бейсике с этим какие-то проблемы?
Тут же никто без отладчика не ходит. В т.ч. самых маленьких этому учат. Тут один я без отладчика.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Разве не проще прокомментировать это дело: здесь идет сортировка такая то.
Ты никак не поймёшь главного. Как только ты делаешь посыл GOTO(по условию естессно) - прогер,
читающий твой код вынужден скроллить(если код чуть больше 10 строчек) и бегать глазами. И вот
как только человек начинает скроллить и бегать тогда, когда ему надо анализировать код - вот тут и
начинается неспособность учесть и логику алга и "вложенность" и многое другое важное, потому что
лишние движения теряют ценные мысли.
И потеря мыслей начинается когда человек уже не может "свести концы с концами" то есть найти точку,
где уже работающее состояние начинает свою работу. Такое бывает, когда прогер начинает эксплуатировать
одно состояние в нескольких процессах для экономии кода. А он рано или поздно начинает это делать,
потому что сама идеология там так заточена. В итоге мы приходим к тому что трудно вычленить и проследить
каждый отдельный процесс, т.к. на него влияют другие процессы. Это и есть бич твоей идеологии. Но не самый
печальный, про невозможность модификации готового кода ты и так знаешь.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
нужно помнить порядок вложенности безымянных блоков!
Это у тебя оно безымянное, ты нам про цифры вещал когда-то. Все тутошние помнят.
А у нас каждый блок именован и понятно для чего он нужен. И внутри блока сразу код, никуда бегать не надо.
Структурные "перебежки" вылезают чуть позже, на более крупных кусках кода. И они последовательные,
а не рандомно по коду вида "куда воткнёшь".
Например состояния в том же CASE(switch), если человек подошёл правильно к разработке алгоритма
идут строго последовательно и по смыслу, т.е. такой код с лёгкостью раскладывается на состояния,
которые ты так любишь. И без комментариев ни структурный ни бесструктурный - читать будет тяжко.
Комментарии это часть документации, это работа программиста, её тоже надо делать качественно.
И уже не раз рассказывал как это делается.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Зачем придумали uml диаграммы? Зачем тянутся к визуальным языкам?
Это не одно и то же. uml используют бизнес аналитики(и не только), в качестве документации.
А визуальными языками типа Scratch обучают детишек. Для взрослых ничего достойного пока не придумали.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Зачем? Разве не проще прокомментировать это дело: здесь идет сортировка такая то. Всё. И объяснение тут вовсе не простое.
Вроде уже объяснил почему сортировка не подходит под критерии оценки. А вот ты не объяснил, что даст
комментирование этой "элементарной" сортировки, ни у тебя ни у меня оно ничего не даст и ничего не покажет,
будет одинаково и тут и там. И вот ты мне про ютуб вещаешь, а сам возьми и открой его посмотри сколько
визуальных объяснений сортровок, с танцующими людьми или шариками или чем-либо ещё. Что алгоритма
людям не достаточно? То то и оно...
Это логическая недетерминированная задача для которой существуют десятки алгоритмов разной эффективности
и ни одного 100% детерминированного(100% эффективного формализованного) - не существует. Поэтому человек,
хорошо изучивший эти сортировки до сих пор может сделать гибридный алгоритм, который в чём-то будет
эффективнее.
Я эту тему почти не копал, не было нужды. Но все знают, что какой-нибудь самый банальный QSort может
покрыть большую часть нужд большей части программистов планеты.
0
1406 / 864 / 93
Регистрация: 08.02.2017
Сообщений: 3,682
Записей в блоге: 2
07.10.2024, 18:14
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Для взрослых ничего достойного пока не придумали.
Авто-схемопостроитель кода, вот это было бы наверное достойно )
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,052
Записей в блоге: 7
07.10.2024, 18:31
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Но все знают, что какой-нибудь самый банальный QSort может
покрыть большую часть нужд большей части программистов планеты.
Тем более что его даже писать не нужно.
Функция qsort() присутствует в сишном рантайме и вызвать оттуда не сложно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2024, 18:31

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, память с...


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

Или воспользуйтесь поиском по форуму:
240
Ответ Создать тему
Новые блоги и статьи
сукцессия 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