رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
زبان‌های دستوری
#1
زبانهای دستوری (به انگلیسی: Imperative programming) در علوم کامپیوتر به زبانهایی اطلاق می‌شود که در آنها مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان می‌شود. این بر خلاف زبانهای اعلانی است که در آنها تنها نتیجه انجام دستورات بیان می‌شود. به بیان دیگر در زبانهای دستوری چگونگی اجرای برنامه بیان می‌شود اما در زبانهای اعلانی چیستی نتیجه بیان می‌شود.

به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.

منبع
پاسخ
سپاس شده توسط محمد حسینی
#2
با سلام و عرض خسته نباشید

لطفا اگه امکان داره چند مثال در این باره بزنید و کم توضیح بدهید

مثلا منظور چه زبان های هستند؟

با تشکر از مطالب خوب شما
پاسخ
سپاس شده توسط
#3
در زبان های برنامه نویسی دستوری مثل C، C++، BASIC، Java و خیلی زبان های دیگر، تمرکز بر روی انجام دادن یک سری از فعالیتهاست: do A, then do B, etc

در برنامه نویسی دستوری اغلب با داده هایی در حافظه سر و کار داریم که می تونند در خلال یک سری فعالیتها تغییر کنند (mutable data) و رفتار کد در برنامه ممکنه به مقدار جاری تعدادی از داده هامون در حافظه بستگی داشته باشه، چیزی که ممکنه تغییر بکنه با دیگر تکه ی کد در برنامه.

این مثال ساده ای از برنامه نویسی دستوری در کد C هست:

کد:
int i, a[8], v=1;

   for (i=0; i<8; i = i + 1) {
      a[i] = v;
      v = v * 2;
}

کد بالا یک آرایه ی هشت تایی از a که توان های پی در پی از 2 هستند رو تولید می کنه:
(successive powers of 2 (1,2,4,8,16,32,64,128

این کد دستورات زیر رو تولید می کنه:
set the value of v and i to 0
set the ith element of the array a to the current value of v
set the value of v to twice its previous value
set the value of i to one more than its previous value
if the value of i is less than 8, repeat from step 2

توجه داشته باشید که تمرکز شدید روی انجام شدن یک سری از مراحل هست.

در مقابل برنامه نویسی دستوری (imperative programming)، برنامه نویسی تابعی (functional programming) بر تبدیل داده های ورودی به داده های خروجی با تعریف تابعی که این عمل رو انجام میده تمرکز داره. در یک برنامه نویسی تابعی خالص امکان نداره مقدار شئ ای از داده از مقداری به مقدار دیگه تغییر بکنه؛ در حقیقت، شئ ای وجود نداره. تمرکز بر روی نتیجه ی مطلوب هست نه بر روی اینکه چطور این نتیجه گرفته شده.

و این مثالی از برنامه ی تابعی بازگشتی در C:

کد:
int *powers(int *a, int i, int v)
{
   if (i != 8) {
         a[i] = v;
         powers(i+1, v*2);
   }
}

هر درخواست از powers، حافظه ی اضافه تری رو مصرف خواهد کرد. این مثال برای ما خوب کار خواهد کرد وقتی ما به 9 بار صدا زدن محدود باشیم، اما برای تابع بازگشتی بیشتر، بیشتر از فضای Stack ما خواهد بود و این چیز خوبی نیست.
البته توجه داشته باشید مثال بازگشتی C ما هنوز از برنامه نویسی تابعی خالص بهره نمی بره و ما مقدار یک آرایه ی موجود رو تغییر میدیم.
پاسخ
سپاس شده توسط مهرداد عباسی


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Tongue برنامه‌نویسی امن با زبان جاوا – ارتقای حق دسترسی علی عرفانی 0 2,447 09-14-2013, 10:13 PM
آخرین ارسال: علی عرفانی
Tongue برنامه‌نویسی امن با زبان جاوا – انكار سرویس علی عرفانی 0 2,437 09-14-2013, 10:07 PM
آخرین ارسال: علی عرفانی
Tongue برنامه‌نویسی امن با زبان جاوا – نشت قابلیت ها علی عرفانی 0 2,466 09-14-2013, 10:01 PM
آخرین ارسال: علی عرفانی
Tongue برنامه‌نویسی امن با زبان جاوا – نشت اطلاعات حساس علی عرفانی 0 2,432 09-08-2013, 02:19 PM
آخرین ارسال: علی عرفانی
Tongue برنامه‌نویسی امن با زبان جاوا - اعتبارسنجی ورودی و پاكسازی داده‌ها علی عرفانی 0 2,364 09-02-2013, 02:11 AM
آخرین ارسال: علی عرفانی
Tongue برنامه‌ نویسی امن با زبان جاوا - آشنایی علی عرفانی 0 2,535 08-29-2013, 04:27 PM
آخرین ارسال: علی عرفانی
  معرفی زبان Objective-C مهرداد عباسی 0 2,920 05-02-2012, 09:42 PM
آخرین ارسال: مهرداد عباسی
  پیاده سازی برنامه client و server با زبان C آیناز محمدی 1 5,108 12-22-2010, 11:31 PM
آخرین ارسال: مهرداد عباسی
  زبان‌های اعلانی spooggie 0 3,373 04-27-2010, 04:34 PM
آخرین ارسال: spooggie

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان