[]
MATLAB'de while komutunu anlayamıyorum
for'u çok rahat anladığım ve kullanabildiğim halde while'ı bir türlü kavrayamıyorum. while'la yazılmış örnekleri inceliyorum, o an anlar gibi oluyorum ama ardından yine unutuveriyorum. while'ı özetleyebilecek olan ve aşağıdaki segmenti programda çalıştırmadan açıklayabilecek olan yardımsever mühendisler var mıdır acaba?
B=ones(3,3);
X=eye(3,3);
r=2;
c=1;
ctl=true;
while (ctl)
B(r+1, c) = X(r+1, c) + B(r+1, c);
r=rem(r+1, 3);
c=rem(c, 3);
ctl=(r==0 | c==0);
end
fprintf('r=%d c=%d ctl=%d\n' r,c,ctl);
disp(B);
teşekkürler şimdiden efendim.
B=ones(3,3);
X=eye(3,3);
r=2;
c=1;
ctl=true;
while (ctl)
B(r+1, c) = X(r+1, c) + B(r+1, c);
r=rem(r+1, 3);
c=rem(c, 3);
ctl=(r==0 | c==0);
end
fprintf('r=%d c=%d ctl=%d\n' r,c,ctl);
disp(B);
teşekkürler şimdiden efendim.
ctl nin değeri true (1) olduğu sürece o döngü dönmeye devam ediyor o kadar,
eğer r veya c den biri, 0 olursa, r==0 | c==0, karşılaştırması 1 veriyor onu da ctl ye atıyor. while döngünü çevirmeye devam ediyor.
eğer ikisi de 0 dan farklı olursa ctl 0 oluyor.
Böylece while komutu döngüyü çevirmeyi bırakıyor çünkü artık ctl true değil, 0, yani false.
yukarıdaki işlem r veya c üçün katları olduğu sürece, 3 bölümden remainder 0 olduğu sürece devam ediyor. Eğer hiçbir zaman iki remainder da 0 dan fark etmezse sonsuza kadar dönmeye devam eder. Fordan aslında tek farkı bu.
Bir de for döngüsünde for var=1:5 gibi, bir parametrenin her yinelemede belli bir miktar değişmesini sağlayabiliyoruz, aynı şey while da böyle olmuyor, eğer while da böyle bir değişken ihtiyacımız varsa kendimiz işi halletmeliyiz
var1=0
while var1~=60
var1=var1+1
end
While ın pek bir numarası yok.
Segmentte ne işlem yapmak istemiş bir bakışta anlayamadım ama bir çalıştırıp deneyeceğim ne iş yapıyor bu segment
eğer r veya c den biri, 0 olursa, r==0 | c==0, karşılaştırması 1 veriyor onu da ctl ye atıyor. while döngünü çevirmeye devam ediyor.
eğer ikisi de 0 dan farklı olursa ctl 0 oluyor.
Böylece while komutu döngüyü çevirmeyi bırakıyor çünkü artık ctl true değil, 0, yani false.
yukarıdaki işlem r veya c üçün katları olduğu sürece, 3 bölümden remainder 0 olduğu sürece devam ediyor. Eğer hiçbir zaman iki remainder da 0 dan fark etmezse sonsuza kadar dönmeye devam eder. Fordan aslında tek farkı bu.
Bir de for döngüsünde for var=1:5 gibi, bir parametrenin her yinelemede belli bir miktar değişmesini sağlayabiliyoruz, aynı şey while da böyle olmuyor, eğer while da böyle bir değişken ihtiyacımız varsa kendimiz işi halletmeliyiz
var1=0
while var1~=60
var1=var1+1
end
While ın pek bir numarası yok.
Segmentte ne işlem yapmak istemiş bir bakışta anlayamadım ama bir çalıştırıp deneyeceğim ne iş yapıyor bu segment
- furciferpardalis (22.11.12 23:01:50 ~ 23:11:23)
"ctl" true(1) olarak tanımlanmış ve while'ın koşulu olarak verilmiş.
While(Koşul)
kod bloğu
end
koşul(ctl), true(1) oldukça kod bloğu yukarıdan aşağı tekrar tekrar çalıştırılır. her defasında başa döner for'da olduğu gibi. Koşul'un içine müdehale edecek bir ibare yoksa, sonsuz döngü oluşur. çünkü ctl hep true kalacaktır. "ctl" 1'den farklı bir değer alırsa kod bloğu tekrar çalıştırılmaz. End altındaki satırlar işlenerek akış devam eder.
while (r==0 | c==0)
B(r+1, c) = X(r+1, c) + B(r+1, c);
r=rem(r+1, 3);
c=rem(c, 3);
end
şeklinde de yazılabilirdi.
While(Koşul)
kod bloğu
end
koşul(ctl), true(1) oldukça kod bloğu yukarıdan aşağı tekrar tekrar çalıştırılır. her defasında başa döner for'da olduğu gibi. Koşul'un içine müdehale edecek bir ibare yoksa, sonsuz döngü oluşur. çünkü ctl hep true kalacaktır. "ctl" 1'den farklı bir değer alırsa kod bloğu tekrar çalıştırılmaz. End altındaki satırlar işlenerek akış devam eder.
while (r==0 | c==0)
B(r+1, c) = X(r+1, c) + B(r+1, c);
r=rem(r+1, 3);
c=rem(c, 3);
end
şeklinde de yazılabilirdi.
- karacahil (22.11.12 23:05:30 ~ 23:05:53)
while (ctl) , parantez içindeki değer true oldukça end' e kadar olan kısım çalışır. her end e ulaşıldığında, parantez içi tekrar kontrol edilir, kod uygulanır, ta ki ctl false olana kadar.
- transall (22.11.12 23:07:38)
1