paź 28

Sortowanie jest jednym z poważnych problemów programowania w każdym języku. Obecnie średnio najwydajniejszym algorytmem sortującym jest Quicksort.
Na początek zajmiemy się jednak stworzeniem własnego algorytmu. Zasada jego działania jest prosta. Program bierze każdy element tabeli po kolei i porównuje go z każdym innym elementem w tabeli. Jeśli napotka jakikolwiek większy element niż znajdujący się na końcu tablicy, zamienia go z tym ostatnim.

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  int main() {
  6. // deklaracja i wypełnienie tablicy
  7. int a[] = {9, 412, 22, 623, 666, 425, 248589789, 124, 4572, 148589789}; // 10 elementów
  8.  
  9. //sortowanie
  10. //zaczynamy poszukiwanie największej liczby od końca tablicy, dla każdego elementu wykonujemy czynność napisaną dalej
  11. //q reprezentuje indeks elementu tablicy
  12. for (int q=9; q>0; q–) {
  13. // q jest zmniejszane, ponieważ pomijamy w sprawdzaniu liczby które zostały określone jako największe wcześniej, q reprezentuje miejsce gdzie umieścimy największą wartość tego przebiegu
  14. // zmienna "najwieksza" przechowuje indeks elementu w tablicy z największą dotychczas znalezioną wartością
  15. // zakładamy od początku że jest to 0, by zacząć porównywanie od początku, to właśnie wartość znajdująca się w tym elemencie jest porównywana z każdym następnym
  16. int najwieksza=0;
  17.  
  18. for(int d=0; d<=q; d++) {
  19. // metoda "każda z każdą", dla danego elementu bierzemy każdy inny element tablicy, aż do q, bo w miejsce q ustawimy największą znalezioną wartość
  20. if (a[d]>a[najwieksza]) najwieksza=d;
  21. // jeśli dany element jest większą od obecnego zapisanego jako największy, poprawiamy indeks największej wartości
  22. }
  23. // bo wewnętrznym forze, podmieniamy największą znalezioną wartość z ostatnim elementem danego przebiegu (q)
  24. int s = a[q];
  25. a[q]=a[najwieksza];
  26. a[najwieksza] = s;
  27. }
  28.  
  29. //sprawdzenie
  30. // wyrzucamy na wyjście uporządkowane już elementy tablicy
  31. for(int n=0; i<10; i++) cout<<a[n]<<endl;
  32.  
  33. }

A teraz najszybszy algorytm Quicksort:
Jako argumenty przyjmuje on tablicę, indeks pierwszego elementu oraz  indeks ostatniego elementu:

  1. void quickSort(int arr[], int left, int right) {
  2. int i = left, j = right;
  3. int tmp;
  4. int pivot = arr[(left + right) / 2];
  5.  
  6. /* partition */
  7. while (i <= j) {
  8.   while (arr[i] < pivot) i++;
  9.   while (arr[j] > pivot) j–;
  10.   if (i <= j) {
  11.     tmp = arr[i];
  12.     arr[i] = arr[j];
  13.     arr[j] = tmp;
  14.     i++;
  15.     j–;
  16.   }
  17. };
  18.  
  19. /* recursion */
  20. if (left < j) quickSort(arr, left, j);
  21. if (i < right) quickSort(arr, i, right);
  22. }

Szczegółowy opis algorytmu Quicksort można znaleźć tutaj.

