01 Начинаем изучать FreeBasic

F
freebs
Людям свойственно нетерпение, желание побыстрее увидеть результат. Это желание присуще не только детям, но и старшим школьникам и даже взрослым. А программа это просто текст на экране, даже более того, это невидимый код внутри компьютера, а всё что можно увидеть отображается на экране в результате исполнения программы. 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)

Comments