Algorytmy i Struktury danych -...

14
Łódź, 6 marca 2014 r. Robert Kowalczyk Algorytmy i Struktury danych Algorytmy i programowanie

Transcript of Algorytmy i Struktury danych -...

Łódź, 6 marca 2014 r. Robert Kowalczyk

Algorytmy i Struktury danych Algorytmy i programowanie

2 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Algorytm

Algorytm – w matematyce czy informatyce, to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań.

Słowo "algorytm" pochodzi od starego angielskiego słowa algorism, oznaczającego wykonywanie działań przy pomocy liczb arabskich, które z kolei wzięło się od nazwiska Muhammed ibn Musa Alchwarizmi - matematyka perskiego z IX wieku.

Algorytm ma przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego.

Badaniem algorytmów zajmuje się algorytmika.

3 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Ada

Za pierwszą programistkę komputerów uważa się Adę Lovelace, córkę słynnego poety George’a Byrona. Ada Augusta Lovelace współpeacowała z Charlesem Babbage’em w pierwszej połowie XIX w. przy projektowaniu pierwszej programowalnej maszyny liczącej (maszyny tej jednak nie skonstruowano).

Tworzone przez Adę opisy rozwiązywania konkretnych zadań obliczeniowych uznaje się za pierwsze programy. Ponad wiek później, w latach 1975-1981, jej imieniem nazwano jeden z języków programowania wysokiego poziomu – Ada.

4 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Problem i jego rozwiązanie

Najpierw pojawia się problem, następnie poszukujemy

algorytmu rozwiązującego dany problem i na koniec

piszemy program wykorzystując jeden z istniejących

języków programowania.

Algorytm Program Problem

Zależność między programem a algorytmem można

przedstawić też tak:

Program

komputerowy Algorytm Komputer

wykonuje wykonuje

5 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Dane i szukane

Zawsze przy rozwiązywaniu problemu zastanawiamy się jakie są dane (D) i wynik (W) w danym

problemie.

Przykład 1

Oblicz sumę dwóch liczb całkowitych.

Dane: Dwie liczby całkowite a i b.

Wynik: Suma liczb a i b.

Przykład 2

Znajdź mniejszą z dwóch liczb całkowitch.

Dane: Dwie liczby całkowite a i b.

Wynik: Mniejsza z liczb a i b.

Przykład 3

Sprawdź parzystość liczby całkowitej.

Dane: Liczba całkowita n.

Wynik: true jeśli liczba n jest parzysta, false jeśli liczba n jest nieparzysta.

6 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Schemat krokowy algorytmu (przykład 1)

Kroki Algorytmu: – Zacznij algorytm

– Wprowadź dane

– Rozwiąż problem

– Wyprowadź wynik

– Zakończ algorytm

Schemat krokowy – Zacznij algorytm

– Wprowadź wartość liczb a i b

– Podstaw wynik = a + b

– Wyprowadź wynik

– Zakończ algorytm

7 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Schemat blokowy algorytmu (przykład 1)

Start

Koniec

Wczytaj a,b

wynik = a + b

Wypisz wynik

8 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Program (przykład 1)

#include <iostream>

using namespace std;

main()

{

int a,b,wynik;

cout << „Podaj a” << endl;

cin >> a;

cout << „Podaj b” << endl;

cin >> b;

wynik = a + b;

cout << „Suma liczb a i b wynosi” << wynik << endl;

system("pause");

return 0;

}

9 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Schemat krokowy algorytmu (przykład 2)

• Zacznij algorytm

• Wprowadź wartości liczb całkowitych a i b

• Jeśli a<=b, to zmiennej wynik przypisz wartość a,

w przeciwnym wypadku zmiennej wynik przypisz

wartość b

• Wyprowadź wynik

• Zakończ algorytm

10 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Schemat blokowy algorytmu (przykład 2)

Start

Koniec

Wczytaj a,b

a<=b

wynik = b wynik = a

tak nie

Wypisz wynik

11 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Program (przykład 2)

#include <iostream>

using namespace std;

main()

{

int a,b,wynik;

cout << „Podaj a" << endl;

cin >> a;

cout << „Podaj b" << endl;

cin >> b;

if (a<=b)

wynik = a;

else

wynik = b;

cout << „Mniejsza z liczb a i b wynosi” << wynik << endl;

system("pause");

return 0;

}

12 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Zadanie 1

Napisz schemat krokowy, blokowy i program dla algorytmu z przykładu 3.

Skorzystaj z tego, że liczba będzie parzysta jeśli reszta z jej dzielenia przez 2 jest równa 0, a nieparzysta jeśli reszta z jej dzielenia przez 2 jest równa 1.

Uwaga! W C++ operator reszty z dzielenia to: %.

13 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Zadanie 2

Napisz schemat krokowy, blokowy i program dla algorytmu rozwiązywania równania kwadratowego a+by=0 w zależności od rzeczywistych współczynników a i b.

Wskazówka! Uwzględnij przypadki:

• b<>0, wówczas jest dokładnie jedno rozwiązanie:

y0=-a/b,

• a=0 i b=0, wówczas jest nieskończenie wiele rozwiązań

• b=0 i a<>0, wówczas brak rozwiązań

14 dr Robert Kowalczyk, Instytut Nauk Ekonomicznych i Informatyki PWSZ w Płocku

Zadanie 3

Napisz schemat krokowy, blokowy i program dla

następującego problemu: wczytujesz liczbę

całkowitą n i wyświetlasz na ekranie wszystkie liczby

całkowite z przedziału [-n^2,n^2].