Форум программистов, компьютерный форум, киберфорум
Hrethgir
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Логика как основной иснтрумент создания структурных алгоритмов.

Запись от Hrethgir размещена 04.04.2023 в 21:50
Показов 1288 Комментарии 1

Краткая справка про что это:
[QUOTE]Функциональный-вызванный функционированием чего-н., зависящий от деятельности, а не от структуры, строения чего-н.[/QUOTE]



Собственно почему так называется тема - потому что считают что знания математики как-то помогают алгоритмизации. Не спорю, но у каждого свой образ и методика мышления, и следуя своим правилам прибегаю к математике только тогда - когда вижу что иного выхода нет абсолютно ни какого, и своего решения на задачу выдвинуть не могу.

Итак - заметил артефакты при задании длины таблицы большей чем ширины.
И всё понятно - ведь проверка условия тут никогда не проводилась так, как цикл заканчивался (условно имя части к которой принадлежит код - ПОДДОН)
[PASCAL] Edge2:
//трассировку начальной ячейки каждого шага последней обрабатываемой строки кроме правого столбца
Dec(steps1);
TracerY := y - steps1;
TracerX := 0;
if TracerY < 0 then
begin
TracerY := 0;
TracerX := x - (stepFrequent * y + znak * trunc(y / (stepsBig+1))) + 1;
end;
p := @p1;
goto Edge4;[/PASCAL]
.
И вот тут я уже было пожалел что убрал метки [B][I]altHead[/I][/B] и прыжок по ним перед моторным (самым внутренним) циклом , так как
дикремент [PASCAL] Dec(steps);
until x < 0;[/PASCAL]
производится теперь перед проверкой условия определющего частый или редкий шаг сейчас будет осуществляться,
но не беда - убедившись что если угол равен 45 градусов, то короткий шаг не равен нулю, а тоже равен пикселу, я подтвердил то, что ошибки не будет, если ниже мотора (ПОДДОН) вместо кода выше я сделаю нечто вроде этого
[PASCAL] Edge2:
//трассировку начальной ячейки каждого шага последней обрабатываемой строки кроме правого столбца
Dec(steps1);
TracerY := y - steps1;
TracerX := 0;
if TracerY < 0 then
begin
if steps = 1 then
begin
TracerX := x - (stepFrequent * y + znak *trunc(y / (stepsBig+1)))+1;//топтался,топтался - на месте остался
end
else
begin
TracerX := x - (stepFrequent * y + znak * trunc((y) / (stepsBig+1)))+1;//топтался,топтался - на месте остался
end;
TracerY := 0;
end;
p := @p1;
goto Edge4; [/PASCAL]
НО это всё ещё выдаёт не правильную трассировку

практически выпотрошив теперь (после замены лишней ассемблерной вставки) оглавляющую мотор проверку условия выглядящую так
[PASCAL] if steps = 0 then
begin
Biger := x - stepRare+1;
steps := stepsBig+1;
end
else
begin
Biger := x - stepFrequent + 1;
end;[/PASCAL]

и следующую в в начале цикла после дикримента [B][I]steps[/I][/B] в его конце, заменив[B][I] if steps = 0[/I][/B] на [B][I] if steps = 1[/I][/B].
Почему я начал делать такие записи? Потому что находятся индивиды, которые при непонимании работающего кода называют его абсолютным бредом, не на этом форуме.
[B][I]Поэтому чтобы в будущем меня не обвинили в контактах с внеземными цивилизациями я вынужден описывать свою логику при создании каких-то алгоритмов для своих боле-менее глобальных проектов.[/I][/B]
В целом планируется "двигатель" генератора карт трассировок в таком образе теперь, с изменённым "поддоном", и теперь приступлю к выводу необходимых для этого формул.
[SPOILER][PASCAL] repeat
if steps = 0 then
begin
Biger := x - stepRare+1;
steps := stepsBig+1;
end
else
begin
Biger := x - stepFrequent + 1;
end;
if Biger < 0 then Biger := 0;
repeat
{%REGION 'Engine'}
xf := x + 1;
//если раскомментироваnm строки После jmp p то начнётся вывод данных в таблицу
asm //////////////////////////////
JMP p
end;
p1:
StringGrid1.Cells[xf, yf] :=
IntToStr(TracerX) + ',' + IntToStr(TracerY) + ',' + '1';
//запись правого столбца
p := @p3;
goto p4;
p2:
StringGrid1.Cells[xf, yf] := IntToStr(xf) + ',' + IntToStr(yf) + ',' + '0';
//автоматическое забивание координат в местах скоса трассы
p := @p3;
goto p4;
p3:
StringGrid1.Cells[xf, yf] := IntToStr(xf) + ',' + IntToStr(y) + ',' + '0';
//автоматическое забивание координат трассы на прямых участках
p4:
Dec(x);
{%ENDREGION}
until x < Biger;
asm
JMP Edge
end;
Edge1:
//подсчёт шагов в первой строке - других расчётов для первой строки не требуется и знание этого значения нужно для последней строки
Inc(steps1);
goto Edge3;
Edge2:
//трассировку начальной ячейки каждого шага последней обрабатываемой строки кроме правого столбца
Dec(steps1);
TracerY := y - steps1;
TracerX := 0;
if y < 1 then
begin
if steps = 1 then в таблице частый шаг над частым, редкий над редким.
begin
TracerX := x - (stepFrequent * y + znak *trunc(y / (stepsBig+1)));
end
else
begin
Переход к шагу с учётом типа шага и рсстояния по оси y
end;

end;
p := @p1;
goto Edge4;
Edge3:
p := @p2;
Edge4:
Dec(steps);
until x < 0; [/PASCAL][/SPOILER]

В чём преимущество структуры перед функцией? В структуре можно сделать логические привязки, построения, улучшающие её работу, а в функции - нет, так как при этом изменится функционал. Именно поэтому не стоит сразу погружаться в изучении конкретной философии программирования, так как не известно что будет лучше при случайной конкретной задаче, а нужно сразу начинать осваивать алгоритмизацию, а не философию.

P.S;
имхо - хотя я всё роавно думаю, что даже при наличии документации к коду chatgpt - будет потенциально "втыкать", так как у него нет никакого опыта о физической реальности, а логика связана не абстрактным или дискретным пространством.

Над формулами для нижней строки надо серьёзно подумать.
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=8008&stc=1&d=1680722091[/IMG]
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot from 2023-04-05 23-39-42.png
Просмотров: 196
Размер:	49.7 Кб
ID:	8009  
Изображения
Тип файла: jpg Screenshot from 2023-04-05 22-14-26.jpg (64.1 Кб, 253 просмотров)
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Завтра после работы попробую потестировать формулу из этого кода, тут строка номер 5 [PASCAL]Edge2:
    //трассировку начальной ячейки каждого шага последней обрабатываемой строки кроме правого столбца
    Dec(steps1);
    if RazmerX > RazmerY then begin
    TracerX := x - (stepFrequent * y - steps + znak *trunc((y+steps) / (stepsBig+1)))+1;
    end else begin
    TracerY := y - steps1;
    TracerX := 0;
    end;

    p := @p1;
    goto Edge4;[/PASCAL]
    Запись от Hrethgir размещена 07.04.2023 в 22:57 Hrethgir вне форума
 
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru