Informatyka
Transkrypt
Informatyka
Wydział Inżynierii Mechanicznej i Robotyki AGH w Krakowie Studia Niestacjonarne, Rok 1, semestr 2 przedmiot: Informatyka Dr inż. Zbigniew Rudnicki Katedra Konstrukcji i Eksploatacji Maszyn AGH B-2, pok.301, tel.617-31-27 AGH WIMiR Studia Niestacjonarne Semestr 2: Informatyka 2014 AiR 8 godz. wykładu, 8 godz. ćwiczeń (poprzednio 10+10) MiBM 8 godz. wykładu, 8 godz. ćwiczeń (poprzednio 8+16) • Wykłady: AiR: B2 sala 123; MiBM: sala 100 dr inż Zbigniew Rudnicki, B-2 pok.301 e-mail: [email protected] • Ćwiczenia laboratoryjne: B2 sale: 320-322 - dr inż. Krystyna Prync-Skotniczny - mgr inż. Dariusz Wędrychowicz Informacje: w INTERNECIE: http://www.kkiem.agh.edu.pl (Nauczanie - Materiały dyd.) i w gablotce B-2 III p. obok pokoju 301 2 1 Cele nauczania przedmiotu Informatyka (ograniczone wymiarem godzinowym) 1) poznanie podstawowych idei konstruowania algorytmó oraz metod i narzędzi programowania komputerów, z wykorzystaniem różnych struktur danych i języków programowania; 2) praktyczne poznanie podstaw programowania w języku BASIC 3) nauczenie się podstaw użytkowania języka i potężnego pakietu oprogramowania jakim jest Matlab; 4) poznanie zasad tworzenia programów obiektowo-zdarzeniowych z interfejsem graficznym („okienkowych”) w Matlabie i Visual Basic’u 3 Ćwiczenia Laboratoryjne: 8 godz. ćwiczeń laboratoryjnych: • Algorytmy (2 godz.)- śledzenie działań (oceniane), konstruowanie. • BASIC (2 godz.)- podstawowe polecenia i proste programy • MATLAB (4 godz.): – – – – – – – – działania w oknie komend i proste programy, tabelaryzacja funkcji, zapis do pliku, wykres XY, programy z pętlą i warunkiem, rozwiązywanie równań nieliniowych, pierwiastki wielomianu budowa interfejsu graficznego, interpolacja i aproksymacja, operowanie na macierzach i układy równań liniowych test: podstawowe pojęcia z wykładów i ćwiczeń • Visual Basic (2 godz.) - budowa prostych programów 4 2 Podręcznik: Wprowadzenie do Informatyki i Programowania Z. Rudnicki. Wyd. AGH Kraków 2013 5 Podręcznik - Rozdział 2 6 3 Podręcznik - Rozdział 3 7 Podręcznik - Rozdział 4 cz.1 8 4 Podręcznik - Rozdział 4 cz.2 9 Kolejne rozdziały podręcznika: 5. Przykłady algorytmów i programów w jezyku BASIC 6. Zadania do zaprogramowania 7. Wprowadzenie do programowania w Visual Basic 8. Podstawy programowania w MATLAB-ie 9. MATLAB – operowanie na tablicach 10. MATLAB - obiekty i programowanie w trybie graficznym 11. Elementy jezyka C i porównanie z Matlabem 12. Bazy danych 13. Zarys wybranych metod sztucznej inteligencji (sieci neuronowe i systemy ekspertowe) 10 5 Tematyka wykładów (obecność sprawdzana): 1) Wprowadzenie do algorytmów i struktury danych oraz metody i narzędzia programowania 2) Podstawy programowania w języku BASIC 3) Matlab - charakterystyka, tryby użytkowania i podstawy programowania 4) Macierze i operacje macierzowe w Matlabie 5) Wykresy oraz obiekty i programy graficzne w Matlabie 6) Elementy programowania obiektowo-zdarzeniowego w języku Visual Basic 7) Charakterystyka języka C i porównanie z Matlabem 8) Budowa i obsługa baz danych. Elementy języka SQL 11 Wykład 1: Wprowadzenie do programowania czyli ALGORYTMY i STRUKTURY DANYCH Opracował: Zbigniew Rudnicki 6 Po co komputerowi programy? Komputer działając według różnych programów może zmieniać się w różne narzędzia, np. do: – – – – – – – – pisania malowania komunikowania się obliczania komponowania i odtwarzania muzyki i filmów nauczania sterowania urządzeniami ....... 13 Jak opracować program dla określonego zadania? 1) określić jakie rezultaty mają być uzyskane oraz jakie dane będą do tego niezbędne 2) zdefiniować potrzebne zmienne - a dokładniej struktury danych czyli pojemniki dla niezbędnych danych (także wynikowych) oraz sposoby dostarczania danych 3) zdefiniować (krok po kroku) procedury jakie mają być wykonywane na strukturach danych - według określonych przepisów czyli algorytmów. 14 7 A więc podstawa programowania to: Umiejętność tworzenia algorytmów operujących na zmiennych i strukturach danych 15 ALGORYTM Algorytm to: a) opis danych oraz b) opis procedury realizacji zadania z pewnej, ściśle określonej klasy zadań, np..: rozwiązywania dowolnego równania kwadratowego Opis procedury składa się ze skończonej liczby jednoznacznie określonych poleceń (kroków) jakie należy wykonać w określonej kolejności dla uzyskania celu. Polecenia muszą być zrozumiałe i możliwe do realizacji dla wykonawcy algorytmu. Np.: wykonawcą algorytmu obliczeń będzie komputer a wykonawcą algorytmu pieczenia placka - pani domu 16 8 Polecenia DLA KOMPUTERA Pamiętaj, że: algorytm i program mają się składać NIE z równań i nierówności ale z POLECEŃ DLA KOMPUTERA zwanych też: instrukcjami, rozkazami, komendami, Np. polecenie: „Wczytaj A” lub dokładniej „Wczytaj wartość do zmiennej A” oznacza, że: komputer ma zażądać liczby a gdy ją otrzyma to ma ją umieścić w obszarze pamięci zarezerwowanym dla zmiennej A 17 Algorytm ma być uniwersalny dla określonej klasy zadań • Algorytm nie ma służyć jednorazowo, lecz ma stanowić procedurę rozwiązywania: DOWOLNEGO ZADANIA z określonej KLASY ZADAŃ na przykład „rozwiązywania dowolnego równania kwadratowego”. • Każdy algorytm i program powinien móc działać dla wielu różnych zestawów danych • Uzyskujemy to przez operowanie NAZWAMI zmiennych oraz dzięki umiejętności abstrakcyjnego uogólniania 18 9 Abstrakcyjne uogólnianie Tworzenie programu to NIE OBLICZENIA! Konstruując algorytm: • przeanalizuj na konkretnych przykładach - jakie operacje komputer ma wykonywać i w jakiej kolejności a następnie uogólnij tak aby algorytm mógł działać dla wielu zestawów danych • nie myśl o liczbach tylko o ROLI jaką pełnią i zastąp liczby odpowiednio nazwanymi zmiennymi • uwzględnij wszelkie sytuacje - na przykład jak unikniesz dzielenia przez zero, ... • przykłady liczbowe niech posłużą do testowania poprawności działania algorytmu i programu (unikać należy szczególnych przypadków np. jednakowych wartości zmiennych) 19 Zmienne • W programowaniu, zmienne można traktować jako pojemniki na wartości danych • Każda zmienna posiada NAZWĘ przez którą odwołujemy się do przypisanego tej zmiennej obszaru pamięci komputera • Rodzaj przechowywanych danych związany jest z typem zmiennej (np. zmienne liczbowe, tekstowe, logiczne) • Każda zmienna musi mieć ściśle określoną rolę i najlepiej gdy nazwa zmiennej kojarzy się z tą rolą • Przy tworzeniu algorytmu i programu: - koniecznie sporządź SPIS ZMIENNYCH z precyzyjnym opisem ich ról 20 10 Zmienne proste (skalarne) i struktury danych 21 ZMIENNA w dziedzinie modeli matematycznych: zmienna to symboliczna reprezentacja cechy modelowanego obiektu, procesu, lub samego modelu • a w dziedzinie programów komputerowych: zmienna to POJEMNIK NA DANE a dokładniej to obszar pamięci komputera, dostępny poprzez przypisaną mu NAZWĘ i przechowujący WARTOŚĆ (lub zbiór wartości) określonego typu. Zamiast mówić: “zmiennej X przypisano wartość ...”, lub “nadano wartość” będziemy także mówić: “do zmiennej X wstawiono wartość ...”. 22 11 Każda zmienna posiada: • NAZWĘ (lub inny identyfikator np.: adres) • TYP wartości jakie może przyjmować (oraz zakres i strukturę - jeśli jest to zmienna złożona) • WARTOŚĆ - określoną w każdym momencie (a jeśli jest to zmienna złożona to zbiór wartości) ale przede wszystkim pełni OKREŚLONĄ ROLĘ 23 Zmienne w komputerze • Każdej zmiennej przypisany jest określony obszar w pamięci operacyjnej komputera identyfikowany adresem pierwszej jego komórki • Obszar ten przechowuje wartość zmiennej a odwołujemy się do niego przez jej nazwę. • Nowo nadana wartość zmiennej zastępuje wartość dotychczasową. • Jeśli zmienna musi przechowywać wiele wartości to musi być zmienną złożoną np. wektorem, tablicą, rekordem, listą. 24 12 Zakres i czas trwania zmiennej Zmienne w programach mogą się też różnić: • Zakresem widoczności: – globalne - widziane w całym programie – lokalne - widziane tylko w jednym bloku (podprogramie) – wspólne (common) dla określonych podprogramów • Czasem trwania: – statyczne - istniejące przez cały czas działania programu – dynamiczne - tworzone i usuwane w trakcie działania progr. 25 Zmienne proste i złożone czyli STRUKTURY DANYCH Zmienna skalarna (zmienna prosta) - przechowuje pojedynczą wartość Oprócz zmiennych prostych czyli skalarnych mogą występować zmienne złożone czyli struktury danych takie jak: – tablice (wektory, macierze i in.) – rekordy (inaczej struktury) – listy (zmienna długość) i inne 26 13 Struktury danych (1) - TABLICA • TABLICA (ang.: ARRAY) to struktura wielu danych, które oprócz wspólnej nazwy posiadają indywidualne indeksy (numery). • Liczba indeksów elementu tablicy nazywa się jej wymiarem • Maksymalne wartości indeksów określają rozmiary tablicy • Tablica jednowymiarowa to WEKTOR • Tablica dwuwymiarowa to MACIERZ 27 Struktury danych (2) • Rekord to zbiór n danych o pojedynczym obiekcie lub zdarzeniu (np. twoje dane personalne: Nazwisko, rok urodzenia, ...), przy czym każda z tych danych ma określony typ i nie muszą one być jednakowego typu zbiór rekordów (wierszy) tworzy tabelę (kartotekę) bazy danych W Matlabie typ rekordowy nazywa się struct 28 14 Struktury danych (3) o zmiennej długości - Listy • Lista jednokierunkowa - to ciąg danych z których każda oprócz wartości zawiera identyfikator (lub adres) swego następnika lub znacznik końca listy • Lista dwukierunkowa - to ciąg danych z których każda oprócz wartości zawiera identyfikator (lub adres) swego następnika lub znacznik końca listy oraz identyfikator poprzednika lub znacznik początku. 29 Struktury danych (4) o zmiennej długości - stos i kolejka • Kolejka to lista o zmiennej długości do której elementy można dołączać na końcu listy a usuwać na początku listy Może być sprzętowo realizowana jako rejestr FIFO (ang.: First In First Out - „ten co pierwszy przyszedł ten pierwszy odejdzie”) _______________________________________________________ • Stos to lista o zmiennej długości w której zarówno dołączanie jak usuwanie elementów odbywa się na końcu listy. Może być sprzętowo realizowana jako rejestr LIFO (ang.: Last In First Out - „ostatni przyszedł pierwszy wyjdzie”) 30 15 „Cegiełki” do budowy algorytmów obliczeniowych Do budowania algorytmów obliczeniowych oraz tworzenia programów obliczeniowych, w dowolnym języku programowania, wystarczy znać: 8 podstawowych typów poleceń: 31 8 podstawowych typów poleceń: 1) Wprowadzanie (wczytywanie) danych = wartości Wczytaj A, B danych pobierane z urządzenia wejściowego lub z pliku mają być przesłane do odpowiednich zmiennych 2) Podstawianie (przypisywanie) = wartość podanego A=A+2*B wyrażenia ma być wyznaczona i przesłana do zmiennej (przypisana zmiennej) Drukuj A, B 3) Wyprowadzanie wyników i objaśnień na ekran lub drukarkę lub do pliku, ... Tak Nie 4) Instrukcja warunkowa „Jeżeli... to” - zależnie od A>100 spełnienia lub nie spełnienia określonego warunku nastąpi wybranie jednego z dwu wariantów Dwa typy PĘTLI dla powtarzania czynności: 5) pętla typu „Dla ...” 6) pętla typu „Podczas...” 7) Definiowanie własnych podprogramów i funkcji 8) Wywoływanie podprogramów (funkcji i procedur) 32 16 Podstawowe polecenia: 1) Wczytywanie - czyli polecenie wprowadzenia wartości danej z urządzenia wejściowego do zmiennej. Na przykład: Wczytaj F Oznacza: Komputer zażąda wprowadzenia z klawiatury wartości zmiennej F wyświetlając na ekranie tekst zrozumiały dla użytkownika i określający rolę tej zmiennej np.: Sila= a wpisaną liczbę wstawi do zmiennej F 33 Podstawowe polecenia c.d.: 2) Podstawianie lub inaczej przypisanie zmienna = wyrażenie - to nadanie zmiennej, wartości obliczonego wyrażenia a najprostsze wyrażenie to stała (liczba) lub zmienna. Przykłady: Zeta =1.567 y1 = sin(x-1)*x^2-5 a nawet: X=X+2 - co oznacza: do dotychczasowej wartości zmiennej X dodaj 2 i wynik wstaw do X jako jej nową wartość. Krócej mówiąc: Zwiększ X o 2 34 17 Symbole przypisania W różnych językach stosowane są różne symbole podstawiania: := = w algorytmach, Mathcadzie, Algolu, Pascalu: w algorytmach: w algorytmach, Matlabie, Basic’u: zmienna := wyrażenie zmienna wyrażenie zmienna = wyrażenie 35 Podstawowe polecenia c.d.: 3) Wyprowadzanie wyników (napisów i wartości zmiennych) przez urządzenie wyjściowe (ekran, drukarkę) lub do pliku dyskowego Przykłady (w algorytmach): 1) Wyświetl (lub wydrukuj) tekst ”Moment=" oraz wartość zmiennej Moment 2) Drukuj A, B 36 18 Podstawowe polecenia c.d.: 4) Rozgałęzienie "Jeśli... to ... w przeciwnym przypadku ...” (w Matlabie instrukcja IF ... ELSE ...END) Przykład 1: 1) Jeśli wyrażenie Delta>0 jest prawdziwe to wykonaj grupę instrukcji S1 a jeśli nie to wykonaj grupę instrukcji S2 Przykład 2: 2) Tak A>100 Nie 37 Podstawowe polecenia c.d.: 5) Pętla typu "Dla wartości ... wykonuj ... koniec" (instrukcja pętli "FOR ... END") Przykład (w algorytmie): Dla poszczególnych wartości zmiennej X, zmieniającej się od XP do XK z przyrostem DX wykonuj ciąg instrukcji zapisanych poniżej aż do słowa KONIEC (tyle razy ile będzie wartości X) 38 19 Podstawowe polecenia c.d.: 6) Pętla typu "Dopóki ..." (instrukcja pętli "WHILE ... WEND") Przykład (w algorytmie): Tak długo jak spełnione jest wyrażenie logiczne „warunek” powtarzaj wykonywanie instrukcji zapisanych poniżej aż do słowa KONIEC 39 Podstawowe polecenia c.d.: 7) Definiowanie podprogramu 8) Wywołanie podprogramu (wcześniej zdefiniowanego) Przykład: Wywołanie podprogramu rozwiązywania równania kwadratowego: [X1, X2] = RRKW(-3, 7.45, 0.9) a b c RRKW podprogram rozwiązywania równania kwadratowego X1 X2 40 20 Przykłady algorytmów 41 Przykład 1: Utwórz algorytm wyznaczania sumy ciągu N dowolnych liczb wczytywanych z klawiatury Próbujemy sformułować różne warianty, dążąc do zapisu w którym identyczne operacje są powtarzane - wtedy można użyć t.zw. pętlę programową Najprostszy jest wariant (c): S := S+Ai oznacza: „dotychczasową wartość S zwiększ o Ai i zapamiętaj jako nowe S” 42 21 c.d. Przykładu 1 (suma ciągu N wczytywanych liczb) Jeśli nie jest potrzebne pamiętanie całego ciągu to wystarczą zmienne proste (skalarne): N - liczba elementów ciągu i - numer wczytywanej liczby A - wartość wczytanej i-tej liczby S - suma już wczytanych liczb 43 Przykład 1 c.d. - program w języku BASIC PRINT "Program oblicza sume ciagu dowolnych liczb" INPUT "Podaj ilosc liczb (elementow ciagu), N="; N S=0 FOR i = 1 TO N INPUT "Wpisz element ciagu A="; A S=S+A NEXT i PRINT "SUMA="; S 44 22 Przykłady algorytmów z użyciem tablic i podprogramów 45 Przykład 2 - Potrzeba zastosowania tablicy Utworzyć algorytm wyznaczania średniej oraz wariancji i odchylenia standardowego ciągu wczytanych N liczb (wyników pomiarów) Jak widać ciąg A(i) potrzebny jest dwukrotnie 46 23 c.d. Przykładu 2 - potrzeba tablicy Wariancja to średnia z ciągu kwadratów odchyleń od średniej. Po wyznaczeniu sumy oraz średniej arytmetycznej, wczytany ciąg będzie znowu potrzebny do wyznaczania odchyleń od średniej. W takim przypadku trzeba zapamiętać cały ciąg liczb w tablicy, więc potrzebne są zmienne: N - liczba powtórzeń i - numer wczytywanej liczby A(i) - i-ta liczba wczytana do i-tego elementu tablicy S - suma już wczytanych liczb SR - srednia z ciagu wyników pomiarów V - wariancja OD - odchylenie standardowe D(i) - ciag kwadratów odchylen 47 Program w języku BASIC (z tablicami) 48 24 Przykład 2 c.d. - potrzeba podprogramów Wczytywanie z pliku dyskowego ciągu liczb o niewiadomej długości to często występujące w różnych problemach zadanie więc: - warto zdefiniować wczytywanie z pliku jako osobny podprogram Wyznaczanie średniej w naszym zadaniu odbędzie się dwa razy: 1) średnia z ciągu wyników pomiarów 2) średnia z ciągu kwadratów odchyleń wyników od średniej - warto więc utworzyć podprogram funkcyjny (funkcję) do obliczania średniej 49 Przykład 2 c.d. - Definiowanie podprogramów 50 25 Użycie podprogramów 51 Postacie zapisu algorytmów Ten sam algorytm może być zapisywany przy użyciu różnych środków (języków) np.: 1) w języku naturalnym - po polsku, w postaci ponumerowanych poleceń, 2) w postaci schematu blokowego 3) w języku programowania komputera - jako program • ............ Tak więc ważna jest merytoryczna treść algorytmu oraz zrozumiałość, jednoznaczność i wykonalność poleceń a nie środki zapisu 52 26 PROGRAM to ALGORYTM zapisany w języku programowania 53 Przykład: algorytm obliczania kwadratów dowolnych liczb postać 1: opis słowny 1) Będą użyte zmienne liczbowe: X, Y, oraz tekstowa: P 2) Wyświetl: „Obliczanie kwadratów. Podaj liczbę:” 3) Wczytaj liczbę do zmiennej X 4) Oblicz: X*X i wynik wstaw do Y 5) Wyświetl tekst „ Kwadrat liczby =” oraz wartość Y 6) Wyświetl pytanie: „Czy nowe obliczenie? (T/N):” 7) Wczytaj znak z klawiatury do zmiennej P 8) Jeśli wartość P = „T” lub P = „t” to skocz do (2) 9) KONIEC 54 27 algorytm obliczania kwadratów dowolnych liczb postać 2: schemat blokowy 55 algorytm obliczania kwadratów dowolnych liczb postać 3: program w języku BASIC ' w tym języku nie musimy deklarować zmiennych 2 PRINT "Obliczanie kwadratów" INPUT "Podaj liczbe:"; X Y=X*X PRINT "Kwadrat liczby ="; Y INPUT "Czy nowe obliczenie? (T/N):"; P$ IF P$ = "T" OR P$ = "t" GOTO 2 STOP 56 28 algorytm obliczania kwadratów dowolnych liczb postać 4: program w języku PASCAL program kwadraty; uses crt, dos; VAR x,y:real; p:char; label 2; BEGIN 2: writeln('Obliczanie kwadratow.'); write('Podaj liczbe:'); readln(x); y:=x*x; write('Kwadrat liczby='); writeln(y); write('Czy nowe obliczenie? (T/N):'); readln(p); if (p='T') OR (p='t') then goto 2 END. 57 algorytm obliczania kwadratów dowolnych liczb postać 5: program w języku MATLAB % Program oblicza kwadraty liczb p= 't'; while p=='T' | p=='t' disp('Obliczanie kwadratow.'); x = input('Podaj liczbe :'); y = x^2; disp('Kwadrat liczby = '); disp(y); p=input('Czy nowe obliczenie? (T/N):', 's'); end 58 29 algorytm obliczania kwadratów dowolnych liczb postać 6: program w języku C main() { float x,y; char p; p='t'; while(p=='t'| p=='T') { printf("\n OBLICZANIE KWADRATOW. Podaj liczbe:"); scanf("%f",&x); y=x*x; printf("\n Kwadrat liczby= %f",y); printf("\n Czy nowe obliczenia? (T/N):"); p=getch(); } } 59 Idea zadań śledzenia algorytmu Śledzenie algorytmów polega na wykonywaniu poleceń zawartych w algorytmie, w podobny sposób jak wykonywałby to komputer. Może być to przydatne dla sprawdzenia poprawności algorytmu, ale na ćwiczeniach z informatyki poprawne wykonanie zadania ze śledzenia algorytmów udowodni, że student zna sens i działania poszczególnych poleceń. Każdy student otrzyma ten sam algorytm oraz inny zestaw danych. Na kartce wydzieli obszary: 1) dla danych czekających w kolejce na urządzeniu wejściowym, 2) dla pamięci zmiennych 3) dla wydruku wyników 60 30 Śledzenie działań algorytmu 61 Śledzenie działań algorytmu 62 31 Śledzenie działań algorytmu 63 Śledzenie działań algorytmu 64 32 Śledzenie działań algorytmu 65 Śledzenie działań algorytmu 66 33 Śledzenie działań algorytmu 67 Śledzenie działań algorytmu 68 34 Śledzenie działań algorytmu 69 Śledzenie działań algorytmu 70 35 Śledzenie działań algorytmu 71 Śledzenie działań algorytmu 72 36 Przykład algorytmu porządkowania ciągu: 73 37