Celem programowania jest rozwiązywanie problemów algorytmicznych. Rozwiązanie polega na wykonaniu w określonej kolejności szeregu akcji, które realizują proces (obliczenie):
Definicje:
Instrukcja (operacja) – opis akcji;
Obiekt – dane, które są przedmiotem przetwarzania instrukcji;
Algorytm – zbiór akcji w określonej kolejności;
Program – algorytm wyrażony w pewnym języku programowania.
Uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Inaczej jest to sposób (metoda, specyfikacja, przepis) postępowania z danymi, który w skończonej liczbie kroków (czynności) prowadzi do otrzymania oczekiwanych wyników.
Opracowanie algorytmu składa się z kilku etapów:
zdefiniowanie problemu, podanie specyfikacji, czyli danych wejściowych i celu (wyniku);
przeprowadzenie analizy – prowadzi do wyboru metody rozwiązania problemu;
opisanie algorytmu.
opis słowny – np. przepis kulinarny,
lista kroków,
drzewo algorytmu,
schemat blokowy, inaczej sieć działań (ang. block diagram, flowchart) – graficzne przedstawienie zbioru instrukcji (operacji) i ich powiązań za pomocą określonych figur geometrycznych (skrzynek, bloków), połączonych liniami zgodnie z kolejnością wykonywania czynności wynikających z zastosowanego algorytmu,
za pomocą jednego z języków formalnych.
każda operacja, relacja lub informacja umieszczana jest wewnątrz bloku;
kolejność wykonywania operacji wyznaczają połączenia między blokami;
każde połączenie jest zaczepione początkiem do jednego bloku, a końcem do drugiego bloku lub innego połączenia, żadne połączenie nie rozgałęzia się;
każdy schemat blokowy ma tylko jeden element startowy oraz co najmniej jeden element końcowy.
Wyróżnia się następujące rodzaje bloków stosowane w schematach blokowych:
Rodzaj bloku | Reprezentacja graficzna |
---|---|
blok graniczny – oznacza początek, koniec, przerwanie lub wstrzymanie działania (np. start, stop) | |
blok wejścia-wyjścia | |
blok obliczeniowy (operacyjny) – oznacza wykonanie działania zmieniającego wartości, postać lub miejsce zapisu danych | |
blok decyzyjny (warunkowy) | |
blok wywołania podprogramu | |
blok fragmentu | |
blok komentarza | |
łącznik wewnętrzny lub zewnętrzny |
Liniowe (sekwencyjne),
Z rozgałęzieniami – zawierają instrukcje warunkowe,
Cykliczne, iteracyjne – zawierają pętle.
Algorytm można zapisać korzystając z prostych konstrukcji w postaci pseudokodu (pseudojęzyka). Pseudokod zachowuje strukturę charakterystyczną dla kodu, rezygnując ze ścisłych reguł składniowych na rzecz prostoty i czytelności. Nie zawiera szczegółów implementacyjnych. Blok poleceń wydziela się za pomocą nawiasów klamrowych {}. Kluczowe słowa i operatory pseudokodu:
przypisywanie (podstawianie):
zmienna=wyrażenie
instrukcje wejścia/wyjścia – pobieranie/wypisywanie wartości:
wczytaj zmienna
wypisz zmienna
instrukcja warunkowa (decyzyjna):
prosta jeżeli (if): jeżeli warunek to akcja
z alternatywą jeżeli…inaczej (if…else): jeżeli warunek to akcja1 inaczej akcja2
instrukcja iteracyjna (z pętlą):
pętla dopóki (while): dopóki warunek wykonuj akcję
pętla powtarzaj (do while): powtarzaj akcję dopóki warunek
pętla dla (for):
dla zmienna=wart_początkowa [w_dół] do wart_końcowa z_krokiem krok wykonuj akcję
Warunek jest wyrażeniem logicznym, któremu przypisuje się wartość logiczną: prawda (Tak) lub fałsz (Nie). W wyrażeniach logicznych dla porównania wyrażeń liczbowych używa się następujących operatorów relacji:
== równe
<> nierówne
< mniejsze
> większe
<= mniejsze lub równe
>= większe lub równe
Mogą również występować w nich operatory logiczne:
NIE negacja
I iloczyn logiczny
LUB suma (alternatywa) logiczna
Na przykład: jeżeli ((a>0) I (b<>0)) to x=a/b
Problem algorytmiczny: obliczenie sumy dwóch dowolnych liczb i wypisanie wyniku na ekranie monitora.
Dane wejściowe: Dwie dowolne liczby a i b.
Wynik: Suma liczb a i b.
Opis słowny algorytmu:
Po wczytaniu danych wejściowych a i b należy je zsumować. Wynik zapisać jako suma. Wyprowadzić wynik na ekran monitora.
Lista kroków:
Krok 1: Wprowadź dwie liczby a i b. Przejdź do kroku 2.
Krok 2: suma=a+b. Wyprowadź na ekran monitora wynik sumy. Przejdź do kroku 3.
Krok 3: Zakończ algorytm.
Schemat blokowy:
Pseudokod:
suma=0;
wczytaj a;
wczytaj b;
suma=a+b;
wypisz suma;
Problem algorytmiczny: rozwiązanie równania liniowego ax+b=0.
Dane wejściowe: Dwie dowolne liczby a i b.
Wynik: Pierwiastek równania liniowego.
Opis słowny algorytmu:
Po wczytaniu danych wejściowych a i b należy rozpatrzyć wszystkie możliwe przypadki:
dla a==0 i b==0 → nieskończenie wiele rozwiązań
dla a==0 i b<>0 → równanie sprzeczne
dla a<>0 → $x = - \frac{b}{a}$
Wyprowadzić wynik na ekran monitora.
Lista kroków:
Krok 1: Wprowadź dwie liczby a i b. Przejdź do kroku 2.
Krok 2: Sprawdź, czy a==0 i b==0?
Jeżeli tak, to wypisz: nieskończenie wiele rozwiązań i przejdź do kroku 6.
Jeżeli nie, to przejdź do kroku 3.
Krok 3: Sprawdź, czy a==0 i b<>0?
Jeżeli tak, to wypisz równanie sprzeczne i przejdź do kroku 6.
Jeżeli nie, to przejdź do kroku 4.
Krok 4: Sprawdź, czy a<>0?
Jeżeli tak, to x=-b/a, przejdź do kroku 5.
Jeżeli nie, to przejdź do kroku 6.
Krok 5: Wyprowadź na ekran monitora wynik x. Przejdź do kroku 6.
Krok 6: Zakończ algorytm.
Schemat blokowy:
Pseudokod:
x=0;
wczytaj a;
wczytaj b;
jeżeli (a==0) i (b==0) to
wypisz nieskończenie wiele rozwiązań
inaczej
jeżeli (a==0) i (b<>0) to
wypisz równanie sprzeczne
inaczej
jeżeli (a<>0) to {
suma=a+b;
wypisz x;
}
Uwaga:
W powyższym algorytmie trzykrotnie zastosowano instrukcję warunkową. Podaj lepszą propozycję rozwiązania problemu (wykluczenie dwóch pierwszych przypadków prowadzi do wyznaczenia pierwiastka). Zapisz ulepszony program w pseudojęzyku oraz opracuj jego schemat blokowy.
Napisać program obliczający objętość prostopadłościanu. Program wymaga wprowadzenia wielkości kolejnych wymiarów.
Napisać program obliczający liczbę sekund w roku.
Napisać program, który wczytuje trzy liczby całkowite a, b, c i wypisuje największą z nich.
Napisz program obliczający wartość bezwzględną z liczby x.
Napisz program wypisujący w porządku rosnącym dwie liczby.
Napisz program obliczający wartość funkcji:
.
Napisz program obliczający dla podanych współczynników a, b i c pierwiastki równania kwadratowego w postaci ax2+bx+c=0.