Разное

Visual studio программирование: Урок № 3. Создание первого проекта в MS Visual Studio

Содержание

Среда программирования Visual C++ — презентация онлайн

Похожие презентации:

Интегрированная среда разработки программного обеспечения Microsoft Visual Studio. Платформа.NET. Среда Visual Studio.NET

Язык программирования C#

Основы программирования на C#. Раздел № 4

Платформа .NET и ее применение для объектно-ориентированного подхода к программированию

Язык C#

Системное программирование для Microsoft.NET на языке C#. Лекция 1

Технологии программирования. (Задание 1)

Начало работы с C#. (Модуль 1)

Основы С#. Платформа Microsoft.NET. Основные понятия. Пространство имен. (Лекция 1)

Разработка приложений Windows Forms в среде .NET

Среда
программирования Visual
C++
Выполнил: Евгений Токарев
Среда программирования (IDE)
IDE( Integrated development environment, Интегрированная среда разработки) комплекс программных средств, используемый программистами для разработки
программного обеспечения (ПО).


Среда разработки включает в себя:
текстовый редактор,
компилятор и/или интерпретатор,
средства автоматизации сборки,
отладчик.
Примеры
Для нескольких языков программирования:
Microsoft Visual Studio
Eclipse
Xcode
Embarcadero RAD Studio
Для одного языка программирования:
Delphi
Dev-C
Microsoft Visual Studio
Microsoft Visual Studio — линейка продуктов компании Microsoft,
включающих интегрированную среду разработки программного
обеспечения и ряд других инструментальных средств. Данные
продукты позволяют разрабатывать как консольные приложения,
так и приложения с графическим интерфейсом, в том числе с
поддержкой технологии Windows Forms, а также веб-сайты, вебприложения и веб-службы.
Компоненты
Visual Studio включает один или несколько компонентов из следующих:
Visual Basic .NET, а до его появления — Visual Basic
Visual C++
Visual C# (включен начиная с Visual Studio .NET)
Visual F# (включен начиная с Visual Studio 2010)
Многие варианты поставки также включают:
Microsoft SQL Server либо Microsoft SQL Server Express
Пример рабочего окна Visual C++
. NET Framework
.NET Framework — программная платформа, выпущенная
компанией Microsoft в 2002 году. Основой платформы является
общеязыковая среда исполнения Common Language Runtime (CLR),
которая подходит для разных языков программирования.
Функциональные возможности CLR доступны в любых языках
программирования, использующих эту среду.
Практически все компоненты Visual Studio работают на этой
платформе.
Архитектура .NET
Программа для .NET Framework, написанная на любом
поддерживаемом языке программирования, сначала переводится
компилятором в единый для .NET промежуточный байт-код
Common Intermediate Language (CIL). В терминах .NET получается
сборка, англ. assembly. Затем код либо исполняется виртуальной
машиной Common Language Runtime (CLR), либо транслируется
утилитой NGen.exe в исполняемый код для конкретного целевого
процессора.
Архитектура .NET
Спасибо за внимание
Источники:
www.wikipedia.org
www.visualstudio. com

English     Русский Правила

Visual Basic — диалект языка программирования Basic

Visual Basic (VB) — является языком программирования третьего поколения (событийный язык программирования) и среда разработки от Microsoft для модели программирования COM. Этот язык был получен из BASIC и допускает быструю прикладную разработку (RAD) графического интерфейса пользователя (GUI), доступ к базам данных при помощи DAO, RDO, ADO, создание элементов управления ActiveX и объектов. Языки сценариев (VBA, VBScript) синтаксически подобны Visual Basic, но отличаются от него.

Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка — языка Бэйсик, у которого есть немало диалектов. В то же время Visual Basic — современный язык программирования, сочетающий процедуры и элементы объектно-ориентированных и компонетно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.

Программист может создавать приложение, используя компоненты предоставленные в Visual Basic. Программы, написанные в Visual Basic, могут также использовать Windows API (требует объявление внешних функций).

Последняя версия (шестая) была выпущена в 1998 году. Корпорация Microsoft продлила поддержку продукта до 2008, и объявила преемника — Visual Basic.NET.

Языковые особенности

