background image

II.

Wprowadzenie do języka Visual Basic 2010

Aplikacje utworzone przy okazji poznawania środowiska Visual Studio 2010 nie wykonywały ja-

kichkolwiek działań, na które użytkownik aplikacji musiałby zareagować, albo efekty których mógłby 

obejrzeć. Fakt ten nie powinien dziwić, biorąc pod uwagę, że głównym punktem zainteresowania ćwi-

czących było środowisko programistyczne. Drugi rozdział poświęcony jest wprowadzeniu podstawo-

wych elementów składni jednego z języków możliwych do wykorzystania w środowisku – Visual Ba-

sic 2010. Składnia to zbiór zasad, których przestrzeganie pozwala tworzyć poprawne zdania w da-

nym języku (ang. statement – wypowiedź). Kolejne ćwiczenie polega na zapoznaniu się ze zdaniami 

umieszczonymi w projekcie aplikacji przez środowisko.

Ćwiczenie 16
Zapoznać   się   z   elementami   języka   umieszczanymi   automatycznie   w   module   aplikacji 
opartej na szablonie Console Application.

1. Utwórz Projekt_016 aplikacji konsolowej.

2. Zapoznaj się z treścią kodu źródłowego modułu Module1. Zwróć uwagę na zastosowany 

układ tekstu oraz kolory.

Jeżeli ćwiczący nie wprowadził żadnych zmian od momentu utworzenia aplikacji to powinien za-

obserwować następujący widok:

Plik Module1.vb to pierwsza część projektu aplikacji konsolowej. Tworzona jest automatycznie 

w każdym nowym projekcie tego typu. Słowa kluczowe języka Visual Basic 2010 wyróżniane są 

przez edytor kolorem niebieskim. W przedstawionym kodzie są to: Module, End oraz Sub (Sub zosta-

nie objaśnione oddzielnie). Słowa kluczowe mogą zostać użyte tylko w przeznaczonym dla nich kon-

tekście i miejscu.

Słowo 

Module

 (Moduł, człon) wskazuje miejsce, w którym rozpoczyna się pewna część projek-

tu. Zakończenie tej części wskazywane jest słowami kluczowymi 

End Module

 (Koniec modułu). Mo-

duł zawiera deklaracje elementów języka potrzebnych do działania aplikacji. Aby ułatwić programiście 

pracę edytor tekstowy środowiska umieszcza przed słowem  

Module

  rozpoczynającym deklarację 

modułu graficzny przełącznik pozwalający zwinąć lub rozwinąć treść wnętrza modułu.

Rysunek 8: Okno edytora kodu źródłowego z modułem Module1.

background image

II.1.

Zestawy (podzespoły)

Aplikacje budowane w Visual Studio 2010 wykorzystują deklaracje „cegiełek” przechowywanych 

w zestawach (ang. assembly). Utworzony zestaw po ukończonej sukcesem kompilacji przyjmuje po-

stać pliku z kodem wykonywalnym. Istnieją dwa rodzaje takich plików: aplikacje oraz biblioteki dołą-

czane   dynamicznie.   Nazwy   skompilowanych   zestawów   charakteryzują   się   rozszerzeniami:   .exe 

(skrót od angielskiego executable – wykonywalne) – aplikacje oraz .dll (akronim angielskiej nazwy 

dynamic-link library) – biblioteki dołączane dynamicznie.

Zestawy są bardzo istotnym elementem programowania. Pozwalają one zgrupować niezbędne 

do rozwiązania określonego problemu zasoby, a po kompilacji stają się „poręcznym” dodatkiem do in-

nych tworzonych zestawów.

Deklaracje zawarte w zestawie pozwalają programiście pominąć pracę koncepcyjną wykonaną 

wcześniej (samodzielnie, lub przez innych programistów). Skraca to czas pracy i pozwala na wielo-

krotne wykorzystanie tego samego kodu.

Każda  aplikacja   konsolowa   tworzona  w  języku   Visual  Basic   2010  domyślnie   ma   dostęp  do 

dwóch zestawów:

Microsoft.VisualBasic – zestaw ten jest przechowywany w pliku Microsoft.VisualBasic.dll kata-

logu platformy NETFramework,

mscorlib – w pliku mscorlib.dll katalogu platformy NETFramework

Oprócz dwóch wymienionych zestawów, które są dostępne dla aplikacji konsolowej, w chwili 

tworzenia aplikacji środowisko Visual Studio 2010 dołącza wybrane inne zestawy. To właśnie te ze-

stawy wyświetlone są w węźle References okna Solution Explorer po wybraniu przycisku paska na-

rzędzi Show All Files.

Węzeł References pozwala dodawać do aplikacji także inne (potrzebne programiście) zestawy. 

Jednym z zadań wykonywanych przez zestawy jest dostarczanie deklaracji rozmieszczonych w prze-

strzeniach nazw zestawu.

II.2.

Przestrzenie nazw

Wszystkie   deklaracje   (istniejące,   tworzone   współcześnie   i   w   przyszłości)   umieszczane   są 

w przestrzeniach nazw (ang. Namespace). Przestrzeń nazw to zbiór, z którego można odczytać zna-

czenie pewnej nazwy zadeklarowanej w tym zbiorze.

Każdy projekt aplikacji konsolowej podczas tworzenia otrzymuje własną przestrzeń nazw. Po-

siada ona nazwę identyczną z nazwą projektu i w przypadku ćwiczenia 16. jest to przestrzeń nazw 

Projekt_016.

Oprócz własnej przestrzeni nazw każdy projekt aplikacji konsolowej ma dostęp do przestrzeni 

nazw zawartych w zestawach mscorlib i Microsoft.VisualBasic. Dodatkowo, projekt posiada dostęp 

background image

do deklaracji umieszczonych w przestrzeniach nazw zestawów wyszczególnionych w węźle Referen-

ces projektu (patrz okno Solution Explorer). W przypadku projektu aplikacji konsolowej są to zestawy: 

System,   System.Data,   System.Data.DataSetExtensions,   System.Deployment,   System.XML,   Sys-

tem.Xml.Linq. Każdy z tych zestawów zawiera wiele przestrzeni nazw, a te – deklaracje.

Środowisko   posiada   specjalne   okno   Object   Browser   (Przeszukiwarka   obiektów)   służące 

do przeglądu   deklaracji   zgromadzonych   w   zestawach.   Kolejne   ćwiczenie   zapoznaje   ze   strukturą 

przestrzeni nazw zestawu Projekt_016.

Ćwiczenie 17
Zapoznać się ze strukturą projektu wykorzystując okno Object Browser.

1. Otwórz okno Object Browser, w tym celu:

rozwiń menu View i zapoznaj się z poleceniem Object Browser; polecenie posiada 

ikonę – 

 – (odpowiedni przycisk odnajdziesz w pasku narzędzi) oraz skrót klawia-

turowy – F2,

wybierz polecenie Object Browser dowolnym sposobem; zauważ, że otworzyło się 

nowe okno o nazwie Object Browser.

2. Zapoznaj się z budową okna Object Browser.

3. Zapoznaj się z listą zawartą w lewej części okna. Lista zawiera przestrzenie nazw do-

stępne w środowisku (zwróć uwagę na charakterystyczne oznaczenie – {}), w tym prze-

strzeń nazw Projekt_016.

4. Rozwiń przestrzeń nazw Projekt_016. Pojawiająca się gałąź reprezentuje moduł Modu-

le1.

5. Zaznacz węzeł przestrzeni nazw Projekt_016 i zapoznaj się z treścią dolnej części okna 

– informuje ona, że zaznaczony obiekt to przestrzeń nazw o nazwie Projekt_016, a do-

datkowo zawiera komunikat, że przestrzeń nazw jest członkiem (ang. member) nadrzęd-

nej nad przestrzenią nazw struktury o nazwie Projekt_016. Nazwa tej struktury jest hiper-

łączem pozwalającym wyświetlić nadrzędny element.

6. Zaznacz gałąź modułu Module1 i zapoznaj się z treścią dolnej części okna – informuje 

ona, że zaznaczony obiekt to moduł o nazwie Module1 (znaczenie modyfikatora 

Friend 

zostanie objaśnione przy okazji innych ćwiczeń), a dodatkowo zawiera komunikat, że 

moduł   jest   członkiem   (składnikiem,   składową)   przestrzeni   nazw   Projekt_016.   Nazwa 

przestrzeni nazw jest hiperłączem pozwalającym wyświetlić nadrzędny element.

7. Zapoznaj się z zawartością prawej (górnej) części okna Object Browser.  Okno wyszcze-

