1
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
2
AGH WIMiR
Studia Niestacjonarne
Semestr 2:
Informatyka
AiR
10 godz. wykładu, 10 godz. laboratorium
MiBM
8 godz. wykładu, 16 godz. laboratorium
• Wykłady: B2 sala 100 oraz 140
dr inż Zbigniew Rudnicki, B-2 pok.301
e-mail: zbigniew.rudnicki@agh.edu.pl
• Laboratoria: B2 sale: 320-322
- dr inż. Krystyna Prync-Skotniczny
- mgr inż. Piotr Bera
Informacje:
w INTERNECIE:
http://www.kkiem.agh.edu.pl
i niektóre w gablotce B-2 III p. obok pokoju 301
2
3
Cele nauczania przedmiotu Informatyka
1) poznanie podstawowych idei konstruowania algorytmów
i programowania
komputerów, z wykorzystaniem różnych
struktur danych
i języków programowania;
2) nauczenie się podstaw użytkowania potężnego pakietu
oprogramowania jakim jest Matlab i poznanie niektórych,
jego możliwości;
3) poznanie zasad tworzenia programów z interfejsem
graficznym
(„okienkowych”) w Matlabie i Visual Basic’u
4) poznanie podstawowych idei, narzędzi i zastosowań
Baz Danych
.
4
Wykłady (obecność sprawdzana)
Tematyka:
1) Algorytmy i struktury danych
2) Matlab - charakterystyka pakietu, tryby użytkowania.
3) Podstawy programowania w języku Matlab
4) Macierze i operacje macierzowe w Matlabie
5) Wykresy i obiekty graficzne w Matlabie
6) Matlab - tworzenie graficznego interfejsu użytkownika
7) Programowanie obiektowe w Matlabie i Visual Basic
8) Ogólna charakterystyka języka C i porównanie z Matlabem
9) Budowa i obsługa baz danych. Elementy języka SQL
10) Internetowe bazy danych i dynamiczne strony www
3
5
10 godz. Ćwiczeń Lab.:
• Algorytmy - śledzenie działań (oceniane), konstruowanie.
• MATLAB:
– 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
– struktury i bazy danych
– test: podstawowe pojęcia z wykładów i ćwiczeń
• Visual Basic - budowa prostych programów
Ćwiczenia Laboratoryjne:
6
Materiały do zajęć z Matlaba
http://www.kkiem.agh.edu.pl/dydakt/matlab/2012/index.html
Pobrać, wydrukować
i korzystać !!
Przeczytać!!
4
7
TREŚĆ Kompendium Matlaba
(48 str.):
8
5
9
Wykład 1:
ALGORYTMY I STRUKTURY
DANYCH
- przypomnienie podstawowych pojęć
Opracował: Zbigniew Rudnicki
6
11
Podstawy programowania to:
• Umiejętność tworzenia
algorytmów
• Znajomość
struktur danych
i sposobów ich wykorzystywania
12
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
7
13
Algorytmy w programowaniu
• Algorytm to koncepcja działania programu lub jego
wydzielonego fragmentu (podprogramu),
• Każdy algorytm i program powinien być tak skonstruowany aby:
działać dla wielu różnych zestawów danych
• To znaczy:
algorytm
ma być procedurą
rozwiązywania:
DOWOLNEGO ZADANIA z określonej KLASY ZADAŃ
• Uzyskuje się to przez operowanie NAZWAMI zmiennych
oraz dzięki umiejętności abstrakcyjnego uogólniania
14
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 dowolnych danych
•
nie myśl o liczbach
tylko o ROLI jaką pełnią i zastąp je odpowiednio
nazwanymi zmiennymi
•
uwzględnij wszelkie sytuacje - na przykład jak unikniesz dzielenia
przez zero, ...
•
przykłady liczbowe posłużą do testowania poprawności działania
algorytmu czy programu
Przykładowe oznaczenia i role zmiennych:
c
- wyraz wolny w równaniu kwadratowym
n
- liczba elementów ciągu
i
- licznik elementów a zarazem numer elementu
8
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ć:
7
podstawowych typów poleceń:
16
7
podstawowych typów poleceń:
1) Wprowadzanie danych = wczytanie
wartości do zmiennej (z klawiatury lub
innego urządzenia lub z pliku tekstowego)
2) Podstawianie = obliczenie wartości
wyrażenia i podstawienie do zmiennej
3) Wyprowadzanie wyników i objaśnień na
ekran lub drukarkę lub do pliku, ...
4) Instrukcja warunkowa „Jeżeli... to” -
zależnie od spełnienia lub nie spełnienia
określonego warunku - wybranie jednego z
dwu wariantów
Pętle
dla powtarzania czynności
5) typu „Dla ...” 6) typu „Podczas...”
7) Wywołanie podprogramu
Wczytaj A, B
A=A+2*B
Drukuj A, B
A>100
Tak
Nie
9
17
Zmienne
• Algorytmy i programy nie powinny zawierać
danych liczbowych
• Zamiast nich należy używać NAZWY
reprezentujące zmienne proste lub zmienne
złożone
czyli struktury danych
• Każda zmienna musi mieć ściśle określoną rolę
• Najlepiej gdy nazwa zmiennej kojarzy się z rolą tej
zmiennej
18
Przykład 1:
Utworzyć algorytm wyznaczania sumy
ciągu
N dowolnych liczb wczytywanych z klawiatury
Przy realizacji wielu podobnych operacji dążymy do takiego
ich sformułowania aby mogły być wielokrotnie
powtarzane
przy pomocy pętli programowej
Najprostszy
jest wariant c:
S := S+A
i
oznacza:
„dotychczasową
wartość S
zwiększ o A
i
i zapamiętaj
jako nowe S”
10
19
Przykład 1 c.d.
Algorytm wyznaczania sumy ciągu N dowolnych liczb
wczytywanych z klawiatury c.d
.
N
- liczba powtórzeń
i - numer wczytywanej liczby
A
- wczytana i-ta liczba
S
- suma już wczytanych liczb
Jeśli wczytywana liczba będzie zaraz po wczytaniu zwiększała sumę
i nie będzie potem potrzebna, to kolejną liczbę można wczytać
do tej samej zmiennej.
W takim przypadku nie jest potrzebne pamiętanie całego ciągu
w tablicy więc
wystarczą zmienne:
20
Przykład 2:
Utworzyć algorytm wyznaczania średniej
oraz wariancji i odchylenia standardowego ciągu N liczb
(wyników pomiarów)
11
21
Przykład 2 c.d. - potrzeba tablicy
N
- liczba powtórzeń
i - numer wczytywanej liczby
A(i)
- i-ta liczba wczytana do i-tego elementu tablicy
S
- suma już wczytanych liczb
µ
µ
µ
µ - srednia z ciagu wyników pomiarów
V
- wariancja
σ
σ
σ
σ - odchylenie standardowe
D(i) - ciag kwadratów odchylen
Wariancja to średnia z ciągu kwadratów odchyleń od średniej.
Po wyznaczeniu sumy oraz średniej arytmetycznej, ciąg liczb będzie
więc znowu potrzebny do wyznaczania odchyleń poszczególnych
liczb od tej średniej.
W takim przypadku trzeba zapamiętać cały ciąg liczb w tablicy, więc
potrzebne są zmienne:
22
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
12
23
Przykład 2 c.d. - podprogramy
24
13
25
Więcej o zmiennych
i
strukturach danych
26
ZMIENNA
Zmienna
:
• w dziedzinie modeli matematycznych: zmienna to symboliczna
reprezentacja cechy
modelowanego obiektu, procesu, lub
samego modelu
• a w dziedzinie programów komputerowych: zmienna to obszar
pamięci komputera
, dostępny poprzez przypisaną mu nazwę i
przechowujący wartość określonego typu.
Skoro zmienną w algorytmie i programie można traktować jak
"pojemnik" na dane określonego typu, więc zamiast mówić:
“zmiennej X przypisano wartość ...”, lub “nadano wartość”
będziemy także mówić: “do zmiennej X wstawiono wartość ...”.
14
27
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Ę
28
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ą.
15
29
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.
30
Zmienne proste i złożone
czyli STRUKTURY DANYCH
Oprócz zmiennych prostych czyli skalarnych
mogą występować zmienne złożone czyli struktury
danych
takie jak:
– wektory
– macierze dwu (lub więcej) wymiarowe
– rekordy
– listy (zmienna długość)
16
31
Struktury danych (1)
• Zmienna skalarna - jej wartość w każdym momencie jest
pojedynczą liczbą
Zmienną skalarną można traktować
jak pojemnik zawierający wartość liczbową
a identyfikowany przez nazwę
• Wektor n wymiarowy - to ciąg n ponumerowanych
składowych z których każda jest skalarem;
rozróżniane są wektory wierszowe i kolumnowe.
Np.:
trzyelementowy wektor wierszowy w MATLABIE:
a) definiowanie:
Vkr = [3.75, 2.87, 9.32];
b) wybranie drugiego elementu:
Vkr(2)
128.5
M1
32
Struktury danych(2)
• Macierz- to prostokątna tablica,
każda jej kolumna jest wektorem
Przykład macierzy w Matlabie:
>> M = [9.88, 12.4, 3.5; 8.45, 0, -6.23]
M =
9.8800 12.4000 3.5000
8.4500 0 -6.2300
17
33
Struktury danych (3)
• 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
34
Struktury danych 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.
18
35
Struktury danych 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”)
36
PROGRAM
to
ALGORYTM
zapisany w języku programowania
19
37
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.:
„Wczytaj wartość do zmiennej A”
oznacza, że komputer ma zażądać liczby i jak ją
otrzyma to ma wstawić do miejsca w pamięci
zarezerwowanego dla zmiennej A
38
Podstawowe struktury w algorytmach
• Sekwencja (stuktura liniowa)
• Rozgałęzienie „Jeśli ... to ... w przeciwnym razie ...”
• Pętla z daną liczbą powtórzeń
np.: „Dla i zmieniajacego się od 1 do 10...”
• Pętla warunkowa „Powtarzaj tak długo jak...”
• Podprogram:
– Procedura
– Funkcja
20
39
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
40
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
21
41
algorytm obliczania kwadratów dowolnych liczb
postać 2:
schemat blokowy
42
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
22
43
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.
44
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
23
45
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();
}
}
46
Podstawowe polecenia:
1) Wczytywanie
-
czyli polecenie wprowadzenia wartości danej
z urządzenia wejściowego do zmiennej.
Na przykład:
Oznacza:
Zażądaj wprowadzenia z klawiatury liczby
np. wyświetl:
Sila=
a wpisaną liczbę wstaw do zmiennej
F
------------------------------------------------------------------------------------------
Zażądaj wprowadzenia z klawiatury liczby
np.: wyświetl:
Ramie=
a wpisaną liczbę wstaw do zmiennej
R
Wczytaj F
Wczytaj R
24
47
Podstawowe polecenia:
2) Podstawianie
lub inaczej przypisanie
- to nadanie zmiennej, wartości obliczonego wyrażenia
a najprostsze wyrażenie
to stała (liczba) lub zmienna.
Stosowane są różne symbole podstawiania:
:=
=
w algorytmach, Mathcadzie, Algolu, Pascalu:
zmienna
:=
wyrażenie
w algorytmach:
zmienna
wyrażenie
w algorytmach, Matlabie, Basic’u:
zmienna
=
wyrażenie
48
Podstawowe polecenia:
c.d. Podstawianie lub inaczej przypisanie
Przykłady:
Wartość 5,75 prześlij do pamięci komputera, do
miejsca zarezerwowanego dla zmiennej A
Wykorzystując aktualną wartość zmiennej A
oblicz wartość wyrażenia 2*A^2-3 i podstaw ją
do zmiennej B
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
A = 5,75
B:=2*A^2 -3
X=X+2
25
49
Podstawowe polecenia:
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
50
Podstawowe polecenia:
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)
A>100
Tak
Nie
26
51
Podstawowe polecenia:
5a) 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)
52
Podstawowe polecenia:
5b) Pętla typu "Dopóki ..."
(instrukcja pętli "WHILE ... END")
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
27
53
Podstawowe polecenia:
6) Wywołanie podprogramu
(wcześniej zdefiniowanego)
Przykład:
Wywołanie podprogramu
rozwiązywania równania
kwadratowego:
[X1, X2] = RRKW(-3, 7.45, 0.9)
RRKW
podprogram rozwiązywania
równania kwadratowego
a
b
c
X2
X1
54
Ś
ledzenie działań algorytmu
28
55
Ś
ledzenie działań algorytmu
56
Ś
ledzenie działań algorytmu
29
57
Ś
ledzenie działań algorytmu
58
Ś
ledzenie działań algorytmu
30
59
Ś
ledzenie działań algorytmu
60
Ś
ledzenie działań algorytmu
31
61
Ś
ledzenie działań algorytmu
62
Ś
ledzenie działań algorytmu
32
63
Ś
ledzenie działań algorytmu
64
Ś
ledzenie działań algorytmu
33
65
Ś
ledzenie działań algorytmu
66
Algorytm porządkowania