Visual Basic легко использовать для изучения и использования. Он позволяет разрабатывать не только простые приложения с графическим интерфейсом, но и создавать сложные приложения. Программирование в VB представляет собой сочетание визуальных компонентов и контролов, определение атрибутов и действий для компонентов, написание дополнительного кода для расширения функциональных возможностей. Определенные по умолчанию значения и действия для компонентов позволяют создать простую программу без написания кода программистом. Ранние версии имели определенные проблемы с производительностью программ, но с использованием современных компьютеров и компиляцией собственного кода данная проблема стала менее значимой.

Компиляция программ была введена в Visual Basic 5, но при этом исполняемые программы до сих пор требуют наличия определенных библиотек для запуска. Эти библиотеки включены в Windows, начиная с Windows 2000, но для более ранних версий Windows они должны поставляться вместе с программой.

Формы создаются при помощи технологии «перетащи и брось» (drag and drop). Элементы управления просто размещаются на форме (например, поля ввода, кнопки, и т.д.). Элементы управления имеют свои атрибуты и обработчики событий. Многие атрибуты могут быть изменены во время исполнения программы, что позволяет создавать программы, динамически реагирующие на действия пользователя.

Visual Basic может создать исполняемые программы (EXE файлы), элементы управления ActiveX, библиотеки DLL, но, прежде всего, используется для разработки Windows приложений. Диалоговые окна с ограниченными функциональными возможностями могут использоваться для обеспечения подсказок. Элементы управления обеспечивают основные функциональные возможности приложения, а программист может расширить логику программы при помощи обработчиков событий. Например, выпадающий список автоматически отображает список и позволяет пользователю выбрать элемент. Обработчик событий вызывается для исполнения дополнительного кода в зависимости от выбранного элемента.

Язык использует справочную информацию для сбора мусора, имеет большую библиотеку сервисных объектов, объектно-ориентированную разработку. В отличие от многих других языков программирования, Visual Basic не зависим от регистра. Сравнение строк зависит от регистра, но может быть выполнено без учета регистра.

Компилятор Visual Basic поставляется вместе с другими языками Visual Studio (C, C++), но ограничения в интегрированной среде разработки не позволяют создание некоторых видов приложений.

Характеристики Visual Basic

Visual Basic обладает следующими чертами:

  • булевская постоянная «истина» имеет числовое значение −1 и «ложь» значение 0, потому что тип Boolean хранится как 16-разрядное целое число со знаком. Они взаимосвязаны между собой через логическую операцию Not иначе говоря Истина = Не Ложь.
  • логические и битовые операторы объединены. Этим он непохож ни на один C подобный язык (Java, Perl).
  • массивы объявляются с определением верхней и нижней границ, как это делается в Pascal и Fortran. Возможно, при использовании оператора Option Base, установить нижнюю границу по умолчанию, но это приводит к запутанности программ. Нижняя граница массивов не ограничена 0 или 1 и можно устанавливать более низкие границы. В Visual Basic .NET и VBScript нижняя граница фиксирована.
  • сильная интеграция с операционной системой Windows и COM.
  • целые числа автоматически преобразуются в вещественные при использовании деления (/). Оператор (\) производит деление с усечением дробной части.
  • для переменных, которые были объявлены без указания типа, используется по умолчанию тип
    variant
    . Но при использовании оператора Deftype можно установить иной тип по умолчанию ( DefInt, DefBool, DefVar, DefObj, DefStr и др. ). Тип по умолчанию может быть отменен для переменной при использовании специального символа-суффикса в имени переменной.

Эволюция Visual Basic

VB 1.0 появился в 1991 году. Используемый в нём принцип связи языка и графического интерфейса был разработан Аланом Купером (Alan Cooper) и реализован в прототипе Tripod (также известном как Ruby).

  • май 1991 — выпущен Visual Basic 1.0 для Microsoft Windows
  • сентябрь 1992 — выпущен Visual Basic 1.0 под DOS. Он не был полностью совместим с Windows-версией VB, поскольку по сути являлся следующей версией QuickBASIC и работал в текстовом режиме экрана
  • ноябрь 1992 — выпущен Visual Basic 2.0. Среда разработки стала проще в использовании и работала быстрее
  • летом 1993 — вышел в свет Visual Basic 3.0 в версиях Standard и Professional. В состав поставки входил движок для работы с базами данных Access
  • август 1995 — Visual Basic 4.0 — версия, которая могла создавать как 32-х так и 16-разрядные Windows-программы. Кроме того, появилась возможность писать на VB классы, а также возможность компиляции в «родной» для процессора машинный код, что значительно увеличило скорость выполнения программ
  • февраль 1997 — Visual Basic 5.0 — версия, в которой стало возможно делать свои компоненты
  • 1998 — версия 6.0 — 6.3 — появилась русская версия, с возможностью писать имена переменных и процедур кириллицей.
  • 2001 — Visual Basic .NET, вместе с .NET Framework
  • 2003 — Visual Basic .NET 2003, вместе с .NET Framework 1.1
  • конец октября 2005 — выпущена Visual Studio 2005, включающая Visual Basic .NET 2005. В это же время выпущен .NET Framework 2.0 и Microsoft SQL Server 2005. Немногим позже появилась версия Visual Basic Express — бесплатная редакция VB.NET 2005

