Programowanie komputerowe
|
|
- Dorota Chmiel
- 8 lat temu
- Przeglądów:
Transkrypt
1 Programowanie komputerowe dr inż. Sławomir Koczubiej Politechnika Świętokrzyska Wydział Zarządzania i Modelowania Komputerowego Katedra Informatyki Stosowanej (14 kwietnia 2014) dr inż. Sławomir Koczubiej Programowanie komputerowe 1/298
2 Informacje ogólne 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 2/298
3 Informacje ogólne Kontakt Budynek C, pokój 3.26 Strona przedmiotu, materiały do pobrania Materiały do pobrania, aktualności, terminy zaliczeń sk dr inż. Sławomir Koczubiej Programowanie komputerowe 3/298
4 Informacje ogólne Organizacja wykładów Wykłady nie są obowiązkowe, ale czasem warto zajrzeć. Obecność na wykładach może być kontrolowana. Warunki zaliczenia wykładu Test zaliczeniowy po zakończeniu wykładów. dr inż. Sławomir Koczubiej Programowanie komputerowe 4/298
5 Informacje ogólne Organizacja laboratoriów Zajęcia laboratoryjne są obowiązkowe. Dopuszcza się jedną nieobecność. Większa liczba nieobecności powoduje zmniejszenie oceny do niedostatecznej włącznie (3 lub więcej nieobecności). W przypadku usprawiedliwionej nieobecności zajęcia można odrobić z inną grupą (jeśli istnieje taka możliwość). Warunki zaliczenia laboratoriów Wykonanie ćwiczeń i projektów. dr inż. Sławomir Koczubiej Programowanie komputerowe 5/298
6 Informacje ogólne Treść wykładów Wprowadzenie do programowania. Paradygmaty programowania. Definicja algorytmu, zapis algorytmów. Podstawy programowania w Visual Basic for Applications. Makropolecenia, środowisko pracy, operatory, obiekty, właściwości, metody. Typy danych, zmienne, stałe, instrukcja decyzyjna, pętle, tablice. Procedury, funkcje, wybrane procedury i funkcje wbudowane, obsługa błędów. Podstawy programowania w Visual Basic.NET. Środowisko pracy, struktura projektu, operatory, typy danych, zmienne, instrukcje sterujące. Formy, praca z plikami, podstawy programowana obiektowego. dr inż. Sławomir Koczubiej Programowanie komputerowe 6/298
7 Informacje ogólne Treść laboratoriów Wprowadzenie do Visual Basic.NET, środowisko pracy. Podstawy programowania, aplikacje konsolowe, instrukcje sterujące, zmienne. Funkcje i procedury, klasy i obiekty. Programy z graficznym interfejsem użytkownika. Obsługa plików. Wprowadzenie do Visual Basic for Applications. Środowisko pracy. Makropolecenia, rejestrowanie makropoleceń, uruchamianie i poprawianie makropoleceń. dr inż. Sławomir Koczubiej Programowanie komputerowe 7/298
8 Informacje ogólne Literatura Korol J. Visual Basic w Excelu Wydawnictwo MIKOM, Warszawa Kent J. Visual Basic.NET. Wydawnictwo Editin 2000, Kraków Matulewski J. Visual Basic.NET w praktyce. Wydawnictwo Helion, Gliwice Willis T., Newsome B. Visual Basic 2005 od podstaw. Wydawnictwo Helion, Gliwice dr inż. Sławomir Koczubiej Programowanie komputerowe 8/298
9 Wprowadzenie do programowania 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 9/298
10 Wprowadzenie do programowania Po co mi programowanie? Żeby zwiększyć efektywność i ułatwić pracę. Języki programowania lub makropolecenia udostępniają szereg narzędzi pozwalających na przyśpieszenie i zwiększenie efektywności pracy, zrobienie czegoś w łatwiejszy sposób, a nawet utworzenie kompletnie nowych narzędzi. Rozwój języków programowania znacznie obniżył próg umiejętności jakie należy posiadać, żeby zacząć naukę. Nie trzeba posiadać żadnych informacji na temat budowy komputera, nie trzeba mieć solidnych podstaw matematycznych (choć te są przydatne), nie trzeba mieć superkomputera ani kupować dodatkowego drogiego oprogramowania. dr inż. Sławomir Koczubiej Programowanie komputerowe 10/298
11 Wprowadzenie do programowania Program komputerowy (aplikacja) sekwencja symboli (zrozumiałych dla komputera rozkazów) przeznaczonych do przetworzenia zgodnie z pewnymi regułami, zwanymi językiem programowania. Program w postaci języka zrozumiałego dla człowieka nazywany jest kodem źródłowym, podczas gdy program wyrażony w postaci zrozumiałej dla maszyny (to jest za pomocą ciągu liczb, a bardziej precyzyjnie zer i jedynek) nazywany jest kodem maszynowym bądź postacią binarną (wykonywalną). Program jest zazwyczaj wykonywany przez komputer, bezpośrednio jeśli wyrażony jest w języku zrozumiałym dla danej maszyny lub pośrednio gdy jest interpretowany przez inny program (interpreter). Programy komputerowe można zaklasyfikować według ich zastosowań. Wyróżnia się zatem aplikacje użytkowe, systemy operacyjne, gry, kompilatory i inne. Programy wbudowane wewnątrz urządzeń określa się jako firmware. dr inż. Sławomir Koczubiej Programowanie komputerowe 11/298
12 Wprowadzenie do programowania W najprostszym modelu wykonanie programu (zapisanego w postaci zrozumiałej dla maszyny) polega na umieszczeniu go w pamięci operacyjnej komputera i wskazaniu procesorowi adresu pierwszej instrukcji. Po tych czynnościach procesor będzie wykonywał kolejne instrukcje programu, aż do jego zakończenia. Program komputerowy będący w trakcie wykonania nazywany jest procesem lub zadaniem. W ogólności program nie jest zapisany w postaci binarnej, ale w postaci kodu źródłowego czytelnego dla człowieka, i nie może być bezpośrednio wykonany przez procesor. dr inż. Sławomir Koczubiej Programowanie komputerowe 12/298
13 Wprowadzenie do programowania Tworzenie programu komputerowego można podzielić na dwa etapy: Etap 1 Po zrodzeniu się pomysłu powinien powstać algorytm. Algorytm wymusza stosowanie podziału programu na funkcje. zmienne, obiekty, na których program będzie operował, jak również wprowadzenie procedur, które opisują wykonywane operacje. Etap 2 Algorytm należy zapisać w języku programowania, stosując dostępne struktury danych i funkcje tworzenie kodu źródłowego. W trakcie tworzenia programu kod jest poddawany debugowaniu wyszukiwanie błędów. dr inż. Sławomir Koczubiej Programowanie komputerowe 13/298
14 Wprowadzenie do programowania Językiem programowania nazywamy zestaw zasad tekstowego lub graficznego opisu algorytmu za pomocą przyjętych elementów języka. Podobnie jak języki naturalne, język programowania składa się ze zbiorów reguł syntaktycznych oraz semantyki, które opisują, jak należy budować poprawne wyrażenia oraz jak komputer ma je rozumieć Język programowania pozwala na precyzyjny zapis algorytmów oraz innych zadań, jakie komputer ma wykonać. dr inż. Sławomir Koczubiej Programowanie komputerowe 14/298
15 Wprowadzenie do programowania Podział języków programowania: Kod maszynowy Kod maszynowy (język maszynowy) język programowania, w którym zapis programu wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program. Jest dopasowany do konkretnego typu procesora i przeznaczony do bezpośredniego wykonania przez procesor. Analiza kodu maszynowego jest praktycznie niemożliwa przez człowieka. Języki niskopoziomowe Przedstawiają one instrukcje udostępniane przez system komputerowy w postaci prostych oznaczeń (o ograniczonej liczbie, zakodowane w procesorze). Do języków niskopoziomowych należą Assemblery. dr inż. Sławomir Koczubiej Programowanie komputerowe 15/298
16 Wprowadzenie do programowania Języki wysokopoziomowe Składnia i słowa kluczowe mają maksymalnie ułatwić rozumienie kodu programu dla człowieka, tym samym zwiększając poziom abstrakcji i dystansując się od budowy sprzętu komputerowego. Kod napisany w języku wysokiego poziomu nie jest bezpośrednio zrozumiały dla komputera większość kodu stanowią tak naprawdę normalne słowa (najczęściej w języku angielskim). dr inż. Sławomir Koczubiej Programowanie komputerowe 16/298
17 Wprowadzenie do programowania Języki wysokopoziomowe dzielimy na dwie grupy: interpretowane, kompilowane. Języki interpretowane nie wymagają kompilacji tylko interpretera. Są przechowywane w postaci kodu źródłowego i dopiero podczas uruchomienia wczytywane, analizowane i wykonywane przez interpreter języka PHP, JavaScript, Python, PERL. Programy przeznaczone do interpretacji często nazywane są skryptami. Języki kompilowane wymagają procesu kompilacji kodu źródłowego do postaci kodu maszynowego (postaci binarnej). Robi to specjalny program zwany kompilatorem, dzięki czemu możliwe staje się jego późniejsze uruchomienie. Języki kompilowane: Pascal, C, C++, Fortran, Java. dr inż. Sławomir Koczubiej Programowanie komputerowe 17/298
18 Wprowadzenie do programowania Do utworzenia programu w danym języku niezbędne są edytor tekstu, debugger i kompilator. Programy te mogą tworzyć integralne środowisko pracy, udostępniające kombinacje tych funkcji mówimy wówczas o środowisku programistycznym. Aby przyśpieszyć tworzenie aplikacji, szczególnie z interfejsem graficznym, tworzy się narzędzia RAD (Rapid Application Development), które umożliwiają tworzenie programów z gotowych komponentów (w sensie elementów interfejsu i funkcji z implementacją typowych algorytmów) na przykład: Microsoft VisualStudio, Eclipse. dr inż. Sławomir Koczubiej Programowanie komputerowe 18/298
19 Paradygmat programowania 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 19/298
20 Paradygmat programowania Paradygmat programowania wzorzec programowania komputerów, który definiuje sposób patrzenia programisty na przepływ sterowania i wykonywanie programu komputerowego. Przykładowo, w programowaniu obiektowym jest on traktowany jako zbiór współpracujących ze sobą obiektów, podczas gdy w programowaniu funkcyjnym definiujemy, co trzeba wykonać, a nie w jaki sposób. Różne języki programowania mogą wspierać różne paradygmaty programowania. Przykładowo, Smalltalk i Java są ściśle zaprojektowane dla potrzeb programowania obiektowego, natomiast Haskell jest językiem funkcyjnym. Istnieją także języki wspierające kilka paradygmatów, np. Python. dr inż. Sławomir Koczubiej Programowanie komputerowe 20/298
21 Paradygmat programowania Wiele paradygmatów jest dobrze znanych z tego, jakie praktyki są w nich zakazane, a jakie dozwolone. Na przykład, ścisłe programowanie funkcyjne nie pozwala na tworzenie skutków ubocznych (dowolny efekt wyrażenia, lub wywołania funkcji, który wykracza poza zwrócenie wartości). W programowaniu strukturalnym nie korzysta się z instrukcji skoku. Zależności między paradygmatami programowania mogą przybierać skomplikowane formy, ponieważ jeden język może wspierać wiele różnych paradygmatów. Na przykład, C++ posiada elementy programowania proceduralnego, obiektowego oraz uogólnionego, co stanowi o nim, że jest hybrydowym językiem. To projektanci i programiści decydują, jak zbudować z nich w pełni działający program. dr inż. Sławomir Koczubiej Programowanie komputerowe 21/298
22 Paradygmat programowania Przykłady paradygmatów programowania: programowanie imperatywne, programowanie deklaratywne, programowanie proceduralne, programowanie strukturalne, programowanie funkcyjne, programowanie obiektowe, programowanie uogólnione, programowanie sterowane zdarzeniami, programowanie logiczne, programowanie aspektowe, programowanie agentowe, programowanie modularne. dr inż. Sławomir Koczubiej Programowanie komputerowe 22/298
23 Paradygmat programowania Programowanie imperatywne paradygmat programowania, który opisuje proces wykonywania jako sekwencję instrukcji zmieniających stan programu, podobnie jak tryb rozkazujący, wyraża żądania jakichś czynności do wykonania. Programy imperatywne składają się z ciągu komend do wykonania przez komputer. Rozszerzeniem (w sensie wbudowanych funkcji) i rodzajem (w sensie paradygmatu) programowania imperatywnego jest programowanie proceduralne. dr inż. Sławomir Koczubiej Programowanie komputerowe 23/298
24 Paradygmat programowania Programowanie deklaratywne rodzina paradygmatów programowania, które nie są z natury imperatywne. W przeciwieństwie do programów napisanych imperatywnie, programista opisuje warunki, jakie musi spełniać końcowe rozwiązanie (co chcemy osiągnąć), a nie szczegółową sekwencję kroków, które do niego prowadzą (jak to zrobić). Przykłady języków: XSLT, Prolog, HTML. dr inż. Sławomir Koczubiej Programowanie komputerowe 24/298
25 Paradygmat programowania Programowanie proceduralne to paradygmat programowania zalecający dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje. Procedury nie powinny korzystać ze zmiennych globalnych (w miarę możliwości), lecz pobierać i przekazywać wszystkie dane (czy też wskaźniki do nich) jako parametry wywołania. dr inż. Sławomir Koczubiej Programowanie komputerowe 25/298
26 Paradygmat programowania Programowanie strukturalne to paradygmat programowania zalecający hierarchiczne dzielenie kodu na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia. Chodzi przede wszystkim o nieużywanie instrukcji skoku. Dobrymi strukturami są np. instrukcje: warunkowe, pętle, wyboru. Strukturalność zakłócają instrukcje typu: break, continue, switch, które jednak w niektórych przypadkach znacząco podnoszą czytelność kodu. Praktycznie w każdym języku można programować strukturalnie, jednakże w niektórych jest to styl naturalny (np. Pascal). dr inż. Sławomir Koczubiej Programowanie komputerowe 26/298
27 Paradygmat programowania Programowanie obiektowe (Object-Oriented Programming) paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących stan (czyli dane, nazywane polami lub właściwościami) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów. Największym atutem programowania, projektowania oraz analizy obiektowej jest zgodność takiego podejścia z rzeczywistością mózg ludzki jest w naturalny sposób najlepiej przystosowany do takiego podejścia przy przetwarzaniu informacji. Przykłady języków: C++, JAVA. dr inż. Sławomir Koczubiej Programowanie komputerowe 27/298
28 Paradygmat programowania Programowanie sterowane zdarzeniami metodologia tworzenia programów komputerowych, która określa sposób ich pisania z punktu widzenia procesu przekazywania sterowania między poszczególnymi modułami tej samej aplikacji. Programowanie sterowane zdarzeniami jest mocno powiązane ze środowiskami wieloprocesowymi, z graficznymi środowiskami systemów operacyjnych oraz z programowaniem obiektowym. Paradygmat zakłada, że program jest cały czas bombardowany zdarzeniami, na które musi odpowiedzieć, i że przepływ sterowania w programie jest całkowicie niemożliwy do przewidzenia z góry. dr inż. Sławomir Koczubiej Programowanie komputerowe 28/298
29 Paradygmat programowania Programowanie zdarzeniowe jest dominującym typem programowania związanego z graficznym interfejsem użytkownika (Graphical User Interface) zdarzenia to naciśnięcia myszy, klawiszy, żądania odświeżenia przez system okienkowy, różne zdarzenia sieciowe i inne. W programowaniu zdarzeniowym ważne jest żeby nie obsługiwać zbyt długo danego zdarzenia, bo blokuje się w ten sposób obsługę innych. W przypadku serwerów obniżyło by to znacznie wydajność, w przypadku GUI program zbyt wolno odpowiadałby na akcje użytkownika. Można to osiągnąć za pomocą asynchronicznego I/O, wielowątkowości, rozbijania zdarzenia na podzdarzenia i wielu innych mechanizmów. dr inż. Sławomir Koczubiej Programowanie komputerowe 29/298
30 Paradygmat programowania Więcej o programowaniu orientowanym obiektowo Największym atutem programowania obiektowego jest zbliżenie programów komputerowych do naszego sposobu postrzegania rzeczywistości. Często nazywa się to zmniejszeniem luki reprezentacji. Wymyślając nowy lub analizując istniejący program obiektowy nasz mózg ma ułatwione zadanie. Dlatego ludzie są w stanie łatwiej zapanować nad kodem i tym samym tworzyć większe programy. Łatwiej jest również zrozumieć kod i pomysły innych programistów i tym samym współpracować w zespole oraz ponownie wykorzystywać istniejące rozwiązania. Co więcej tego samego, naturalnego dla ludzi sposobu myślenia i tych samych pojęć można użyć przy analizie problemu, który ma być rozwiązany i projektowaniu jego programowego rozwiązania. dr inż. Sławomir Koczubiej Programowanie komputerowe 30/298
31 Paradygmat programowania Zwierzę masa wiek patrz oddychaj Ryba płyń Ssak biegnij Ptak leć Pies rasa kolor szczekaj aportuj dr inż. Sławomir Koczubiej Programowanie komputerowe 31/298
32 Paradygmat programowania Arystoteles analizując rzeczywistość wprowadził pojęcia formy i materii. Formie w programowaniu obiektowym odpowiada klasa (class), materii jej egzemplarz (instance) wymiennie nazywany obiektem (object). Klasyfikacja, czyli łączenie występujących w rzeczywistości obiektów w grupy klasy, jest najbardziej naturalnym sposobem rozumienia rzeczywistości. dr inż. Sławomir Koczubiej Programowanie komputerowe 32/298
33 Paradygmat programowania Powszechnie uważa się, że najważniejszymi cechami programowania obiektowego są: Abstrakcja Każdy obiekt w systemie służy jako model abstrakcyjnego wykonawcy, którymoże wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Procesy, funkcje lub metody mogą być również abstrahowane, a kiedy tak się dzieje, konieczne są rozmaite techniki rozszerzania abstrakcji. dr inż. Sławomir Koczubiej Programowanie komputerowe 33/298
34 Paradygmat programowania Klasa C Klasa D Klasa E Klasa A Klasa B pole 1 pole 1 metoda 4 pole 1 pole 1 metoda 2 metoda 2 metoda 1 metoda 2 metoda 1 metoda 1 metoda 1 metoda 1 metoda 1 pole 2 pole 2 pole 2 metoda 3 metoda 3 metoda 4 pole 1 pole 1 Obiekt 3 metoda 2 metoda 2 pole 1 Obiekt 4 metoda 1 metoda 1 metoda 2 pole 1 pole 2 pole 2 metoda 1 metoda 2 metoda 1 metoda 1 pole 2 metoda 1 metoda 3 pole 2 metoda 3 metoda 4 dr inż. Sławomir Koczubiej Programowanie komputerowe 34/298
35 Paradygmat programowania Enkapsulacja Czyli ukrywanie implementacji, hermetyzacja. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy. Pewne języki osłabiają to założenie, dopuszczając pewien poziom bezpośredniego (kontrolowanego) dostępu do wnętrza obiektu. Ograniczają w ten sposób poziom abstrakcji. dr inż. Sławomir Koczubiej Programowanie komputerowe 35/298
36 Paradygmat programowania Klasa C Klasa D Klasa E Klasa A Klasa B pole 1 pole 1 metoda 4 pole 1 pole 1 metoda 2 metoda 2 metoda 1 metoda 2 metoda 1 metoda 1 metoda 1 metoda 1 metoda 1 pole 2 pole 2 pole 2 metoda 3 metoda 3 metoda 4 pole 1 pole 1 Obiekt 3 metoda 2 metoda 2 pole 1 Obiekt 4 metoda 1 metoda 1 metoda 2 pole 1 pole 2 pole 2 metoda 1 metoda 2 metoda 1 metoda 1 pole 2 metoda 1 metoda 3 pole 2 metoda 3 metoda 4 dr inż. Sławomir Koczubiej Programowanie komputerowe 36/298
37 Paradygmat programowania Polimorfizm Referencje i kolekcje obiektów mogą dotyczyć obiektów różnego typu, a wywołanie metody dla referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Inaczej mówiąc, są to mechanizmy pozwalające na używanie wartości, zmiennych i procedur na kilka różnych sposobów (wyabstrahowanie wyrażeń od konkretnych typów). dr inż. Sławomir Koczubiej Programowanie komputerowe 37/298
38 Paradygmat programowania Klasa C Klasa D Klasa E Klasa A Klasa B pole 1 pole 1 metoda 4 pole 1 pole 1 metoda 2 metoda 2 metoda 1 metoda 2 metoda 1 metoda 1 metoda 1 metoda 1 metoda 1 pole 2 pole 2 pole 2 metoda 3 metoda 3 metoda 4 pole 1 pole 1 Obiekt 3 metoda 2 metoda 2 pole 1 Obiekt 4 metoda 1 metoda 1 metoda 2 pole 1 pole 2 pole 2 metoda 1 metoda 2 metoda 1 metoda 1 pole 2 metoda 1 metoda 3 pole 2 metoda 3 metoda 4 dr inż. Sławomir Koczubiej Programowanie komputerowe 38/298
39 Paradygmat programowania Dziedziczenie Porządkuje i wspomaga polimorfizm i enkapsulację dzięki umożliwieniu definiowania i tworzenia specjalizowanych obiektów na podstawie bardziej ogólnych. Dla obiektów specjalizowanych nie trzeba redefiniować całej funkcjonalności, lecz tylko tę, której nie ma obiekt ogólniejszy. W typowym przypadku powstają grupy obiektów zwane klasami, oraz grupy klas zwane drzewami. Odzwierciedlają one wspólne cechy obiektów. dr inż. Sławomir Koczubiej Programowanie komputerowe 39/298
40 Paradygmat programowania Klasa C Klasa D Klasa E Klasa A Klasa B pole 1 pole 1 metoda 4 pole 1 pole 1 metoda 2 metoda 2 metoda 1 metoda 2 metoda 1 metoda 1 metoda 1 metoda 1 metoda 1 pole 2 pole 2 pole 2 metoda 3 metoda 3 metoda 4 pole 1 pole 1 Obiekt 3 metoda 2 metoda 2 pole 1 Obiekt 4 metoda 1 metoda 1 metoda 2 pole 1 pole 2 pole 2 metoda 1 metoda 2 metoda 1 metoda 1 pole 2 metoda 1 metoda 3 pole 2 metoda 3 metoda 4 dr inż. Sławomir Koczubiej Programowanie komputerowe 40/298
41 Algorytmy 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 41/298
42 Algorytmy Program komputerowy działa według określonego algorytmu. Algorytm ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadania. Zapis algorytmu działania w wybranym języku programowania nazywamy implementacją algorytmu. dr inż. Sławomir Koczubiej Programowanie komputerowe 42/298
43 Algorytmy Jako przykład stosowanego w życiu codziennym algorytmu podaje się często przepis kulinarny. Dla przykładu, aby ugotować bigos należy w określonej kolejności oraz odstępach czasowych (imperatyw czasowy) dodawać właściwe rodzaje kapusty, mięs i innych składników. Przykład ten ma wyłącznie charakter poglądowy, ponieważ język przepisów kulinarnych nie został jasno zdefiniowany. Algorytmy zwykle formułowane są w sposób ścisły w oparciu o język matematyki. dr inż. Sławomir Koczubiej Programowanie komputerowe 43/298
44 Algorytmy Algorytm prowadzi do rozwiązania zadania w skończonej liczbie kroków. Do danego celu prowadzi zwykle więcej niż jedna droga. Jak więc oceniać alternatywne sposoby rozwiązania problemu? Podstawowe parametry algorytmu to jego złożoność czasowa i złożoność pamięciowa. Oprócz tego przy algorytmach działających na liczbach trzeba pamiętać o stabilności numerycznej. dr inż. Sławomir Koczubiej Programowanie komputerowe 44/298
45 Algorytmy Złożoność czasowa mówi, ile kroków obliczeniowych i ile czasu wymaga zakończenie algorytmu dla danej porcji danych. Złożoność pamięciowa mówi, jaką maksymalnie część danych i wyników pośrednich trzeba w ramach danego algorytmu przechowywać w pamięci operacyjnej. Stabilność numeryczna określa wrażliwość wyniku końcowego na błędy zaokrągleń w trakcie obliczeń oraz na dokładność danych początkowych. dr inż. Sławomir Koczubiej Programowanie komputerowe 45/298
46 Algorytmy Sposoby zapisu algorytmów Algorytm znajdowania wartości y = max{x i },gdzie1 i n. 1 i 1, idź do 2, Język naturalny. Schemat blokowy. Język formalny. 2 y x i, idź do 3, 3 Czy i = n? Jeśli tak koniec, jeśli nie idź do 4, 4 i 1 + 1, idź do 5, 5 Czy x i > y? Jeśli tak idź do 2, jeśli nie idź do 3. dr inż. Sławomir Koczubiej Programowanie komputerowe 46/298
47 Algorytmy START i 1 Język naturalny. Schemat blokowy. Język formalny. fałsz y x i i = n prawda i i + 1 STOP fałsz x i > y prawda dr inż. Sławomir Koczubiej Programowanie komputerowe 47/298
48 Algorytmy int maxvalue(int array[], int size) { int i, max; Język naturalny. Schemat blokowy. Język formalny, C. max=array[0]; for(i=1; i<size; i++) { if(array[i] > max) max = array[i]; } } return max; dr inż. Sławomir Koczubiej Programowanie komputerowe 48/298
49 Algorytmy function maxvalue(array: TArray, size: integer): integer; var i, max: integer; Język naturalny. Schemat blokowy. Język formalny, Pascal. begin max:=array[1]; for i:=2 to size do if array[i] > max then max:=array[i]; maxvalue:=max; end; dr inż. Sławomir Koczubiej Programowanie komputerowe 49/298
50 Algorytmy Schematy blokowe START Start początek programu STOP Stop koniec programu dr inż. Sławomir Koczubiej Programowanie komputerowe 50/298
51 Algorytmy we Blok wejścia wprowadzanie danych wy Blok wyjścia wyprowadzanie wyników dr inż. Sławomir Koczubiej Programowanie komputerowe 51/298
52 Algorytmy Blok operacyjny przetwarzanie danych prawda fałsz Blok decyzyjny instrukcja warunkowa dr inż. Sławomir Koczubiej Programowanie komputerowe 52/298
53 Algorytmy Pętla powtórz zwarunkiempobloku operacyjnym fałsz prawda prawda fałsz Pętla dopóki z warunkiem przed blokiem operacyjnym dr inż. Sławomir Koczubiej Programowanie komputerowe 53/298
54 Algorytmy Pętla dla z wiadomą liczbą iteracji Algorytmy można podzielić na: algorytmy liniowe, jeśli wykorzystują operacje bezpośredniego następstwa, algorytmy warunkowe, jeśli wykorzystują operacje warunkowe, algorytmy iteracyjne, jeśli wykorzystują pętle. dr inż. Sławomir Koczubiej Programowanie komputerowe 54/298
55 Algorytmy Algorytm szukania wartości minimalnej z trzech START we readln(a) we readln(b) we readln(c) prawda a < b fałsz prawda a < c fałsz prawda b < c fałsz wy writeln(a) wy writeln(c) wy writeln(b) wy writeln(c) STOP dr inż. Sławomir Koczubiej Programowanie komputerowe 55/298
56 Algorytmy Algorytm obliczania pierwiastków równania kwadratowego START d:=b*b-4*a*c prawda we readln(a, b, c) a < 0 fałsz prawda d < 0 fałsz x1:=(-b-sqrt(d))/2*a x2:=(-b+sqrt(d))/2*a wy writeln(x1) d > 0 fałsz prawda wy writeln( blad ) wy writeln( brak ) wy writeln(x2) STOP dr inż. Sławomir Koczubiej Programowanie komputerowe 56/298
57 Algorytmy Algorytm sumowania START we readln(n) suma:=0 for i:=1 to n do we readln(x) suma:=suma + x wy writreln(suma) STOP dr inż. Sławomir Koczubiej Programowanie komputerowe 57/298
58 Algorytmy Algorytm szukania wartości ekstremalnej START we readln(x) prawda x = 0 fałsz x <> 0 fałsz prawda max:=x x > max fałsz we readln(x) prawda max:=x we readln(x) wy writeln('brak') wy writeln(max) STOP dr inż. Sławomir Koczubiej Programowanie komputerowe 58/298
59 Algorytmy Algorytm sortowania przez wybór Jest to chyba najbardziej intuicyjny algorytm sortowania. Polega on na wielokrotnym wyborze minimalnego elementu z coraz krótszego podciągu danych. Przebieg: wybieranie minimum z ciągu elementów na pozycjach od 1 do n i zamienianie go z pierwszym elementem, wybieranie minimum z ciągu elementów na pozycjach od 2 do n i zamienianie go z drugim elementem (po tym kroku elementy na pozycjach od 1 do 2 są uporządkowane), wybieranie minimum z ciągu elementów na pozycjach n 1in i zamienianie z elementem na pozycji n 1 (po tej operacji elementy na pozycjach od 1 do n 1 są uporządkowane, a element na pozycji n jest maksymalny, czyli ciąg elementów na pozycjach od 1 do n jest uporządkowany). dr inż. Sławomir Koczubiej Programowanie komputerowe 59/298
60 Algorytmy START we readln(n) for i:=1 to n do for j:=1 to n do max:=x[j] k:=j for i:=1 to n do we writeln(x[i]) we readln(x[i]) for i:=j + 1 to n do STOP x[i] > max fałsz prawda max:=x[i] k:=j buf:=x[j] x[j]:=x[k] x[k]:=buf dr inż. Sławomir Koczubiej Programowanie komputerowe 60/298
61 Dlaczego Visual Basic (.NET/for Applications)? 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 61/298
62 Dlaczego Visual Basic (.NET/for Applications)? Dla początkujących, problemem jest mnogość dostępnych obecnie języków programowania. Najbardziej klasyczne języki programowania to C i C++, popularne są Java i C#, modny jest Python, JavaScript i Ruby. WbiurachkrólujeVisual Basic i SQL, czy dedykowane do analizy danych R lub do obliczeń numerycznych (analizy danych też) MATLAB. Osoby, które nie będą zawodowo (poważnie?) zajmowały się programowaniem, raczej nie powinny zaczynać nauki od języków takich jak C, C++ czy Java. Służą one raczej do budowania dużych aplikacji niż pisania niewielkich narzędzi lub rozszerzania innych, a ich nauka wymaga zrozumienia wielu aspektów tworzenia i projektowania programowania. dr inż. Sławomir Koczubiej Programowanie komputerowe 62/298
63 Dlaczego Visual Basic (.NET/for Applications)? Visual Basic (.NET/for Applications) jest językiem zaprojektowanym przez Microsoft i używanym właściwie w jego wszystkich produktach. Najczęściej wykorzystywany jest w pakiecie Microsoft Office. Pozwala na automatyzację zadań, pobieranie danych z nietypowych miejsc (plików), łączenie z innymi programami. Visual Basic może być też używany do programowania na platformie.net, więc pozwala na tworzenie także kompletnie niezależnych aplikacji i aplikacji internetowych (działających po stronie serwera). Visual Basic for Applications jest zaimplementowany w programach: ArcGIS, AutoCAD, CATIA. dr inż. Sławomir Koczubiej Programowanie komputerowe 63/298
64 Dlaczego Visual Basic (.NET/for Applications)? TIOBE Index jest wskaźnikiem popularności języków programowania.indeks jest aktualizowany raz w miesiącu. Wartość wskaźnika jest obliczana biorąc pod uwagę liczbę wykwalifikowanych programistów, kursów, wyników popularnych wyszukiwarek internetowych. Indeks nie wskazuje najlepszego języka programowania ani języka, w którym została mapisana większość linii kodu. dr inż. Sławomir Koczubiej Programowanie komputerowe 64/298
65 Dlaczego Visual Basic (.NET/for Applications)? Indeks popularności TIOBE Marzec 2014 Marzec 2013 Język Popularność 1 2 C 17,535% 2 1 Java 16,406% 3 3 Objective-C 12,143% 4 4 C++ 6,313% 5 5 C# 5,572% 6 6 PHP 3,698% 7 7 (Visual) Basic 2,955% 8 8 Python 2,021% 9 11 JavaScript 1,899% Visual Basic.NET 1,862% Perl 1,149% MATLAB 0,688% dr inż. Sławomir Koczubiej Programowanie komputerowe 65/298
66 Dlaczego Visual Basic (.NET/for Applications)? Indeks popularności TIOBE Język C Java Objective-C C C# PHP (Visual) Basic Python JavaScript Perl dr inż. Sławomir Koczubiej Programowanie komputerowe 66/298
67 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 67/298
68 Makra Makra (makropolecenia) są prostymi programami, które przechowują serię poleceń zarejestrowanych przez użytkownika za pomocą rejestratora makr wbudowanego w program lub zaprogramowanych ręcznie. Makra pozwalają na odtworzenie czynności, automatyzację pewnych czynności lub dokonania zmian w dokumentach bez interakcji z użytkownikiem. Makra pisane są zwykle w skryptowych językach programowania wykonywanych przez interpreter wbudowany w aplikacje, w których są uruchamiane. Makra warto tworzyć gdy w programie wykonujemy te same powtarzające się czynności lub gdy program nie oferuje narzędzia do wykonania zamierzonego zadania. dr inż. Sławomir Koczubiej Programowanie komputerowe 68/298
69 W przypadku Excela makra tworzone są w języku Visual Basic for Applications (VBA), który jest wbudowany we wszystkie aplikacje pakietu Microsoft Office. Narzędzia do programowania w VBA (karta Deweloper) nie są domyślnie wyświetlane, aby je włączyć należy zaznaczyć pole wyboru Deweloper wobszarze Karty główne po wybraniu opcji: Plik Opcje Dostosowywanie Wstążki. dr inż. Sławomir Koczubiej Programowanie komputerowe 69/298
70 Wstążka Deweloper. dr inż. Sławomir Koczubiej Programowanie komputerowe 70/298
71 Rejestrowanie makr Odwołania: odwołanie względne, odwołanie bezwzględne. Miejsce przechowania makra: skoroszyt makr osobistych (PERSONAL.XLSB), nowy skoroszyt, ten skoroszyt. dr inż. Sławomir Koczubiej Programowanie komputerowe 71/298
72 Poziom bezpieczeństwa dr inż. Sławomir Koczubiej Programowanie komputerowe 72/298
73 Uruchomienie makra dr inż. Sławomir Koczubiej Programowanie komputerowe 73/298
74 dr inż. Sławomir Koczubiej Programowanie komputerowe 74/298
75 Edytor Visual Basic dr inż. Sławomir Koczubiej Programowanie komputerowe 75/298
76 dr inż. Sławomir Koczubiej Programowanie komputerowe 76/298
77 dr inż. Sławomir Koczubiej Programowanie komputerowe 77/298
78 Zapisywanie skoroszytów z makrami dr inż. Sławomir Koczubiej Programowanie komputerowe 78/298
79 Otwieranie skoroszytów z makrami dr inż. Sławomir Koczubiej Programowanie komputerowe 79/298
80 Obiekty, właściwości, metody W przypadku Excela, przez obiekt będziemy rozumieć zasób kontrolowany przez język Visual Basic. Skoroszyt, arkusz, zakres komórek, wykres to tylko niektóre przykłady. Sam Excel stanowi obiekt aplikację. Zawiera też inne obiekty takie jak skoroszyt czy paski narzędzi. Skoroszyt z kolei zawiera kolejne obiekty takie jak arkusze, wykresy. Takie same lub podobne obiekty stanowią tzw. kolekcje. Kolekcja arkuszy obejmuje wszystkie arkusze w skoroszycie. Najczęściej używanymi kolekcjami są: Worksheets, Sheets (zawierająca arkusze i wykresy), Workbooks, Windows. Pracując z kolekcją, obiektów możemy wykonać te same czynności dla wszystkich obiektów w kolekcji. dr inż. Sławomir Koczubiej Programowanie komputerowe 80/298
81 Każdy obiekt ma pewne cechy charakterystyczne, które noszą nazwy właściwości. Właściwości obiektów można ustawiać lub odczytywać. Na przykład obiekt Workbook ma właściwość Name, natomiast obiekt Range ma właściwości: Column, Font, Formula, Name, Row, Style, Value. W Visual Basic, niektóre właściwości mogą być również obiektami. Zakres komórek Range jest właściwością obiektu Worksheet, ale możemy zmieniać wygląd czcionki zakresu ustawiając właściwość Font, która z kolei ma inne właściwości (z tego wynika, że Range i Font są obiektami). dr inż. Sławomir Koczubiej Programowanie komputerowe 81/298
82 Oprócz właściwości, obiekty posiadają metody. Metoda jest to czynność, którą może wykonać dany obiekt (metoda jest wykonywana na obiekcie). Na przykład, obiekt Range ma metody ClearContents i ClearFormats. Metody mogą mieć opcjonalne parametry, które wpływają na ich zachowanie. Obiekt Workbook ma metodę Close, która zamyka otwarty skoroszyt. Jeśli w skoroszycie są niezapisane zmiany, Excel wyświetli komunikat z pytaniem, czy je zachować na dysku. Aby zamknąć skoroszyt bez zachowania zmian, należy metodę Close uruchomić zparametremsavechanges ustawionym na False. dr inż. Sławomir Koczubiej Programowanie komputerowe 82/298
83 Range Worksheet.Range Workbook.Worksheet.Range Applcation.Workbook.Worksheet.Range Range("A1").ClearContents Workbooks("Zeszyt1.xlsm"). _ Worksheets("Arkusz1"). _ Range("A1"). _ ClearContents dr inż. Sławomir Koczubiej Programowanie komputerowe 83/298
84 Syntaktyka i semantyka Aby ciąg znaków mógł być rozpoznany jako program napisany w danym języku, musi spełniać reguły syntaktyki (składni). Składnia opisuje: rodzaje dostępnych symboli, zasady, według których symbole mogą być łączone w większe struktury. Należy zauważyć, że na etapie przetwarzania składni w ogóle nie jest brane pod uwagę znaczenie poszczególnych symboli. W praktyce kod poprawny składniowo nie musi być poprawny semantycznie. Występuje tu analogia do języków naturalnych. Zdanie Bźdźiągwy się mucioszą! jest poprawne pod względem gramatycznym, lecz nie posiada żadnego znaczenia, ponieważ zostały w nim użyte nieistniejące słowa. dr inż. Sławomir Koczubiej Programowanie komputerowe 84/298
85 Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Część błędów semantycznych można wychwycić już w momencie wstępnego przetwarzania kodu programu, np. próbę odwołania się do nieistniejącej funkcji, lecz inne mogą ujawnić się dopiero w trakcie wykonywania. dr inż. Sławomir Koczubiej Programowanie komputerowe 85/298
86 Odwołanie się do właściwości obiektu: Obiekt.Wlasciwosc Range("A1").Value Obiekt.Wlasciwosc(Argumenty) ActiveCell.Offset(columnOffset :=2, rowoffset:=3) dr inż. Sławomir Koczubiej Programowanie komputerowe 86/298
87 Zmiana wartości właściwości: Obiekt.Wlasciwosc = Wartosc Range("A1").Value = 25 Range("A1").Formula = "=1+2*3" ActiveCell.Font.Bold = True ActiveCell.Font.Name = "Times New Roman" dr inż. Sławomir Koczubiej Programowanie komputerowe 87/298
88 Odczytanie wartości właściwości: Zmienna = Obiekt.Wlasciwosc Variable = Range("A1").Value Odwołanie do metody obiektu: Obiekt.Metoda Range("A1").ClearContents dr inż. Sławomir Koczubiej Programowanie komputerowe 88/298
89 Podział długich linii: Selection.PasteSpecial _ Paste := xlvalues, _ Operation := xlmultiply, _ SkipBlanks := False, _ Transpose := False Instrukcja może zawierać 1024 znaki. Użycie znaku kontynuacji wiersza jest dozwolone: przed lub po operatorach &, +, Like, NOT, AND, przed przecinkiem lub po przecinku, przed lub po przypisaniu (:=), przed lub po znaku równości (=). dr inż. Sławomir Koczubiej Programowanie komputerowe 89/298
90 Błędy W trakcie pisania kodu nie da się uniknąć błędów. Błędy mogą wynikać z niepoprawnego wpisania instrukcji, pominięcia kropek, przecinków, nawiasów, etc. Takie błędy noszą nazwę syntaktycznych (składniowych). Edytor Visual Basic automatycznie sprawdza błędy takiego typu w trakcie pisania kodu. dr inż. Sławomir Koczubiej Programowanie komputerowe 90/298
91 dr inż. Sławomir Koczubiej Programowanie komputerowe 91/298
92 Oprócz błędów syntaktycznych, można spotkać jeszcze błędy semantyczne (znaczeniowe, wykonania) i logiczne. Błędy wykonania występują w chwili odtwarzania procedur (programu) i mogą wynikać z próby uruchomienia nieistniejącej procedury, otwarcia nieistniejącego pliku lub złego typowania zmiennych. dr inż. Sławomir Koczubiej Programowanie komputerowe 92/298
93 Błędy logiczne zwykle nie wywołują żadnych komunikatów błędu. Chociaż program jest poprawny pod względem syntaktycznym i semantycznym, nie powoduje żadnych problemów kompilacji i uruchamiania to sam rezultat działania może być błędny. Błędy logiczne powodują otrzymanie wyników innych niż się spodziewano. Są to zwykle błędy bardzo trudne do odnalezienia. dr inż. Sławomir Koczubiej Programowanie komputerowe 93/298
94 Podpowiedzi i przeglądarka obiektów dr inż. Sławomir Koczubiej Programowanie komputerowe 94/298
95 Operacje związane z komórkami Właściwość Range wybranie pojedynczej komórki wybranie zakresu komórek wybranie kilku komórek wybranie kilku komórek i zakresu Range("A1").Select Range("A1:C5").Select Range("A1, B2, C3").Select Range("A1:C5, E7, F9").Select dr inż. Sławomir Koczubiej Programowanie komputerowe 95/298
96 Właściwość Cells wybranie pojedynczej komórki Cells(5, 1).Select Cells(5, "A").Select wybranie zakresu komórek Range(Cells(5, 1), Cells(10, 2)).Select wybranie wszystkich komórek Cells.Select dr inż. Sławomir Koczubiej Programowanie komputerowe 96/298
97 Właściwość Offset wybranie komórki znajdującej się wiersz niżej i trzy kolumny w prawo w stosunku do A1 wybranie komórki znajdującej się wiersz wyżej i jedną kolumnę w lewo w stosunku do E5 Range("A1").Offset(1, 3).Select Range("E5").Offset(-2, -1).Select dr inż. Sławomir Koczubiej Programowanie komputerowe 97/298
98 Komórki skrajne pierwsza komórka w wierszu ActiveCell.End(xlleft).Select ostatnia komórka w wierszu ActiveCell.End(xlright).Select pierwsza komórka w kolumnie ActiveCell.End(xlup).Select ostatnia komórka w kolumnie ActiveCell.End(xldown).Select dr inż. Sławomir Koczubiej Programowanie komputerowe 98/298
99 Przesuwanie, kopiowanie, usuwanie przesuwanie zawartości z komórki A1 do A5 Range("A1").Cut Destination:=Range("A5") kopiowanie zawartości z komórki A1 do A5 Range("A1").Copy Destination:=Range("A5") usuwanie zawartości z komórki A1 Range("A1").Clear dr inż. Sławomir Koczubiej Programowanie komputerowe 99/298
100 Zmienne Zmienna jest konstrukcja programistyczna posiadająca trzy podstawowe atrybuty: symboliczną nazwę, miejsce przechowywania, wartość. Zmienna pozwala w kodzie źródłowym na odwoływanie się przy pomocy nazwy do wartości lub miejsca przechowywania. Nazwa służy do identyfikowania zmiennej w związku z tym często nazywana jest identyfikatorem. Miejsce przechowywania przeważnie znajduje się w pamięci komputera i określane jest przez adres i długość danych. Wartość to zawartość miejsca przechowywania. dr inż. Sławomir Koczubiej Programowanie komputerowe 100/298
101 Zmienna zazwyczaj posiada również czwarty atrybut: typ, określający rodzaj danych przechowywanych w zmiennej i co za tym idzie sposób reprezentacji wartości w miejscu przechowywania. W programie wartość zmiennej może być odczytywana lub zastępowana nową wartością, tak więc wartość zmiennej może zmieniać się w trakcie wykonywania programu, natomiast dwa pierwsze atrybuty (nazwa i miejsce przechowywania) nie zmieniają się w trakcie istnienia zmiennej. W zależności od rodzaju języka typ zmiennej może być stały lub zmienny. Konstrukcją podobną lecz nie pozwalającą na modyfikowanie wartości jest stała. dr inż. Sławomir Koczubiej Programowanie komputerowe 101/298
102 Wjęzykachzestatycznym typowaniem zmienna ma określony typ danych jakie może przechowywać. Jest on wykorzystywany do określenia reprezentacji wartości w pamięci, kontrolowania poprawności operacji wykonywanych na zmiennej (kontrola typów) oraz konwersji danych jednego typu na inny. Wjęzykachztypowaniem dynamicznym typ nie jest atrybutem zmiennej lecz wartości w niej przechowywanej. Zmienna może wtedy w różnych momentach pracy programu przechowywać dane innego typu. dr inż. Sławomir Koczubiej Programowanie komputerowe 102/298
103 Deklaracja zmiennej to stwierdzenie, że dany identyfikator jest zmienną, przeważnie też określa typ zmiennej. W zależności od języka programowania deklaracja może być obligatoryjna, opcjonalna lub nie występować wcale. Definicja oprócz tego, że deklaruje zmienną to przydziela jej pamięć. Podczas definiowania lub deklarowania zmiennej można określić jej dodatkowe atrybuty wpływające na sposób i miejsce alokacji, czas życia, zasięg i inne. dr inż. Sławomir Koczubiej Programowanie komputerowe 103/298
104 Zasięg zmiennej określa gdzie w treści programu zmienna może być wykorzystana, natomiast czas życia zmiennej to okresy w trakcie wykonywania programu gdy zmienna ma przydzieloną pamięć i posiada (niekoniecznie określoną) wartość. Ze względu na zasięg można wyróżnić podstawowe typy zmiennych: globalne obejmujące zasięgiem cały program, lokalne o zasięgu obejmującym pewien blok, podprogram. Podobnie ze zmiennymi w klasie mogą być dostępne: tylko dla danej klasy (zmienna prywatna), dla danej klasy i jej potomków (zmienna chroniona), w całym programie (zmienna publiczna). Zmienne mogą zmieniać swój pierwotny zasięg np. poprzez importowanie/włącznie do zasięgu globalnego modułów, pakietów czy przestrzeni nazw. dr inż. Sławomir Koczubiej Programowanie komputerowe 104/298
105 Ze względu na czas życia i sposób alokacji zmienna może być: statyczna, automatyczna, dynamiczna. Dla zmiennej statycznej pamięć jest rezerwowana w momencie kompilacji lub ładowania programu. Takimi zmiennymi są zmienne globalne, zmienne klasy (współdzielone przez wszystkie obiekty klasy, a nawet dostępne spoza klasy), statyczne zmienne lokalne funkcji (współdzielone pomiędzy poszczególnymi wywołaniami funkcji i zachowujące wartość po zakończeniu). dr inż. Sławomir Koczubiej Programowanie komputerowe 105/298
106 Zmiennej automatycznej pamięć jest automatycznie przydzielana w trakcie działania programu. Są to przeważnie zmienne lokalne podprogramów i ich parametry formalne, znikają po zakończeniu podprogramu. Pamięć dla zmiennej dynamicznej alokowana jest ręcznie w trakcie wykonywania programu przy pomocy specjalnych konstrukcji lub funkcji. W zależności od języka zwalnianie pamięci może być ręczne lub automatyczne, Zazwyczaj nie posiada własnej nazwy, lecz odwoływać się do niej trzeba przy pomocy wskaźnika, referencji lub zmiennej o semantyce referencyjnej. dr inż. Sławomir Koczubiej Programowanie komputerowe 106/298
107 Typy zmiennych w VBA Typ, wielkość, charakterystyka Boolean 2 wartość logiczna True lub False Byte 1 liczba całkowita od 0 do 255 Integer 2 liczba całkowita od do Long 4 liczba całkowita długa od do Single 4 liczba rzeczywista od e+38 do e-45 od e-45 do e+38 Double 8 liczba rzeczywista długa od e+308 do e-324 od e-324 do e+308 dr inż. Sławomir Koczubiej Programowanie komputerowe 107/298
108 Typ, wielkość, charakterystyka Currency 8 liczba całkowita z kropką (skalowana 10000) od -922,337,203,685, do 922,337,203,685, Decimal 12 liczba dziesiętna, ułamek dziesiętny (skalowana potęgami 10) od ± do ± Date 8 data od 01/01/100 do 31/12/9999 String - łańcuch znaków od 0 do (64kB) stałej długości String - łańcuch znaków od 0 do ok. 2 mld. zmiennej długości dr inż. Sławomir Koczubiej Programowanie komputerowe 108/298
109 Typ, wielkość, charakterystyka Object 4 referencja na obiekt Array - tablica Variant - może zawierać wszystkie typy za wyjątkiem łańcucha o stałej długości dr inż. Sławomir Koczubiej Programowanie komputerowe 109/298
110 Deklarowanie zmiennych VBA nie wymaga deklarowania zmiennych (deklarowanie niejawne, domniemanie typu). Można od razu do nazw zmiennych przypisywać wartości. Nie jest to zalecane! W przypadku niedeklarowania zmiennych, VBA nie będzie znał i sprawdzał nazw zmiennych, tylko utworzy nową zmienną jeśli napotka na nową (być może tylko błędnie wpisaną nazwę używanej już zmiennej) nazwę zmiennej. Wszystkie zmienne niedeklarowane bedą miały typ Variant ibędątworzone podczas wykonywania programu, co może wpłynąć na szybkość działania programu. Mogą się też ujawnić błędy związane z niedozwolonymi operacjami dla konkretnych typów. dr inż. Sławomir Koczubiej Programowanie komputerowe 110/298
111 Można wymusić deklarowanie zmiennych (deklarowanie jawne) poleceniem (zalecane): Option Explicit Aby zadeklarować zmienną, należy podać jej nazwę i typ poprzedzonych instrukcją Dim: Option Explicit Dim dataurodzenia As Date Dim imienazwisko As String Dim kwota As Single Dim wiek As Integer Można delkarować wiele zmiennych w jednej instrukcji: Option Explicit Dim dataurodzenia As Date, imienazwisko As String dr inż. Sławomir Koczubiej Programowanie komputerowe 111/298
112 Przypisywanie wartości do zmiennych: Option Explicit Dim dataurodzenia As Date Dim imienazwisko As String Dim kwota As Single Dim wiek As Integer dataurodzenia = #01/03/1999# imienazwisko = "Jan Kowalski" kwota = 3.14 wiek = 21 dr inż. Sławomir Koczubiej Programowanie komputerowe 112/298
113 Do typowania zmiennych można używać znaków Znaki deklaracji typów Integer % Long & Single! Double # String $ Sub obliczwiek() Dim imienazwisko$, wiek% Dim dataurodzenia As Date imienazwisko = "Jan Kowalski" dataurodzenia = #01/03/1999# wiek = Year( Now()) - Year(dataUrodzenia) MsgBox Prompt:=imieNazwisko & " ma " & wiek & " lat." MsgBox(imieNazwisko & " ma " & wiek & " lat.") End Sub dr inż. Sławomir Koczubiej Programowanie komputerowe 113/298
114 Zasięg zmiennych Można deklarować zmienne mające zasięg: procedury, modułu, projektu. Poziom procedury: Option Explicit Sub wyswietlliczbe() Dim liczba As Integer MsgBox Prompt:="Liczba = " & liczba End Sub dr inż. Sławomir Koczubiej Programowanie komputerowe 114/298
115 Poziom modułu: Option Explicit Dim liczba As Integer Sub wyswietlliczbe() MsgBox Prompt:="Liczba = " & liczba End Sub Sub wyswietlliczbeinaczej() MsgBox Prompt:="Liczba wynosi " & liczba End Sub dr inż. Sławomir Koczubiej Programowanie komputerowe 115/298
116 Poziom projektu: Option Explicit Public liczba As Integer Zmienna może być używana we wszystkich modułach projektu (Module1, Module2, itd.). dr inż. Sławomir Koczubiej Programowanie komputerowe 116/298
117 Zmienne obiektowe, statyczne, stałe Zmienna statyczna: Option Explicit Static kosztjednostkowy As Currency Po wyjściu z procedury wartość zmiennej statycznej nie ulega zmianie. Zmienna obiektowa: Option Explicit Dim pweienzakres As Object Set pewienzakres = Worksheet("Arkusz1").Range("A1:C5") dr inż. Sławomir Koczubiej Programowanie komputerowe 117/298
118 Stałe: Option Explicit Public Const sciezkadopliku As String = "c:\files\data.txt" Const znanawartosc = 3.14 Const ulubionykolorindeks = 4 Const wiekemerytalny As Integer = 99 dr inż. Sławomir Koczubiej Programowanie komputerowe 118/298
119 Konwersja typów danych CBool() konweercja na typ Boolean CByte() konweercja na typ Byte CCur() konweercja na typ Currency CDate() konweercja na typ Date CDbl() konweercja na typ Double CDec() konweercja na typ Decimal CInt() konweercja na typ Integer CLng() konweercja na typ Long CSng() konweercja na typ Single CStr() konweercja na typ String CVar() konweercja na typ Variant dr inż. Sławomir Koczubiej Programowanie komputerowe 119/298
120 Dim inta As Integer Dim boola As Boolean Dim sngb As Single Dim intb As Integer Dim dblc As Double Dim strc As String inta = 0 boola = CBool(intA) False sngb = 3.14 intb = CInt(sngB) 3 dblc = strc = CStr(dblC) " " dr inż. Sławomir Koczubiej Programowanie komputerowe 120/298
121 Sprawdzanie typów danych IsArray() czy jest tablicą? IsDate() czy jest datą? IsEmpty() czy jest puste? IsNumeric() czy jest typem numerycznym? IsObject() czy jest obiektem? Dim tablica1(5) As Integer, tablica2(), wynik As Boolean tablica2 = Array(1, 2, 3) wynik = IsArray(tablica1) True wynik = IsArray(tablica2) True dr inż. Sławomir Koczubiej Programowanie komputerowe 121/298
122 Dim zmienna, wynik As Boolean wynik = IsEmpty(zmienna) True zmienna = Null wynik = IsEmpty(zmienna) False zmienna = Empty wynik = IsEmpty(zmienna) True Dim zmienna, wynik As Boolean Dim wartosc As Integer, zakres As Object, wynik As Boolean Set zakres = Worksheet("Arkusz1").Range("A1:C5") wartosc = 3 wynik = IsObject(zakres) True wynik = IsObject(wartosc) False dr inż. Sławomir Koczubiej Programowanie komputerowe 122/298
123 Tablice Tablica jest to kontener danych, w którym poszczególne komórki dostępne są z pomocą pewnych kluczy, które najczęściej przyjmują wartości numeryczne. Tablica zwykle pozwala na przechowywanie wartości tego samego typu. Tablice mogą być jednowymiarowe lub wielowymiarowe. Rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne). W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg, a tablicy dwuwymiarowej macierz. dr inż. Sławomir Koczubiej Programowanie komputerowe 123/298
124 VBA pozwala na stosowanie jedno- i wielowymiarowych tablic: statycznych, które posiadaja stałą, niezmienną w trakcie działania programu wielkość (liczbę elementów), ustaloną w trakcie deklaracji, dynamicznych, w których można zmieniać wielkość, w trakcie działania programu, wielkość musi być zadeklarowana przed pierwszym użyciem. W VBA można zmieniać sposób numerowania elementów tablic. Deklaracja: Option Base 1 spowoduje, że pierwszy element tablicy będzie miał numer 1, natomiast Option Base 0 spowoduje, że pierwszy element tablicy będzie miał numer 0. dr inż. Sławomir Koczubiej Programowanie komputerowe 124/298
125 Deklarowanie i używanie tablic jednowymiarowych: Option Base 1 Dim napis, trzywioski(3) As String Dim suma, ulubionenumerki(5) As Integer trzywioski(1) trzywioski(2) trzywioski(3) = "Rzepin" = "Pawłów" = "Ambrożów" ulubionenumerki(1) = 3 ulubionenumerki(2) = 7 ulubionenumerki(3) = 9 ulubionenumerki(4) = 13 ulubionenumerki(5) = 21 suma = ulubionenumerki(1) + ulubionenumerki(3) napis = trzywioski(1) & " " & trzywioski(2) dr inż. Sławomir Koczubiej Programowanie komputerowe 125/298
126 Deklarowanie i używanie tablic wielowymiarowych: Option Base 1 Dim sumadiag, macierz(3, 3) As Integer macierz(1, 1) = 1 macierz(1, 2) = 2 macierz(1, 3) = 3 macierz(2, 1) = 4 macierz(2, 2) = 5 macierz(2, 3) = 6 macierz(3, 1) = 7 macierz(3, 2) = 8 macierz(3, 3) = 9 sumadiag = macierz(1, 1) + macierz(2, 2) + macierz(3, 3) dr inż. Sławomir Koczubiej Programowanie komputerowe 126/298
127 Deklarowanie i używanie tablic dynamicznych: Option Base 1 Dim wektor() As Integer Dim macierz(,) As Integer ReDim wektor(3) ReDim macierz(2, 2) wektor(1) = 1 wektor(2) = 2 wektor(3) = 3 macierz(1, 1) = 1 macierz(1, 2) = 2 macierz(2, 1) = 3 macierz(2, 2) = 4 dr inż. Sławomir Koczubiej Programowanie komputerowe 127/298
128 W VBA można zmieniać wielkość tablic: Option Base 1 Dim wektor(2) As Integer ReDim wektor(3) dr inż. Sławomir Koczubiej Programowanie komputerowe 128/298
129 Zmiana wielkości tablicy, powoduje utratę jej zawartości. Jeśli chcemy zachować dotychczasowe wartości, trzeba użyć konstrukcji: Option Base 1 Dim ciag(5) As Integer ciag(1) = 1 ciag(2) = 2 ciag(3) = 3 ciag(4) = 4 ciag(5) = 5 ReDim Preserve ciag(10) ciag = { } ReDim Preserve ciag(3) ciag = {1 2 3} dr inż. Sławomir Koczubiej Programowanie komputerowe 129/298
130 W przypadku tablic wielowymiarowych, można zmieniać tylko ostatni wymiar: Option Base 1 Dim macierz(2, 2) As Integer macierz(1, 1) = 1 macierz(1, 2) = 2 macierz(2, 1) = 3 macierz(2, 2) = 4 ReDim Preserve macierz(2, 5) macierz = { } { } dr inż. Sławomir Koczubiej Programowanie komputerowe 130/298
131 Tablice o nieustalonych rozmiarach można inicjować wartościami za pomocą Array(), tablica musi być typu Variant, lub będzie mieć typ Variant: Option Base 1 Dim cyferki() As Variant Dim literki() deklaracja typu nie jest konieczna cyferki = Array(1, 2, 3, 4, 5) literki = Array("a", "b", "c", "d") dr inż. Sławomir Koczubiej Programowanie komputerowe 131/298
132 Badanie rozmiaru tablicy: Option Base 1 Dim tablica(100, 5 To 10, -3 To 3) As Integer Dim ilow, iup, jlow, jup, klow, kup As Long ilow = LBound(tablica, 1) 1 jlow = LBound(tablica, 2) 5 klow = LBound(tablica, 3) -3 iup = UBound(tablica, 1) 100 jup = UBound(tablica, 2) 10 kup = UBound(tablica, 3) 3 dr inż. Sławomir Koczubiej Programowanie komputerowe 132/298
133 Usuwanie zawartości tablicy: Option Base 1 Dim cyferki(3) As Integer Dim literki(2, 2) As String cyferki(1) = 1 cyferki(2) = 2 cyferki(3) = 3 literki(1, literki(1, literki(2, literki(2, 1) = "a" 2) = "b" 1) = "c" 2) = "d" Erase(cyferki) Erase(literki) dr inż. Sławomir Koczubiej Programowanie komputerowe 133/298
134 Instrukcja przypisania, operatory i wyrażenia arytmetyczne Przypisanie (podstawienie) jest to operacja nadania, umieszczenia, wpisania do określonej L-wartości (jest to wartość, która istnieje dłużej niż przez jedno wyrażenie i można pobrać jej adres, jest nią też zmienna) nowej wartości. Przypisanie może zostać dokonane: instrukcją przypisania, operatorem przypisania, innym operatorem, w inicjalizacji zmiennej, w wywołaniu podprogramu, w wyniku efektów ubocznych, w instrukcji wejścia. dr inż. Sławomir Koczubiej Programowanie komputerowe 134/298
135 Instrukcja przypisania to jedna z podstawowych instrukcji prostych występujących w językach programowania. Zwykle nie zawiera słowa kluczowego, choć istnieją języki programowania wymagające lub zezwalające opcjonalnie na użycie słowa kluczowego. W VBA instrukcją przypisania jest znak równości =. Operator przypisania to operator, który powoduje przypisanie, i zwraca wartość równą wartości przypisanej do L-wartości. Operator przypisania może wystąpić w instrukcji przypisania ale może także wystąpić wewnątrz wyrażeń, tak jak każdy inny operator, gdyż w przeciwieństwie do instrukcji posiada tę właściwość, że zwraca określony rezultat. dr inż. Sławomir Koczubiej Programowanie komputerowe 135/298
136 Operator w programowaniu konstrukcja językowa jednoargumentowa, bądź wieloargumentowa zwracająca wartość. Do podstawowych operatorów, będących elementem większości języków programowania, należą operatory arytmetyczne, relacji (porównania), logicznie, przypisania. Główne cechy opisujące operator to: liczba i typy argumentów, typ wartości zwracanej, wykonywane działanie, priorytet, łączność lub jej brak, umiejscowienie operatora względem operandów. dr inż. Sławomir Koczubiej Programowanie komputerowe 136/298
137 Operator arytmetyczny to operator, który działając na podanych argumentach reprezentujących wartości liczbowe, w wyniku zwraca również wyznaczoną wartość liczbową, realizując podstawowe operacje arytmetyki. To jakie operatory arytmetyczne są dostępne w konkretnym języku programowania zależy od jego składni, a to jakie są zasady ich stosowania, w tym priorytet tych operatorów i kolejność opracowywania argumentów, od przyjętej implementacji języka. Zróżnicowany jest również sposób zapisu operatorów arytmetycznych. Stosuje się zapis, bądź za pomocą symboli (znaku lub znaków nie będących literami), w konwencji zbliżonej do matematycznej, bądź zdecydowanie rzadziej w postaci słów kluczowych. dr inż. Sławomir Koczubiej Programowanie komputerowe 137/298
138 Operatory arytmetyczne realizują następujące operacje arytmetyczne (przykłady): jednoargumentowe: zmiana znaku liczby (wyznaczenie liczby przeciwnej), zachowanie znaku liczby, inkrementacja, dekrementacja, dwuargumentowe: dodawanie, odejmowanie, mnożenie, dzielenie, dzielenie całkowitoliczbowe, reszta z dzielenia całkowitoliczbowego, potęgowanie. dr inż. Sławomir Koczubiej Programowanie komputerowe 138/298
139 Operatory arytmetyczne ˆ potęgowanie * mnożenie / dzielenie (liczba zmiennoprzecinkowa) \ dzielenie całkowitoliczbowe (liczba całkowita) Mod reszta z dzielenia całkowitoliczbowego + dodawanie - odejmowanie, zmiana znaku liczby dr inż. Sławomir Koczubiej Programowanie komputerowe 139/298
140 Wyrażenie arytmetyczne jest to językach programowania dowolne wyrażenie typu liczbowego. Może być ono złożone ze zmiennych, liczb, funkcji, symboli działań (tu: operatorów), itp. Option Explicit Dim wynik As Single wynik = 10 / zależny od typu Option Explicit Dim wynik As Integer wynik = 10 ˆ wynik = 10 * 3 30 wynik = 10 \ 3 3 wynik = 10 Mod 3 1 wynik = wynik = wynik = 5 5 wynik = -wynik -5 dr inż. Sławomir Koczubiej Programowanie komputerowe 140/298
141 Kolejność (priorytety) wykonywania działań jest taka jak w matematyce, można ją regulować za pomocą nawiasów okrągłych. Operatory równoważne wykonywane są od strony lewej do prawej. Wybrane funkcje matematyczne Sin() sinus Cos() cosinus Tan() tangens Atn() arcus tangent Abs() wartość bezwzględna Log() logarytm naturalny Exp() eksponent (e x ) dr inż. Sławomir Koczubiej Programowanie komputerowe 141/298
142 Operator konkatenacji Operatorem konkatenacji (łączenia) są znaki dodawania + i ampersand &. Dim imie, nazwisko, imienazwisko As String imie = "Ambroży" nazwisko = "Kleks" imienazwisko = imie & " " & nazwisko dr inż. Sławomir Koczubiej Programowanie komputerowe 142/298
143 Instrukcja warunkowe, operatory relacji i wyrażenia logiczne Operator relacji jest to operator który działając na podanych argumentach, w wyniku zwraca wartość logiczną, określającą spełnienie bądź nie spełnienie reprezentowanej przez ten operator relacji zachodzącej między argumentami. Wynikiem działania operatora relacji jest więc wartość reprezentująca zgodnie z zasadami obowiązującymi w składni języka programowania jedną z wartości logicznych: prawdę (true) lubfałsz (false). dr inż. Sławomir Koczubiej Programowanie komputerowe 143/298
144 W językach programowania dostępne są operatory, które badają relacje: równości, nierówności, negacji równości, nierówności ostrych, mniejsze, większe, nierówności nieostrych, mniejsze lub równe, większe lub równe, przynależności (zawierania), równoważności. dr inż. Sławomir Koczubiej Programowanie komputerowe 144/298
145 Operatory relacji = czy równe? <> czy różne? > czy większe? < czy mniejsze? >= czy większe lub równe? <= czy mniejsze lub równe? Like czy łańcuchy znaków takie same? Is porównanie zmiennych obiektowych dr inż. Sławomir Koczubiej Programowanie komputerowe 145/298
146 Operatory relacji mogą działać na wszystkich typach danych, jednak najczęściej odnoszą się do danych numerycznych i łańcuchów znaków. Porównanie danych całkowitych nie powinno budzić zastrzeżeń, ponieważ operacje wykonywane są w sposób naturalny. Należy zachować ostrożność przy porównywaniu wartości zmiennoprzecinkowych. Dim pierwsza, druga As Double pierwsza = druga = If pierwsza = druga then MsgBox("Równe!") If Abs(pierwsza - druga) < then MsgBox("Równe!") dr inż. Sławomir Koczubiej Programowanie komputerowe 146/298
147 W przypadku łańcuchów wartość każdej litery w łańcuchu odnosi się do jej pozycji w alfabecie. Oznacza to, że litera A jest mniejsza od litery B, tazaśodc, itd. Wszystkie małe litery mają większą wartość niż ich duże odpowiedniki. Ponadto porównanie łańcuchów następuje kolejno, litera po literze zaczynając od lewej strony do prawej. W przypadku operatora Like może zawierać znaki wieloznaczne:?, *, #. Deklaracja: Option Compare Binary spowoduje, że operator Like będzie rozróżniał wielkość liter, natomiast Option Compare Text spowoduje, że operator Like nie będzie rozróżniał wielkości liter. dr inż. Sławomir Koczubiej Programowanie komputerowe 147/298
148 Operator logiczny to operator, który działając na argumentach reprezentujących wartości logiczne, w wyniku zwraca również wartość logiczną, realizując podstawowe operacje algebry Boole a. Dostępność operatorów logicznych, priorytet i kolejność opracowywania argumentów zależy od przyjętej implementacji języka. Zróżnicowany jest również sposób zapisu operatorów logicznych, stosuje się zapis, bądź w postaci słów kluczowych, bądź symboli (znaku lub znaków nie będących literami). dr inż. Sławomir Koczubiej Programowanie komputerowe 148/298
149 Operatory logiczne realizują następujące operacje logiczne: jednoargumentowe: negacja, dwuargumentowe: koniunkcja, alternatywa, alternatywa wykluczająca, implikacja, ekwiwalencja. dr inż. Sławomir Koczubiej Programowanie komputerowe 149/298
150 Operatory logiczne Not negacja (zaprzeczenie) And koniunkcja Or alternatywa Xor alternatywa wykluczająca dr inż. Sławomir Koczubiej Programowanie komputerowe 150/298
151 Not argument wynik prawda fałsz fałsz prawda And lewy argument prawy argument wynik prawda prawda prawda prawda fałsz fałsz fałsz prawda fałsz fałsz fałsz fałsz dr inż. Sławomir Koczubiej Programowanie komputerowe 151/298
152 Or lewy argument prawy argument wynik prawda prawda prawda prawda fałsz prawda fałsz prawda prawda fałsz fałsz fałsz Xor lewy argument prawy argument wynik prawda prawda fałsz prawda fałsz fałsz fałsz prawda fałsz fałsz fałsz prawda dr inż. Sławomir Koczubiej Programowanie komputerowe 152/298
153 Wyrażenie logiczne jest to językach programowania dowolne wyrażenie zawierające operatory relacji i operatory logiczne, stałe, zmienne logiczne, którego wynik jest typu logicznego (prawda lub fałsz). Wyrażenia logiczne mogą zawierać wyrażenia innego typu, np. arytmetyczne. Dim wynik As Boolean wynik = (5 < 3 * 2) And ("Lech" > "Adam") wynik = (5 <> 3 * 2) Or ("Lech" = "Adam") wynik = Not(2 + 2 = 5) wynik = "Ala ma kota" Like "Ala ma*" dr inż. Sławomir Koczubiej Programowanie komputerowe 153/298
154 Dim liczba As Integer Dim parzysta, zakres, wynik As Boolean liczba = 25 parzysta = (liczba Mod 2) = 0 zakres = ((liczba >= 10) And (liczba <= 20)) wynik = parzysta And zakres dr inż. Sławomir Koczubiej Programowanie komputerowe 154/298
155 Instrukcja warunkowa jest elementem języka programowania, który pozwala na wykonanie różnych obliczeń (zadań) w zależności od tego czy zdefiniowane przez programistę wyrażenie logiczne jest prawdziwe, czy fałszywe. If - Then - End If Dim a As Integer Dim b As Integer a = 1 b = 2 If (a + b) = 3 Then MsgBox("Podwojona suma równa się 6.") End If dr inż. Sławomir Koczubiej Programowanie komputerowe 155/298
156 If - Then - Else - End If Dim utarg As Single Dim premia As Single utarg = If utarg >= Then Else premia = 0.05 * utarg premia = 0 MsgBox("Premii nie będzie!") End If dr inż. Sławomir Koczubiej Programowanie komputerowe 156/298
157 If - Then - ElseIf - Then - Else - End If Dim a, b, c As Integer Dim delta, x0, x1, x2 As Single a = 1 b = 8 c = 2 delta = bˆ2-4 * a * c If delta > 0 Then x1 = (-b - deltaˆ0.5) / (2 * a) x2 = (-b + deltaˆ0.5) / (2 * a) ElseIf delta = 0 Then Else x0 = -b / (2 * a) MsgBox("Brak pierwiastków rzeczywistych.") End If dr inż. Sławomir Koczubiej Programowanie komputerowe 157/298
158 Dim zwierze As String zwierze = InputBox("Zwierzę?") If (zwierze = "Pies") Or (zwierze = "pies") Then MsgBox("Zwierzę to pies!") ElseIf (zwierze = "Kot") Or (zwierze = "kot") Then MsgBox("Zwirzę to kot!") Else MsgBox("Ni to pies, ni to kot...") End If dr inż. Sławomir Koczubiej Programowanie komputerowe 158/298
159 Instrukcja wyboru Instrukcja wyboru jest instrukcją umożliwiającą wybór instrukcji do wykonania spośród wielu opcji. Składnia instrukcji wyboru różni się w zależności od języka programowania, lecz można wyróżnić w niej charakterystyczne elementy: nagłówek instrukcji wyboru słowo kluczowe rozpoczynające instrukcję, nazwa zmiennej lub wyrażenie, na podstawie którego następuje wybór, ciało instrukcji wyboru kolejne instrukcje (bloki instrukcji) podlegające selekcji, poprzedzone frazami zawierającymi wartości, listy lub zakresy porównywane z wyrażeniem (zmienną) z nagłówka instrukcji, opcjonalnie fraza domyślna, wykonywana gdy żadna z fraz nie spełni warunku, koniec instrukcji wyboru. dr inż. Sławomir Koczubiej Programowanie komputerowe 159/298
160 Dim zwierze As String zwierze = InputBox("Zwierzę?") Select Case zwierze Case "Pies" MsgBox("Zwierzę to pies!") Case "Kot" MsgBox("Zwirzę to kot!") Case Else MsgBox("Ni to pies, ni to kot...") End Select dr inż. Sławomir Koczubiej Programowanie komputerowe 160/298
161 Instrukcja z listami: Dim zwierze As String zwierze = InputBox("Zwierzę?") Select Case zwierze Case "Pies", "pies" MsgBox("Zwierzę to pies!") Case "Kot", "kot" MsgBox("Zwirzę to kot!") Case Else MsgBox("Ni to pies, ni to kot...") End Select dr inż. Sławomir Koczubiej Programowanie komputerowe 161/298
162 Instrukcja z przedziałami: Dim strliczba As String Dim intliczba As Integer strliczba = InputBox("Liczba?") intliczba = CInt(strLiczba) Select Case intliczba Case 1 To 9 MsgBox("Liczba dodatnia jednocyfrowa!") Case 10 To 99 MsgBox("Liczba dodatnia dwucyfrowa!") Case 0 MsgBox("Zero to zero.") Case Else MsgBox("Jakaś inna liczba...") End Select dr inż. Sławomir Koczubiej Programowanie komputerowe 162/298
163 Instrukcja z warunkami (Is): Dim strliczba As String Dim intliczba As Integer strliczba = InputBox("Liczba?") intliczba = CInt(strLiczba) Select Case intliczba Case Is <= 50 MsgBox("Liczba jest mniejsza lub równa 50") Case Is 51 MsgBox("Liczba jest równa 51") Case Is > 100 MsgBox("Liczba jest większa od 100") Case Else MsgBox("Liczba jest w przedziale od 52 do 100") End Select dr inż. Sławomir Koczubiej Programowanie komputerowe 163/298
164 Pętle Pętla to jedna z podstawowych konstrukcji programowania strukturalnego (obok instrukcji warunkowej i instrukcji wyboru). Umożliwia cykliczne wykonywanie ciągu instrukcji: określoną liczbę razy (pętla iteracyjna, licznikowa), do momentu zajścia pewnych warunków (pętla repetycyjna, warunkowa), dla każdego elementu kolekcji (pętla foreach, po kolekcji), w nieskończoność. dr inż. Sławomir Koczubiej Programowanie komputerowe 164/298
165 Pętla iteracyjna, to rodzaj pętli, w której następuje wykonanie określonej liczby iteracji. Do kontroli przebiegu wykonania pętli iteracyjnej stosuje się specjalną zmienną, którż nazywa się zmienną sterująca, kontrolną lub licznikową. W ramach pętli przejście do kolejnej iteracji wiąże się ze zmianą wartości zmiennej sterującej o określoną wielkość i sprawdzenie warunku, czy nowa wartość zmiennej sterującej znajduje się nadal w dopuszczalnym zakresie wartości, określonym dla tej zmiennej. dr inż. Sławomir Koczubiej Programowanie komputerowe 165/298
166 Kolejność wykonywania działań jest następująca: przypisanie wartości początkowej do zmiennej sterującej, sprawdzenie, czy wartość zmiennej sterującej mieści się w dopuszczalnym zakresie wartości, tzn. jej wartość jest równa lub mniejsza od wartości granicznej, albo jest równa lub większa od wartości granicznej, w zależności od rodzaju pętli iteracyjnej: jeżeli wartość zmiennej sterującej mieści się w dopuszczalnym zakresie wartości to wykonuje iterację, jeżeli wartość zmiennej sterującej nie mieści się w dopuszczalnym zakresie wartości to kończy wykonywanie pętli, wykonuje iterację, zmienia wartość zmiennej sterującej o zadany krok, wartość ta może być zwiększana lub zmieszana. dr inż. Sławomir Koczubiej Programowanie komputerowe 166/298
167 Zmienna sterująca służy do kontroli przebiegu realizacji pętli iteracyjnej. Przyjmuje ona kolejne wartości z zadanego zakresu zmieniane o określoną wartość kroku. W różnych językach programowania mogą być stawiane określone wymagania i ograniczenia dotyczące zmiennych sterujących. Ograniczenia te mogą dotyczyć takich atrybutów tej zmiennej jak np. dozwolony typ danych, zasięgu. Zmiana wartości zmiennej sterującej może nastąpić: automatycznie, w sposób ukryty, jawnie, w kodzie bloku pętli, o ile dany język programowania dopuszcza taką konstrukcję. Możliwość zmiany wartości zmiennej sterującej jawnie w bloku pętli jest dostępna jedynie w niektórych językach programowania (np. VB i VBA). dr inż. Sławomir Koczubiej Programowanie komputerowe 167/298
168 Ogólniejszą konstrukcją jest pętla repetycyjna (warunkowa), która jest wykonywana, aż do odpowiedniej zmiany warunków. Warunek zawarty w definiowanej pętli jest pewnym wyrażeniem, które najczęściej zwraca wartość typu logicznego (np. VB, VBA). Istnieją języki programowania, w których składnia nie przewiduje takiego typu danych. W językach tych stosuje się wyrażenia zwracające pewną wartość innego typu, która następnie podlega odpowiedniej interpretacji, np. wartość zero może być utożsamiana wartością false typu logicznego, a pozostałe wartości z wartością true. dr inż. Sławomir Koczubiej Programowanie komputerowe 168/298
169 Zapis wyrażenia, oraz typ wartości wyrażenia, zależny jest od składni konkretnego języka programowania. Powszechnym jest zapis wyrażeń kontrolnych analogicznie do zapisu tych wyrażeń dla instrukcji warunkowej. Szczególne znaczenie mają w tym przypadku operatory porównań, choć warunek może zostać wyrażony także całkiem inaczej, np. jako wywołanie funkcji zwracającej wartość logiczną, bądź jako identyfikator zmiennej logicznej, której wcześniej przypisano rezultat ewaluacji wyrażenia warunkowego. Ponadto operator logiczny realizujący operację negacji pozwana na rekompensatę ewentualnego braku pętli powtarzanej przy spełnieniu lub niespełnieniu warunku, gdyż zastosowanie tego operatora do podanego warunku jest równoważne zastosowaniu frazy przeciwnej. dr inż. Sławomir Koczubiej Programowanie komputerowe 169/298
170 Warunki decydujące o kontynuacji lub zaprzestaniu wykonywania pętli mogą być sprawdzane: na początku pętli, przed wykonaniem pierwszej instrukcji zawartej w bloku definiowanej pętli, wewnątrz pętli, w jej bloku, po wykonaniu części instrukcji, na końcu pętli, po wykonaniu wszystkich instrukcji zawartych w bloku definiowanej pętli. Jeżeli warunek jest sprawdzany na początku pętli, to może nastąpić taka sytuacja, że instrukcje zawarte w pętli nigdy nie zostaną wykonane. Będzie to miało miejsce w sytuacji, gdy przy pierwszym wykonaniu warunek nie będzie spełniony. dr inż. Sławomir Koczubiej Programowanie komputerowe 170/298
171 Inaczej jest, gdy warunek jest sprawdzany na końcu pętli. W tym przypadku instrukcje zawarte w pętli zostaną wykonane co najmniej jeden raz. Zwykle spotyka się dwa typowe słowa kluczowych, które stanowią podstawę zapisu instrukcji: while definiuje warunek, który musi być spełniony, aby pętla była wykonywana, until pętla będzie powtarzana dopóki warunek nie stanie się spełniony. dr inż. Sławomir Koczubiej Programowanie komputerowe 171/298
172 Często pożądane jest, aby instrukcje pętli zostały wykonane dla każdego elementu tablicy, kolekcji itp. Oczywiście można to zrobić za pomocą pętli iteracyjnych lub repetycyjnych, ale często szybszym i bardziej przejrzystym sposobem jest użycie pętli typu foreach, która zwalnia programistę z obowiązku ręcznego iterowania po kolekcji. Działanie pętli foreach, polega na powtarzaniu kolejnych iteracji dla wszystkich elementów wybranego kontenera danych, takiego jak, np. tablica, lista, kolekcja, kolejka, itp. dr inż. Sławomir Koczubiej Programowanie komputerowe 172/298
173 Pętla taka automatycznie przed przejściem do wykonania kolejnej iteracji przypisuje zadanej w nagłówku pętli zmiennej sterującej wartość kolejnego elementu. Działanie tej pętli polega na wykonaniu następujących kroków: ustaleni jako bieżący, pierwszego element kontenera danych, jeżeli kontener jest pusty, zakończenie działanie pętli, przypisanie wartość bieżącego elementu do zmiennej sterującej, wykonanie iteracji, sprawdzenie czy istnieje kolejny element w kontenerze: jeżeli istnieje, to ustala jako bieżący kolejny element kontenera i wykonuje iterację, jeżeli nie istnieje to kończy działanie. dr inż. Sławomir Koczubiej Programowanie komputerowe 173/298
174 VBA oferuje dwa rodzaje pętli warunkowych: Pętle: konstrukcja: While warunek Wend, konstrukcja Do Loop: z warunkiem na początku petli: Do While warunek - Loop, Do Until warunek - Loop, z warunkiem na końcu pętli: Do - Loop While warunek, Do - Loop Until warunek. While wykonują się dopóki jest spełniony warunek, Until wykonują się aż zostanie spełniony warunek. dr inż. Sławomir Koczubiej Programowanie komputerowe 174/298
175 Pętla While - Wend: Dim indeks As Integer Dim licznik As Integer indeks = 20 licznik = 0 While indeks > 10 indeks = indeks - 1 licznik = licznik + 1 Wend MsgBox(licznik) licznik = 10 dr inż. Sławomir Koczubiej Programowanie komputerowe 175/298
176 Pętla Do While - Loop: Dim indeks As Integer Dim licznik As Integer indeks = 20 licznik = 0 Do While indeks > 10 indeks = indeks - 1 licznik = licznik + 1 Loop MsgBox(licznik) licznik = 10 dr inż. Sławomir Koczubiej Programowanie komputerowe 176/298
177 Pętla Do Until - Loop: Dim indeks As Integer Dim licznik As Integer indeks = 20 licznik = 0 Do Until indeks > 10 indeks = indeks - 1 licznik = licznik + 1 Loop MsgBox(licznik) licznik = 0 dr inż. Sławomir Koczubiej Programowanie komputerowe 177/298
178 Pętla Do - Loop While: Dim indeks As Integer Dim licznik As Integer indeks = 20 licznik = 0 Do indeks = indeks - 1 licznik = licznik + 1 Loop While indeks > 10 MsgBox(licznik) licznik = 10 dr inż. Sławomir Koczubiej Programowanie komputerowe 178/298
179 Pętla Do - Loop Until: Dim indeks As Integer Dim licznik As Integer indeks = 20 licznik = 0 Do indeks = indeks - 1 licznik = licznik + 1 Loop Until indeks > 10 MsgBox(licznik) licznik = 1 dr inż. Sławomir Koczubiej Programowanie komputerowe 179/298
180 Przerwanie działanie pętli można osiągnąć na pomocą indtrukcji Exit While i Exit Do: Dim indeks As Integer Dim licznik As Integer indeks = 20 licznik = 0 While indeks > 10 indeks = indeks - 1 licznik = licznik + 1 Wend If licznik = 5 Then Exit While MsgBox(licznik) licznik = 5 Działanie peli można przerwać za pomocą kombinacji klawiszy [CTRL + BREAK]. dr inż. Sławomir Koczubiej Programowanie komputerowe 180/298
181 Pętla For - To - Next: Dim i, n As Integer n = 6 For i = 1 To n MsgBox(i) Next i = dr inż. Sławomir Koczubiej Programowanie komputerowe 181/298
182 Pętla For - To - Step - Next: Dim i, n As Integer n = 6 For i = 2 To n Step 2 MsgBox(i) Next i = dr inż. Sławomir Koczubiej Programowanie komputerowe 182/298
183 Pętla For - To - Step - Next: Dim i, n As Integer n = 6 For i = n To 1 Step -2 MsgBox(i) Next i = dr inż. Sławomir Koczubiej Programowanie komputerowe 183/298
184 Pętla For - To - Step - Next: Option Base 1 Dim i, n As Single n = 1.2 For i = 0 To n Step 0.4 MsgBox(i) Next i = Przerwanie działanie pętli można osiągnąć na pomocą indtrukcji Exit For. dr inż. Sławomir Koczubiej Programowanie komputerowe 184/298
185 Pętla For Each - Next: Option Base 1 Dim imie As Variant, lista() lista = Array("Ala", "Ola", "Ela") For Each imie In lista Next MsgBox(imie) dr inż. Sławomir Koczubiej Programowanie komputerowe 185/298
186 Pętla For - To - Next: Dim n As Integer Dim imie As Variant Dim lista() lista = Array("Ala", "Ola", "Ela") n = UBound(lista, 1) For i = 1 To n imie = lista(i) MsgBox(imie) Next dr inż. Sławomir Koczubiej Programowanie komputerowe 186/298
187 Komunikaty Funkcja MsgBox MsgBox(prompt[, buttons] [, title] [, helpfile, context]) Parametry MsgBox prompt treść komunikatu (łańcuch znaków) buttons przyciski komunikatu (łańcuch znaków) title tytuł okna (łańcuch znaków) helpfile plik pomocy kontekstowej (łańcuch znaków) context numer tematu pomocy kontekstowej (wartość numeryczna) dr inż. Sławomir Koczubiej Programowanie komputerowe 187/298
188 Wartości buttons vbokonly 0 tylko przycisk OK vbokcancel 1 przyciski OK i Cancel vbabortretryignore 2 przyciski Abort, Retry i Ignore vbyesnocancel 3 przyciski Yes, No i Cancel vbyesno 4 przyciski Yes i No vbretrycancel 5 przyciski Retry i Cancel vbcritical 16 ikona alarm vbquestion 32 ikona pytanie vbexclamation 48 ikona ostrzegawcza vbinformation 64 ikona informacyjna vbdefaultbutton1 0 przycisk pierwszy jest domyślny vbdefaultbutton2 256 przycisk drugi jest domyślny vbdefaultbutton3 512 przycisk trzeci jest domyślny vbdefaultbutton4 768 przycisk czwarty jest domyślny vbapplicationmodal 0 komunikat modalny dr inż. Sławomir Koczubiej Programowanie komputerowe 188/298
189 Zwracane wartości vbok 1 przycisk OK vbcancel 2 przycisk Cancel vbabort 3 przycisk Abort vbretry 4 przycisk Retry vbignore 5 przycisk Ignore vbyes 6 przycisk Yes vbno 7 przycisk No dr inż. Sławomir Koczubiej Programowanie komputerowe 189/298
190 Dim wynik As Integer wynik = MsgBox("Czy chcesz kontynuować?", _ vbyesno + vbquestion + vbdefaultbutton2) Dim wynik As Integer wynik = MsgBox("Czy chcesz kontynuować?", 292) dr inż. Sławomir Koczubiej Programowanie komputerowe 190/298
191 Dim tytul, komunikat As String Dim styl, wynik As Integer tytul = "Bardzo ważny komunikat" styl = vbyesno + vbcritical + vbdefaultbutton2 komunikat = "Zastanów się dobrze!" & Chr(13) & _ "Czy chcesz to skasować?" wynik = MsgBox(komunikat, styl, tytul) dr inż. Sławomir Koczubiej Programowanie komputerowe 191/298
192 Dim tytul, komunikat As String Dim styl, wynik As Integer tytul = "Bardzo ważny komunikat" styl = vbyesno + vbcritical + vbdefaultbutton2 komunikat = "Zastanów się dobrze!" & Chr(13) & _ "Czy chcesz to skasować?" wynik = MsgBox(komunikat, styl, tytul) If wynik = vbyes Then MsgBox ("Wcisnąłeś Tak!") Else MsgBox ("Wcisnąłeś Nie!") End If dr inż. Sławomir Koczubiej Programowanie komputerowe 192/298
193 Funkcja InputBox InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) Parametry MsgBox prompt treść komunikatu (łańcuch znaków) title tytuł okna (łańcuch znaków) default domyślna odpowiedź (łańcuch znaków) xpos odleglość od lewej krawędzi ekranu (wartość numeryczna) ypos odleglość od górnej krawędzi ekranu (wartość numeryczna) helpfile plik pomocy kontekstowej (łańcuch znaków) context numer tematu pomocy kontekstowej (wartość numeryczna) dr inż. Sławomir Koczubiej Programowanie komputerowe 193/298
194 Dim miasto As String miasto = InputBox("Podaj miejsce urodzenia:" & Chr(13) _ & "np.: Rzepin, Pawłów, Ambrożów") dr inż. Sławomir Koczubiej Programowanie komputerowe 194/298
195 Dim tytul, komunikat, wynik, domyslna As String komunikat = "Wpisz wartość między 1 a 3:" tytul = "Bardzo ważny komunikat" domyslna = "1" wynik = InputBox(komunikat, tytul, domyslna, 200, 200) dr inż. Sławomir Koczubiej Programowanie komputerowe 195/298
196 Podprogramy Podprogram termin związany jest z programowaniem proceduralnym. Podprogram to wydzielona część programu wykonująca jakieś operacje. Podprogramy stosuje się, aby uprościć program główny, zwiększyć czytelność kodu. Wartościową cechą podprogramu jest możliwość wielokrotnego jego wywołania. W wielu językach programowania dzieli się podprogramy na funkcje i procedury. Funkcja ma wykonywać obliczenia i zwracać jakąś wartość, nie powinna natomiast mieć żadnego innego wpływu na działanie programu. Procedura natomiast nie zwraca żadnej wartości, zamiast tego wykonuje pewne działania. dr inż. Sławomir Koczubiej Programowanie komputerowe 196/298
197 Przez zwracanie wartości należy rozumieć możliwość użycia wywołania funkcji wewnątrz wyrażenia. Procedury często też zwracają wartości, ale poprzez odpowiednie parametry. Podział ten występuje w językach takich jak Pascal i Visual Basic. Oprócz powyższego podziału, wyróżnić także należy podprogram główny, czyli taki od którego rozpoczyna się wykonywanie skompilowanego programu. W językach programowania zastosowano zasadniczo kilka różnych rozwiązań. Albo zdefiniowana jest w składni odrębna jednostka (program w Pascalu) albostosuje się specjalną dyrektywę języka, informującą aby program łączący dany podprogram wybrał jako podprogram główny (OPTIONS(MAIN) w PL). W języku C i pokrewnych definiuje się zwykłą funkcję lecz o specjalnym identyfikatorze main. dr inż. Sławomir Koczubiej Programowanie komputerowe 197/298
198 W językach programowania stosują różne terminologie i oznaczenia podprogramów: w wielu językach programowania, a szczególnie tych, w których występuje tylko jeden rodzaj podprogramu, np. tylko funkcje, nie ma specjalnego oznaczenia (słowa kluczowego) podprogramu, przykładem jest język C, procedury: procedure, np. Pascal, Ada, Algol, PL, subroutine, np. Fortran, lubwskróconejpostacisub, np. Basic i Visual Basic, part, perform, funkcje: function, np. Pascal,Ada, Visual Basic, procedure... return(), np. PL, Algol. dr inż. Sławomir Koczubiej Programowanie komputerowe 198/298
199 Podprogram może być identyfikowany: przez nazwę identyfikator przypisany do podprogramu w jego deklaracji, jest to najczęściej spotykany przypadek w językach wysokiego poziomu (np.: Ada, C, Visual Basic), przez etykietę (Basic, Visual Basic), przez liczbę literał całkowity (Basic, Visual Basic), przez referencję (adres) w językach wysokiego poziomu takie wskaźniki przechowywane są w zmiennych typu proceduralnego lub wskaźnikowego. dr inż. Sławomir Koczubiej Programowanie komputerowe 199/298
200 Wywołanie podprogramu może być: funkcyjne w wyrażeniu, do którego podprogram zwraca obliczoną wartość, taka forma wywołania dotyczy tylko podprogramów mających cechy funkcji, tzn. zwracających wartość, proceduralne czyli jako instrukcja, poprzez nazwę z listą argumentów, lub po słowie kluczowym. Konkretne implementacje języków często dopuszczają wywołanie funkcji w postaci proceduralnej, tzn. poza wyrażeniami. W tym przypadku zwracana przez podprogram wartość jest ignorowana (Borland Pascal). dr inż. Sławomir Koczubiej Programowanie komputerowe 200/298
201 Podprogram jako samodzielna, wydzielona część algorytmu, zazwyczaj musi komunikować się z otoczeniem. Taką komunikację realizuje się za pomocą: zmiennych globalnych, argumentów (parametrów aktualnych), przypisywanych zdefiniowanym w podprogramie, rezultatów funkcji (wartości zwracanych do miejsca wywołania), pól obiektu (dla metod danego obiektu), innych, rzadko stosowanych lub nie zalecanych (np.: obszarów wspólnych, zmiennych nakładanych). dr inż. Sławomir Koczubiej Programowanie komputerowe 201/298
202 Procedury Procedurę definiuje się używając słów kluczowych Sub i End Sub. Możnaje dodawać w edytorze VB (menu Insert). Makropolecenia rejestrowane w Excelu są właśnie procedurami. dr inż. Sławomir Koczubiej Programowanie komputerowe 202/298
203 Przykład: Sub komunikatbledu() MsgBox("Wystąpił błąd!") End Sub Przekazywanie parametru, typ (Variant): Sub komunikatbledu(numerbledu) MsgBox("Wystąpił błąd nr " & CStr(numerBledu) & "!") End Sub dr inż. Sławomir Koczubiej Programowanie komputerowe 203/298
204 Domyślnie, parametry są przekazywane z modyfikatorem ByRef: Dim numer As Byte numer = 3 komunikatbledu numerbledu:=numer MsgBox(numer) 5 numer = 3 komunikatbledu(numer) MsgBox(numer) 3 Sub komunikatbledu(numerbledu As Byte) komunikatbledu(byref numerbledu As Byte) MsgBox("Wystąpił błąd nr " & CStr(numerBledu) & "!") numerbledu = 5 End Sub dr inż. Sławomir Koczubiej Programowanie komputerowe 204/298
205 Modyfikator ByVal: Dim numer As Byte numer = 3 komunikatbledu numerbledu:=numer MsgBox(numer) 3 numer = 3 komunikatbledu(numer) MsgBox(numer) 3 Sub komunikatbledu(byval numerbledu As Byte) MsgBox("Wystąpił błąd nr " & CStr(numerBledu) & "!") numerbledu = 5 End Sub dr inż. Sławomir Koczubiej Programowanie komputerowe 205/298
206 Funkcje Funkcję definiuje się używając słów kluczowych Function i End Function. Można je dodawać w edytorze VB (menu Insert). Dim wartx, warty, wynik As Integer wartx = 2 warty = 3 wynik = mnozenie(wartx, warty) 6 Function mnozenie(byval warta As Integer, _ ByVal wartb As Integer) As Integer mnozenie = warta * wartb End Function dr inż. Sławomir Koczubiej Programowanie komputerowe 206/298
207 Parametr opcjonalny: Dim wartx, warty, wynik As Integer wartx = 2 warty = 3 wynik = mnozenie(wartx, warty) 6 wynik = mnozenie(wartx, warty, 5) 30 Function mnozenie(byval warta As Integer, _ ByVal wartb As Integer, Optional wartc) As Integer If IsMissing(wartC) Then Else mnozenie = warta * wartb mnozenie = warta * wartb * wartc End If End Function dr inż. Sławomir Koczubiej Programowanie komputerowe 207/298
208 Lista parametrów: Dim wynik As Integer wynik = mnozenie(1, 2) 2 wynik = mnozenie(1, 2, 3) 6 wynik = mnozenie(1, 2, 3, 4) 24 Function mnozenie(paramarray argumenty()) As Integer Dim wartosc As Variant mnozenie = 1 For Each wartosc In argumenty mnozenie = mnozenie * wartosc Next wartosc End Function dr inż. Sławomir Koczubiej Programowanie komputerowe 208/298
209 Tak zdefiniowanych funkcji można używać w arkuszu. dr inż. Sławomir Koczubiej Programowanie komputerowe 209/298
210 Procedura prywatna skoroszytu o nazwie Workbook_Open() będzie automatycznie uruchamiana podczas otwierania arkusza. Private Sub Workbook_Open () MsgBox ("Otwarto arkusz.") End Sub dr inż. Sławomir Koczubiej Programowanie komputerowe 210/298
211 Modyfikatory Podczas omawiania zmiennych wspomniany został modyfikator Public. Przy definiowania zmiennych i podprogramów VBA pozwala na stosownie modyfikatorów: Public, Private, Friend, Static. dr inż. Sławomir Koczubiej Programowanie komputerowe 211/298
212 Modyfikatory Public Private Friend Static podprogram jest dostępny dla wszystkich innych podprogramów zprojektu ogranicza dostęp tylko dla podprogramów z modułu podprogram będzie dostępny w projekcie, ale nie będzie można go używać np. z innego arkusza, (tylko obiekty) wartości zmiennych podprogramu będą przechowywane do następnego wywołania dr inż. Sławomir Koczubiej Programowanie komputerowe 212/298
213 Obsługa błędów Instrukcja On Error pozwala na obsługę błędów zaistniałych w trakcie działania programu. Umieszcza się ją przed blokiem instrukcji, który ma być kontrolowany: Dim warta, wartb, wynik As Single warta = 1 wartb = 0 On Error GoTo bladdzielenia wynik = warta / wartb MsgBox ("wynik = " & wynik) bladdzielenia: MsgBox ("Blad.") dr inż. Sławomir Koczubiej Programowanie komputerowe 213/298
214 Instrukcja On Error zwykle występuje z Exit Sub lub Exit Function, zapobiega to wykonania instrukcji obsługi błędu, jeśli błąd nie wystąpił: Function dzielenie(byval warta As Double, _ ByVal wartb As Double) As Double On Error GoTo bladdzielenia dzielenie = warta / wartb Exit Function bladdzielenia: MsgBox ("Blad.") End Function dr inż. Sławomir Koczubiej Programowanie komputerowe 214/298
215 Instrukcja Resume pozwala na powrót do instrukcji w której wystąpił błąd: Function dzielenie(byval warta As Double, _ ByVal wartb As Double) As Double On Error GoTo bladdzielenia dzielenie = warta / wartb Exit Function bladdzielenia: wartb = 1 Resume End Function dr inż. Sławomir Koczubiej Programowanie komputerowe 215/298
216 Instrukcja występuje jeszcze w wersjach: On Error Resume Next powoduje skok do następnej instrukcji, po instrukcji w której wystąpił błąd, On Error Goto 0 powoduje wyłączenie obsługi błędów, On Error Goto -1 powoduje skok do etykiety określonej w ostatnim wywołaniu On Error Goto. dr inż. Sławomir Koczubiej Programowanie komputerowe 216/298
217 Uwagi Ze względu na ograniczony czas wykładu, nie poruszone zostały następujące, dość ważne zagadnienia: obiektowy charakter VBA (Class Modules), hierarchia obiektów specyficznych dla programu Excel (za wyjątkiem dostępu do komórek arkusza) osoby będące pisać konkretne programy będą musiały skorzystać z pomocy programu lub MSDN, tworzenie i obsługa okien (form), choć VBA na to pozwala podobne zagadnienia będą omawiane przy aplikacjach VB.NET, obsługa plików garść informacji o pracy z plikami przy omawianiu VB.NET, zagadnień związanych z realizacją i uruchamianiem projektów, a w szczególności: krokowego wykonywania programów, pracy z punktami przerwania (Break Points), śledzenia wartości zmiennych (Watch). dr inż. Sławomir Koczubiej Programowanie komputerowe 217/298
218 Platforma.NET 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 218/298
219 Platforma.NET.NET Framework jest w zasadzie częścią systemów operacyjnych z rodziny Windows. Jest to platforma programistyczna obejmująca: The common language runtime (CLR),.NET Framework class library. CLR jest środowiskiem uruchomieniowym aplikacji. Class Library jest rozbudowaną, zorientowaną obiektowo biblioteką klas, które mogą być użyte do tworzenia różnego rodzaju aplikacji: od tekstowych (konsola, CLI) przez graficzne (okienka) do sieciowych (opartych na ASP.NET). dr inż. Sławomir Koczubiej Programowanie komputerowe 219/298
220 Platforma.NET Technologia ta nie jest związana z żadnym konkretnym językiem programowania, a programy mogą być pisane w jednym z wielu języków na przykład: C++/CLI, C#, F#, J#, Visual Basic.NET. Zadaniem platformy.net Framework jest zarządzanie różnymi elementami systemu: kodem aplikacji, pamięcią i zabezpieczeniami. dr inż. Sławomir Koczubiej Programowanie komputerowe 220/298
221 Platforma.NET Aplikacje w obecnie funkcjonujących systemach operacyjnych firmy Microsoft są kompilowane do kodu maszynowego procesora, a z systemem operacyjnym komunikują się poprzez zestaw funkcji, dostarczanych przez system, zwanych WinAPI. Takie rozwiązanie nastręcza wielu problemów a głównymi z nich są: nieprzenośność programów między różnymi procesorami lub niewykorzystywanie przez aplikacje wszystkich możliwości procesora, nieprzenośność aplikacji między wersjami systemu ze względu na różnice w zestawie i działaniu funkcji z API. Microsoft zastosował rozwiązanie podobne do stosowanego w Javie: kompilatory kompilują kod źródłowy do postaci uniwersalnego kodu zwanego kodem pośrednim (CIL), metody klasy są kompilowane do kodu maszynowego w momencie pierwszego wywołania, kolejne wywołania metody prowadzą już bezpośrednio do skompilowanego kodu (kompilacja w locie, just in time), dostępna jest także możliwość skompilowania całego modułu w trakcie instalacji. dr inż. Sławomir Koczubiej Programowanie komputerowe 221/298
222 Platforma.NET Istotną nowością, jaka pojawiła się w platformie.net, jest Common Language Infrastructure. Każdy język programowania, który spełni odpowiednie standardy (głównie tzw. common object model), będzie miał dostęp do bibliotek.net. Obecnie ponad 40 języków programowania jest zgodnych z.net (oprócz wcześniej wymieniowych), np.: COBOL, Delphi.NET, Eiffel, Fortran, Lisp, Nemerle (opracowany przez wrocławskich naukowców), Perl, Python, Smalltalk. dr inż. Sławomir Koczubiej Programowanie komputerowe 222/298
223 Platforma.NET Platforma.NET niesie ze sobą kilka pochodnych technologii. Można tu wymienić ADO.NET, ułatwiający dostęp do baz danych, oraz ASP.NET, służąca do budowania dynamicznych stron WWW. Flagowym środowiskiem programistycznym jest Microsoft VisualStudio, które umożliwia pisanie w kilku językach programowania (ostatnia wersja to Visual Studio 2012 dla Windows 8 z.net ). Środowisko open source rozwija środowisko MonoDevelop, jednak jest ono wciąż we wczesnej fazie rozwoju. Innym środowiskiem zastępczym dla VS jest SharpDevelop. dr inż. Sławomir Koczubiej Programowanie komputerowe 223/298
224 Platforma.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 224/298
225 Visual Basic.NET 1 Informacje ogólne 2 Wprowadzenie do programowania 3 Paradygmat programowania 4 Algorytmy 5 Dlaczego Visual Basic (.NET/for Applications)? 6 Visual Basic for Applications 7 Platforma.NET 8 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 225/298
226 Visual Basic.NET Środowisko, struktura projektu dr inż. Sławomir Koczubiej Programowanie komputerowe 226/298
227 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 227/298
228 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 228/298
229 Visual Basic.NET Domyślnie, nie są pokazywane wszystkie pliki pakietu. Po wciśnięci Show All Files, pokazane zostaną wszystkie pliki i dodatkowo pozycja References zawierająca wszystkie biblioteki.net wykorzystywane w bieżącym projekcie. Większość plików, które domyślnie były ukryte, nie powinna być edytowana. Na ich zawartość wpływają ustawienia projektu, komponenty umieszczone na formie, itd. dr inż. Sławomir Koczubiej Programowanie komputerowe 229/298
230 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 230/298
231 Visual Basic.NET Plik *.sln (Solution File) globalne informacje o pakiecie (rodzaj kontenera projektów). Pakiet może zawierać projekty wykorzystujące rożne technologie i języki programowania. dr inż. Sławomir Koczubiej Programowanie komputerowe 231/298
232 Visual Basic.NET W pliku *.sln znajduje się linia: Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Kolory", "Kolory\Kolory.vbproj", "{7285D045-C44C-448D-BF9A E738C76}" zawierająca: "Kolory" nazwa pliku pakietu, "Kolory\kolory.vbproj" nazwa podkatalogu z plikami projektu\nazwa projektu VB. Aby zmienić nazwę istniejącego projektu, należy zmienić: nazwę katalogu pakietu, nazwę podkatalogu projektu, nazwę pliku pakietu *.sln, wprowadzić nowe nazwy w pliku pakietu *.sln. dr inż. Sławomir Koczubiej Programowanie komputerowe 232/298
233 Visual Basic.NET Plik *.vbproj plik projektu VB. Plik *.vbproj.user plik konfiguracji środowiska programowania dla projektu. Plik *.resx plik zasobów. dr inż. Sławomir Koczubiej Programowanie komputerowe 233/298
234 Visual Basic.NET Plik *.Designer.vb część kodu klasy formy, widać dziedziczenie z klasy Form zdefiniowanej w przestrzeni nazw System.Windows.Forms. dr inż. Sławomir Koczubiej Programowanie komputerowe 234/298
235 Visual Basic.NET Plik *.vb część kodu klasy formy, zwykle zawiera metody zdarzeniowe dla klasy formy. dr inż. Sławomir Koczubiej Programowanie komputerowe 235/298
236 Visual Basic.NET Plik *.exe skompilowany kod programu, do jego uruchomienia jest potrzebna odpowiednia platforma.net. dr inż. Sławomir Koczubiej Programowanie komputerowe 236/298
237 Visual Basic.NET Kompilowanie, debugowanie, śledzenie Skróty klawiaturowe [F5] [F8] [SHIFT F8] [F9] start i kontynuacja wykonywania programu krokowe wykonywanie programu krokowe wykonywanie programu, procedury i funkcje w jednym kroku wstawianie i usuwanie punktów przerwania (Break Point) dr inż. Sławomir Koczubiej Programowanie komputerowe 237/298
238 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 238/298
239 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 239/298
240 Visual Basic.NET Interfejs użytkownika Forma jest podstawowym elementem interfejsu użytkownika aplikacji systemu Windows. Umożliwia komunikację aplikacji z użytkownikiem. W trakcie projektowania interfejsu na formie można umieszczać dowolne obiekty (kontrolki, komponenty przyciski, etykiety, pola tekstowe, menu) oraz przyporządkowywać odpowiedni kod programu jako reakcja na zaistnienie odpowiedniego zdarzenia powiązanego z wybranym obiektem (np. reakcję na naciśnięcie przycisku czy wskazanie opcji w menu). Bazową klasą dla każdej formy jest klasa Form, znajdująca się w przestrzeni nazw System.Windows.Forms. Każda forma posiada: właściwości (pola), metody i zdarzenia. dr inż. Sławomir Koczubiej Programowanie komputerowe 240/298
241 Visual Basic.NET Właściwości formy Name nazwa formy (klasy) AcceptButton domyślny przycisk akceptacji (reakcja na [ENTER]) AutoSize automatyczne dopasowanie do kontekstu BackColor kolor tła CancelButton domyślny przycisk anulowania (reakcja na [ESC]) ControlBox przyciski w pasku tytułowym formy Cursor rodzaj kursora myszy Font rodzaj i krój czcionki ForeColor kolor tekstu i grafiki FormBorderStyle wygląd obramowania formy Icon ikona formy dr inż. Sławomir Koczubiej Programowanie komputerowe 241/298
242 Visual Basic.NET Właściwości formy Location pozycja lewego górnego rogu formy Locked definiuje możliwość zmiany położenia i rozmiarów komponentów MaximizeBox przycisk maksymalizacji na pasku tytułowym formy MaximumSize maksymalny rozmiar formy Menu określa główne menu formy MinimizeBox przyciski minimalizacji formy MinimumSize minimalny rozmiar formy Size rozmiar początkowy formy Text tytuł na pasku tytułowym WindowState stan okna po uruchomieniu aplikacji (zminimalizowany, cały ekran, normalny) dr inż. Sławomir Koczubiej Programowanie komputerowe 242/298
243 Visual Basic.NET Zdarzenia formy Activated Click Deactivate forma jest aktywowana (focus) kliknięcie na formę forma jest deaktywowana (traci focus) DoubleClick podwójne kliknięcie na formę Enter wejście do formy FormClosed po zamknięciu formy FormClosing forma jest zamykana (przed FormClosed) KeyDown naciśnięcie klawisza (przekazywany jest kod klawisza) KeyPress naciśnięcie klawisza (przekazywany jest znak klawisza) dr inż. Sławomir Koczubiej Programowanie komputerowe 243/298
244 Visual Basic.NET Zdarzenia formy KeyUp zwolnienie klawisza (przekazywany jest kod klawisza) Leave opuszczenie formy Load MouseDown MouseMove MouseUp Move Paint Resize ładowanie formy, przed wywołaniem metody Show, używane zwykle do przypisywania wartości początkowych właściwości formy i komponentów naciśnięcie przycisk myszy kursor myszy przesuwany w obrębie formy zwolnienie przycisku myszy przesuwanie formy przerysowanie formy zmienianie rozmiaru formy dr inż. Sławomir Koczubiej Programowanie komputerowe 244/298
245 Visual Basic.NET Metody formy Activate aktywuje formę Close zamyka formę Focus forma odzyskuje focus Hide ukrywa formę Refresh odświeża (odrysowuje) formy Show pokazuje formę ShowDialog pokazuje formę jako modalne okno dialogowe Update odrysowuje widoczną część formy dr inż. Sławomir Koczubiej Programowanie komputerowe 245/298
246 Visual Basic.NET Komponenty Komponenty (kontrolki) to obiekty umieszczane na formie, będące zwykle częścią interfejsu graficznego aplikacji. Grupę komponentów można wybrać trzymając wciśnięty klawisz [SHIFT]. Na formie znajdują się: Button, RadioButton, ComboBox, Label, LinkLabel, ListBox, TextBox, CheckBox. dr inż. Sławomir Koczubiej Programowanie komputerowe 246/298
247 Visual Basic.NET Właściwości komponentów Name nazwa klasy komponentu AutoSize automatyczne dopasowanie do kontekstu BackColor kolor tła Cursor rodzaj kursora myszy Dock rodzaj zakotwiczenia Enabled dostępność komponentu Font czcionka ForeColor kolor tekstu i grafiki Location pozycja lewego górnego rogu komponentu MaximumSize maksymalny rozmiar komponentu Size rozmiar komponentu Text tekst jaki zawiera komponent Visible widoczność komponentu dr inż. Sławomir Koczubiej Programowanie komputerowe 247/298
248 Visual Basic.NET Zdarzenia komponentów Click kliknięcie DoubleClick podwójne kliknięcie CheckedChanged zaznaczenie, odznaczenie KeyDown naciśnięcie klawisza (przekazywany jest kod klawisza) KeyPress naciśnięcie klawisza (przekazywany jest znak klawisza) KeyUp zwolnienie klawisza (przekazywany jest kod klawisza) MouseDown naciśnięcie przycisk myszy MouseMove kursor myszy przesuwany w obrębie formy MouseUp zwolnienie przycisku myszy dr inż. Sławomir Koczubiej Programowanie komputerowe 248/298
249 Visual Basic.NET Metody komponentów Focus komponent odzyskuje focus Hide ukrywa komponent Refresh odświeża (odrysowuje) kontrolkę i pochodne Show pokazuje komponent Update wymusza odświerzenie obrazu komponentu dr inż. Sławomir Koczubiej Programowanie komputerowe 249/298
250 Visual Basic.NET Różnice pomiędzy VBA a VB.NET Brak typu Currency, należy używać typu Decimal. Brak typu Variant, należy używać Object. Nowy typ Char, służący do pechowywania pojedynczych znaków (liczba całkowita bez znaku z zakresu ). Dim znak As Char znak = "A" Brak wyrażenia Set stosowanego do przypisywania referencji. Pierwszy element tablicy zawsze ma numer 0 (brak opcji Option Base), nie można definiować zakresu zmiennej sterującej (-3 To 3). Domyślne Option Explicit On wymuszenie jawnej deklaracji zmiennych. dr inż. Sławomir Koczubiej Programowanie komputerowe 250/298
251 Visual Basic.NET Opcja Option Strict On wymuszenie jawnego typowania zmiennych, wyłączenie niejawnego rzutowania (zalecane, czasami będzie trzeba użyć sufiksów oznaczających konkretny typ danych, np.: 1I - Integer, 1L - Long, 2.55F -Single,2.55R - Double, 2.55D - Decimal, "A"C -Char). Pętlę While kończy się za pomocą End While. Dim indeks, licznik As Integer indeks = 20 licznik = 0 While indeks > 10 indeks = indeks - 1 licznik = licznik + 1 End While dr inż. Sławomir Koczubiej Programowanie komputerowe 251/298
252 Visual Basic.NET Przy podprogramach (metodach) należy obowiązkowo zdefiniować sposób przekazywania parametrów (ByVal, ByRef). Nowy rozkaz Return, zwracający przekazaną wartość i jednocześnie kończący wykonywanie funkcji. Argumenty podprogramów (metod) muszą być podane w nawiasach. Dim wynik As Integer wynik = dodawanie(2, 3) Function dodawanie(byval warta As Integer, _ ByVal wartb As Integer) As Integer Return warta + wartb End Function Pozostałę instrukcje sterujące (If, Select, For, Do) mają taką samą składnię. dr inż. Sławomir Koczubiej Programowanie komputerowe 252/298
253 Visual Basic.NET Nieco inaczej należy rozumieć działanie modyfikatorów metod. Modyfikatory Public metoda dostępna dla wszystkich innych metod Private metoda dostępna tylko dla metod klasy Protected metoda dostępna dla metod klasy i metod klas potomnych Friend metoda dostępna dla klasy i innych metod projektu dr inż. Sławomir Koczubiej Programowanie komputerowe 253/298
254 Visual Basic.NET Kilka nowych możliwości Nowe operatory typu shorthands: potęgowanie: aˆ=b zamiast a = aˆb, mnożenie: a*=b zamiast a = a * b, dzielenie zmiennoprzecinkowe: a/=b zamiast a = a / b, dzielenie całkowitoliczbowe: a\=b zamiast a = a \ b, dodawanie: a+=b zamiast a = a + b, odejmowanie: a-=b zamiast a = a - b, konkatenacja: a&=b zamiast a = a & b. Inicjalizacja zmiennych podczas deklaracji (czyli definicja). Dim n As Integer = 3 Dim k As Integer = 3 * n Dim err1 As String = "Błąd nr 1" dr inż. Sławomir Koczubiej Programowanie komputerowe 254/298
255 Visual Basic.NET Inicjalizacja tablic podczas deklaracji (tylko tablice dynamiczne). Dim wektor() As Integer = {1, 2, 3} Dim macierz(,) As Char = {{"a", "b"}, {"c", "d"}} Proste typy danych są w istocie strukturami, np. typ Integer jest instancją struktury System.Int32. Dlatego zmienne proste mogą posiadać dodatkowe metody. Dim intliczba As Integer = 1 Dim strliczba As String = intliczba.tostring() Dim strmiasto = "Kielce" MessageBox. Show(strMiasto.Substring(0, 3), "Komunikat") Dim tablica As Integer = {{1, 2}, {3, 4}} Dim rozm1 As Integer = tablica.getupperbound (0) Dim rozm2 As Integer = tablica.getupperbound (1) dr inż. Sławomir Koczubiej Programowanie komputerowe 255/298
256 Visual Basic.NET Struktury pozwalają na deklarowanie typów złożonych, zawierających elementy różnego typu. Structure student Dim nazwisko As String Dim imie As String Dim ocena As Decimal End Structure Dim studa, studb As student Dim studenci(9) As student studa.nazwisko studb.nazwisko = "Kowalski" = "Nowak" For i As Integer = 0 To studenci.length - 1 Next studenci(i).ocena = 2.55D dr inż. Sławomir Koczubiej Programowanie komputerowe 256/298
257 Visual Basic.NET Strukturalna obsługa wyjątków Wyjątki są obiektami, które służą do przenoszenia informacji generowanych w szczególnych momentach wykonywania programu. Wyjątek to sygnał, który jest emitowany w sytuacji krytycznej. Sygnał ten należy przechwycić, aby na sytuację krytyczną odpowiednio zareagować. Klasą bazową wszystkich wyjątków jest System.Exception. Wśrodowisku.Net zaimplementowano szereg klas wyjątków, m.in.: ArgumentNullException używany gdy argumentem metody jest Nothing, InvalidCastException błędne rzutowanie typu, OverflowException wystąpienie przepełnienia. Klasy wyjątków posiadają szereg metod i właściwości, m.in.: Message właściwość tylko do odczytu, ustawiana w konstruktorze podczas tworzenia obiektu wyjątku. dr inż. Sławomir Koczubiej Programowanie komputerowe 257/298
258 Visual Basic.NET Dim x As Integer = , y As Integer y = kwadrat(x) MessageBox. Show("Wynik: " & y.tostring, "Komunikat") Function kwadrat(byval arg As Integer) As Integer Dim wart As Integer wart = arg * arg Return wart End Function dr inż. Sławomir Koczubiej Programowanie komputerowe 258/298
259 Visual Basic.NET Wyjątek obsługiwany przez debugger Visual Studio i przez platformę.net (w przypadku uruchomienia skompilowanego programu z GUI). dr inż. Sławomir Koczubiej Programowanie komputerowe 259/298
260 Visual Basic.NET Wyrażenie Try - Catch - End Try służy do przechwytywania wyjątków. WblokuTry umieszcza się kod, w którym mogą pojawić się wyjątki, natomiast obsługę wyjątków umieszcza się w bloku Catch. Dim x As Integer = , y As Integer Try y = kwadrat(x) Catch ex As Exception MessageBox. Show("Błąd: " & End Try ex.message, "Wyjątek") MessageBox. Show("Wynik: " & y.tostring, "Komunikat") dr inż. Sławomir Koczubiej Programowanie komputerowe 260/298
261 Visual Basic.NET Jeśli w programie zostanie wykryty błąd, można samodzielnie zgłosić wyjątek za pomocą Throw. Wykonanie Throw natychmiast kończy podprogram (metodę), w której jest umieszczone. Zakończenie działania metody przez wygenerowanie wyjątku jest przypadkiem specjalnym, wartość zwracana przez przerwaną metodę nie jest określona. Metody zgłaszające wyjątek mogą być wywoływane wewnątrz innych metod. W takich przypadkach wyjątki metod wewnętrznych przerywają działanie metod zewnętrznych. Jeśli zagnieżdżeń wywołań jest więcej, następuje propagacja wyjątku(iprzerywaniametod). Aby zakończyć propagację wyjątku należy go przechwycić. Jeśli się tego nie zrobi, program zakończy się błędem (wyjątek zostanie obsłużony przez platformę.net). dr inż. Sławomir Koczubiej Programowanie komputerowe 261/298
262 Visual Basic.NET Function kwadrat(byval arg As Integer) As Integer Dim maxarg As Integer = Math. Sqrt( Integer.MaxValue) Dim wart As Integer If arg > maxarg Then Throw New Exception("Za duża wartość.") End If wart = arg * arg Return wart End Function dr inż. Sławomir Koczubiej Programowanie komputerowe 262/298
263 Visual Basic.NET Pliki Plik to uporządkowany zbiór danych o skończonej długości, posiadający szereg atrybutów i stanowiący dla użytkownika systemu operacyjnego całość. Nazwa pliku nie jest częścią tego pliku, lecz jest przechowywana w systemie plików. W systemach z rodziny Windows, rozróżnia się pliki: tekstowe dane zapisane w formie kodów ASCII lub innych (Unicode, UTF-8) łącznie z kodami sterującymi urządzeniami (np.: drukarka, terminal, ekran) do których mają być wysłane, binarne pozostałe pliki. dr inż. Sławomir Koczubiej Programowanie komputerowe 263/298
264 Visual Basic.NET Do operacji na plikach na platformie.net wprowadzono przestrzeń nazw System.IO. W przestrzeni tej zawarte są klasy, które pozwalają czytać dane i zapisywać dane do plików fizycznych lub strumieni, manipulować katalogami i plikami. Obiekty System.IO Path Directory, DirectoryInfo File, FileInfo FileStream BinaryReader, BinaryWriter StringReader, StringWriter StreamReader, StreamWriter manipulacje ścieżkami dostępu, nazwami i rozszerzeniami plików obsługa i operacje na katalogach obsługa i operacje na plikach obsługa plików z dostępem swobodnym dostęp do danych binarnych (prymitywnych) strukturalny dostęp do danych zapisanych w ciągu znaków strukturalny dostęp do danych dr inż. Sławomir Koczubiej Programowanie komputerowe 264/298
265 Visual Basic.NET Ścieżka, nazwa, rozszeżenie pliku: Dim filepath As String = "D:\Dane\Plik.txt" Dim filename As String = Path. GetFileName(filePath) Plik.txt Dim fileext As String = Path. GetExtension(filePath).txt Dim filenoext As String = _ Path. GetFileNameWithoutExtension(filePath) Plik Dim filedir As String = Path. GetDirectoryName(filePath) D:\Dane\ dr inż. Sławomir Koczubiej Programowanie komputerowe 265/298
266 Visual Basic.NET Łatwy zapis i odczyt plików tekstowych (łańcuch znaków): Dim filepath, = "D:\Dane\Plik.txt" Dim textfile As String File. WriteAllText(filePath, "Tekst do zapisania.") textfile = File. ReadAllText(filePath) Console. WriteLine(textFile) dr inż. Sławomir Koczubiej Programowanie komputerowe 266/298
267 Visual Basic.NET Łatwy zapis i odczyt plików tekstowych (tablica łańcuchów znaków): Dim filepath As String = "D:\Dane\Plik.txt" Dim textout() As String = {"Jeden", "Dwa", "Trzy"} Dim textin() As String File. WriteAllLines(filePath, textout) textin = File. ReadAllLines(filePath) For Each textline As String In textin Console. WriteLine(textLine) Next dr inż. Sławomir Koczubiej Programowanie komputerowe 267/298
268 Visual Basic.NET Łatwy zapis i odczyt plików binarnych (tablica bajtów): Dim filepath As String = "D:\Dane\Plik.dat" Dim byteout() As Byte = {1, 2, 3, 4, 5} Dim bytein() As Byte File. WriteAllBytes(filePath, byteout) bytein = File. ReadAllBytes(filePath) For Each byteelement As Byte In bytein Console. WriteLine(byteElement.ToString) Next dr inż. Sławomir Koczubiej Programowanie komputerowe 268/298
269 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 269/298
270 Visual Basic.NET Strumienie i pliki Strumieniem (stream) będziemy nazywać połączenie między nadawcą a odbiorcą w postaci nieprzerwanej sekwencji danych, nie dzielonych na komunikaty. Komunikacja strumieniowa jest realizowana za pomocą buforów pozwalających nadawcy wyprzedzać odbiorcę. Strumienie znajdują zastosowanie przesyłaniu plików i są często podstawą organizowania komunikacji. Klasa FileStream tworzy strumień (obiekt klasy Stream) do pliku i dostarcza metod wykonywania operacji czytania i zapisu. Konstruktory klasy FileStream wymagają podania wartości wyliczenia do ustalania sposobu obsługi pliku. Enumeracje FileStream FileAcces FileMode FileShare określa, czy plik jest tworzony, jeśli nie istnieje i czy zawartość istniejącego pliku jest zachowana lub zastąpioa określa operacje, które można przeprowadzić na pliku określa typ dostępu inne wątów do pliku dr inż. Sławomir Koczubiej Programowanie komputerowe 270/298
271 Visual Basic.NET Enumeracja FileMode Append otwiera plik lub tworzy nowy do dopisywania dnych Create tworzy nowy plik lub zastępuje istniejący CreateNew tworzy nowy plik lub zwraca wyjątek jeśli plik istnieje Open otwiera plik lub zwraca wyjątek jeśli plik nie istnieje OpenOrCreate otwiera plik lub tworzy nowy Truncate otwiera istniejący plik i nadpisuje jego zawartość Enumeracja FileAccess Read można odczytać dane z pliku ReadWrite dane można odczytać i zapisać Write dane można zapisać do pliku dr inż. Sławomir Koczubiej Programowanie komputerowe 271/298
272 Visual Basic.NET Zapis do pliku tekstowego przy pomocy strumieni i WriteLine: Dim i As Integer Dim n As Integer Dim textlines() As String = {"Jeden", "Dwa", "Trzy"} Dim filepath As String = "D:\Dane\Plik.txt" Dim fileoutstream As New FileStream(filePath, FileMode. Create, _ FileAccess. Write) Dim fileoutwriter As New StreamWriter(fileOutStream) n = textlines.length - 1 For i = 0 To n Next fileoutwriter.writeline(textlines(i)) fileoutwriter.close() fileoutstream.close() dr inż. Sławomir Koczubiej Programowanie komputerowe 272/298
273 Visual Basic.NET Odczyt z pliku tekstowego przy pomocy strumieni i ReadLine: Dim n As Integer = 0 Dim textlines(99) As String Dim filepath As String = "D:\Dane\Plik.txt" Dim fileinstream As New FileStream(filePath, FileMode. Open, _ FileAccess. Read) Dim fileinreader As New StreamReader(fileInStream) While fileinreader.peek >= 0 textlines(n) = n = n + 1 fileinreader.readline() End While fileinreader.close() fileinstream.close() For i = 0 To n Next Console. WriteLine(textLines(i)) dr inż. Sławomir Koczubiej Programowanie komputerowe 273/298
274 Visual Basic.NET Zapis danych numerycznych do pliku tekstowego: Dim line As String : Dim i As Integer : Dim n As Integer = 9 Dim valuex(n) As Double : Dim valuey(n) As Double For i = 0 To n valuex(i) = Math. Sin(i * 4 * Math. Atan(1) / n) valuey(i) = Math. Cos(i * 4 * Math. Atan(1) / n) Next Dim filepath As String = "D:\Dane\Plik.txt" Dim fileoutstream As New FileStream(filePath, FileMode. Create, _ FileAccess. Write) Dim fileoutwriter As New StreamWriter(fileOutStream) For i = 0 To n line = (i + 1).ToString & vbtab & valuex(i).tostring & _ vbtab & valuey(i).tostring Chr(9) fileoutwriter.writeline(line) Next fileoutwriter.close() fileoutstream.close() dr inż. Sławomir Koczubiej Programowanie komputerowe 274/298
275 Visual Basic.NET Zapis danych numerycznych do pliku tekstowego: Dim line As String : Dim i As Integer : Dim n As Integer = 9 Dim valuex(n) As Double : Dim valuey(n) As Double For i = 0 To n valuex(i) = Math. Sin(i * 4 * Math. Atan(1) / n) valuey(i) = Math. Cos(i * 4 * Math. Atan(1) / n) Next Dim filepath As String = "D:\Dane\Plik.txt" Dim fileoutstream As New FileStream(filePath, FileMode. Create, _ FileAccess. Write) Dim fileoutwriter As New StreamWriter(fileOutStream) For i = 0 To n line = String. Format("{0,5:D} {1:F} _ {2,12:+0.000e+00;-0.000e+00;0}", i + 1, valuex(i), valuey(i)) fileoutwriter.writeline(line) Next fileoutwriter.close() fileoutstream.close() dr inż. Sławomir Koczubiej Programowanie komputerowe 275/298
276 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 276/298
277 Visual Basic.NET Odczyt danych numerycznych z pliku tekstowego: Dim line As String : Dim i, n As Integer Dim valuex(99) As Double : Dim valuey(99) As Double Dim delimiters() As Char = {" "c, Chr(9)} Dim filepath As String = "D:\Dane\Plik.txt" Dim fileinstream As New FileStream(filePath, FileMode. Open, _ FileAccess. Read) Dim fileinreader As New StreamReader(fileInStream) While fileinreader.peek >= 0 line = fileinreader.readline() Dim items As String() = line.split(delimiters, _ StringSplitOptions. RemoveEmptyEntries) valuex(n) = CDbl(items(1)) : valuey(n) = CDbl(items(2)) n = n + 1 End While fileinreader.close() fileinstream.close() For i = 0 To n Console. WriteLine("{0}, {1}", valuex(i).tostring, _ valuey(i).tostring) Next dr inż. Sławomir Koczubiej Programowanie komputerowe 277/298
278 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 278/298
279 Visual Basic.NET Elementy programowania obiektowego Elementy projektowania obiektowego, omówimy na przykładzie klasy Ulamek, będącej podstawową implementacją liczb wymiernych. Klasa będzie miała dwa prywatne pola (niedostępne spoza klasy): prvlicznik i prvmianownik: Public Class Ulamek Private prvlicznik As Integer Private prvmianownik As Integer End Class dr inż. Sławomir Koczubiej Programowanie komputerowe 279/298
280 Visual Basic.NET Zdefiniujmy dwa konstruktory, które będą inicjowały wartości zmiennych prywatnych, jeden będzie bezargumentowy, drugi z parametrem opcjonalnym (drugi konstruktor nie pozwoli nadać zmiennej prvlicznik wartości zero): Public Class Ulamek... Public Sub New() Me.prvLicznik = 1 Me.prvMianownik = 1 End Sub... End Public Sub New( ByVal licznik As Integer, _ Optional ByVal mianownik As Integer = 1) If mianownik = 0 Then mianownik = 1 Me.prvLicznik = licznik Me.prvMianownik = mianownik End Sub Class Możemy już zdefiniować obiekty i nadawać ich polom wartości: Dim Jeden As Ulamek = New Ulamek() Dim Dwa As Ulamek = New Ulamek(2) Dim JedenDwa As Ulamek = New Ulamek(1, 2) dr inż. Sławomir Koczubiej Programowanie komputerowe 280/298
281 Visual Basic.NET Dodajmy metodę, która będzie zwracać wartość ułamka w postaci łańcucha znaków z wykorzystaniem znaku /: Public Class Ulamek... Public Function WyswietlUlamek() As String Return prvlicznik.tostring & " / " & prvmianownik.tostring... End End Function Class Jest to metoda publiczna, można ją wywoływać poza klasą: Console. WriteLine("Metoda WyswietlUlamek, _ ""Jeden.WyswietlUlamek"" => {0} ", Jeden.WyswietlUlamek) Console. WriteLine("Metoda WyswietlUlamek, _ ""Dwa.WyswietlUlamek"" => {0}", Dwa.WyswietlUlamek) Console. WriteLine("Metoda WyswietlUlamek, _ ""JedenDwa.WyswietlUlamek"" => {0}", JedenDwa.WyswietlUlamek) dr inż. Sławomir Koczubiej Programowanie komputerowe 281/298
282 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 282/298
283 Visual Basic.NET Nasza klasa dziedziczy metodę ToString, którą należy poprawić, dodajmy też nową metodę zwracającą wartość ułamka jako wartość rzeczywistą: Public Class Ulamek... Public Overrides Function ToString() As String Return WyswietlUlamek() End Function Public Function ToDouble() As Double Return prvlicznik / prvmianownik End Function... End Class Przykład: Console. WriteLine("Przesłonięta metoda ToString, _ ""JedenDwa.ToString"" => {0}", JedenDwa.ToString) Console. WriteLine("Metoda ToDouble _ ""JedenDwa.ToDouble"" => {0}", JedenDwa.ToDouble) dr inż. Sławomir Koczubiej Programowanie komputerowe 283/298
284 Visual Basic.NET dr inż. Sławomir Koczubiej Programowanie komputerowe 284/298
Programowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Bardziej szczegółowoINFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE
Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby
Bardziej szczegółowoWykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki
Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoProgramowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Bardziej szczegółowoProgramowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Bardziej szczegółowoProgramowanie komputerów
Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych
Bardziej szczegółowoVisual Basic w programie Excel
Visual Basic w programie Excel Ćwiczenie nr 3 Obiekty, właściwości, metody. Obiekty standardowe, kolekcje standardowe. Dostęp do komórek arkusza. Operacje na standardowych bibliotekach. CEL ĆWICZENIA.
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoProgramowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Bardziej szczegółowoJęzyk programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/
Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.
Bardziej szczegółowoAplikacje w środowisku VBA. Visual Basic for Aplications
Aplikacje w środowisku VBA Visual Basic for Aplications Podstawowe informacje o VBA Visual Basic for Aplications, w skrócie VBA, to język programowania rozwijany przez Microsoft, którego zastosowanie pozwala
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Bardziej szczegółowoWydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe
Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 2 Programowanie 1 Program wykładu Typy danych Wyrażenia Operatory 2 VBA Visual Basic dla aplikacji (VBA) firmy Microsoft jest językiem
Bardziej szczegółowoTablice. Jones Stygar na tropie zmiennych
Tablice Jones Stygar na tropie zmiennych Czym jest tablica? Obecnie praktycznie wszystkie języki programowania obsługują tablice. W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg (lub wektor),
Bardziej szczegółowoLibreOffice Calc VBA
LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć
Bardziej szczegółowoModelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
Bardziej szczegółowoProgram szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS
Program szkoleniowy Microsoft Excel VBA Poziom Podstawowy 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS 1. Nagrywanie makr Procedura nagrywania makra Nadanie odpowiedniej nazwy Przypisanie
Bardziej szczegółowoTechnologie informacyjne - wykład 12 -
Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoWykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.
Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Paweł Świątek Agenda 1. Sprawy organizacyjne 2. Zasady zaliczenia 3. Cele kursu 4.
Bardziej szczegółowoJęzyki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoJęzyki i paradygmaty programowania. I. Wprowadzenie
Języki i paradygmaty programowania I. Wprowadzenie O źródłach wykład został przygotowany w ogromnej części w oparciu o serwis http://wazniak.mimuw.edu.pl/ (zgodnie z licencją serwisu) inne źródła: Wikipedia:
Bardziej szczegółowoProgramowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu
Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie
Bardziej szczegółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Bardziej szczegółowoJava EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
Bardziej szczegółowoProgramowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!
Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)
Bardziej szczegółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Bardziej szczegółowoJęzyki skryptowe w programie Plans
Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów
Bardziej szczegółowoTechnologie i usługi internetowe cz. 2
Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoPodstawy programowania. Wprowadzenie
Podstawy programowania Wprowadzenie Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania znaleźć matematyczne
Bardziej szczegółowoDefinicje. Algorytm to:
Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi
Bardziej szczegółowoParadygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Bardziej szczegółowoWprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek
Wprowadzenie Organizacja pracy i środowisko programistyczne Mirosław Ochodek Miroslaw.Ochodek@pwsz.pila.pl Miroslaw.Ochodek@cs.put.poznan.pl Dane kontaktowe Mirosław Ochodek E-mail: Miroslaw.Ochodek@pwsz.pila.pl
Bardziej szczegółowoAlgorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Bardziej szczegółowoProgramowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.
Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to
Bardziej szczegółowoMateriały do laboratorium MS ACCESS BASIC
Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I
Bardziej szczegółowoZakres tematyczny dotyczący podstaw programowania Microsoft Office Excel za pomocą VBA
Zakres tematyczny dotyczący podstaw programowania Microsoft Office Excel za pomocą VBA 1 Rozdział 1 Praca z makropoleceniami Opis: W tym rozdziale kursanci przechodzą przez wprowadzenie do programowania
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoPodstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Bardziej szczegółowoProgramowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści
Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop. 2017 Spis treści O autorach 11 Podziękowania 12 Wprowadzenie 13 CZĘŚĆ I ZACZNIJ PROGRAMOWAĆ JUŻ DZIŚ Godzina 1. Praktyczne
Bardziej szczegółowoProgram szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.
Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY SZKOLENIE JEST DLA OSÓB, KTÓRE: nigdy wcześniej nie programowały lub nie miały styczności z programowaniem od dłuższego czasu,
Bardziej szczegółowoAlgorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoProgram szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY.
Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY SZKOLENIE JEST DLA OSÓB, KTÓRE: chcą podnieść swoje umiejętności pracy w języku VBA do poziomu średniozaawansowanego, nigdy wcześniej
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia
ZP/ITS/11/2012 Załącznik nr 1a do SIWZ ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia Przedmiotem zamówienia jest: Przygotowanie zajęć dydaktycznych w postaci kursów e-learningowych przeznaczonych
Bardziej szczegółowoJęzyki i metodyka programowania
Języki i metodyka programowania www.ee.pw.edu.pl/~slawinsm Dr inż. Maciej Sławiński M.Slawinski@ee.pw.edu.pl GE518l Konsultacje: śr. 13 00-13 45 SK201/GE518l pt. 10 15-11 00 GE518l/SK201 Algorytmika Literatura
Bardziej szczegółowoProgramowanie w języku C++ Podstawowe paradygmaty programowania
Programowanie w języku C++ Podstawowe paradygmaty programowania Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra
Bardziej szczegółowoProgramowanie w języku C++ Grażyna Koba
Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad
Bardziej szczegółowoMyśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
Bardziej szczegółowoPodstawy programowania wykład
Podstawy programowania wykład WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 1 Materiały do wykładu
Bardziej szczegółowoElżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Bardziej szczegółowoWykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Bardziej szczegółowoEXCEL POZIOM EXPERT. Konspekt szczegółowy
Przeznaczenie szkolenia Dla osób, których większość pracy to Excel, potrzebujących zróżnicowanej wiedzy i makr do automatyzacji pracy. Osoby przygotowujące pliki dla innych Wersje aplikacji MS EXCEL 2000,
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoMakropolecenia w Excelu
Makropolecenia w Excelu Trochę teorii Makropolecenie w skrócie nazywane makro ma za zadanie automatyczne wykonanie powtarzających się po sobie określonych czynności. Na przykładzie arkusza kalkulacyjnego
Bardziej szczegółowoTABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.
Złożone typy danych - TABLICE TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych. * Może przechowywać dowolny typ danych, typ
Bardziej szczegółowoKurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoInformatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Bardziej szczegółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Bardziej szczegółowoINFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227
INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn
Bardziej szczegółowoProgramowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++
Programowanie obiektowo zorientowane Mirosław Głowacki Wykład w języku C++ Literatura B. Meyer, Programowanie zorientowane obiektowo, Helion Gliwice, 2005 J. Grębosz, Symfonia C++ Standard, Oficyna Kallimach,
Bardziej szczegółowoPodstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.
Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane
Bardziej szczegółowoRok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -
Nazwa modułu: Programowanie obiektowe Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3 Wydział: Zarządzania Kierunek: Informatyka i Ekonometria Specjalność: - Poziom studiów: Studia I stopnia
Bardziej szczegółowoProgramowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL
Programowanie Pascal - język programowania wysokiego poziomu Klasa 2 Lekcja 9 PASCAL Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoMakra VBA w Excelu dla początkujących
Makra VBA w Excelu dla początkujących Informacje o usłudze Numer usługi 2016/10/04/5015/19680 Cena netto 870,00 zł Cena brutto 1 070,10 zł Cena netto za godzinę 62,14 zł Cena brutto za godzinę 76,43 Usługa
Bardziej szczegółowoHistoria modeli programowania
Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu
Bardziej szczegółowoMaxima i Visual Basic w Excelu
12 marca 2013 Maxima - zapoznanie z programem Maxima to program - system algebry komputerowej. Podstawowa różnica w stosunku do klasycznych programów obliczeniowych jest możliwość wykonywania obliczeń
Bardziej szczegółowoProgramowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
Bardziej szczegółowoInformatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009
Informatyka 1 zajęcia nr 1 Elektrotechnika, semestr II rok akademicki 2008/2009 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Organizacja laboratorium przedmiotu 2. Algorytmy i sposoby ich opisu
Bardziej szczegółowoProgramowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Bardziej szczegółowoTechnologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15
Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:
Bardziej szczegółowoLABORATORIUM 6: ARKUSZ MS EXCEL JAKO BAZA DANYCH
UNIWERSYTET ZIELONOGÓRSKI INSTYTUT INFORMATYKI I ELEKTROTECHNIKI ZAKŁAD INŻYNIERII KOMPUTEROWEJ Przygotował: dr inż. Janusz Jabłoński LABORATORIUM 6: ARKUSZ MS EXCEL JAKO BAZA DANYCH Jeżeli nie jest potrzebna
Bardziej szczegółowoPHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Bardziej szczegółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 1 - wprowadzenie do przedmiotu mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 października 2017 1 / 25 mgr inż. Krzysztof Szwarc Podstawy i
Bardziej szczegółowoWprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu
Bardziej szczegółowoVisual Basic for Applications. Wstęp
Visual Basic for Applications Materiały źródłowe: http://www.vbamania.estrefa.pl 2008-01-14 Wstęp Visual Basic for Applications to język programowania, dołączony do wielu aplikacji. Wspierają go między
Bardziej szczegółowoWprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu
Bardziej szczegółowoProgramowanie komputerowe Computer programming
KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2015/2016 Programowanie komputerowe Computer programming A. USYTUOWANIE MODUŁU
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoMetodyka i Technika Programowania 1
Metodyka i Technika Programowania 1 Pytania zaliczeniowe z wykładu mgr inż. Leszek Ciopiński Wykład I 1. Wprowadzenie 1.1. Programowanie imperatywne polega na: 1.2. Czy w programowaniu imperatywnym programista
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoTechnologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Bardziej szczegółowoJęzyki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski
Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.wroc.pl http://www.tjeleniewski.wstt.edu.pl Treści kształcenia: Paradygmaty
Bardziej szczegółowoPodstawy programowania w języku Visual Basic dla Aplikacji (VBA)
Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest
Bardziej szczegółowoNiezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.
Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą
Bardziej szczegółowoZapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
Bardziej szczegółowoJęzyki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003
Bardziej szczegółowoPodstawy Programowania 2
Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoProgram szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.
Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE SZKOLENIE JEST DLA OSÓB, KTÓRE: znają program Microsoft Excel na poziomie średniozaawansowanym, chcą poznać ogólne zasady tworzenia
Bardziej szczegółowoWYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++
Jednostka prowadząca: Wydział Techniczny Kierunek studiów: Elektronika i telekomunikacja Nazwa przedmiotu: Język programowania C++ Charakter przedmiotu: podstawowy, obowiązkowy Typ studiów: inŝynierskie
Bardziej szczegółowo