Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

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

Wprowadzenie do algorytmiki

Definicje. Algorytm to:

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

1 Podstawy c++ w pigułce.

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Podstawy Programowania Podstawowa składnia języka C++

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytm. Krótka historia algorytmów

Podstawy programowania skrót z wykładów:

1 Wprowadzenie do algorytmiki

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

1 Podstawy c++ w pigułce.

Algorytmy, reprezentacja algorytmów.

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

Struktura pliku projektu Console Application

Podstawy Programowania Algorytmy i programowanie

Wstęp do programowania

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Język ludzki kod maszynowy

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

Wstęp do programowania

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

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

Programowanie - wykład 4

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

3. Instrukcje warunkowe

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

Programowanie komputerowe. Zajęcia 1

Proste programy w C++ zadania

Wstęp do programowania

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Algorytm. Krótka historia algorytmów

Kontrola przebiegu programu

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Pętla for. Wynik działania programu:

Pytania sprawdzające wiedzę z programowania C++

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

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

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

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

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

do instrukcja while (wyrażenie);

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

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

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

C++ wprowadzanie zmiennych

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Algorytmy i schematy blokowe

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Podstawy Programowania C++

4. Funkcje. Przykłady

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

Instrukcje sterujące

Podstawy programowania w języku C

Języki programowania - podstawy

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wstęp do informatyki- wykład 6

Wstęp do programowania

Wstęp do informatyki- wykład 7

Definicja algorytmu brzmi:

Podstawy Programowania

Konstrukcje warunkowe Pętle

Algorytm. a programowanie -

Wykład z Technologii Informacyjnych. Piotr Mika

Część 4 życie programu

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Zapis algorytmów: schematy blokowe i pseudokod 1

2 Przygotował: mgr inż. Maciej Lasota

Schematy blokowe. Algorytmy Marek Pudełko

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Technologie informacyjne - wykład 12 -

INFORMATYKA. Algorytmy.

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Pliki wykład 2. Dorota Pylak

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Algorytmy. dr Dariusz Banaś (UJK) Seminarium w ramach projektu Fascynujący Świat Nauki dla uczniów gimnazjów. wersja 0.9. Start.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Języki i metodyka programowania. Wprowadzenie do języka C

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

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

Struktury Struktura polami struct struct struct struct

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Wstęp do Programowania, laboratorium 02

Powtórka algorytmów. Wprowadzenie do języka Java.

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Programowanie, algorytmy i struktury danych

Transkrypt:

Algorytmika i programowanie dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Algorytmy i sposoby ich przedstawiania Algorytm - informatyczny opis planu rozwiązania zadania Sposoby przedstawiania algorytmów

Algorytm - informatyczny opis planu rozwiązania Pojęcie algorytmu Wg Macieja M. Sysło ([8], s. 20). Algorytm jest przepisem rozwiązywania postawionego zadania, będącym dokładnie określonym układem elementarnych instrukcji wraz z porządkiem ich wykonania.

Algorytm - informatyczny opis planu rozwiązania Pojęcie algorytmu Wg Władysława Turskiego ([9], s. 59) Przez algorytm należy rozumieć opis obiektów łącznie z opisem czynności, które należy wykonać łącznie z tymi obiektami, aby osiągnąć określony cel.

Algorytm - informatyczny opis planu rozwiązania Pojęcie algorytmu Wg Stefana Węgrzyna ([10], s. 12) Algorytm jest przepisem opisującym krok po kroku rozwiązanie problemu lub osiągnięcie jakiegoś celu.

Algorytm - informatyczny opis planu rozwiązania Pojęcie algorytmiki Algorytmika jest nazwą dziedziny zajmującej się algorytmami i ich własnościami, projektowaniem i analizą algorytmów. (Dawid Harel: Rzecz o istocie informatyki - algorytmika.). Pochodzenie terminu algorytm Termin algorytm pochodzi od brzmienia fragmentu nazwiska: Muhammad ibn Musa al-chorezmi.

Algorytm gotowania jajka na miękko. Przykład Krok 1. Włóż jajko do gotującej się wody. Krok 2. Zanotuj czas początkowy t 0. Krok 3. Oczytaj czas aktualny t. Krok 4. Oblicz t = t - t 0. Krok 5. Jeśli t < 3 min., to przejdź do kroku 3. Krok 6. Wyjmij jajko z gotującej się wody. Zakończ algorytm.

