!
Сообщение от: Anton
Автор курса не подготовил (или я не нашёл, хотя искал) материалы, есть только видео. Я попросил DeepSeek обработать субтитры и сделать из них статью.
Глава 7. Примеры программ на YaBasic: база данных транзисторов и квинела
В этом видео автор показывает, какие серьёзные программы можно создавать на YaBasic, и объясняет некоторые приёмы программирования.
Здесь у нас центр всей программы. Внешняя программа в наших системах программирования… Вот здесь у нас Basic с номерами строк и кучей операторов `GOTO` или `GOSUB`, что почти одно и то же: «перейди на строку 1580, выполни что-то и вернись». А `GOTO` — это переход без возврата, например, на строку 1540, и дальше неизвестно, куда он приведёт. Такой код очень трудно отслеживать даже его создателю. Мы не будем использовать такой стиль. Наш Basic — не в стиле Visual Basic, не объектно-ориентированный, он ближе к старым версиям, но всё же современный. Если зайти на страницу YaBasic, видно, что последняя версия вышла всего три-четыре месяца назад — язык живой. В руководстве — огромное количество команд: работа с числами, преобразования, обработка файлов, структуры управления, условия, тригонометрия, логика, работа со строками, операции с файлами и принтерами — всё есть.
Так что YaBasic на несколько ступеней выше той «халтуры», которую мы только что видели.
Посмотрим на внешний вид программ на этом языке. Одна из моих последних программ — база данных транзисторов.
Запускаем программу. Вот панель управления. Как видите, в каждой строке выводится транзистор. Транзисторы ficticios, но это не важно: я проверял, как язык справляется почти с 8000 записей. Можно листать полчаса от AAA до FFF, а это около семи тысяч семисот с чем-то записей. Можно перейти сразу, нажав Ctrl+I (или как там было) и введя код.
Можно сортировать по трём параметрам: по коду, по максимальному напряжению коллектор-эмиттер и по максимальному току коллектора. Сейчас сортировка по коду, но я нажимаю Tab — и он сортирует по напряжению. Смотрите, как быстро: меньше секунды. Начинается с 21, потом выше, выше, до 1500, и снова сначала. Если я введу, например, 600, то поиск выполняется мгновенно — вот записи с напряжением 600 вольт.
Теперь сортируем по максимальному току. Здесь значения около 43, 6.1, 0.43 ампера, максимум почти 1000 ампер. Введу 430 — контекст уже другой, это амперы, и сразу находятся первые записи с таким значением. Поиск очень быстрый.
Возвращаемся к сортировке по коду. Вводим, например, "CA..." — и мгновенно находится нужный код, как если бы это было имя или фамилия. И это при почти 8000 записей.
Теперь другая, более свежая программа — для футбольных ставок (квинела). Вот её код. Идём в конец — там основная часть: панель управления. Всегда должна быть инициализация. Программа открывает файл со ставками, читает записи и выводит их на экран. Затем цикл повторяется, пока мы не захотим выйти. В зависимости от нажатой клавиши выполняется то или иное действие.
Запустим программу. Выйдем из базы транзисторов и зайдём в квинелу. Структура и внешний вид похожи, только вместо транзисторов — ставки.
Посмотрим, какие здесь есть опции. Нажмём F1 — появится помощь по текущему экрану. Можно написать целый мануал, и не нужны бумажки: всё встроено в программу.
Добавим ставку. Нажимаем F7 — появляется пустая форма: дата, номер тура, матчи, цена ставки (например, 0.75 евро), прогнозы. Заполняем, нажимаем Enter — ставка сохраняется. Можно её потом удалить (F9) с подтверждением.
Есть функция разработки комбинаций (F2 или что-то подобное). Здесь показаны шесть вариантов, но их может быть 600 или 6000 в зависимости от количества комбинаций. В этой ставке сильная редукция — она нетипичная. У меня в «пенье» (клубе) есть такие экспериментальные ставки.
Также есть «эскрутиньо» (проверка результатов) — F10. Программа проверяет все ставки и показывает статистику выигрышей (это ficticio, естественно). Можно выводить на печать.
Ещё есть условия (F9?) — можно задать условия для удешевления ставки, не сильно уменьшая вероятность выигрыша. Например, исключить колонки с 12 единицами подряд — это «мусорные» колонки. Программа использует теорию распределения Гаусса для оптимизации.
F3 — вывод в текстовый файл: можно сгенерировать файл для валидации ставок, чтобы не писать 28 болетов вручную. F8 — сделать резюме (лист для партнёров и публикации в Twitter).
Есть контекстная помощь: если нажать F1 на конкретном поле, помощь будет относиться именно к нему.
Ещё одна интересная особенность — многооконность: когда открывается новое окно (например, калькулятор по F12), предыдущие окна не стираются. При закрытии калькулятора под ним снова видно то, что было. Это реализовано с помощью продвинутых техник программирования, которые не являются привилегией только «продвинутых» языков — всё сделано на YaBasic.
Кнопки: когда выбираешь опцию (Tab или стрелками) и нажимаешь Enter, кнопка визуально «нажимается». Это не только красиво, но и даёт пользователю уверенность, что команда выполнена.
Цвета: у каждого типа экрана своя цветовая схема, в том числе в строке состояния.
Проверка ввода: если в поле, где ожидается 'X' или '2', ввести 'H', программа не примет и вернёт курсор к ошибочному полю (или строке). Всё это делает программу удобной.
Теперь посмотрим на код. Вверху — процедура калькулятора. Ниже — внутренности калькулятора. Всё написано на чистом YaBasic, без внешних библиотек.
Ещё ниже — процедуры поиска, удаления записи (с подтверждением), модификации. Выше — процедура добавления записи: она синтезирована, потом разбивается на более мелкие подпрограммы.
Особый интерес представляет большая матрица-макроопределение, где для каждого поля заданы: координаты на экране, длина, тип (целое/вещественное, десятичные знаки), длина отображения, описание. Это позволяет легко управлять вводом и перемещением по полям: например, если поле длинное, можно показывать только часть, а остальное прокручивать. Благодаря этой макро-таблице реализовано удобное перемещение курсора между полями (влево — в конец предыдущего поля, вверх — на предыдущее поле и т.д.) без ошибок выхода за границы.
Также есть мощная обработка строк: процедура «ввода» принимает один символ, определяет его тип (управляющий, цифра, функциональная клавиша) и решает, что делать, учитывая, что поля имеют начало и конец, и при достижении последнего поля переход идёт на первое. Всё это хорошо отлажено.
Как видите, если делать всё правильно, на Basic можно создавать программы, которые никто не отличит от написанных на других языках.
В следующем видео мы рассмотрим случайные числа — это очень увлекательная и полезная тема. До встречи!
---
*Примечание: текст является расшифровкой видеоурока, поэтому в нём сохранены особенности устной речи автора. Для удобства чтения он разбит на абзацы и снабжён подзаголовками.*