گرفتن ورودی از کاربر در متلب : حل یک مثال کاربردی

گرفتن ورودی از کاربر در متلب : حل یک مثال کاربردی

در ادامه سلسله پست های آموزش متلب از سایت توتیک ، و در ادامه ی پست قبل ، میخواهیم در این پست گرفتن ورودی از کاربر در متلب کامل تر صحبت کنیم.

 

حل یک مثال کاربردی

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

 

شروع حل برای گرفتن ورودی از کاربر در متلب

اولین قدم برای گرفتن ورودی از کاربر در متلب استفاده از دستور input است. پس مطابق سینتکسی که در جلسات پیش گفتیم کُد مورد نظر را می نویسیم. اما مسئله اینجاست که طرز نگارش گفته شده برای دستور input ، برای گرفتن ورودی از کاربر در متلب به صورت رشته ای کافی نیست. حال چرا از متغیر رشته ای صحبت میکنیم؟ چراکه اسامی و به طور کلی حروف در متلب ، به صورت متغیر های رشته ای یا متغیر های string هستند. پس برای این کار ازکُد زیر استفاده می کنیم:

1
name = input('Enter name of student: ' , 's')

گرفتن ورودی از کاربر در متلب به صورت متغیر رشته ای

در حقیقت برای گرفتن ورودی از کاربر در متلب به صورت متغیر رشته ای و با استفاده از دستور input ، تنها کافی است از همان سینتکس قبلی استفاده کنیم و فقط و فقط بعد از پیغامی که میخواهیم در خروجی نمایش نشان داده شود، یک کاما قرار داده و بعد از آن عبارت ‘s’ را قرار دهیم.

حتما بخوانید:  عبارت های منطقی (Logical Expressions) و عملگر های منطقی (Relational Operator) در متلب

 

مرحله دوم از حل مثال

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

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

روش اول : سه بار استفاده از دستور input

بعنوان روش اول برای گرفتن ورودی از کاربر در متلب برای نمره های دانشجوی مذکور در صورت سوال ، می توان سه بار دستور input را مطابق با کُد زیر از ورودی دریافت کرد:

1
2
3
s1 = input('Enter First Score: ')
s2 = input('Enter Second Score: ')
s3 = input('Enter Third Score: ')

گرفتن ورودی از کاربر در متلب متغیر عددی

این یک روش مطمئن برای دریافت ورودی از کاربر در متلب است.

روش دوم : یک بار استفاده از دستور input

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

حتما بخوانید:  دانلود فیلم آموزش مقدماتی متلب به زبان فارسی

 

ادامه حل مثال

بعد از دریافت ورودی از کاربر ، نوبت به محاسبه ی معدل وی می رسد. برای این کار سه متغیر s1 و s2 و s3 را باید باهم جمع کرده و داخل یک متغیر جدید با نام sum بریزیم:

1
sum = s1 + s2 + s3

گرفتن ورودی از کاربر در متلب محاسبه مجموع ورودی ها

بعد از محاسبه ی حاصل جمع هر سه عدد ، نوبت به محاسبه ی میانگین میرسد. با توجه به اینکه در این مثال سه ورودی داریم، تنها کافی است که متغیر sum را بر سه تقسیم کرده تا میانگین نمره ها محاسبه گردد. پس داریم :

1
ave = sum/3

گرفتن ورودی از کاربر در متلب محاسبه میانگین

نمایش خروجی در متلب

خب تا به اینجای کار بعد از گرفتن ورودی از کاربر در متلب به صورت متغیر رشته ای و عددی ، نوبت به این میرسد که علاوه بر نمایش نام وی در خروجی، معدل را نیز در خروجی نمایش دهیم. به همین منظور از کد زیر در این حالت استفاده میکنیم :

1
2
disp('student name : '),disp(name)
disp('The Average is : '),disp(ave)

نمایش خروجی در متلب

نتیجه برنامه

گرفتن ورودی از کاربر در متلب نمایش خروجی در متلب

خب در این گفتار با گرفتن ورودی از کاربر در متلب و نمایش خروجی در متلب به شیوه ای کاربردی و با حل مثال آشنا شدید. پس با پست های آینده ی وب سایت توتیک برای آموزش متلب همراه باشید.