Основные разновидности Visual Basic

Корпорация Microsoft разработала разновидности Visual Basic для создания сценариев. Со временем оригинальный Visual Basic был заменен версией . NET.

  • Классический Visual Basic (версии 5-6) — язык очень сильно привязан к своей среде разработки и к операционной системе Windows, являясь исключительно инструментом написания Windows-приложений. Привязка к среде заключается в том, что существует большое количество средств, предназначенных для помощи и удобства программирования: встроенный отладчик, просмотр переменных и структур данных на лету, окно отладки, всплывающая подсказка при наборе текста программы. Все эти преимущества делают бесполезным и даже невозможным использование Visual Basic вне среды разработки, например в обычном текстовом редакторе
  • Visual Basic for Applications (VBA) —средство программирования, практически ничем не отличающееся от классического Visual Basic, которое предназначено для написания макросов и других прикладных программ для конкретных приложений. Наибольшую популярность получил благодаря своему использованию в пакете Microsoft Office. Широкое распространение Visual Basic for Applications в сочетании с изначально недостаточным вниманием к вопросам безопасности привело к широкому распространению макровирусов
  • Visual Basic Scripting Edition (VBScript) — скриптовый язык, являющийся несколько усечённой версией обычного Visual Basic. Используется в основном для автоматизации администрирования систем Windows, а также для создания страниц ASP и сценариев для Internet Explorer
  • Visual Basic .NET — преемник Visual Basic 6.0 и часть платформы Microsoft .NET

CamelCase:

Пример для версий VBA 6.3, VBA 6.5

Sub 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!:

Пример для версий 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

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

Hello, World!:

Пример для версий VB.NET 9 (2008), vbnc 2.4.2

Module Module1
    Sub Main()
        Console.WriteLine("Hello, World!")
    End Sub
End Module

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

Факториал:

Пример для версий 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

Факториал:

Пример для версий 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

Используется рекурсивное определение факториала. Из-за арифметического переполнения при вычислении факториалов 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

Числа Фибоначчи:

Пример для версий 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

Числа Фибоначчи:

Пример для версий 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

Квадратное уравнение:

Пример для версий 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 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

Квадратное уравнение:

Пример для версий VBScript 5.7, VBScript 5.8

Function 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.5

Function 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

Пример программы Visual Basic .

NET

Первая программа, которую нужно написать, одинакова для всех языков: распечатайте слова привет мир

— Брайан В. Керниган и Деннис М. Ритчи, Язык программирования C

По традиции книги по программированию начинаются с привет, мир пример. Идея состоит в том, что вход и запуск программы — любой программы — может быть самым большим препятствие, с которым сталкиваются опытные программисты, приближающиеся к новой платформе или язык. Без преодоления этого препятствия ничто другое не может последовать. Эта глава содержит три таких примера: один создает консоль приложение, которое создает приложение с графическим интерфейсом, и одно, которое создает браузерное приложение. Каждый пример стоит отдельно и может быть запущен как есть. Консольное приложение и приложение с графическим интерфейсом могут быть скомпилированы из командной строки (да, Visual Basic .NET имеет компилятор командной строки!). Для браузерного приложения требуется компьютер с выходом в Интернет. Информационный сервер (IIS).

привет, мир

Это любимая программа в мире пример, переведенный на Visual Basic .NET:

 Система импорта
Общий модуль Привет
   Публичная вспомогательная основная( )
      Console.WriteLine("привет, мир")
   Конец сабвуфера
Конечный модуль 

Эта версия привет, мир является консольное приложение — это отображает свой вывод в окне командной строки Windows. Компилировать эту программу, введите ее с помощью любого текстового редактора, например Windows Блокнот, сохраните его в файле, имя которого заканчивается на .vb , например Hello.vb , и скомпилируйте его из командной строки Windows с помощью этой команды:

 vbc Hello.vb 

