تالار گفتگوی کیش تک/ kishtech forum
  • سردر
  • جستجو
  • فهرست اعضا
  • سالنامه
  • راهنما
درود مهمان گرامی! ورود ثبت‌نام
ورود
نام کاربری:
گذرواژه‌:
گذرواژه‌تان را فراموش کرده‌اید؟
 
تالار گفتگوی کیش تک/ kishtech forum › پردیس فناوری کیش › دانشگاه پیام نور › درس برنامه نویسی پیشرفته - گروه فیزیک - بهار 1404
برنامه نویسی پیشرفته c++

امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
حالت موضوعی
برنامه نویسی پیشرفته c++
Mahsailk آفلاین
عضو جوان
**
ارسال‌ها: 5
موضوع‌ها: 5
تاریخ عضویت: May 2025
اعتبار: 0
#1
25-05-2025, 08:53 PM (آخرین ویرایش: 25-05-2025, 09:07 PM، توسط Mahsailk.)
۱. تفاوت ساختاری و کاربردی بین حلقه‌های while و do...while در چیست؟ یک مثال کدی بنویسید که خروجی این دو حلقه را با هم مقایسه کند.

۲. در یک برنامه‌ای که از while(true) و دستور break برای توقف استفاده شده، چه مزایا یا خطراتی ممکنه به وجود بیاد؟ در چه مواقعی این شیوه مناسب نیست؟

۳. فرض کنید قراره نمره‌های دانش‌آموزان رو بگیرید و فقط نمره‌های معتبر (بین ۰ تا ۲۰) رو در میانگین حساب کنید. با استفاده از continue یک کد بنویس که نمره‌های نامعتبر رو نادیده بگیرد.

۴. چرا در زبان ++C از static_cast<> به‌جای تبدیل‌های ساده مثل (int)x استفاده می‌کنیم؟ یک مثال بزنید که نشان بدهد این نوع cast چرا امن‌تر یا مناسب‌تر است.

۵. کدی بنویسید که با استفاده از switch، اعداد ۰ تا ۲ را به متن انگلیسی تبدیل کند و برای سایر مقادیر، پیام "Other number" نمایش دهد. توضیح بدهید اگر breakها را حذف کنیم چه اتفاقی می‌افتد.
مهسا ایل خانی

۱.تفاوت ساختاری و کاربردی بین حلقه‌های while و do...while در چیست؟

جواب:

در ساختار:

while: شرط قبل از اجرای حلقه بررسی می‌شود. اگر شرط false باشد، بدنه حلقه حتی یک بار هم اجرا نمی‌شود.

do...while: بدنه حلقه یک بار اجرا می‌شود و سپس شرط بررسی می‌شود. حتی اگر شرط false باشد، حلقه حداقل یک بار اجرا خواهد شد.


در کاربرد:

وقتی می‌دانیم باید حداقل یک بار بدنه حلقه اجرا شود، از do...while استفاده می‌کنیم.

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


---

۲. در یک برنامه‌ای که از while(true) و دستور break برای توقف استفاده شده، چه مزایا یا خطراتی ممکنه به وجود بیاد؟ در چه مواقعی این شیوه مناسب نیست؟

جواب:

مزایا:

مناسب برای حلقه‌های بی‌نهایت که با شرط خاصی (مثلاً یک ورودی یا رویداد) متوقف می‌شوند.

ساده و قابل فهم برای حلقه‌های نامشخص.


خطرات:

اگر break هرگز اجرا نشود، حلقه بی‌نهایت می‌شود و منابع سیستم را مصرف می‌کند.

ممکن است باعث هنگ کردن یا عملکرد نادرست برنامه شود.


مناسب نبودن:

در مواقعی که می‌توان شرط حلقه را به طور واضح مشخص کرد (مثلاً while (x < 10))، بهتر است از while شرط‌دار استفاده شود.

در برنامه‌های حساس (مثل سرورها یا سیستم‌های بلادرنگ) که حلقه بی‌نهایت خطرناک است.




---

۳. فرض کن قراره نمره‌های دانش‌آموزان رو بگیری و فقط نمره‌های معتبر (بین ۰ تا ۲۰) رو در میانگین حساب کنی. با استفاده از continue یک کد بنویس که نمره‌های نامعتبر رو نادیده بگیره.

جواب:

#include <iostream>
using namespace std;

int main() {
int n, sum = 0, count = 0;
while (true) {
cout << "Enter grade (-1 to stop): ";
cin >> n;
if (n == -1) break;
if (n < 0 || n > 20) continue;
sum += n;
count++;
}
if (count > 0)
cout << "Average grade: " << (sum / (double)count) << endl;
else
cout << "No valid grades entered." << endl;
return 0;
}

---

۴. چرا در زبان ++C از static_cast<> به‌جای تبدیل‌های ساده مثل (int)x استفاده می‌کنیم؟ یک مثال بزن که نشان بده این نوع cast چرا امن‌تر یا مناسب‌تره.

جواب:

دلیل:

static_cast<> نوع تبدیل را مشخص‌تر و ایمن‌تر انجام می‌دهد.

از تبدیل‌های ناخواسته (مثلاً اشاره‌گرها یا کلاس‌های مختلف) جلوگیری می‌کند.

باعث خوانایی و قابلیت نگهداری بهتر کد می‌شود.
سوال ۵:

کدی بنویسید که با استفاده از switch، اعداد ۰ تا ۲ را به متن انگلیسی تبدیل کند و برای سایر مقادیر، پیام "Other number" نمایش دهد. توضیح بده اگر breakها را حذف کنیم چه اتفاقی می‌افتد.
جواب:

using namespace std;

int main() {
int num;
cout << "Enter a number: ";
cin >> num;

switch (num) {
case 0:
cout << "Zero" << endl;
break;
case 1:
cout << "One" << endl;
break;
case 2:
cout << "Two" << endl;
break;
default:
cout << "Other number" << endl;
}

return 0;
}

اگر breakها را حذف کنیم:

بعد از اجرای یک case، برنامه بدون توقف به case‌های بعدی هم وارد می‌شود (به این اتفاق fall-through گفته می‌شود).

مثلاً اگر عدد 1 را وارد کنیم، خروجی این می‌شود:

One
Two
Other number

برای جلوگیری از این مشکل و اجرای فقط یک case، استفاده از break ضروری است.




مهسا ایلخانی


فایل‌(های) پیوست شده
.pdf   mahsa ilkhani (2).pdf (اندازه: 399.86 KB / تعداد دفعات دریافت: 0)
ارسال‌ها
پاسخ
« قدیمی‌تر | جدیدتر »


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  برنامه سازی پیشرفته ، زهرا ذبیحی فصل اول Zahraazimi 0 68 26-05-2025, 11:36 PM
آخرین ارسال: Zahraazimi
  برنامه نویسی پیشرفتهc++، ملیکا نیتی، مقادیر تصادفی و شمارشی ملیکا نیتی 0 80 26-05-2025, 10:26 PM
آخرین ارسال: ملیکا نیتی
  برنامه نویسی پیشرفته c++ Mahsailk 0 78 26-05-2025, 12:54 AM
آخرین ارسال: Mahsailk
  برنامه نویسی پیشرفته c++ _مولود مهرعلی مولود مهرعلی 0 74 25-05-2025, 10:22 PM
آخرین ارسال: مولود مهرعلی
  برنامه نویسی پیشرفته c++ Mahsailk 0 71 25-05-2025, 09:15 PM
آخرین ارسال: Mahsailk
  برنامه نویسی پیشرفته c++ مهسا ایل خانی Mahsailk 0 85 25-05-2025, 08:45 PM
آخرین ارسال: Mahsailk
  برنامه نویسی پیشرفته c++ Mahsailk 0 68 25-05-2025, 08:30 PM
آخرین ارسال: Mahsailk
  برنامه سازی پیشرفته C++ زهرا عظیمی شامیر ، آرایه ها Zahraazimi 0 87 24-05-2025, 10:22 PM
آخرین ارسال: Zahraazimi

  • مشاهده‌ی نسخه‌ی قابل چاپ
پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان
  • تیم انجمن
  • صفحه‌ی تماس
  • تالار کیش تک / kishtech forum
  • بازگشت به بالا
  • بایگانی
  • نشانه‌گذاری تمامی انجمن‌ها به عنوان خوانده شده
  • پیوند سایتی RSS
زمان کنونی: 09-06-2025، 06:52 PM Persian Translation by MyBBIran.com - Ver: 6.5
Powered by MyBB, © 2002-2025 MyBB Group.