Ebooks, Audobooks and Classical Music from Liber Liber
a b c d e f g h i j k l m n o p q r s t u v w x y z





Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Visual Basic .NET - Wikipedia, wolna encyklopedia

Visual Basic .NET

Z Wikipedii

Visual Basic .NET (VB.NET) - obiektowy język programowania zaprojektowany przez firmę Microsoft. Program napisany w tym języku kompilowany jest do kodu pośredniego wykonywanego w maszynie wirtualnej .NET lub Mono.

Do uruchomienia programu napisanego w języku VB.Net w systemie Windows wymagana jest biblioteka uruchomieniowa zwana .NET Framework dostępna za darmo na stronie Microsoftu.

Język VB.NET ma wiele cech wspólnych z językami programowania Visual BasicBASIC.

Spis treści

[edytuj] Nazwa

Nazwa może być myląca, szczególnie dla tych, którzy słyszeli o ograniczeniach Visual Basica w wersji do 6. Zaadoptowanie VB do platformy .NET częściowo wymusiło, a częściowo pozwoliło na dość duże zmiany, znacznie poszerzając możliwości języka.

Jako że jednym z celów (lub też ubocznym skutkiem) stworzenia platformy .NET było danie programiście wyboru odnośnie stosowania składni wybranego przez siebie języka przy zachowaniu funkcjonalności, język Visual Basic .NET ma funkcjonalność bardzo podobną co C# a kod produkowany przez kompilatory obu języków często jest identyczny.

[edytuj] Trochę o składni

Język wywodzi się z rodziny BASIC. Jego podstawowe cechy odróżniające od rodziny C to:

  • jedno wyrażenie występuje w jednej linii fizycznej (CR - znak końca linii). W związku z tym domyślnie nie występuje logicznie znak końca linii w postaci ";" jak w językach rodziny C. Dwie instrukcje w jednej linii fizycznej można w razie potrzeby zapisać używając składni "Instrukcja1 : Instrukcja2" natomiast przeniesienie do następnej linii fizycznej można w razie potrzeby zastosować używając sekwencji " _" (spacja - podkreślenie) na końcu linii fizycznej.
  • Brak nawiasów sześciennych ({}) do grupowania bloków i kwadratowych do dostępu do tablic ([])

Każdy blok instrukcji posiada strukturę postaci

NazwaKonstrukcji [Opcje]
  ....
End NazwaKonstrukcji

np.

While True
   ...
End While

Do While True
   Do Until False
      Do
        Do
           ...
        Loop Until False
      Loop While True
   Loop
Loop

For x As Double =-3.5 To 30 
   For y As Integer =10 To 0 Step -2
      ...
      ' Komentarz
   Next ' Opcjonalnie Next y
Next 'opcjonalnie Next x
Class
   ...
End Class

Tablice definiuje się np. tak:

Dim Tab(4,9) As String

co wyklucza potrzebę używania nawiasów kwadratowych w składni, a oznacza zdefiniowanie tablicy o wymiarach 5 na 10 - bo z zakresu 0..4,0..9. Wynika to z faktu, że Visual Basic (nie VB.NET) pozwalał na zdefiniowanie tablicy (_od_ To _do_) np. (5 To 100) lub używając tylko _do_ (np. (100) co implikowało (0 To 100)). Niestety tzw. Common Type System narzuca kompilatorom ograniczanie sposobu indeksowania tablic do tablic zaczynajacych sie indeksem zerowym co wyklucza sens składni _od_ To _do_ choć sama wirtualna maszyna CIL pozwala na tworzenie tablic o indeksie początkowym innymi niż 0.

Tablice można też deklarować w stylu C (nadal 0-indeksowo).

Dim Tab(4)(9) As String 

gdzie sugerujemy, że każdy Tab(i) prowadzi na tablicę 10-elementową.

Można też:

Dim Tab(,,) As Cos ' Tablica 3-wymiarowa

Wymaga to użycia

Redim Tab(x,y,z) 

Lub:

Dim Tab()()() As Cos 'Tablica tablicy tablicy - tablica 3-wymiarowa

Wymaga to inicjalizacji zmiennej Tab Tablica(Array), każdego elementu tablicy tablica, i każdego elementu tej tablicy Cosiem. Trzeba jednak pamietać, że tablica T()() oraz T(,) maja odzwierciedlenie w postaci innych typów w prekompilowanym pseudokodzie CIL.

  • Język jest nieczuły na wielkość znaków a-z <=> A-Z
  • Występuje Garbage Collector – zbieracz nieużytków. Microsoft zaimplementował bardzo dobry GC. W Mono jest gorszy - liczący referencje.
  • Nie ma jawnego dostępu do wskaźników. Można uzyskać do nich dostęp ale okrężną drogą gwarantującą jednak bezpieczeństwo pracy na pamięci.
  • Dostęp do obiektów następuje poprzez referencje (kompensujące brak wskaźników)
  • Nawiasy sześcienne występują tylko przy określaniu elementów tablicy
Dim A As String = {"A","B","C"}
Dim B As Klasa = {New Klasa, New Klasa, New Klasa}
JakasFunkcja(2,"abc", New Klasa() {New Klasa, New Klasa} ,44 ,55)
Dim C As Object = New String() {"A","B","C","D"}
  • generyczność znana np. z Ada 95 czy C++ jako <template>
  • brak operatora porównania "==" czy operatora przypisania ":="