Команда vbc вызывает Visual Basic .NET компилятор командной строки, который поставляется с .NET Framework SDK, и указывает ему скомпилировать файл, указанный в аргументе командной строки. Компиляция Hello.vb создает файл Hello.exe . После компиляции введите Hello в командной строке для запуска вашей программы. На рис. 1-1 показаны результаты компиляции и запуск этой программы.

Рис. 1-1. Компиляция и запуск hello, world

Если вы привыкли программировать на Visual Basic 6, вы можете увидеть даже из этой маленькой программы, что Visual Basic изменился резко. Вот разбивка того, что происходит в этот код.

Первая строка:

 Imports System 

указывает, что программа может использовать один или несколько типов, определенных в Система пространство имен . (Типы сгруппированы в пространства имен, чтобы избежать конфликтов имен и для группировки родственных типов вместе.) В частности, привет, программа world использует класс Console, который определен в пространство имен системы. Оператор Imports просто удобство. Это не нужно, если разработчик готов уточните имена типов с их именами пространств имен. Например, привет, мир программа могла бы быть написана Сюда:

 Общий модуль Hello
   Публичная вспомогательная основная( )
      System.Console.WriteLine("привет, мир")
   Конец сабвуфера
Конечный модуль 

Однако обычно используется Импорт заявление, чтобы уменьшить количество нажатий клавиш и визуальный беспорядок.

Важным пространством имен для разработчиков Visual Basic является Microsoft.VisualBasic. Типы в этом пространстве имен предоставляют члены которые образуют встроенные функции и подпрограммы Visual Basic. Например, функция Visual Basic Trim представляет собой член класса Microsoft.VisualBasic.Strings, а Функция MsgBox является членом Класс Microsoft.VisualBasic.Interaction. Кроме того, Визуальный Внутренние константы Basic берутся из перечислений внутри этого пространство имен. Большая часть функций, доступных в этом пространстве имен, однако он также дублируется в базе данных .NET Framework. Классная библиотека. Разработчики, не знакомые с Visual Basic 6 скорее всего, предпочтут игнорировать это пространство имен, предпочитая функциональные возможности, предоставляемые .NET Framework. .NET Framework — это представлены позже в этой главе и подробно объясняются в главе 3.

Далее рассмотрим эту строку:

 Public Module Hello 

Эта строка начинается с объявления стандартного модуля с именем Привет . Объявление стандартного модуля заканчивается эта строка:

 Конечный модуль 

В Visual Basic 6 различные программные объекты определялись размещением исходный код в файлах с различными расширениями имен файлов. Например, код, который определял классы, был помещен в .cls файлы, код, определяющий стандартные модули, был помещен в .bas файлы и так далее. В Visual Basic .NET все исходные файлы имеют расширения .vb и программные объекты определяются с явным синтаксисом. Например, классы определяются с помощью Class. ..End Class конструкции, а стандартные модули определяются с помощью Модуль...Конечный модуль конструкция. Любой конкретный .vb файл может содержать столько таких декларации по желанию.

Целью стандартных модулей в Visual Basic 6 было хранение кода это было вне любого определения класса. Например, глобальный константы, глобальные переменные и библиотеки процедур часто размещаются в стандартных модулях. Стандартные модули в Visual Basic .NET служат той же цели и могут использоваться почти таким же образом. Однако в Visual Basic .NET они определяют типы данных, которые нельзя создан и все члены которого являются статическими. Это будет обсуждаться более подробно в главе 2.

Следующая строка в примере начинается с определения подпрограммы названный Основной :

 Public Sub Main() 

Заканчивается на:

 End Sub 

Этот синтаксис похож на Visual Basic 6. Sub утверждение начинается с определения подпрограмма — а метод, который не имеет возвращаемого значения.

Основная подпрограмма является точкой входа для приложение. При вызове компилятора Visual Basic .NET он выглядит для подпрограммы с именем Основной в одном из классы или стандартные модули, предоставляемые приложением. Если Main объявлен в классе, а не в стандартный модуль, подпрограмма должна быть объявлена ​​с Общий модификатор . Этот модификатор указывает, что класс не должен быть создан для того, чтобы подпрограмма была вызывается. В любом случае подпрограмма Main должен быть Общедоступный . Пример оформления Основная подпрограмма в классе, а не в стандартный модуль приведен в конце этого раздела.

