Języki Programowania. Algorytmy. Wojciech Sobieski

Podobne dokumenty
Algorytmy. Wojciech Sobieski

Schematy blokowe. Algorytmy Marek Pudełko

Poprawność algorytmów

1 Wprowadzenie do algorytmiki

ALGORYTMY I PROGRAMY

Algorytm. Krótka historia algorytmów

Podstawy programowania

Definicje. Algorytm to:

Technologie informacyjne - wykład 12 -

Algorytmika i pseudoprogramowanie

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Algorytm. a programowanie -

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Programowanie w języku Python. Grażyna Koba

Algorytmy i struktury danych

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Sposoby przedstawiania algorytmów

Programowanie i techniki algorytmiczne

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Język ludzki kod maszynowy

Programowanie w języku C++ Grażyna Koba

Zapisywanie algorytmów w języku programowania

Wykład z Technologii Informacyjnych. Piotr Mika

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Podstawy Informatyki. Algorytmy i ich poprawność

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Programowanie komputerów

Algorytmy i schematy blokowe

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Języki programowania zasady ich tworzenia

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

Algorytm. Algorytmy Marek Pudełko

POLITECHNIKA OPOLSKA

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

WYMAGANIA EGZAMINACYJNE Egzamin maturalny z INFORMATYKI

Podstawy i języki programowania

Technologia informacyjna Algorytm Janusz Uriasz

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Definicja algorytmu brzmi:

Podstawy Programowania Algorytmy i programowanie

Algorytmika i programowanie usystematyzowanie wiadomości

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

WYMAGANIA EDUKACYJNE

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wprowadzenie do algorytmiki

Z nowym bitem. Informatyka dla gimnazjum. Część II

Język programowania PASCAL

2.8. Algorytmy, schematy, programy

Rozkład materiału do realizacji informatyki w szkole ponadgimnazjalnej w zakresie rozszerzonym

Algorytm. Krótka historia algorytmów

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

Temat 20. Techniki algorytmiczne

Podstawy Programowania

POLITECHNIKA OPOLSKA

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

ECDL Podstawy programowania Sylabus - wersja 1.0

Zapis algorytmów: schematy blokowe i pseudokod 1

Algorytmy i struktury danych

Programowanie strukturalne

2. Graficzna prezentacja algorytmów

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Szczegółowy program kursów szkoły programowania Halpress

Od programowania wizualnego do tekstowego

Grażyna Koba, Poradnik metodyczny. Informatyka dla gimnazjum Program nauczania wymagania na oceny PRZEDMIOTOWY SYSTEM OCENIANIA KLASA II

Algorytmy od problemu do wyniku

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Praktyka Programowania

Algorytmy, reprezentacja algorytmów.

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Okręgowa Komisja Egzaminacyjna w Krakowie 1

Roman Mocek Zabrze Opracowanie zbiorcze ze źródeł Scholaris i CKE

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Języki i metodyka programowania

1 Podstawy c++ w pigułce.

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

Podstawy algorytmiki Dariusz Piekarz

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Metodyki i techniki programowania

Poprawność semantyczna

Algorytmy. Programowanie Proceduralne 1

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Transkrypt:

Języki Programowania Algorytmy Wojciech Sobieski Olsztyn, 2001-2016

Algorytm Algorytm dokładny przepis podający sposób rozwiązania określonego zadania w skończonej liczbie kroków. Algorytm zapisany przy pomocy języka programowania jest programem. Cechy Algorytmu: posiada dane wejściowe z dobrze zdefiniowanego zbioru musi działać poprawnie dla wszystkich zestawów danych z tego zbioru podaje wynik każdy krok algorytmu jest jednoznacznie określony jest skończony tzn. wynik musi zostać dostarczony po wykonaniu skończonej liczby kroków Algorytmy mogą być numeryczne, operujące na liczbach (np. algorytm Euklidesa), lub nienumeryczne, operujące na obiektach innych niż liczby (np. sortowanie dokumentów).

Iteracja i rekurencja Iteracja metoda matematyczna polegająca na wielokrotnym kolejnym zastosowaniu tego samego algorytmu postępowania, przy czym wynik i-tej operacji stanowi dane wejściowe dla kolejnej, (i+1)-szej operacji. Rekurencja (lub rekursja) w programowaniu i w matematyce odwoływanie się funkcji do samej siebie. Np. poniższa definicja ciągu Fibonacciego jest rekursywna: fib(0) = 0 fib(1) = 1 fib(n) = fib(n - 1) + fib(n - 2), dla n>=2

