Другие операции с числами

Int

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

Пример:

? Int(2.9)
? Int(5.1)
? Int(-2.1)
? Int(-5.6)
Sleep


Возвращаемое значение:
2
5
3
6

 

Frac

Функция Frac возвращает дробную часть числа.

Пример:

? Frac(2.85)
Sleep


Возвращаемое значение:  0.85000000

 

Fix

Функция Fix возвращает целую часть числа.

Пример:

? Fix(-2.85)
Sleep


Возвращаемое значение:  -2

 

Sgn

Функция Sgn возвращает знак числа.

Если значение меньше нуля, то вернет   -1
Если значение больше нуля, то вернет     1
Если значение равно нулю, то вернет      0

Пример:

? Sgn(-2.5)
Sleep


Возвращаемое значение:  -1

 

Log

Функция Log возвращает натуральный логарифм числа.

Пример:

Function LogBaseX(Byval Number As Double, Byval BaseX As Double) As Double
  LogBaseX = Log( Number ) / Log( BaseX )
End Function

Print "The log base 5 of 25 is:"; LogBaseX ( 25 , 5 )
Print "The log base 2 of 16 is:"; LogBaseX ( 16 , 2 )
Sleep


Возвращаемое значение:  2 и 4

 

Exp

Функция Exp возвращает экспоненту.

Пример:

Dim r As Double
Dim p As Double
Dim t As Double
Dim a As Double

Input "Please enter the initial investment (principal amount): "; p
Input "Please enter the annual interest rate (as a decimal): "; r
Input "Please enter the number of years to invest: "; t

a = p * Exp ( r * t )
Print ""
Print "After";t;" years, at an interest rate of";_
r * 100; "%, your initial investment of"; p; " would be worth";a
Sleep

 

Abs

Функция Abs возвращает абсолютное значение числа.

Пример:

? Abs(-17)
? Abs(1.567)
Sleep


Возвращаемое значение: 17 и 1.567

 

Rnd , Randomize

А теперь о самой интересной и самой используемой в играх функции RND. Данная функция генерирует случайное дробное число от 0 до 1. Однако не следует думать, что чисел может быть только два. Между 0 и 1 дробных чисел великое множество. И при правильном использовании можно выстроить любой диапазон для генерации чисел. У функции один необязательный и мало используемый параметр. Если этот параметр будет равен 0 , то функция возвратит последнее генерируемое этой функцией число.
На самом деле нет ничего случайного в программировании, так же как и в жизни впрочем. Функция генерирует псевдослучайное число на основе другого числа, путем хитрых математических операций. Однако если число, на основе которого создается генерируемое, будет хотя бы очень слабо предсказуемо, для человека оно выглядит случайным. Лучше всего для числа, на основе которого происходит генерация, подходит время с его миллисекундами. Именно поэтому желательно перед тем как запускать генератор RND , нужно установить начальное малопредсказуемое число с помощью функции Randomize. Эта функция имеет два параметра:

  • Начальное число которое будет установлено для генератора RND
  • Алгоритм генерации. У каждого языка программирования стараются делать свой алгоритм генерации. FreeBasic может использовать как свой, так и алгоритм cтарой версии FreeBasic , языка Qbasic  и языка C .

Для первого параметра Randomize чаще всего используют функцию Timer, возвращающую кол-во времени, прошедшего с момента запуска системы. Используют функцию Randomize один раз , чаще всего в начале кода. Если вы не захотите использовать функцию Randomize, то при каждом запуске программы значения будут одинаковые. Запустите несколько раз каждый из кодов ниже:

Randomize Timer
? Rnd
Sleep

 

? Rnd
Sleep


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

Пример:

Randomize Timer
For a As Integer = 1 To 20
    ? Int(10*Rnd)
Next
Sleep

Пример выше генерирует числа от 0 до 9. Если нужно чтобы генерация была не с нуля, а скажем с единицы, то можно применить такой метод:

Randomize Timer
For a As Integer = 1 To 20
    ? Int(10*Rnd)+1
Next
Sleep

Теперь число генерируется от 1 до 10.

Следующий пример генерирует числа в диапазоне от 5 до 10 включительно:

Randomize Timer
For a As Integer = 1 To 20
    ? Int(6*Rnd)+5
Next
Sleep

Всего доброго!

содержание | назад | вперед