Występuje jeden operator "=" oznaczający przypisanie lub porównanie. Kompilator przyjmuje, że jeżeli wyrażenie ma postać

Zmienna = Dalsze wyrażenie

Lub

Dim Zmienna As Typ = Dalsze wyrażenie

oznacza to przypisanie wartości z prawej strony do zmiennej Zmienna. W innych przypadkach "=" porównuje wyrażenia zwracając wartość boolowską. np.

Dim A As Boolean, B, C As Integer
A = B = C

oznacza, że wartości liczb B i C zostaną porównane, a wynik tego porównania zostanie zwrócony jako 'True' lub 'False' a to z kolei przypisane do zmiennej A. Podobnie w składni warunkowej

If zmienna = zmienna Then
  ...
ElseIf warunek Then
  ...
Else
  ...
End If

Operator ":=" występuje natomiast przy odwoływaniu sie do parametrów funkcji i procedur z użyciem notacji imiennej np.

JakasProcedura (jakisparamter:= wartosc, jakis paramter := wartosc)

Jest to przydatne gdy dana funkcja (procedura) przyjmuje dużą ilość argumentów opcjonalnych.

  • Łańcuchy znaków zamykane są w cudzysłowach ("). Jeżeli trzeba w Stringu użyć cudzysłowu używa się podwójnego znaku cudzysłowu
Dim a As String = "A wtedy on powiedział ""Dajcie mi spokój."""
' A zawiera: A wtedy on powiedział "Dajcie mi spokój."

Nie występują znaki specjalne w formacie \" \n itp.

Dim b As String = "zmienna x=""" & a & """" & Chr(10) & _
                            "następna linijka."
 'b zawiera: zmienna x="A wtedy on powiedział "Dajcie mi spokój.""
 '           następna linijka.

W tej kwestii rodzina Basic zachowuje się podobnie do języka Ada. Znak 13 to znak końca linii tak więc Chr(13) daje znak końca linii. Chr() zwracający znak o kodzie podanym jako argument jest funkcją inline, także w trakcie kompilacji zamienia się w znak końca linii (wniosek: nie rożni się prędkością wykonywania kodu od znanego z C "\n").

  • Imports, With, Using

Imports do ustalania domyślnych przestrzeni nazw. With do skracania ścieżki dostępu przy pracy z obiektami o dużych zagnieżdżeniach. Using również do pracy na obiektach. Przemianowujące zmienną lub tworzące zmienną na obszar bloku using i implikujące zarazem blok Try Catch

  • Wbudowana w składnię obsługa synchronizacji wątków. - SyncLock

[edytuj] Dalsze przykładowe programy

Prosty program napisany w języku VB.NET. Po jego skompilowaniu i uruchomieniu zobaczymy napis „Hello world!”.

Imports System
Public Class PrzykladowaKlasa
 
   Public Shared Sub Main() 'Procedura współdzielona miedzy instancjami klasy
       System.Console.WriteLine("Hello world")
       For i As Integer = 1 To 10 
           System.Console.WriteLine("To jest linia " & i)
       Next
   End Sub
End Class

Lub

Module Nazwa Modulu 'Moduł jako bezobiektowy element grupujący w przestrzeń nazw.
 
   Public Sub Main() ' nie ma słowa Shared bo moduł wydziela kod, natomiast
                     ' nie ma możliwości powołania obiektu typu modułowego
       System.Console.WriteLine("Hello world")
       For i As Integer = 1 To 10 
           System.Console.WriteLine("To jest linia " & i)
       Next
   End Sub

End Module

Zamiast pisać System.Console.WriteLine można wykorzystać specjalną składnię do pracy z obiektem:

   Public Sub Main() 
       With System.Console
           .WriteLine("Hello world")
       For i As Integer = 1 To 10 
           .WriteLine("To jest linia " & i)
       Next
   End Sub

Kolejny przykładowy program demonstruje technikę programowania interfejsu graficznego (GUI). Po jego skompilowaniu i uruchomieniu system operacyjny utworzy okienko aplikacji.

Imports System 'Domyślnie szukaj elementów w System
Imports System.Windows.Forms 'a także w System.Windows.Forms

Public Class PrzykladoweOkno
Inherits Form

   'Konstruktor z dziedziczeniem konstruktora macierzystego
   Sub New() 
       MyBase.New() 
   End Sub
 
   Public Shared Sub Main()
      Application.Run( New PrzykladoweOkno() );
   End Sub
End Class

Następny przykład pokazuje konstrukcję interfejsu czyli rodzaju nagłówka klasy definiującego mechanizmy implementowane przez klasę. Klasa, która implementuje pewien interfejs (co programista może łatwo sprawdzić (If TypeOf NazwaObiektu Is IJakisInterfejs)), zobowiązuje się posiadać zaadoptowane do swoich warunków wszystkie procedury, funkcje, właściwości, zdarzenia itd. określone w interfejsie.

Interface INazwa
Inherits InnyInterfejs
   Sub CosRob()
   ReadOnly Property Cos As Integer
End Interface

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com