Programy, Programiki

Aktualnie na stronie:

1. Przetwarzanie równoległe i rozproszone

2. Metody i aplikacje sztucznej inteligencji

3. Programowanie HTML i XML

4. Struktury danych

5. Programowanie obiektowe

6. Klient i Serwer z własnym protokołem.

7. Sprzęt komputerowy - Wyświetlacz LCD.

8. Benchmark rozproszony.


Przetwarzanie równoległe i rozproszone (C)

1. Program realizujący mnożenie macierzy metodą klasyczną [.c]

2. Program realizujący mnożenie macierzy metodą blokową [.c]

Metody i aplikacje sztucznej inteligencji (MATLAB)

1. Program realizujący uczenie perceptronu prostego dla zadanego zbioru trenującego i kroku uczącego.
Wizualizacja dla przypadku 2- i 3-wymiarowego. [.m]

2. Sterownik rozmyty sterujący automatycznym hamowaniem samochodu (należałoby popracować nad wartościami przedziałów). [.m]

3. Program realizujący uczenie sieci neuronowej z jedną warstwą ukrytą metodą propagacji wstecznej.
Przetestowany na funkcji XOR. [.m]

Programowanie HTML i XML - dokument XML z XSLT i CSS

Plik XML zawiera kilka rekordów opisujących książki lub artykuły:

< books >
  < book >
   < number >520</ number >
   < title >1998 Broad economic policy guidelines</ title >
   < place >Luxembourg</ place >
   < publisher >EUR-OP</ publisher >
   < date >1998</ date >
   < class >10</ class >
   < keys >euro</ keys >
   < keys >polityka plac</ keys >
   < keys >rok 1998</ keys >
   < keys >zatrudnienie</ keys >
   < doc >book</ doc >
    < item >
     < id >CDE.c85-2</ id >
     < place >CIDE</ place >
    </ item >
  </ book >
...
< /book >

Element book opisuję konkretną książkę w drzewie books (książek), natomiast w każdej książce (biblio) może znajdować się nieograniczona liczba egzemplarzy (items) z własnym niepowtarzalnym numerem inwentarza oraz miejscem "przebywania".

Tak przygotowany dokument zawiera odwołanie do arkusza stylów XSLT:

<?xml-stylesheet type="text/xsl" href="wyglad.xsl"?>

gdzie zostało ustalone rozmieszczenie elementów na stronie, w wyniku czego otrzymujemy tabelke z kolejnymi rekordami:

1998 Broad economic policy guidelines

Numer inw.

Miejsce wyd.

Wydawca

Data wyd.

Klasyfikacja UE

Slowa kluczowe

Rodzaj dokumentu

520

Luxembourg

EUR-OP

1998

10

euro,
polityka plac,
rok 1998,
zatrudnienie,

book

CDE.c85-2 - CIDE

Austria ; Dania ; Finlandia ; Irlandia ; Szwecja ; Wielka Brytania


Struktury danych - programy napisane na laboratoriach (C++)

1. Uporządkuj kolejkę Q mając do dyspozycji stos TS i kilka zmiennych. [.cpp]

2. Należy napisać program, który wyznaczy część wspólną 2 zbiorów (A i B), kazdy z tych zbiorów zapisany jest w liście
(wypelniamy elementami). Elementy wspólne niech bedą umieszczone w liście 3. [.cpp]

3. Napisz program który zbuduje drzewo dla wyrażenia przedstawionego w notacji prefiksowej, obliczy wartość tego wyrażenia przechodząc przez utworzone wcześniej drzewo. [.cpp]

4. Napisz program, który będzie realizował funkcję na strukturze kopcowej zorientowanego na minimum. [.cpp]

Przyklad z cwiczen:
Podaj wartosci kopca odzielone przecinkami!:
10,12,18,2,5,34,8,30,22,6,40,9,28,
[10][12][18][2][5][34][8][30][22][6][40][9][28]

Wynik:

[L0=2]L>[L1=5]L>[L2=12]L>[L3=30]R>[L3=22]R>[L2=6]L>[L3=10]R>[L3=40]R>[L1=8]L>[L2=9]L>[L3=34]R>[L3=28]R>[L2=18]

Ostatni element o wartosci:28

Ktory element usunac (wartosc tego elementu -jesli takie same pierwszy znaleziony zostanie usuniety):
6

Wynik:

[L0=2]L>[L1=5]L>[L2=12]L>[L3=30]R>[L3=22]R>[L2=10]L>[L3=28]R>[L3=40]R>[L1=8]L>[L2=9]L>[L3=34]R>[L2=18]

5. Napisz program, który obliczy minimalne drzewo spinające na podstawie grafu. [.cpp]

Przyklad z laboratoriow:
Podaj ilosc wierzcholkow: 6
Podaj wezly: 1,2=3;1,6=2;1,5=1;1,3=3;3,5=4;3,4=1;4,2=5;4,6=3;5,6=2;2,6=1;
Wczytane dane:
[0][3][3][0][1][2]
[3][0][0][5][0][1]
[3][0][0][1][4][0]
[0][5][1][0][0][3]
[1][0][4][0][0][2]
[2][1][0][3][2][0]
Wynik:
1,5,6,2,4,3,

