Наша первая тема посвящена изучению основных концепций программирования и работе с простыми командами. Давай приступим!
Изучаем программирование с нуля
Короткий курс, который позволит в сжатые сроки начать писать простые программы
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
Изучаем программирование с нуля
Наша первая тема посвящена изучению основных концепций программирования и работе с простыми командами. Давай приступим!
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
🎓 Тема №1: Первая программа на Yabasic
Yabasic — это интерпретируемый язык программирования, созданный для быстрого освоения основ программирования новичками. Его синтаксис близок к другим популярным языкам семейства BASIC, таким как Visual Basic или QBasic, но при этом он обладает своими уникальными возможностями.
Перед началом работы убедитесь, что у вас установлен интерпретатор Yabasic. Скачать последнюю версию можно с официального сайта. Затем откройте любой удобный редактор (например, Notepad++) и сохраните файл с расширением .yab.
Открой новый файл и набери следующую программу:
Код: Выделить всё
REM Моя первая программа на Yabasic
PRINT "Привет, мир!"
Теперь сохрани файл, например, как hello.yab, и выполни его через терминал или проводник, вызвав команду:
Код: Выделить всё
yabasic hello.yab
Создай собственную программу на Yabasic, которая приветствует тебя по имени. Пусть твоя программа выведет на экран фразу "Привет, (твоё имя)!"
Решение задания под спойлером:
Комментарий — это текст, который поясняет смысл кода, но не влияет на выполнение программы. В Yabasic существует несколько способов вставлять комментарии:
Исторически самый первый способ добавления комментариев в BASIC — это оператор REM. Несмотря на то, что это старый способ, он остаётся рабочим и вполне пригодным для использования. Например:
Код: Выделить всё
REM Это комментарий
Помимо REM, в Yabasic предусмотрены другие способы обозначения комментариев:
Символ решётки (#) который работает в начале строки:
Код: Выделить всё
# Это тоже комментарий
Код: Выделить всё
' И это очередной комментарий
Код: Выделить всё
// Ещё один способ оставлять комментарии в начале строки
print "Привет мир!" //и комментарий в теле кода
Выбор зависит от личных предпочтений и привычек. Я рекомендую использовать современный способ с символом # или //, так как это современнее и привычнее многим разработчикам.
Мы успели размяться, давай разберём ещё одну небольшую тему
🛠 Объединение строк
Ещё одна важная деталь — объединение строк. В примере первой программы я использовал знак плюса (+) для соединения двух строковых частей. Но Yabasic допускает ещё один способ объединения строк — через запятую.
Например, вот две эквивалентные строки:
Код: Выделить всё
PRINT "Привет, " + your_name$ + "!"
Код: Выделить всё
PRINT "Привет, ", your_name$, "!"
- Плюс (+) объединяет строки точно так же, как мы привыкли видеть в других языках программирования.
- Запятая (,) добавляет небольшие удобства: при печати нескольких объектов друг за другом запятые создают пространство между объектами. То есть, фактически печатаются отдельные элементы с небольшим отступом.
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
🏋️ Тема №2: Переменные и типы данных в Yabasic
В Yabasic существуют три базовых типа данных:
- Числовой тип — целые и вещественные числа.
- Строковый тип — тексты, символы и строки.
- Логический тип — правда или ложь (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
Напишите программу, которая запрашивает у пользователя число и проверяет, чётное оно или нечётное. Подскажем, что операция остатка от деления (MOD) полезна для определения делимости числа на другое. Под спойлером решение задачи:
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
🔄 Тема №3: Циклы и массивы в Yabasic
Циклы нужны для многократного повторения одного и того же участка кода. Представь, что тебе нужно посчитать сумму первых ста чисел. Можно записать сто отдельных строк с прибавлением чисел, но разумнее автоматизировать процесс с помощью цикла.
Есть несколько видов циклов:
- Цикл FOR (цикл с известным числом итераций):
Код: Выделить всё
FOR i = 1 TO 10 PRINT i NEXT i ' Этот цикл выполняется ровно десять раз, последовательно перебирая значения переменной i от 1 до 10.
- Цикл WHILE (цикл с условием продолжения):
Код: Выделить всё
WHILE x < 10 PRINT x x = x + 1 WEND ' Цикл продолжается до тех пор, пока условие x < 10 истинно.
- Цикл REPEAT (выполнение минимум один раз):
Код: Выделить всё
REPEAT PRINT x x = x + 1 UNTIL x >= 10 ' Цикл REPEAT выполняется хотя бы один раз, а потом проверяет условие окончания.
Массив — это коллекция переменных одной группы, каждая из которых доступна по индексу. Представь книгу, где страницы нумерованы — вот это и есть массив.
Создание массива:
Сначала надо объявить массив, указывая его размер:
Код: Выделить всё
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
Напиши программу, которая суммирует первые 10 натуральных чисел с помощью цикла FOR и выводит результат на экран. Решение как всегда под спойлером.
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
🧱 Тема №4: Работа со строками и графический интерфейс
Строки — это набор символов, который хранится в памяти компьютера. Многие языки поддерживают специальные инструменты для удобной работы со строками, и 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)
Создай программу, которая открывает графическое окно и выводит туда надпись "Hello, world!". Окно должно иметь размеры 200x200 пикселей, а текст должен располагаться примерно в середине окна. Решение как всегда под спойлером.
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
🧱 Тема №5: Многомерные массивы и обработка данных
Массивы позволяют хранить наборы связанных данных компактно и эффективно. Например, если нужно сохранять оценки учеников класса, цены товаров магазина или погодные показатели за месяц, удобнее использовать массив, чем отдельную переменную для каждого значения.
Одномерные массивы похожи на списки, а многомерные — на таблицы. В 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
Создай программу, которая создаёт двумерный массив размера 3×3 и заполняет его случайными числами от 1 до 10. Затем подсчитай сумму всех элементов массива и выведи её на экран. Решение и объяснение под спойлером
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
📈 Тема №6: Проектирование и разработка полноценной программы
Создать приложение-калькулятор, выполняющее четыре основные арифметические операции (сложение, вычитание, умножение, деление) с возможностью выбора действий и красивым графическим интерфейсом.
- Создание графического окна — основное рабочее пространство.
- Отображение меню выбора операций — предложит пользователю выбрать нужную операцию.
- Принятие ввода данных — запрашивать числа у пользователя.
- Расчёт результата выбранной операции — вычислить результат и показать его пользователю.
- Оформление интерфейса — дизайн и аккуратность представления данных.
Код: Выделить всё
// Приложение-калькулятор
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
Сделай расширение своей программы-калькулятора - Добавь поддержку операции возведения в степень (возвести первое число в степень второго).
Решение задачи под спойлером.
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
📁 Тема №7: Работа с файлами в Yabasic
- Открытие файла (OPEN): определяет режим работы с файлом (чтение, запись, обновление).
- Закрытие файла (CLOSE): сохраняет внесённые изменения и освобождает ресурсы.
- Чтение из файла (INPUT, LINE INPUT): извлекает данные из файла.
- Запись в файл (WRITE, PRINT #): отправляет данные в файл.
- Открыть файл для записи (OPEN):
Код: Выделить всё
OPEN "output.txt" FOR writing AS #1
- Записать данные в файл (PRINT #):
Код: Выделить всё
PRINT #1, "Hello, World!"
- Закрыть файл (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"
Создай программу, которая:
- Создаёт текстовый файл с произвольным содержанием.
- Читает текстовый файл с произвольным содержанием.
- Сохраняет текст в обратном порядке (переворачивает порядок символов).
- Записывает полученный обратный текст в новый файл.
Код: Выделить всё
// Подпрограмма переворота текста
sub reverseString$(st$)
for i=len(st$) to 1 step -1
reversedStr$=reversedStr$+mid$(st$,i,1)
next i
return reversedStr$
end sub
-
- Site Admin
- Сообщения: 109
- Зарегистрирован: Чт фев 08, 2024 7:03 pm
📌 Тема №8: Модульное программирование и работа с библиотеками
Библиотека — это отдельный файл с расширением .yab, содержащий полезный код, который можно подключать к основной программе. Yabasic поддерживает импорт внешних модулей, что позволяет расширить функциональные возможности стандартной среды.
Процесс подключения внешней библиотеки:
- Создать библиотеку (файл с расширением .yab).
- Подключить библиотеку к своему проекту с помощью команды 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
- Повышенная скорость разработки: готовые модули ускоряют процесс создания программ.
- Удобство сопровождения: изменения вносятся в одном месте, и они автоматически применяются ко всем программам, использующим библиотеку.
- Стандартизация: общие подходы к решению задач повышают согласованность и снижают вероятность ошибок.