Algorytm. a programowanie -



Podobne dokumenty
MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

1 Wprowadzenie do algorytmiki

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1

2.8. Algorytmy, schematy, programy

Definicje. Algorytm to:

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

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

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

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

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Język ludzki kod maszynowy

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

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

Podstawy i języki programowania

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

if (wyrażenie ) instrukcja

Podstawy Informatyki. Algorytmy i ich poprawność

WHILE (wyrażenie) instrukcja;

Zapis algorytmów: schematy blokowe i pseudokod 1

WHILE (wyrażenie) instrukcja;

Algorytm. Algorytmy Marek Pudełko

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy Programowania Algorytmy i programowanie

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Wprowadzenie do algorytmiki

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Algorytmy od problemu do wyniku

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY I PROGRAMY

Algorytm. Krótka historia algorytmów

Programowanie w języku C++ Grażyna Koba

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Wstęp do Informatyki

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

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

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Algorytmy. Programowanie Proceduralne 1

Technologie informacyjne - wykład 12 -

Warunki logiczne instrukcja if

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

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

Algorytmy komputerowe. dr inż. Jarosław Forenc

Definicja algorytmu brzmi:

Algorytmy. Programowanie Proceduralne 1

Poprawność semantyczna

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i struktury danych

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Języki i metodyka programowania

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

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

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Ilość cyfr liczby naturalnej

Rekurencja (rekursja)

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy

Programowanie w języku Python. Grażyna Koba

Instrukcje sterujące

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

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

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

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

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

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

Zadanie 1. Potęgi (14 pkt)

KONSPEKT FUNKCJE cz. 1.

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

1 Powtórzenie wiadomości

Podstawy programowania. Podstawy C# Przykłady algorytmów

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

INFORMATYKA. Algorytmy.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

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

INSTRUKCJE WARUNKOWE. Zadanie nr 1. Odpowiedź. schemat blokowy

Algorytmy i struktury danych. Wykład 4

Wstęp do Programowania, laboratorium 02

Zadania do samodzielnego rozwiązania

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

Języki programowania zasady ich tworzenia

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Schematy blokowe. Algorytmy Marek Pudełko

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Zaawansowane algorytmy i struktury danych

EGZAMIN MATURALNY Z INFORMATYKI

ZADANIE 1. Ważenie (14 pkt)

EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY MAJ 2014 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

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

Transkrypt:

Algorytm a programowanie -

Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik wykonywalny - program, który można uruchomić.

Etapy tworzenia programu: Kod źródłowy programu w języku C jest to plik tekstowy z rozszerzeniem.c, który może być przygotowany w dowolnym edytorze zapisującym niesformatowane pliki tekstowe. Kompilacja polega na przetłumaczeniu kodu źródłowego na tzw. kod wynikowy, maszynowy (pliki z rozszerzeniem.o lub.obj).

Etapy tworzenia programu: Podczas kompilacji programu mogą wystąpić błędy. Poprawienie tego rodzaju błędów wymaga ponownej edycji kodu źródłowego. Łączenie (konsolidacja) polega na połączeniu kodu wynikowego (.o lub.obj) z odpowiednimi bibliotekami. Podczas łączenia mogą wystąpić błędy spowodowane brakiem odpowiedniej biblioteki. Uruchomienie pliku wykonywalnego.exe.

Etapy tworzenia programu: Po uruchomieniu programu mogą wystąpić błędy. Błędy takie mogą być spowodowany wykonaniem przez program niedozwolonej operacji, np. odwołaniem do zabronionego obszaru pamięci. Innego rodzaju błędem może być zwrócenie przez program niepoprawnego wyniku. W obu przypadkach poprawienie błędu wymaga ponownej edycji kodu źródłowego.

Uruchomienie programu: Skompilowany program (plik wykonywalny.exe) przechowywany jest na nośniku danych (np. dysk twardy, dyskietka, płyta CD/DVD, PenDrive). Uruchomienie programu wymaga jego odczytania z nośnika i załadowania do pamięci operacyjnej komputera (RAM). Za taką operację odpowiedzialny jest system operacyjny. Uruchomiony program nazywany jest procesem. Proces w pamięci komputera ma określoną strukturę, przedstawioną na poniższym rysunku.

Uruchomienie programu: Blok kontrolny procesu jest strukturą danych tworzoną i zarządzaną przez system operacyjny, a opisującą właściwości procesu. Blok kontrolny procesu zawiera m.in. identyfikator, stan procesu, priorytet, licznik programu, wskaźniki pamięci, informacje na temat żądań we/wy.

Uruchomienie programu: Program jest to kod wykonywanego programu (instrukcje programu). Dane są to dane potrzebne programowi podczas wykonywania. Stos jest specjalnym miejscem, w którym przechowywane są tzw. zmienne lokalne oraz kody powrotu z funkcji. Programy komputerowe działają zazwyczaj zgodnie z pewnym algorytmem

Definicje algorytmu: algorytm - skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. algorytm - metoda rozwiązania zadania. algorytm - ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych zwraca żądane dane wyjściowe zwane wynikiem działania algorytmu. algorytm - skończony zbiór reguł, wskazujący kolejność operacji przy rozwiązywaniu problemu pewnego typu.

Podstawowe cechy algorytmu: Algorytm powinien posiadać dane wejściowe (w ilości większej lub równej zeru) pochodzące z dobrze zdefiniowanego zbioru. Algorytm powinien zwracać pewien wynik: - działanie algorytmu niezwracającego wyniku pozbawione jest sensu. Algorytm powinien być precyzyjnie zdefiniowany: - każdy krok algorytmu musi być jednoznacznie określony. Algorytm powinien być zawsze poprawny: - ale dla każdego z założonego dopuszczalnego zestawu danych wejściowych, - w algorytmie mogą (ale nie muszą) być zaimplementowane mechanizmy reakcji na błędne dane wejściowe. Algorytm powinien zawsze kończyć się po skończonej liczbie kroków: - w algorytmie powinna istnieć poprawnie działająca reguła stopu. Algorytm powinien być efektywny: - jak najkrótszy czas wykonania, - jak najmniejsze zapotrzebowanie na pamięć.

Podstawowe cechy algorytmu: Algorytm może zostać zaimplementowany w postaci programu komputerowego lub dla innego urządzenia. Ten sam algorytm może być zaimplementowany w różny sposób przy użyciu różnych języków programowania.

1. Opis słowny algorytmu: Opis słowny przypomina przepis kulinarny z książki kucharskiej

2. Schemat blokowy: Schematy blokowe nie mają jednej, ściśle określonej postaci. Najczęściej na schematach blokowych występują cztery podstawowe elementy (początek algorytmu, koniec algorytmu, blok funkcyjny, blok decyzyjny) oraz strzałki określające kolejność wykonywania operacji. Elementy występujące na schematach blokowych algorytmów:

Algorytm Euklidesa: Rozważmy sposób zapisu jednego z najbardziej znanych algorytmów algorytmu Euklidesa znajdowania największego wspólnego dzielnika dwóch liczb - NWD(a,b) Przykład nr 1.2 Algorytm: Euklidesa (opis algorytmu w punktach) Dane wejściowe: niezerowe liczby naturalne a i b Dane wyjściowe: NWD(a,b) Kolejne kroki: 1. Czytaj liczby a i b. 2. Dopóki a i b są większe od zera, powtarzaj krok 3, a następnie przejdź do kroku 4. 3. Jeśli a jest większe od b, to weź za a resztę z dzielenia a przez b, w przeciwnym razie weź za b resztę z dzielenia b przez a. 4. Przyjmij jako największy wspólny dzielnik tę z liczb a i b, która pozostała większa od zera. 5. Drukuj NWD(a,b).

Działanie powyższego algorytmu sprawdźmy na przykładzie: - szukamy: NWD(1675,3752), czyli a = 1675, b = 3752 - dzielimy większą liczbę przez mniejszą: b/a = 3752/1675 = 2 reszta 402; za b podstawiamy resztę z dzielenia, czyli teraz: a = 1675, b = 402 - dzielimy większą liczbę przez mniejszą: a/b = 1675/402 = 4 reszta 67; za a podstawiamy resztę z dzielenia, czyli teraz: a = 67, b = 402 - dzielimy większą liczbę przez mniejszą: b/a = 402/67 = 6 reszta 0; za b podstawiamy resztę z dzielenia, czyli teraz: a = 67, b = 0 - za NWD przyjmujemy tę z liczb a i b, która jest większa od zera, czyli: NWD(1675,3752) = 67

Przykład nr 1.3

Przykład nr 1.4 Zapis algorytmu Euklidesa w pseudokodzie. NWD(a,b) while a>0 i b>0 do if a>b then a a mod b else b b mod a if a>0 then return a else return b

Przykład nr 1.5 Zapis algorytmu Euklidesa jako funkcja w języku C. int NWD(int a, int b) { while (a>0 && b>0) if (a>b) a = a % b; else b = b % a; if (a>0) return a; else return b; }

Przykład nr 1.6 Narysuj schemat blokowy algorytmu wyznaczającego wartość bezwzględną (moduł) liczby. Wartość bezwzględna liczby określana jest następującym wzorem:

Wczytaj(x) można rozumieć jako podanie przez użytkownika wartości x (wczytanie z klawiatury) lub też przekazanie argumentu do funkcji, która wyznacza wartość bezwzględną liczby. Drukuj(x) można rozumieć jako wyświetlenie na ekranie wyniku lub też zwrócenie go przez funkcję. W językach programowania do obliczenia wartości bezwzględnej liczby stosowane są funkcje (x jest argumentem przekazywanym do funkcji): - C, C++ - abs(x), fabs(x), - Fortran - abs(x),

Przykład nr 1.7 Narysuj schemat blokowy algorytmu sprawdzającego parzystość liczby całkowitej.

Zasada działania powyższego algorytmu jest następująca: - wczytujemy liczbę x, - jeśli liczba x jest ujemna, to zamieniamy ją na dodatnią: x = -x, - jeśli liczba x jest większa od 1, to odejmujemy od niej wartość 2 - operację tę powtarzamy do momentu, aż x będzie mniejsze lub równe 1, - jeśli x jest równe 0, to liczba była parzysta, w przeciwnym wypadku (czyli, gdy x jest równe 1) - liczba była nieparzysta

Przykład nr 1.8 Parzystość liczby całkowitej można sprawdzić w prostszy sposób, wykorzystując dzielenie modulo. Dzielenie modulo zwraca resztę z dzielenia. Jeżeli liczbę całkowitą podzielimy modulo 2 to w wyniku możemy otrzymać: - 0 - jeśli liczba jest parzysta, - 1 lub -1 - jeśli liczba jest nieparzysta. Schemat blokowy algorytmu sprawdzającego parzystość liczby przy wykorzystaniu dzielenia modulo 2 przedstawiony jest na poniższym rysunku.

Przykład nr 1.9 Narysuj schemat blokowy algorytmu obliczającego silnię liczby n. Silnią liczby naturalnej n (w notacji matematycznej n!) nazywamy iloczyn wszystkich liczb naturalnych nie większych niż n. n!= 1 2 3... n przy czym 0!=1, 1!=1, 2!=1 2, 3!=1 2 3,...

Przykład nr 1.10 Narysuj schemat blokowy algorytmu rozwiązującego równanie kwadratowe. ZADANIE DOMOWE