Obszary stosowania algorytmów Metody numeryczne metody rozwiązywania układów równań (zazwyczaj cząstkowych i nieliniowych), działające na danych dyskretnych i dające rozwiązanie przybliżone. Najważniejsze metody numeryczne: Metoda Różnic Skończonych Metoda Elementów Skończonych Metoda Objętości Skończonych Metoda Elementów Dyskretnych Metoda gazu sieciowego Boltzmanna Metoda Cząstek Znaczonych Metoda Zanurzonego Brzegu f (x) ciągła (kolor czerwony) oraz dyskretna (kolor niebieski) postać funkcji x

Obszary stosowania algorytmów Sortowanie uporządkowanie zbioru danych względem pewnych cech charakterystycznych. Szczególnym przypadkiem jest sortowanie względem wartości każdego elementu, np. sortowanie liczb, słów itp. Przykładowe algorytmy sortowania to: sortowanie bąbelkowe sortowanie przez zliczanie sortowanie przez wstawianie sortowanie przez wybieranie sortowanie przez kopcowanie sortowanie szybkie sortowanie kubełkowe sortowanie grzebieniowe

Obszary stosowania algorytmów Kompresja ogólnie działanie mające na celu zmniejszenie objętości czegoś (czyli zwiększenia gęstości), np. gazu (fizyka). Działaniem przeciwnym do kompresji jest dekompresja. W informatyce chodzi o działania mające na celu zmniejszenie objętości informacyjnej danych, czyli wyrażenie zestawu danych za pomocą mniejszej ilości bitów. Rodzaje kompresji: bezstratna lub stratna uniwersalna (tylko kompresja bezstratna) lub nakierowana na określony typ danych

Obszary stosowania algorytmów Kryptografia nauka zajmująca się układaniem szyfrów. Wyróżniane są dwa główne nurty kryptografii: kryptografia symetryczna to taki rodzaj szyfrowania, w którym tekst jawny ulega przekształceniu na tekst zaszyfrowany za pomocą pewnego klucza, a do odszyfrowania jest niezbędna znajomość tego samego klucza. kryptografia asymetryczna to rodzaj kryptografii, w którym używa się zestawów dwu lub więcej powiązanych ze sobą kluczy, umożliwiających wykonywanie różnych czynności kryptograficznych.

Obszary stosowania algorytmów Sztuczna inteligencja technologia i kierunek badań informatycznych i psychologicznych. Jego zadaniem jest konstruowanie maszyn, o których działaniu dałoby się powiedzieć, że są podobne do ludzkich przejawów inteligencji, jak to zostało zdefiniowane przez Johna McCarthy'ego, który w 1955 r. zaproponował ten termin. Dwa podejścia do sztucznej inteligencji: tworzenie całościowych modeli matematycznych analizowanych problemów i implementowanie ich w formie programów komputerowych, mających realizować konkretne cele tworzenia struktur i programów samouczących się, takich jak modele sieci neuronowych oraz opracowywania procedur rozwiązywania problemów poprzez uczenie takich programów, a następnie uzyskiwanie od nich odpowiedzi na pytania

Zapis algorytmów Algorytm opisany obrazkami występuje szeroko w instrukcjach opisujących sposób montażu zabawek dla dzieci (np. klocki LEGO), modeli do sklejania, instrukcjach obsługi (np. telewizora, magnetowidu, lodówki).

Zapis algorytmów Kruche ciasteczka Składniki: - 1 kg mąki, - 1 kostka masła, - 5 jajek( żółtka od białka oddzielamy), - 1,5 szklanki cukru, - śmietana, - łyżeczka proszku do pieczenia. Algorytm opisany słownie występuje we wszystkich instrukcjach obsługi, sprzętu domowego, aparatury naukowej, na lekcjach wielu przedmiotów w postaci opisu doświadczenia i w informatyce jako element poprzedzający właściwe programowanie. Jak przyrządzić? Żółtka ukręcić z cukrem. Następnie zagnieść wszystkie składniki na stolnicy- z wyjątkiem białek. Dodać tyle śmietany ile trzeba, by ciasto się połączyło( trzeba się przy tym trochę nagnieść i namęczyć ale warto! Ewentualnie jak nie ma śmietany można dodać mlekateż się uda ). Ciasto rozwałkować na stolnicy i wykrawać ciasteczka. Można je posmarować białkiem, które zostało z jajek. Piec na złoty kolor, niezbyt długo- kilka minut - inaczej będą twarde. Piekarnik powinien mieć ok. 200 stopni C.

Zapis algorytmów Algorytm opisany schematem blokowym występuje głównie w nauczaniu elementów informatyki i służy do graficznego prezentowania i rozwiązywania problemu, powinien być poprzedzony opisem słownym. Schemat blokowy stanowi doskonałą bazę do stworzenie programu, w łatwy do zrozumienia sposób może powstać taki schemat. Graficznie ukazuje to co w programie jest najważniejsze, pokazuje zależności między kolejnymi poleceniami.

Zapis algorytmów Algorytm opisany wzorem matematycznym podstawowa forma zapisu algorytmów bazowych dla programów obliczeniowych. równanie falowe: j+1 j j-1 i-1 i i+1 2 U x, y, t x 2 2 U x, y,t = 1 U x, y, t y 2 c 2 2 t 2 2 U x = 2 x 5a U = U n i 1, j 2 U n n i, j U i 1, j x 2 2 U y 2 = y 5a U = U i, j 1 n analog różnicowy: n 2 U i, j y 2 n U i, j 1 Analog 5-cio punktowy: wersja A.

Zapis algorytmów Algorytm opisany językiem programowania (program) stanowi realizację projektu w konkretnym języku programowana, powinien być poprzedzony opisem słownym i schematem blokowym.

Diagramy Diagram (schemat blokowy) sposób przedstawiania algorytmów za pomocą odpowiednio opisanych figur geometrycznych oraz łączących je linii. Zasadniczą zaletą schematów blokowych jest to, że graficznie prezentują one działanie programu, zarówno od strony występujących w nim działań, jak i ich kolejności.

Diagramy Operacje na pamięci operacje, w wyniku których ulega zmianie wartość, postać lub miejsce zapisu danych w pamięci operacyjnej komputera. Jeśli kilka operacji tworzy logiczną całość, to wszystkie one mogą być umieszczone w jednej skrzynce. zaleca się jednak umieszczania tam zbyt dużej ilości operacji - nawet wtedy, kiedy są one powiązane ze sobą bezpośrednio gdyż może to zmniejszyć czytelność schematu. Operacje I/O operacje wprowadzanie i wyprowadzanie danych do/z pamięci operacyjnej komputera. Operacje warunkowe operacje prowadzące zawsze do konieczności rozważenia dwóch dróg: jednej (TAK) kiedy rozpatrywany warunek jest spełniony i drugiej, kiedy warunek nie jest spełniony (NIE). Proces zewnętrzny proces określony poza programem i z tego powodu nie wymagający zdefiniowania w rozpatrywanym programie (podprogram).

Diagramy Kierunek określa kierunek przepływu danych lub kolejność wykonywania działań. Łącznik stronicowy wskazuje wejście lub wyjście z wyodrębnionych fragmentów schematu rozmieszczonych na tych samych stronach (arkuszach papieru). Łącznik międzystronicowy wskazuje wejście lub wyjście z wyodrębnionych fragmentów schematu rozmieszczonych na różnych stronach (arkuszach papieru). Blok graniczny oznacza miejsca rozpoczęcia, zakończenie lub przerwania działania programu. Komentarz służy do podawania dodatkowych informacji, niezbędnych do zrozumienia działania algorytmu.

Diagramy Zasady tworzenia diagramów: schemat powinien być prosty i czytelny. W razie złożonego rozwiązania schemat należy podzielić na mniejsze części i zamieścić na osobnych arkuszach. w blokach niezbędne jest komentowanie zarówno zaprojektowanej operacji, jak i kolejności ich wykonania. Komentarze powinny być krótkie, lecz dokładnie wyjaśniające znaczenie opisywanych elementów. należy unikać rysowania przecinających się ścieżek sterowania. W razie konieczności lepiej jest wprowadzić odpowiedni łącznik, który pozwoli wyeliminować niektóre z linii. powinno się unikać zapisywania wprowadzanych operacji za pomocą instrukcji języków programowania. należy dokładnie numerować arkusze, na których został narysowany schemat blokowy.

Diagramy Zasady tworzenia diagramów, cd.: trzeba liczyć się z możliwością wystąpienia konieczności poprawek do schematu, dlatego wskazane jest tak tworzyć arkusze, aby możliwe było naniesienie poprawek bez konieczności przerysowania całego schematu. należy unikać zarówno zbyt dużej szczegółowości jak i zbytniej ogólności schematów. nie należy umieszczać zbyt dużej liczby operacji w jednym bloku. operacja warunkowa JEŻELI zawsze prowadzi do konieczności rozważenia dwóch dróg, gdy warunek jest spełniony i gdy nie jest. operacja warunkowa CASE musi zawierać opis wszelkich możliwych przypadków zmiennej sterującej

Etapy tworzenia algorytmów Podstawowe etapy tworzenia algorytmów: 1. Sformułowanie zadania 2. Określenie danych wejściowych 3. Określenie celu, czyli wyniku 4. Poszukiwanie metody rozwiązania, czyli algorytmu 5. Przedstawienie algorytmu w postaci: opisu słownego listy kroków schematu blokowego jednego z języków programowania 6. Analiza poprawności rozwiązania 7. Testowanie rozwiązania i ocena efektywności przyjętej metody

Elementy algorytmów Instrukcja wyboru diagram i przykład zapisu (Pascal): w = war1 w = war2 w = war3 case i of 1 : ShowMessage('Jest 1'); 2..5 : ShowMessage('Jest 2-5'); 6,9 : ShowMessage('Jest 6,9'); else ShowMessage('Inne'); end; F1 F2 F3

Elementy algorytmów Instrukcja wyboru diagram i przykład zapisu (Fortran): w = war1 w = war2 w = war3 F1 F2 F3 select case (i) case(1) write(*,*) 'Jest 1' case(2:5) write(*,*) 'Jest 2-5' case(6,9) write(*,*) 'Jest 6,9' case default write(*,*) 'Inne' end select

Elementy algorytmów Instrukcja pętli o znanej liczbie powtórzeń diagram i przykład zapisu (Pascal): i = i_max? i = i+1 F imax:=5; for i:=1 to imax do begin Tablica[i] := 1; end;

Elementy algorytmów Instrukcja pętli o znanej liczbie powtórzeń diagram i przykład zapisu (Fortran): i = i_max? i = i+1 F imax=5 do i=1, imax Tablica(i)=1 end do

Elementy algorytmów Instrukcja pętli o nieznanej liczbie powtórzeń z warunkiem na początku diagram i przykład zapisu (Pascal): prawda? F i := 0; imax:=5; while i < imax do begin ShowMessage(IntToStr(i)+ ' Mniej niz imax!'); i := i + 1; end;

Elementy algorytmów Instrukcja pętli o nieznanej liczbie powtórzeń z warunkiem na początku diagram i przykład zapisu (Fortran): prawda? F i=0 imax=5 do while (i.lt. imax) write(*,*) i,' Mniej niz imax! ' i=i+1 end do

Elementy algorytmów Instrukcja pętli o nieznanej liczbie powtórzeń z warunkiem na końcu diagram i przykład zapisu (Pascal): prawda? F i := 0; imax:=5; repeat ShowMessage(IntToStr(i)+ ' Mniej niz imax!'); i := i + 1; until i >= imax;

Elementy algorytmów Instrukcja pętli o nieznanej liczbie powtórzeń z warunkiem na końcu diagram i przykład zapisu (Fortran): prawda? F i=0 imax=5 10 continue i=i+1 write(*,*) i,' Mniej niz imax! ' if (i.lt. imax) goto 10

Przykłady algorytmów Start Start Wprowadź a,b,c Wprowadź a,b,c b 2 4 a c Czy a 0 b 2 4 a c Stop Czy <0 b x1 2a Stop Czy =0 x x 1 2 b 2a b 2a c x b Stop Czy b 0 Stop Czy <0 Stop x 1 b 2a Stop Czy =0 x x 1 2 b 2a b 2a Stop Stop algorytm rozwiązania równania kwadratowego algorytm rozwiązania równania stopnia nie wyższego niż drugi

Implementacja algorytmu rozwiązywania równania kwadratowego w języku FORTRAN G77.

Implementacja algorytmu rozwiązywania równania kwadratowego w języku Pascal FreePascal.

Implementacja algorytmu rozwiązywania równania kwadratowego w języku C++ - Borland C++ 5.5.

Poprawność algorytmów Praktyka programistyczna dowodzi, że nie da właściwie napisać programu, który by działał bezbłędnie: Jeżeli uważasz, że jakiś program komputerowy jest bezbłędny, to się mylisz po prostu nie zauważyłeś jeszcze skutków błędu, który jest w nim zawarty.

Rodzaje błędów Błędy językowe powstają w wyniku naruszenia składni języka programowania, którego używamy do zapisania algorytmu, np.: zamiast jest for i:=1 to N for i:=1 do N Możliwe skutki i znaczenie: zatrzymanie kompilacji lub interpretacji z komunikatem lub bez przerwanie realizacji programu nawet jeżeli kompilator nie wykrył błędu są błędy niezbyt poważne i dość łatwe do naprawienia

Rodzaje błędów Błędy semantyczne wynikają z niezrozumienia semantyki używanego języka programowania, np. sądzimy, że po zakończeniu iteracji: for:=1 to N do X[i]:=i zmienna i ma wartość N, a nie N+1. Możliwe skutki i znaczenie: program nie realizuje poprawnie algorytmu są to błędy trudne do wykrycia i potencjalnie groźne, ale są do uniknięcia przy większej wiedzy i starannym sprawdzeniu znaczenia używanych instrukcji

Rodzaje błędów Błędy logiczne wynikają ze złego planu rozwiązania problemu, np. stosujemy podczas przeszukiwania tekstu znak. do określenia końca zdania, a nie przewidzieliśmy, że znak ten może wystąpić również w środku frazy, np.: Na rys. 4 pokazano... Możliwe skutki i znaczenie: algorytm przestaje być poprawnym rozwiązaniem zadania algorytmicznego dla pewnych zestawów danych wejściowych algorytm podaje wyniki niezgodne z oczekiwaniami procesor może nie być w stanie wykonać pewnych instrukcji (np. żądamy dzielenia przez 0) są to błędy bardzo groźne mogą być trudne do znalezienia i pozostawać długo w ukryciu nawet w trakcie używania programu w postaci kodu

Rodzaje błędów Błędy algorytmiczne wynikają z wadliwie skonstruowanych struktur sterujących, np. niewłaściwych zakresów iteracji, niewłaściwych warunków arytmetycznych i logicznych, błędnego przeniesienia punktu sterowania, itd. Możliwe skutki i znaczenie: algorytm dla pewnych dopuszczalnych danych wejściowych daje niepoprawny wynik wykonywanie programu realizującego algorytm jest przerywane w trybie awaryjnym proces realizujący algorytm nie kończy w normalnym trybie swego zadania

Optymalizacja Programy komputerowe nie zawsze podlegają procesowi optymalizacji. Powszechna zasada mówi, że jeżeli jakiś program działa stabilnie i dostarcza poprawne wyniki w rozsądnym czasie, można uznać go za produkt gotowy. Często jednak względy praktyczne szczególnie w dużych projektach wymagają od programistów bardziej szczegółowego doboru rozwiązań. Podstawowe kryteria optymalizacji: szybkość działania ilość zajmowanej pamięci operacyjnej ilość zajmowanej pamięci dyskowej bezpieczeństwo danych jakość kodu źródłowego

Optymalizacja Szybkość działania stosowanie odpowiednich języków programowania stosowanie zoptymalizowanych algorytmów stosowanie gotowych bibliotek (często udoskonalanych przez lata) używanie nowoczesnych translatorów ograniczanie operacji wejścia-wyjścia ograniczanie zużycia pamięci pisanie kluczowych fragmentów kodu w asemblerze stosowanie programowania równoległego

Optymalizacja Ilość zajmowanej pamięci operacyjnej ograniczanie liczby zmiennych (szczególnie indeksowanych) dynamiczny przydział pamięci odpowiedni dobór rozmiarów zmiennych indeksowanych przydział tych samych adresów pamięci różnym zmiennym Ilość zajmowanej pamięci dyskowej przemyślana i zwięzła struktura danych stosowanie plików binarnych, a nie tekstowych kompresja danych

Optymalizacja Bezpieczeństwo danych stosowanie standardowych i przetestowanych formatów zapisu danych dokładnie przemyślane zasady zapisu-odczytu i współużytkowania plików stosowanie automatycznych modułów archiwizacji stosowanie narzędzi ułatwiających i przyspieszających odbudowę systemu po awarii Jakość kodu źródłowego podział kodu na logiczne bloki realizujące określone działania stosowanie komentarzy stosowanie procedur i funkcji (nie wolno dublować zadań!) tworzenie dokumentacji kodu stosowanie uniwersalnych rozwiązań (niezależnych od systemu operacyjnego)

Przykład optymalizacji algorytmu i = 2 czytaj N czytaj N czytaj N 2 dzieli N 2 dzieli N i dzieli N i = 3 i = 3 i = i + 1 i dzieli N i dzieli N i dzieli N i = i + 2 i = i + 2 N pierwsza i N i ( N ) N nie pierwsza N pierwsza N nie pierwsza N pierwsza N nie pierwsza

Dziękuję Wojciech Sobieski Olsztyn, 2001-2016