Если подпрограмма Main не найдена или если более один найден, генерируется ошибка компилятора. Командная строка компилятор имеет переключатель ( /главная: адрес ), что позволяет вам указать, какой класс или стандартный модуль содержит Основная подпрограмма , которая должна использоваться в случае что их больше одного.

Наконец, есть строка, которая выполняет работу:

 Console.WriteLine("hello, world") 

Этот код вызывает метод WriteLine класса Console, который выводит аргумент на консоль. Метод WriteLine определен как общий (также известный как статический ) метод. Общие методы не требуют экземпляр объекта для вызова; неразделяемые методы делать. Общие методы вызываются путем их квалификации с помощью их класса. имя (в данном случае Консоль).

Вот программа, которая использует класс вместо стандартного модуля для дом его Основная подпрограмма . Обратите внимание, что Основной объявлен с Общий модификатор . Он компилируется и запускается в так же, как в примере со стандартным модулем, и он производит то же самое выход. Нет технических причин для выбора одной реализации над другим.

 Система импорта
Публичный класс привет
   Общедоступный общий вспомогательный основной ( )
      Console. WriteLine("привет, мир")
   Конец сабвуфера
Конечный класс 

Здравствуйте, Windows

Вот версия с графическим интерфейсом привет, мир :

 Система импорта
Импортирует System.Drawing
Импортирует System.Windows.Forms
Открытый класс HelloWindows
   Наследует форму
   Частный lblHelloWindows как метка
   Общедоступный общий вспомогательный основной ( )
      Application.Run(Новый HelloWindows())
   Конец сабвуфера
   Публичная подписка Новая( )
      lblHelloWindows = Новая метка()
      С помощью lblHelloWindows
         .Расположение = Новая точка (37, 31)
         .Размер = Новый Размер(392, 64)
         .Font = Новый шрифт ("Arial", 36)
         .Text = "Привет, Windows!"
         .TabIndex = 0
         .TextAlign = ContentAlignment.TopCenter
      Конец с
            
      Me.Text = "Программирование Visual Basic .NET"
      AutoScaleBaseSize = Новый размер (5, 13)
      FormBorderStyle = FormBorderStyle. FixedSingle
      ClientSize = новый размер (466, 127)
            
      Controls.Add(lblHelloWindows)
   Конец сабвуфера
Конец класса 

Это похоже на консоль hello, world приложение, но с дополнительными вещами, необходимыми, так как это графический интерфейс приложение. Два дополнительных оператора Imports нужно для отрисовки окна приложения:

 Импорт System.Drawing
Imports System.Windows.Forms 

В классе HelloWindows есть то, что есть в программах Visual Basic никогда ранее не встречавшийся оператор наследует :

 Наследует форму 

Язык Visual Basic .NET имеет наследование классов. Класс HelloWindows наследуется от класса Form, который определен в пространство имен System.Windows.Forms. Наследование классов и 9Оператор 0027 Inherits обсуждается в главе 2.

В следующей строке объявляется элемент управления меткой, который будет использоваться для отображение текста Здравствуйте, Windows :

 Private lblHelloWindows As Label 

Класс Label определен в пространстве имен System. Windows.Forms.

Как и в случае с консольными приложениями, приложения с графическим интерфейсом должны иметь общая подпрограмма с именем Main :

 Общедоступная вспомогательная основная( )
   Application.Run(Новый HelloWindows())
Конец суб 

Этот метод Main создает экземпляр класса HelloWindows и передает его методу Run класса Application (определенному в пространство имен System.Windows.Forms). Метод Run заботится о обслуживание настройки цикла сообщений Windows и подключив форму HelloWindows к это.

Next — еще один специальный метод:

 Public Sub New() 

Like Main , New имеет специальный значение для компилятора Visual Basic .NET. Подпрограммы с именем Новые компилируются в конструкторы . Конструктор — это метод, который не имеет возвращаемого значения (но может иметь аргументы) и автоматически вызывается всякий раз, когда появляется новый объект конкретизируется данный тип. Конструкторы объясняются далее в Глава 2.

