Algorytm – skonczony, uporzadkowany ciag jasno zdefiniowanych czynnosci, koniecznych do wykonania pewnego rodzaju zadan. Najczesciej algorytmy sa zapisywane w sposób bardzo scisly, zgodnie z zasadami matematyki. Nauka zajmujaca sie algorytmami – algorytmika
Sposoby tworzenia algorytmów:
1. Dziel i zwyciezaj – problem tak dlugo dzielimy na mniejsze zadania, az będziemy w stanie rozwiazac go calkowicie.
2. Metoda zachlanna – nie wgryzamy sie w problem zbyt dokladnie tylko wybieramy najbardziej obiecujaca droge.
3. Programowanie dynamiczne – dzielimy problem na kilka mniejszych, które oceniamy pod wzgledem wagi, poddajemy analizie i niektóre wyniki wykorzystujemy do rozwiazania calego problemu.
4. Programowanie liniowe – oceniamy problem przez zastosowanie minimalizacji
odpowiedniej funkcji jakosci
5. Poszukiwanie – tak dlugo przeszukujemy zbiory danych, az znajdziemy rozwiazanie.
6. Zastosowanie probabilistyki – godzimy się na to, aby uzyskany wynik byl obarczony bledem (z pewnym prawdopodobienstwem).
7. Zastosowanie heurystyki – rozwiazanie problemu opiera sie na przyblizonym
wyszukiwaniu rozwiazan, przy czym nie ma gwarancji, ze beda one zblizone do
prawidlowych. Przykladem jest wlasne doswiadczenie projektanta w dziedzinie,
w której nie ma on wystarczajacej wiedzy.
Zlozonosc czasowa
Rozumiemy ja jako ilosc wykonywanych podstawowych operacji w zaleznosci od
rozmiaru wejscia. Jako „operacje podstawowa” rozumiemy jakas prosta operacje
wykonywana przez komputer np. podstawienie, porównanie, prosta operacja arytmetyczna.
Zlozonosc pamieciowa
Rozumiemy ja jako miare ilosci pamieci potrzebnej do wykonania algorytmu w
zaleznosci od rozmiaru wejscia.
Program – sekwencja instrukcji wedlug której komputer wykonuje zadane operacje.
Program zapisany w postaci tekstu może byc wykonywany za posrednictwem
interpretera, który krok po kroku wykonuje zapisane instrukcje.
Albo moze zostac poddany procesowi kompilacji, a potem uruchamiany bezposrednio przez system operacyjny.
kod programu:
deklaracje
implementacje
wlasciwy program
Elementy programu:
Stale sa to nazwane wartosci, które sa znane juz podczas pisania programu i nie moga ulec zmianie podczas jego wykonywania.
Zmienne - sa to odpowiednio przydzielone obszary pamieci, które moga czasowo przechowywac scisle okreslone wartosci. Kazda zmienna ma scisle okreslony typ danych, czyli moze przechowywac jeden rodzaj informacji.
Instrukcje - najmniejsze elementy jezyka programowania, pozwalajace na zdefiniowanie dowolnego algorytmu. Instrukcje moga zawierac w sobie mniejsze elementy – wyrazenia.
Funkcje i procedury sa odpowiednio przygotowanymi zestawami instrukcji, realizujacymi scisle okreslone zadania.
Typy danych proste:
liczby calkowite
liczby zmiennopozycyjne
wartosci logiczne
znaki
ciagi znakowe
wskazniki i uchwyty
Typy danych zlozone:
wyliczeniowe – przyjmuje jedna ze scisle okreslonych wartosci
tablice – zawieraja wektor, macierz lub tablice wielowymiarowa wartosci tego samego typu
struktury i rekordy – lacza w jednej zmiennej dane róznych typów, reprezentowanych jako pola
klasy – struktury wystepujace w jezykach obiektowych
Instrukcja podstawienia - czyli polecenie pozwalajace przypisac zmiennej konkretna wartosc.
Instrukcja warunkowa -Pozwala na wykonanie okreslonych instrukcji,
procedur lub funkcji w zaleznosci od wyniku podanego wyrazenia logicznego.
Instrukcja wyboru - Pozwala wybrac wykonywane instrukcje w zaleznosci od wartosci wyrazenia podanego jako parametr.
Tablice - sa to zlozone typy zmiennych, umozliwiajace przechowywanie zestawów
danych tego samego typu w postaci wektora, macierzy lub innych wielowymiarowych struktur.
Petle - sa instrukcjami pozwalajacymi na automatyczne powtarzanie zawartych w ich wnetrzu instrukcji. W VBA istnieje piec rodzajów petli typu Do...Loop oraz dwa rodzaje petli interacyjnych For.
Petla For...Next - Jest to petla o scisle okreslonej ilosci przebiegów, poslugujaca sie zmienna indeksowa zwiekszana automatycznie.
Petla For Each...Next - Jest to petla typu For...Next, operujaca jednak
nie na zmiennej indeksowej, ale na kolejnych elementach tablicy.
Do While ... Loop - petla wykonuje sie dopóty, dopóki spelniony jest warunek wystepujac po slowie While, przy czym może nie wykonac sie ani razu
Do ... Loop While - petla wykonuje sie dopóty, dopóki spelniony jest warunek wystepujacy po slowie While, przy czym wykona sieco najmniej jeden raz
Do Until ... Loop - petla wykonuje sie dopóty, dopóki nie jest spelniony warunek wystepujacy po slowie Until, przy czym może nie wykonac sie ani razu
Do ... Loop Until - petla wykonuje sie dopóty, dopóki nie jest spelniony warunek wystepujacy po slowie Until, przy czym wykona się co najmniej jeden raz
Funkcje - sa specjalnymi typami procedur, które moga zwracac wartosci, a te z kolei mozemy wykorzystac w wyrazeniach arytmetycznych lub logicznych.
Rekurencja - polega na odwolaniu sie do samego siebie, czyli (w przypadku programowania) wywolaniu funkcji lub procedury w swoim wlasnym wnetrzu.
Zastosowanie rekurencji pozwala w prosty i przejrzysty sposób przedstawic algorytm, ale przewaznie wiaze sie ze zwiekszonym zapotrzebowaniem na pamiec i wolniejszym wykonaniem.
PRZYKLADY ALGORYTMOW:
Algorytm Euklidesa – pozwala znalezc najwiekszy wspólny dzielnik dwóch liczb
naturalnych.
Przeszukiwanie liniowe - Zwane tez wyszukiwaniem sekwencyjnym. Pozwala znalezc pierwsze wystapienie zadanego elementu w podanym ciagu danych.
Przeszukiwanie binarne - Zwane tez wyszukiwaniem metoda polowienia. Pozwala znalezc pierwsze wystapienie zadanego elementu w podanym ciagu danych. Jest znacznie szybsze niz przeszukiwanie liniowe, ale zbiór przeszukiwanych danych musi byc posortowany.
Sortowanie babelkowe - Jedna z najprostszych metod sortowania. Polega na sukcesywnym porównywaniu sasiadujacych elementów i ich zamianie gdy
jest to konieczne.
Sortowanie szybkie - Zwane takze QuickSort. Jest to algorytm rekurencyjny, jeden z najszybszych, choc nie w kazdych warunkach.
Inteligencja:
-Umiejetnosc myslenia
-Zdolnosc do adaptacji
-Zdolnosc rozwiazywania problemów
-Zdolnosc uczenia sie
-Zdolnosc myslenia abstrakcyjnego
Zadania sztucznej inteligencji
-podejmowanie decyzji w warunkach ograniczonej ilosci informacji
-analiza i synteza jezyków naturalnych
-rozumowanie logiczne/racjonalne
-dowodzenie twierdzen
-gry logiczne
-zarzadzanie wiedza, preferencjami i informacja w robotyce
-systemy eksperckie i diagnostyczne
Zastosowanie SI
-Sterowania przebiegiem procesów technologicznych
-Systemy ekspertowe
-Maszynowe tlumaczenie tekstów
-Eksploracja danych
-Rozpoznawanie obrazów
-Rozpoznawanie mowy i rozpoznawanie mówców
-Rozpoznawanie pisma (OCR)
-Sztuczna twórczosc
Niepowodzenia SI
-Skuteczna gra w niektóre gry logiczne np. brydz albo go; choc wiele dostepnych
programów szachowych posiada poziom przewyzszajacy arcymistrzowski.
-Idealne nasladowanie czlowieka.
-Skuteczne tlumaczenie tekstów literackich i mowy potocznej.
-Gra na gieldzie
Logika ostra - Reguly logiczne i rachunek zdan:
Jezeli x jest prawda i y tez jest prawda, to (x i y) tez jest prawda
Logika rozmyta - Koncepcja zaproponowana przez Lotfi Zadeha, gdzie miedzy stanami 0 i 1 wystepuje wiele wartosci posrednich okreslanych przez stopien
przynaleznosci do jednego ze zbiorów.