01 Начинаем изучать FreeBasic
Людям свойственно нетерпение, желание побыстрее увидеть результат. Это желание присуще не только детям, но и старшим школьникам и даже взрослым. А программа это просто текст на экране, даже более того, это невидимый код внутри компьютера, а всё что можно увидеть отображается на экране в результате исполнения программы.
http://ipic.su/img/img7/fs/05.1527618876.jpg
Но вся “фишка” программирования в нахождении алгоритма решения задачи, а ещё лучше и оптимального алгоритма. Но это не всегда подразумевает видимый результат, но на первых порах обучение как раз “увидеть” важнее всего)))
Вот и рассмотрим те операторы которые позволяют сразу же увидеть результат. Задумался здесь я над словом “сразу”. А ведь потратив уйму сил на решение некоей задачи и воплотив это в программе очень быстрый компьютер ведь тоже выдаст результат практически сразу))).
Как я уже и [говорил](https://golos.io/ru--kompxyutery/@sergiy/fbasic) на первых порах пользоваться будем [онлайн компилятором FreeBASIC](https://www.jdoodle.com/execute-freebasic-online)
Самый главный оператор который позволяет что-то увидеть это:
**PRINT оператор вывода на экран**
Самое простое его использование это вывод текста, текст при этом нужно заключить в двойные кавычки.
Набираем в окне редактирования такой код
`PRINT "Изучаем Бейсик"`
нажимаем **Execute** (выполнить)
результат увидим в черненьком экране вывода
http://ipic.su/img/img7/fs/01.1527319026.jpg
оператор PRINT ещё умеет выводить результат вычислений
`PRINT 5+6`
Получим
`11`
или более сложный пример
`PRINT 4+8*2-3/7`
Получим
`19,5714285714`
или даже например результат вычисления функций
`PRINT sqr(2)`
`1,41421356237`
print sin(3.5)+2*cos(9.78)
`-2.225921801707748`
На ряду с привычными операциями сложение `+`, вычитание `-`, умножение `*` и деление `/` в бейсике также присутствуют некоторые другие
`\` целочисленное деление, результатом будет целое число, без округления, т.е. отбрасыванием дробной части. `print 7\3` выдаст 2
`^` операция возведения в степень `print 3^2` выдаст 9, а `print 3^4` - 81.
`mod` вычисление остатка от деления `print 3 mod 2` будет 1, а `print 13 mod 5` будет 3.
Математические функции в бейсике
| функция | её действие |
|---|---|
|abs |вычисляет модуль числа abs(9) = 9 и abs(-7) = 7|
|sgn |вычисляет знак числа sgn(9) = 1 и sgn(-7) = -1 и sgn(0) = 0|
|int |вычисляет целую часть числа, наибольшее целое меньшее или равное результату|
|fix |вычисляет целую часть числа, отбрасыванием дробной части|
|sin |вычисляет синус|
|cos |вычисляет синус|
|tan |вычисляет тангенс|
|atn |вычисляет арктангенс|
|sqr|вычисляет квадратный корень|
|exp|вычисляет экспоненту|
|log|вычисляет натуральный логарифм|
Некоторые функции в различных языках могут означать совсем другое)) например в паскале sqr(4) будет не 2 как в бейсике, а 16, т.е в паскале это возведение в квадрат. А квадратный корень там sqrt.
то же самое относительно логарифма, в некоторых языках другие обозначения ln(x) натуральный логарифм, log10(x) десятичный логарифм.
Особенности функций **int** и **fix**
составим такой пример:
`print "int ================"`
`print "int(-12)=";int(-12)`
`print "int(-12.1)=";int(-12.1)`
`print "int(-12.9)=";int(-12.9)`
`print "int(12)=";int(12)`
`print "int(12.1)=";int(12.1)`
`print "int(12.9)=";int(12.9)`
`print`
`print "fix ================"`
`print "fix(-12)=";fix(-12)`
`print "fix(-12.1)=";fix(-12.1)`
`print "fix(-12.9)=";fix(-12.9)`
`print "fix(12)=";fix(12)`
`print "fix(12.1)=";fix(12.1)`
`print "fix(12.9)=";fix(12.9)`
http://ipic.su/img/img7/fs/02.1527362546.jpg
В одном оператором **print** можно выводить не одно значение, а несколько
при этом если операнды разделены `;` то они будут выводиться подряд через пробел,
а если операнды разделены `,` то будут выводиться по зонам в столбцах
пример....
`PRINT 1;2;3;4;5;6;7`
`PRINT 1,2,3,4,5,6,7`
каждый новый оператор **PRINT** выводит с новой строки,
если только предыдущий не закончился `;` или `,`
http://ipic.su/img/img7/fs/03.1527362850.jpg
Можно использовать **PRINT** и сам по себе. В этом случае он выводит пустую строку (следующий вывод начнется с новой строки)
Иногда возникает необходимость очистить экран от предыдущих выводов,
обычно это и следует делать в начале работы делает это команда **CLS**
Экран очищается, и вывод начинается с позиции слева вверху
если заговорить о координатах, то это позиция будет 1,1
Есть даже оператор устанавливающий эту позицию,
и тогда следующий оператор **print** выведет свой результат в этой позиции
**locate** y,x
сначала нужно указать строку, а затем позицию в ряду для установки курсора( счёт начинается с 1 и с правого угла экрана); что непривычно, так как в сравнении с декартовой системой координат здесь оси поменяны местами, что часто вызывает путаницу, это необходимо запомнить.
оператор **locate** можно ещё использовать для "включения/выключения" отображения курсора, а так же его размера. **locate** y, x, cur, start, stop. Если cur равен 1, то курсор видимый на экране, а если cur равен нулю - не видимый. start, stop - числа от 0 до 31 задающие размер курсора в высоту.
Если операторы в написании короткие их можно разместить в строке несколько разделив `:`
`locate 4,1: print "*"`
*Примечание* locate в онлайн компиляторе бейсика не работает, для этого нужен "полноценный" бейсик))
Иногда может понадобиться возможность "найти" курсор на экране, для этого есть две функции:
'print csrlin' выдаст строку в которой находится курсор на экране от верха экрана (позиция где будет выведен следующий символ)
'print pos(0)' выдаст позицию в которой находится курсор в строке, начиная с левого края экрана
операторы и функции в этом уроке *print, abs, sgn, int, fix, sin, cos, tan, atn, sqr, exp, log, locate, pos, csrlin, cls*
[0. FreeBASIC лучший из диалектов бейсика](https://serey.io/ru/@freebs/00-freebasic)

