1 inf wyk1 2017 - kkiem.agh.edu.pl · opis języka basic oraz przykłady programów w tym j ęzyku...
TRANSCRIPT
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, tel.617-31-272
AGH WIMiR Studia Niestacjonarne
Semestr 2: Informatyka 2016AiR 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
3
Cele nauczania przedmiotu Informatyka(ograniczone wymiarem godzinowym)
1) poznanie podstaw konstruowania algorytmów
2) nabycie umiejętności konstruowania prostych programów z użyciem
standardowych poleceń dostępnych w większości języków programowania
3) nauczenie się podstaw użytkowania języka i potężnego pakietu
oprogramowania jakim jest Matlab, a w tym środków do
operowania na tablicach oraz generowania wykresów
4) poznanie zasad tworzenia programów obiektowo-zdarzeniowych
z interfejsem graficznym („okienkowych”) w Matlabie
4
8 godz. ćwiczeń laboratoryjnych:
• Algorytmy (1 godz.)- śledzenie działań (oceniane),
konstruowanie algorytmów (zadanie domowe)
• MATLAB (7 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ń
Ćwiczenia Laboratoryjne:
5
Podręcznik:
Wprowadzenie
do Informatyki
i
Programowania
Z. Rudnicki. Wyd. AGH
wydanie drugie
Kraków 2015
6
Podręcznik zawiera m.in.:
1. Podstawy tworzenia stron WWW w językach HTML i PHP
2. Wiedzę o algorytmach i strukturach danych
wraz z przykładami i ćwiczeniami
3. Opis języka BASIC oraz przykłady programów w tym języku
4. Podstawy programowania obiektowego na przykładzie w Visual Basic-u
5. Szczegółowe wprowadzenie do programowania w MATLAB-ie
(3 rozdziały) z uwzględnieniem:
– instrukcji strukturalnych,
– operacji na tablicach,
– tworzenia wykresów,
– programowania w trybie graficznym
6. Opis podstaw języka C i porównania go z Matlabem
7. Wprowadzenie do programowania Baz Danych
8. Zarys wybranych metod sztucznej inteligencji
(sieci neuronowe i systemy ekspertowe)
2
7
Tematyka wykładów (obecność sprawdzana):
1) Wprowadzenie do algorytmów i struktury danych oraz
metody i narzędzia programowania
2) Matlab - charakterystyka, tryby użytkowania i podstawy
programowania
3) Przykłady programów w Matlabie
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
Wykład 1:
Wprowadzenie do programowania
czyli
ALGORYTMY i STRUKTURY
DANYCH
Opracował: Zbigniew Rudnicki
9
Po co komputerowi programy?
Komputer dzięki programom (aplikacjom) 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
• .......
10
Współczesne programy „okienkowe”
kontra „tradycyjne” programy linearne
• Współczesne programy „okienkowe” są obiektowo-zdarzeniowymi, czyli:
- program prezentuje na ekranie szereg obiektów
i czeka na zdarzenia np.: kliknięcie któregoś z nich.
Inaczej mówiąc:
steruje użytkownik a programów jest tyle ile zdarzeń.
• Tradycyjny program - realizując ściśle określone zadanie - wykonuje
polecenia krok po kroku w kolejności (linearnej) w jakiej są zapisane
w programie,
a w określonych sytuacjach żąda od użytkownika danych.
Inaczej mówiąc: steruje program a użytkownik się do niego
dostosowuje choć może wybierać zaproponowane warianty
11
Najpierw programowanie tradycyjne
Większą część semestru poświęcimy nauce programowania
tradycyjnego
- z użyciem niewielkiej liczby podstawowych poleceń wtym instrukcji strukturalnych, organizujących rozgałęzienia
i pętle programu.
Dopiero ostatnie zajęcia poświęcone będą znacznie
trudniejszemu -
programowaniu obiektowo-zdarzeniowemu
12
Jak opracować program
dla realizacji określonego zadania?1) określić jakie wyniki mają być uzyskane
oraz jakie dane będą do tego niezbędne
2) zdefiniować potrzebne zmienne - a dokładniej struktury
danych czyli pojemniki
dla danych oraz wyników pośrednich i końcowych
3) zdefiniować (krok po kroku) algorytm czyli ciąg operacji
jakie mają być wykonywane na danych
4) zapisać algorytm jako program w określonym języku
programowania
5) przetestować działanie programu na reprezentacyjnych
zestawach danych i dokonać niezbędnych poprawek.
3
13
A więc podstawy
programowania to:
1. Umiejętność tworzenia algorytmów
operujących na
zmiennych i strukturach danych
2. Znajomość języka programowania
i środowiska do uruchamiania i
testowania programów
14
ALGORYTMAlgorytm 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
15
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
16
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
17
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ą izastą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 (należy wówczas unikać szczególnych przypadków np.
jednakowych wartości zmiennych)
18
Zmienne proste (skalarne)
i struktury danych
4
19
Zmienne w programowaniu• Zmienne traktujemy jak 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
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Ę
21
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ą.
22
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.
23
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
24
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
5
25
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
26
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.
27
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”)
28
Podstawowe polecenia
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ń:
29
8 podstawowych typów poleceń:1) Wprowadzanie (wczytywanie) danych = wartości
danych pobierane z urządzenia wejściowego lub z
pliku mają być przesłane do odpowiednich zmiennych
2) Podstawianie (przypisywanie) = wartość podanego
wyrażenia ma być wyznaczona i przesłana do
zmiennej (przypisana 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 -
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)
Wczytaj A, B
A=A+2*B
Drukuj A, B
A>100Tak Nie
30
Podstawowe polecenia:
1) Wczytywanie - czyli polecenie wprowadzenia wartości danej
z urządzenia wejściowego do zmiennej.
Na przykład:
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
Wczytaj F
6
31
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
32
Symbole przypisania
W różnych językach 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
33
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
34
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)A>100
Tak Nie
35
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)
36
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
7
37
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)
RRKW
podprogram rozwiązywania
równania kwadratowego
a b c
X2X1
38
Przykłady algorytmów
39
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” 40
c.d. Przykładu 1 (suma ciągu N wczytywanych liczb)
N - liczba elementów ciągu
i - numer wczytywanej liczby
A - wartość wczytanej i-tej liczby
S - suma już wczytanych liczb
Jeśli nie jest potrzebne pamiętanie całego ciągu to
wystarczą zmienne proste (skalarne):
41
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
42
Przykłady algorytmów
z użyciem tablic
i podprogramów
8
43
Przykład 2 - Potrzeba zastosowania tablicyUtworzyć 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
44
c.d. Przykładu 2 - 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
SR - srednia z ciagu wyników pomiarów
V - wariancja
OD - 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, 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:
45
Program w języku BASIC (z tablicami)
46
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
47
Przykład 2 c.d. - Definiowanie podprogramów
48
Użycie podprogramów
9
49
Postacie zapisu algorytmówTen 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
50
PROGRAM
to
ALGORYTM
zapisany w języku programowania
51
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
52
algorytm obliczania kwadratów dowolnych liczb
postać 2: schemat blokowy
53
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
54
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.
10
55
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
56
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();
}
}
57
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
58
Śledzenie działań algorytmu
59
Śledzenie działań algorytmu
60
Śledzenie działań algorytmu
11
61
Śledzenie działań algorytmu
62
Śledzenie działań algorytmu
63
Śledzenie działań algorytmu
64
Śledzenie działań algorytmu
65
Śledzenie działań algorytmu
66
Śledzenie działań algorytmu