Cechy algorytmu Skończoność (realizowany ciąg operacji powinien mieć swój koniec). Określoność (zarówno operacje, jak i porządek ich wykonywania powinny być ściśle określone, nie zostawiając miejsca na dowolną interpretację użytkownika). Ogólność (algorytm nie ogranicza się do jednego, pojedynczego, szczegółowego przypadku, ale odnosi się do pewnej klasy zadań). Efektywność (algorytm powinien prowadzić do rozwiązania możliwie najprostszą drogą).

Sposoby przedstawiania algorytmów Opis słowny algorytmu. Lista kroków. Drzewo algorytmu. Schemat blokowy.

Opis słowny algorytmu Przykład Opracuj algorytm i jego opis słowny obliczający wartość funkcji: x dla x 0, f ( x) x 0 dla x 0. Rozwiązanie Dane: Dowolna liczba rzeczywista x. Wynik: Wartość funkcji f(x) określonej następującym wzorem: 1, dla f ( x) 0, dla 1, dla x 0 x 0 x 0

Algorytm w postaci listy kroków Przykład Opracuj algorytm w postaci listy kroków obliczający wartość funkcji: x dla f ( x) Rozwiązanie x 0 dla Dane: Dowolna liczba rzeczywista x. Wynik: Wartość funkcji f(x) x x 0, 0. Krok 1. Wczytaj wartość danej x. Krok 2. Jeśli x>0, to f(x)=1. Zakończ algorytm. Krok 3. {x 0} Jeśli x=0, to f(x)=0. Zakończ algorytm. Krok 4. {x < 0} Mamy f(x)=-1. Zakończ algorytm.

Drzewo algorytmu (drzewo obliczeń) Przykład Rozwiązanie KORZEŃ WIERZCHOŁKI KOŃCOWE Opracuj algorytm w postaci drzewa algorytmu obliczający wartość funkcji: x dla x 0, f ( x) x 0 dla x 0. x>0 TAK f(x) = 1 x=0 TAK NIE NIE f(x) = 0 f(x) = -1 WIERZCHOŁEK POŚREDNI

Schemat blokowy algorytmu 1/2 Przykład Opracuj algorytm w postaci schematu blokowego obliczający wartość funkcji: f ( x) x x 0 dla dla x x 0, 0.

Schemat blokowy algorytmu 2/2 Rozwiązanie START Czytaj x TAK x > 0? NIE Wypisz 1 TAK x = 0? NIE Wypisz 0 Wypisz -1 STOP

Reguły i sposoby rysowania schematów blokowych Zasady budowy Rodzaje skrzynek Typowe struktury schematów blokowych

Zasady budowy Każda operacja, relacja lub informacja umieszczona jest w skrzynce. Kolejność wykonywania operacji wyznaczają połączenia między skrzynkami. Każde połączenie jest zaczepione początkiem do skrzynki, a końcem do innej skrzynki lub innego połączenia; żadne połączenie nie rozdziela się. Skrzynki przybierają kształty: prostokąta, rombu (lub sześciokąta), równoległoboku, okręgu lub owalu. Każdy schemat blokowy musi mieć tylko jeden element startowy oraz co najmniej jeden element końca algorytmu.

Rodzaje skrzynek 1/3 Skrzynka operacyjna Skrzynka warunkowa (decyzyjna) Nie (Fałsz; No; False) Nie (Fałsz; No; False) Tak (Prawda; Yes; True) Tak (Prawda; Yes; True)

Rodzaje skrzynek 2/3 Skrzynka wprowadzania i wyprowadzania informacji (skrzynka We/Wy) Skrzynki graniczne START i STOP

Rodzaje skrzynek 3/3 Skrzynka łącznikowa Skrzynka komentarza Komentarz

Wykaz słów używanych w pseudojęzyku (pseudokodzie) wczytaj (czytaj) wypisz (pisz) wykonaj jeżeli (jeśli) to w przeciwnym razie powtarzaj dopóki (aż do)

Algorytm w postaci pseudokodu Obliczanie pewnej sumy

Typowe struktury algorytmów Algorytmy liniowe Algorytmy z rozgałęzieniami Algorytmy cykliczne (z pętlą)

Algorytmy liniowe Algorytmem liniowym nazywamy taki algorytm, który ma postać listy kroków wykonywanych zgodnie z kolejnością ich występowania na tej liście. Algorytmy liniowe są zapisem obliczeń, które mają postać ciągu operacji (czynności) wykonywanych bez sprawdzania jakichkolwiek warunków.

