1
Wszelkie prawa do zadań, plików i instrukcji są zastrzeżone, nikt poza prowadzącymi zajęcia i studentami IA
na AGH nie ma prawa ich wykorzystywać. A tych co mają takie prawa, proszę, aby nie umieszczali ich w innym
miejscu w sieci.
skrypty
Skrypty to pliki o rozszerzeniu m
Wa
ż
ne !
Skrypty nie przyjmują argumentów przy wywołaniu i nie zwracają wartości przy wyjściu.
Nazwy plików powinny zaczynać się od litery i powinny zawierać tylko litery/cyfry i znak ‘_’.
Powinny zaczynać się od litery i nie mogą zawierać polskich znaków!
Nazwy plików powinny być
1.
różne od nazw zmiennych, które występują w skrypcie
2.
różne od nazw funkcji
Skrypt uruchamia
•
wpisuj
ą
c jego nazw
ę
w Command Window
•
klikaj
ą
c na nazw
ę
prawym klawiszem myszy i wybieraj
ą
c z menu Run
•
lub w edytorze klikaj
ą
c w
Dwie rady :
1. Napisz w pierwszej linijce skryptu w komentarzu do czego słu
ż
y skrypt,
2. a w drugiej linijce napisz instrukcj
ę
, która czy
ś
ci pami
ęć
komputera.
Przypomnienie: Ka
ż
da linijka, która ko
ń
czy si
ę
; nie wy
ś
wietla warto
ś
ci zmiennej
Wszystkie skrypty mają być zapisane w dowolnym folderze należącym do Państwa. Proszę sobie taki
folder stworzyć i proszę nie korzystać z rozwiązań, które są już na dysku. Nic się przy takich
kombinacjach nie nauczycie.
Proszę otworzyć nowy skrypt i skopiować do edytora kod z zadania 1 i zapisać skrypt w swoim folderze.
Proszę uruchomić program/skrypt.
2
Zad 1.
Plik o nazwie kodowanie, które koduje słowo poprzez przesunięcie odczytanej litery o dwa następne znaki
jest poniżej
%kodowanie słowa
clear
all
;
w=input(
'Podaj słowo:'
,
's'
);
w=w+2;
w=char(w);
disp([
' zakodowane słowo: '
w]);
Proszę poprawić program tak, aby 1 literę przesunął o jeden znak, drugą o dwa znaki itp. ( n’ta o n znaków).
Podpowiedź – do wektora w dodajemy inny wektor - potrzebna jest jednak informacja
o długości wektora w
- length(w)
.
Uwaga ! jeśli to zadanie rozwiązujesz dłużej niż 15 minut proszę go opuścić i przejść dalej.
Instrukcje warunkowe
Mamy możliwość skorzystania z dwóch instrukcji warunkowych, które wykorzystują operatory logiczne
równe = =,
ró
ż
ne ~ =, mniejsze <, większe >, mniejsze lub równe <=, większe lub równe >=, i &, lub |
if wyrażenie_logiczne
instrukcje
elseif wyrażenie_logiczne
instrukcje
else
instrukcje
end
switch wyrażenie
case wartość_1
instrukcje
case wartość_2
instrukcje
otherwise
instrukcje
end
3
Zad 2.
Napisz skrypt, który skomentuje wiek wprowadzony z klawiatury – dla mniej ni
ż
5
lat to dziecko, starsze dziecko do 12 lat młodzie
ż
jest do 18 itp. Instrukcja ma by
ć
jedna, a ilo
ść
ró
ż
nych komentarzy 7.
Pętle
Pętla jest stosowana, gdy będą zachodzić powtórzenia instrukcji zawartych wewnątrz pętli
while wyrazenie logiczne
...
end
uwaga, dla tych osób, którzy nie programowali wcześniej ! wyrażenie logiczne musi być prawdą, aby
pętla została choć raz wykonana i musi zmienić swoją postać wewnątrz pętli, aby pętla przestała
działać.
Przerwanie nieskończonej pętli równoczesne naciśnięcie klawiszy CTRL i C
lub CTRL i Pause Break
Zad 3. Proszę napisać program/skrypt ( nie używając INSTRUKCJI WARUNKOWYCH ! tylko samą pętlę while) , który
pyta o coś (np. Czy jutro jest wtorek?’) . Jeśli ktoś odpowie T lub t to wychodzimy z pętli, w przeciwnym wypadku
ciągle zadajemy to samo pytanie.
for k=początek:krok:koniec
...
end
Zad 4.
Napisz skrypt/program, który utworzy wektor o 10 000 elementów z kolejnymi
wielokrotno
ś
ciami liczby 2. U
ż
ywaj
ą
c polecenia tic i toc ( przykład jest w pomocy
Matalba’a – tic i czas=toc;) prosz
ę
poda
ć
ile razy szybciej mo
ż
na to wykona
ć
u
ż
ywaj
ą
c
p
ę
tli for i za pomoc
ą
rachunku macierzowego - bez p
ę
tli.
Jak się szuka
minimum/maksimum za pomocą pętli ?
informacja dotyczy tych osób, które jeszcze tego nie wiedzą
Algorytm poszukiwania minimum/maksimum ( oznaczam min/max jako poszukiwany) w wektorze X jest
następujący:
1.
Należy założyć, że poszukiwane minimum/maksimum jest równe wartości pierwszego elementu w
wektorze
poszukiwany=X(1);
4
2.
Należy w pętli sprawdzić, czy kolejny (od 2 do ostatniego elementu) element wektora nie jest
mniejszy ( dla minimum) / nie jest większy ( dla maksimum) od zmiennej poszukiwany. Jeśli jest to
należy sobie zapamiętać, że
poszukiwany=element;
3.
Po zakończeniu pętli wypisujemy zmienną poszukiwany.
Zad 5.
Napisz skrypt/program, który losuje do wektora (100X1) liczby całkowite z zakresu
od 1-100. Dwoma sposobami, za pomoc
ą
p
ę
tli i za pomoc
ą
rachunku macierzowego:
a)
znajd
ź
warto
ść
najmniejsz
ą
i warto
ść
najwi
ę
ksz
ą
b)
wypisz gdzie wyst
ę
puje warto
ść
najwi
ę
ksza i najmniejsza
c)
sprawd
ź
ró
ż
nice w czasie wykonywania programów w p
ę
tli i bez p
ę
tli
d)
sprawd
ź
, czy w wektorze jest liczba 10. Napisz ile razy wyst
ę
puje ta liczba.
Jak się szuka określonej liczby w wektorze za pomocą pętli ?
informacja dotyczy tych osób, które jeszcze tego nie wiedzą
Algorytm poszukiwania określonej liczby ( oznaczam liczbę jako poszukiwany) w wektorze X jest
następujący:
1.
Należy ustalić , że jakaś zmienna pomocnicza np. licznik ma wartość 0.
licznik=0;
2.
Należy w pętli sprawdzić, czy kolejny (od 1 do ostatniego elementu) element wektora jest równy
zmiennej poszukiwany. Jeśli jest to należy zwiększyć licz o 1 za pomocą instrukcji
licznik=licznik+1; ( jedna z najistotniejszych instrukcji w programowaniu)
3.
Po zakończeniu pętli sprawdzamy jaka jest wartość licznik, jeśli ma wartość 0, to nie występuje
poszukiwany, w przeciwnym wypadku mamy ilość wystąpień. Należy wypisać wyniki.
Zad 6.
Napisz skrypt/program otwiera plik dane.mat. Sprawd
ź
jaki rozmiar ma macierz tam
zapisana. Dwoma sposobami:
a)
znajd
ź
warto
ść
najmniejsz
ą
i warto
ść
najwi
ę
ksz
ą
b)
wypisz gdzie wyst
ę
puje warto
ść
najwi
ę
ksza i najmniejsza ( w obu przypadkach chc
ę
mie
ć
jako informacj
ę
zwrotn
ą
wiersz i kolumn
ę
).
c)
sprawd
ź
ró
ż
nice w czasie wykonywania programów w p
ę
tli i bez p
ę
tli
d)
sprawd
ź
, czy w macierzy s
ą
warto
ś
ci s
ą
z zakresu [-9000 -1000] i z zakresu
[2.8217 2.8250]. Napisz ile razy wyst
ę
puj
ą
te warto
ś
ci.
Zadania sprawdzające :
5
Zad 7.
Napisz skrypt, który zapyta o funkcj
ę
trygonometryczn
ą
f i zapyta o warto
ść
x
oraz wyliczy i wypisze f(x). przy czym je
ś
li kto
ś
wprowadzi za x znak, a nie liczb
ę
, to
komputer nie b
ę
dzie wykonywał polecenia, tylko napisze komunikat o bł
ę
dzie. Nie b
ę
dzie
te
ż
liczył funkcji tangens dla wielokrotno
ś
ci
π
/2.
Zad 8. Napisz skrypt, który w tablicy:
C=str2mat(
'Matlab'
,
'jest'
,
'
ś
rodowiskiem'
,
'obliczeniowym'
);
znajduje samogłoskę (i trudniejsze wyzwanie – dobrowolne – wszystkie samogłoski).
Zad 9.
Cd. zadania 1 Plik o nazwie kodowanie, które koduje słowo poprzez przesunięcie odczytanej litery o dwa
następne znaki jest już napisany, podobnie jak program który przesuwa o jeden znak pierwszą literę, drugą o dwa
znaki itp. ( n’ta o n znaków).
Teraz proszę dołożyć zawracanie – jeśli wychodzi następna litera po ‘z’
to program ma ją uznać za ‘a’ itp. Zawracanie ma działać i na dużych i na małych literach.
Zad 10.
Zapraszam do wysłania rozwiązania tego zadania na UPEL
Napisz skrypt/program otwiera plik dane.mat. Sprawd
ź
jaki rozmiar ma macierz tam
zapisana.Policz ile jest takich samych par liczb znajduj
ą
cych si
ę
w kolumnie 1 i 2 i
ile razy ka
ż
da taka para wyst
ę
puje. Wyniki zapisz do pliku odpowiedz.mat
Plik dane.mat zawiera 3 kolumny.
(..)
-8450.3519 2.825320031 300381.4351
-8450.3519 2.8251791594 300381.4351
-8449.9302 2.825320031 300381.4351
(..)
Szukamy par z danych znajduj
ą
cych si
ę
w 1 i 2 kolumnie -czyli sprawdzamy czy istnieje para:
(-8450.3519 2.825320031) a mo
ż
e istnieje para (-8450.3519 2.825320031) ?