حتما بخوانید:  آشنایی با محیط متلب 2017

 

10 دیدگاه در “گرفتن ورودی از کاربر در متلب : حل یک مثال کاربردی

  • سلام خسته نباشید
    فرض کنید کاربر یه فایل اسکریپت داره که با استفاده از guide ایجاد کرده و شامل تعداد زیادی جدول، ادیت تکست ،لیست باکس و … هست که هربار که فایل رو اجرا میکنه باید تعداد زیادی داده رو وارد کنه. (مثلا ۱۰۰ تا). حالا اگه فایل رو ببنده همه اون ورودی ها هم پاک میشه و دوباره که فایل رو باز میکنه ورودی های پیش فرض نمایش داده می شوند و کاربر مجبوره دوباره ورودی ها رو وارد کنه که خسته کننده هست. حالا سوال من این هست که با چه دستور یا روشی میشه کاری کرد که هر بار که فایل اجرا میشه آخرین داده هایی که کاربر در دفعه قبل وارد کرده نمایش داده بشه. اگه این کار انجام بشه کاربر مجبور نیست دوباره ۱۰۰ تا داده وارد کنه بلکه ممکنه با توجه به نیاز مثلا ۱۰تا رو تغییر بده که خیلی راحتتره. ممنون میشم اگه راهنمایی کنید مدت ها هست گیر این موردم.
    خیلی متشکر

    • عرض سلام و احترام
      سعی کنید ابتدا تمام ورودی هاتون رو به صورت یه فاید mat ذخیره کنید. بعد از اون پس از اجرای مجدد GUI داده ها رو از اون فایل mat بخونید. برای اطلاعات بیشتر میتونید به لینک زیر که مشابه پرسش شماست مراجعه بفرمایید:
      https://www.mathworks.com/matlabcentral/answers/162748-how-do-i-save-the-state-of-my-gui-and-load-the-saved-state-again

      • سلام مجدد
        مرسی از راهنمایی خوبتون.
        البته که یک مقدار اولیه به همه اشیا مثلا جدول ها و غیره داده ام مثلا مقدار اولیه اکثر جدول ها صفر هستند . ولی داده هایی که کاربر وارد میکنه به عنوان مثال پارامتر های یه تجهیز هستند که هر بار و یا هر لحظه با توجه به شرایط آن تجهیز تغییر میکنه و دفعه بعد بیشتر پارامترها همون قبلی ها هستند ولی تعداد کمی از آنها باید آپدیت شوند.(پس قابلیت این رو ندارند که بصورت پیش فرض داده رو همون اول کار به جداول اختصاص بدیم بخاطر همین من مقدار دادهای اولیه جداول رو صفر قرار داده ام) و حتما لازمه که پارامترهایی که آخرین بار توسط کاربر وارد میشه ذخیره بشن تا در دفعه بعد لازم نباشه کلا از اول دوباره همه پارامتر ها رو وارد کرد. تو اون مثال هم دیدم از توابع save state و load state استفاده شده که البته برای من آشنا نیستند ولی امتحان میکنم گرچه کاملا متوجه نشدم. البته حتما باید راهی برای این مورد باشه مثلا تو اکسل براحتی داده رو ذخیره میکنیم و دفعه بعد استفاده میکنیم. ولی متاسفانه تو متلب من نتونستم راهش رو پیدا کنم.
        بطور کلی منظورم اینه که که وقتی فایل با پسوند m که توسط guide ایجاد شده اجرا میشه داده های پیش فرض نمایش داده نشه بلکه آخرین داده هایی که کاربر در دفعه قبل تو این جدول ها وارد کرده بوده نمایش داده بشه.
        با تشکر مجدد

        • عرض سلام مجدد
          ببینید تا جایی که من میدونم و جستجو کردم یه همچین قابلیتی که مثل حافظه در مرورگرهای اینترنت داده ها داخل فیلد ها ذخیره بمونند برای بار بعدی عملاً وجود نداره. انگلیسی سرچ کنید اگه راهی وجود داشته باشه حتما توی انجمن های سایت mathworks هستش. ولی من تا حالا ندیدم. اون راه رو هم حتما یه بار کامل بررسی کنید یاد بگیرید مطمئنا جواب میده.
          موفق و پیروز باشید.

پاسخی بگذارید

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

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