Algorytmy liniowe Przykład Algorytm liniowy obliczania wartości wielomianu II stopnia postaci: w(x) = ax 2 +bx+c = axx+bx+c Algorytm w pseudojęzyku: wczytaj a, b, c, x wykonaj: w=a*x*x w=w+b*x w=w+c wypisz w Schemat blokowy: START wczytaj a,b,c,x w=a*x*x w=w+b*x w=w+c wypisz w STOP

Algorytmy z rozgałęzieniami Algorytmem z rozgałęzieniami nazywamy algorytm, w którym wykonywanie obliczeń zależy od spełnienia pewnych warunków, tzn. zawiera on w sobie wybór jednej z kilku możliwych dróg rozwiązania danego zadania. W schemacie blokowym takiego algorytmu istnieje co najmniej jedna skrzynka warunkowa.

Algorytmy z rozgałęzieniami Przykład Algorytm sprawdzania czy podana przez użytkownika liczba całkowita jest liczbą ujemną, czy nieujemną. Algorytm w pseudojęzyku: Schemat blokowy: START wczytaj (liczba); jeśli (liczba >= 0) wypisz ( nieujemna ) wczytaj(liczba) w przeciwnym razie wypisz ( ujemna ); N liczba>=0 T wypisz ( ujemna ) wypisz ( nieujemna ) STOP

Algorytmy cykliczne (z pętlą) Algorytmem cyklicznym nazywamy algorytm, w którym powtarzane są pewne operacje lub nawet całe fragmenty obliczeń (np. kilku kroków) jedynie dla innych zestawów danych. Pętla obejmuje w schemacie blokowym tę część skrzynek, która ma być wielokrotnie powtarzana.

Algorytmy cykliczne (z pętlą) Przykład Algorytm wczytywania ciągu liczb naturalnych do momentu, gdy ich suma przekroczy wartość 100. Rozwiązanie Krok 1. Wyzeruj sumę. Krok 2. Wczytaj liczbę. Krok 3. Dodaj wczytaną liczbę do sumy. Krok 4. Jeżeli suma jest większa od 100 przejdź do punktu 5, w przeciwnym razie wróć do punktu 2. Krok 5. Wypisz sumę wczytanych liczb.

Algorytmy cykliczne (z pętlą) Algorytm w pseudojęzyku: Schemat blokowy: suma = 0; powtarzaj { czytaj (liczba); suma = suma + liczba; } dopóki (suma<100); wypisz (suma); T START suma = 0 czytaj(liczba) suma= suma + liczba Suma<100 N wypisz (suma) STOP

Pierwszy program w C++ #include<iostream> using namespace std; int main() { //tutaj umieszczamy deklaracje zmiennych //operacje itp.. return 0; }

Typy danych w języku C++ Nazwa Znak Rozmiar w bajtach Minimalna wartość Maksymalna wartość short signed unsigned 2-32768 0 32767 65535 int signed 4-2 147 483 648 2 147 483 647 long int unsigned 0 4 294 967 295 long long signed 8-2 63 2 63-1 unsigned 0

Przykłady użycia typów danych w C++ int a; int liczba1=0; float b = 3.5; Deklaracja zmiennej całkowitej o nazwie a; Deklaracja i inicjalizacja wartością 0 zmiennej całkowitej o nazwie liczba1; Deklaracja i inicjalizacja wartością 0 zmiennej całkowitej o nazwie liczba1; char z; char znak= P ; Deklaracja zmiennej znakowej o nazwie z; Deklaracja i inicjalizacja znakiem P zmiennej znakowej o nazwie znak; Każda prosta instrukcja kończy się średnikiem ;

Deklaracje i inkrementacje // ustawienie wartości początkowej zmiennej int a = 7; a: 7 a = 9; // zmiana wartości zmiennej a n 9 9 a = a+a; // podwojenie wartości a 18 a += 2; //dodanie do a wartości 2, a=a+2 20 a++; // inkrementacja, czyli zwiększenie o 1 21 33

Operatory relacji w języku C++ Podstawowe operatory wykorzystywane do porównywania wartości zmiennych Zapis Zapis w języku matematyczny C++ Opis = == równy np., if(a==b) [ (a=b) oznacza wstaw b w miejsce a ] < < mniejszy niż <= mniejszy lub równy > > większy >= większy lub równy!= różny 34

Operatory logiczne Tabele prawdy dla operatora "&&" (i) oraza II (lub): Warunek1, np. X>0 Warunek2, np. X<10 Warunek1 && Warunek2 Warunek1 Warunek2 true true true true true false false true false true false true false false false false 35

Elementy języka programowania Java Deklaracja zmiennych <typ wartości> <lista nazw>; int i, j; Wybrane dostępne typy: long,int, short byte, float, double, char (całkowity) (rzeczywisty) (znakowy) Referencja do tablicy: <typ wartości> <nazwa typu> []; (tablica jednowymiarowa) int tab[];

Komentarze w kodzie programu Komentarze w kodzie programu są ciągami znaków pomijanymi przez kompilator. Komentarz blokowy: /* to jest komentarz blokowy, który może zajmować wiele linii */ Komentarz liniowy: // to jest komentarz liniowy

Elementy języka programowania C++ a schematy blokowe Instrukcja przypisania: int w; w= 5; gdzie: x - nazwa zmiennej, w - wyrażenie. w = 5 Instrukcja wczytywania cin>>w; w Instrukcja wyjścia: cout<<w; w

Instrukcja warunkowa if oraz if..else Algorithms and Computational Complexity

Elementy języka programowania C++- instrukcje Instrukcje selekcji (warunkowe): if (warunek) { instrukcja; } T instrukcja warunek N if ( warunek) { instrukcja1; } else { instrukcja2; } T instrukcja 1 warunek N instrukcja 2

Elementy języka programowania C++ - pętle Instrukcje pętli (iteracji) while (warunek) { instrukcja; } warunek N W wersji polskiej: dopóki warunek wykonuj instrukcja T instrukcja

Elementy języka programowania C++ - pętle Instrukcje pętli (iteracji) do { instrukcja; } while (warunek); instrukcja warunek N W wersji polskiej: powtarzaj instrukcja; dopóki warunek T

Elementy języka programowania Java - instrukcje Instrukcja for jako szczególny przypadek instrukcji pętli for (licz=pocz; licz<=koniec ; licz=licz+1) { instrukcja; } licz=pocz licz<=koniec N T instrukcja licz= licz+1 zwiększ licznik

Typowe struktury programów w języku Java Programy liniowe Programy z rozgałęzieniami Programy cykliczne

Przykład: Program liniowy. Obliczanie wartości wielomianu II stopnia: w(x) = ax2+bx+c = axx+bx+c. Zapis algorytmu w języku C++: #include <iostream> using namespace std; Schemat blokowy: START int main() { w( x) ax int a, b, c, x; cin>>a>>b>>c>>x; int w = a*x*x; w=w+b*x; w=w+c; cout << w << endl;. 2 bx c axx bx c wczytaj a,b,c,x w=a*x*x w=w+b*x w=w+c wypisz w } return 0; STOP

Przykład: Program z rozgałęzieniami. Algorytm sprawdzania czy podana przez użytkownika liczba całkowita jest liczbą ujemną, czy nieujemną. Zapis algorytmu w języku C++: #include <iostream> using namespace std; int main() { Schemat blokowy: START int liczba; Cin>>liczba; if (liczba>=0) w( x) ax cout<< nieujemna ; else cout<< ujemna ; }. 2 bx c axx bx c wypisz ( ujemn a ) N czytaj(liczb a) liczba> =0 T wypisz ( nieujemn a ) } STOP

Przykład: Program cykliczny (nieznana liczba powtórzeń). Wczytywania ciągu liczb naturalnych do momentu, gdy ich suma przekroczy wartość 100. Zapis algorytmu w języku C++:: #include <iostream> using namespace std; int main() { int liczba,suma; suma=0; do { cin>>liczba; suma = suma + liczba; } while(suma<100); cout<< suma= +suma; return 0; } w( x) ax. 2 bx c axx bx c T Schemat blokowy: START suma = 0 czytaj(liczba) suma= suma + liczba Suma<100 N wypisz (suma) STOP

Przykład: Program cykliczny (znana liczba powtórzeń). Obliczanie silni s liczby całkowitej nieujemnej n. Zapis algorytmu w języku C++:: #include <iostream> using namespace std; int main() { int n,i,s; i=1;s=1; cin>>n; while(i<n) { s=s*i; i++; } w( x) ax cout<< s= <<s; return 0; }. 2 bx c axx bx c Schemat blokowy: START i = 1 s = 1 wczytaj(n) i<n T s = s * i i++ N wypisz (s) STOP

Zapisz schemat blokowy w jezyku C++:

Jakie zadanie realizuje ten algorytm?

Jakie zadanie realizuje ten algorytm?