Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Анализ языков программирования

.docx
Скачиваний:
20
Добавлен:
24.07.2017
Размер:
76.25 Кб
Скачать

Во-первых, выбран такой синтаксис языка программирования, чтобы из-за случайных опечаток во время набора программы минимизировать вероятность возникновения недиагностируемых ошибок. В отличие от BARSIC, такие языки, как FORTRAN, JavaScript, BASIC в очень сильной степени подвержены этим ошибкам из-за правил автоматического приведения типов, а также свободной типизации (для JavaScript и Visual BASIC). В несколько меньшей степени эти ошибки характерны для C и C++, а в еще меньшей степени – для Java (за исключением работы со строками, где такие ошибки для Java типичны) и Object PASCAL (Delphi).

Во-вторых, синтаксис языка программирования BARSIC построен на принципе максимальной понятности для человека и принципе автодокументирования программного кода. Это означает, что сам текст программы в подавляющем большинстве случаев дает возможность понять, что имел в виду программист. Поэтому в программах, написанных на BARSIC, почти не надо вставлять комментарии, что не только экономит время, но и избавляет от неприятной нетворческой работы, которую так не любит большинство программистов. Во всех других известных нам языках программирования этот принцип не выполняется.

В-третьих, в BARSIC на уровне среды встроена система перехвата и обработки так называемых исключительных ситуаций. При этом если программист заранее не предусмотрел действий при возникновении деления на ноль, ввода вместо числа другого символа и т.п., программа не завершит работу в аварийном режиме, как бывает в большинстве программ, написанных на других языках программирования. Среда BARSIC выдаст диагностику ошибки, после чего можно будет повторить ввод с исправлением неправильно введенных значений или символов и продолжить работу. Обработка исключительных ситуаций имеется в большинстве современных языков программирования, но BARSIC обеспечивает дополнительную защиту от исключений на уровне исполняющей среды даже в тех случаях, когда программы, написанные на C++ или Object PASCAL, окажутся неработоспособны.

В-четвертых, в интегрированную среду BARSIC встроена поддержка работы с пользовательским интерфейсом методом визуального проектирования. Это делает BARSIC средой RAD (Rapid Application Development) —средством сверхбыстрой разработки программ.

[редактировать]

Языки программирования и интегрированные среды

По словам создателя первой интегрированной среды FRAMEWORK, интегрированная среда —это такая прикладная программа, что пользователь, запустив ее в начале рабочего дня, находит в ней все необходимые для работы ресурсы и поэтому не выходит из интегрированной среды до самого конца рабочего дня. Конечно, это определение не очень корректно и несколько идеализирует ситуацию, но его общий смысл достаточно ясен.

Основная особенность интегрированных сред —высокая степень интерактивности. Она достигается за счет интеграции в единое целое различных программных ресурсов, отсюда и происходит название. Так, интегрированная среда какого-либо компилятора языка программирования (программы, которая из текста данного языка программирования создает исполняемую программу) обычно содержит текстовый редактор и собственно компилятор с системой диагностики ошибок компиляции. Кроме того, в ней обычно имеется также отладчик —интерпретатор данного языка, выполняющий программу строчка за строчкой и имеющий ряд других специальных возможностей.

Одно из активно развивающихся направлений, визуальное проектирование —полностью основано на использовании возможностей интегрированной среды. Пользователь в интерактивном режиме выбирает необходимые для его программы объекты языка программирования и устанавливает между ними связи. Популярность таких языков как Visual BASIC (Microsoft), а также Object PASCAL (среды Delphi и Kylix, Borland), не случайна. Даже неопытный программист, не знающий кроме BASIC других языков программирования и никогда не программировавший под Windows, может за два-три дня с помощью Visual BASIC создать прикладную программу, работающую под Windows. А вот программисту высокого класса, не программировавшему до того под Windows, с помощью C++ зачастую приходится для создания такой же программы затратить недели, а то и месяцы. Правда, Visual BASIC обладает рядом существенных ограничений. С помощью сред визуального проектирования можно создавать весьма сложные программы, не набрав с клавиатуры ни строчки кода.