VN:F [1.9.3_1094]
Rating: 7.5/10 (2 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , , ,

paź 20

!@#$%^&*???…..

Prawdziwy Informatyk:

  • nie myśli, on kompiluje
  • nie patrzy, on skanuje
  • nie słucha, on sampluje
  • nie czyta, on przetwarza informacje
  • nie ogląda telewizji, on dygitalizuje obraz
  • nie przegląda się, on zoomuje
  • nie chodzi, on się skrolluje
  • nie uczy się, on uaktualnia dane
  • nie przypomina sobie, on odświerza pamięć
  • nie przepisuje, on kopiuje
  • nie gapi się na dziewczyny, on podziwia tekstury
  • nie wymiotuje, on generuje fraktale
  • nie leczy kaca, on chłodzi procesor

Klasyfikator pojemności butelek wódki w świecie informatyków:

0.1 l – demo
0.25 l – trial version
0.5 l – personal edition
0.7 l – professional edition
1.0 l – network edition
1.75 l – enterprise
3 l – for small business
5 l – corporate edition
Wiadro – home edition
„Klin” – Service pack
Rosół – Recovery tool
Zakąska – plugins
Bimber – shareware
Wynalazki (typu autowidol, denaturat) – open source
Alkohol metylowy – scrensaver (black windows)
Zgon, urwany film – Denial of Service
Wymiociny – Buffer Overflow

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , ,

paź 17

Microsoft w armii…

Firma Microsoft podpisała kontrakt z amerykańskim wojskiem na dostarczenie nowych typów broni.
* * *
01.04.2003, 4:30. Arabia Saudyjska Baza (WWS) USA.

Porucznik John Falkon ostatni raz pomachał ręką towarzyszom i wdrapał się do kabiny. Przepełniało go uczucie dumy. Spotkał go taki honor! Dowiedział się o tym od generała Breaka który powiedział:

- Spotkał was wielki honor poruczniku. Wykonacie pierwszy bojowy lot na supertajnym samolocie F-22M

- M oznacza zmodyfikowany? – starał się sprecyzować Falkon

- M oznacza Microsoft – odpowiedział generał.

- Samolot został w pełni przeprogramowany przez nich. Oni zapewniają, że teraz zadania bojowe może wykonywać każdy idiota. No, ale my na pierwszy raz wyznaczyliśmy pana poruczniku Falkon, jednego z najlepszych pilotów. Będzie pan musiał zniszczyć iracki ośrodek jądrowy.

- Może pan już słać Saddamowi kondolencje sir. – odpowiedział Falkon

Porucznik jak zwykle zapiął pasy i tylko zwrócił uwagę, że oprzyrządowanie różni się od standardowego. Przyrządów ubyło, za to na zwolnionym miejscu pojawiła się dwu-przyciskowa mysz… dlaczegoż to metalowa? Falkon wzruszył ramionami wcisnał przycisk i włączył zasilanie. Na przednim ekranie, na tle widocznego z kabiny nieba z rzadkimi obłoczkami pojawił się napis:

Microsoft Winwars 2003.

Po czym silniki same zaczęły pracować i klapy same się opuściły do położenia startowego.

Gratulujemy zakupu Microsoft Winwars 2003! – zakomunikował ekran – Teraz wojna stanie się jeszcze wygodniejsza, a wasza śmiertelność spadnie!

Porada dnia: Przed lądowaniem należy wysunąć podwozie.

- Orzeł — 1 start zezwalam – rozległo się w hełmofonie.

- Ja jeszcze nie prosiłem zdziwił się Falkon.

- A… Wam nie trzeba… Plug&Play – wyjaśniła kontrola naziemna.

Samolot szybko nabierał prędkości, jak pokazywał wskaźnik i wkrótce był już w powietrzu.

Teraz Winwars 2003 przeprowadzi instalację waszej amunicji na wybrany cel oświadczył system.
Wybrany cel: iracki ośrodek jądrowy.

Falkon z ciekawości kliknął na przycisk „Zmień” i zobaczył listę, na której pomiędzy innymi obiektami na całym świecie figurowały Biały Dom i baza z której dopiero co wyleciał. Falkon szybko nacisnął „Anuluj”.

Wybierzcie typ instalacji :

- Minimalny – na obiekt zostaną zrzucone tylko bomby.

- Normalny – na obiekt zostaną zrzucone bomby i rakiety.

- Pełny – na obiekt zostanie zrzucony cały samolot.

Domyślnie system proponował drugi wariant i Falkon, z zaniepokojeniem stwierdził że lepiej nie będzie się spierać.

- Teraz zostanie przeprowadzone testowanie waszego samolotu. Proszę zamknąć oczy aby uniknąć urazów przy zmianie trybów.

Silniki dziko zaryczały, i oczy Falkona jako żywo omal nie wyskoczyły z orbit od niesamowitego przeciążenia. Zaczęło się prawdziwe piekło: samolotem rzucało na wszystkie strony pikował w dół i wykonywał niesamowite wiraże… W końcu porucznik doszedł do siebie ciemność przed oczami ustąpiła i zobaczył jak latająca po całej kabinie mysz upadła na swoje miejsce.

- Lecicie samolotem Lokheed F-22 z dwoma silnikami Prata-Whitney – z niezmąconym spokojem oświadczył system. – Maksymalna szybkość 1451 mil na godzinę.

Porada dnia: przetaktowanie częstotliwości turbiny ponad zalecaną przez producenta może zakończyć się awarią.

- Do końca instalacji pozostało 0:34:16…

Ten sam dzień, 4:52.

Niebo nad Irakiem, u dołu ekranu powoli przesuwał się pasek z procentami. System w międzyczasie reklamował Winwars dla czołgów, łodzi podwodnych i piechoty morskiej, a także obiecywał wszystkim nabywcom wersji dla samolotów bezpłatny aplet: Kamikaze.

5:21
Zmiana obrazków podziałała na Falkona usypiająco i z półdrzemki wyrwał go dźwięk systemu na radarze pojawiła się zielona kropka.

- Wykryto nowe urządzenie: samolot przeciwnika – radośnie zakomunikował system. Falkon chciał już wykonać standardowy zwrot bojowy ale wtem zauważył przycisk „Usunąć” i kliknął na niego myszką.

- Jesteście pewni że chcecie usunąć samolot przeciwnika? – podejrzliwie zapytał system

– Jakże by nie!

Falkon kliknął „Tak”. Iracki myśliwiec przepadł z radaru. – Tak szybko? – zdziwił się porucznik… – No, no… Microsoft daje popalić! Zaczął z szacunkiem śledzić pojawiające się na ekranie reklamy: Winwars dla pilotów niepełnosprawnych… jednak od tego zajęcia oderwała go rakieta , przelatująca ponad samą kabiną. Falkon z niedowierzaniem obrócił się i zauważył iracki myśliwiec.

- Co żesz, Twoja mać… – wrzasnął Falkon i dopiero wtedy spostrzegł, że z niezauważonej wcześniej ikonki „Kosz” w rogu ekranu sterczy ogon samolotu. Porucznik szybko ze złością kliknął na ikonkę i nacisnął: Opróżnić!

- Czy na pewno chcesz fizycznie zniszczyć samolot przeciwnika? Jego przywrócenie nie będzie możliwe. – uprzedził system.

– TAK! – warknął Falkon wciskając przycisk myszy.

Spod skrzydła wyleciał Sidewinder, pozostawiając biały puszysty ślad, pomknął naprzeciw nieprzyjaciela. Zajaśniał blask wybuchu i gorące odłamki nieprzyjacielskiej maszyny poleciały na ziemię. Jednak do spokoju było daleko. Pikający dźwięk uprzedził o nowym niebezpieczeństwie.

- Wykryto nowe urządzenie: rakieta ziemia powietrze! – stwierdził system i popadł w zamyślenie. Na próżno Falkon klikał myszką widząc jak złowieszcza kropka zbliża się do centrum radaru.
W końcu system wyszedł z zadumy:

- Nie mogę znaleźć sterowników dla tego urządzenia. Włóż dyskietkę ze sterownikami i wciśnij OK aby kontynuować. Z przekleństwem Falkon wcisnął: „Szukać”

- Najbliższy odpowiednik: Ręczne granaty – objaśnił system – Zainstalować?

Falkon szarpnął za dźwignię uchodząc w manewr przeciwrakietowy. Było jednak już zbyt późno. Samolotem szarpnęła eksplozja. Wyprowadziwszy z trudem samolot z nurkowania pilot kliknął na ikonce „System”. W wierszu „lewe skrzydło” świeciły żółtymi kolorami: klapy i lotki. Ale ostatecznie on jeszcze tanio z tego wyszedł. Niebieski pasek pełzł na dół i pokazywał już 82% … u niego były jeszcze szanse na wykonanie zadania… Radar pokazał jeszcze dwa nieprzyjacielskie samoloty, ale one leciały z tyłu Falkona i specjalnie go nie niepokoiły. On wiedział że ta iracka ruina nie jest w stanie dogonić superszybkiego F-22. Jednak samoloty zbliżały się. Falkon z niedowierzaniem spojrzał na szybkościomierz i zrozumiał, że jego szybkość szybko spada.

- Co za diabeł?! – wściekł się porucznik – Silniki przecież w porządku, i paliwa pełno ! Ekran tymczasem zaczął wściekle migać i pojawił się obrazek klepsydry. Wskaźniki zastygały w jednym położeniu, poruszały się krótkimi zrywami, po czym znów zastygały.

- Niewystarczające zasoby wolnej pamięci – spuścił z tonu system – Proszę wyłączyć niepotrzebne zadania.

Falkon wywołał listę zadań, próbując pojąć co oznaczają nazwy typu „winppl” lub „v666apl” i które z nich są niepotrzebne. Tymczasem silniki prawie zamilkły szybkość spadła do krytycznej: jeszcze trochę i samolot runie w dół. Ogłupiałe od takiej taktyki walki powietrznej irackie myśliwce przeleciały obok i zderzyły się tuż przed nosem Falkona. Porucznik tymczasem odszukał w spisie zadań wiersz: „Obserwacja przeciwnika” obok której w nawiasach było napisane: [Nie odpowiada] i wcisnął OK. Ekran radaru zgasł za to samolot zaczął nabierać prędkości. Niebieski pasek pokazywał już 99% … w końcu i 100. Falkon ze zdumieniem patrzył na ziemię pustynia na dole w niczym nie przypominała fotografii satelitarnej irackiego centrum jądrowego. Widać zrozumiał to także system bo w ślad za 100% na pasku pojawiło się 101… potem 102… Przy 106 ekran zrobił się niebieski i pojawił się napis:

Błąd 000000e spowodowany przez moduł VXD0000(0) w module VXD428092(0)

Możliwa normalna kontynuacja lotu.

Możecie wcisnąć Eject aby się katapultować.

Uwaga ! Przy katapultowaniu się stracicie niezachowany samolot.

Falkon jeszcze nie zamierzał się katapultować, tym bardziej że przed nim w końcu pojawiło się irackie centrum jądrowe. Pojąwszy, że nie ma co dalej polegać na Microsofcie porucznik przygotował samolot do bombardowania ręcznego. Sprowadził samolot w dół czekając dopóki celownik systemu nie uchwyci celu. – Jest! Falkon wcisnął przycisk. Coś zazgrzytało i wyskoczył nowy komunikat:

- Luk bombowy wykonał niedozwoloną operację i zostanie zamknięty. Z przekleństwem Falkon pociągnął dźwignię do siebie aby znowu podnieść maszynę w górę. Ale samolot szybko obniżał się. Porucznik panicznie klikał myszką po różnych menu szukając przyczyny.

- Joystick nie odpowiada – przeczytał w końcu. Zrozumiał że przywrócić system do pracy może tylko restart. Falkon wyłączył i włączył zasilanie pulpitu.

- Poprzedni lot był wykonany niewłaściwie. – oświadczył mu system – Wciśnijcie dowolny klawisz w celu sprawdzenia całego samolotu.

- Do diabła !!! – wrzasnął Falkon, naciskając Anuluj. Pojawił się ekran startowy Winwars 2003, system zaczął powoli się ładować. Do ziemi zostało już tylko kilkaset metrów.

- System uruchomiony w trybie awaryjnym. – w końcu pokazał ekran.

- W tym trybie wyłączone są systemy lotu i uzbrojenia. Możecie tylko jeździć po lotnisku.

Zrozumiawszy, że więcej niczego zdążyć nie zrobi, Falkon wcisnął Eject oczekując że teraz kabina zostanie odłączona a uderzenie za chwilę wyrzuci go w powietrze. Lecz zamiast tego na ekranie pojawiło się pytanie:

- Czy jesteście pewni że chcecie się katapultować?

- TAK!!! – z wściekłością zawarczał Falkon patrząc jak maszyna nieubłaganie zbliża się do ziemi.

- Proszę czekać, trwa przygotowywanie do katapultowania… – niewzruszenie poinformował system i zapadł w zamyślenie…

2.04.2003, Bagdad. Pałac Saddam Husseina

W taki sposób żywo relacjonował generał:

- Dzięki bohaterskim wysiłkom naszych pilotów, którzy wdali się w nierówną walkę z amerykańskim agresorem, udało się odsunąć niebezpieczeństwo od ośrodka jądrowego i został zniszczony samolot przeciwnika…

- Tak ????!!! – ciężkie spojrzenie dyktatora wwierciło się w prelegenta, i ten szybko opuścił wzrok.

- W rzeczy samej nierówną. Trzech przeciw jednemu i ich szczęście że nie przeżyli bo on i tak doleciał do ośrodka. Jeśli ośrodkowi nic się nie stało, to tylko miłosierdzie Allaha. – Generał okrył się zimnym potem. Zrozumiał, że teraz jego żadne miłosierdzie Allacha nie uratuje.

- Masz 30 sekund, żeby się usprawiedliwić. – leniwie rzucił Saddam.

- O ! – krzyknął generał wyjmując z opieczętowanego pudełka błękitny CD-ROM – To znaleźliśmy wśród odłamków samolotu. Szczyt amerykańskich technologii komputerowych ! Najnowsze programy sterowania techniką wojskową!

- Masz jeszcze maleńką szansę – dyktator odchylił się w fotelu. – Za trzy tygodnie to powinno być zainstalowane we wszystkich maszynach naszej armii.

- Będzie wykonane, panie prezydencie ! – krzyknął generał.

* * *

Trzy tygodnie i jeden dzień później Irak bezwarunkowo skapitulował…

(Autor nieznany)


„640KB powinno wystarczyć każdemu.”,
Bill Gates,
były prezes firmy Microsoft, 1981

Microsoft w armii…

Firma Microsoft podpisała kontrakt z amerykańskim wojskiem na dostarczenie nowych typów broni.
* * *
01.04.2003, 4:30. Arabia Saudyjska Baza (WWS) USA.

Porucznik John Falkon ostatni raz pomachał ręką towarzyszom i wdrapał się do kabiny. Przepełniało go uczucie dumy. Spotkał go taki honor! Dowiedział się o tym od generała Breaka który powiedział:

- Spotkał was wielki honor poruczniku. Wykonacie pierwszy bojowy lot na supertajnym samolocie F-22M

- M oznacza zmodyfikowany? – starał się sprecyzować Falkon

- M oznacza Microsoft – odpowiedział generał.

- Samolot został w pełni przeprogramowany przez nich. Oni zapewniają, że teraz zadania bojowe może wykonywać każdy idiota. No, ale my na pierwszy raz wyznaczyliśmy pana poruczniku Falkon, jednego z najlepszych pilotów. Będzie pan musiał zniszczyć iracki ośrodek jądrowy.

- Może pan już słać Saddamowi kondolencje sir. – odpowiedział Falkon

Porucznik jak zwykle zapiął pasy i tylko zwrócił uwagę, że oprzyrządowanie różni się od standardowego. Przyrządów ubyło, za to na zwolnionym miejscu pojawiła się dwu-przyciskowa mysz… dlaczegoż to metalowa? Falkon wzruszył ramionami wcisnał przycisk i włączył zasilanie. Na przednim ekranie, na tle widocznego z kabiny nieba z rzadkimi obłoczkami pojawił się napis:

Microsoft Winwars 2003.

Po czym silniki same zaczęły pracować i klapy same się opuściły do położenia startowego.

Gratulujemy zakupu Microsoft Winwars 2003! – zakomunikował ekran – Teraz wojna stanie się jeszcze wygodniejsza, a wasza śmiertelność spadnie!

Porada dnia: Przed lądowaniem należy wysunąć podwozie.

- Orzeł — 1 start zezwalam – rozległo się w hełmofonie.

- Ja jeszcze nie prosiłem zdziwił się Falkon.

- A… Wam nie trzeba… Plug&Play – wyjaśniła kontrola naziemna.

Samolot szybko nabierał prędkości, jak pokazywał wskaźnik i wkrótce był już w powietrzu.

Teraz Winwars 2003 przeprowadzi instalację waszej amunicji na wybrany cel oświadczył system.
Wybrany cel: iracki ośrodek jądrowy.

Falkon z ciekawości kliknął na przycisk „Zmień” i zobaczył listę, na której pomiędzy innymi obiektami na całym świecie figurowały Biały Dom i baza z której dopiero co wyleciał. Falkon szybko nacisnął „Anuluj”.

Wybierzcie typ instalacji :

- Minimalny – na obiekt zostaną zrzucone tylko bomby.

- Normalny – na obiekt zostaną zrzucone bomby i rakiety.

- Pełny – na obiekt zostanie zrzucony cały samolot.

Domyślnie system proponował drugi wariant i Falkon, z zaniepokojeniem stwierdził że lepiej nie będzie się spierać.

- Teraz zostanie przeprowadzone testowanie waszego samolotu. Proszę zamknąć oczy aby uniknąć urazów przy zmianie trybów.

Silniki dziko zaryczały, i oczy Falkona jako żywo omal nie wyskoczyły z orbit od niesamowitego przeciążenia. Zaczęło się prawdziwe piekło: samolotem rzucało na wszystkie strony pikował w dół i wykonywał niesamowite wiraże… W końcu porucznik doszedł do siebie ciemność przed oczami ustąpiła i zobaczył jak latająca po całej kabinie mysz upadła na swoje miejsce.

- Lecicie samolotem Lokheed F-22 z dwoma silnikami Prata-Whitney – z niezmąconym spokojem oświadczył system. – Maksymalna szybkość 1451 mil na godzinę.

Porada dnia: przetaktowanie częstotliwości turbiny ponad zalecaną przez producenta może zakończyć się awarią.

- Do końca instalacji pozostało 0:34:16…

Ten sam dzień, 4:52.

Niebo nad Irakiem, u dołu ekranu powoli przesuwał się pasek z procentami. System w międzyczasie reklamował Wiwars dla czołgów, łodzi podwodnych i piechoty morskiej, a także obiecywał wszystkim nabywcom wersji dla samolotów bezpłatny aplet: Kamikaze
5:21 Zmiana obrazków podziałała na Falkona usypiająco i z półdrzemki wyrwał go dźwięk systemu na radarze pojawiła się zielona kropka.

- Wykryto nowe urządzenie: samolot przeciwnika – radośnie zakomunikował system. Falkon chciał już wykonać standardowy zwrot bojowy ale wtem zauważył przycisk „Usunąć” i kliknął na niego myszką.

- Jesteście pewni że chcecie usunąć samolot przeciwnika? – podejrzliwie zapytał system

– Jakże by nie!

Falkon kliknął „Tak”. Iracki myśliwiec przepadł z radaru. – Tak szybko? – zdziwił się porucznik… – No, no… Microsoft daje popalić! Zaczął z szacunkiem śledzić pojawiające się na ekranie reklamy: Winwars dla pilotów niepełnosprawnych… jednak od tego zajęcia oderwała go rakieta , przelatująca ponad samą kabiną. Falkon z niedowierzaniem obrócił się i zauważył iracki myśliwiec.

- Co żesz, Twoja mać… – wrzasnął Falkon i dopiero wtedy spostrzegł, że z niezauważonej wcześniej ikonki „Kosz” w rogu ekranu sterczy ogon samolotu. Porucznik szybko ze złością kliknął na ikonkę i nacisnął: Opróżnić!

- Czy na pewno chcesz fizycznie zniszczyć samolot przeciwnika? Jego przywrócenie nie będzie możliwe. – uprzedził system.

– TAK! – warknął Falkon wciskając przycisk myszy.

Spod skrzydła wyleciał Sidewinder, pozostawiając biały puszysty ślad, pomknął naprzeciw nieprzyjaciela. Zajaśniał blask wybuchu i gorące odłamki nieprzyjacielskiej maszyny poleciały na ziemię. Jednak do spokoju było daleko. Pikający dźwięk uprzedził o nowym niebezpieczeństwie.

- Wykryto nowe urządzenie: rakieta ziemia powietrze! – stwierdził system i popadł w zamyślenie. Na próżno Falkon klikał myszką widząc jak złowieszcza kropka zbliża się do centrum radaru.
W końcu system wyszedł z zadumy:

- Nie mogę znaleźć sterowników dla tego urządzenia. Włóż dyskietkę ze sterownikami i wciśnij OK aby kontynuować. Z przekleństwem Falkon wcisnął: „Szukać”

- Najbliższy odpowiednik: Ręczne granaty – objaśnił system – Zainstalować?

Falkon szarpnął za dźwignię uchodząc w manewr przeciwrakietowy. Było jednak już zbyt późno. Samolotem szarpnęła eksplozja. Wyprowadziwszy z trudem samolot z nurkowania pilot kliknął na ikonce „System” W wierszu „lewe skrzydło” świeciły żółtymi kolorami: klapy i lotki Ale ostatecznie on jeszcze tanio z tego wyszedł. Niebieski pasek pełzł na dół i pokazywał już 82% … u niego były jeszcze szanse na wykonanie zadania… Radar pokazał jeszcze dwa nieprzyjacielskie samoloty, ale one leciały z tyłu Falkona i specjalnie go nie niepokoiły. On wiedział że ta iracka ruina nie jest w satnie dogonić superszybkiego F-22. Jednak samoloty zbliżały się. Falkon z niedowierzaniem spojrzał na szybkościomierz i zrozumiał, że jego szybkość szybko spada.

- Co za diabeł?! – wściekł się porucznik – Silniki przecież w porządku, i paliwa pełno ! Ekran tymczasem zaczął wściekle migać i pojawił się obrazek klepsydry. Wskaźniki zastygały w jednym położeniu, poruszały się krótkimi zrywami, poczym znów zastygały.

- Niewystarczające zasoby wolnej pamięci – spuścił z tonu system – Proszę wyłączyć niepotrzebne zadania.

Falkon wywołał listę zadań, próbując pojąć co oznaczają nazwy typu „winppl” lub „v666apl” i które z nich są niepotrzebne. Tymczasem silniki prawie zamilkły szybkość spadła do krytycznej: jeszcze trochę i samolot runie w dół. Ogłupiałe od takiej taktyki walki powietrznej irackie myśliwce przeleciały obok i zderzyły się tuż przed nosem Falkona. Porucznik tymczasem odszukał w spisie zadań wiersz: „Obserwacja przeciwnika” obok której w nawiasach było napisane: [Nie odpowiada] i wcisnął OK. Ekran radaru zgasł za to samolot zaczął nabierać prędkości. Niebieski pasek pokazywał już 99% … w końcu i 100. Falkon ze zdumieniem patrzył na ziemię pustynia na dole w niczym nie przypominała fotografii satelitarnej irackiego centrum jądrowego. Widać zrozumiał to także system bo w ślad za 100% na pasku pojawiło się 101… potem 102… Przy 106 ekran zrobił się niebieski i pojawił się napis:

Błąd 000000e spowodowany przez moduł VXD0000(0) w module VXD428092(0)

Możliwa normalna kontynuacja lotu.

Możecie wcisnąć Eject aby się katapultować:

Uwaga ! przy katapultowaniu się stracicie niezachowany samolot.

Falkon jeszcze nie zamierzał się katapultować, tym bardziej że przed nim w końcu pojawiło się irackie centrum jądrowe. Pojąwszy że nie ma co dalej polegać na Microsofcie porucznik przygotował samolot do bombardowania ręcznego. Sprowadził samolot w dół czekając dopóki celownik systemu nie uchwyci celu. – Jest! Falkon wcisnął przycisk. Coś zazgrzytało i wyskoczył nowy komunikat:

- Luk bombowy wykonał niedozwoloną operację i zostanie zamknięty. Z przekleństwem Falkon pociągnął dźwignię do siebie aby znowu podnieść maszynę w górę. Ale samolot szybko obniżał się. Porucznik panicznie klikał myszką po różnych menu szukając przyczyny.

- Joystick nie odpowiada – przeczytał w końcu. Zrozumiał że przywrócić system do pracy może tylko restart. Falkon wyłączył i włączył zasilanie pulpitu.

- Poprzedni lot był wykonany niewłaściwie, – oświadczył mu system. – Wciśnijcie dowolny klawisz w celu sprawdzenia całego samolotu

- Do diabła !!! – wrzasnął Falkon, naciskając Anuluj. Pojawił się ekran startowy Winwars 2003, system zaczął powoli się ładować. Do ziemi zostało już tylko kilkaset metrów.

- System uruchomiony w trybie awaryjnym, – w końcu pokazał ekran.

- W tym trybie wyłączone są systemy lotu i uzbrojenia. Możecie tylko jeździć po lotnisku.

Zrozumiawszy, że więcej niczego zdążyć nie zrobi, Falkon wcisnął Eject oczekując że teraz kabina zostanie odłączona a uderzenie za chwilę wyrzuci go w powietrze. Lecz zamiast tego na ekranie pojawiło się pytanie:

- Czy jesteście pewni że chcecie się katapultować?

- TAK!!! – z wściekłością zawarczał Falkon patrząc jak maszyna nieubłaganie zbliża się do ziemi.

- Proszę czekać trwa przygotowanie do katapultowania – niewzruszenie poinformował system i zapadł w zamyślenie…

2.04.2003, Bagdad. Pałac Saddam Husseina

W taki sposób żywo relacjonował generał:

- Dzięki bohaterskim wysiłkom naszych pilotów, którzy wdali się w nierówną walkę z amerykańskim agresorem, udało się odsunąć niebezpieczeństwo od ośrodka jądrowego i został zniszczony samolot przeciwnika…

- Tak????!!! – ciężkie spojrzenie dyktatora wwierciło się w prelegenta, i ten szybko opuścił wzrok.

- W rzeczy samej nierówną. Trzech przeciw jednemu i ich szczęście że nie przeżyli bo on i tak doleciał do ośrodka. Jeśli ośrodkowi nic się nie stało, to tylko miłosierdzie Allaha. – Generał okrył się zimnym potem. Zrozumiał, że teraz jego żadne miłosierdzie Allacha nie uratuje.

- Masz 30 sekund, żeby się usprawiedliwić – leniwie rzucił Saddam.

- O ! – krzyknął generał wyjmując z opieczętowanego pudełka błękitny cdrom – To znaleźliśmy wśród odłamków samolotu. Szczyt amerykańskich technologii komputerowych ! Najnowsze programy sterowania techniką wojskową!

- Masz jeszcze maleńką szansę – dyktator odchylił się w fotelu. – Za trzy tygodnie to powinno być zainstalowane we wszystkich maszynach naszej armii.

- Będzie wykonane, panie prezydencie! – krzyknął generał.

* * *

Trzy tygodnie i jeden dzień później Irak bezwarunkowo skapitulował…



„640KB powinno wystarczyć każdemu.”,
Bill Gates,
prezes firmy Microsoft, 1981

VN:F [1.9.3_1094]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.3_1094]
Rating: +1 (from 1 vote)

written by Don Daniello \\ tags: ,

paź 11

Udostępniłem polską wersję Hasłomierza pod adresem:
http://dondaniello.com/pwdmeter.

Zawiera on wiele cennych wskazówek dotyczących tworzenia mocnego hasła i jest całkowicie po polsku.

Życzę mocnych haseł !

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , ,

paź 03

Dobre pytanie, jak na przykład napisać kalkulator w C++ ? Zacznijmy od początku :)

Co to C++ ?

C++, inaczej cpp to język programowania wywodzący się z bardzo starego C. Jest to prawie najwydajniejszy język programowania, posiadający zarazem największe możliwości. Oczywiście na przykład pisząc w asemblerze, otrzymamy trochę wydajniejszy program (wykonujący szybciej operacje), jednak napisanie go zajmie dużo więcej czasu. Z drugiej skrajności, pisząc na przykład w Visual Basicu otrzymamy mniej wydajny program, jednak mniej zajmie napisanie go. Obecnie często spotykane jest korzystanie z bibliotek napisanych w języku asemblera w programach napisanych w C++ (dzięki temu wrażliwe instrukcje wykonywane są szybciej). Więcej o asemblerze tutaj. My zajmiemy się C++.

Co potrzeba do pisania programu w C++ ?

Napisany program w C++ (kod źródłowy) należy skompilować specjalnym programem zwanym kompilatorem aby otrzymać plik wynikowy ( program wykonywalny). Po skompilowaniu programu nie można uzyskać jego źródła (kompilacja jest nieodwracalna), dlatego należy pamiętać, by nie zgubić kodu źródłowego, w przeciwnym razie modyfikacja programu będzie niemożliwa i będzie trzeba zaczynać od początku. Kod w C++ jest jednakowy dla wszystkich systemów operacyjnych.

Kompilator

Dobrym kompilatorem, godnym polecenia jest obecnie Code::Blocks. Jest to IDE (Integrated Development Environment -> zintegrowane środowisko programistyczne). Zawiera podstawowe biblioteki, przyjazny, kolorujacy edytor tekstu i kompilatory. Jest bardzo prosty w użyciu. Jego strona domowa to http://codeblocks.org, jest dostępny pod Windowsem, Linuxem i MacOS’em.

Piszemy Kalkulator

Zaprezentuję tutaj gotowy kalkulator, ponieważ najlepiej uczyć się na przykładach. Kod jest „self-explained”, komentarze umieściłem w kodzie, wystarczy przeczytać.

  1. /*————————+
  2. |      Calculatorix       |
  3. |         v 1.0           |
  4. |   by DonDaniello.com    |
  5. +————————*/
  6. // Wszystko co jest umieszczone pomiędzy /* i */ nie jest brane pod uwagę przez kompilator, jest to tzw. komentarz wieloliniowy. Każda linia zaczynająca się od "//" jest komentarzem jednoliniowym (tak jak ta). Jest możliwość wpisania komentarza po kodzie tak jak poniżej. W takim wypadku kod jest brany pod uwagę tylko do "//".
  7.  
  8. #include <iostream> // ładujemy bibliotekę wejścia/wyjścia (input/output)
  9. #include <cmath> // ładujemy bibliotekę matematyczną
  10.  
  11. using namespace std; // używamy standardowych bibliotek do naszych odwołań
  12.  
  13. int main() // podstawowa funkcja programu, obowiązkowa
  14. {
  15. int dzialanie; // deklaracja zmiennej liczby całkowitej o nazwie dzialanie.
  16. double x, y, z; // deklaracja zmiennych liczb długich, niecałkowitych o nazwach x, y i z.
  17. // Zauważ, że prawie każde polecenie kończy się cudzysłowem.
  18.  
  19. cout << "Witaj w Calculatorix v 1.0 !"<<endl<<endl;
  20. // endl to funkcja zwracająca znak końca linii. "cout <<" oznacza przesłanie czegoś do standardowego wyjścia"
  21. while (true) { // pętla zawsze spełniona
  22. // wysyłamy tekst
  23. cout << "Dostepne dzialania:"<<endl;
  24. cout << "1 – Dodawanie"<<endl;
  25. cout << "2 – Odejmowanie"<<endl;
  26. cout << "3 – Mnozenie"<<endl;
  27. cout << "4 – Dzielenie"<<endl;
  28. cout << "5 – Potegowanie"<<endl;
  29. cout << "6 – Pierwiastkowanie"<<endl;
  30. cout << "7 – Wartosc absolutna"<<endl<<endl;
  31. cout << "Wybierz dzialanie do wykonania:";
  32. cin >> dzialanie; // przyjmujemy wybór działania
  33. cout << endl;
  34. switch (dzialanie) { // wybór działania
  35.  
  36. case 1: // jeśli podano jeden to:
  37. cout << "Podaj pierwsza liczbe: "; cin >> x;// cout << endl;
  38. cout << "Podaj druga liczbe: "; cin >> y;// cout << endl;
  39. z = x + y; // liczymy
  40. cout << x << " plus " << y << " rowna sie" << z << "." << endl << endl;
  41. break; // koniec przypadku
  42.  
  43. case 2:
  44. cout << "Podaj pierwsza liczbe: "; cin >> x;// cout << endl;
  45. cout << "Podaj druga liczbe: "; cin >> y;// cout << endl;
  46. z = x – y;
  47. cout << x << " minus " << y << " rowna sie " << z << "." << endl << endl;
  48. break;
  49.  
  50. case 3:
  51. cout << "Podaj pierwszy czynnik: "; cin >> x;// cout << endl;
  52. cout << "Podaj drugi czynnik: "; cin >> y;// cout << endl;
  53. z = x * y;
  54. cout << x << " razy " << y << " rowna sie " << z << "." << endl << endl;
  55. break;
  56.  
  57. case 4:
  58. cout << "Podaj dzielna liczbe: "; cin >> x;// cout << endl;
  59. cout << "Podaj dzielnik liczbe: "; cin >> y;// cout << endl;
  60. z = x / y;
  61. cout << x << " podzielone przez " << y << " rowna sie " << z << "." << endl << endl;
  62. break;
  63.  
  64. case 5:
  65. cout << "Podaj podstawe potegi: "; cin >> x;// cout << endl;
  66. cout << "Podaj wykladnik potegi: "; cin >> y;// cout << endl;
  67. z = pow (x, y);
  68. cout << x << " do potegi " << y << " rowna sie " << z << "." << endl << endl;
  69. break;
  70.  
  71. case 6:
  72. cout << "Podaj podstawe pierwiastka: "; cin >> x;// cout << endl;
  73. z = sqrt (x);
  74. cout << "Pierwiastek z " << y << " wynosi " << z << "." << endl << endl;
  75. break;
  76.  
  77. case 7:
  78. cout << "Podaj podstawe wartosci absolutnej: "; cin >> x;// cout << endl;
  79. z = abs (x);
  80. cout << "Wartosc absolutna liczby " << y << " wynosi " << z << "." << endl << endl;
  81. break;
  82.  
  83. default: cout<<endl<<"Bye Bye !"; return 0; break; // jeśli podano coś innego, wysyłamy tekst i wyłączamy program
  84. }
  85. }
  86. }

Kod bez komentarzy do pobrania tutaj: Calculatorix

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

written by Don Daniello \\ tags: , ,