plikdownload |
Zamieszczone poniżej programy powstawały z potrzeby poszukiwania pewnych rozwiązań programistycznych w języku VBA. Wielokrotnie znajdowały one potem zastosowanie w mojej pracy zawodowej. Niektóre programy napisane były jako narzędzia np. do obliczeń danych dla wykonania modeli w języku VRML. Oczywiście prezentuję tu tylko najciekawsze, najbardziej efektowne rozwiązania. Należy zaznaczyć, iż kody zaprezentowanych programów powstawały często jako wynik poszukiwań analogicznych rozwiązań w internecie i literaturze. Nie wnoszę więc zastrzeżeń co do ich wykorzystania, wręcz przeciwnie, będę wielce usatysfakcjonowany jeżeli będą one inspiracją zwłaszcza dla początkujących programistów w języku Visual Basic for Application. ![]() |
plik - nowa wersjadownload |
![]() |
plik - pierwsza wersjadownload |
Zacząłem od przypomnieniu sobie i zrozumieniu kodu programu, okazało się to nie takie łatwe. Uświadomiłem sobie teraz jaką wiedzę informatyczną i jaki "lotny" umysł miałem 15 lat temu. Temat "Skoków konia szachowego" rozwinąłem tworząc dodatkowo dwa arkusze Excela'a i tworząc dla nich dwa zmodyfikowane oprogramowania. Drugi arkusz "plansza 225 pól" jest bardzo podobny do arkusza "plansza 64 pola", ale nie zawiera konwersji tablicy ze współrzędnymi i losuje ze zmiennej liczby możliwości odpowiadających zapisach w tablicy współrzednych. W trzecim arkuszu dodałem procedurą budowy prawie dowolnej wielkości planszy w ramach arkusza . Wszystkie 3 arkusze mają możliwość opóżniania skoków - ułatwia to śledzenie ruchów konia. Wewnątrz programu można odblokować funkcję wyłączenia odświerzania ekranu ("Application.ScreenUpdating = False" - przyspiesza się program) - po skończeniu programu pokaże się gotowy wynik działania. Poniżej widać dwa przykłady planszy ( 225 pól) Na pierwszej koń wykonał 22 skoki - ostatni skok -na czeronym polu; na drugiej koń wykonał 162 skoki - ostatni skok -na czeronym polu. Widać jak od 22 lub 162 kaskadowych losowań różnią się wypełnienia pól na planszy. W katalogu "inne" w katalogu głównym "zjakub Offline" można znaleźć jeszcze inne pliki związzane z koniem szachowym. ![]() |
plik min-maxdownload |
![]() |
|
Do zbadania pozostaje, czy istnieją inne konfiguracje skoków prowadzące do zaprezentowanego wyniku. . ![]() |
|
plikdownload |
W arkuszu zatytułowanym: Zapis_do_pliku, znajduje się przykład "zdejmowania" konturu z podkładowego rysunku. Do pliku tekstowego zapisywane są kolejno współrzedne wszystkich wierzchołków oraz ich ogólna liczba. Plik tekstowy zostanie zapisany w tym samym katalogu co plik excel'owy. ![]() |
plikdownload |
![]() |
plikdownload |
![]() |
plikdownload |
![]() |
plikdownload |
![]() |
plikdownload |
Zupełnie inny jest stopień trudności w pokonaniu trasy od startu do mety dla labiryntu płaskiego i trójwymiarowego. Analiza wzrokowa całej planszy ułatwia znalezienie drogi dzięki wykluczaniu ewidentnych widocznych ślepych zaułków. W prawdziwym labiryncie - zwłaszcza gdy jego korytarze i ściany nie dają szans na jakąkolwiek orientację w przestrzeni - podczas wyboru kolejnych kierunków marszu, o odnalezieniu drogi do mety decyduje wyłącznie los. Konstrukcje planszowych labiryntów zasadniczo są bardzo podobne, różnią się tylko skomplikowaniem i długością ścieżek, a także liczbą kierunków do wyboru z danego miejsca. Ten drugi parametr dla labiryntów tworzonych komputerowo zawiera się zazwyczaj w granicach od 1 do 4 (od 0 do 3). W innych labiryntach może wynosić nawet kilkanaście. Opis programu: Program rozpoczyna działanie od wylosowania i zaznaczenia miejsca startu w górnym wierszu planszy. W następnym kroku wchodzi w główną procedurę losowania kierunku odbarwiania następnej komórki labiryntu. Po wyznaczeniu tego kierunku dokonywane są dwa sprawdzenia: 1) czy w następnym kroku nie wyjdzie się poza planszę lub czy wyczerpało się negatywnym wynikiem sprawdzenie drugie; 2) czy wybrana sąsiednia komórka nie jest już odbarwiona. Negatywny wynik pierwszego sprawdzenia powoduje wejście w pętlę poszukiwania następnej komórki, z której można kontynuować proces budowy labiryntu. Negatywny wynik drugiego sprawdzenia powoduje zmianę kierunku dalszej budowy labiryntu (maksymalnie 4 kierunki wybierane kolejno aż do pozytywnego rezultatu, przeciwnie do kierunku wskazówek zegara), w przypadku negatywnego rezultatu wszystkich tych prób włącza się sprawdzenie pierwsze. Upraszczając nieco dalszy opis można powiedzieć, iż wymienione decyzje powtarzane są dla każdej kolejnej komórki tworzącej labirynt. Wygenerowany labirynt charakteryzuje się tym, że nie posiada enklaw do których nie byłoby dostępu z miejsca startu a to z kolei powoduje, że miejsce mety może być w dowolnym miejsca na obwodzie planszy. Dla uproszczenia programu, po zakończeniu budowy labiryntu autor wstawił procedurę losowania mety tylko w dolnym wierszu planszy. Oczywiście w szczegółach program jest bardziej skomplikowany, dla tych którzy chcieli by prześledzić kolejne kroki jego działania dopisałem odpowiednie komentarze w kodzie programu. Załączam plik Excelowy zawierający opisany labirynt. ![]() |
|
Jest wiosna 2023 roku. Siadam do Calc Open Office by jeszcze raz spróbować poprawić makra uruchamiane w plikach ze statystyką za prąd, gaz i wodę. Open Office ma swój własny język makr i tylko w jakimś niewielkim zakresie rozumie makra Microsoft Excel, zwłaszcza te stare. Zirytowało to mnie i zacząłem szukać starych, bezpłatnych obecnie Microsoftowych edycji EXCEL-a. Znalazłem nawet cały Pakiet Office 2003 jeszcze dodatkowo "Portable" - bez instalacji. Sprawdziłem, i cały pakiet działa bez zarzutu w zakresie, który jest ważny dla mnie (dość niespodziewanie okazało się, że w wersji "portable" brak bibliotek obsługujących komendy tekstowe np. Str()). EXCEL 2003, mój stary dobry VBA z przed 20 lat, w którym wykonałem zawodowo i prywatnie może nawet ponad 1000 programów jest znowu do mojej dyspozycji. Powróciły miłe wspomnienia i chęć do programowania w Visual Basicu w ogóle. Zawsze byłem entuzjastą Bill'a Gates'a, genialnego twórcy, który spowodował że prawdopodobnie miliony zapaleńców programowania takich jak ja, rozpoczęło tę fantastyczną przygodę, poznając prosty, lecz równocześnie bogaty w możliwości język programowania. Teraz, w połowie czerwca 2024 już napisałem w VBA dwa programiki i poprawiłem niektóre stare programy. - Uzupełniam więc podstronę EXCEL'a tą radosną informacją. Pakiet ten zaimplementowałem (bo nie instalowałem) na karcie mikro SD na dodatkowym dysku D:\ mojego komputera, także na pendrivie z kopią moich najważniejszych zbiorów dołożę tam także plik uruchomieniowy "Microsoft Office 2003 Portable PL.exe". Swoją drogą zastanawiam się jak długo środowisko Windows (obecnie już 11) będzie tolerować takie aplikacje? Nachodzi mnie na koniec refleksja dotycząca celowości kontynuacji mych pasji, to co robię bedąc 80-cio latkiem jest bez zewnetrznego zainteresowania kogokolwiek, nikt tego nie doceni, nikt nie zainteresuje się wynikami mich obecnych prac (wcześniejszymi także niebardzo się interesowano). Całe szczęście że mój genom zawiera gen popędu do aktywnego szukania dla siebie różnych "problemów" do rozwiązania: w malarstwie, elektronice (obecnie ARDUINO), programowaniu (VB i VBA), technice domowej i w każdej innej dziedzinie, która mi przyjdzie na myśl, zwłaszcza w polityce. Mądrzy ludzie twierdzą, że ćwiczenie umysłu w podeszłym wieku opóźnia nadejscie demencji czy sklerozy - i to mnie pociesza, choć doświadczam pomału ubytków pamięci. Szczęściem, że jest internet i można się wspomóc wiedzą zawartą w sieci lub w chmurze. Doświadczam obecnie wielkiej pomocy z sieci, programując właśnie w VBA. Wystarczy wpisać jakieś hasło czy zwrot skojarzony z potzebnym słowem języka programu lub działaniem potrzebnej funkcji - i naogół po kilku próbach znajduje się to co trzeba. Oprócz programów pisanych w VBA-Excel powstawały także programy napisane w VB3, VB5, a ostatnio w VB6. W czasie pracy z dwoma pierwszymi wersjami Visual Basic miałem dostęp do kompilatora kodu, więc niektóre, zamieszczone poniżej programy są w formie wykonywalnej w środowisku Windows. Od chwili pojawienia się VB6 mam dostęp tylko do wersji Working Model Edition. Jest to wersja darmowa ale bez możliwości kompilacji kodu. Zasadniczo skompilowany kod pod postacią pliku *.exe korzysta po uruchomieniu z bibliotek systemowych środowiska Windows. Są jednak programy napisane z wykorzystaniem bibliotek innych niż systemowe. W VB są to biblioteki typu *.dll lub *.ocx. Często prócz wymienionych bibliotek program musi mieć także pliki graficzne(obrazki), pliki dźwiękowe, pliki tekstowe itp. W środowisku programistycznym VB6 (przed kompilacją) powstają następujące pliki: - *.vbp plik zawierający podstawowe dane projektu programu; - *.frm plik zawierający dane o formie (jest to interfejs widoczny po uruchomieniu programu); - *.vbw plik organizujący przestrzeń edytora programu VB; - *.bas plik zawierający moduły z kodem nie związanym bezpośrednio z formą; - *.frx plik zawierający dane w formacie tekstowym, najczęściej objaśnienia typu Help. |
|
test ang. - download |
Program powstał przy okazji któregoś tam podejścia do nauki angielskiego. Działanie programu polega na losowaniu słowa angielskiego i do niego losowania 3 słów polskich w tym jednego prawidłowego. Program po uruchomieniu pliku "Test angielskiego.exe" instaluje się w formie ukrytej w tzw. traju, jednocześnie
ukazuje się pierwszy raz okienko z testem. Po wyborze prawidłowej
odpowiedzi okienko testu zostaje ukryte i pojawi
się ponownie z nowym losowym kompletem słów po pewnym czasie (repetycja
min - max) ustawianym w oknie opcji.
Program zlicza ilość wszystkich odpowiedzi i ilość odpowiedzi dobrych.
Klawiszem KONIEC odinstalujemy program
i jego ikonka znika z trayu. Słowa angielskie i polskie przechowywane
są w pliku tekstowym "SLOWNIK.TXT".
W oknie opcji, do tego słownika można dodać parę słów i zaakceptować,
można także usunąć parę słów - wybierając
słowo angielskie i akceptując tę decyzję. Ogólna akceptacja zmian
dokonuje sie klawiszem Zapisać.
W pierwszym wierszu w pliku ze słownikiem zapisane są kolejno : liczba
odpowiedzi dobrych, złych,
najkrótszy czas repetycji, najdłuższy czas repetycji. Można dokonać
ręcznej edycji pliku zachowując
jednak format zapisu danych (także spacji).W 2018 roku program poprawiłem w zakresie odtwarzania dźwięków i zmodyfikowałem, wyswietlając w oknie 'Opcje' informacje o liczbie słów w słowniku. ![]() |
bingo - download |
Gra w bingo dość popularna kilka lat temu sprowokowała mnie do napisania programu pozwalającemu grać w tę grę na komputerze z zachowaniem jej podstawowych zasad. Oczywiście głównie interesowały mnie rozwiązania informatyczne, realizujące funkcje oryginalnej gry. W tym programie istotnymi zagadnieniami do rozwiązania były losowania i prezentacja wyników także w nieoczekiwanych (losowych) miejscach. Rozwiązanie problemu odmierzania czasu losowania numeru oraz czasu na reakcję osoby grającej było także ciekawym zadaniem. Czas pomiędzy kolejnymi losowaniami numeru jest regulowany, co zmienia stopień trudności dla grającego. Dla jego wygody jest także opcja drukowania tabeli bingo na arkuszu papieru i tam zaznaczanie wylosowanego numeru. Po lewej stronie od obrazka z interfejsem gry jest odsyłacz do skompresowanego pliku zawierającego grę w postaci wykonywalnej jak też kodu VB. ![]() |
trójkąt - download |
Programy zamieszczone poniżej to nie skompilowane pliki, które mogą być uruchomione w środowisku programistycznym VB. Efekty pracy programów uruchomionych w tym środowisku są identyczne jak po uruchomieniu plików wykonywalnych w środowisku Windows. Poniżej widoczny jest interfejs programu do obliczeń wszystkich możliwych danych geometrycznych związanych z dowolnie zdefiniowanym trójkątem. Wypełniając odpowiednio dane wejściowe uzyskuje się wiele pochodnych danych, widocznych w okienkach obok po prawej stronie. Jak wiadomo trójkąt można jednoznacznie zdefiniować zadając: a) bok i dwa kąty, b) dwa boki i kąt, c) trzy boki. Dla przypadku: dwa boki i kąt mogą być dwa rozwiązania np. dla danych A=30, a=130, b=200. Program skaluje wartości liczbowe boków, tak aby rysunek zmiescił sie w oknie graficznym. Uzyskany rysunek można wydrukować. ![]() |
środek -
download
|
Program Środek ciężkości jest bliźniaczym rozwinięciem programu napisanego w VBA. Program skanuje punkty(wierzchołki) z aktualnej pozycji kursora myszki, poprzez kliknięcie lewym przyciskiem. Visual Basic pozwolił na wzbogacenie kodu programu o takie możliwości jak: dodanie lub usuniecie punktu wierzchołkowego, numerowanie wierzchołków, zapisywanie i odczyt danych do/z pamięci w formatach: tekstowym lub binarnym, podłożenie tła w postaci jakiejś grafiki. Program należałoby rozbudować o funkcję drukowania. ![]() |
grafika - download
|
Już w czasach komputera Atari i Commodere bardzo fascynowała mnie grafika komputerowa. Kontynuacją tamtych zainteresowań jest program rysujący figury geometryczne na podstawie wzorów funkcji geometrycznych na płaszczyźnie. Oczywiście parametry funkcji są regulowane a wynik działania w postaci rysunku można kopiować do schowka systemowego aby edytować w jakimś edytorze a następnie drukować. ![]() |
optymalizacja -
download
|
Program widoczny poniżej jest kolejną, nieco inną wersją programów z serii "punkt ciężkości". Różni się od poprzednich tym, że każdemu skanowanemu z planszy graficznej punktowi można dodać "wagę" aby zmienić jego wartość w stosunku do pozostałych punktów. Przedstawiony program posiada następującą interpretację: na planie miejscowości należy wybudować szkołę w optymalnym miejscu przy założeniu, że istnieją aktualne dane i prognozy co do liczby i miejsc zamieszkiwania dzieci w tej miejscowości. ![]() |
smocze - download
|
Fizyk John E. Heighway jest autorem algorytmu, który można opisać jak grafikę fraktalową. Według tego algorytmu powielana jest pewna założona sekwencja kroków rysujących odcinek tylko w lewo lub prawo Pierwszy krok w budowaniu "smoka" to narysowanie kąta prostego. Jest to smok pierwszego rzędu. Następnie każde z ramin tego kąta zastępuje się nowym kątem prostym o odpowiednio krótszych ramionach i odpowiednio skierowanym. Tak powstaje smok drugiego rzędu. Rysunek poniżej z lewej pokazuje jak można kontynuować ten proces. W kodzie programu posłużyłem się symbolami L-lewo, P-prawo dla łatwiejszego definiowania podstawowego wzoru do powielania. Program VB umożliwia rysowanie "smoczych figur" przy zmiennych parametrach: - stopień powielania umożliwia zmianę rzędu powielania w granicach od 1 do 11 ... 12; - długość odcinka podstawowego z którego powstaje "smok"; - wzór powielany , można eksperymentować np. PLLP, PLLPP, PLLPPL (duże litery). Gdyby rysunek znikał poza krawędź pola, suwakami można go wycentrować. Gotowy rysunek można wydrukować. ![]() ![]() Animacja widoczna poniżej obrazuje w jaki sposób tworzą się w kolejnych krokach "smocze figury" ![]() |
Szyfrowanie - download
|
![]() Diagram działania
programu szyfrującego.
![]() Program napisany w jezyku Visual Basic 6.0 we wrześniu 2017r. ASCII (czyt. aski, skrót od ang. American Standard Code for Information Interchange) - siedmiobitowy system kodowania znaków, używany we współczesnych komputerach oraz sieciach komputerowych. W systemie tym najprościej mówiąc, każdemu znakowi alfabetu przypisana jest liczba np. a - 97, b - 98, A - 65 itp. Na rysunku powyżej widać fragment tabeli z kodami wybranych liter. Szyfrowane mogą być pliki w formacie tekstowym głównie *.txt, ale także *.ini, *.log i.t.p. Szyfrowany może być również tekst wpisywany 'ręcznie', lub wklejany ze schowka. Plik zaszyfrowany lub odszyfrowany zapisywane są odpowiednio w formatach "....... 'data' 'czas'_SZ.txt" lub "....... 'data' 'czas'_DESZ.txt" w tym samym katalogu co plik z przed konwersją. 4 - cyfrowy klucz (PIN) do szyfrowania i taki sam do deszyfrowania musi być wpisany w pojawiające się okienko. Kod do szyfrowania i deszyfrowania "zaszyty" jest w programie "SzyfrDeszyfr.exe", który muszą posiadać nadawca i odbiorca. Tekst zaszyfrowany z Okna 2, podobnie jak odszyfrowany z Okna 1, kopiowane są do schowka systemowego komputera Obok jest link do pobrania pliku "SzyfrDeszyfr.exe" wraz z programem źródłowym Visual Basic 6.0. |
Pralka - download
|
![]() Program napisany w jezyku Visual Basic 6.0 w listopadzie 2021r. Pod koniec października 2021r. uszkodził się programator w naszej pralce Marki "Polar". Nie pozostało nic innego jak tylko zakupić nową pralkę, tym razem marki "SAMSUNG". Jest ona wyposażona raczej w podstawowe oprogramowanie - bez bajerów. Jej funkcjonalność zainspirowała mnie do napisania programu symulujacego jej działanie. Proces tworzenia animacji rozpoczął się od wygenerowania w edytorze tekstowym OpenOffice 6 obrazków - w oparciu o jeden z symboli (wspólnie z programem ScreenToGif), który był obracany co 30 stopni. Obrazki w odpowiedniej kolejności zostały wczytane do programu Gif Animator (od 1 do 6 - obrót w prawo; od 6 do 1 - obrót w lewo), w programie tym można było ustawić szybkość animacji - np. wirowanie prania: animacja znacznie przyśpieszona. Finalnie powstały 3 animacje: pranie w prawo, pranie w lewo, wirowanie w prawo. |
![]() Wymienione 3 animacje wykorzystane zostały podczas pisania kodu Visual Basic'a. Oprócz standardowych komponentów umieszczonych na głównej Formie programu, zainstalowane zostały 3 dodatkowe: Timer(), AniGif.ocx, Sleep() - odpowiedzialne za animację. Trudno w tym miejscu szczegółowo opisywać kod programu i jego funkcjonalność - dla zainteresowanych zamieszczam obok skompresowany plik "PRALKA.zip" z zestawem niezbędnych plików przed kompilacją, oraz wykonywalny plik "Pralka.exe", uzyskany po kompilacji. Sam kod - jako dokument tekstowy - zawarty jest w pliku "pralka_próba.frm" |
|
VB6 portable - download
|
Na koniec zamieszczam zzipowany katalog ze środowiskiem programistycznym VB6. Oprogramowanie jest w formacie "portable" - nie wymaga instalowania. Posiada kompilator kodu VB6 - można zatem otrzymać plik wykonywalny typu "exe". Po rozpakowaniu koniecznie przeczytać plik "Ważne Czytaj.txt" ! |