حلقه ها در MATLAB (بخش سوم)
در بخش اول و دوم حلقه های for و while آموزش داده شدند. همانطور که در بخش دوم گفته شد، روش های دیگری برای توقف حلقه و خروج از آن وجود دارند. در این جا به دستورات مورد استفاده در حلقه ها می پردازیم. دستوارت return، break و continue.
دستورات خروج از حلقه
در برخی از برنامه ها نیاز به دستورات خروج از حلقه داریم. برای مثال برای بررسی اول بودن یک عدد، آن را به اعداد کوچکتر از خودش تقسیم می کنیم و هنگامی که به یکی از اعداد کوچکتر بخش پذیر بود، لازم است از حلقه تقسیم خارج شده و عملیات دیگری صورت نپذیرد. در بخش قبل با استفاده از شرط if و یک متغیر کمکی کار خروج از حلقه انجام شد. در اینجا دستورات دیگر را بررسی می کنیم.
دستور break
این دستور برای خروج از یک حلقه for یا while استفاده می شود. در برنامه هایی که حلقه های تو در تو دارند، این دستور فقط حلقه ای که در آن استفاده شده را خروج می کند و باقی حلقه ها به روند خودشان ادامه می دهند.
برای وارد کردن دستور break در حلقه، زیر شرط مورد نظر که می خواهیم تحت آن شرط حلقه ادامه پیدا نکند، break را می نویسیم. توجه کنید که بعد از زدن فاصله (space) یا enter (برای رفتن به خط بعد) باید نوشته آبی شود.
مثال 1: برنامه ای بنویسید که مربع کامل بین اعداد 400 و 450 را پیدا کند.
clc clear for i=1:200 k=i*i; if k<450 && k>400 break end end i k
دستور return
برای برخی از برنامه ها، نیاز به چندین حلقه تو در تو می باشد. برای خروج از تمامی حلقه ها به صورت یکباره و با یک دستور از دستور return استفاده می شود. برای وارد کردن دستور، زیر شرط مورد نظر دستور return را می نویسیم و اجرای برنامه از تمامی حلقه ها خارج می شود.
مثال 2: برنامه ای بنویسید که در یک ماتریس 3 بعدی عددی را بیابد و پس از یافت آن از حلقه ها خارج شود.
clc clear a(:,:,1)=[1 2 3; 3 4 5]; a(:,:,2)=[8 9 7; 6 5 4]; a(:,:,3)=[0 -1 -2; -7 8 9]; [m,n,o]=size(a); d=0; for k=1:o for i=1:m for j=1:n if a(i,j,k)==-7 b=[i ,j, k] d=1; return end end if d==1 2 end end if d==1 3 end end
همانطور که در کد بالا دیده می شود، پس از اعمال شرط که متغیر d در آن مقدارش 1 می شود، شرط d==1 حلقه های دیگر اجرا نمی شود و نشان دهنده این است که دستور return عملیات تمامی حلقه ها را متوقف ساخته است.
حال اگر بخواهیم این برنامه را با دستور break بنویسیم، برای هر حلقه نیاز به یک break جداگانه داریم. در غیر این صورت فقط یک حلقه متوقف می شود.
clc clear a(:,:,1)=[1 2 3; 3 4 5]; a(:,:,2)=[8 9 7; 6 5 4]; a(:,:,3)=[0 -1 -2; -7 8 9]; [m,n,o]=size(a); d=0; for k=1:o for i=1:m for j=1:n if a(i,j,k)==-7 b=[i ,j, k] d=1; break end end if d==1 2 end end if d==1 3 end end
همانطور که در بالا دیده می شود با یک دستور break دو حلقه دیگر هنوز اجرا می شوند. با نوشتن 3 دستور break، هر کدام در هر حلقه، پاسخ همانند استفاده از دستور return می شود.
باقی دستوارت
در بخش قبل از شرط if همراه با متغیر کمکی استفاده شد. اما در برخی مواقع برای کوتاهتر شدن و ساده تر شدن کد راهی دیگری استفاده می شود. استفاده از دستور continue یکی از آن هاست.
دستور continue
گاهی اوقات در یک برنامه می خواهیم در صورت اجرا نشدن شرط، حلقه به گام بعد برود و کد وارد عملیات درون حلقه نشود. به عبارتی عملیات را skip کند. برای مثال می خواهیم اگر عدد مثبت بود جذر آن گرفته شود و یا اگر پاسخ معادله قابل قبول بود نمودار آن ترسیم شود و… برای چنین شرط هایی از دستور continue استفاده می کنیم.
مثال 3: برنامه این بنویسید که بین اعداد 100 تا 160 ، اعدادی که بر 9 بخش پذیر هستند را بیابد.
clc clear for n = 100:160 if mod(n,9)~=0 continue end disp(['Divisible by 9: ' num2str(n)]) end
در شرط کد بالا گفته شده است که اگر تقسیم عدد بر 9 مخالف صفر بود حلقه به گام بعد رفته و وارد عملیات نشود. در غیر این صورت عملیات پس از شرط را اجرا کند.
در این سری از مقالات، حلقه ها و دستورهای مورد استفاده در آن ها گفته شدند. مثال هایی نیز برای یادگیری بهتر آنان حل شدند. برای مقالات آینده شرط ها (مانند if) به طور کامل آموزش داده خواهند شد.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.