Конструктор в классе HelloWindows создает экземпляр метки объект, задает некоторые его свойства, задает некоторые свойства объекта формы, а затем добавляет объект Label в элементы управления формы. коллекция. Интересно отметить, насколько это отличается от того, как Visual Basic 6 представляет дизайн форм. В Visual Basic 6, макет формы был представлен данными в .frm файлы. Эти данные были не кодом, а списком свойств. и значения различных элементов формы. В Visual Basic .NET, этот подход ушел. Вместо этого операторы Visual Basic .NET должны явно создавать визуальные объекты и задавать их свойства. Когда формы разрабатываются в Visual Studio .NET с использованием технологии перетаскивания. Designer, Visual Studio .NET создает этот код от вашего имени.

Командная строка для компиляции Hello, Windows программа:

 vbc HelloWindows.vb /reference:System.dll,System.Drawing.dll,System.Windows.Forms. dll /target:winexe 

(Обратите внимание, что в этой строке нет разрыва.)

В командной строке для компиляции программы Hello, Windows больше материала, чем в строке для консольная программа hello, world . Кроме того указание имени файла .vb , это командная строка использует переключатель /references для указать три .dll s, которые содержат реализации библиотечных классов, используемых в программе (Form, Label, Точка и др.). Консоль привет, мир приложение не требовало ссылок при компиляции потому что он использовал только класс Console, определенный в System. пространство имен. Компилятор командной строки Visual Basic .NET включает два неявно ссылается: mscorlib.dll (который содержит пространство имен System) и Microsoft.VisualBasic.dll (содержит вспомогательную классы, используемые для реализации некоторых функций Visual Basic .СЕТЬ).

Помимо переключателя /references , командная строка для компиляции программы Hello, Windows включает переключатель /target . Переключатель /target определяет тип исполняемого файла. создается кодовый файл. Возможные значения Переключатель /target :

исполняемый файл

Создает консольное приложение. Сгенерированный файл имеет расширение .exe . Это значение по умолчанию.

winexe

Создает приложение с графическим интерфейсом. Сгенерированный файл имеет расширение .exe .

библиотека

Создает библиотеку классов. Сгенерированный файл имеет расширение .dll .

Результат Hello, Windows показан на рис. 1-2.

Рис. 1-2. Привет, Виндовс!

Приложения с графическим интерфейсом подробно описаны в главах 4 и 5.

Привет, Браузер

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

 <язык сценария = "VB" runat = "сервер">
      Sub Page_Load (отправитель как объект, E как EventArgs)
         lblMsg.Text = "Привет, Браузер!"
      Конец сабвуфера
      Sub btnBlack_Click (отправитель как объект, E как EventArgs)
         lblMsg.ForeColor = System.Drawing.Color.Black
      Конец сабвуфера
      Sub btnGreen_Click (отправитель как объект, E как EventArgs)
         lblMsg.ForeColor = System.Drawing.Color.Green
      Конец сабвуфера
      Sub btnBlue_Click (отправитель как объект, E как EventArgs)
         lblMsg.ForeColor = System.Drawing.Color.Blue
      Конец сабвуфера


   <голова>
      Программирование Visual Basic .NET
   
   <тело>
      

<р>

Чтобы запустить эту программу, введите ее в текстовом редакторе и сохраните в файл с именем HelloBrowser. aspx . Поскольку приложение — это веб-страница, предназначенная для доставки сервер, он должен быть сохранен на машине с запущенным IIS и установлен .NET Framework. Настройте виртуальную папку в IIS, чтобы указать в папку, содержащую HelloBrowser.aspx . Наконец, укажите в веб-браузере HelloBrowser.aspx . Результат Привет, Браузер 9Приложение 0028 показано на рис. 1-3.

Рис. 1-3. Привет, Браузер!

Совет

Обязательно укажите ссылку на файл через имя компьютера веб-сервера или localhost (если веб-сервер находится на вашем локальном машина), так что веб-сервер вызывается. Например, если файл находится в виртуальном каталоге с именем Test на вашем локальном компьютере, укажите в браузере адрес http://localhost/Test/HelloBrowser.aspx . Если вы указываете браузеру прямо на файл, используя путь файловой системы, веб-сервер не будет запущен.

Подробное описание кода Hello, Browser было бы слишком много для введения. Тем не менее, я хотел бы обратите внимание на и тегов. Эти теги представляют элементы управления на стороне сервера . Серверный элемент управления — это класс, который создается на веб-сервере и генерирует соответствующий вывод для представить себя в браузере. Эти классы имеют богатые, последовательные наборы свойств и методов, на которые можно ссылаться в коде, например элементы управления в формах упоминаются в приложениях с графическим интерфейсом.

