Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/70: Рейтинг темы: голосов - 70, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65

Отладка кода (программы) во FreeBasic

21.02.2024, 01:11. Показов 17669. Ответов 224

Студворк — интернет-сервис помощи студентам
Уважаемые программисты. Подскажите - как производится наладка отладка (не редактирование) программы (кода) во FreeBasic.
В QB это делалось просто. В меню Debug командой toggle breakpoint метится строка до которой проверить.
После запуска идет проверка, отмечаются ошибки, проблемы.
У меня во FreeBasic этот метод не работает. Программа на метку не реагирует, действия не совершаются. Прошу помощи.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2024, 01:11
Ответы с готовыми решениями:

Компиляция программы Qbasic в Freebasic
По мере надобности компиляции одной из старых программ, написанных давным давно в Qbasic, установил Freebasic (OS Ubuntu). Пытаюсь...

Грамотная отладка программы, подмога в структуризации кода
Сразу прошу прощения, если ошибся разделом. Написал программу. Она простая. Она сжимает выбранную папку в zip и кладёт куда нужно. ...

Отладка программы в Delphi(нужно подредактировать текст чужой программы)
Взял у одногруппника похожую, на свою программу, нужно переделать под свое задание. А я сам чайник, и не могу понять, что там лишнее, а...

224
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.03.2024, 01:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Достаточно было сделать ядро с qb, а поверх его дополнительные возможности.
Так и было вначале. А потом пришли совсем другие люди и дополнительные возможности
стали фактически новым языком с отголосками старого. Это печально в части влияния на комьюнити
и исходники - но ничего не поделаешь.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
При наличии описания библиотеки, где все разложено по категориям, несложно найти нужную функцию. Вставили и тут же забыли.
Про "тут же забыли" - категорически не согласен, при работе с кодом много требуется постояно.
Но это ладно, не об этом речь. Гораздо важнее, что ты упускаешь одну деталь, постоянно лазать
в описание или в 98% случаев не лазать, а понимать по венгерщине. Колоссальная экономия времени
потому что не нужно переключать внимание постоянно.

Цитата Сообщение от markiza-inc Посмотреть сообщение
Вот GetByteFromFile() более понятна.
Тоже хотел написать про это. Но в принципе и GetFileByte(), можно понять.
Думаю locm просто максимально сократил, но чтобы хоть какой-то смысл оставался.
Ну т.е. допустим оператор PutPixel, можно написать PutPixelOnTheScreen, ну и как бы понятно почему,
хотя вариант GetByteFromFile() мне нравится больше. Это такая своеобразная балансировка
чтобы печатать поменьше, но оставаться в более менее понятном виде.

Добавлено через 2 минуты
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я говорю только о том, что совершенно недостаточно "самодокументируемых" имен, для понимания работы системы.
Разумеется. Но это сильно облегчает работу с кодом.

Добавлено через 2 минуты
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Вы можете писать как привыкли, но обязаны создать описание на человеческом языке. Без вербльюжьей нотации.
В цитаты года!

Добавлено через 10 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
при наличии грамотного описания системы на родном языке или на английском, разобраться в системе можно очень быстро.
Грамотное - сложнее написать. На английском - сложнее понять и придётся лазать уже не в документацию,
а в переводчик и ещё чаще. На родном - разумеется надо делать, осталось объяснить это людям из отрасли,
до них как-то туго доходит.
Документация вообще это отдельный разговор, это накопленные знания об исследованиях в сжатом виде,
она помогает анализировать, подмечать взаимосвязи. Есть термин наукоёмкость, трудоёмкость.
Вот это про документацию, в ней заключена цена всей той работы, что делает программист.
Если кто-то думает иначе - вырубите интернет и попробуйте без документации, вообще без любой. Тото и оно...
1
 Аватар для markiza-inc
930 / 257 / 100
Регистрация: 21.10.2012
Сообщений: 621
04.03.2024, 05:24
Еще многое зависит от того: кто и для кого пишет документацию.

Пример из жизни. Закупило предприятие оборудование фирмы Siemens, станки Sinumerik разного профиля. Немцы это оборудование устанавливали и запускали в работу. Некоторое время еще и сопровождали. Документация была на русском языке. Все как бы хорошо, но было ощущение, что чего-то не полностью описано. Обратился к немцам. Дайте ваш экземпляр посмотреть, а то наш немного запортился, надо мол восстановить. Дали свой экземпляр. А у них он более подробный оказался. В нашем экземпляре были страницы, где заполненность была 60%, иногда доходило до 30%. А у них почти все страницы полные, с разными подробностями и расшифровками. Но документация это еще не все чудеса.

У станков два языка прописаны, немцы переключали на немецкий, когда что-то делали на них, а мы на русский. Однажды, когда немец ковырялся во внутреннем ПО станка, я просто обратил внимание что менюха у них более объемная. Оказалось, что в немецкой версии ПО больше разных настроек и прибамбасов, больше параметров можно изменять и настраивать. Этим потом и пользовался, хорошо, что в институте изучал немецкий язык ... Так что документацию иногда специально ухудшают, чтобы зависимость от своей фирмы установить и деньги хапать за малейшие подробности.
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.03.2024, 10:39
Цитата Сообщение от markiza-inc Посмотреть сообщение
Так что документацию иногда специально ухудшают, чтобы зависимость от своей фирмы установить и деньги хапать за малейшие подробности.
Потому и призываю к развитию IT сектора на русском языке. Чтобы не иметь подобных зависимостей.
Немцы вообще такие люди, они всегда работают на качество. Крысить, думаю, могли по разным причинам,
может чтобы не лазили лишний раз в станок, чтобы не запороли случайно. А может конкуренции боятся.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.03.2024, 12:04
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Гораздо важнее, что ты упускаешь одну деталь, постоянно лазать
в описание или в 98% случаев не лазать, а понимать по венгерщине. Колоссальная экономия времени
потому что не нужно переключать внимание постоянно.
В 98% случаев в код вообще лазать не надо, если есть вменямый мануал. Если всё же придется залезть туда (в болото), то согласен, что венгерская нотация облегчит понимание кода. Но даже при наличии осмысленных имен, разбираться в коде это разгадывание ребусов, большей частью..
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
05.03.2024, 06:46
При хорошей документации, модули воссоздаются(переписываются) "из праха" за считанные часы.
И да коллеги. Рекомендую иметь бумажные копии своих исходников, ну тех, что особо важны.
На случай выхода из строя диска. Держать на каждом харде по копии - довольно суетливо в
плане синхронизаций, особенно если это некоторых размеров кодархив.
Да мне сейчас скажут про гитхабы и прочие "порнохабы", но я привык держать своё у себя,
а не где-то там в облаках у дяди Васи. Интернет есть не всегда, да и за безопасность
лучше отвечать лично.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
В 98% случаев в код вообще лазать не надо, если есть вменямый мануал.
Код нужно написать, а чтобы написать нужно лазать в доку. Про написание без документации
уже рассказывал. Это в общем случае. Ты про чтение пишешь, а я про создание. Это два разных
процесса.
0
 Аватар для Mikle Quits
782 / 300 / 17
Регистрация: 21.01.2023
Сообщений: 525
05.03.2024, 08:22
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Рекомендую иметь бумажные копии своих исходников, ну тех, что особо важны.
Предпочитаю раз в год-два записывать архив исходников на болванку и складывать на полку. Поиск в цифровом архиве как-то поудобнее будет, места занимает меньше, пыль не собирает. Да и переписывать код с бумажки - то ещё удовольствие.
1
Эксперт по электронике
6878 / 3301 / 340
Регистрация: 28.10.2011
Сообщений: 12,963
Записей в блоге: 7
05.03.2024, 11:44
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Рекомендую иметь бумажные копии своих исходников, ну тех, что особо важны.
Распечатывать сотни тысяч строк? И если что, опять их вводить с клавиатуры?
Лучше купить несколько дисков (HDD / DVD) для резервных копий и в облаке хранить в архиве с паролем.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Держать на каждом харде по копии - довольно суетливо в
плане синхронизаций, особенно если это некоторых размеров кодархив.
На бумаге проще?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
05.03.2024, 12:39
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Предпочитаю раз в год-два записывать архив исходников на болванку и складывать на полку.
Тоже раньше так делал. До того момента как увидел у себя нечитаемые болванки. Самое интересное что
все они были записаны на минимальной скорости, с проверкой после записи и хранились в идеальных
условиях(в темноте, просто лежали - к ним даже не прикасался). И это были CD(Verbatim), не DVD, что надёжнее.
Случай был не единичный. После этого храню архивные записи только на жёстких дисках, а особо важные
исходники на бумаге.

Цитата Сообщение от locm Посмотреть сообщение
На бумаге проще?
Проще распечатать 1 раз и убрать в стол до востребования и дай бог чтобы оно не потребовалось,
вероятность чего падает с падением качества жёстких дисков(раньше встречались 1 ошибка на 10^-16,
сейчас уже почти все 1 ошибка на 10^-14, особо наблюдательные, по идее, должны были это заметить,
это случилось за последние 10 лет, ну даже чуть больше).

Добавлено через 1 минуту
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Да и переписывать код с бумажки - то ещё удовольствие.
Если что-то крупное можно сканером на минимальном DPI(150-300) и через OCR.
0
 Аватар для Mikle Quits
782 / 300 / 17
Регистрация: 21.01.2023
Сообщений: 525
05.03.2024, 13:46
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Тоже раньше так делал. До того момента как увидел у себя нечитаемые болванки. Самое интересное что
все они были записаны на минимальной скорости, с проверкой после записи и хранились в идеальных
условиях(в темноте, просто лежали - к ним даже не прикасался). И это были CD(Verbatim), не DVD, что надёжнее.
У меня до сих пор жива самая старая архивная болванка Maxell, записана она где-то в середине 90-х. Сейчас пишу в основном на самые обычные DVD Mirex, проблем нет. А, если какая-то болванка и будет с браком - не страшно, ведь архив дописывается, а не дополняется новым томом, исходники не так много весят, чтобы архив за все годы не влез на DVD.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
06.03.2024, 05:22
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Да мне сейчас скажут про гитхабы и прочие "порнохабы"
А историю изменений как хранить? Ценность файлов не велика сама по себе, без знаний когда удалена эта строка, когда добавлена вон та строка, откуда взялась эта функция и в какой файл она перемещена.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
06.03.2024, 08:43
Цитата Сообщение от Замабувараев Посмотреть сообщение
А историю изменений как хранить?
Элементарно: в папочке по стадиям - "анализ", "разработка движка", "прототип 1", "прототип 2", "версия 1",
"версия 2", "версия 3" и т.п.. Можно в скобках дописывать дату(так часто делал), перестраховка для сохранности.

Историю изменений зачастую вообще не надо хранить. Ценны конкретные работы(не версии), а не
изменения сами по себе. Изменений может быть хоть 1000, а номер версии изменится один раз или
вообще не изменится.
Всё не упомнишь, включая состояние кода в момент изменения, он может быть нерабочий или
меняется концепт(структура, движок и т.п.). Человек со стороны, который влезет в этап изменений
может там вообще нифига не понять. Это всё уже в моменте кодер должен помнить и отрабатывать.

Поэтому данные сервисы это тупо понты, высосанные из пальца, причём дешёвейшие. Потому что
когда написал и есть что показать - обернул в zip и передал конкретному человеку, на рабочий процесс
создания ПО(на сам кодинг) оно вообще никак не влияет
, это просто факт.
Либо залил zip куда угодно, хоть на гугл диск, хоть на тот же SourceForge, если уж надо расшарить.
Все эти сервисы, т.н. "кодерские социалки", создают "видимость активности", приписывая людям
несуществующие преференции. Единственная кодерская активность, которую лично я приветствую
это выпуск полностью готового ПО, с описанием. Мало кому интересны все пертурбации внутренней кухни.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Ценность файлов не велика сама по себе, без знаний когда удалена эта строка, когда добавлена вон та строка, откуда взялась эта функция и в какой файл она перемещена.
Она невелика ни с этой информацией, ни без неё. Ценность тем больше, чем полезнее эти файлы
для конечного потребителя.
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
06.03.2024, 09:18  [ТС]
Замабувараев,

Quiet Snow, ;

Уважаемые, подскажите, как избежать в графическом окне нарушения привязки расчётных значений к значениям графического окна. Есть несоответствие видимое. Задаётся окно в вариантах и с Wiev, и с Window, cо Screen и без. Вывожу для проверки линию на середину окна, но она даже на глаз не соответствует этому. И при выводе графики он начинает смещаться в зависимости от изменения параметров этой графики. Нестабильность математического вывода беспокоит. Знаю что основная (вроде бы) причина именно в Window и Screen. Но и без них не слишком удачно. На что обратить основное внимание?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
06.03.2024, 09:23
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Элементарно: в папочке по стадиям - "анализ", "разработка движка", "прототип 1", "прототип 2", "версия 1",
"версия 2", "версия 3" и т.п.. Можно в скобках дописывать дату(так часто делал), перестраховка для сохранности.
Это уже делают системы контроля версий, такие как git и svn. Не надо выдумывать каталогов и папочек, инструменты для таких штук уже придуманы 20 лет назад.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Историю изменений зачастую вообще не надо хранить.
Становится чрезвычайно сложно синхронизировать zip‐архивы когда разработчиков больше одного.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Всё не упомнишь, включая состояние кода в момент изменения
Для этого и придумали систему контроля версий, чтобы не держать в памяти, а посмотреть историю изменений.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Поэтому данные сервисы это тупо понты, высосанные из пальца, причём дешёвейшие
Как понять кто внёс изменения ломающие программу? Недавно в компиляторе FreeBASIC обнаружили баг связанный с генерацией массивов. Как откатить изменения которые затрагивают только этот код с массивами и не затрагивают другие части? Каталоги и zip‐архивы откатят назад сразу всё, а если надо только одну строку кода? В git это делается одной командой за три секунды, очень легко; сколько часов уйдёт на поиск по каталогам с zip‐архивами — даже не представляю.

Добавлено через 3 минуты
volchv, покажите ваш код.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
06.03.2024, 10:02
Цитата Сообщение от Замабувараев Посмотреть сообщение
В git это делается одной командой за три секунды, очень легко; сколько часов уйдёт на поиск по каталогам с zip‐архивами — даже не представляю.
Похоже под термином "изменение" ты имеешь в виду что-то другое, понятное только тебе.
Я под термином изменение имею в виду любое изменение кода, в любой его стадии, переименовал
переменную - изменение, написал незаконченную строку(полез за подробностями в другую часть
кода) - тоже изменение. При работе с кодом таких изменений тысячи и смысл их хранить - нулевой.
Более того никакой гит тебе не пофиксит зависимые изменения, он просто хранит текст и историю
его изменений, а каскады зависимостей могут быть весьма обширными и сколько часов\дней\лет может
уйти на разбор зависимостей человека, который этот код не писал - вопрос риторический.
Пишу о реальных вещах, о чём пишешь ты мне неведомо. Преимуществ того про что ты говоришь
- не вижу в упор. Вижу только постоянные зависимости и геморы.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Как откатить изменения которые затрагивают только этот код с массивами и не затрагивают другие части?
Ты очень грамотно сместил контекст дискуссии, но не в ту сторону. Спрашиваешь меня о чужом коде?
Мне это не интересно, я не полезу в чужой код. Этот баг - их заслуги. Как хотят, - так пусть и ищут, балбесы.
Уточню, не говорил о багах, не говорил об изменениях в готовом коде, и явно не говорил о том, что
код всегда независимый.

