Pętla for
Pętla for
Wiele działań przy komputerowym przetwarzaniu danych może wymagać wielokrotnego wykonania, czyli iteracji. Do takich działań służą pętle. W MATLABie będziemy używać dwóch pętli: pętli for i pętli while. Składnia pętli for wygląda następująco:
for licznik=początek:krok:koniec
jakieś_instrukcje
end
Zadanie (5)
Prześledź działanie poniższych instrukcji, możesz je zapisać w skrypcie lub wpisywać w konsoli naciskając Shift+ENTER po każdej linijce oprócz ostatniej, po której należy nacisnąć samo ENTER:
>> for k=1:10
disp(k);
end % nacisnij ENTER
>> for k=1:3:10
disp(k);
end
% przykład ze zmianą zawartości macierzy:
>> A=round(rand(3,4)*10)-5;
disp(A);
[a b] = size(A);
disp(['wymiary macierzy: ' num2str(a) ' oraz ' num2str(b)]);
for k=1:a
for t=1:b
if A(k,t) < 0
A(k,t)=[100];
end
end
end
disp(A);
% przykład z dzielnikami liczby:
>> liczba = 64;
disp(['Dzielniki liczby ' num2str(liczba)]);
for k=1:liczba
if mod(liczba,k)==0 % mod(a,b) zwraca resztę z dzielenia a/b
disp(k)
end
end
Instrukcja break powoduje, że pętla kończy się przedwcześnie na wyraźne życzenie użytkownika. Poniższy przykład pokazuje ideę działania tej instrukcji:
>> liczba = 64;
disp(['Czy liczba ' num2str(liczba) ' ma co najmniej 4 dzielniki?' ]);
licznik = 0;
for k=1:liczba
if mod(liczba,k)==0
disp(k);
licznik = licznik+1;
end
if licznik==4
disp('Owszem, ma');
break; % nie ma co dalej sprawdzać, liczba ma co najmniej 4 dzielniki
end
end
if licznik < 4
disp('Niestety, nie ma');
end
Zadanie (6)
Napisz skrypt, w którym wygenerowana zostanie macierz 5x5 losowych liczb całkowitych z zakresu [-10,10]. Korzystając z dwóch zagnieżdżonych pętli for zamień każdą ujemną liczbę w macierzy na kwadrat tej liczby, zaś każdą dodatnią liczbę w oryginalnej macierzy pomnóż przez -1.
Odpowiedź
A=round(rand(5,5)*20)-10;
disp(A);
[a b] = size(A);
for k=1:a
for t=1:b
if A(k,t) < 0
A(k,t)=[A(k,t)^2];
else
A(k,t)=[-A(k,t)];
end
end
end
disp(A);