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

Изучаем программирование с нуля

Короткий курс, который позволит в сжатые сроки начать писать простые программы

Разговоры на любые темы касающихся языка Бейсик и его диалектов. Общение с администрацией и прочее
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

Обсуждение идеи Изучаем программирование с нуля

Сообщение Anton »

Изучаем программирование с нуля
Добро пожаловать на курс изучения языка программирования Yabasic! Мы будем изучать этот замечательный язык постепенно, начиная с азов и продвигаясь к решению сложных задач. Данная тема поможет тебе освоиться с основными конструкциями, научит пользоваться важными инструментами и построит крепкую базу для самостоятельного творчества.

Наша первая тема посвящена изучению основных концепций программирования и работе с простыми командами. Давай приступим!
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

🎓 Тема №1: Первая программа на Yabasic

Сообщение Anton »

Из данной темы ты узнаешь, как запустить свою первую программу на Yabasic и познакомимся с несколькими ключевыми элементами.

✨ Что такое Yabasic?

Yabasic — это интерпретируемый язык программирования, созданный для быстрого освоения основ программирования новичками. Его синтаксис близок к другим популярным языкам семейства BASIC, таким как Visual Basic или QBasic, но при этом он обладает своими уникальными возможностями.

⚙️ Настройка среды разработки

Перед началом работы убедитесь, что у вас установлен интерпретатор Yabasic. Скачать последнюю версию можно с официального сайта. Затем откройте любой удобный редактор (например, Notepad++) и сохраните файл с расширением .yab.

🔥 Напишем свою первую программу

Открой новый файл и набери следующую программу:

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

REM Моя первая программа на Yabasic
PRINT "Привет, мир!"

Теперь сохрани файл, например, как hello.yab, и выполни его через терминал или проводник, вызвав команду:

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

yabasic hello.yab
🧑‍💻 Домашнее задание №1

Создай собственную программу на Yabasic, которая приветствует тебя по имени. Пусть твоя программа выведет на экран фразу "Привет, (твоё имя)!"
Решение задания под спойлером:
► Показать
Заглянув под спойлер ты скорее всего заметил, что мы не использовали REM в качестве комментариев. И прямо сейчас объясним почему.

🗂️ Комментарии в Yabasic

Комментарий — это текст, который поясняет смысл кода, но не влияет на выполнение программы. В Yabasic существует несколько способов вставлять комментарии:

📌 Старый способ: REM

Исторически самый первый способ добавления комментариев в BASIC — это оператор REM. Несмотря на то, что это старый способ, он остаётся рабочим и вполне пригодным для использования. Например:

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

REM Это комментарий
Однако, есть и более современные варианты...

📌 Современные способы комментариев:

Помимо REM, в Yabasic предусмотрены другие способы обозначения комментариев:

Символ решётки (#) который работает в начале строки:

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

# Это тоже комментарий
Одинарная кавычка (') которая также работает в начале строки:

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

' И это очередной комментарий
А также двойной слэш (//), который работает везде:

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

// Ещё один способ оставлять комментарии в начале строки
print "Привет мир!" //и комментарий в теле кода
Важно помнить, что все виды комментариев, кроме двойных слэшей работают только тогда, когда находятся в начале строки. Они не действуют, если стоят посреди другой команды.

🖤 Когда какой способ выбрать?

Выбор зависит от личных предпочтений и привычек. Я рекомендую использовать современный способ с символом # или //, так как это современнее и привычнее многим разработчикам.

Мы успели размяться, давай разберём ещё одну небольшую тему

🛠 Объединение строк

Ещё одна важная деталь — объединение строк. В примере первой программы я использовал знак плюса (+) для соединения двух строковых частей. Но Yabasic допускает ещё один способ объединения строк — через запятую.

Например, вот две эквивалентные строки:

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

PRINT "Привет, " + your_name$ + "!"
И:

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

PRINT "Привет, ", your_name$, "!"
Разница между ними небольшая:
  • Плюс (+) объединяет строки точно так же, как мы привыкли видеть в других языках программирования.
  • Запятая (,) добавляет небольшие удобства: при печати нескольких объектов друг за другом запятые создают пространство между объектами. То есть, фактически печатаются отдельные элементы с небольшим отступом.
Так что выбор между этими двумя способами зависит от конкретных нужд и эстетических предпочтений.
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

🏋️ Тема №2: Переменные и типы данных в Yabasic

Сообщение Anton »

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

📝 Какие бывают типы данных?

В Yabasic существуют три базовых типа данных:
  1. Числовой тип — целые и вещественные числа.
  2. Строковый тип — тексты, символы и строки.
  3. Логический тип — правда или ложь (True/False), хотя формально Yabasic не выделяет отдельного логического типа.
🧩 Создание переменных

Переменные объявляются просто указанием имени и присвоением ей какого-то значения. Например:

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

x = 10         // Целое число
y = 3.14       // Вещественное число
name$ = "Вася" // Строка
Заметьте: если имя переменной оканчивается на знак доллара ($), значит, это строковая переменная. Если знак доллара отсутствует, значит, это числовая переменная.

🧮 Арифметические операции

Yabasic поддерживает стандартные арифметические операции:
  • + — сложение
  • - — вычитание
  • * — умножение
  • / — деление
  • % — остаток от деления
  • ^ — возведение в степень
Примеры операций:

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

a = 5 + 3    // Результат: 8
b = 10 / 2   // Результат: 5
c = 7 % 3    // Остаток от деления: 1
d = 2 ^ 3    // Возведение в степень: 8
🔍 Условия и ветвление

Очень важной частью программирования являются условия и управление ходом выполнения программы. Обычно это делается с помощью оператора IF:

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

x = 10
IF x > 5 THEN
    PRINT "Х больше пяти!"
ELSE
    PRINT "Х меньше или равен пяти."
ENDIF
🧑‍💻 Домашнее задание №2

Напишите программу, которая запрашивает у пользователя число и проверяет, чётное оно или нечётное. Подскажем, что операция остатка от деления (MOD) полезна для определения делимости числа на другое. Под спойлером решение задачи:
► Показать
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

🔄 Тема №3: Циклы и массивы в Yabasic

Сообщение Anton »

🔁 Что такое циклы?

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


🚶 Типы циклов в Yabasic:

Есть несколько видов циклов:
  1. Цикл FOR (цикл с известным числом итераций):

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

    FOR i = 1 TO 10
        PRINT i
    NEXT i
    ' Этот цикл выполняется ровно десять раз, последовательно перебирая значения переменной i от 1 до 10.
    
  2. Цикл WHILE (цикл с условием продолжения):

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

    WHILE x < 10
        PRINT x
        x = x + 1
    WEND
    ' Цикл продолжается до тех пор, пока условие x < 10 истинно.
    
  3. Цикл REPEAT (выполнение минимум один раз):

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

    REPEAT
        PRINT x
        x = x + 1
    UNTIL x >= 10
    ' Цикл REPEAT выполняется хотя бы один раз, а потом проверяет условие окончания.
    
🇦 Массивы в Yabasic

Массив — это коллекция переменных одной группы, каждая из которых доступна по индексу. Представь книгу, где страницы нумерованы — вот это и есть массив.

Создание массива:

Сначала надо объявить массив, указывая его размер:

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

DIM numbers(5)  // Создали массив длиной 5 элементов
Затем можно заполнять массив:

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

numbers(1) = 10
numbers(2) = 20
numbers(3) = 30
Доступ к элементам массива идёт по номеру индекса (начиная с единицы, а не с нуля).

Пример заполнения массива:

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

DIM grades(3)
grades(1) = 5
grades(2) = 4
grades(3) = 5
🧑‍💻 Домашнее задание №3

Напиши программу, которая суммирует первые 10 натуральных чисел с помощью цикла FOR и выводит результат на экран. Решение как всегда под спойлером.
► Показать
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

🧱 Тема №4: Работа со строками и графический интерфейс

Сообщение Anton »

🕵️ Работа со строками

Строки — это набор символов, который хранится в памяти компьютера. Многие языки поддерживают специальные инструменты для удобной работы со строками, и Yabasic не исключение.
Часто используемые функции для работы со строками:
  • LEN(str$) — длина строки.
  • MID(str(str, start[, length]) — получение фрагмента строки.
  • LEFT(str(str, length) — левая часть строки указанной длины.
  • RIGHT(str(str, length) — правая часть строки указанной длины.
  • UPPER(str(str) и LOWER(str(str) — преобразование регистра букв.
Пример:

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

my_string$ = "Hello, world!!"
PRINT LEN(my_string$)  // Длина строки
PRINT UPPER$(my_string$)  // Преобразует в верхний регистр

' Важное замечание! 
' Yabasic с русским языком может использовать кодировки текста только 
' в KOI8-R, Windows-1251 и ISO-8859-5. UTF-8 не поддерживает. 
🎨 Графический интерфейс

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

Создание графического окна:

Используя команду OPEN WINDOW, можно открыть графическое окно и управлять изображением в нём:

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

OPEN WINDOW 400, 300  // Окно шириной 400px и высотой 300px
Далее можно рисовать линии, круги, прямоугольники и текст с помощью специальных команд:
  • LINE — линия.
  • RECTANGLE — прямоугольник.
  • CIRCLE — круг.
  • TEXT — вывод текста на экран.
Пример рисования круга:

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

OPEN WINDOW 400, 300
CIRCLE 200, 150, 50  REM Круг радиусом 50px в точке (200, 150)
🧑‍💻 Домашнее задание №4

Создай программу, которая открывает графическое окно и выводит туда надпись "Hello, world!". Окно должно иметь размеры 200x200 пикселей, а текст должен располагаться примерно в середине окна. Решение как всегда под спойлером.
► Показать
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

🧱 Тема №5: Многомерные массивы и обработка данных

Сообщение Anton »

🗂️ Зачем нужны массивы?

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

🔹 Одномерные и многомерные массивы

Одномерные массивы похожи на списки, а многомерные — на таблицы. В Yabasic ты можешь создать массив любой сложности.
  • Одномерный массив:

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

    DIM students(5)  // Объявляем массив студентов на 5 человек
    students(1) = "Вася"
    students(2) = "Коля"
    students(3) = "Миша"
  • Многомерный массив (матрица):

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

    DIM scores(3, 2)  // Матрица оценок трёх предметов на двоих учащихся
    scores(1, 1) = 5  // Оценка первого ученика по первому предмету
    scores(2, 1) = 4  // Оценка второго ученика по первому предмету
    
📊 Эффективная обработка массивов

Часто приходится проходить по всему массиву, собирая или изменяя данные. Это удобно делать с помощью циклов:

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

DIM numbers(5)
SUM = 0
FOR i = 1 TO 5
    SUM = SUM + numbers(i)
NEXT i
PRINT "Сумма элементов массива:", SUM
🧑‍💻 Домашнее задание №5

Создай программу, которая создаёт двумерный массив размера 3×3 и заполняет его случайными числами от 1 до 10. Затем подсчитай сумму всех элементов массива и выведи её на экран. Решение и объяснение под спойлером
► Показать
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

📈 Тема №6: Проектирование и разработка полноценной программы

Сообщение Anton »

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

🌟 Цель проекта:

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

🔧 План проекта:
  1. Создание графического окна — основное рабочее пространство.
  2. Отображение меню выбора операций — предложит пользователю выбрать нужную операцию.
  3. Принятие ввода данных — запрашивать числа у пользователя.
  4. Расчёт результата выбранной операции — вычислить результат и показать его пользователю.
  5. Оформление интерфейса — дизайн и аккуратность представления данных.
🚦 Пример реализации программы-калькулятора:

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

// Приложение-калькулятор

OPEN WINDOW 400, 300

choice = 0
WHILE choice <> 6
    CLEAR SCREEN
	clear window
    TEXT 50, 50, "Vyberite operaciyu:"
    TEXT 50, 70, "1. Slozhenie"
    TEXT 50, 90, "2. Vychitanie"
    TEXT 50, 110, "3. Umnozhenie"
    TEXT 50, 130, "4. Delenie"
    TEXT 50, 170, "5. Vyhod"
    INPUT "Vvedite nomer operatsii: " choice
    
    IF choice = 1 OR choice = 2 OR choice = 3 OR choice = 4 OR choice = 5 THEN
        INPUT "Pervoe chislo: " num1
        INPUT "Vtoroe chislo: " num2
        
        switch choice
            CASE 1
				result = num1 + num2
                TEXT 50, 200, "Resultat slozheniya: " + STR$(result) :break
            CASE 2
                result = num1 - num2
                TEXT 50, 200, "Resultat vychitaniya: " + STR$(result) :break
            CASE 3
                result = num1 * num2
                TEXT 50, 200, "Resultat umnozheniya: " + STR$(result) :break
            CASE 4
                IF num2 <> 0 THEN
                    result = num1 / num2
                    TEXT 50, 200, "Resultat deleniya: " + STR$(result) :break
                ELSE
                    TEXT 50, 200, "Oshibka: nelsya delit na nol!" :break
                ENDIF
        END switch
        PAUSE 2
    ELSEIF choice = 5 THEN
        CLOSE WINDOW
    ELSE
        TEXT 50, 200, "Nevernyi vybor. Vyberite ot 1 do 5."
        PAUSE 2
    ENDIF
WEND

🧑‍💻 Домашнее задание №6

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

Решение задачи под спойлером.
► Показать
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

📁 Тема №7: Работа с файлами в Yabasic

Сообщение Anton »

Файл — это хранилище данных, находящееся вне самой программы. Возможность читать и записывать файлы важна для многих задач, будь то сохранение настроек, ведение журнала событий или чтение больших объемов данных.

📌 Основные концепции работы с файлами:
  • Открытие файла (OPEN): определяет режим работы с файлом (чтение, запись, обновление).
  • Закрытие файла (CLOSE): сохраняет внесённые изменения и освобождает ресурсы.
  • Чтение из файла (INPUT, LINE INPUT): извлекает данные из файла.
  • Запись в файл (WRITE, PRINT #): отправляет данные в файл.
📜 Базовые команды работы с файлами:
  1. Открыть файл для записи (OPEN):

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

    OPEN "output.txt" FOR writing AS #1
  2. Записать данные в файл (PRINT #):

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

    PRINT #1, "Hello, World!"
  3. Закрыть файл (CLOSE):

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

    CLOSE #1
📊 Пример программы для работы с файлами:

Создадим простую программу, которая записывает таблицу умножения в файл:

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

// Таблица умножения в файл
OPEN "table.txt" FOR writing AS #1
FOR i = 1 TO 10
    FOR j = 1 TO 10
        PRINT #1, i, "x", j, "=", i*j
    NEXT j
NEXT i
CLOSE #1
PRINT "Таблица умножения записана в файл table.txt"
🧑‍💻 Домашнее задание №7

Создай программу, которая:
  1. Создаёт текстовый файл с произвольным содержанием.
  2. Читает текстовый файл с произвольным содержанием.
  3. Сохраняет текст в обратном порядке (переворачивает порядок символов).
  4. Записывает полученный обратный текст в новый файл.
Для решения данной задачи тебе потребуется отсутствующая функция. Ты можешь создать её сам. Например такую:

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

// Подпрограмма переворота текста
sub reverseString$(st$)
    for i=len(st$) to 1 step -1
        reversedStr$=reversedStr$+mid$(st$,i,1)
    next i
    return reversedStr$
end sub
Готовое решение под спойлером:
► Показать
Аватара пользователя
Anton
Site Admin
Сообщения: 109
Зарегистрирован: Чт фев 08, 2024 7:03 pm

📌 Тема №8: Модульное программирование и работа с библиотеками

Сообщение Anton »

Модульное программирование — это способ разбивки большого программного проекта на независимые компоненты (модули), каждый из которых решает узконаправленные задачи. Это упрощает разработку, снижает сложность и увеличивает эффективность повторного использования кода.

🔥 Библиотеки в Yabasic:

Библиотека — это отдельный файл с расширением .yab, содержащий полезный код, который можно подключать к основной программе. Yabasic поддерживает импорт внешних модулей, что позволяет расширить функциональные возможности стандартной среды.

Процесс подключения внешней библиотеки:
  1. Создать библиотеку (файл с расширением .yab).
  2. Подключить библиотеку к своему проекту с помощью команды IMPORT.
🧑‍💻 Пример работы с библиотекой:

Предположим, у нас есть библиотека, которая реализует пару удобных функций:

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

// mathlib.yab — библиотека математических функций
sub factorial(n)
    res = 1
    for i = 1 to n
        res = res * i
    next i
    return res
end sub

sub fibonacci(n)
    a = 0
    b = 1
    for i = 1 to n
        temp = a
        a = b
        b = temp + b
    next i
    return a
end sub
Теперь, чтобы использовать эту библиотеку в нашем проекте, достаточно импортировать её:

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

// Основная программа
IMPORT mathlib  // Импортируем библиотеку

factorial_value = mathlib.factorial(5)  // Рассчитываем факториал числа 5
fibonacci_value = mathlib.fibonacci(10) // Рассчитываем 10-е число Фибоначчи

PRINT "Факториал 5 =", factorial_value
PRINT "10-е число Фибоначчи =", fibonacci_value
🎯 Почему это важно?
  1. Повышенная скорость разработки: готовые модули ускоряют процесс создания программ.
  2. Удобство сопровождения: изменения вносятся в одном месте, и они автоматически применяются ко всем программам, использующим библиотеку.
  3. Стандартизация: общие подходы к решению задач повышают согласованность и снижают вероятность ошибок.