Top Banner
Andrzej Borowiecki Podstawy programowania w języku Visual Basic dla geodetów Kraków 2007
83

Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

May 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

Andrzej Borowiecki

Podstawy programowania w

języku Visual Basic dla geodetów

Kraków 2007

Page 2: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

1

1. Wstęp

Język Visual Basic jest produktem firmy Microsoft i działa w środowisku Windows nie

tylko jako samodzielne narzędzie do tworzenia programów, ale jest teŜ narzędziem

wbudowanym w takie programy jak Word, Excel, Access czy MicroStation.

Za pomocą Visual Basica moŜna tworzyć programy działające samodzielnie (pliki *.exe)

oraz aplikacje wzbogacające istniejące oprogramowanie, np. w programie MicroStation

utworzono wiele tak zwanych nakładek dostosowujących ten program do szczególnych

potrzeb geodetów.

W niniejszej publikacji zaprezentowane zostaną tylko niektóre moŜliwości Visual Basica w

wersji zainstalowanej w programie Excel, ze szczególnym uwzględnieniem prostych zadań

geodezyjnych.

Bardzo szczegółowo opisany został pierwszy przykład obliczeń według twierdzenia

Pitagorasa. Rozdział ten polecamy początkującym programistom. Przedstawione tu sposoby

moŜna stosować we wszystkich następnych zadaniach, gdzie ze zrozumiałych względów

szczegółowe opisy nie powtarzają się.

Page 3: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

2

2. Programowanie w języku Visual Basic

2.1. Wprowadzenie Programowanie w języku Visual Basic wymaga uruchomienia edytora, a następnie

najczęściej składa się z dwóch etapów:

- tworzenie formularza

- pisanie programu

2.2. Uruchamianie edytora programu Visual Basic w Excelu Z Menu programu Microsoft Excel wybieramy następujące opcje: Narzędzia Makro Edytor Visual Basic Na ekranie wyświetlany jest ekran edytora Visual Basic:

Page 4: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

3

W oknie Project –VBAProject wyświetlane są informacje o nazwie skoroszytu (Zeszyt1), poniŜej standardowo wyświetlane są 3 arkusze. Programy w Visual Basicu wymagają zwykle utworzenia formularza uŜytkownika (UserForm). Aby go wstawić do programu naleŜy kliknąć myszą na ikonkę Insert UserForm. Po kliknięciu myszą na ikonkę Insert UserForm na ekranie wyświetlany jest czysty formularz o nazwie UserForm1 oraz paleta narzędzi Toolbox: W oknie Properties określa się właściwości obiektów.

Page 5: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

4

2.3. Tworzenie formularza uŜytkownika (UserForm)

2.3.1. Umieszczanie napisu w nagłówku formularza : Umieścić napis w nagłówku formularza np. TWIERDZENIE PITAGORASA W tym celu naleŜy kliknąć myszą na formularz, a następnie w oknie właściwości Properties – UserForm1, w polu Caption wpisać tekst: TWIERDZENIE PITAGORASA . JeŜeli okno

Properties nie jest widoczne, naleŜy kliknąć na ikonkę

2.3.2. Ustawianie dla formularza domyślnej czcionki : W tym celu, w oknie właściwości Properties – UserForm1 klikamy myszą w polu Font i ustawiamy wybraną czcionkę:

Page 6: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

5

2.3.3. Obiekty na formularzu Paleta Toolbox zawiera narzędzia do wstawiania obiektów na formularz. JeŜeli paleta Toolbox nie jest widoczna naleŜy kliknąć na ikonkę .

Opisane poniŜej obiekty wykorzystuje się najczęściej: - Label - napisy - TextBox - okienka tekstowe (okienka, do których wpisujemy teksty lub w których pojawiają się wyniki) . KaŜde okienko tekstowe powinno mieć swoją nazwę – przyjmijmy umowę, Ŝe nazwa ta winna kończyć się literą t . - CommandButton – przyciski polecenia - Image – pole grafiki

2.3.4. Dodawanie obiektów do ToolBox JeŜeli w ToolBox nie występuje jakiś obiekt np. tabelka vsFlexArray , trzeba uzupełnić zawartość ToolBox:

- kliknąć prawym klawiszem myszy na wolne miejsce wewnątrz ToolBox, - wybrać opcję: Additional Controls - zaznaczyć pole obok Formant VideoSoft FlexArray - kliknąć OK

Page 7: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

6

- Po wykonaniu tych czynności ToolBox zawiera nową ikonkę VSFlexArray

Przykładowy widok tabelki VSFlexArray

Page 8: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

7

2.3.5. Wstawianie obiektów na formularz Napisy Wstawić na formularz napis, np.: Obliczenie długości przeciwprostokątnej W tym celu z palety narzędziowej Toolbox wybieramy obiekt Label (czyli etykieta, napis) Na formularzu zaznaczamy miejsce gdzie ma zostać umieszczony napis: W oknie Properties-Label1 w polu Caption wpisujemy tekst: Na formularzu pojawia się napis:

Page 9: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

8

Okna tekstowe Wstawić na formularz okno tekstowe o nazwie at. W tym celu z palety narzędziowej Toolbox wybieramy obiekt TextBox: Na formularzu zaznaczamy miejsce gdzie ma zostać umieszczone okienko tekstowe: W oknie Properties-TextBox1 w polu Name wpisujemy nazwę okienka np. at :

Page 10: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

9

Wstawianie przycisków komend na formularz: Wstawić na formularz przycisk komend z napisem Oblicz. W tym celu z palety narzędziowej Toolbox wybieramy obiekt CommandButton: Na formularzu zaznaczamy miejsce, gdzie ma zostać umieszczony przycisk komend: W oknie Properties-CommandButton1 w polu Caption wpisujemy Oblicz :

Page 11: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

10

Wstawianie tabelki

Wstawić na formularz tabelkę o nazwie tab1. W tym celu wybieramy z ToolBox ikonkę VSFlexArray

Następnie zaznaczamy na formularzu miejsce gdzie ma znaleźć się tabelka. W oknie Properties – vsFlexArray w polu (Name) wpisujemy nazwę tabeli np. tab1

Page 12: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

11

Wstawianie grafiki w oknie Image:

W tym celu z palety narzędziowej Toolbox wybieramy obiekt Image: Na formularzu zaznaczamy miejsce gdzie ma zostać umieszczona grafika:

W oknie Properties-Image1 w polu Picture wstawiamy nazwę rysunku np. wykonanego w programie Paint :

W polach PictureAlignment i PictureSizeMode naleŜy ustawić opcje 1.

Page 13: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

12

Zmiana koloru dowolnego obiektu

Po zaznaczeniu kliknięciem myszy dowolnego obiektu na formularzu moŜemy w oknie jego właściwości Properties wybrać z Palety kolor tła – po angielsku BackColor:

ForeColor oznacza kolor liter jakie pojawią się na wybranym tle.

2.4. Obsługa zdarzeń Programowanie w języku Visual Basic sprowadza się do obsługi zdarzeń – to znaczy, Ŝe

działanie programu zaleŜy od tego co zrobi uŜytkownik.

KaŜdy obiekt umieszczony na formularzu moŜe mieć przypisaną jakąś funkcję lub procedurę.

Najczęściej procedury przypisuje się do przycisków komend . Kliknięcie myszą na taki

przycisk powoduje uruchomienie jakiejś procedury. W tym wypadku właśnie klikni ęcie

myszą jest zdarzeniem, na które program musi odpowiednio zareagować.

Ale istnieje teŜ wiele innych zdarzeń. Na przykład kiedy wpisujemy liczbę w okienku

tekstowym – zdarzeniem jest wyjście z tego okienka – czyli kliknięcie myszą gdziekolwiek

poza okienkiem. RównieŜ takie zdarzenie moŜe spowodować uruchomienie jakiejś procedury

– na przykład sformatowanie wpisanej liczby w taki sposób by zawierała dwa miejsca po

przecinku.

Page 14: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

13

