Basic
- Русское название:
- Бейсик
- Дата создания:
- 1963
- Создан под влиянием:
- Повлиял на:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .bas, .vb, .vbs
- Диалекты:
- Реализации и версии (свернуть все | развернуть все):
-
- 1771-DB BASIC
- AMOS BASIC
- AT&T BASIC
- Altair BASIC
- AmigaBASIC
- Applesoft BASIC Interpreter in Javascript
- Applesoft Lite
- Atari Microsoft BASIC I/II
- BASIC A+
- BASIC-11
- BASIC-256
- BASICA
- Bywater BASIC
- Cassette BASIC
- Color BASIC
- Commodore BASIC
- DOS33
- Dartmouth BASIC
- EXIL
- FreeBASIC
- GW-BASIC
- Galaksija BASIC
- Great Cow BASIC
- MBASIC
- MSX BASIC
- Microsoft Visual Basic
- Mono VB.NET
- NBASIC
- PureBasic
- QBasic
- QuickBASIC
- STOS Basic
- SmallBASIC
- VB.NET
- VBScript
- Visual Basic for Applications
- WordBasic
- hbasic
Бе́йсик (BASIC — сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих; англ. basic — основной, базовый) — семейство высокоуровневых языков программирования.
Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом и реализован командой студентов колледжа под их руководством. Со временем, когда стали появляться другие диалекты, этот «изначальный» диалект стали называть Dartmouth BASIC.
Бейсик был спроектирован так, чтобы студенты без специального математического образования могли писать программы. Он создавался как решение проблем, связанных со сложностью более старых языков, и предназначался для более «простых» пользователей, заинтересованных не столько в скорости своих программ, сколько просто в возможности использовать компьютер для решения своих задач. Для популяризации языка первый компилятор распространялся бесплатно.
При проектировании языка были сформулированы восемь требований к нему:
- простота в использовании для начинающих;
- общность назначения (отсутствие специализации);
- возможность расширения функциональности средствами, доступными программистам;
- интерактивность;
- четкие и понятные сообщения об ошибках;
- высокая скорость работы на небольших программах;
- отсутствие необходимости понимания работы аппаратного обеспечения для написания программ;
- эффективное посредничество между пользователем и операционной системой.
Язык был основан частично на Фортран II и частично на Алгол-60, с добавлениями, делающими его удобным для работы в режиме разделения времени, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.
Всеобщую же популярность язык приобрел в середине 70-х годов после его появления на микрокомпьютерах. Многие языки программирования были слишком громоздкими, чтобы умещаться в небольшой памяти. Для машин с таким медленным носителем, как бумажная лента, аудиокассета и без подходящего текстового редактора такой небольшой язык, как Бейсик, был отличной находкой.
В 1975 году компания Microsoft выпустила Altair BASIC. После этого был выпущен ряд операционных систем, использующих Basic в качестве основного языка. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.
В этот период было создано множество новых компиляторов и интерпретаторов Бейсика. Майкрософт продавала несколько версий BASIC для MS-DOS/PC-DOS, включая BASICA, GW-BASIC и QuickBASIC (QBASIC). Компания Borland в 1985 выпустила Turbo BASIC 1.0 (более поздние его версии впоследствии продавались другой компанией под именем PowerBASIC). На домашних компьютерах появились различные расширения Бейсика, обычно включающие средства для работы с графикой, звуком, выполнением DOS-команд, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совершенно иная система (см. например, GRASS).
Начиная с конца 80-х, новые компьютеры стали намного более сложными и предоставляли возможности (такие как графический интерфейс пользователя), которые делали Бейсик уже не столь удобным для программирования. Бейсик начал сдавать свои позиции, несмотря на то, что огромное количество его версий ещё использовалось и продавалось.
Вторую жизнь Бейсик получил с появлением в 1991 году Visual Basic от Microsoft. Этот язык напоминал оригинальный только синтаксисом, но был значительно более современным. Visual Basic и его варианты стали одним из наиболее часто используемых языков на платформе Windows. Позже был создан вариант под названием WordBasic, используемый в MS Word до появления Word 97. Visual Basic for Applications (VBA) был встроен в Excel 5.0 в 1993 году, затем в Access 95 в 1995-ом, а после и во все остальные инструменты, входящие в пакет Office — в 1997-ом. Internet Explorer 3.0 и выше, а также поставки Windows включали интерпретатор скриптового языка VBScript. В полный вариант пакета OpenOffice также включён интерпретатор Бейсика.
В настоящее время Basic — это не один язык, а целое семейство языков, отличающихся временем создания, парадигмами программирования и синтаксисом, зачастую до полной потери совместимости программ. Ранние версии не поддерживали даже структурное программирование; со временем структурное и процедурное программирование стали общепринятыми парадигмами, и появились версии, поддерживающие их. Ряд современных компиляторов во главе с Visual Basic и VB.NET реализуют объектно-ориентированное и событийное программирование.
Элементы синтаксиса:
Комментарий до конца строки | ' или REM |
---|---|
Регистрозависимость | Нет |
Регулярное выражение идентификатора переменной | [_a-zA-Zа-яёщА-ЯЁЩ][_a-zA-Zа-яёщА-ЯЁЩ0-9]* |
Регулярное выражение идентификатора функции | [_a-zA-Zа-яёщА-ЯЁЩ][_a-zA-Zа-яёщА-ЯЁЩ0-9]* |
Присваивание значения переменной | = |
Объявление переменной | Dim variable |
Группировка выражений | () |
Равенство | = или == |
Неравенство | <> или >< |
Сравнение | < > <= =< >= => |
Определение функции | (Visual Basic) Function f(para1, para2) ... End Function или Sub f(para1, para2) ... End Sub |
Вызов функции | Call f(a,b...) |
Последовательность | конец строки |
Если - то | If condition Then ... End If |
Если - то - иначе | If condition Then ... Else ... End If |
Бесконечный цикл | Do loopBody Loop |
Цикл с предусловием | Do While condition ... Loop |
Цикл с постусловием | Do ... Loop Until condition |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | FOR i= 1 TO 10 STEP 1 ... NEXT i |
Цикл for - next для диапазона целых чисел с декрементом на 1 | FOR i= 10 TO 1 STEP -1 ... NEXT i |
Ссылки:
IDE/Редакторы:
Примеры:
Hello, World!:
Пример для версий Microsoft Visual Basic 6Microsoft Visual Basic предназначен для разработки приложений с оконным интерфейсом, поэтому создание простейшего консольного приложения является нетривиальной задачей. В примере показаны: импорт нужных функций из стандартной библиотеки, создание консоли, получение указателя на ее стандартный поток вывода, собственно вывод сообщения в этот поток и освобождение использованных объектов.
Option Explicit
Declare Function AllocConsole Lib "kernel32" () As Long
Declare Function FreeConsole Lib "kernel32" () As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _
nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
lpReserved As Any) As Long
Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long
Private Sub Main()
'create a console instance
AllocConsole
'get handle of console output
Dim hOut As Long
hOut = GetStdHandle(-11&)
'output string to console output
Dim s As String
s = "Hello, World!" & vbCrLf
WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull
'make a pause to look at the output
Sleep 2000
'close the handle and destroy the console
CloseHandle hOut
FreeConsole
End Sub
Факториал:
Пример для версий Microsoft Visual Basic 6Используется рекурсивное определение факториала. Из-за арифметического переполнения при вычислении факториалов 13-16 вывод программы заканчивается на строке “12! = …”, после чего в отдельном не-консольном окне выдается сообщение “Run-time error ‘6’: Overflow”.
Option Explicit
Declare Function AllocConsole Lib "kernel32" () As Long
Declare Function FreeConsole Lib "kernel32" () As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _
nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
lpReserved As Any) As Long
Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long
Public Function Factorial(ByVal n As Integer) As Long
If (n = 0) Then
Factorial = 1
Else
Factorial = n * Factorial(n - 1)
End If
End Function
Private Sub Main()
'create a console instance
AllocConsole
'get handle of console output
Dim hOut As Long
hOut = GetStdHandle(-11&)
'output string to console output
Dim s As String
Dim i As Integer
For i = 0 To 16 Step 1
s = i & "! = " & Factorial(i) & vbCrLf
WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull
Next i
'make a pause to look at the output
Sleep 2000
'close the handle and destroy the console
CloseHandle hOut
FreeConsole
End Sub
Факториал:
Пример для версий Microsoft Visual Basic 6Используется итеративное определение факториала.
Option Explicit
Declare Function AllocConsole Lib "kernel32" () As Long
Declare Function FreeConsole Lib "kernel32" () As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _
nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
lpReserved As Any) As Long
Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long
Private Sub Main()
'create a console instance
AllocConsole
'get handle of console output
Dim hOut As Long
hOut = GetStdHandle(-11&)
'output string to console output
Dim s As String
Dim i As Integer
Dim f As Long
f = 1
s = "0! = 1" & vbCrLf
WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull
For i = 1 To 16 Step 1
f = f * i
s = i & "! = " & f & vbCrLf
WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull
Next i
'make a pause to look at the output
Sleep 2000
'close the handle and destroy the console
CloseHandle hOut
FreeConsole
End Sub
Числа Фибоначчи:
Пример для версий Microsoft Visual Basic 6Используется рекурсивное определение чисел Фибоначчи.
Option Explicit
Declare Function AllocConsole Lib "kernel32" () As Long
Declare Function FreeConsole Lib "kernel32" () As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _
nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
lpReserved As Any) As Long
Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long
Public Function Fibonacci(ByVal n As Integer) As Integer
If (n <= 2) Then
Fibonacci = 1
Else
Fibonacci = Fibonacci(n - 1) + Fibonacci(n - 2)
End If
End Function
Private Sub Main()
'create a console instance
AllocConsole
'get handle of console output
Dim hOut As Long
hOut = GetStdHandle(-11&)
'output string to console output
Dim s As String
Dim i As Integer
For i = 1 To 16 Step 1
s = Fibonacci(i) & ", "
WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull
Next i
s = "..." & vbCrLf
WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull
'make a pause to look at the output
Sleep 2000
'close the handle and destroy the console
CloseHandle hOut
FreeConsole
End Sub
Hello, World!:
Пример для версий QBasic 1.1, QuickBasic 4.50, bwBASIC 2.50PRINT "Hello, World!"
Факториал:
Пример для версий QBasic 1.1, QuickBasic 4.50Используется итеративное определение факториала. При вычислении 13! возникает арифметическое переполнение, и здесь поведение разных реализаций отличается: QBasic сообщает о переполнении, а QuickBasic просто выводит отрицательные значения. Кроме того, команда PRINT по умолчанию выводит по одному пробелу перед числом и после него.
DIM f AS LONG
f = 1
PRINT " 0 ! ="; f
FOR i = 1 TO 16:
f = f * i:
PRINT i; "! ="; f
NEXT i
END
Числа Фибоначчи:
Пример для версий QBasic 1.1, QuickBasic 4.50Используется рекурсивное определение чисел Фибоначчи. Каждый вызов команды PRINT
выводит аргументы в отдельную строку и добавляет пробел перед и после выводимого числа. В результате вывод программы имеет следующий вид:
1 ,
1 ,
2 ,
3 ,
5 ,
8 ,
13 ,
21 ,
34 ,
55 ,
89 ,
144 ,
233 ,
377 ,
610 ,
987 ,
…
DECLARE FUNCTION fibonacci (n)
FOR i = 1 TO 16:
PRINT fibonacci(i); ", "
NEXT i
PRINT "..."
FUNCTION fibonacci (n)
IF (n <= 2) THEN
fibonacci = 1
ELSE
fibonacci = fibonacci(n - 1) + fibonacci(n - 2)
END IF
END FUNCTION
Числа Фибоначчи:
Пример для версий QBasic 1.1, QuickBasic 4.50Уже вычисленные числа хранятся в массиве F и извлекаются оттуда для вычисления следующих. Для получения вывода программы в нужном формате числа в массиве конкатенируются в одну строку с нужными разделителями. Функция STR$
преобразует число в строку.
DIM F(16)
F(1) = 1
F(2) = 1
FOR i = 3 TO 16:
F(i) = F(i - 1) + F(i - 2)
NEXT i
DIM S AS STRING
S = ""
FOR i = 1 TO 16:
S = S + STR$(F(i)) + ", "
NEXT i
S = S + "..."
PRINT S
Числа Фибоначчи:
Пример для версий QBasic 1.1, QuickBasic 4.50Числа Фибоначчи вычисляются через формулу Бине. За счет погрешностей вычисления с плавающей точкой полученные числа могут незначительно отличаться от действительных; для устранения этого эффекта используется функция INT
, отбрасывающая дробную часть числа.
DECLARE FUNCTION FIBONACCI (n)
DIM S AS STRING
S = ""
FOR i = 1 TO 16:
S = S + STR$(INT(FIBONACCI(i) + .1)) + ","
NEXT i
S = S + "..."
PRINT S
FUNCTION FIBONACCI (n)
p1 = ((1 + SQR(5)) * .5) ^ n
p2 = ((1 - SQR(5)) * .5) ^ n
FIBONACCI = (p1 - p2) / SQR(5)
END FUNCTION
Факториал:
Пример для версий QBasic 1.1, QuickBasic 4.50По умолчанию для вычислений используется вещественный тип данных. Вывод программы имеет следующий вид:
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 3.99168Е+07
12! = 4.790016Е+08
13! = 6.227021Е+09
14! = 8.717829Е+10
15! = 1.307674Е+12
16! = 2.092279Е+13
DECLARE FUNCTION factorial (n)
FOR i = 0 TO 16:
PRINT STR$(i) + "! =" + STR$(factorial(i))
NEXT i
END
FUNCTION factorial (n)
IF n = 0 THEN
factorial = 1
ELSE
factorial = n * factorial(n - 1)
END IF
END FUNCTION
Hello, World!:
Пример для версий VB.NET 9 (2008), vbnc 2.4.2Module Module1
Sub Main()
Console.WriteLine("Hello, World!")
End Sub
End Module
Факториал:
Пример для версий VB.NET 9 (2008), vbnc 2.4.2Используется рекурсивное определение факториала.
Module Module1
Function Factorial(ByVal n As Integer) As Long
If n = 0 Then
Return 1
Else
Return n * Factorial(n - 1)
End If
End Function
Sub Main()
For i As Integer = 0 To 16
Console.WriteLine(i & "! = " & Factorial(i))
Next
End Sub
End Module
Числа Фибоначчи:
Пример для версий VB.NET 9 (2008), vbnc 2.4.2Используется рекурсивное определение чисел Фибоначчи.
Module Module1
Function Fibonacci(ByVal n As Integer) As Long
If n < 3 Then
Return 1
Else
Return Fibonacci(n - 1) + Fibonacci(n - 2)
End If
End Function
Sub Main()
For i As Integer = 1 To 16
Console.Write(Fibonacci(i) & ", ")
Next
Console.WriteLine("...")
End Sub
End Module
Квадратное уравнение:
Пример для версий QuickBasic 4.50PRINT "A = "
INPUT A
IF (A = 0) THEN
PRINT "Not a quadratic equation."
ELSE
PRINT "B = "
INPUT B
PRINT "C = "
INPUT C
D = B * B - 4 * A * C
IF (D = 0) THEN
PRINT "x = " + STR$(-B / 2! / A)
ELSE
IF (D > 0) THEN
PRINT "x1 = " + STR$((-B + SQR(D)) / 2! / A)
PRINT "x2 = " + STR$((-B - SQR(D)) / 2! / A)
ELSE
PRINT "x1 = (" + STR$(-B / 2! / A) + "," + STR$(SQR(-D) / 2! / A) + ")"
PRINT "x2 = (" + STR$(-B / 2! / A) + "," + STR$(-SQR(-D) / 2! / A) + ")"
END IF
END IF
END IF
Квадратное уравнение:
Пример для версий VB.NET 9 (2008), vbnc 2.4.2Module Module1
Sub Main()
Dim A, B, C, D As Integer
Dim p1, p2 As Double
Try
Console.Write("A = ")
A = Val(Console.ReadLine())
Console.Write("B = ")
B = Val(Console.ReadLine())
Console.Write("C = ")
C = Val(Console.ReadLine())
Catch ex As Exception
Console.WriteLine("Invalid input.")
Return
End Try
If A = 0 Then
Console.WriteLine("Not a quadratic equation.")
Return
End If
D = B * B - 4 * A * C
p1 = -B / 2.0 / A
p2 = Math.Sqrt(Math.Abs(D)) / 2.0 / A
If D = 0 Then
Console.Write("x = " & p1.ToString())
ElseIf D > 0 Then
Console.WriteLine("x1 = " & (p1 + p2).ToString())
Console.WriteLine("x2 = " & (p1 - p2).ToString())
Else
Console.WriteLine("x1 = (" & p1.ToString() & "," & p2.ToString() & ")")
Console.WriteLine("x2 = (" & p1.ToString() & ",-" & p2.ToString() & ")")
End If
End Sub
End Module
CamelCase:
Пример для версий vbnc 2.4.2В этом примере каждый символ строки проверяется на принадлежность к латинскому алфавиту и в случае отрицательного результата заменяется на пробел. После этого строка переводится в Proper Case (все слова пишутся прописными буквами и начинаются с заглавной), и наконец, все пробелы убираются из строки.
Module Module1
Sub Main()
Dim Text As String
Dim i As Long
Try
Text = LCase(Console.ReadLine())
Catch ex As Exception
Console.WriteLine("Invalid input.")
Return
End Try
For i = 1 To Len(Text) Step 1
If InStr("abcdefghijklmnopqrstuvwxyz", GetChar(Text, i)) = 0 Then
Text = Replace(Text, GetChar(Text, i), " ")
End If
Next
Console.WriteLine(Replace(StrConv(Text, vbProperCase), " ", ""))
End Sub
End Module
Hello, World!:
Пример для версий PureBasic 4.60“Hello, World!” с выводом в консоль.
OpenConsole() ; Создание консольного окна.
Print("Hello, World!") ; Вывод текста в консоль.
Input() ; Ожидание нажатия Enter.
Hello, World!:
Пример для версий PureBasic 4.60“Hello, World” в окне программы.
OpenWindow(0, 0, 0, 200, 100, "Hello, World", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
TextGadget(0, 10, 40, 180,16, "Hello, World", #PB_Text_Center)
Repeat
Event = WaitWindowEvent() ; ID события программы.
Until Event = #PB_Event_CloseWindow ; Если получено событие закрытия окна, то прерываем цикл.
Hello, World!:
Пример для версий AMOS Professional, Easy AMOSPrint "Hello World"
Hello, World!:
Пример для версий VBA 6.3, VBA 6.5Этот код создает макрос под названием “Hello”, выполнение которого выводит окно с сообщением “Hello, World!” и единственной кнопкой “OK”.
Sub Hello()
MsgBox ("Hello, World!")
End Sub
Факториал:
Пример для версий VBA 6.3, VBA 6.5Факториал вычисляется итеративно; значения накапливаются в строковой переменной и затем выводятся в одном окне. &
— оператор конкатенации, CStr
преобразует число в строку (несмотря на то, что факториал хранится как число с плавающей точкой, выводится он без дробной части), Chr
возвращает символ с заданным ASCII-кодом.
Sub Factorial()
Dim f As Double
Dim res As String
f = 1
For i = 0 To 16
res = res & CStr(i) & "! = " & CStr(f) & Chr(10)
f = f * (i + 1)
Next i
MsgBox (res)
End Sub
Числа Фибоначчи:
Пример для версий VBA 6.3, VBA 6.5Используется рекурсивное вычисление чисел Фибоначчи. Отметим, что в этом случае тип счетчика цикла i
приходятся объявлять в явном виде, иначе он принимает тип Variant
и не может быть передан в функцию вместо типа Integer
.
Public Function Fibonacci(N As Integer) As Integer
If N < 2 Then
Fibonacci = N
Else
Fibonacci = Fibonacci(N - 1) + Fibonacci(N - 2)
End If
End Function
Sub Fib()
Dim res As String
Dim i As Integer
For i = 1 To 16
res = res & CStr(Fibonacci(i)) & ", "
Next i
MsgBox (res & "...")
End Sub
CamelCase:
Пример для версий VBA 6.3, VBA 6.5Sub CamelCase()
Dim Text As String
Text = LCase(Application.InputBox("Enter Text"))
For i = 1 To Len(Text) Step 1
If InStr("abcdefghijklmnopqrstuvwxyz", Mid(Text, i, 1)) = 0 Then
Text = Replace(Text, Mid(Text, i, 1), " ")
End If
Next i
MsgBox (Replace(StrConv(Text, vbProperCase), " ", ""))
End Sub
Hello, World!:
Пример для версий VBScript 5.7, VBScript 5.8Программа выводит сообщение в консоль и запускается командой cscript.exe
.
WScript.Echo("Hello, World!")
Факториал:
Пример для версий VBScript 5.7, VBScript 5.8Факториал вычисляется итеративно. Обратите внимание на то, что переполнения переменной-факториала не происходит, несмотря на то, что ее тип определяется автоматически.
f = 1
For i = 0 To 16
WScript.Echo(i & "! = " & f)
f = f * (i + 1)
Next
Числа Фибоначчи:
Пример для версий VBScript 5.7, VBScript 5.8Числа Фибоначчи вычисляются рекурсивно. Обратите внимание на то, что многие элементы, типичные для Visual Basic, здесь отсутствуют: объявление переменных и типа значения, возвращаемого функцией, явное преобразование чисел в строку для конкатенации и т.д.
Function Fibonacci(N)
If N < 2 Then
Fibonacci = N
Else
Fibonacci = Fibonacci(N - 1) + Fibonacci(N - 2)
End If
End Function
For i = 1 To 16
res = res & Fibonacci(i) & ", "
Next
WScript.Echo (res & "...")
CamelCase:
Пример для версий VBScript 5.7, VBScript 5.8В отличие от многих других реализаций Visual Basic, в VBScript нет функции StrConv
. Поэтому проще всего выполнить нужное преобразование строки посимвольно.
Text = LCase(WScript.StdIn.ReadLine)
CamelCase = ""
WasSpace = True
For i = 1 To Len(Text)
Ch = Mid(Text, i, 1)
If InStr("abcdefghijklmnopqrstuvwxyz", Ch) = 0 Then
WasSpace = True
Else
If WasSpace Then
CamelCase = CamelCase & UCase(Ch)
Else
CamelCase = CamelCase & Ch
End If
WasSpace = False
End If
Next
WScript.Echo CamelCase
Квадратное уравнение:
Пример для версий VBScript 5.7, VBScript 5.8Function GetInt()
Input = WScript.StdIn.ReadLine
If not IsNumeric(Input) Then
WScript.Echo "Coefficient is not a number."
WScript.Quit
End If
GetInt = CInt(Input)
End Function
A = GetInt()
If A = 0 Then
WScript.Echo "Not a quadratic equation."
WScript.Quit
End If
B = GetInt()
C = GetInt()
D = B * B - 4 * A * C
p1 = -B / 2.0 / A
p2 = Sqr(Abs(D)) / 2.0 / A
If D = 0 Then
WScript.Echo "x = " & p1
Else
If D > 0 Then
WScript.Echo "x1 = " & (p1 + p2)
WScript.Echo "x2 = " & (p1 - p2)
Else
WScript.Echo "x1 = (" & p1 & ", " & p2 & ")"
WScript.Echo "x2 = (" & p1 & ", " & -p2 & ")"
End If
End If
Квадратное уравнение:
Пример для версий VBA 6.3, VBA 6.5Function GetInt(Name As String) As Integer
Dim Coef As String
Coef = Application.InputBox("Enter Coefficient " & Name)
GetInt = CInt(Coef)
End Function
Sub Quadratic()
Dim A As Integer, B As Integer, C As Integer, D As Integer
A = GetInt("A")
If A = 0 Then
MsgBox ("Not a quadratic equation.")
Exit Sub
End If
B = GetInt("B")
C = GetInt("C")
D = B * B - 4 * A * C
Dim p1 As Double, p2 As Double
p1 = -B / 2# / A
p2 = Sqr(Abs(D)) / 2# / A
If D = 0 Then
MsgBox ("x = " & CStr(p1))
Else
If D > 0 Then
MsgBox ("x1 = " & CStr(p1 + p2) & Chr(10) & "x2 = " & CStr(p1 - p2))
Else
MsgBox ("x1 = (" & CStr(p1) & ", " & CStr(p2) & ")" & Chr(10) & "x2 = (" & CStr(p1) & ", " & CStr(-p2) & ")")
End If
End If
End Sub
Hello, World!:
Пример для версий bwBASIC 2.50В программах номера строк проставляются, при вводе команд в интерактивном режиме интерпретатора — нет.
10 PRINT "Hello, World!"
Факториал:
Пример для версий bwBASIC 2.50Используется итеративная схема вычисления факториала. Реализация Bywater BASIC отличается тем, что тип переменной объявляется в явном виде только для массивов; в остальных случаях используется вывод типов. Переполнения при вычислении факториалов не возникает.
f = 1
FOR i = 0 TO 16
PRINT i; "! ="; f
f = f * (i + 1)
NEXT i
Числа Фибоначчи:
Пример для версий bwBASIC 2.50Используется итеративное вычисление чисел Фибоначчи с их запоминанием в массиве. Обратите внимание на явное объявление массива и на то, что имя строковой переменной должно заканчиваться на $
.
DIM F(16)
F(1) = 1
F(2) = 1
FOR i = 3 TO 16
F(i) = F(i - 1) + F(i - 2)
NEXT i
S$ = ""
FOR i = 1 TO 16
S$ = S$ + STR$(F(i)) + ","
NEXT i
S$ = S$ + " ..."
PRINT S$
Комментарии
]]>blog comments powered by Disqus
]]>