Цитата Сообщение от Замабувараев Посмотреть сообщение
инструменты для таких штук уже придуманы 20 лет назад.
Инструменты для хранения кода в папочках придумали около полувека тому назад(FAT 1976 год).
Доступны любому, не требуют специальных знаний, не требуют специального ПО, не требуют доступа
в интернет. Обслуживаются одинаково на любой операционной системе.
Пример: пришёл на другое рабочее место, надо "накатывать" всё что тебе необходимо, мне накатывать
ничего не надо, вставил флешку - всё сразу есть.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Становится чрезвычайно сложно синхронизировать zip‐архивы когда разработчиков больше одного.
Когда разработчиков больше одного, они обычно в одном офисе находятся и могут использовать сетевое
хранилище. Если они далеко друг от друга - то никакие гиты им не помогут синхронизировать разработку,
они просто не смогут нормально договориться. Ну и да в таких случаях разумеется разумно работать
в модульной структуре и избегать пересечений областей компетенций до стадии сборки.

Добавлено через 3 минуты
Цитата Сообщение от volchv Посмотреть сообщение
Уважаемые, подскажите, как избежать в графическом окне нарушения привязки расчётных значений к значениям графического окна. Есть несоответствие видимое. Задаётся окно в вариантах и с Wiev, и с Window, cо Screen и без.
В деталях уже забыл как работают эти операторы, надо смотреть задачу и их описание, раньше использовал,
но ничего хорошего про них сказать не могу. Это искусственный ремаппинг координат, чего почти всегда
не хватает для полноценного перемещения и масштабирования.
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
06.03.2024, 10:10  [ТС]
Замабувараев,

PureBasic
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
46
47
48
49
50
51
52
53
54
55
56
57
   Const PI As Double = 3.1415926535897932   
   Dim g AS STRING, driver AS String:   Dim AS String  sap
   Dim as Integer scr, scrx, scry, scrym, n, w, t, k, ps, fz, fy, fy1, fx, mpr, prm, fz1, Tr 
   Dim as Integer  a1, a2, a3, ka, kb, kc, kd, pgx, pgy, gy1, gy2, gy3, gx, gy, gym, pgya, gya
   Dim As Double  r, r1, r2, r3, rr, Zr, Av3, Av2, Av1, Av, m, a, Lz, Ly, Lx,  Ly1, Zn
   Dim As Double  x, y, z, xx, yy, zz, z1, z2, y1, y2, x1, x2, ya, xa, y12, x12
'=========================================================================
    Screen 20: scrx=1024: scry=768:    a3=37: a1=a3: a2=46
  ' Screen 21: scrx=1280: scry=1024  : a3=44: a1=a3: a2=53
    scrym=scry/2  
'-------------------------------------------------------------------------------------------------------
   Window (1,127)-(scrx-15, scry-350)
   View (1, 127)-(scrx-15, scry-350),,10
'-----------------------------------------------------------------------------------------------
       Tr =   1806                           
'...........................  ....................................
         a3=44: a1=a3: a2=53:                    
   '      a3=60: a1=a3: a2=64:                    
        ka=1: kb=ka+6: kc=ka+12: kd=ka+28    
'................................  .......................................
         k = 3 :  n = 12 * k                      
         m = 2 * PI / n                       
 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
       For fz = 0 To n: For fy = 0 To n: fy1=fy1-1:  For fx = 0 To n:   For t = 0 TO n
'-------------------------------------------------------------------- 
        rr= fz+fy+fx+t
'-------------------------------------------------------------------       
      r= Sqr(rr): r = Fix(r*1000000): r = r/1000000: Zr=r            
'========================================================================
       Next:  Av = Zr/n:                    
'=================================================================== graf AV =   
          px = gx:
           gx = gx + 10 ' scrx-15 ? gx;
           if gx < scrx Then goto krdYa
         px = 1:  gx = 1: Cls       
krdYa: '..........................................................................
          py=gy                                            ' gy = Fix(scrym * Av) *100'/6)  
          gy =  Av *70+100'  ? Zr;  ? Av;  ? gy;
        Line (px,py)-(gx,gy),3               ': py = gy 
 'Sleep 10
          Line (1,238)-(scrx-15,238),13      
'----------------------------------------------------------------------------------------------
      View Print a1 TO a2: '? "                                                 "
                           '? "                                                 "
       View PRINT a1 TO a2 
      ? TAB(ka); fx;Tab(ka+4); fy; Tab(ka+8); fz; Tab(ka+12); Av; Tab(ka+32);gy          
       a1 = a1 + 1: If a1 <= a2 then goto paus Else a1 = a3  
paus:'---------------------------------------------------------------------------------------
   For hh = 1 To Tr: For h = 1 To Tr: e= Sin(0.123456789): Next: Next
'---------------------------------------------------------------------------------------------
    g = InKey: IF g = "" THEN GoTo met11:
    For ps = 0 TO 100
    Sleep 500: g = InKey: IF g = "" THEN goto met2 else goto met3
met2: Next ps
met3: Sleep 300: g = InKey: IF g = "" THEN goto met11 else end
met11:'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL   
   Zr = 0 :  Sleep : Next: Next: Next
' основная математика убрана без нарушения работы программы и графики
'подписи шагов программы на русском убраны,- они у меня в блокноте и здесь искажаются другим шрифтом и не читаются.
'если нужно, я их прямо здесь подпишу
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
06.03.2024, 10:36
volchv, отдельно проверил работу каждого оператора? Я тут зашёл в справку, освежил память.

VIEW - усекает область(Clipping). Не даёт рисовать вне указанной области.
WINDOW - преобразование координат.

Путём нехитрого теста с обычной линией выясняется, что сначала отрабатывает преобразование
координат, а потом срабатывает отсечение. Но отсечение работает в не преобразованных координатах,
поэтому если окно меняется - его надо высчитывать руками.

UPD: Совсем забыл написать - Window работает "внутри" отсечённого VIEW-ом окна.

Это всё, что надо знать об этих двух операторах.
1
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
06.03.2024, 10:47  [ТС]
Quiet Snow,
Цитата Сообщение от Quiet Snow Посмотреть сообщение
В деталях уже забыл как работают эти операторы, надо смотреть задачу и их описание, раньше использовал,
но ничего хорошего про них сказать не могу. Это искусственный ремаппинг координат, чего почти всегда
не хватает для полноценного перемещения и масштабирования.
Да, я тоже обиделся на них :-)). как то не по человечески :-)

Добавлено через 5 минут
Quiet Snow,
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Путём нехитрого теста с обычной линией выясняется, что сначала отрабатывает преобразование
координат, а потом срабатывает отсечение. Но отсечение работает в не преобразованных координатах,
поэтому если окно меняется - его надо высчитывать руками.
Это всё, что надо знать об этих двух операторах.
Ну примерно это я и спрашивал, на что обратить основное внимание, акценты. Тесты с операторами окна проводил, и отдельно во всех комбинациях. В основном определял границы окна и то, как строится график (вверх, вниз)
Теперь попробую с координатами помудрить. Спасибо!

