پروژستان

دستور while در متلب

دستور while در متلب + (کاربردها، نحوه استفاده، کد، خروجی)

while در متلب

ساختارهای کنترلی یکی از اجزای اساسی در هر زبان برنامه‌نویسی هستند که به کمک آنها می‌توان جریان اجرای برنامه را کنترل کرد. این ساختارها شامل حلقه‌های همانند for, while و دستورات شرطی همانندif, switch می‌شوند. حلقه while این امکان را فراهم می‌کند که نرم‌افزار متلب مجموعه‌ای از دستورات را تا زمانی که یک شرط خاص برقرار است، تکرار کند.

این مقاله شامل نحوه استفاده از حلقه while به همراه مثال های کاربردی،امکان استفاده از while با چندین شرط، ترکیب while با دستورات کنترلی if و switch، مدیریت خطاها در حلقه‌های while – استفاده از try-catch و بسیاری از مثال ها و کاربردهای دیگر به همراه کد و خروجی است. شما پس از مطالعه این مقاله می‌توانید از دستور while در پروژه های متلب خود استفاده کنید. با این وجود درصورتی که نیاز دارید شخص دیگری انجام پروژه های متلب شما را برعهده بگیرد، می‌توانید این کار را به مجموعه پروژستان بسپارید.

تفاوت دستور while با دستور for این است که حلقه for برای تعداد معینی از تکرارها مناسب است، در حالی که حلقه while برای مواردی استفاده می‌شود که تعداد تکرارها از قبل مشخص نیست و بستگی به شرط تعیین شده دارد. یکی از نکات مهم در استفاده از while، اطمینان از تغییر شرایط به نحوی است که حلقه در نهایت متوقف شود. برای مثال، اگر مقدار k در هر تکرار افزایش یا کاهش نیابد، حلقه به‌صورت بی‌پایان اجرا خواهد شد. ساختار کلی دستور while به صورت زیر است:

 while شرط
 دستورات
 end

که در آن، شرط یاcondition یک عبارت منطقی (Boolean) است. اگر این شرط درست (true) باشد، دستورات درون حلقه اجرا می‌شوند. این فرآیند تا زمانی که شرط نادرست (false) شود ادامه خواهد داشت.

مثال 1: محاسبه مجموع اعداد از 1 تا n

clc; clear; close all
n = input(‘Enter a num= ‘);
sum = 0;
k = 1;
while k <= n
sum = sum + k;
k = k + 1;
end
disp([‘Sum of 1 to ‘, num2str(n), ‘ is: ‘, num2str(sum)]);

خروجی:

 Enter a num= 10
 Sum of 1 to 10 is: 55

توضیح: n عدد وارد شده توسط کاربراست و حلقه while تا زمانی که مقدارk از n کمتر یا مساوی باشد، اجرا می‌شود و در هر مرحله مقدار k به مجموع (sum) اضافه می‌شود.

مثال 2: محاسبه مقدار فاکتوریل یک عدد

clc; clear; close all
n = input(‘Enter a num= ‘);
factorial = 1;
k = 1;
while k <= n
factorial = factorial * k;
k = k + 1;
end
disp([‘Factorial of ‘, num2str(n), ‘ is: ‘, num2str(factorial)]);

خروجی:

Enter a num= 10
Factorial of 10 is: 3628800

توضیح: n عدد وارد شده توسط کاربراست و حلقه while تا زمانی که مقدارk از n کمتر یا مساوی باشد، اجرا می‌شود و در هر مرحله مقدار k به فاکتوریل قبلی (factorial) ضرب می‌شود.

مثال3- امکان استفاده از while با چندین شرط

clc; clear; close all
a = 1;
b = 10;
while a < 5 && b > 0
disp([‘a = ‘, num2str(a), ‘, b = ‘, num2str(b)]);
a = a + 1;
b = b – 2;
end

خروجی:

 a = 1, b = 10
 a = 2, b = 8
 a = 3, b = 6
 a = 4, b = 4

توضیح: در دستورwhile با چندین شرط، تا زمانی که تمام شرایط درست باشند، حلقه اجرا خواهد شد.

مثال4-ترکیب while با دستورات کنترلی if و switch

clc; clear; close all
i = 1;
while i <= 10
if mod(i, 2) == 0
disp([num2str(i), ‘ is even’]);
else
disp([num2str(i), ‘ is odd’]);
end
i = i + 1;
end

خروجی:

 1 is odd
 2 is even
 3 is odd
 4 is even
 5 is odd
 6 is even
 7 is odd
 8 is even
 9 is odd
 10 is even

توضیح: ترکیب while با دستورات شرطی دیگر امکان پیاده‌سازی الگوریتم‌های پیچیده‌تر را فراهم می‌کند.

مثال5- دستور break

clc; clear; close all
k = 1;
while true
disp([‘Iteration ‘, num2str(k)]);
if k == 3
break;
end
k = k + 1;
end

خروجی:

 Iteration 1
 Iteration 2
 Iteration 3

توضیح: یکی از روش‌های بهبود کارایی در حلقه‌های while استفاده از دستورات کنترلی مانند break برای خروج زودهنگام از حلقه است. موقعی که در این برنامه به عدد 3 رسید برنامه قطع می شود و از while خارج می شود.

مثال 6: جستجوی باینری

clc; clear; close all
array = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
target = 17;
left = 1;
right = length(array);
found = false;

while left <= right
mid = floor((left + right) / 2);
if array(mid) == target
found = true;
break;
elseif array(mid) < target
left = mid + 1;
else
right = mid – 1;
end
end

if found
disp([‘Target found at index ‘, num2str(mid)]);
else
disp(‘Target not found’);
end

خروجی:

 Target found at index 9

توضیح: وقتی برنامه به عدد 17 می رسد موقعیت عدد 11 که در جایگاه 9 است را اعلام می کند.

مثال 7: الگوریتم‌های عددی (مثل نیوتن-رافسون)

clc; clear; close all
f = @(x) x^2 – 10;
df = @(x) 2*x;
x0 = 1;
tol = 1e-6;
max_iter = 100;
iter = 0;
while abs(f(x0)) > tol && iter < max_iter
x0 = x0 – f(x0)/df(x0);
iter = iter + 1;
end
disp([‘Root is approximately: ‘, num2str(x0)]);

خروجی:

 Root is approximately: 3.1623

توضیح:
با استفاده از روش تکراری نیوتن رافسون با دستور While مقدار ریشه پیدا شد باید توجه داشت که:
                                                                                                                                                                                            3.1623^2 = 10.0001

مثال8. مدیریت خطاها در حلقه‌های while – استفاده از try-catch

clc; clear; close all
i = 1;
while i <= 10
try
% خطای عمدی برای نمایش try-catch
if i == 5
error(‘Custom Error at i = 5’);
end
disp([‘Iteration ‘, num2str(i)]);
catch ME
disp([‘Error occurred: ‘, ME.message]);
end
i = i + 1;
end

خروجی برنامه:

 Iteration 1
 Iteration 2
 Iteration 3
 Iteration 4
 Error occurred: Custom Error at i = 5
 Iteration 6
 Iteration 7
 Iteration 8
 Iteration 9
 Iteration 10

توضیح: برای جلوگیری از توقف ناگهانی برنامه در تکرار 5 به دلیل وقوع خطا، می‌توان از دستور try-catch در داخل حلقه استفاده کرد.

اشتراک گذاری:

عضویت در خبرنامه

درخبرنامه ما عضو شوید

لورم ایپسوم متن ساختــگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیــک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *