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

Podobne dokumenty