|
0 / 0 / 0
Регистрация: 09.05.2022
Сообщений: 4
|
|
Вычислить значение функции09.05.2022, 13:04. Показов 9975. Ответов 133
Приветсвую , прошу помощи в написании кода.
Задача несложная , математическая. На языке QBASIC. Вычислить значения функции Y = x2 - 5 для x [-2; 26], шаг h = 2. Если среди значений Y есть число, равное a, то вычислить сумму всех значений Y, в противном случае вывести на печать значение "111" (Вычисления выполнять для a = 95).
0
|
|
| 09.05.2022, 13:04 | |
|
Ответы с готовыми решениями:
133
|
|
COM‐пропагандист
|
|||
| 18.05.2022, 07:38 | |||
|
Недостатки: 1. Изменился только один включаемый файл — но компилятор перекомпилирует весь проект, это медленнее, чем при раздельной компиляции. 2. Необходимо включать файлы в правильном порядке и вручную разруливать зависимости. Вполне может быть, что файл Foo.bas ссылается на сущности из файла Bar.bas, а Bar.bas ссылается на сущности из Foo.bas. Это решается введением общих интерфейсов, но ООП здесь принято ненавидеть и стремиться уничтожать. 3. Чехарда с предварительным объявлением функций. Где‐то будет требоваться Declare, потому что тело функции ниже по коду, а где‐то он будет мешать, потому что выскочит «Complier error — Duplicated Definition». 4. Конфликты имён переменных уровня модуля, так как теперь такие переменные все висят в одном модуле и из локальных превращаются в глобальные. 5. То же самое про функции. Например, функция GetBytes из модуля MemoryBuffer будет конфликтовать с функцией GetBytes из модуля FileBuffer. 6. Затрудено независимое тестирование отдельных модулей и классов. 7. Отладка усложнена, потому что не виден настоящий номер строки кода. Добавлено через 39 минут Не по теме:
Классы: ArrayStringWriter.bas - записывает строки и числа в буфер AsyncResult.bas - результат асинхронной операции, почти футура ClientRequest.bas - заголовки запроса клиента ClientUri.bas — URI из запроса CreateInstance.bas — фабрика классов FileBuffer.bas — отображённый в память файл, который нужно отправить клиенту HeapBSTR.bas — строка по типу BSTR в приватной куче памяти HeapMemoryAllocator.bas — менеджер памяти на приватной куче HttpGetProcessor.bas — обработчик запросов типа GET и HEAD HttpProcessorCollection.bas — коллекция обработчиков запроса HttpReader.bas — читатель клиентского запроса HttpWriter.bas — записыватель серверного ответа клиенту MemoryBuffer.bas — байты в памяти, который нужно отправлять клиенту NetworkStream.bas — сокетный поток, откуда идёт чтение и запись клиентских и серверных данных ReadRequestAsyncTask.bas — асинхронная задача чтения клиентского запроса, сервер запускает задачу чтения, которая обрабатывается пулом потоков ServerResponse.bas — заголовки ответа клиенту ThreadPool.bas — пул потоков, обрабатывает асинхронные задачи WebServer.bas — принимает соединения с клиента и ставит задачи в очередь на исполнение пулу потоков WebServerIniConfiguration.bas — чтение конфигурации WebSite.bas — вебсайт WebSiteCollection.bas — коллекция сайтов WriteErrorAsyncTask.bas — асинхронная задача отправки ошибочного ответа клиенту WriteResponseAsyncTask.bas — асинхронная задача отправки ответа обработчика HTTP‐запроса клиенту Модули Guids.bas — CLSID и IID классов и интерфейсов ConsoleMain.bas — главная функция в консольном варианте EntryPoint.bas — стартовая точка программы Http.bas — константы HTTP Logger.bas — записывает логи Mime.bas — типы MIME Network.bas — сокетные функции‐обёртки SafeHandle.bas — инкапсулятор винапишного файлового HANDLE, чтобы деструктор закрывал этот HANDLE автоматически TestMain.bas — главная функция для тестирования модулей WebUtils.bas — некоторые общие функции WindowsServiceMain.bas — главная функция для службы windows Это новая версия сервера на асинхронных сокетах, она ещё не доделана. Сейчас работает старая версия, но там подход «каждому клиенту отдельный поток».
1
|
|||
|
Кормпилятор
|
||||||||
| 18.05.2022, 08:20 | ||||||||
|
компиляции. 2) ONCE - уберегает от ручного разруливания. Ещё есть #ifndef тоже классная штука. Но я предпочитаю не полагаться на случай и вести ревизию всех имён функций и процедур. В QB кстати делалось иначе - сначала подключались файлы с константами и декларациями(.dec), потом с массивами(.bi) и только потом с кодом (.bas) Порядок модулей важен не потому что отсутствует независимость, а потому что такова банально архитектура приложения, т.е. это обусловлено декомпозицией задач. Грубо говоря тебе всё равно об иерархии думать(из какого модуля какую функцию вызывать) и сопутствующая расстановка модулей никоим образом не мешает процессу. 3) Те же грабли, тестирование зависимых кусков кода. Произрастают от попытки реализации, чтобы побыстрее что-то посмотреть, в основном у нетерпеливых. Кто не может спокойно кодить и разрабатывать архитектуру небольшими кусочками, не пытаясь постоянно тестировать её на более собранном плане, который ещё не готов. 4) Ни разу не испытывал конфликты даже при массовом использовании глобалок, но в данном случае помогает NAMESPACE и массовое заворачивание функционала в процедуры\функции. 5) 6) проработана заранее - нет вообще никаких проблем. 7) Но вообще нормальный отладчик должен показывать и модуль(файл) и номер строки. Добавлено через 16 минут и разбить остальное на сферы влияния, 3-4. Всё что работает с сетевыми функциями - в одно место, всё что работает с данными и их форматами - в другое место и т.п. Слишком много сфер влияния, тебе тяжело обслуживать этот код, рано или поздно ты просто забьёшь его обслуживать, т.к. слишком сложно из-за как раз подобной стратегии декомпозиции. Например явная мелочёвка HeapBSTR.bas, WebServerIniConfiguration.bas и наверное там ещё подобного хватает. Добавлено через 8 минут Мне просто не совсем понятно как это вообще тестировать. Есть какие-то сервисы специальные?
1
|
||||||||
|
COM‐пропагандист
|
|||||
| 18.05.2022, 08:22 | |||||
|
Но в настоящих циклах разработки с нуля никто не собирает. Мы лишь вносим изменения в пару строк в файле и собираем только их. А как следовало бы решить проблему «чтение → обработка → отправка → снова чтение → …» без ссылки друг на друга двух задач? Но здесь дело не в том, чтобы писать без ошибок, тогда и отладка не нужна. Исходный код не показывает состояние системы в конкретный момент времени, а отладчик показывает.
1
|
|||||
|
Кормпилятор
|
|||
| 18.05.2022, 08:50 | |||
|
одной обособленной подзадачи, очевидно, не смогу ответить что надо сделать конкретно тут. Все советы которые могу дать - только глобального характера. Более того асинхронные операции означают наличие коллбеков(высокоуровневых аналогов прерываний), построение модели данных при этом идет следующим образом - коллбеки лежат функциями и сгружают данные последовательно, при этом должна быть обеспечена блокировка вызова остальных коллбеков работающих с данными(в 1 момент времени выполняется только один). Далее должен быть движок(конвеер), который занимается обработкой всех полученных данных и формировкой отправляемых. Если нам важен отклик - то можно использовать таймер с большой частотой, если не особо важен(упор на кол-во запросов) - можно использовать поток со sleep-ом. Коллбеки в этом случае должны фиксировать кол-во полученных и отправленных данных, конвеер должен проверять эти значения и действовать соответствующим целевой задаче образом. И да любые попытки вызвать из коллбеков сразу конвеер - это жопа, даже если есть способы сделать нормальную синхронизацию. Всё это очень грубо и всё равно без знания конкретной предметной области не даёт ничего. Добавлено через 3 минуты Имхо - логирование тут самая эффективная методика проверки состояния.
1
|
|||
|
COM‐пропагандист
|
|||||||
| 18.05.2022, 10:22 | |||||||
|
Вебсервер принимает соединение, создаёт класс NetworkStream (унаследованный от IBaseStream) для чтения‐записи данных и ставит задачу пулу потоков в обработку. Что происходит дальше — это уже WebServer волновать не должно. HttpReader читает клиентский запрос, но не непосредственно из сокета, а дёргает интерфейс IBaseStream. Казалось бы, почему не читать прямо из сокета? Всё будет хорошо, когда у нас только сокет. А когда надо читать зашифрованный поток типа SSL или TLS, тогда придётся делать Select Case от флага как правильно читать и какие функции чтения вызывать: сокетные или SLL. А так HttpReader просто дёргает общий интерфейс IBaseStream, как оно там реализовано — его волновать не должно. Когда данные с клиента прочитаны, ClientRequest разбирает байты запроса по полочкам, формирует массив клиентских заголовков, проверяет на синтаксическую корректность. Когда ClientRequest справился с парсингом заголовков — задача чтения запроса завершена. Настало время задачи формирования ответа клиенту. Создаётся задача записи ответа клиенту, а задача чтения больше не нужна и уничтожается. Ответ клиенту состоит из заголовков и тела. Тело ответа может быть в файле, может формироваться динамически или приходить из другой сети. Это всё задачу не волнует, задача лишь дёргает общий интерфейс IBuffer, который умеет выдавать порцию данных по запросу. Задача записи берёт эту порцию данных и отправляет клиенту, но не непосредственно в сокет, а тоже через интерфейс IBaseStream, под которым может скрываться обычный соект, а может и SSL или TLS. Пул потоков вообще не знает что за задачи он выполняет, какие там байты пишутся и читаются, откуда они берутся и куда уходют. Он просто обрабатывает задачи, как оно реализовано — на его работу это не влияет. Потому что пуол потоков только дёргает общий интерфейс IAsyncTask, от которого унаследованы все задачи. Насчёт WebServerIniConfiguration — это конкретная реализация класса, который читает конфигурацию сервера формате INI‐файлов. Потому что чтение конфиругации — это не задача вебсервера, эти функции вынесены в отдельный класс, конфигурацию можно и через командную строку получать, вебсервер это волновать не должно.
1
|
|||||||
|
Кормпилятор
|
||
| 18.05.2022, 11:06 | ||
|
Это я про высоконагруженное как раз. Добавлено через 5 минут Замабувараев, ты пытаешься мне объяснить "на пальцах" то, что нужно вдумчиво и кропотливо изучать не один месяц и с кучей документации в зубах. Я это всё равно так с ходу не распедрю. Да и не хочу себе бошку забивать, это не моя задача.
0
|
||
|
|
||||||
| 18.05.2022, 12:42 | ||||||
|
Да и какая разница будет собран проект за секунду или за 0.98 секунд?
0
|
||||||
|
COM‐пропагандист
|
|||||
| 18.05.2022, 13:36 | |||||
|
1
|
|||||
|
|
||||
| 18.05.2022, 14:35 | ||||
|
Много у вас проектов с десятками тысяч строк кода? Раздельная компиляция имеет много недостатков о некоторых из них вы написали.
1
|
||||
|
COM‐пропагандист
|
|||||
| 18.05.2022, 19:14 | |||||
|
Есть в заголовочных виндовых файлах несколько интринсиков.
0
|
|||||
|
COM‐пропагандист
|
|
| 18.05.2022, 21:05 | |
|
0
|
|
|
|
|
| 18.05.2022, 21:13 | |
|
Дело не в компиляторе, а в антивирусе, который проверяет файлы на наличие вредоносного кода. Из-за этого антивирус увеличивает время компиляции, т. к. блокирует доступ к файлу пока не завершится проверка. Причем время проверки может сильно отличаться. Обычно при обнаружении угрозы (ложноположительный результат) время компиляции (точнее одного из его этапов - линковки) особенно длительное и может достигать нескольких секунд.
1
|
|
|
Кормпилятор
|
||
| 19.05.2022, 06:20 | ||
|
Помню когда использовал антивирус(сейчас без него) меня это адски напрягало. "Зависалити" секунд на 30 просто так, когда прога компилилась в клик. И не отменить, просто всё повисает нахер. Да это был касперский KIS.
0
|
||
| 19.05.2022, 06:20 | |
|
Вычислить значение функции
Вычислить значение функции Вычислить значение функции
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
По ссылке 403. Не очень информативно такую ссылку постить.
Запись от Usaga размещена Сегодня в 06:46 . . .
|
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|