gólnia deklaracje dostępne w module Module1. Zwróć uwagę na deklarację metody (po-

background image

staraj się zapamiętać tą nazwę oraz charakterystyczną dla tego elementu ikonę –  

Main.

Uwaga. Nazwy metod będą wyróżnione w tekście przez pogrubioną czcionkę o stałej szeroko-

ści.

8. Zaznacz metodę Main i zapoznaj się z treścią dolnej części okna – informuje ona, że za-

znaczony obiekt to metoda typu 

Sub

 o nazwie Main (znaczenie modyfikatora 

Public

 zo-

stanie objaśnione przy okazji innych ćwiczeń), a dodatkowo zawiera komunikat, że meto-

da jest składową modułu Module1, będącego składową przestrzeni nazw Projekt_016. 

Nazwa modułu, a także nazwa przestrzeni nazw są hiperłączami pozwalającymi wyświe-

tlić dany element nadrzędny.

Podsumowując, projekt posiada przestrzeń nazw, która zawiera deklaracje danego projektu. 

Projekt posiada także dostęp do deklaracji zawartych w innych przestrzeniach nazw, jeśli tylko zesta-

wy zawierające te przestrzenie dołączone są do projektu.

II.3.

Moduły

Moduł jest najmniejszą jednostką organizacyjną zestawu. Ograniczany jest przez słowa kluczo-

we  

Module

  …  

End Module

. Deklaracja modułu występuje w przestrzeni nazw. W oknie Object 

Browser moduły oznaczane są ikoną – 

.

Każdy moduł występuje tylko w jednym pliku projektu. Jest to cecha, która znacząco odróżnia 

moduł od przestrzeni nazw, która może obejmować deklaracje zawarte w wielu plikach.

W jednym pliku mogą występować deklaracje wielu modułów, jednak praktyka uczy, że łatwiej 

zarządzać modułami zadeklarowanymi w oddzielnych plikach. Do projektu można dodać dowolną 

liczbę modułów. Warto przy tym nadawać plikom nazwy określające znaczenie zestawu deklaracji za-

wartych w pliku. Kolejne ćwiczenie pokazuje sposób dodawania do projektu kolejnego modułu.

Ćwiczenie 18

 

Dodać do Projekt_016 kolejny moduł. Zapoznać się z różnicami pomiędzy zawartością 
pliku Module1.vb oraz dodanego pliku.

1. Rozwiń menu Project.

2. Zapoznaj   się   z   poleceniami   rozpoczynającymi   się   od   słowa  Add   (Dodaj);   szczególną 

uwagę zwróć na polecenie Add Module (Dodaj moduł) - 

. Nie wybierając polecenia po-

rzuć menu Project.

Uwaga. Wprawdzie „złoty rozbłysk” w lewym, górnym narożniku ikony jest słabo widoczny, ale 

warto zapamiętać, że występuje w ikonach poleceń tworzących nowe elementy.

3. Przejdź do okna Solution Explorer i zaznacz węzeł Projekt_016.

background image

4. Rozwiń menu kontekstowe węzła Projekt_016 (oprócz prawego klawisza myszy można 

także użyć przycisku 

 klawiatury, gdy zaznaczony jest obiekt, dla którego ma zo-

stać wyświetlone menu kontekstowe).

5. Wybierz grupę poleceń Add i zauważ, że również tutaj znajduje się (oprócz innych) pole-

cenie Module.

6. Dodaj do Projekt_016 nowy moduł o nazwie Dodatkowy, w tym celu:

uruchom jedno z poleceń tworzących nowy moduł poznanych w punktach 2. i 5. 

ćwiczenia; pojawia się okno Add New Item (Dodaj nowy element), w pasku tytuło-

wym okna znajduje się również nazwa projektu, do którego dodawany jest nowy 

element,

zapoznaj się z budową okna; zauważ, że jest ono niemal identyczne z oknem 

New Project poznanym we wcześniejszych ćwiczeniach,

zauważ, że środowisko „wybrało” odpowiedni do wybranego polecenia szablon 

(Module),

zmień nazwę dodawanego modułu (pole tekstowe Name) na Dodatkowy,

zatwierdź zmiany przyciskiem Add.

7. Zauważ, że w oknie Solution Explorer pojawił się nowy plik – Dodatkowy.vb (rozszerze-

nie .vb zostało dodane automatycznie), a w oknie edytora otwarty jest kod źródłowy mo-

dułu Dodatkowy.

8. Postaraj się, przełączając wyświetlanie między zakładkami Module1.vb i Dodatkowy.vb, 

zauważyć różnice między dwoma modułami projektu Projekt_016.

Uwaga. Jeśli okno edytora posiada więcej niż jedną zakładkę, to menu kontekstowe każdej 

z nich zawiera polecenia: New Horizontal Tab Group (Nowa grupa zakładek – podział poziomy) oraz 

New Vertical Tab Group (Nowa grupa zakładek – podział pionowy). Po wybraniu jednego z tych pole-

ceń okno edytora zostaje podzielone na części. W jednej z nich wyświetlona jest wskazana zakładka, 

a w drugiej pozostałe zakładki. Mechanizm ten ułatwia porównywanie kodu źródłowego zawartego 

w dwóch plikach. Zakładki można rozdzielać do chwili, gdy w danej części okna pozostanie tylko jed-

na zakładka. Każdą zakładkę można przenieść do innej grupy (po podziale pojawia się w menu kon-

tekstowym zakładki polecenie Move To Next Tab Group [Przenieś do następnej grupy zakładek]). 

Okno edytora można dzielić tylko w jednym kierunku – jeśli pierwszy podział przeprowadzono w pio-

nie, to wszystkie następne możliwe są jedynie w pionie (podobnie w poziomie).

background image

Co do zasadniczej budowy, moduły są identyczne. Wyróżnia je nazwa (Module1 i Dodatkowy). 

Łatwo jednak zauważyć, że Module1 zawiera automatycznie dodaną przez środowisko treść – 

Sub 

Main … 

End

 

Sub

. Main (główny), to metoda, od której rozpoczyna się wykonywanie aplikacji konso-

lowej. Tym samym Module1 stanowi moduł startowy aplikacji, co byłoby warte odzwierciedlenia w na -

zwie tego modułu.

Do zmiany nazwy modułu można wykorzystać okno Solution Explorer w identyczny sposób, jak  

to się robi w Exploratorze Windows (polecenie Rename [Zmień nazwę] z menu kontekstowego). 

Zmianę nazwy modułu Module1 na Startowy pozostawia się ćwiczącym do samodzielnego wykona-

nia. Tym razem należy pamiętać o dodaniu rozszerzenia .vb, które środowisko automatycznie opuści 

tworząc nazwę modułu.

II.4.

Konsola

Moduł Startowy (przed zmianą nazwy – Module1) zawiera metodę typu  

Sub

  o następującej 

składni (przypomnijmy, że składnia to zbiór zasad pozwalających tworzyć poprawne zdania w danym 

języku):

Sub Main()

End Sub

Uprzedzając treści następnych rozdziałów należy w tym miejscu powiedzieć, że występują dwa  

rodzaje metod: 

Sub

 oraz 

Function

.

Słowo kluczowe 

Sub

 (skrót angielskiego Subroutine – podprogram) oznacza początek procedu-

ry. Koniec procedury oznaczony jest słowami kluczowymi  

End Sub

. Metody służą do grupowania 

zdań języka. Metoda-procedura  Main  posiada szczególne znaczenie. Aplikacja, po uruchomieniu 

przez użytkownika, rozpoczyna pracę od wykonywania rozkazów (instrukcji) zawartych w tej właśnie 

procedurze. W kolejnym ćwiczeniu do procedury Main zostanie dodana instrukcja powodująca wypi-

sanie tekstu w oknie konsoli.

Ćwiczenie 19
Zaprogramować wyświetlenie w oknie konsoli tekstu „Witaj”.

1. Wybierz zakładkę Startowy.vb powodując wyświetlenie okna edytora kodu źródłowego 

modułu Startowy.

2. Ustaw kursor tekstowy w pustym  wierszu pomiędzy początkiem a końcem procedury 

Main (jeśli kod źródłowy nie był edytowany, to wiersz posiada numer 4).

3. Wpisz następujący tekst:

System.Console.Write("Witaj")

4. Przesuń kursor do innego wiersza kodu źródłowego i zauważ, że edytor dokonał odpo-

wiednich zmian w układzie tekstu:

background image

Module Module1

Sub Main()

System.Console.Write("Witaj")

End Sub

End Module

5. Skompiluj projekt (Build\Build Projekt_016, lub przycisk  

  dodanego paska narzędzi 

Build).

6. Uruchom aplikację bez debugowania (Ctrl+F5, lub przycisk 

 dodany do paska narzę-

dzi Standard). Zauważ, że pojawiło się okno konsoli:

7. Zakończ działanie aplikacji naciskając dowolny klawisz.

Zdanie – System.Console.Write("Witaj") – to instrukcja języka Visual Basic 2010. Kompilator po-

trafi przetworzyć taką instrukcję na kod wykonywalny. Skąd Projekt_016 „zna” użytą w ćwiczeniu in-

strukcję? Kolejne ćwiczenie pokazuje w jaki sposób odnaleźć źródło informacji.

Ćwiczenie 20
Odnaleźć położenie deklaracji metody Write przy użyciu okna Object Browser.

1. Rozwiń menu kontekstowe, gdy kursor myszy znajduje się wewnątrz słowa Write.

2. Zapoznaj się z poleceniami menu kontekstowego. Wybierz polecenie Go To Definition 

(Przejdź do deklaracji). Edytor wyświetla okno Object Browser. Zaznaczony obiekt to po-

szukiwana metoda Write.

3. Zapoznaj się z oknem informacji o zaznaczonym  obiekcie. Jest to metoda-procedura 

o nazwie Write (znaczenie słowa kluczowego 

Shared

 zostanie objaśnione przy okazji 

innych ćwiczeń). Jest ona składnikiem elementu Console, który jest składową przestrzeni 

nazw System. Zgodnie ze skróconym opisem (ang. Summary) metoda wypisuje łańcuch 

tekstowy do standardowego strumienia wyjściowego, czyli monitora konsoli.

W tym miejscu konieczne jest określenie czym jest konsola. Otóż jest to urządzenie wejścia/wyj-

ścia (wprowadzania danych/wyprowadzania wyników) składające się współcześnie z klawiatury i mo-

nitora. Zatem klawiatura i monitor danego zestawu komputerowego stanowią łącznie jego konsolę.

background image

Konsola pracuje w trybie tekstowym, to znaczy dane wprowadzane są w postaci tekstu i wyniki 

wyprowadzane są również w postaci tekstu. Konsola o nazwie Console zadeklarowana jest w prze-

strzeni nazw System zestawu mscorlib. Posiada ona (zawiera) metody pozwalające wyprowadzać 

tekst do konsoli (czyli na ekran monitora) oraz wprowadzać tekst z konsoli (czyli z klawiatury).

Tekst   System.Console.Write("Witaj")   nazywa   się   wywołaniem   (ang.   call)   metody.   Wywołanie 

procedury jest najprostszym zdaniem (instrukcją) języka Visual Basic 2010. Wydaje się, że wprowa-

dzanie tak długich zdań jest dosyć czasochłonne. Pomocna jest w tym przypadku znajomość prze-

strzeni nazw. Otóż okazuje się, że deklaracja elementu Console występuje wyłącznie w przestrzeni 

nazw System, a ta jest „znana” każdemu projektowi. Jeśli pominięcie nazwy przestrzeni (a nawet jej  

składowych) nie prowadzi do niejednoznaczności to można ją pominąć wraz z kropką. Pokaże to ko-

lejne ćwiczenie.

Ćwiczenie 21
Wykorzystać   znajomość   przestrzeni   nazw   System   przez   Projekt_016   do   skrócenia 
wywołania metody Write.

1. Usuń z instrukcji System.Console.Write("Witaj") nazwę przestrzeni System wraz z krop-

ką.

2. Skompiluj projekt i uruchom aplikację.

3. Zakończ działanie aplikacji.

Aplikacja działa poprawnie. Ćwiczący powinien samodzielnie sprawdzić, czy deklaracja metody 

Console.Write jest tą samą, którą Object Browser pokazywał wcześniej, wykonując ponownie ćwicze-

nie 20.

Deklaracja metody o nazwie  Write występuje w więcej niż jednej przestrzeni nazw. Dlatego, 

aby kompilator mógł jednoznacznie określić, o którą z nich chodzi konieczne jest użycie, przed na-

zwą metody, nazwy elementu zawierającego jego deklarację, w tym przypadku Console.

W wywołaniu metody Write konsoli tekst, który miał zostać wyprowadzony na ekran został za-

pisany wewnątrz nawiasów okrągłych. Nawiasy umieszczane po nazwie metody wskazują listę argu-

mentów metody. Argumenty to wartości wpływające na działanie metody. Argument o wartości "Witaj" 

to tekst. Język Visual Basic 2010 używa określenia łańcuch tekstowy (ang. string). Dowolny łańcuch 

tekstowy wyróżnia się poprzez objęcie go cudzysłowem.

Przykłady łańcuchów tekstowych.

"Witaj"

"Siedem razy dziewięć to sześćdziesiąt trzy"

Klawiatura i monitor powiązane w konsolę posiadają charakterystyczny element zwany kurso-

rem tekstowym – miejsce wyprowadzenia kolejnego znaku.

background image

Ponadto znaki w konsoli pogrupowane są w wiersze. Przejście do następnego wiersza realizuje 

się naciskając klawisz Enter. Powoduje to utworzenie nowego wiersza (ang. Line Feed – dosłownie 

zjedz linię) i powrót kursora do początku linii (Carriage Return – dosłownie powrót karetki). Metoda 

Write nie realizuje tych dwóch etapów, dlatego tekst wyprowadzany do konsoli przez środowisko Vi-

sual Studio 2010 – Aby kontynuować, naciśnij dowolny klawisz – pojawia się tuż po słowie Witaj.  

W kolejnym ćwiczeniu użyta zostanie metoda realizująca również tworzenie nowego wiersza.

Ćwiczenie 22
Zapoznać się z użyciem metody WriteLine konsoli.

1. Dodaj, przed wywołaniem Console.Write("Witaj"), pusty wiersz i umieść w nim kursor tek-

stowy.

2. Wpisz następujący tekst:

Console.WriteLine("Tekst Witaj pojawi się w następnym wierszu konsoli")

3. Skompiluj projekt i uruchom aplikację.

4. Zapoznaj się z zawartością konsoli i zakończ działanie aplikacji.

Tym razem konsola wyglądała następująco:

Widać, że metoda WriteLine konsoli, po wypisaniu tekstu będącego jej argumentem, tworzy 

nowy wiersz. Obie metody wykorzystywane są w aplikacjach konsolowych. Posiadają one wiele wer-

sji służących do wyprowadzania w postaci tekstu różnych wartości: liczb, znaków, wartości logicz-

nych.

Warto w tym miejscu wspomnieć, że konsola Console posiada również inne metody, np.:

Beep – powoduje odtworzenie dźwięku przez głośnik zestawu komputerowego,

Rysunek 9: Pozioma kreska na końcu wiersza, to kursor tekstowy.

background image

Clear – powoduje wyczyszczenie okna konsoli – usuwa teksty wyprowadzone wcześniej przez 

metody Write i WriteLine oraz te wprowadzone przez użytkownika.

Metody konsoli będą wprowadzane w miarę potrzeb kolejnych ćwiczeń

II.5.

Reprezentacja danych, stałe i zmienne

Reprezentacja danych w pamięci operacyjnej

Najmniejszą porcją informacji jest jeden bit. Informacje przechowywane w bitach nazywa się bi-

narnymi, gdyż bit może przechowywać (i prezentować) jeden z dwóch (bi-) stanów. Mówi się, że bit 

jest ustawiony (włączony), gdy przechowuje wartość 1 (jeden), a wyłączony, gdy przechowuje war-

tość 0 (zero).

Pamięć operacyjna podzielona jest na większe porcje składające się z ośmiu bitów. Taka porcja, 

to bajt (ang. byte). Każdy bit bajta może być w jednym z dwóch, opisanych wcześniej, stanów 0/1. 

Patrząc na zestaw bitów w bajcie:

00000000

B

 = 0

D

 (B – binarnie, D – dziesiętnie)

pierwszy od prawej nazywa się najmłodszym, a pierwszy od lewej najstarszym, bitem.

Jeśli ustawimy najmłodszy bit bajta:

00000001

B

 = 1

D

to liczba binarna ma wartość 1. Jeśli zamiast najmłodszego ustawimy kolejny starszy bit:

00000010

B

 = 2

D

to liczba binarna ma wartość 2. Jeśli ustawimy dwa najmłodsze bity:

00000011

B

 = 3

D

to liczba binarna ma wartość 3. Jeśli ustawimy wszystkie bity:

11111111

B

 = 255

D

to liczba binarna ma wartość 255.

Łatwo   stąd   wywnioskować,   że   jeśli   do   przechowywania   wartości   liczbowej   zarezerwuje   się 

w pamięci operacyjnej jeden bajt, to można w tym bajcie przechowywać wartości od 0 do 255.

Rezerwacji dokonuje się poprzez deklarację:

Dim bytMałaLiczbaNieujemna As Byte

Bajt pamięci operacyjnej o nazwie bytMałaLiczbaNieujemna może przechowywać wartości od 0 

do 255. Taki nazwany obszar pamięci operacyjnej, w którym można przechowywać jakąś wartość na -

zywa się zmienną. Powyższa deklaracja oznacza zatem utworzenie zmiennej bytMałaLiczbaNieujem-

na.

background image

Zmienna bytMałaLiczbaNieujemna nie może przechowywać np. liczby -12. Aby rozwiązać ten 

problem można inaczej interpretować bity bajta. Umowa określająca interpretację bitów w bajcie jest 

następująca: najstarszy bit jest bitem znaku. Jeśli jest wyłączony, to oznacza, że liczba jest dodatnia, 

a jeśli włączony – ujemna.

Przykładowo.

00000001

B

 = 1

D

 (podobnie jak przy poprzedniej interpretacji)

10000001

B

 =-1

D

 (bo najstarszy bit wskazuje, że liczba jest ujemna)

W związku z powyższym największą liczbą dodatnią, którą można przechowywać, przy takim 

sposobie interpretacji jest:

01111111

B

 = 127

D

a najmniejszą:

10000000

B

 = -128

D

 (najstarszy bit występuje w podwójnej roli – jest bitem znaku, ale także re-

prezentuje liczbę 128).

Sposoby interpretacji bitów w pamięci operacyjnej określają typ zmiennej. Przykładowo, pierw-

szy sposób interpretacji bitów bajta definiuje typ 

Byte

, drugi – 

SByte

. (Nazwy typów wyróżnione będą 

czcionką pochyłą)

Widać wyraźnie, że nie wszystkie wartości typu 

Byte

 mogą być przechowywane w zmiennych 

typu 

SByte

 (liczby większe niż 127), oraz, że nie wszystkie wartości typu 

SByte

 mogą być przechowy-

wane w zmiennych typu 

Byte

 (liczby mniejsze niż 0).

Należy podkreślić fakt, że bajt zarezerwowany na zmienną typu 

Byte

, fizycznie nie różni się ni-

czym   od   bajta   zarezerwowanego   na   zmienną   typu  

SByte

.   Program   „musi   jednak   pamiętać”,   że 

zmienne są różnych typów i dlatego interpretacja wartości każdorazowo musi być inna.

Podobnie jest z tekstami przechowywanymi w pamięci operacyjnej. Załóżmy, dla uproszczenia, 

że każda litera może być przechowywana w jednym bajcie pamięci operacyjnej. Ale pamiętamy, że 

bajt nie przechowuje znaków, tylko wartości ośmiu bitów – czyli liczbę. Skoro tak, to każdemu znako-

wi należy przyporządkować liczbę np.:

Znak

!

"

#

$

%

&

'

(

)

*

+

,

-

.

/

0

1

2

Liczba 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Jeśli dla zmiennej przechowującej znaki zarezerwujemy trzy bajty i będą one przechowywać 

wartości:

Binarnie

00110001 00110000 00100100

Dziesiętnie

49

48

36

to ten łańcuch znaków będziemy interpretować jako 10$.

background image

Aby początkujący programista nie zapominał o fakcie istnienia różnych typów danych postuluje 

się wyłączenie mechanizmu automatycznej konwersji danych z jednych typów na inne. Aby wyłączyć 

ten mechanizm należy posłużyć się opcją Strict. Jeśli opcja Strict jest włączona, to konieczne jest  

użycie jednej z funkcji konwersji. Jeśli opcja jest wyłączona (Off), to kompilator automatycznie doda 

do kodu wykonywalnego instrukcje konwertujące wartość jednego typu na inny. W nielicznych przy-

padkach może to prowadzić do błędów w działaniu aplikacji.

Drugim zaleceniem dotyczącym typów jest wymuszenie na ćwiczących jawnego deklarowania 

zmiennych wraz z typami. Do uzyskania takiego efektu służy opcja Explicit. Jeśli jest wyłączona (Off),  

to programista nie musi jawnie deklarować zmiennej.  Włączenie opcji Strict oraz Explicit będzie za -

daniem kolejnego ćwiczenia.

Ćwiczenie 23
Włączyć opcję Strict oraz Explicit dla kodu pisanego w języku Visual Basic 2010.

1. Uruchom okno dialogowe Options (Tools\Options).

2. Rozwiń   węzeł   Projects   and   Solutions,   a   następnie   wybierz   podwęzeł   VB  Defaults 

(domyślne dla Visual Basic).

3. Ustal wartość Strict oraz Explicit na On.

4. Zamknij okno dialogowe Options.

Stałe

Stała   to  miejsce  w  pamięci  operacyjnej  komputera,   które  przechowuje  niezmienną   wartość. 

Wartość nie zmienia się od momentu utworzenia stałej, aż do momentu jej zniszczenia. Deklaracja 

stałej składa się ze słowa kluczowego 

Const

, nazwy stałej, określenia jej typu oraz przypisania war-

tości:

Const NazwaStałej As NazwaTypuStałej = WartośćStałej

Przypomnijmy, że pamięć operacyjna składa się z bajtów. Każdy bajt ma osiem pozycji binar-

nych – bitów. Może zatem reprezentować jedną z wartości przedziału <00000000

B

, 11111111

B

> (B po-

nownie oznacza, że liczby podane są w systemie dwójkowym – binarnym), w zapisie dziesiętnym 

przedział ten przyjmie postać <0, 255>. Wartości spełniające warunek przynależności do takiego 

przedziału, to wartości typu  

Byte

. Nazwa  

Byte

  określa, że wszystkie stałe i zmienne tworzone w 

oparciu o ten typ mogą przechowywać tylko wartości całkowite, nieujemne i mniejsze niż 256.  Kolej-

ne ćwiczenie pokaże sposób definiowania stałej typu 

Byte

.

Ćwiczenie 24
Zdefiniować w procedurze Main stałą o nazwie bytLiczbaSenatorów typu Byte o wartości 
100.

1. Dodaj, przed wywołaniem Console.WriteLine, pusty wiersz i umieść w nim kursor teksto-

wy.

background image

2. Wpisz tekst:

Const bytLiczbaSenatorów As Byte = 100

3. Skompiluj projekt.

Słowo kluczowe  

Const

  (skrót od angielskiego constant – stały) rozpoczyna deklarację stałej. 

Nazwa stałej powinna odzwierciedlać jej typ oraz zastosowanie. Przyjęło się, że przedrostek wskazu -

je typ stałej (zmiennej) i składa się z małych liter, a reszta nazwy wskazuje zastosowanie stałej 

(zmiennej) i składa się ze słów rozpoczynających się wielką literą. Jest to tzw. camelStyle. Nazwa 

musi zaczynać się od litery i może zawierać cyfry oraz znak podkreślenia.

Przykłady poprawnych nazw.

bytAlaMaKota

bytKota_9

Po nazwie występuje określenie typu stałej (zmiennej) składające się ze słowa kluczowego 

As 

(Jako) i nazwy typu (np. 

Byte

). Dalszy ciąg deklaracji to instrukcja przypisania składająca się z opera-

tora przypisania (znak równości) oraz wartości przypisywanej stałej.

Od momentu wykonania przez aplikację deklaracji stałej, aż do likwidacji stałej będzie ona po-

siadała przypisaną jej wartość. Oznacza to, że do „śmierci” stała bytLiczbaSenatorów posiadać bę-

dzie wartość 100. Wartość taką można wykorzystać w działaniach aplikacji. Kolejne ćwiczenie poka-

że użycie wartości stałej jako argumentu metody WriteLine konsoli.

Ćwiczenie 25
Użyć wartości stałej jako argumentu metody WriteLine.

1. Dodaj po deklaracji stałej bytLiczbaSenatorów pusty wiersz.

2. Wywołaj w nim metodę Write konsoli podając jako argument łańcuch tekstowy:

"Liczba senatorów w Senacie RP wynosi: "

3. Dodaj następny pusty wiersz i wywołaj w nim metodę WriteLine konsoli podając jako ar -

gument stałą bytLiczbaSenatorów.

Przykład.

Console.WriteLine(bytLiczbaSenatorów)

4. Skompiluj projekt i uruchom aplikację.

5. Zapoznaj się z zawartością konsoli i zakończ działanie aplikacji.

background image

Widać, że stała bytLiczbaSenatorów przechowuje wartość 100. Programista nie musi pamiętać, 

że Senat RP liczy stu członków, wystarczy, że dowie się ilu ich jest i utworzy stałą o odpowiedniej  

wartości. Każdorazowo gdy napisze w kodzie źródłowym nazwę bytLiczbaSenatorów aplikacja pobie-

rze z pamięci operacyjnej wartość tej stałej i użyje konkretnej wartości.

Zmienne

Zmienne tworzone są podobnie jak stałe, ale ich wartość może być zmieniana w trakcie wyko-

nywania aplikacji. deklarację zmiennej wskazuje słowo kluczowe 

Dim

 (skrót od angielskiego dimen-

sion – wymiar, rozmiar). Kolejne ćwiczenie obrazuje deklarowanie zmiennej.

Ćwiczenie 26
Zdefiniować w procedurze Main zmienną bytKadencjaSenatora typu Byte.

1. Dodaj na początku procedury Main pusty wiersz i umieść w nim kursor tekstowy.

2. Wpisz tekst:

Dim bytKadencjaSenatora As Byte

3. Skompiluj projekt.

Deklaracja zmiennej może również zawierać instrukcję przypisania:

Dim bytKadencjaSenatora As Byte = 2

W takim przypadku liczba 2 jest wartością początkową zmiennej bytKadencjaSenatora. Jeśli in-

strukcja   przypisania   nie   występuje,   to   dla   zmiennych   typu  

Byte

  domyślną   wartością   początkową 

jest 0. Wartość zmiennej może być użyta w programie tak, jak wartość stałej, a dodatkowo może być 

zmieniana przy użyciu instrukcji przypisania.

II.6.

Instrukcja przypisania

Instrukcja przypisania (ang. assignment) jest najczęściej, obok instrukcji wywołania (call), stoso-

waną instrukcją. Jej składnia jest następująca:

Zmienna = Wyrażenie

Rysunek 10: Nazwa stałej, zastąpiona została jej wartością.

background image

Wykonanie instrukcji przypisania polega na obliczeniu wartości wyrażenia (może to być np. do-

dawanie) po prawej stronie znaku równości, a następnie umieszczenie obliczonej wartości w pamięci 

operacyjnej   przydzielonej   zmiennej,   której   nazwa   występuje   po   lewej   stronie   znaku   równości 

(np. Zmienna).

Przykład.

bytKadencjaSenatora = 1 + 1

Powyższa instrukcja przypisania zadziała w następujący sposób. Najpierw zostanie obliczona 

wartość wyrażenia 1+1. Wynik wyrażenia, czyli 2, zostanie przypisany zmiennej bytKadencjaSenato-

ra. Niezależnie od tego jaka była poprzednia wartość zmiennej, po wykonaniu instrukcji przypisania 

zmienna ma wartość 2. Kolejne ćwiczenie pokazuje wykorzystanie instrukcji przypisania do zmiany 

wartości zmiennej.

Ćwiczenie 27
Użyć   instrukcji   przypisania   do   zmiany   wartości   zmiennej.   Efekty   zmian   wyświetlić   w 
konsoli.

1. Dodaj po deklaracji zmiennej bytKadencjaSenatora pusty wiersz i umieść w nim kursor 

tekstowy.

2. Wywołaj w dodanym wierszu metodę Write konsoli podając jako argument łańcuch tek-

stowy:

"Pan X nie był jeszcze senatorem. Liczba jego kadencji w Senacie to: "

3. Dodaj następny pusty wiersz i wywołaj w nim metodę WriteLine konsoli podając jako ar -

gument zmienną bytKadencjaSenatora.

Przykład.

Console.WriteLine(bytKadencjaSenatora)

4. Dodaj następny pusty wiersz i przypisz w nim zmiennej bytKadencjaSenatora wartość 1.

Przykład.

bytKadencjaSenatora = 1

5. Dodaj następny pusty wiersz i wywołaj w nim metodę Write konsoli podając jako argu-

ment łańcuch tekstowy:

"Pan Y był już senatorem. Liczba jego kadencji w Senacie to: "

6. Dodaj następny pusty wiersz i wywołaj w nim metodę WriteLine konsoli podając jako ar -

gument zmienną bytKadencjaSenatora.

7. Skompiluj projekt i uruchom aplikację.

8. Zapoznaj się z zawartością konsoli i zakończ działanie aplikacji.

background image

II.7.

Typy danych

Stałe i zmienne mogą przechowywać wartości spotykane w rzeczywistych zadaniach. Typ 

Byte 

pozwala wprawdzie przechować liczbę senatorów, ale liczba posłów Sejmu RP wynosi 460, a to jest 

liczba większa niż 255. Typ 

Byte

 nie nadaje się zatem do tworzenia zmiennych, które mają przecho-

wywać większe liczby całkowite. Długości skoków Adama Małysza nie przekroczyły 255 metrów, ale 

wyznaczane są z dokładnością do 0,5 metra. Typ 

Byte

 pozwala przechowywać tylko liczby całkowite, 

nie nadaje się zatem do przechowywania wyników skoków narciarskich.

Nie wyczerpując zagadnienia można napisać, że ogólnie typy dzielą się na liczbowe i tekstowe. 

Dodatkowo występują typy do przechowywania wartości logicznych oraz dat. Wszystkie wymienione 

typy zdefiniowane są w przestrzeni nazw System i są zawsze dostępne dla projektów.

Typy liczbowe

Do przechowywania liczb zdefiniowano typy całkowite i rzeczywiste.

Całkowite to:

Byte

Int16

Int32

Int64

Typy rzeczywiste dzielą się na zmiennoprzecinkowe i stałoprzecinkowe.

Zmiennoprzecinkowe to:

Single

Double

Stałoprzecinkowy – 

Decimal

.

Każdy z wymienionych typów pozwala tworzyć stałe oraz zmienne przydatne do odmiennych 

zastosowań i wymaganej dokładności obliczeń.

Typy tekstowe

Zdefiniowano dwa typy tekstowe:

Char

 – do przechowywania pojedynczego znaku

String

 – do przechowywania łańcucha znaków

Pozostałe typy

Zdefiniowano również typ  

Boolean

 służący do przechowywania wartości dwustanowych takich 

jak Prawda/Fałsz, Włączone/Wyłączone, Tak/Nie itp.

background image

Do przechowywania dat (chwil) z dokładnością do jednej milisekundy zdefiniowano typ 

DateTi-

me

.

II.8.

Pobieranie danych od użytkownika

Aplikacja Projekt_016 nie pobiera danych z zewnątrz, wszystko czego potrzebuje do pracy za-

wiera w kodzie źródłowym. Użytkownik takiej aplikacji nie ma wpływu na działanie aplikacji i otrzymu-

je zawsze taki sam efekt.

Konsola zawiera metody-funkcje (ang. function) Read i ReadLine, które pozwalają na pobiera-

nie danych od użytkownika. Funkcje te odczytują znaki wprowadzone do monitora konsoli przy uży-

ciu klawiatury. Metody typu 

Function

 różnią się od metod typu 

Sub

 tym, że zwracają wynik, można 

je zatem traktować jak wyrażenie i umieszczać po prawej stronie operatora przypisania. Kolejne ćwi-

czenie pokaże schemat postępowania przy pobieraniu danych.

Ćwiczenie 28
Utworzyć   nowy   projekt   aplikacji   konsolowej,   której   działanie   polega   na   pobraniu 
od użytkownika jego imienia i wyświetleniu go w konsoli.

1. Utwórz nowy Projekt_028 aplikacji konsolowej.

2. Użyj metody WriteLine konsoli, aby zachęcić użytkownika aplikacji do wpisania w konsoli 

swojego imienia i zatwierdzenia go klawiszem Enter.

Przykładowy tekst zachęty.

"Wpisz swoje imię i naciśnij Enter."

3. Zadeklaruj zmienną strImię typu String.

Przykład.

Dim strImię As String

4. Wykorzystaj metodę ReadLine konsoli do pobrania tekstu wprowadzonego do konsoli 

przez użytkownika. Wynik metody-funkcji ReadLine przypisz zmiennej strImię

Przykład.

strImię = Console.ReadLine()

5. Wykorzystaj metody Write i WriteLine konsoli tak, aby w konsoli pojawił się tekst:

Twoje imię to: ImięUżytkownika

Uwaga. Imię użytkownika symbolizuje zawartość zmiennej strImię.

6. Skompiluj projekt i uruchom aplikację. Po pojawieniu się zachęty wpisz swoje imię i naci-

śnij Enter.

7. Zapoznaj się z zawartością konsoli i zakończ działanie aplikacji.

background image

Sekwencja instrukcji wykorzystanych w ćwiczeniu może być podobna do poniższej:

        Console.WriteLine("Wpisz swoje imię i naciśnij Enter.")
        Dim strImię As String
        strImię = Console.ReadLine
        Console.Write("Twoje imię to: ")
        Console.WriteLine(strImię)

Działanie aplikacji stosunkowo łatwo prześledzić. Po pierwsze aplikacja wypisuje tekst zachęty. 

Następnie tworzy zmienną, która zostanie użyta do przechowywania łańcucha tekstowego (imię jest 

łańcuchem znaków). Instrukcja przypisania użyta w trzecim wierszu działa tak, jak to wcześniej opi-

sano. Najpierw wykonane jest obliczenie wartości wyrażenia po prawej stronie znaku przypisania – 

w tym przypadku jest to funkcja ReadLine, która odczytuje z konsoli znaki, aż do końca bieżącego 

wiersza, czyli imię użytkownika – następnie odczytany łańcuch tekstowy przypisywany jest zmiennej 

strImię. Dalszy ciąg nie wnosi nic nowego. Aplikacja wypisuje w konsoli tekst, a następnie zawartość 

zmiennej strImię.

Dwa ostatnie wiersze można zastąpić jednym o postaci:

Console.WriteLine("Twoje imię to: {0}", strImię)

W tym przypadku łańcuch tekstowy – pierwszy argument metody WriteLine – to tzw. format. 

W formacie występują objęte nawiasami klamrowymi liczby. W chwili wykonywania metody nawias 

wraz z liczbą zastępowany jest wartością następnego (lub następnych) argumentu (argumentów) me-

tody. Kolejne argumenty oddziela się przecinkami.

Przykład.

Console.WriteLine("Miejscowość {0} liczy {1} mieszkańców", strMiejscowość, intLudzi)

W przykładzie, znaki {0} zostaną zastąpione wartością zmiennej strMiejscowość, a znaki {1} 

wartością zmiennej intLudzi.

Rysunek 11: Wprowadzanie danych przez użytkownika aplikacji.

background image

II.9.

Operatory, funkcje konwersji oraz funkcje działające na łańcuchach znaków

Operatory

Po prawej stronie instrukcji przypisania występują wyrażenia służące do obliczenia wartości wy-

niku. Wyrażenia budowane są ze stałych, zmiennych i operatorów. W odniesieniu do liczb najczęściej 

używane operatory to (strzałka wskazuje wynik operacji):

+

 (plus) operator dodawania, 2 + 3  5

 (minus) operator odejmowania, 5 – 3  2

*

 (gwiazdka) operator mnożenia, 3 * 4  12

/

 (slash) operator dzielenia rzeczywistego, 3 / 4  0,75

\

 (backslash) operator dzielenia całkowitego, 18 \ 7  2 (wynik jest liczbą całkowitą)

^

 (carret) operator potęgowania, 3 ^ 4  81

Mod

 (modulo) operator reszty z dzielenia, 22 Mod 7  1

Do łączenia tekstów stosuje się operator konkatenacji 

&

.

Przykład. Zakłada się, że zmienna strNazwisko przechowuje tekst "Kowalski".

"Pan " & strNazwisko  "Pan Kowalski"

Funkcje konwersji

W trakcie wykonywania ćwiczenia 23. dla opcji Explicit oraz Strict została ustalona wartość On. 

Włączenie tych opcji zostało podyktowane względami dydaktycznymi i pozwala zwrócić uwagę ćwi-

czących na istotne zagadnienia programowania. Opcja Explicit w stanie On powoduje, że każda 

zmienna, przed pierwszym użyciem musi być jawnie zadeklarowana, to znaczy musi zostać określo-

ny jej typ.

Przykład.

Dim ZmiennaTypuByte As Byte

W ten sposób programista jawnie ogranicza zakres przechowywanych przez zmienną wartości 

do liczb z przedziału <0, 255>. Dopiero po takiej deklaracji może nastąpić użycie zadeklarowanej 

zmiennej.

Gdyby opcja Explicit została wyłączona (Off), to możliwe byłoby użycie zmiennej bez jej jawne-

go deklarowania. Wyłączenie opcji może spowodować powstanie w programie trudnych do wykrycia 

błędów.

Opcja Strict w stanie On powoduje, że przypisanie zmiennej wartości wyrażenia, którego wynik 

jest innego typu niż typ zmiennej może nastąpić jedynie w wyniku jawnej konwersji tego wyniku na  

tym zmiennej. Jeśli konwersja jest niemożliwa wystąpi błąd.

background image

Chcąc obliczyć średnią liczbę studentów w grupie na podstawie liczebności trzech grup dzieli 

się sumaryczną liczbę studentów przez liczbę trzy. Jednak dzielenie może dać jako wynik liczbę rze-

czywistą, a oczekujemy, że średnia będzie liczbą całkowitą.

Przykład.

Dim ŚredniaLiczbaStudentówWGrupie As Integer
Dim SumarycznaLiczbaStudentów As Integer = 49
ŚredniaLiczbaStudentówWGrupie = SumarycznaLiczbaStudentów / 3

Wartość wyrażenia po prawej stronie operatora przypisania jest (w ogólności) liczbą rzeczywi-

stą. Zmienna, której wynik jest przypisywany, posiada typ całkowity. Podkreślone na czerwono przypi-

sanie zostanie uznane przez kompilator Visual Studio za błąd (przy włączonej opcji Strict). W takim 

przypadku konieczne jest jawne użycie jednej z wielu funkcji konwersji:

CBool(wyrażenie) – konwertuje wartość wyrażenia do typu 

Boolean

 (logicznego),

CByte(wyrażenie) – do typu 

Byte

,

CChar(wyrażenie) – do typu znakowego,

CDate(wyrażenie) – do daty,

CDbl(wyrażenie) – 

Double

,

CDec(wyrażenie) – 

Decimal

,

CInt(wyrażenie) – 

Integer

,

CLng(wyrażenie) – 

Long

,

CObj(wyrażenie) – 

Object

,

CSByte(wyrażenie) – 

SByte

,

CShort(wyrażenie) – 

Short

,

CSng(wyrażenie) – 

Single

,

CStr(wyrażenie) – 

String

,

CUInt(wyrażenie) – 

UInteger

 (czterobajtowa całkowita bez znaku - <0, 4294967295>),

CULng(wyrażenie) – 

Ulong

(szesnastobajtowa całkowita bez znaku – <0, 18446744073709551615>),

CUShort(wyrażenie) – 

UShort

 (dwubajtowa całkowita bez znaku – <0, 65535>).

Przy włączonej opcji Strict należy jawnie użyć jednej z wymienionych funkcji. Błędne przypisa -

nie z powyższego przykładu należy zastąpić następującym:

ŚredniaLiczbaStudentówWGrupie = CInt(SumarycznaLiczbaStudentów / 3)

background image

Przy wyłączonej opcji Strict (Off) konwersja nastąpi niejawnie i może powodować trudne do wy-

chwycenia błędy.

Funkcje działające na łańcuchach znaków

Wiele zadań polega na przetwarzaniu ciągów znaków – tekstów. Przykładowo, może być ko-

nieczne połączenie jednego łańcucha znaków z innym. Do tego celu stosuje się operator konkatena-

cji (łączenia łańcuchów) – „&”. Jeśli jednak potrzebny jest tylko fragment łańcucha tekstowego, nale-

ży zastosować jedną z funkcji łańcuchowych. Poniżej wymienione zostaną te z nich, które są najczę-

ściej wykorzystywane na etapie zapoznawania się z językiem programowania.

Funkcje, o których mowa zadeklarowane są w module Strings przestrzeni nazw VisualBasic 

przechowywanej w zestawie Microsoft (biblioteka Microsoft.VisualBasic.dll).

W przykładach zakłada się, że zadeklarowano zmienne:

Dim strWynik as String
Dim intWynik as Integer

LCase

Funkcja zamienia wszystkie znaki łańcucha tekstowego na małe litery. Przykładowo, wywołanie:

strWynik = LCase("John Travolta")

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „john travolta”.

Left

Funkcja zwraca określoną liczbę znaków z lewej strony łańcucha tekstowego. Przykładowo, wy-

wołanie:

strWynik = Left("John Travolta", 6)

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „John T”.

Len

Funkcja   zwraca   długość   łańcucha   tekstowego   (liczbę   znaków   –   liczone   są   również   spacje, 

z których się składa). Przykładowo, wywołanie:

intWynik = Len("John Travolta")

spowoduje, że zmienna intWynik przechowywać będzie liczbę 13.

LSet

Funkcja zwraca łańcuch tekstowy o określonej długości rozpoczynający się od znaków łańcu-

cha podanego jako parametr. Jeśli w argumencie jest za mało znaków, to wynik uzupełniany jest po  

prawej stronie spacjami, a jeżeli argument jest zbyt długi, to następuje obcięcie. Przykładowo, wywo -

łanie:

strWynik = LSet("John Travolta", 15)

background image

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „John Travolta··” (kropki ozna-

czają spacje dodane, aby łańcuch miał 15 znaków). Natomiast, wywołanie:

strWynik = LSet("John Travolta", 6)

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „John T”.

LTrim

Funkcja zwraca łańcuch tekstowy podany jako argument po usunięciu z niego spacji występują-

cych po lewej stronie. Przykładowo, wywołanie:

strWynik = LTrim("  John Travolta") 'Przed literą J występują dwie spacje

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „John Travolta” (bez dwóch spacji 

przed literą J).

Mid

Funkcja zwraca łańcuch tekstowy. Składa się on ze znaków łańcucha podanego jako argument. 

Znaki pobierane są z argumentu od miejsca o określonym numerze. Przykładowo, wywołanie:

strWynik = Mid("John Travolta", 7)

spowoduje, że zmienna strWynik przechowywać będzie łańcuch tekstowy „ravolta”. Można również 

określić ile znaków powinien zawierać wynik. Przykładowo, wywołanie:

strWynik = Mid("John Travolta", 7, 3)

spowoduje, że zmienna strWynik przechowywać będzie łańcuch tekstowy „rav”.

Replace

Funkcja zwraca łańcuch tekstowy powstający z argumentu przez zastąpienie określonych frag-

mentów tekstu innym ciągiem znaków. Przykładowo, wywołanie:

strWynik = Replace("John Travolta", "a", "es")

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „John Tresvoltes” (litera „a” została 

zastąpiona przez litery „es”).

Right

Funkcja zwraca określoną liczbę znaków z prawej strony łańcucha tekstowego. Przykładowo, 

wywołanie:

strWynik = Right("John Travolta", 6)

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „avolta”.

Rset

Funkcja zwraca łańcuch tekstowy o określonej długości kończący się ostatnimi znakami łańcu-

cha podanego jako parametr. Jeśli w argumencie jest za mało znaków, to wynik uzupełniany jest po  

lewej stronie spacjami, a jeżeli argument jest zbyt długi, to następuje obcięcie. Przykładowo, wywoła-

nie:

strWynik = RSet("John Travolta", 15)

background image

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „··John Travolta” (kropki oznaczają 

spacje dodane, aby łańcuch miał 15 znaków). Natomiast, wywołanie:

strWynik = RSet("John Travolta", 6)

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „avolta”.

Rtrim

Funkcja zwraca łańcuch tekstowy podany jako argument po usunięciu z niego spacji występują-

cych po prawej stronie. Przykładowo, wywołanie:

strWynik = RTrim("John Travolta  ") 'Po słowie Travolta występują dwie spacje

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „John Travolta” (bez dwóch spacji 

kończących argument funkcji).

Space

Funkcja zwraca łańcuch tekstowy złożony ze spacji. Jest ich tyle, ile wynosi argument funkcji.

StrReverse

Funkcja zwraca łańcuch tekstowy złożony ze znaków łańcucha podanego jako argument funk-

cji, ale w odwrotnej kolejności. Przykładowo, wywołanie:

strWynik = StrReverse("John Travolta")

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „atlovarT nhoJ”.

Trim

Funkcja zwraca łańcuch tekstowy podany jako argument po usunięciu z niego spacji występują-

cych tak po lewej, jak i po prawej stronie. Przykładowo, wywołanie:

strWynik = Trim("  John Travolta  ") 

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „John Travolta”.

UCase

Funkcja zamienia wszystkie znaki łańcucha tekstowego na wielkie litery. Przykładowo, wywoła-

nie:

strWynik = UCase("John Travolta")

spowoduje, że zmienna strWynik przechowywać będzie łańcuch „JOHN TRAVOLTA”.

Wywołania funkcji można zagnieżdżać, aby uzyskać określony sposób przetwarzania łańcucha 

tekstowego.

II.10.

Komentarze

Dobrym zwyczajem programisty jest opisywanie tworzonego kodu źródłowego. W tym celu w 

treści umieszcza się komentarze. Komentarz rozpoczyna się od znaku „'” (apostrof) i ciągnie się do 

końca wiersza.

background image

Przykład.

‘To jest komentarz, jest on ignorowany przez kompilator


Document Outline