Однако у всех программ, созданных на основе традиционных языков программирования процедурного типа, имеется один и тот же недостаток. Для них исполняемый код —это одно, а обрабатываемые программой данные —совсем другое. Действительно, код программы содержится в файле с расширением EXE, а данные —либо в специальных файлах данных (как правило, в текстовом либо двоичном виде во внутреннем представлении компьютера), либо вводятся с клавиатуры или с какого либо другого внешнего устройства.

А теперь зададим вопрос: как быть, если пользователь должен дать исполняемой программе информацию, которую можно рассматривать как “добавку” к тексту программы? Например, мы хотим, чтобы на экране был построен график функции, и в подобной программе обеспечиваем все необходимые сервисные возможности. Однако формулу для функции должен задать сам пользователь, и заранее неизвестно, какая она будет.

Совершенно очевидно, что подобного рода задачи можно решать только с помощью системы-интерпретатора. Но “за все приходится платить”. Компилятор переводит текст программы в исполняемый код, который может работать и без программы-компилятора. Программы же, созданные на основе языков интерпретирующего типа, могут исполняться только под управлением программы-интерпретатора. Кроме того, они работают медленнее скомпилированных, так как интерпретация занимает дополнительное время. Однако во многих случаях это несущественно.

[редактировать]

  1. Basic ГОДИТСЯ ДЛЯ НАЧАЛА ТОЛЬКО

Дата создания:1963

Повлиял на:ПРОФТ

Типизация:бестиповая

Диалекты:

Applesoft BASIC

Commodore BASIC

GW-BASIC

MSX BASIC

Microsoft BASIC

Turbo BASIC

Visual Basic

Реализации и версии:

Altair BASIC

AmigaBASIC

Applesoft BASIC Interpreter

in Javascript

Atari Microsoft BASIC I/II

BASICA

Cassette BASIC

Color BASIC

Commodore BASIC

DOS33

EXIL

FreeBASIC

GW-BASIC

Galaksija BASIC

MBASIC

MSX BASIC

Microsoft Visual Basic

Mono VB.NET

NBASIC

QBasic

QuickBASIC

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 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

Всеобщую же популярность язык получил с его появления на микрокомпьютере Altair 8800. Многие языки программирования были слишком громоздкими, чтобы умещаться в небольшой памяти. Для машин с таким медленным носителем как бумажная лента, аудиокассета и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой.

В 1975 году Майкрософт (тогда это были лишь двое — Билл Гейтс и Пол Аллен, при участии Монте Давидова) выпустила Altair BASIC. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.

В этот период было создано несколько новых версий Бейсика. Майкрософт продавала несколько версий BASIC для MS-DOS/PC-DOS, включая BASICA, GWBASIC и Quick BASIC (QBASIC).Компания Borland в 1985 выпустила Turbo BASIC 1.0 (его наследники впоследствии продавались другой компанией под именем PowerBASIC). На домашних компьютерах появились различные расширения Бейсика, обычно включающие средства для работы с графикой, звуком, выполнением DOS-команд, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совершенно иная система (см. например, GRASS).

Однако, начиная с конца 80-х, новые компьютеры стали намного более сложными и предоставляли возможности (такие как графический интерфейс пользователя), которые делали Бейсик уже не столь удобным для программирования. Бейсик начал сдавать свои позиции, несмотря на то, что огромное количество его версий ещё использовалось и продавалось.

Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft. Он стал одним из наиболее часто используемых языков на платформе Microsoft Windows. Позже был создан вариант под названием WordBasic, используемый в MS Word до появления Word 97. Вариант Visual Basic for Applications (VBA) был встроен в Excel 5.0 в 1993 году, затем в Access 95 в 1995-ом, а после и во все остальные инструменты, входящие в пакет Office — в 1997-ом. Internet Explorer 3.0 и выше, а также Microsoft Outlook включали интерпретатор языка VBScript. В полный вариант пакета OpenOffice.org также включён интерпретатор Бейсика.

[редактировать]

Элементы синтаксиса: Комментарий до конца строки '

Регистрозависимость Нет

Регулярное выражение идентификатора переменной [_a-zA-Zа-яёщА-ЯЁЩ][_a-zA-Zа-яёщА-ЯЁЩ0-9]*

Регулярное выражение идентификатора функции [_a-zA-Zа-яёщА-ЯЁЩ][_a-zA-Zа-яёщА-ЯЁЩ0-9]*

Присваивание значения переменной =

Объявление переменной Dim variable

Группировка выражений ()

Равенство = или ==

Неравенство <> или ><

Сравнение = < > <= =< >= => <>

Вызов функции Call f(a,b...)

Если - то if condition then ... end if

Если - то - иначе if condition then ... else ... end if

Бесконечный цикл while condition ... wend

Цикл for - next для диапазона целых чисел с инкрементом на 1 FOR i= 1 TO 10 STEP 1 ... NEXT i

Цикл for - next для диапазона целых чисел с декрементом на 1 FOR i= 10 TO 1 STEP -1 ... NEXT i

[редактировать]

Примеры:

[редактировать]

Hello, World!: Пример для версий Microsoft Visual Basic 6

Microsoft 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

PRINT "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.2 Module 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.50 PRINT "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.2

Module 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 CamelCase, Text As String

Dim i As Long

Try

Text = Console.ReadLine()

Catch ex As Exception

Console.WriteLine("Invalid input.")

Return

End Try

For i = 1 To Len(Text) Step 1

If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", GetChar(Text, i)) = 0 Then

Text = Replace(Text, GetChar(Text, i), " ")

End If

Next

Console.WriteLine(Replace(StrConv(Text, vbProperCase), " ", ""))

End Sub

End Module

[редактировать]

bc

Создан под влиянием:C

Парадигма:

императивная

на уровне значений

скалярная

строгая

Типизация:

неявная

типизированная

Реализации и версии:

GNU bc

bc — язык вычислений произвольной точности с C-подобным синтаксисом.

Часто используется в Unix-системах в качестве калькулятора с интерфейсом командной строки.

[редактировать]

Элементы синтаксиса: Комментарий до конца строки #

Комментарии, которые не могут быть вложенными /* ... */

Регулярное выражение идентификатора переменной [a-z][_a-z0-9]*

Присваивание значения переменной =

Объявление переменной variable

Объявление переменной с присваиванием значения variable = value

Блок { ... }

Равенство ==

Неравенство !=

Сравнение < > <= >=

Определение функции define f(p1, p2, ...) ...

Вызов функции f(a, b, ...)

Вызов функции без параметров f()

Если - то if (condition) ...

Если - то - иначе if (condition) ... else ...

Бесконечный цикл while (1) ...

Цикл с предусловием while (condition) ...

Цикл for - next для диапазона целых чисел с инкрементом на 1 for (i = 1; i <= 10; i++) ...

Цикл for - next для диапазона целых чисел с декрементом на 1 for (i = 10; i > 0; i--) ...

[редактировать]

Примеры:

[редактировать]

Факториал: Пример для версий GNU bc 1.06

Используется рекурсивное определение факториала. ! /usr/bin/env bc

define factorial(n) {

if (n == 0) return(1);

return(n * factorial(n - 1));

}

for (n = 0; n <= 16; n++) {

print n; "! = "; factorial(n);

} quit Hello, World!: Пример для версий GNU bc 1.06 print "Hello, World!\n";

[редактировать]

Числа Фибоначчи: Пример для версий GNU bc 1.06

Используется рекурсивное определение чисел Фибоначчи.

define fibonacci(n) {

if (n <= 2) return(1);

return(fibonacci(n-1)+fibonacci(n-2));

}

for (n = 1; n <= 16; n++) {

print fibonacci(n); ", "

} print "..." quit

[редактировать]

Числа Фибоначчи: Пример для версий GNU bc 1.06

Используется формула Бине. Следует отметить, что bc — калькулятор произвольной точности, поэтому выводить числа приходится с округлением до целого. Для этого устанавливается точность 0 знаков после десятичной точки, и x округляется вручную (встроенной функции округления в bc нет).

for (n = 1; n <= 16; n++) {

scale = 10

x = (((1 + sqrt(5)) * .5) ^ n - ((1 - sqrt(5)) * .5) ^ n) / sqrt(5)

scale = 0

print (x+0.5)/1; ", "

} print "..."

[редактировать]

Boo

Дата создания:2003

Создан под влиянием:Python

Парадигма:

императивная

на уровне значений

объектно-ориентированная

скалярная

Типизация:

вывод типов

неявная

статическая

типизированная

Принятые расширения файлов:

.boo

Boo — объектно-ориентированный статически типизированный язык программирования, разработка которого началась в 2003 году. Синтаксис языка Boo похож на синтаксис языка Python.

Среди особенностей языка стоит отметить мультиметоды, генераторы, макросы, замыкания, опциональная неявная типизация; функции являются first-class объектами.

Boo распространяется под open-source лицензией в стиле MIT/BSD.

Boo может использоваться с Microsoft .NET или с Mono.

[редактировать]

Элементы синтаксиса: Комментарий до конца строки //

Комментарии, которые могут быть вложенными /*...*/

Присваивание значения переменной =

Объявление переменной variable as type

Объявление переменной с присваиванием значения variable = value или variable as type = value

Блок отступ в начале строки

Равенство ==

Неравенство not

Сравнение < > <= >=

Определение функции def f(p1 as type1; p2 as type2; ...) : ... return value

Вызов функции f(a, b, ...)

Вызов функции без параметров f()

Последовательность конец строки

Если - то if condition: ...

Если - то - иначе if condition: ... else condition: ...

Бесконечный цикл while true: ...

Цикл с предусловием while condition : ...

Цикл for - next для диапазона целых чисел с инкрементом на 1 for i in range(0, 10): ...

[редактировать]

IDE/Редакторы:

SharpDevelop

[редактировать]

Примеры: =

[редактировать]

Hello, World!: Пример для версий boo 0.7.6.2237, boo 0.8.2

print("Hello, World!")

[редактировать]

Факториал: Пример для версий boo 0.7.6.2237, boo 0.8.2

Используется рекурсивное определение факториала. Из-за того, что функция factorial вызывается рекурсивно, для нее необходимо объявление типа возвращаемого значения.

def factorial(n as long) as long:

if n == 0:

return 1

else:

return n * factorial(n - 1)

for n in range(0, 17): print("${n}! = ${factorial(n)}")

[редактировать]

Факториал: Пример для версий boo 0.8.2

В примере используется итеративное определение факториала. Переменная fact объявляется как принадлежащая к типу long в явном виде; иначе ее тип будет автоматически определен как int, и вычисление 13! вызовет ошибку переполнения.

fact as long = 1 for i in range(17):

print("${i}! = ${fact}")

fact = fact * (i+1)

[редактировать]

Числа Фибоначчи: Пример для версий boo 0.8.2

Используется итеративное определение чисел Фибоначчи.

a = array(int, 16) a[0] = a[1] = 1 for i in range(2,16):

a[i] = a[i-1] + a[i-2]

s="" for i in range(16):

s = s + a[i] + ", "

print(s + "...")

[редактировать]

Числа Фибоначчи: Пример для версий boo 0.8.2

В этом примере показано использование генератора fib — конструкции, которая инициализирует внутренние переменные a и b и при каждом следующем обращении изменяет их значения и выдает наружу. Функция zip “склеивает” элементы двух перечислений (в данном случае range(16) и генератора) в пары, создавая новое перечисление.

def fib():

a, b = 0, 1

while true:

yield b

a, b = b, a + b

s="" for i, n in zip(range(16), fib()):

s = s+n+", "

print(s+"...")

[редактировать]

Квадратное уравнение: Пример для версий boo 0.8.2

A = int.Parse(prompt("A = ")) if A==0 :

print "Not a quadratic equation."

return

B = int.Parse(prompt("B = ")) C = int.Parse(prompt("C = ")) D = B*B-4*A*C if D==0 :