background image

 

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. 

background image

 

  

 

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 = =,   

ż

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

 

 

background image

 

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

ą

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); 
 

background image

 

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 : 

background image

 

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) ?