Programowanie obiektowe - programy napisane na laboratoriach (C#)

1. Laboratorium 1 - Podstawy obiektowości [.cs]

2. Laboratorium 2 - Podstawy obiektowości II [.cs]

3. Laboratorium 3 - Tablice [.cs]

4. Laboratorium 4 - Kolekcje i interfejsy [.cs]

5. Laboratorium 5 - Dziedziczenie [.cs]

 

Protokoły w sieciach komputerowych i telekomunikacyjnych - Projekt

Klient i Serwer z własnym protokołem

Wygląd programu klienckiego

Wygląd serwera obsługującego klienta

 

Ogólna zasada działania.

Na początku zostaje uruchomiony serwer, który czeka na klienta. Po wysłaniu ramki "HELO" przez klienta następuje nawiązanie połączenia (serwer dopisuje klienta do listy).W kolejnym etapie serwer czeka na żądania klienta, wysyłając o ustalony czas ramkę PING, aby zweryfikować czy klient dalej "żyję". Jeśli klient nie odpowie na ramkę serwer usuwa z listy tego klienta. Klient może wysłać komendę tekstową lub dane binarne, z tym, że dane binarne muszą być poprzedzone komendą tekstową, aby serwer wiedział, po co mu dane binarne. Natomiast serwer po wydaniu komendy przez klienta może od razu wysłać dane binarne jak to jest w powyższym przykładzie. Po zakończeniu współpracy klienta z serwerem, klient wysyła ramkę rozłączeniową. Na co serwer usuwa go z listy i czeka na kolejnego klienta. W przypadku większych danych są dzielone na osobne ramki (max. 999 ramek).

Narzędzia.

Program klient i serwer został wykonany w Borland Builder 6 z użyciem standardowym komponentów.

 

Sprzęt Komputerowy - Projekt

Wyświetlacz LCD

 

Wygląd programu obsługującego wyświetlacz LCD zgodny z HD44780

 

Projekt napisany w Borlandzie Builderze 6, jego kod źródłowy przedstawia się następująco:

LCdShow.cpp

 

Zasada działania LCDShow

Program jest bardzo prosty, do komunikacji z wyświetlaczem potrzebuje pakietu PortIO, dzięki niemu odwołuje się bezpośrednio pod Windowsem XP do portu. Program umożliwia wyświetlenie aktualnej daty (aktualizowanej w trybie rzeczywistym) oraz wybranego tekstu na wyświetlaczu LCD.

Sprzęt Komputerowy - Projekt

Benchmark Rozproszony   

Wygląd serwera zbierającego fraktale z klientów:

Wygląd klienta tworzącego i wysyłającego fraktal:

 

Projekt napisany w Borlandzie Builderze 6, jego kod źródłowy przedstawia się następująco:

Tester.cpp

  • TAboutBox
  • TMainForm
  • TOKBottomDlg
  • TPerformanceGraph
  • TServerThread
  • Klient.cpp

    Zasada działania benchmarka

    Zasada działania całego benchmarka jest bardzo prosta, każdy klient komunikuje się z wątkami komunikacyjnymi, a nie bezpośrednio z serwerem co odciąża serwer od odbierania danych (które np. przy fraktalu 800x600 zajmują 800x600x3+9 bajtów) i innych "mniej ważnych problemów". Serwer zajmuje się jedynie odbieraniem od wątków informacji o nowych klientach, przesłanym fraktalu, oraz wysyłaniem kolejnych fraktali do obliczenia przez klienty. W każdej chwili może przyłączyć się nowy klient do listy.. Natomiast w tej wersji nie przewidziano możliwości bezkonfliktowej rezygnacji klienta. Nie został zaimplementowany mechanizm radzenia sobie w sytuacji braku odpowiedzi klienta na fraktala, sewer będzie czekał aż do skutku tzn. do odberania wszystkich "zleconych" klientom fraktali.

    Wątki komunikacyjne rozpoznają co mają "robić" po zweryfikowaniu pierwszego otrzymanego bajta z klienta i tak:

    "N" - zgłoszenie się nowego klienta

    "F" - klient wysyła fraktala

    "Q" - klient zgłasza żądanie zdjęcia z listy dostępnych klientów (odłączanie)

     

     

    Wątki komunikacyjne wiedzą ile mają odebrać danych dzięki przesyłaniu na początku string'a o długości 20 znaków zawierającego długość danych do odebrania w bajtach.

    Klienty wysyłają fraktale w formacie: pierwsze 4 bajty zawierają w stringu numer klatki (tak więc max'ymalnie 9999 klatek), kolejne 4 bajty zawierają w stringu czas obliczeń fraktala (max 9999 milliseconds), a kolejne bajty zawierają już wygląd fraktala w formacie RGB.