Добавлено через 2 минуты
Quiet Snow,
Цитата Сообщение от Quiet Snow Посмотреть сообщение
UPD: Совсем забыл написать - Window работает "внутри" отсечённого VIEW-ом окна.
Понял, спасибо.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
06.03.2024, 11:00
volchv, высчитывай все координаты руками без WINDOW. Используй только VIEW SCREEN для клиппинга.
И геморой сразу уйдёт. Два этих оператора вместе - это ядерная смесь которая тебя путает.
1
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
06.03.2024, 11:34  [ТС]
Quiet Snow,
Цитата Сообщение от Quiet Snow Посмотреть сообщение
volchv, высчитывай все координаты руками без WINDOW. Используй только VIEW SCREEN для клиппинга.
И геморой сразу уйдёт. Два этих оператора вместе - это ядерная смесь которая тебя путает.
У меня тоже было ощущение, что что то лишнее. Если я правильно понял. Т.е - программная синусоида вылезет нормально, нормально впишется в окно, не будет гулять целиком, не будет меняться амплитуда, не установленная математикой, Все точки выводимые буду прописываться в положенные им места окна? И т. д. Поизучаю, поэкспериментирую. Проблема то проявилась именно в FB. А смесь то в трёх компонентах. Еще Screen.
0
Эксперт по электронике
6878 / 3301 / 340
Регистрация: 28.10.2011
Сообщений: 12,963
Записей в блоге: 7
06.03.2024, 13:33
Цитата Сообщение от volchv Посмотреть сообщение
подписи шагов программы на русском убраны,- они у меня в блокноте и здесь искажаются другим шрифтом и не читаются.
Потому что нужно копировать с включенной русской раскладкой клавиатуры.

Цитата Сообщение от volchv Посмотреть сообщение
QBasic/QuickBASIC
1
FOR fz = 0 TO n: FOR fy = 0 TO n: fy1=fy1-1: FOR fx = 0 TO n:   FOR t = 0 TO n
Цитата Сообщение от volchv Посмотреть сообщение
QBasic/QuickBASIC
1
2
3
SLEEP 500: g = InKey: IF g = "" THEN GOTO met2 ELSE GOTO met3
met2: NEXT ps
met3: SLEEP 300: g = InKey: IF g = "" THEN GOTO met11 ELSE END
Лучше так не делать. Читаемость кода снижается.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2024, 13:33
Помогаю со студенческими работами здесь

Отладка Кода
{ Console.WriteLine(&quot;Привет пользователь. Как тебя зовут?&quot;); string name = Console.ReadLine(); ...

Отладка кода
Я на форуме давно... и вот стало мне жутко интересно, кто как код отлаживает... потому 99% начинающих вообще никогда не слышали про...

Отладка кода
Олимпиадная задача : вводятся N строк описания товаров (стоимость, время завоза и время вывоза), N строк описания запросов (время захода...

Отладка кода
программа для удаления повторяющихся элементов в строке flag::Int-&gt;-&gt;Int flag n=FALSE flag n(x:xs) = if x ==n then TRUE ...

Отладка кода
Помогите пожалуйста отладить код. Собрал вот такое #include&lt;iostream&gt; int Check(int a) { int b; for(b = a * a; a &amp;&amp;...


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

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
Модель здравоохранения 12. добавление болезней через ресурпул, как аварии
anaschu 22.05.2026
Болезни — это ключевая часть нашей модели. Нам нужно, чтобы работник периодически уходил на больничный, его задание при этом зависало, а после выздоровления работа возобновлялась. Реализуем это двумя. . .
Модель здравоохранения 11. Создаём классы Задание и Работник
anaschu 22.05.2026
В AnyLogic каждая заявка и каждый ресурс — это объект определённого класса. Нам нужно создать два класса: Задание (заявка) и Работник (ресурс). Класс Задание В дереве проекта нажимаем правой. . .
Модель здравоохранения 10. Новая модель, смотрим, как добавлять логические блоки, и что писать внутри
anaschu 22.05.2026
Открываем AnyLogic, создаём новый проект. В дереве проекта появляется класс Main — это главный агент, в котором будет жить вся наша логика. Палитра блоков Слева находится палитра. Нас интересует. . .
модель ЗдравоСохранения 9. Новая модель, разбираемся, как ее создавать
anaschu 22.05.2026
В этой серии постов мы построим модель небольшого рабочего коллектива. Сотрудники получают задания, выполняют их, иногда болеют — и мы хотим посчитать, сколько это стоит компании. Метод. . .
[golang] Linked list
alhaos 22.05.2026
Связный список / Linked list Связный список структура данных позволяющая хранить список значений, в отличии от массива в памяти хранится не сплошным куском, а отдельными частями которые ссылаются. . .
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru