■ pozwala programiście posługiwać się pojęciami charakterystycznymi dla dziedziny problemu (oderwać się od pojęć związanych ze sprzętem komputerowym),
■ pozwala ukryć szczegóły implementacji
o klasa - abstrakcyjny typ danych (ABSTRAHOWANIE - operacja myślowa polegająca na
uwzględnianiu tylko wybranych cech sytuacji (przedmiotu, osoby), z pominięciem cech uznanych za nieistotne)
Wymagania wobec algorytmów
• poprawność - algorytm generuje prawidłowe rezultaty (nie zawiera błędów),
• wydajność - realizacja algorytmu wymaga użycia akceptowalnej ilości zasobów: o czasu,
o pamięci
Pojęcie błędu
•niezgodność z obowiązującymi regułami pisania, liczenia, wymowy itp.; odstępstwo od normy; pomyłka •postępek, działanie, które przynosi komuś złe skutki; niewłaściwe posunięcie, przedsięwzięcie •mylne, fałszywe mniemanie o czymś (przestarzałe)
Błędy w programowaniu
•błędy logiczne-na etapie projektowania algorytmu (środki zaradcze: stosowanie sprawdzonych algorytmów, formalne dowodzenie poprawności algorytmu, testowanie programu)
•błędy wykonania programu -ujawniające się w trakcie realizacji algorytmu zapisanego w postaci programu (ujawniające się w postaci wyjątków)
•błędy syntaktyczne -polegające na niezgodności tekstu programu z gramatyką języka programowania (wykrywane przez kompilator)
Złożoność obliczeniowa
• Złożoność obliczeniowa algorytmu- ilość zasobów systemu komputerowego niezbędnych do jego realizacji.
• Zasoby systemu komputerowego niezbędne do realizacji algorytmu:
o czas pracy procesora (złożoność czasowa algorytmu), o pamięć operacyjna (złożoność pamięciowa algorytmu).
• Złożoność obliczeniowa jest uzależniona od wielkości zadania.
Sortowania przez wybieranie
import java.io.*;
public class SortowaniePrzezWybieranie { static void sortuj(int [] liczby) { int k, pomoc;
for (int i = 0; i < liczby.length -1; i++) { k = i;
for (int j = i; j < liczby.length; j++) if (liczby(k) > liczby[j])
k=j;
pomoc = liczby(i); liczby(i) = liczby(k); liczby(k) = pomoc;
static int czytajLiczbe() throws IOException {
BufferedReader klaw = new BufferedReader (new InputStreamReader (System.in)); return Integer.parselnt(klaw.readLineO);
static void drukujWektor(int (] tab) {
for (int i = 0; i < tab.length; i++)
System.out.print(tab[i) + "");
System.out.print("\r»");
public static void main(String (] args) throws IOException {