Первая программа
Расширения файлов
Файлы исходного кода — это обычные текстовые файлы со следующими расширениями:
- .bas — собственно исходный код с функциями;
- .bi — заголовочные файлы с объявлением структур и функций;
- .rc — скрипт с описаниями ресурсов для WinAPI.
Также ты встретишь файлы со следующими расширениями:
- .a — статически подключаемая библиотека функций;
- .dll — динамически подключаемая библиотека функций (DLL);
- .lib — библиотека с информацией о связывании с DLL для компоновщика;
- .o — объектный файл;
- .obj — объектный файл;
- .res — скомпилированный файл ресурсов.
Из чего состоят файлы исходного кода фрибейсика
Любой язык программирования состоит из лексем — последовательности допустимых символов языка, имеющих значение. Лексемы подразделяются на ключевые слова, операторы, идентификаторы, комментарии и всё такое прочее.
Ключевые слова имеют непосредственное отношение к языку. Примеры: Dim
, ByRef
, Function
, Integer
, Type
, Alias
, As
. Когда ключевые слова собираются вместе, то образуются выражения.
Выражения — это одно или несколько ключевых слов, задающие последовательность действий. Примеры выражений:
' Объявление функции
Declare Function Minimum(ByVal a As Integer, ByVal b As Integer)As Integer
' Объявление переменной
Dim Name As WString * 256
' Оператор сложения
x + y
Каждое выражение обычно располагают на отдельной строке. Так удобнее читать код.
Простейшая программа
Простейший файл исходного кода — это пустой текстовый файл с расширением .bas
, его можно скомпилировать и получить полноценную программу. Такая программа ничего не делает и сразу же завершается после запуска:
Вывод текста на экран
Напишем теперь программу, которая будет делать хоть что-нибудь. Например, выводить на консоль фразу «Всем привет!»:
Print "Всем привет!"
Для отображения текста на экране используется функция Print
. Сейчас функция принимает единственный аргумент — строку в кавычках, которую она выводит на консоль.
Компиляция
Создадим специальную директорию для исходных кодов «C:\Programming\FreeBASIC Projects», в ней подкаталог «HelloWorld». Открой текстовый редактор, например блокнот или Nodepad++, и сохрани текст программы в файле «HelloWorld.bas».
Компиляция «перетаскиванием мышью»
Для простых консольных программ достаточно перетащить мышью значок файла «HelloWorld.bas» на компилятор. Перетаскивание мышью запускает программу, в данном случае «fbc.exe», и передаёт ей параметром название перетаскиваемого файла. Компилятор FreeBASIC получает имя файла, запускает процесс компиляции и сохраняет готовую программу рядом с исходным файлом.
Компиляция вручную
Открой «Пуск» → «Выполнить», запусти интерпретатор команд cmd.exe и перейди в каталог, куда установлен компилятор, например, так:
C:\Users\Пользователь>cd %programfiles%\freebasic C:\Program Files\FreeBASIC>_
Теперь можно запускать компилятор и получать исполняемый файл такой командой:
C:\Program Files\FreeBASIC>fbc "C:\Programming\FreeBASIC Projects\HelloWorld.bas"
Компиляция через пакетный файл
Создай пакетный файл «compile.cmd» следующего содержания:
"%ProgramFiles%\FreeBASIC\fbc.exe" HelloWorld.bas
Компиляция из среды разработки на примере WinFBE
Если ты прописал в WinFBE путь к каталогу с компилятором, то достаточно в меню «Компилировать» выбрать пункт «Собрать и выполнить» или нажать клавишу F5.
Компиляция утилитой make
Утилита make
создана для инкрементальной сборки программ. Этот вариат незаменим для больших проектов.
Запуск программы
Теперь у тебя есть своя первая настоящая программа «HelloWorld.exe»:
C:\Programming\FreeBASIC Projects>HelloWorld.exe Привет, мир! C:\Programming\FreeBASIC Projects>_
Остановим выполнение
Если запускать рассмотренную выше программу из проводника, то обнаружится, что она выводит строку и сразу же завершается («как будто что‐то мелькнуло на экране»), не дав нам разглядеть результат. Бороться с этим можно двумя способами.
Пауза после компиляции
Измени пакетный файл «compile.cmd» так:
"%ProgramFiles%\FreeBASIC\fbc.exe" HelloWorld.bas
HelloWorld.exe
pause
Пауза в программе
Второй способ — это сказать компьютеру, что в конце работы надо дождаться нажатия какой‐нибудь клавиши.
REM Выводим строку «Здравствуй, мир!»
Print "Здравствуй, мир!"
' Ждём нажатия любой клавиши
Sleep()
/'
Конец программы
'/
Разбор программы
Теперь программа длиннее и состоит из восьми строк.
Появилось непонятное слово REM
. Это ключевое слово обозначает начало комментария. Всё, что будет написано после слова REM
и до конца строки компилятор будет игнорировать. Также комментарием является всё, что идёт после символа '
. Ключевое слово REM
и лексема '
равнозначны. Многострочные комментарии начинаются с символов /'
и заканчиваются символами '/
. На текст внутри этого блока («Конец программы») компилятор не будет обращать внимания. Комментарии никак не влияют на работу программы, они нужны программистам, чтобы лучше понимать код.
В пятой строке появился вызов функции Sleep()
. Эта функция останавливает поток программы и ждёт нажатия любой клавиши.
Функция Print
Теперь давай подробнее изучим функцию Print
для вывода данных на консоль. Эта функция находится в библиотеке времени выполнения, компилятор автоматически добавит код вызова функции в исполняемый файл.
Функция Print
принимает несколько аргументов и выводит их на консоль. Аргументы должны быть разделены запятыми ,
точками с запятой ;
или их сочетанием:
- разделитель «точка с запятой» заставляет выводить аргументы без пробелов между ними;
- разделитель «запятая» заставляет выводить аргументы по позициям табуляции;
- чтобы вывести текст без переноса строки, нужно в конце добавить точку с запятой.
Примеры
Создадим несколько программ «PrintSomeWords.exe», печатающих фразы с разными разделителями.
Вывод текста без разделителей
' Печатаем несколько фраз без разделителей
Print "Эта"; "фраза"; "будет показана"; "без разделителей"
Результат работы программы:
C:\Programming\FreeBASIC Projects>PrintSomeWords.exe Этафразабудет показанабез разделителей C:\Programming\FreeBASIC Projects>_
Вывод текста по позициям табуляции
' Печатаем несколько слов по позициям табуляции
Print "Фраза", "через табуляции"
Результат работы программы:
C:\Programming\FreeBASIC Projects>PrintSomeWords.exe Фраза через табуляции C:\Programming\FreeBASIC Projects>_
Вывод текста по позициям табуляции и без разделителей
' Совмещаем вывод с запятой и точкой с запятой
Print "Фраза", "через"; "разные разделители"
Результат работы программы:
C:\Programming\FreeBASIC Projects>PrintSomeWords.exe Фраза черезразные разделители C:\Programming\FreeBASIC Projects>_
Вывод пустой строки
Для того, чтобы вывести пустую строку, достаточно использовать Print
без всяких аргументов.