Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram, группа в ВКонтакте

Авторский курс программирования на yabasic от @Terrazocultor

Подробный курс по программированию для начинающих программистов и просто любопытных людей

История разработки, новости релизов и документация
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

Авторский курс программирования на yabasic от @Terrazocultor
Канал YouTube @Terrazocultor

Глава 1. ВВОДНАЯ ИНФОРМАЦИЯ, ПЕРВЫЕ ШАГИ
Показать
  1. Представление курса
  2. Скачивание и установка YaBasic
  3. Интерпретируемые и компилируемые языки
  4. Термины и концепции ИТ, которые полезно знать
  5. Ограничения памяти. Проверяем доступные объемы
  6. Контроверсийные номера строк (уже устарели)
  7. Скорость вычислений. Сколько времени займёт расчёт одного миллиона квадратных корней?
  8. Бонус: Программа игры «Четыре в ряд», против компьютера, создана мной в течение двух месяцев. Содержит более 3000 строк кода.
  9. Видеоматериал
Глава 2. ТЕКСТОВЫЙ РЕЖИМ. Print, Chr$,…
Показать
Глава 3. ГРАФИЧЕСКИЙ РЕЖИМ
Показать
  1. Графический режим. Пиксель
  2. Вход в графический режим. Open window
  3. Системные переменные WinWidth и WinHeight (ширина и высота в пикселях)
  4. Рисование отдельных пикселей. Команда Dot
  5. Установка цвета рисования и фона: Color и Backcolor
  6. Проведение прямой линии между двумя точками. Команда Line
  7. Рисование окружности. Circle
  8. Рисование прямоугольника. Rectangle
  9. Рисование треугольника. Triangle
  10. Вывод текста в графическое окно. Команда Text
  11. Очистка содержимого графического экрана. Clear window
  12. Вернуть всё как было: закрыть графическое окно. Close window
  13. Уголок ТЕОРИИ: Важность документирования программы. Оператор REM
  14. Видео
Глава 4. ПЕРЕМЕННЫЕ
Показать
  1. Определение переменной
  2. Идентификаторы или имена переменных
  3. Типы переменных
  4. Присваивание значений переменным
  5. Глобальные и локальные переменные
  6. Счётчик или накопитель и его кажущийся парадокс: A = A + 1
  7. Сравнение переменных. Операторы отношения >, <, =
  8. Уголок ТЕОРИИ
    8.1 Строго типизированные языки против языков без строгой типизации
    8.2 Чувствительность к регистру. YaBasic чувствителен к регистру
    8.3 Константы в противоположность переменным
  9. Видео
Глава 5. ЦИКЛЫ
Показать
Глава 6. Операторы IF и SWITCH (CASE)
Показать
Глава 7. Примеры программ на YaBasic: база данных транзисторов и квинела
Показать
Глава 8. СЛУЧАЙНЫЕ ЧИСЛА
Показать
Глава 09. Числовые функции и функции преобразования
Показать
Глава 10. Диаграммы потоков и диаграммы Насси-Шнейдермана (Chapin)
Показать
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

4.6 Проверка закона больших чисел графически

Завершу эту главу чуть более сложной программой. Речь идёт о проверке принципа «больших чисел».

Если мы говорим, что вероятность выпадения «5» при шести бросках кости равна одной шестой, это верно, но на практике может случиться, что мы бросим кость шесть раз и ни разу не выпадет пятёрка… или выпадет три пятёрки подряд.

Но всё меняется, когда вместо шести бросков мы делаем 6000. В этом случае пятёрка выпадет примерно 1000 раз — так же, как и любое другое число.

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

Последняя программа этой главы (на моём Patreon) выполняет эту работу: подсчитывает, сколько раз выпадает каждое число от 1 до 10 у гипотетической десятигранной кости. Кость бросается 10 000 раз, и среднее число выпадений каждого значения приближается к 1000. Иногда получается 956, иногда 1048, но всегда около 1000. Это демонстрирует, что при экспериментах с большими числами реальные значения очень близки к теоретическим, и это тем вернее, чем больше числа.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

!
Сообщение от: Anton
Автор к данному уроку сделал только видео, а на патреоне оставил листинги программ. Привожу обработку субтитров.
Глава 9. Числовые функции и функции преобразования

Это текстовая версия видеоурока. Автор рассматривает основные числовые, тригонометрические, логические и битовые функции YaBasic, приводит примеры их использования и делится практическими советами.



Привет, друзья! Давно не виделись. Постараюсь выкладывать видео чуть чаще, хотя, может, и не так часто, как в начале. Как у нас говорят в Мурсии: «что хорошо, то хорошо». Сегодня видео не по самой любимой вами теме — электронике или экспериментам, а очередная глава из моего учебника по информатике. Уже вышло девять глав, и мне жалко бросать курс незавершённым — материала много, но я его доведу до конца, даже чередуя с другими видео.

Я уверен: этот многосерийный учебник пригодится любому студенту-информатику. Да, есть люди, которые относятся к Basic свысока, но я скажу две вещи. Во-первых, если вы освоите приёмы программирования на Basic, они окажутся теми же самыми, что и в более мощных языках. Цикл — он и в Африке цикл. Вы поймёте, какие бывают циклы, что такое вложенные циклы, как выйти из цикла досрочно, когда условие проверяется — до или после тела цикла, и многое другое. Зачем сразу лезть в Python с его невероятной сложностью? Будем реалистами: Python — чрезвычайно сложный язык, если использовать его на все сто. Гораздо проще начать с лёгкого языка, а проще и удобнее YaBasic я не знаю. Он бесплатный, легко устанавливается, стабильный и достаточно мощный. Когда потом перейдёте на Python, вы уже будете знать массу вещей.

Во-вторых, не думайте, что Basic — это «игрушечный» язык. Современные версии Basic похожи на Pascal, это вполне структурированный язык, без обязательных номеров строк. Всё, что вы выучите здесь, не пропадёт даром: вы сможете создавать собственные программы, такие же мощные, как мои.

Итак, сегодня глава, кажется, десятая, и посвящена она числовым функциям и функциям преобразования. Начнём с функции ABS.

ABS — абсолютное значение

Эта функция не имеет ничего общего с тормозами (ABS — антиблокировочная система). Она возвращает модуль числа, то есть его значение без знака.

Код: Выделить всё

' Возвращает абсолютное значение (без знака) аргумента n
Clear Screen
a = 23
b = -23
Print abs(a)
Print abs(b)
Запускаем программу. Результат: 23 и 23 — оба без знака. Если бы мы просто вывели a и b, у второго был бы минус, но abs его убирает


Тригонометрические функции: ACOS, ASIN, COS, SIN, TAN

Все они работают с углами в радианах, а не в градусах. Рассмотрим на примере тангенса.

Код: Выделить всё

' Синтаксис: tan(угол_в_радианах)
Clear Screen
For a = 0 To 45
    Print tan(a * pi / 180)
Next a
Здесь мы преобразуем градусы в радианы, умножая на pi/180. Программа выводит значения тангенса для углов от 0 до 45 градусов. Остальные тригонометрические функции (синус, косинус, арксинус и т.д.) используются аналогично — просто подставляем имя нужной функции.

AND — логическое И (побитовое)
Это функция булевой алгебры, работающая с двоичным представлением чисел.

Код: Выделить всё

a = 14
b = 5
Print and(a, b)
Разберём в двоичном виде:
14 = 1110, 5 = 0101.
Применяем AND поразрядно:
1110
0101
----
0100 = 4
Результат — 4. Такая функция может пригодиться в специфических задачах, например, для проверки отдельных битов.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

BIN — перевод в двоичную систему

Функция bin() преобразует десятичное число в двоичное.

Код: Выделить всё

Clear Screen
For i = 1 To 20
    Print bin(i)
    
Next i
Выводятся двоичные представления чисел от 1 до 20. Например, 5 → 101.

DEC — перевод из двоичной или шестнадцатеричной системы в десятичную

Код: Выделить всё

Clear Screen
Input "Введите число в двоичной системе: " binario$
Input "Введите число в шестнадцатеричной системе: " hex$
Print dec(binario$, 2)
Print dec(hex$, 16)
Функция принимает строку и основание системы счисления (2 или 16). К сожалению, другие основания (например, 8) не поддерживаются. Если ввести 101, получим 5; для AF (шестнадцатеричное) получим 175.

EOR (XOR) — исключающее ИЛИ

Логическая операция, возвращающая 1 только когда биты различаются.

Код: Выделить всё

Clear Screen
For a = 0 To 1
    For b = 0 To 1
        Print a, b, eor(a, b)
    Next b
Next a
Результаты: 0 0 -> 0, 0 1 -> 1, 1 0 -> 1, 1 1 -> 0.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

EULER — константа

В YaBasic встроена константа euler (число Эйлера ≈ 2.71828). Её можно использовать напрямую или присваивать переменной.

Код: Выделить всё

Clear Screen
x = euler
Print "Значение euler = ", x
Print euler
EXP — экспонента

exp(a) вычисляет e^a, где e — число Эйлера.

Код: Выделить всё

Clear Screen
Print exp(1)
Print exp(2)
Результат: 2.71828 и 7.38906 (примерно).
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

FRAC — дробная часть числа

frac(x) возвращает только десятичную часть, отбрасывая целую.

Код: Выделить всё

Clear Screen
a = 341.23
b = 9
c = 23.23
Print frac(a)
Print frac(b)
Print frac(c)
Вывод: 0.23, 0, 0.23.

INT — целая часть числа

Очень часто используемая функция. int(x) отбрасывает дробную часть (не округляет, а именно отбрасывает).

Код: Выделить всё

Clear Screen
a = 8.43
b = 5
c = -144.249
Print int(a)
Print int(b)
Print int(c)
Результат: 8, 5, -144.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

CEIL — округление вверх

ceil(x) возвращает наименьшее целое, большее или равное x.

Код: Выделить всё

Clear Screen
Print ceil(1.5)
Print ceil(7)
Вывод: 2 и 7.

FLOOR — округление вниз

floor(x) возвращает наибольшее целое, меньшее или равное x.

Код: Выделить всё

Clear Screen
Print floor(1.5)
Print floor(-1.5)
Print floor(1)
Результат: 1, -2, 1.

ROUND — округление

round(x) округляет число по обычным правилам (0.5 и выше — вверх, иначе вниз).

Код: Выделить всё

Clear Screen
Print round(2.3)
Print round(2.5)
Print round(-2.5)
Print round(-2.7)
Вывод: 2, 3, -3, -3. Сравните с int: int(2.3)=2, int(2.5)=2, int(-2.5)=-2, int(-2.7)=-2.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

LOG — логарифм

log(x) — натуральный логарифм (по основанию e). Можно указать основание вторым параметром: log(x, base).

Код: Выделить всё

Clear Screen
Print log(100, 10)   ' десятичный логарифм 100 = 2
Print log(100)       ' натуральный логарифм 100 ≈ 4.605
MAX и MIN — максимум и минимум
Сравнивают два числа и возвращают большее (max) или меньшее (min).

Код: Выделить всё

Clear Screen
n1 = 7
n2 = 15
n3 = 33
n4 = 840
Print max(n1, n2)
Print max(n3, n1)
Print max(n3, n4)
Print min(n2, n3)
Print min(n3, n1)
Результаты очевидны.

MOD — остаток от деления

mod(a, b) возвращает остаток от деления a на b.

Код: Выделить всё

Clear Screen
For i = 1 To 20
    Print "100 / ", i, " = ", int(100/i), " остаток ", mod(100, i)
Next i
Функция очень полезна, например, для проверки делимости, построения таблиц, циклических переходов.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

NOT — побитовое отрицание

Инвертирует все биты числа. Удобно смотреть в двоичном представлении.

Код: Выделить всё

Clear Screen
x = 10
y = 127
Print bin(not(x))
Print bin(not(y))
10 в двоичном виде 1010, после not получаем инверсию. Аналогично для 127.

OR — побитовое ИЛИ

Логическое ИЛИ над битами.

Код: Выделить всё

Clear Screen
a = 4
b = 9
Print or(a, b)
Print bin(or(a, b))
4 = 0100, 9 = 1001, результат 1101 = 13.
Аватара пользователя
Anton
Site Admin
Сообщения: 239
Зарегистрирован: Чт фев 08, 2024 7:03 pm
Откуда: Москва

Re: Авторский курс программирования на yabasic от @Terrazocultor

Сообщение Anton »

RAN — случайные числа

ran() возвращает случайное число от 0 до 0.999…
ran(x) — от 0 до x-1.
int(ran(x)) + 1 — целое от 1 до x.

Код: Выделить всё

Clear Screen
Repeat
    a = ran()
    b = int(ran(10))
    c = int(ran(10)) + 1
    Print a, b, c
    Print int(b), int(c)
    Tecla$ = inkey$
Until Tecla$ = "esc"
Пример использования: бросок кубика dado = int(ran(6)) + 1.

SHL и SHR — сдвиг влево и вправо

shl(n, x) сдвигает биты числа n на x позиций влево (умножение на 2^x).
shr(n, x) — вправо (деление на 2^x).

Код: Выделить всё

Clear Screen
For i = 0 To 5
    Print shl(1, i)
    Print bin(shl(1, i))
    Print
Next i

Print "---"

For i = 0 To 5
    Print shr(32, i)
    Print bin(shr(32, i))
    Print
Next i