ایجاد متغیر سراسری در متلب
تابع ها معمولا از متغیرهای محلی استفاده می کنند. متغیر محلی، متغیری است که تنها در همان تابع شناخته شده است. استفاده از متغیرهای محلی، از گیج شدن شما جلوگیری می کند زیرا با استفاده از آنها، تابع بی نیاز از بیرون و مستقل است.
اما ممکن است نیاز داشته باشید که از یک متغیر در چند تابع استفاده کنید. ( به طوری که در همه ی این توابع شناخته شده باشد). وقتی که یک تابع، یک متغیر را طوری تعریف کند که برای تمام توابع و دیگر اشیاء قابل رویت باشد، به این متغیر، یک متغیر سراسری(Global) گفته می شود.
به نوعی می توان گفت که، از متغیرهای سراسری، می توان سوءاستفاده نمود. زیرا به این متغیرها می توان در هر تابعی دسترسی داشت و این باعث مشکلات امنیتی می شود. چرا که این توابع عمومی هستند.
با انجام گام های زیر، روش ایجاد یک متغیر سراسری را آموزش خواهید دید:
1. در تب Editor که در پنجره ی Editor قرار دارد، بر روی مثلث کوچک(علامت جهت) که در زیر گزینه ی Save قرار دارد، کلیک کنید و گزینه ی Save As را انتخاب کنید.
خواهید دید که پنجره ی Save as باز می شود و شما باید یک فایل را برای ذخیره انتخاب کنید.
2.در فیلد File Name، عبارت SayHello4.m را تایپ کنید و بر روی دکمه ی Save کلیک کنید.
با انجام این کار، متلب تابعی که از قبل(در مقاله ی قبلی) ایجاد کرده بودیم را با یک نام جدید، ذخیره می کند.
3.اکنون در داخل کدهای تابع، نام تابع را از SayHello3 به SayHello4 تغییر دهید.
حالا وقتی که نشانگر ماوس را در یک مکان دیگر قرار دهید، رنگ نارنجی، ناپدید می شود.
4. عبارت HelloString را از بین براکت ها که قبل از نام تابع قرار دارند، حذف کنید. بنابراین تابع ما به شکل زیر درمی آید:
اگر یک متغیر را به صورت سراسری تعریف کنیم، نمی توانیم آن را بعنوان خروجی برگردانیم زیرا این متغیر از نوع سراسری است و از قبل در دسترس می باشد، بنابراین هیچ فایده ای ندارد تا آن را به سیله ی یک تابع برگردانیم.
5. اکنون به متغیر HelloString، عبارت global را اضافه کنید. به صورت زیر:
6. حالا تغییرات را Save کنید.
7. اکنون در خط فرمان(پنجره ی Command)، عبارت ('SayHello4('George را تایپ کنید و کلید Enter را فشار دهید.
خروجی به صورت زیر خواهد بود:
اکنون، یک متغیر سراسری به نام HelloString در حافظه قرار گرفته است. متاسفانه شما نمی توانید این متغیر را مشاهده کنید. بنابراین به طور قطعی نمی دانید که آیا وجود دارد یا نه.
8. گام های 1 تا 3 را دوباره برای ایجاد تابع SayHello5 انجام دهید.
9. کدهای تابع ()SayHello5 را تغییر دهید تا به صورت زیر به نظر برسند:
توجه کنید که تابع ()SayHello5 هیچ گونه ورودی یا آرگومان خروجی را نمی پذیرد. در این تابع تنها HelloString را تعریف کرده ایم. این تابع هیچ مقداری را به متغیر HelloString انتساب نمی دهد. بنابراین وقتی که تابع ما، تابع disp را صدا می زند، با شکست مواجه خواهد شد.
10. در خط فرمان(Command) عبارت SayHello5 را تایپ کنید و کلید Enter را فشار دهید.
خواهید دید که عبارت !Hello There George بعنوان خروجی نشان داده خواهد شد. زیرا که متغیر سراسری مورد نظر، از یک تابع دیگر، قابل دسترس است.
- نوشته شده توسط احسان عباسی
- بازدید: 17806
دیدگاهها
با سلام.چطور میتونم از خروجی یک تابع در تابع دیگر درمحیط GUI استفاده کرد.
چرا متغیرهای سراسری که در کد اصلی تعریف شذه اند دیگر در توابع شناخته شده نیستند و به رنگ سیاه درآمده اند؟
این طوری منظورتون رو متوجه نمیشم. لطفا کد خودتون رو که باهاش مشکل دارید برام ارسال کنید.