Listę moŜliwych zdarzeń moŜna obejrzeć kiedy klikniemy dwukrotnie myszą na obiekt wstawiony na formularzu. PoniŜej widoczny jest fragment listy zdarzeń dostępnej po kliknięciu na okienko tekstowe o nazwie t1: After update oznacza tu zakończenie edycji zawartości okienka, czyli kliknięcie myszą poza okienkiem. Pokazano tu przykład instrukcji formatującej zawartość okienka do dwóch miejsc po przecinku. Lista moŜliwych zdarzeń jest róŜna dla róŜnych obiektów. PoniŜej przedstawiono przykład zdarzeń dla przycisku komend. Procedury moŜna teŜ przypisywać do zdarzeń związanych z samym formularzem.

Page 15: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

14

2.5. Podstawowe funkcje i operatory w języku Visual Basic

2.5.1. Typy zmiennych W Visual Basicu nie ma obowiązku deklarowania typów zmiennych. Wszystkie zmienne uŜywane w programie mają przypisany typ Variant – czyli zmieniający się. W pewnych sytuacjach jednak program wymaga by zmienna miała ściśle określony typ – dotyczy to na przykład zmiennych sterujących w instrukcji For – taka zmienna musi być liczbą całkowitą – np. Integer. Najczęściej stosowane typy zmiennych: Boolean logiczny: Tak lub Nie (True False) Byte liczby całkowite od 0-255 Integer liczby całkowite od –32 768 do 32 767; (% ) Long liczby całkowite od 2 147 483 648 do 2 147 483 647;(& ) Single liczby rzeczywiste od -3.402823E38 do -1.401298E-45 dla liczb ujemnych

i od 1.401298E-45 do 3.402823E38 dla liczb dodatnich; (!) Double liczby rzeczywiste od -1.79769313486231E308 do -4.94065645841247E-324

dla liczb ujemnych i od 4.94065645841247E-324 do 1.79769313486232E308 dla liczb dodatnich ; (#).

String zmienna tekstowa – zawiera dowolny tekst ($) Variant moŜe zawierać dowolny z wyŜej wymienionych typów i automatycznie

przekształcać jeden w drugi.

2.5.2. Deklarowanie typu zmiennej W celu deklarowania typów zmiennych stosuje się instrukcję Dim: Dim tekst as string Dim i as integer Dim x as double, y as double W instrukcji przypisania moŜna określić typ zmiennej uŜywając symboli podanych w nawiasach na końcu opisów dla poszczególnych typów: tekst$ =”napis” i% = 5 x# = 5397247.68

Page 16: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

15

2.5.3. Instrukcja przypisania Najczęściej występującą instrukcją w programie jest instrukcja przypisania , która pozwala podstawić pod zmienną wynik obliczeń:

x = wyraŜenie W wyniku instrukcji przypisania obliczane jest wyraŜenie stojące po prawej stronie znaku "=" i obliczona wartość przypisywana jest wartości zmiennej stojącej po lewej stronie znaku "=".

2.5.4. Podstawowe operatory działań

- dodawanie + c=a+b - odejmowanie – d=e-f - mnoŜenie * b=a*e - dzielenie / f=c/b - potęgowanie ̂ d=a^c - pierwiastkowanie sqr c=sqr(a^2+b^2)

2.5.5. Funkcje matematyczne

- sinus Sin(alfa) x=d*Cos(alfa) - cosinus Cos(alfa) y=d*Sin(alfa) - tangens Tan(alfa) h=d*Tan(beta) - arcus tangens Atn(n ) alfa=Atn(y/x) - wartość bezwzględna Abs(n) b=Abs(x) - logarytm dziesiętny Log(n)/Log(10) l=log(y)/log(10) - logarytm naturalny Log(n) m=log(w) - ex Exp(x) c=Exp(d)

2.5.6. Definiowanie własnej funkcji (na przykładzie funkcji azymut). W geodezji bardzo często oblicza się azymut ze współrzędnych. Dlatego warto zdefiniować taką funkcję i wykorzystywać w wielu róŜnych programach. Z menu wybieramy opcje Insert Procedure a następnie wypełniamy okno dodawania procedury typu Function:

Page 17: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

16

Następnie wpisujemy treść funkcji:

2.5.7. Zapisywanie funkcji w pliku Module: Bardzo często taka funkcja jak azymut jest wykorzystywana w róŜnych obliczeniach geodezyjnych i moŜe być stosowana jako składnik wielu programów. NaleŜy ją więc zapisać w pliku typu Module na przykład o nazwie Funkcje. Plik Module wstawiamy uŜywając opcji Insert Module Taki plik zapisany ma dysku moŜna dołączać do kaŜdego programu.

Page 18: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

17

Następnie w oknie Properties-Module1 zmieniamy nazwę na przykład na Funkcje. Do tego modułu kopiujemy wybraną funkcję, po czym zapisujemy plik Funkcje na dysku, uŜywając opcji Export File Opcja Export File pojawia się kiedy klikniemy na moduł Funkcje prawym klawiszem myszy. Następnie określa się miejsce gdzie ma zostać zapisany moduł Funkcje:

Page 19: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

18

2.5.8. Import pliku Funkcje typu Module: Kiedy tworzymy nowy program, w którym chcemy wykorzystać funkcje zapisane w pliku Funkcje, wtedy importujemy go klikając prawym klawiszem myszy w oknie Project-VBAProject i wybierając opcję Import File: Następnie określamy, który plik chcemy zaimportować:

Page 20: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

19

Po wykonaniu tych czynności w oknie Project-VBAProject widoczny jest plik Funkcje zapisany w folderze Modules. Zawarte w nim funkcje moŜna wykorzystywać w nowym programie.

Page 21: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

20

2.6. Funkcje związane z obsługą plików tekstowych

2.6.1. Określenie nazwy pliku tekstowego zawierającego współrzędne: Do tego celu najlepiej wykorzystać instrukcję InputBox Parametrami tej instrukcji są kolejno:

- tekst zachęty, - nagłówek okienka - domyślna nazwa pliku

plik = InputBox(tekst zachęty, nagłówek okienka, domyślna nazwa pliku) Na przykład: plik = InputBox("Podaj nazwe pliku ze wspolrzednymi punktów", "DANE", "F:\basic\dane.txt") Po wykonaniu tego polecenia na ekranie widzimy następujący obiekt:

Oczywiście nazwę pliku widoczną w okienku tekstowym moŜemy dowolnie zmieniać. Po czym naleŜy kliknąć myszą na przycisk OK . Wtedy wybrana nazwa pliku zostanie podstawiona pod zmienną plik .

Page 22: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

21

2.6.2. Otwarcie pliku tekstowego JeŜeli chcemy czytać dane z pliku tekstowego, na przykład o nazwie plikd – otwieramy go do czytania (Input ) instrukcją:

Open plikd For Input As #1 JeŜeli chcemy zapisywać wyniki do pliku tekstowego, na przykład o nazwie plikw – otwieramy go do pisania (Output) instrukcją:

Open plikw For Output As #2

2.6.3. Czytanie danych z pliku tekstowego W dalszym ciągu programu kaŜdy otwarty plik jest identyfikowany przez swój numer. Na przykład instrukcja czytania danych z pliku o numerze 1 ma następujący wygląd:

Input #1, Nr, x, y

2.6.4. Pisanie wyników do pliku tekstowego Do zapisywania wyników w pliku tekstowym moŜna wykorzystać dwie instrukcje Write i Print :

Write #2, nr, x, y

Print #2, nr, x, y Sposób zapisywania danych w pliku przez te dwie instrukcje jest róŜny: Write:

"A",1000,1000 "B",2000,2000 "C",1000,2000

Print:

A 1000 1000 B 2000 2000 C 1000 2000

2.6.5. Zamykanie pliku tekstowego

KaŜdy plik tekstowy po wykorzystaniu naleŜy zamknąć instrukcją Close zawierającą numer tego pliku. Na przykład:

Close #1

Page 23: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

22

2.6.6. Czytanie danych z pliku tekstowego o nieokreślonej długości: Instrukcja While Not EOF(n)… Wend

Pierwsza jej część: While Not EOF(1) oznacza: Dopóki Nie Koniec pliku (1). JeŜeli program nie natrafi na koniec pliku nr 1, wykonywane są dalsze instrukcje aŜ do linii zawierającej Wend, po czym program wraca na początek pętli do linii While Not EOF(1) . WaŜne jest, Ŝeby wewnątrz pętli While Not EOF(1) ... Wend znajdowała się instrukcja czytania z pliku INPUT #1, lista zmiennych na przykład:

Input #1, nr, x,y która czyta kolejne wiersze pliku tekstowego, co prowadzi w rezultacie do natrafienia na koniec pliku. Bez tej instrukcji pętla While Not EOF(1) ... Wend będzie działała w nieskończoność.

While Not EOF(1) ….. Input #1, nr, x,y … …

Wend

2.7. Instrukcje związane z tabelą: tab1.Cols = - określa liczbę kolumn w tabeli tab1.Rows = - określa liczbę wierszy w tabeli tab1.Col = - określa aktualną kolumnę w tabeli tab1.Row = - określa aktualny wiersz w tabeli tab1 = x - wstawia zmienną x do tabeli w miejscu określonym przez

aktualny wiersz i kolumnę y = tab1 - podstawia pod zmienną y zawartość tabeli określoną przez

aktualny wiersz i kolumnę

Page 24: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

23

2.8. Instrukcje sterujące przebiegiem programu

2.8.1. Instrukcja If ... Then ... Else ... End If Znaczenie tych słów jest następujące : If – jeŜeli Then – wtedy Else – w przeciwnym wypadku End If – koniec instrukcji Zastosowanie instrukcji If oparte jest na sprawdzeniu jakiegoś warunku logicznego. JeŜeli ten warunek jest spełniony, wtedy wykonywane są polecenia umieszczone po słowie Then, na przykład:

If dx < 0 Then azym = azym + 200 JeŜeli dx jest mniejsze od 0 wtedy do obliczonego wcześniej azymutu azym naleŜy dodać 200. JeŜeli warunek nie jest spełniony – program nie wykonuje Ŝadnej czynności. W niektórych sytuacjach - jeŜeli (If ) warunek jest spełniony, wtedy (Then) program wykonuje jakieś czynności, a jeŜeli warunek nie jest spełniony, czyli w przeciwnym wypadku (Else) robi coś innego. Na przykład przy obliczaniu azymutu ze współrzędnych: If dx = 0 Then If dy > 0 Then azym = 100 - jeŜeli warunek dx=0 jest spełniony If dy < 0 Then azym = 300 Else azym = Atn(dy / dx) * 200 / Pi - jeŜeli warunek dx=0 nie jest spełniony(dx≠0) End If

2.8.2. Instrukcja powtarzania For ... To ... Next Zapis For i = 1 To pk oznacza: Dla i zmieniającego się od 1 do pk. Dla kaŜdej , kolejnej wartości i wykonywane są wszystkie instrukcje programu zawarte między linią For i linią Next i. Czyli zostaną one wykonane pk razy. For i = 1 To pk tab1.Row = i tab1 = i Next i Zmienną i nazywamy zmienną sterującą. Musi ona być zmienną całkowitą – typu integer.

Page 25: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

24

2.8.3. Zmienne tablicowe Zmienne tablicowe, to zbiór zmiennych, które mają tę samą nazwę, a rozróŜniane są za pomocą indeksu. Inaczej mówiąc są to n-wymiarowe tabele liczb, a indeks (lub indeksy) wskazują połoŜenie danej liczby w tabeli. Wielkość i typ zmiennych w tabeli określamy za pomocą instrukcji Dim: Przykłady: Dim nazwa(20) as string tablica zmiennych tekstowych Dim x(20) as double, y(20) as double tablice zmiennych rzeczywistych

2.8.4. Zastosowanie instrukcji For do zmiennych tablicowych For i = 1 to 15 Write #2, nazwa(i),x(i),y(i) Next i PowyŜszy fragment programu powoduje zapisanie do pliku tekstowego #2, informacji o piętnastu punktach znajdujących się w zmiennych tablicowych: nazwa, x, y.

2.8.5. Czytanie danych z okienek tekstowych: Instrukcja Val (ang. Value – wartość liczbowa) pobiera tekst wpisany w okienku tekstowym zamienia go na liczbę i podstawia pod wartość zmiennej. JeŜeli na przykład zawartość okienka tekstowego at ma zostać podstawiona pod zmienną a zapisujemy to w następujący sposób:

a= Val(at.text)

2.8.6. Wyświetlanie wyniku obliczeń w okienku tekstowym W celu wyświetlenia wyniku w okienku tekstowym naleŜy zastosować instrukcję Format, która pozwala na określenie sposobu wyświetlania wartości, np. ustalenie liczby miejsc dziesiętnych. W celu umieszczenia wartości zmiennej c jako tekst w okienku tekstowym ct z dokładnością do dwóch miejsc po przecinku piszemy:

ct.text = Format(c,”0.00”)

Page 26: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

25

2.8.7. Pisanie programu: Pisząc program naleŜy uwzględnić jego podstawowe części: Podstawowe części programu:

- czytanie danych - wykonywanie obliczeń - wyświetlanie, drukowanie lub zapisywanie wyników.

2.8.8. Przykład programu podzielonego na części: ‘ czytanie danych a= Val(at.text) b= Val(bt.text) ‘ obliczenia c = Sqr(a^2 + b^2) ‘ wyniki ct.text = Format(c,”0.00”) Program naleŜy wpisać w miejscu, w którym pojawi się kursor po dwukrotnym kliknięciu na przycisk Oblicz:

Page 27: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

26

2.8.9. Symbol dziesiętny Bardzo waŜne jest, Ŝeby część dziesiętna liczby oddzielona była od całkowitej za pomocą kropki - . . Istotne jest Ŝeby w systemie komputera ustawić symbol dziesiętny jako kropkę. Z Panelu sterowania wybieramy opcję: Opcje regionalne i językowe:

Następnie w Opcjach regionalnych naciskamy przycisk Dostosuj:

Page 28: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

27

Następnie ustawiamy kropkę jako Symbol dziesiętny: JeŜeli w pliku tekstowym zastosowany był przecinek, moŜna to łatwo zmienić stosując polecenia: Edycja Zaznacz wszystko i Edycja Zamień.

Po wpisaniu przecinka ” , ” w polu Znajdź, oraz kropki ” . ” w polu Zamień na, klikamy myszą na przycisk Zamień wszystko.

Page 29: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

28

3. Przykład opracowania formularza dla twierdzenia Pitagorasa: Dane są długości boków przyprostokątnych a i b .

3.1. Obliczyć długość przeciwprostokątnej c gdy dane są długości a i b.

3.2. Proponowany docelowy wygląd formularza:

a

b

c 22 bac +=

Page 30: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

29

3.3. Proponowana kolejność czynności przy tworzeniu formularza:

3.3.1. Umieszczanie napisu w nagłówku formularza : Umieścić napis w nagłówku formularza np. TWIERDZENIE PITAGORASA W tym celu naleŜy kliknąć myszą na formularz, a następnie w oknie właściwości Properties – UserForm1, w polu Caption wpisać tekst: TWIERDZENIE PITAGORASA . JeŜeli okno

Properties nie jest widoczne, naleŜy kliknąć na ikonkę

3.3.2. Ustawianie dla formularza domyślnej czcionki : W tym celu w oknie właściwości Properties – UserForm1 klikamy myszą w polu Font i ustawiamy wybraną czcionkę:

Page 31: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

30

3.3.3. Wstawianie napisów na formularz Wstawić na formularz napis: Obliczenie długości przeciwprostokątnej W tym celu z palety narzędziowej Toolbox wybieramy obiekt Label (czyli etykieta, napis) Na formularzu zaznaczamy miejsce gdzie ma zostać umieszczony napis: W oknie Properties-Label1 w polu Caption wpisujemy tekst: Na formularzu pojawia się napis:

Page 32: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

31

W analogiczny sposób wstawiamy pozostałe napisy:

3.3.4. Wstawianie okienek tekstowych na formularz: W tym celu z palety narzędziowej Toolbox wybieramy obiekt TextBox:

Page 33: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

32

Na formularzu zaznaczamy miejsce gdzie ma zostać umieszczone okienko tekstowe: W oknie Properties-TextBox1 w polu Name wpisujemy nazwę okienka np. at : Analogicznie umieszczamy na formularzu pozostałe okienka tekstowe o nazwach bt i ct:

Page 34: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

33

3.3.5. Wstawianie przycisków komend na formularz: W tym celu z palety narzędziowej Toolbox wybieramy obiekt CommandButton: Na formularzu zaznaczamy miejsce gdzie ma zostać umieszczony przycisk komend: W oknie Properties-CommandButton1 w polu Caption wpisujemy Oblicz :

Page 35: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

34

Analogicznie wstawiamy drugi przycisk komend z napisem KONIEC:

3.3.6. Zmiana koloru dowolnego obiektu Po zaznaczeniu kliknięciem myszy dowolnego obiektu na formularzu moŜemy w oknie jego właściwości Properties wybrać z Palety kolor tła – po angielsku BackColor: ForeColor oznacza kolor liter jakie pojawią się na wybranym tle.

Page 36: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

35

3.3.7. Wstawianie grafiki w oknie Image:

W tym celu z palety narzędziowej Toolbox wybieramy obiekt Image: Na formularzu zaznaczamy miejsce gdzie ma zostać umieszczona grafika:

W oknie Properties-Image1 w polu Picture wstawiamy nazwę rysunku np. wykonanego w programie Paint :

W polach PictureAlignment i PictureSizeMode naleŜy ustawić opcje 1.

Page 37: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

36

3.4. Wygląd arkusza po wykonaniu opisanych wyŜej czynności: Tak przygotowany formularz nie pozwala na razie wykonać Ŝadnych obliczeń. Brak w nim jeszcze programu.

3.5. Pisanie programu: Pisząc program naleŜy uwzględnić jego podstawowe części: Podstawowe części programu:

- czytanie danych - wykonywanie obliczeń - wyświetlanie, drukowanie lub zapisywanie wyników.

Do wpisywania programu wykorzystujemy przyciski komend. Aby pod przyciskiem umieścić polecenia programu naleŜy kliknąć dwukrotnie myszą na wybrany przycisk i w miejscu gdzie pojawi się kursor rozpocząć pisanie programu. Na przykład przycisk Koniec powinien zawierać tylko jedno polecenie: End

Page 38: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

37

3.6. Opis przykładowego programu dla twierdzenia Pitagorasa:

3.6.1. Czytanie danych Czytanie danych moŜe wykorzystywać informacje wpisane w okienkach tekstowych, lub zapisane w pliku tekstowym na dysku, dyskietce lub innym nośniku. Opiszemy obecnie czytanie danych z okienek tekstowych: Instrukcja Val (ang. Value – wartość liczbowa) pobiera tekst wpisany w okienku tekstowym zamienia go na liczbę i podstawia pod wartość zmiennej. JeŜeli na przykład zawartość okienka tekstowego at ma zostać podstawiona pod zmienną a zapisujemy to w następujący sposób:

a= Val(at.text)

analogicznie podstawiamy pod zmienną b zawartość okienka bt:

b= Val(bt.text)

Instrukcje te moŜemy poprzedzić komentarzem (linia komentarza zaczyna się od apostrofu ‘ )

‘ czytanie danych

a= Val(at.text) b= Val(bt.text)

3.6.2. Obliczenia Wykonywanie obliczeń polega na stosowaniu instrukcji przypisania (podobnie jak to zrobiliśmy czytając dane). Po lewej stronie znaku równości jest nazwa zmiennej, a po prawej wyraŜenie, którego wartość ma być jej przypisana, na przykład: Aby obliczyć przeciwprostokątną z wzoru: piszemy:

c = Sqr(a^2 + b^2) gdzie: - Sqr oznacza pierwiastek kwadratowy (ang. Square Root)

- a^2 oznacza podniesienie wartości zmiennej a do potęgi 2.

22 bac +=

Page 39: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

38

3.6.3. Wyświetlanie wyniku w okienku tekstowym

W celu wyświetlenia wyniku w okienku tekstowym naleŜy zastosować instrukcję Format, która pozwala na określenie sposobu wyświetlania wartości, np. ustalenie liczby miejsc dziesiętnych. W celu umieszczenia wartości zmiennej c w okienku tekstowym ct z dokładnością do dwóch miejsc po przecinku piszemy:

ct.text = Format(c,”0.00”)

3.7. Cały program: ‘ czytanie danych a= Val(at.text) b= Val(bt.text) ‘ obliczenia c = Sqr(a^2 + b^2) ‘ wyniki ct.text = Format(c,”0.00”) Program ten naleŜy wpisać w miejscu, w którym pojawi się kursor po dwukrotnym kliknięciu na przycisk Oblicz:

Page 40: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

39

4. Przykładowe zadania geodezyjne:

4.1. Obliczenie długości boku ze współrzędnych:

Dane są współrzędne punktów A i B. Obliczyć długość boku AB.

22 yxd

YYy

XXx

AB

AB

AB

∆+∆=

−=∆−=∆

4.1.1. Proponowany wygląd formularza:

A

B

Page 41: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

40

4.1.2. Program: ‘ czytanie danych XA=Val(xat.text)

YA=Val(yat.text) XB=Val(xbt.text) YB=Val(ybt.text)

‘ obliczenia dx=XB-XA dy=YB-YA d=Sqr(dx^2+dy^2) ‘ wyniki dt.text=Format(d,”0.00”)

Page 42: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

41

4.2. Obliczenie długości boku i azymutu ze współrzędnych:

Dane są współrzędne punktów A i B. Obliczyć długość boku AB oraz azymut boku AB.

AB

ABAB

AB

AB

AB

XX

YYtgarc

yxd

YYy

XXx

−−=

∆+∆=

−=∆−=∆

α

22

4.2.1. Proponowany wygląd formularza:

A

B

ααααAB dAB

Page 43: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

42

4.2.2. Program: ‘ czytanie danych XA=Val(xat.text)

YA=Val(yat.text) XB=Val(xbt.text) YB=Val(ybt.text)

‘ obliczenia dx=XB-XA dy=YB-YA d=Sqr(dx^2+dy^2) alfa=azymut(dy,dx) ‘ wyniki dt.text=Format(d,”0.00”) alt.text=Format(alfa,”0.0000”) W powyŜszym programie uŜyta została funkcja azymut(dy,dx). Aby korzystać w programie z funkcji naleŜy ją wcześniej zdefiniować.

4.2.3. Definiowanie funkcji: Z menu wybieramy opcje Insert Procedure a następnie wypełniamy okno dodawania procedury typu Function:

Page 44: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

43

Następnie wpisujemy treść funkcji:

4.2.4. Instrukcja If ... Then ... Else ... End If W funkcji azymut wielokrotnie zastosowano instrukcję sterującą If ... Then...Else ... End If Znaczenie tych słów jest następujące : If – jeŜeli Then – wtedy Else – w przeciwnym wypadku End If – koniec instrukcji Zastosowanie instrukcji If oparte jest na sprawdzeniu jakiegoś warunku logicznego. JeŜeli ten warunek jest spełniony, wtedy wykonywane są polecenia umieszczone po słowie Then, na przykład:

If dx < 0 Then azym = azym + 200 JeŜeli dx jest mniejsze od 0 wtedy do obliczonego wcześniej azymutu azym naleŜy dodać 200. JeŜeli warunek nie jest spełniony – program nie wykonuje Ŝadnej czynności. W niektórych sytuacjach - jeŜeli (If ) warunek jest spełniony, wtedy (Then) program wykonuje jakieś czynności, a jeŜeli warunek nie jest spełniony, czyli w przeciwnym wypadku (Else) robi coś innego. Na przykład: If dx = 0 Then If dy > 0 Then azym = 100 - jeŜeli warunek dx=0 jest spełniony If dy < 0 Then azym = 300 Else azym = Atn(dy / dx) * 200 / Pi - jeŜeli warunek dx=0 nie jest spełniony(dx≠0) End If

Page 45: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

44

4.2.5. Przykładowe rozwiązanie zadania:

4.2.6. Zapisywanie funkcji w pliku Module: Bardzo często taka funkcja jak azymut jest wykorzystywana w róŜnych obliczeniach geodezyjnych i moŜe być stosowana jako składnik wielu programów. NaleŜy ją więc zapisać w pliku typu Module na przykład o nazwie Funkcje. Taki plik zapisany ma dysku moŜna dołączać do kaŜdego programu. Plik Module wstawiamy uŜywając opcji Insert Module

Page 46: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

45

Następnie w oknie Properties-Module1 zmieniamy nazwę na przykład na Funkcje. Do tego modułu kopiujemy wybraną funkcję, po czym zapisujemy plik Funkcje na dysku, uŜywając opcji Export File Opcja Export File pojawia się kiedy klikniemy na moduł Funkcje prawym klawiszem myszy. Następnie określa się miejsce gdzie ma zostać zapisany moduł Funkcje:

Page 47: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

46

4.2.7. Import pliku Funkcje typu Module: Kiedy tworzymy nowy program, w którym chcemy wykorzystać funkcje zapisane w pliku Funkcje, wtedy importujemy go klikając prawym klawiszem myszy w oknie Project-VBAProject i wybierając opcję Import File: Następnie określamy, który plik chcemy zaimportować:

Page 48: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

47

Po wykonaniu tych czynności w oknie Project-VBAProject widoczny jest plik Funkcje zapisany w folderze Modules. Zawarte w nim funkcje moŜna wykorzystywać w nowym programie.

Page 49: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

48

4.3. . Obliczenie kąta ze współrzędnych jako róŜnicy dwóch azymutów

4.3.1. Proponowany wygląd formularza:

X

S

P

L

ααααSL

ααααSP ββββ

SL

SLSL

SP

SPSP

SLSP

XX

YYtgarc

XX

YYtgarc

−−=

−−=

−=

α

α

ααβ

Page 50: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

49

4.3.2. Przypisanie programu do przycisków Do przycisków funkcyjnych przypisujemy program: Jak widać w obliczeniach uŜyto dwukrotnie funkcji azymut, z róŜnymi parametrami uzyskując dwa róŜne wyniki : alfap i alfal, co umoŜliwiło następnie obliczenie kąta beta.

4.3.3. Rozwiązanie przykładowego zadania:

Page 51: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

50

4.4. Wyszukiwanie współrzędnych w pliku tekstowym

W omówionych powyŜej zadaniach współrzędne wpisuje się ręcznie do odpowiedniego okienka tekstowego. Jest to z wielu powodów niepraktyczne. Po pierwsze – wpisując współrzędną moŜna się pomylić, po drugie – licząc wiele podobnych zadań tracimy wiele czasu na wpisywanie danych. DuŜo wygodniej byłoby, gdyby współrzędne całego zbioru punktów znajdowały się w pliku tekstowym, a uŜytkownik wpisywałby tylko numer punktu , natomiast współrzędne program wyszukiwałby we wskazanym pliku.

4.4.1. Określenie nazwy pliku tekstowego zawierającego współrzędne: Do tego celu najlepiej wykorzystać instrukcję InputBox Parametrami tej instrukcji są kolejno:

- tekst zachęty, - nagłówek okienka - domyślna nazwa pliku

plik = InputBox(tekst zachęty, nagłówek okienka, domyślna nazwa pliku) Na przykład: plik = InputBox("Podaj nazwe pliku ze wspolrzednymi punktów", "DANE", "F:\basic\dane.txt") Po wykonaniu tego polecenia na ekranie widzimy następujący obiekt:

Oczywiście nazwę pliku widoczną w okienku tekstowym moŜemy dowolnie zmieniać. Po czym naleŜy kliknąć myszą na przycisk OK . Wtedy wybrana nazwa pliku zostanie podstawiona pod zmienną plik .

Page 52: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

51

4.4.2. Otwarcie pliku tekstowego JeŜeli chcemy czytać dane z pliku tekstowego, na przykład plikd – otwieramy go do czytania (Input ) instrukcją:

Open plikd For Input As #1 JeŜeli chcemy zapisywać wyniki do pliku tekstowego, na przykład plikw – otwieramy go do pisania (Output) instrukcją:

Open plikw For Output As #2

W dalszym ciągu programu kaŜdy otwarty plik jest identyfikowany przez swój numer. Na przykład instrukcja czytania danych z pliku ma następujący wygląd:

Input #1, Nr, x, y

Do zapisywania wyników w pliku tekstowym moŜna wykorzystać dwie instrukcje Write i Print :

Write #2, nr, x, y

Print #2, nr, x, y Sposób zapisywania danych w pliku przez te dwie instrukcje jest róŜny: Write: "A",1000,1000 "B",2000,2000 "C",1000,2000 Print: A 1000 1000 B 2000 2000 C 1000 2000

4.4.3. Zamykanie pliku tekstowego

KaŜdy plik tekstowy po wykorzystaniu naleŜy zamknąć instrukcją Close zawierającą numer tego pliku. Na przykład:

Close #1

Page 53: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

52

4.5. Obliczanie długości i azymutu ze współrzędnych

4.5.1. Przykładowy wygląd arkusza: W tym zadaniu nie musimy wprowadzać współrzędnych punktów A i B, zostaną one odczytane z pliku tekstowego, którego nazwę musimy określić. Następnie wpisujemy w kolumnie Nr - numery punktów, dla których mamy obliczyć długość i azymut.. Plik z danymi niech określa zmienna dane. Zmienna ta winna być dostępna w całym programie, dlatego naleŜy ją zadeklarować jako Public:

Page 54: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

53

4.5.2. Źródło danych:

Do przycisku komend o tej nazwie przypisana jest jedna linia programu zawierająca instrukcję InputBox :

4.5.3. Szukaj współrzędnych:

Zastosowana tu została instrukcja While Not EOF(1) ... Wend.

Page 55: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

54

4.5.4. Instrukcja While Not EOF Pierwsza jej część: While Not EOF(1) oznacza: Dopóki Nie Koniec pliku (1). JeŜeli program nie natrafi na koniec pliku nr 1, wykonywane są dalsze instrukcje aŜ do linii zawierającej Wend, po czym program wraca na początek pętli do linii While Not EOF(1) . WaŜne jest, Ŝeby wewnątrz pętli While Not EOF(1) ... Wend znajdowała się instrukcja Input #1, która czyta kolejne wiersze pliku tekstowego, co prowadzi w rezultacie do natrafienia na koniec pliku. Bez tej instrukcji pętla While Not EOF(1) ... Wend będzie działała w nieskończoność.

4.5.5. Program wpisany pod przyciskiem komend Oblicz:

‘ czytanie danych XA=Val(xat.text)

YA=Val(yat.text) XB=Val(xbt.text) YB=Val(ybt.text)

‘ obliczenia dx=XB-XA dy=YB-YA d=Sqr(dx^2+dy^2) alfa=azymut(dy,dx) ‘ wyniki dt.text=Format(d,”0.00”) alt.text=Format(alfa,”0.0000”)

4.5.6. Kolejność czynności przy rozwiązywaniu zadania:

- zapoznać się z nazwą i zawartością pliku z danymi oraz z treścią zadania: Nazwa – F:\Basic\dane2.txt Zawartość pliku:

2,100,150 5,100,400 4,240,382 6,400,100

NaleŜy obliczyć długość i azymut boku 2-5.

Page 56: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

55

- wprowadzić nazwę zbioru z danymi W tym celu naleŜy kliknąć na przycisk komend Źródło danych i w okienku tekstowym wpisać nazwę pliku tekstowego z danymi, wraz ze ścieŜką dostępu, a następnie zatwierdzić to klikając myszą na OK. - w kolumnie Nr wpisać numery punktów i klikn ąć przycisk SZUKAJ WSPÓŁRZĘDNYCH

- klikn ąć na przycisk OBLICZ: Program ten ma tę zaletę, Ŝe współrzędne punktów A i B moŜna teŜ wpisać ręcznie do okienek. Wtedy klikamy tylko na przycisk Oblicz.

Page 57: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

56

4.6. Obliczenie pola trójkąta z wzoru Herona Dane są długości trzech boków trójkąta a, b i c. Obliczyć pole tego trójkata P. Wzory:

4.6.1. Proponowany wygląd formularza: W tym programie dane wpisujemy ręcznie do odpowiednich okienek.

a

c

b

)()()(

2

bsbsassP

cbas

−⋅−⋅−⋅=

++=

Page 58: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

57

4.6.2. program wpisany pod przyciskiem OBLICZ:

4.6.3. widok formularza po rozwiązaniu przykładowego zadania

Page 59: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

58

4.7. Obliczenie pola trójkąta ze współrzędnych pobieranych z pliku

4.7.1. Proponowany wygląd formularza:

A B

C

)))(())(((5.0 CABABACA XXYYXXYYP −−−−−=

Page 60: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

59

4.7.2. Źródło danych:

Do przycisku komend o tej nazwie przypisana jest jedna linia programu:

4.7.3. Szukaj współrzędnych

Page 61: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

60

4.7.4. Oblicz:

4.7.5. Kolejność czynności:

- określić źródło danych - wpisać numery punktów - wyszukać współrzędne - obliczyć pole

4.7.6. Wygląd formularza po obliczeniu przykładowego zadania:

Page 62: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

61

4.8. Obliczanie pola wieloboku ze współrzędnych:

Niniejszy program ma obliczać pole dowolnego wieloboku, realizując wzór Gaussa:

gdzie n jest liczbą punktów na obwodzie wieloboku. JeŜeli w trakcie obliczeń dojdziemy do punktu początkowego, wtedy i+1>n i zamiast i+1 przyjmujemy we wzorze wartość 1.

4.8.1. Proponowany wygląd formularza:

pt

Tab1

polet Nazwy które naleŜy nadać obiektom są wpisane na rysunku: tab1, pt, polet.

∑=

++ −=n

iiiii XYYXP

111 )(

2

1

Page 63: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

62

4.8.2. Wstawianie okna tabelki na formularzu: JeŜeli w ToolBox nie występuje obiekt vsFlexArray trzeba uzupełnić zawartość ToolBox:

- kliknąć prawym klawiszem myszy na wolne miejsce wewnątrz ToolBox, - wybrać opcję: Additional Controls - zaznaczyć pole obok Formant VideoSoft FlexArray - kliknąć OK

- Po wykonaniu tych czynności ToolBox zawiera nową ikonkę VSFlexArray

Page 64: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

63

4.8.3. Wprowadź współrzędne:

Private Sub CommandButton1_Click() Dim i As Integer pk = Val(pt) tab1.Cols = 4 tab1.Rows = pk + 1 tab1.Col = 1 tab1.Row = 0 tab1 = "Nr" tab1.Col = 2 tab1 = "X" tab1.Col = 3 tab1 = "Y" tab1.Col = 0 For i = 1 To pk tab1.Row = i tab1 = i Next i End Sub W powyŜszej procedurze zastosowano pętlę For ... To ... Next. W tym przykładzie zmienna sterująca i zmienia się od 1 do pk. Dla kaŜdej , kolejnej wartości i wykonywane są wszystkie instrukcje programu zawarte między linią For i linią Next i. Czyli zostaną one wykonane pk razy. Instrukcja Dim i As Integer definiuje typ zmiennej i jako Integer czyli liczbę całkowitą.

4.8.4. Instrukcje związane z tabelą: tab1.Cols = - określa liczbę kolumn w tabeli tab1.Rows = - określa liczbę wierszy w tabeli tab1.Col = - określa aktualną kolumnę w tabeli tab1.Row = - określa aktualny wiersz w tabeli tab1 = x - wstawia zmienną x do tabeli w miejscu określonym przez

aktualny wiersz i kolumnę y = tab1 - podstawia pod zmienną y zawartość tabeli określoną przez

aktualny wiersz i kolumnę

Page 65: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

64

4.8.5. OBLICZ pole Private Sub CommandButton3_Click() pole = 0 For i = 1 To pk tab1.Row = i tab1.Col = 2 xi = tab1 tab1.Col = 3 yi = tab1 If i < pk Then tab1.Row = i + 1 tab1.Col = 2 xip1 = tab1 tab1.Col = 3 yip1 = tab1 Else tab1.Row = 1 tab1.Col = 2 xip1 = tab1 tab1.Col = 3 yip1 = tab1 End If pole = pole + (xi * yip1 - yi * xip1) Next i pole = Abs(pole) / 2 polet.Text = Format(pole, "0.0000") End Sub

4.8.6. Funkcja Abs Funkcja Abs w wierszu:

pole = Abs(pole) / 2

oznacza wartość bezwzględną.

Page 66: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

65

4.8.7. Przebieg obliczeń: - uruchamiamy program - w oknie Liczba punktów wpisujemy ile jest punktów na obwodzie wieloboku:

- klikamy myszą na przycisk Wprowadź współrzędne po czym numery punktów i współrzędne wpisujemy do tabeli:

- następnie klikamy myszą na przycisk OBLICZ pole:

Page 67: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

66

4.9. Czytanie z pliku danych do obliczenia pola wieloboku Program ten wykonuje obliczenia tego samego zadania co opisany powyŜej, jednak danych nie wprowadzamy ręcznie do tabeli, tylko wczytujemy je z pliku tekstowego.

4.9.1. Proponowany wygląd formularza:

4.9.2. Dane do zadania: Numery i współrzędne punktów leŜących na obwodzie wieloboku, dla którego mamy obliczyć pole winny być zapisane w pliku tekstowym, który moŜemy utworzyć korzystając z programu Notatnik . Na przykład dla czworoboku, plik ten ma następującą formę: 2 100 150 5 100 400 4 240 382 6 400 100 Plik z danymi zapisany jest np. jako a:\dane4.txt .

Page 68: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

67

4.9.3. Wprowadź współrzędne: Private Sub CommandButton1_Click() Dim i As Integer tab1.Cols = 4 tab1.Rows = 1 tab1.Col = 1 tab1.Row = 0 tab1 = "Nr" tab1.Col = 2 tab1 = "X" tab1.Col = 3 tab1 = "Y" plik = InputBox("Podaj nazwe pliku ze wspolrzednymi punktów", "DANE", "a;\dane4.txt") r = 1 Open plik For Input As #1 While Not EOF(1) Input #1, Nr, x, y r = r + 1 tab1.Rows = r tab1.Row = r - 1 tab1.Col = 1 tab1 = Nr tab1.Col = 2 tab1 = x tab1.Col = 3 tab1 = y Wend Close #1 pt.Text = r - 1 pk = r - 1 tab1.Col = 0 For i = 1 To pk

tab1.Row = i tab1 = i

Next i End Sub

Page 69: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

68

Wiersze procedury zawarte między:

While Not EOF(1) – dopóki nie koniec pliku nr 1 oraz

Wend pozwalają na odczytanie kolejnych wierszy z pliku tekstowego za pomocą instrukcji:

Input #1, nr, x, y . Wczytane wartości są wstawiane w odpowiednich komórkach tabeli. Równocześnie liczona jest liczba wczytanych punktów r i zwiększana jest liczba wierszy tabeli tab1.rows:

r=r+1 tab1.Rows = r

4.9.4. Obliczenie pola z pliku Private Sub CommandButton3_Click() pole = 0 For i = 1 To pk tab1.Row = i tab1.Col = 2 xi = Val(tab1) tab1.Col = 3 yi = Val(tab1) If i < pk Then tab1.Row = i + 1 tab1.Col = 2 xip1 = Val(tab1) tab1.Col = 3 yip1 = Val(tab1) Else tab1.Row = 1 tab1.Col = 2 xip1 = Val(tab1) tab1.Col = 3 yip1 = Val(tab1) End If pole = pole + (xi * yip1 - yi * xip1) Next i pole = Abs(pole) / 2 polet.Text = Format(pole, "0.0") End Sub

Page 70: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

69

4.10. Obliczenie średniej arytmetycznej dla dowolnej liczby pomiarów W okienku Liczba pomiarów wpisuje się odpowiednią wartość. Następnie naleŜy kliknąć na przycisk Wprowadź wyniki pomiarów . Wpisuje się liczby tylko w kolumnie L . Reszta tabeli ma zostać wyliczona przez komputer. W pierwszej kolejności program określa się wartość x0 jako najmniejszą z podanych pomiarów L . Następnie oblicza wartości l i jako róŜnicę (L i – x0) ∗∗∗∗ 100 . Równocześnie liczy sumę l i . Poprawka niewiadomej obliczana jest z wzoru: Wartość średniej to:

n

lx ∑=∆

1000

xxx

∆+=

Page 71: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

70

PoniŜej podano procedury przypisane do przycisków Wprowadź wyniki pomiarów i OBLICZ średnią.

4.10.1. Wprowadź wyniki pomiarów:

Page 72: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

71

4.10.2. OBLICZ średnią:

Page 73: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

72

Dokończenie zadania – ocena dokładności: Tę część pozostawiamy czytelnikowi do samodzielnego opracowania. Aby zadanie dokończyć naleŜy obliczyć całą zawartość tabeli:

dx=sumal/n

vi = dx – li

sumav

vv=v*v

sumavv następnie błąd średni pomiarów: i błąd średni wyrównanej niewiadomej (czyli średniej):

1

][

−=

n

vvm

n

mmx =

Page 74: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

73

4.11. Wyrównanie punktu węzłowego w niwelacji

Private Sub CommandButton1_Click() 'Przygotowanie tabelki lc = Val(lct) : lc2 = lc + 5 : tab1.Rows = lc2 : tab1.Cols = 12 tab1.Row = 0 tab1.Col = 1 : tab1 = "R" tab1.Col = 2 : tab1 = "dh" tab1.Col = 3 : tab1 = "d" tab1.Col = 4 : tab1 = "W" tab1.Col = 5 : tab1 = "l" tab1.Col = 6 : tab1 = "p" tab1.Col = 7 : tab1 = "pl" tab1.Col = 8 : tab1 = "v" tab1.Col = 9 : tab1 = "pv" tab1.Col = 10 : tab1 = "pvv" tab1.Col = 11 : tab1 = "pll" tab1.Col = 0 For i = 1 To lc tab1.Row = i : tab1 = i Next i tab1.Row = lc + 1 : tab1 = "Sumy" tab1.Row = lc + 2 : tab1 = "Xo" tab1.Row = lc + 3 : tab1 = "dx" tab1.Row = lc + 4 : tab1 = "X" End Sub

Page 75: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

74

Private Sub CommandButton3_Click() 'Obliczenie przybliŜonych wysokości’ For i = 1 To lc tab1.Row = i : tab1.Col = 1 : r = Val(tab1) tab1.Col = 2 : dh = Val(tab1) w = r + dh tab1.Col = 4 : tab1 = Format(w, "0.000") Next i End Sub Private Sub CommandButton4_Click() 'warto ść Xo tab1.Row = 1: tab1.Col = 4: x0 = Val(tab1) For i = 1 To lc tab1.Row = i: temp = Val(tab1): If temp < x0 Then x0 = temp Next i tab1.Row = lc + 2: tab1.Col = 1: tab1 = Format(x0, "0.000") End Sub Private Sub CommandButton5_Click() ‘wyrównanie wysoko ści punktu tab1.Col = 1 : tab1.Row = lc + 2 : x0 = Val(tab1) sumap = 0 : sumapl = 0 For i = 1 To lc 'obliczenie wag tab1.Row = i : tab1.Col = 3 : d = Val(tab1) : p = 1 / d tab1.Col = 6 : tab1 = Format(p, "0.00") sumap = sumap + p 'obliczenie wyrazów wolnych tab1.Col = 4 : r = Val(tab1) : l = r - x0 tab1.Col = 5 : tab1 = Format(l, "0.000") pl = p * l : tab1.Col = 7 : tab1 = Format(pl, "0.000") sumapl = sumapl + pl Next i tab1.Row = lc + 1 : tab1.Col = 5 : tab1 = Format(sumap, "0.000") tab1.Col = 7 : tab1 = Format(sumapl, "0.000") 'obliczenie poprawki dx dx = sumapl / sumap : tab1.Col = 1 : tab1.Row = lc + 3 : tab1 = Format(dx, "0.000") ‘obliczenie wyrównanej wysoko ści x = x0 + dx : tab1.Row = lc + 4 : tab1 = Format(x, "0.000") End Sub

Page 76: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

75

5. Wstawianie do tabeli danych w oparciu o plik tekstowy zawierający numery i współrzędne punktów.

5.1. Czytanie z pliku tekstowego współrzędnych wybranych punktów

5.1.1. Plik tekstowy z danymi Na dysku lub innym nośniku musi znajdować się plik tekstowy z danymi zapisanymi w formacie: Nr X Y .

Jak widać plik ten ma nazwę nrxy2.txt . Trzeba tę nazwę wraz z lokalizacją pliku zapami.ętać, gdyŜ będzie potrzebna w programie. W pliku ze współrzędnymi moŜe znajdować się nawet kilkaset punktów. Chodzi nam o to, Ŝeby wystarczyło w programie podać numer punktu, a program sam odnajdzie i pobierze współrzędne.

Page 77: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

76

5.1.2. Symbol dziesiętny Bardzo waŜne jest, Ŝeby część dziesiętna liczby oddzielona była od całkowitej za pomocą kropki - . . Istotne jest Ŝeby w systemie komputera ustawić symbol dziesiętny jako kropkę. Z Panelu sterowania wybieramy opcję: Opcje regionalne i językowe:

Następnie w Opcjach regionalnych naciskamy przycisk Dostosuj:

Page 78: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

77

Następnie ustawiamy kropkę jako Symbol dziesiętny: JeŜeli w pliku tekstowym zastosowany był przecinek, moŜna to łatwo zmienić stosując polecenia: Edycja Zaznacz wszystko i Edycja Zamień.

Po wpisaniu przecinka ” , ” w polu Znajdź, oraz kropki ” . ” w polu Zamień na, klikamy myszą na przycisk Zamień wszystko.

Page 79: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

78

5.1.3. Formularz:

5.1.4. Procedura uruchomienia W momencie uruchamiania programu wykonywane są instrukcje przypisane do formularza. Aby je wpisać klikamy dwukrotnie na formularz:

Page 80: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

79

Po wykonaniu procedury uruchomienia formularz ma następujący wygląd: W kolumnie Nr wpisujemy numery punktów i naciskamy przycisk Wyszukaj współrzędne. Do tego przycisku przypisana jest następująca procedura:

Page 81: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

80

1. WSTĘP.................................................................................................................................. 1

2. PROGRAMOWANIE W J ĘZYKU VISUAL BASIC ...................................................... 2

2.1. WPROWADZENIE.............................................................................................................. 2 2.2. URUCHAMIANIE EDYTORA PROGRAMU V ISUAL BASIC W EXCELU.................................... 2 2.3. TWORZENIE FORMULARZA UśYTKOWNIKA (USERFORM) ................................................. 4

2.3.1. Umieszczanie napisu w nagłówku formularza : ....................................................... 4 2.3.2. Ustawianie dla formularza domyślnej czcionki : ..................................................... 4 2.3.3. Obiekty na formularzu.............................................................................................. 5 2.3.4. Dodawanie obiektów do ToolBox ............................................................................ 5 2.3.5. Wstawianie obiektów na formularz ......................................................................... 7

2.4. OBSŁUGA ZDARZEŃ ........................................................................................................ 12 2.5. PODSTAWOWE FUNKCJE I OPERATORY W JĘZYKU V ISUAL BASIC ................................... 14

2.5.1. Typy zmiennych ...................................................................................................... 14 2.5.2. Deklarowanie typu zmiennej .................................................................................. 14 2.5.3. Instrukcja przypisania ............................................................................................ 15 2.5.4. Podstawowe operatory działań .............................................................................. 15 2.5.5. Funkcje matematyczne ........................................................................................... 15 2.5.6. Definiowanie własnej funkcji (na przykładzie funkcji azymut). ............................. 15 2.5.7. Zapisywanie funkcji w pliku Module:..................................................................... 16 2.5.8. Import pliku Funkcje typu Module:....................................................................... 18

2.6. FUNKCJE ZWIĄZANE Z OBSŁUGĄ PLIKÓW TEKSTOWYCH................................................. 20 2.6.1. Określenie nazwy pliku tekstowego zawierającego współrzędne: ......................... 20 2.6.2. Otwarcie pliku tekstowego ..................................................................................... 21 2.6.3. Czytanie danych z pliku tekstowego ....................................................................... 21 2.6.4. Pisanie wyników do pliku tekstowego .................................................................... 21 2.6.5. Zamykanie pliku tekstowego................................................................................... 21 2.6.6. Czytanie danych z pliku tekstowego o nieokreślonej długości: Instrukcja While Not EOF(n)… Wend 22

2.7. INSTRUKCJE ZWIĄZANE Z TABELĄ: ................................................................................. 22 2.8. INSTRUKCJE STERUJĄCE PRZEBIEGIEM PROGRAMU......................................................... 23

2.8.1. Instrukcja If ... Then ... Else ... End If ................................................................ 23 2.8.2. Instrukcja powtarzania For ... To ... Next............................................................ 23 2.8.3. Zmienne tablicowe.................................................................................................. 24 2.8.4. Zastosowanie instrukcji For do zmiennych tablicowych........................................ 24 2.8.5. Czytanie danych z okienek tekstowych:.................................................................. 24 2.8.6. Wyświetlanie wyniku obliczeń w okienku tekstowym ............................................. 24 2.8.7. Pisanie programu:.................................................................................................. 25 2.8.8. Przykład programu podzielonego na części: ......................................................... 25 2.8.9. Symbol dziesiętny ...................................................................................................26

3. PRZYKŁAD OPRACOWANIA FORMULARZA DLA TWIERDZENIA PITAGORASA:...................................................................................................................... 28

3.1. OBLICZYĆ DŁUGOŚĆ PRZECIWPROSTOKĄTNEJ C GDY DANE SĄ DŁUGOŚCI A I B. ............. 28 3.2. PROPONOWANY DOCELOWY WYGLĄD FORMULARZA: .................................................... 28 3.3. PROPONOWANA KOLEJNOŚĆ CZYNNOŚCI PRZY TWORZENIU FORMULARZA:.................... 29

3.3.1. Umieszczanie napisu w nagłówku formularza : ..................................................... 29 3.3.2. Ustawianie dla formularza domyślnej czcionki : ................................................... 29 3.3.3. Wstawianie napisów na formularz ......................................................................... 30

Page 82: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

81

3.3.4. Wstawianie okienek tekstowych na formularz: ...................................................... 31 3.3.5. Wstawianie przycisków komend na formularz: ...................................................... 33 3.3.6. Zmiana koloru dowolnego obiektu......................................................................... 34 3.3.7. Wstawianie grafiki w oknie Image: ........................................................................ 35

3.4. WYGLĄD ARKUSZA PO WYKONANIU OPISANYCH WYśEJ CZYNNOŚCI:............................. 36 3.5. PISANIE PROGRAMU: ...................................................................................................... 36 3.6. OPIS PRZYKŁADOWEGO PROGRAMU DLA TWIERDZENIA PITAGORASA: ........................... 37

3.6.1. Czytanie danych ..................................................................................................... 37 3.6.2. Obliczenia............................................................................................................... 37 3.6.3. Wyświetlanie wyniku w okienku tekstowym ........................................................... 38

3.7. CAŁY PROGRAM: ............................................................................................................ 38

4. PRZYKŁADOWE ZADANIA GEODEZYJNE: ................. ........................................... 39

4.1. OBLICZENIE DŁUGOŚCI BOKU ZE WSPÓŁRZĘDNYCH:....................................................... 39 4.1.1. Proponowany wygląd formularza:......................................................................... 39 4.1.2. Program: ................................................................................................................ 40

4.2. OBLICZENIE DŁUGOŚCI BOKU I AZYMUTU ZE WSPÓŁRZĘDNYCH: .................................... 41 4.2.1. Proponowany wygląd formularza:......................................................................... 41 4.2.2. Program: ................................................................................................................ 42 4.2.3. Definiowanie funkcji: ............................................................................................. 42 4.2.4. Instrukcja If ... Then ... Else ... End If ................................................................ 43 4.2.5. Przykładowe rozwiązanie zadania:........................................................................ 44 4.2.6. Zapisywanie funkcji w pliku Module:..................................................................... 44 4.2.7. Import pliku Funkcje typu Module:....................................................................... 46

4.3. . OBLICZENIE KĄTA ZE WSPÓŁRZĘDNYCH JAKO RÓśNICY DWÓCH AZYMUTÓW............... 48 4.3.1. Proponowany wygląd formularza:......................................................................... 48 4.3.2. Przypisanie programu do przycisków .................................................................... 49 4.3.3. Rozwiązanie przykładowego zadania: ................................................................... 49

4.4. WYSZUKIWANIE WSPÓŁRZĘDNYCH W PLIKU TEKSTOWYM ............................................. 50 4.4.1. Określenie nazwy pliku tekstowego zawierającego współrzędne: ......................... 50 4.4.2. Otwarcie pliku tekstowego ..................................................................................... 51 4.4.3. Zamykanie pliku tekstowego................................................................................... 51

4.5. OBLICZANIE DŁUGOŚCI I AZYMUTU ZE WSPÓŁRZĘDNYCH............................................... 52 4.5.1. Przykładowy wygląd arkusza: ................................................................................ 52 4.5.2. Źródło danych: ....................................................................................................... 53 4.5.3. Szukaj współrzędnych: ........................................................................................... 53 4.5.4. Instrukcja While Not EOF...................................................................................... 54 4.5.5. Program wpisany pod przyciskiem komend Oblicz: .............................................. 54 4.5.6. Kolejność czynności przy rozwiązywaniu zadania: ............................................... 54

4.6. OBLICZENIE POLA TRÓJKĄTA Z WZORU HERONA............................................................ 56 4.6.1. Proponowany wygląd formularza:......................................................................... 56 4.6.2. program wpisany pod przyciskiem OBLICZ:......................................................... 57 4.6.3. widok formularza po rozwiązaniu przykładowego zadania ................................... 57

4.7. OBLICZENIE POLA TRÓJKĄTA ZE WSPÓŁRZĘDNYCH POBIERANYCH Z PLIKU.................... 58 4.7.1. Proponowany wygląd formularza:......................................................................... 58 4.7.2. Źródło danych: ....................................................................................................... 59 4.7.3. Szukaj współrzędnych............................................................................................. 59 4.7.4. Oblicz: .................................................................................................................... 60 4.7.5. Kolejność czynności: .............................................................................................. 60 4.7.6. Wygląd formularza po obliczeniu przykładowego zadania: .................................. 60

Page 83: Andrzej Borowieckimatrix.ur.krakow.pl/~aborowiecki/skrypty/VisualBasic/... · 2011-05-14 · Po zaznaczeniu klikni ęciem myszy dowolnego obiektu na formularzu mo Ŝemy w oknie jego

82

4.8. OBLICZANIE POLA WIELOBOKU ZE WSPÓŁRZĘDNYCH:.................................................... 61 4.8.1. Proponowany wygląd formularza:......................................................................... 61 4.8.2. Wstawianie okna tabelki na formularzu: ................................................................. 62 4.8.3. Wprowadź współrzędne: ........................................................................................ 63 4.8.4. Instrukcje związane z tabelą: ................................................................................. 63 4.8.5. OBLICZ pole .......................................................................................................... 64 4.8.6. Funkcja Abs............................................................................................................ 64 4.8.7. Przebieg obliczeń: .................................................................................................. 65

4.9. CZYTANIE Z PLIKU DANYCH DO OBLICZENIA POLA WIELOBOKU ..................................... 66 4.9.1. Proponowany wygląd formularza:......................................................................... 66 4.9.2. Dane do zadania: ................................................................................................... 66 4.9.3. Wprowadź współrzędne: ........................................................................................ 67 4.9.4. Obliczenie pola z pliku ........................................................................................... 68

4.10. OBLICZENIE ŚREDNIEJ ARYTMETYCZNEJ DLA DOWOLNEJ LICZBY POMIARÓW.............. 69 4.10.1. Wprowadź wyniki pomiarów:............................................................................... 70 4.10.2. OBLICZ średnią:.................................................................................................. 71

4.11. WYRÓWNANIE PUNKTU WĘZŁOWEGO W NIWELACJI..................................................... 73

5. WSTAWIANIE DO TABELI DANYCH W OPARCIU O PLIK TEK STOWY ZAWIERAJ ĄCY NUMERY I WSPÓŁRZ ĘDNE PUNKTÓW ........................................ 75

5.1. CZYTANIE Z PLIKU TEKSTOWEGO WSPÓŁRZĘDNYCH WYBRANYCH PUNKTÓW ................ 75 5.1.1. Plik tekstowy z danymi ........................................................................................... 75 5.1.2. Symbol dziesiętny ...................................................................................................76 5.1.3. Formularz: ............................................................................................................. 78 5.1.4. Procedura uruchomienia........................................................................................ 78