ASP.NET имеет много других отличных функций, некоторые из которых: классический АСП.

  • Код можно полностью извлечь из веб-страниц и поместить в .vb файлов (называемых файлами кода программной части ), на которые ссылаются веб-страницы. Этот отделение макета веб-страницы от кода приводит к тому, что страницы легче развивать и поддерживать.

  • ASP.NET автоматически определяет возможности конечного браузер пользователя и соответствующим образом корректирует свой вывод.

  • Браузерные приложения подробно обсуждаются в Глава 6.

    Получите Programming Visual Basic .NET прямо сейчас с обучающей платформой O’Reilly.

    члена O’Reilly знакомятся с книгами, живыми мероприятиями, курсами, подобранными в зависимости от должности, и многим другим от O’Reilly и почти 200 ведущих издателей.

    Начать бесплатную пробную версию

    Главная страница журнала Visual Studio -- Журнал Visual Studio

    • Новости

      Visual Studio IntelliCode Preview предлагает мгновенные примеры кода API

      Первая предварительная версия Visual Studio 2022 17.6 улучшает интеграцию с GitHub, а также показывает, что IntelliCode с поддержкой ИИ мгновенно предлагает примеры кода API из реального мира — больше не требуется переключение контекста. 24.02.2023

    • Новости

      Microsoft запускает «Универсальный магазин» для ответов на вопросы о переполнении стека в Azure Development

      «Мы ценим то, что сообщество разработчиков получает пользу от Stack Overflow и контента, который уже создан сотнями тысяч разработчиков». 23.02.2023

    • Новости

      Microsoft выпускает Visual Studio 2022 17.

      5, рекламируя предложения на основе намерений на основе искусственного интеллекта

      В связи с тем, что в наши дни ИИ набирает обороты в сфере разработки и в других местах, Microsoft рекламировала новые предложения, основанные на намерениях, основанные на машинном обучении, в выпуске Visual Studio 2022 17.5 на этой неделе. 22.02.2023

    • Новости

      Инструментарий GrapeCity Report позволяет использовать веб-дизайнер в Blazor

      Недавний отчет ActiveReports от производителя инструментов разработки GrapeCity. NET v17 «переносит веб-дизайнера в платформу Blazor». 22.02.2023

    • Новости

      .NET 8 Preview 1: собственное обновление AOT и новый «Blazor United»

      Microsoft представила первую предварительную версию .NET 8, для которой компания рекламировала полировку собственной компиляции Ahead-of-Time (AOT), а со стороны веб-разработки — новый проект Blazor United, объединяющий сервер для смешивания и сопоставления. Функциональность рендеринга на стороне и на стороне клиента. 21. 02.2023

    • Лаборатория обработки данных

      Двоичная классификация с использованием дерева решений scikit

      Доктор Джеймс Маккефри из Microsoft Research говорит, что деревья решений полезны для относительно небольших наборов данных и когда обученная модель должна быть легко интерпретируемой, но часто плохо работает с большими наборами данных и может быть подвержена переобучению модели. 21.02.2023

    • Новости

      Разработчики ссылаются на проблемы совместной работы GitHub Copilot и IntelliSense

      Разработчики продолжают утверждать — как и в течение многих лет — что инструмент GitHub Copilot для «парного ИИ-программиста» плохо работает с IntelliSense, встроенным в Visual Studio и Visual Studio Code. 17.02.2023

    • Вопросы и ответы

      Лорен Бюньон, специалист Microsoft Cloud Dev Advocate, рассказывает о приложениях, управляемых событиями, в Azure

      «Изучение сервисов, основанных на событиях, меняет способ создания веб-приложений и является важной частью работы современной сети». 16.02.2023

    • Новости

      GitHub Copilot AI Tech обновлен, уже генерирует 61% кода Java

      GitHub снова модернизировал технологию искусственного интеллекта, лежащую в основе его Copilot «программист пар AI», который, как сообщается, уже генерирует 61 процент Java-кода в редакторах, где он используется, и 46 процентов на всех языках. 15.02.2023

    • Новости

      Microsoft рассматривает возможность объединения веб-инструментов, мобильных и настольных инструментов в .NET 8

      «Может быть, это становится слишком сумасшедшим. Там ничего не зафиксировано». 14.02.2023

    • Новости

      Глубокое погружение Blazor United состоится завтра

      С тех пор, как в прошлом месяце Стив Сандерсон из Microsoft дразнил прототип проекта «Blazor United» в видео, компания в основном хранила молчание по этому поводу, но завтра все изменится. 13.02.2023

    • Новости

      Что нового для .NET 8 (предварительная версия 1 выйдет в этом месяце)

      Первая предварительная версия .NET 8 будет представлена ​​через пару недель (да-да), сказал Дэвид Ортинау из Microsoft во время прямой трансляции технического мероприятия в Стокгольме. 10.02.2023

    Самые популярные

    Email Address***Country*United States of AmericaAfghanistanÅland IslandsAlbaniaAlgeriaAmerican SamoaAndorraAngolaAnguillaAntarcticaAntigua and BarbudaArgentinaArmeniaArubaAustraliaAzerbaijanAustriaBahamasBahrainBangladeshBarbadosBelarusBelgiumBelizeBeninBermudaBhutanBolivia, Plurinational State ofBonaire, Sint Eustatius and SabaBosnia and HerzegovinaBotswanaBouvet IslandBrazilBritish Indian Ocean TerritoryBrunei DarussalamBulgariaBurkina FasoBurundiCambodiaCameroonCanadaCape Verde (Cabo Verde)Cayman IslandsCuraçaoCentral African RepublicChadChileChinaChristmas IslandCocos (Keeling) IslandsColombiaComorosCongoCongo, the Democratic Republic Острова КукаКоста-РикаКот-д'ИвуарХорватияКубаКипрЧехияДанияДжибутиДоминикаДоминиканская РеспубликаЭквадорЕгипетЭль-СальвадорЭкваториальная ГвинеяЭритреяЭстонияЭфиопияФолклендские (Мальвинские) островаФарерские островаФиджиФинляндияФранцияФранцузская ГвианаФранцузская ПолинезияФранцузские Южные ТерриторииГрецияГрадаГубонГрецияГамбияГрузияГрузияГермания eloupeGuamGuatemalaGuernseyGuineaGuinea-BissauGuyanaHaitiHeard Island and McDonald IslandsHoly See (Vatican City State)HondurasHong KongHungaryIcelandIndiaIndonesiaIran, Islamic Republic ofIraqIrelandIsle of ManIsraelItalyJamaicaJapanJerseyJordanKazakhstanKenyaKiribatiKorea, Democratic People's Republic ofKorea, Republic ofKuwaitKyrgyzstanLao People's Democratic RepublicLatviaLebanonLesothoLiberiaLibyaLiechtensteinLithuaniaLuxembourgMacaoMacedonia, the former Yugoslav Republic ofMadagascarMalawiMalaysiaMaldivesMaliMaltaMarshall IslandsMartiniqueMauritaniaMauritiusMayotteMexicoMicronesia, Federated States ofMoldova, Republic ofMonacoMongoliaMontenegroMontserratMoroccoMozambiqueMyanmarNamibiaNauruNepalNetherlandsNew CaledoniaNew ZealandNicaraguaNigerNigeriaNiueNorfolk IslandNorthern Mariana ОстроваНорвегияПакистанОманПалауПалестинская территория, оккупированнаяПанамаПарагвайПапуа-Новая ГвинеяПеруФилиппиныПиткэрнПольшаПортугалияПуэрто-РикоКатарРеюньонРумынияРоссийская ФедерацияРуандаСен-БартельмиСа int Helena, Ascension and Tristan da CunhaSaint Kitts and NevisSaint LuciaSaint Martin (French part)Saint Pierre and MiquelonSaint Vincent and the GrenadinesSamoaSan MarinoSao Tome and PrincipeSaudi ArabiaSenegalSerbiaSeychellesSierra LeoneSingaporeSint Maarten (Dutch part)SlovakiaSloveniaSolomon IslandsSomaliaSouth AfricaSouth Georgia and the South Sandwich IslandsSouth SudanSpainSri LankaSudanSurinameSvalbard and Jan MayenEswatini (Swaziland)SwedenSwitzerlandSyrian Arab RepublicTaiwan, Province of ChinaTajikistanTanzania, United Republic ofThailandTimor-LesteTogoTokelauTongaTrinidad and TobagoTunisiaTurkeyTurkmenistanTurks and Caicos IslandsTuvaluUgandaUkraineUnited Arab EmiratesUnited KingdomUnited States Minor Outlying IslandsUruguayUzbekistanVanuatuViet NamVenezuela, Bolivarian Republic ofVirgin Islands, BritishVirgin Islands, U.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *