بخشی از پاورپوینت
--- پاورپوینت شامل تصاویر میباشد ----
اسلاید 1 :
7-1-مزاياي استفاده از توابع به جاي فايلهاي اسکريپت
.1سرعت بالاتر
.2صرفهجويي در حافظه کامپيوتر
.3توسعه تواناييهاي متلب
توابع بر خلاف فايلهاي اسکريپت در هنگام اجرا يکبار کامپايل شده و اجرا ميشوند. در حاليکه فايلهاي اسکريپت سطر به سطر کامپايل و اجرا ميگردند. اين امر باعث افزايش سرعت اجراي توابع در مقايسه با فايلهاي اسکريپت ميشود.
متغيرهاي تعريف شده در توابع پس از پايان اجراي آن از حافظه پاک ميشوند و بطور کلي فضاي کاري توابع مستقل از فضاي کاري متلب است. خصوصا در مواقعي که برنامه با ماتريسهاي بزرگ(مانند تصاوير) کار ميکند بهتر است از توابع استفاده شود
اسلاید 2 :
7-1-مزاياي استفاده از توابع به جاي فايلهاي اسکريپت-ادامه-
اکثر دستورات اصلي متلب و جعبهابزارهاي آن با استفاده از توابع نوشته شده است. به بيان ديگر به راحتي ميتوان قابليتهايي که در حال حاضر در متلب وجود ندارد را با نوشتن يک مجموعه از توابع به آن افزود. همين امر باعث شده است که در دهه گذشته قابليتهاي متلب در رشتههاي مختلف علمي و فني با سرعت چشمگيري توسعه يابد.
نکته : بهتر است در هنگام نوشتن يک برنامه آنرا بصورت اسکريپت بنويسيم تا اشکالزدايي آن آسانتر باشد اما پس از کامل شده برنامه آنرا به فانکشن تبديل کنيم تا سرعت و کيفيت آن افزايش يابد.
اسلاید 3 :
7-2- تفاوتهاي توابع و فايلهاي متني
.1فايلهاي متني سطر به سطر ترجمه و اجرا ميشوند اما توابع يکبار بطور کامل ترجمه و سپس اجرا ميگردند.
.2محيط کاري فايلهاي متني همان محيط کاري متلب است اما محيط کاري هر تابعي مختص خود اوست يعني اگر متغيري در يک تابع تعريف شود تنها در آن تابع قابل دسترسي است و برعکس متغيرهاي تعريف شده در محيط کاري متلب در داخل توابع تعريف شده نيستند.( مگر اينکه بصورت عمومي تعريف شده باشند)
.3توابع تنها از طريق آرگومانهايشان با محيط خارج در ارتباطند
اسلاید 4 :
7-3- نحوه ايجاد توابع
تنها تفاوت ظاهري يک تابع و يک فايل متني آن است که سطر اول يک تابع با کلمه کليدي fu ctio شروع ميشود که شکل کلي آن بصورت زير است:
fu ctio [argout1 , argout2, … ] = fu c ame(argi 1,argi 2,…)
%معرفي فانکشن در يک سطر
%راهنماي استفاده
% از اين فانکشن
% نويسنده فانکشن ، نسخه و سال ساخت
بدنه تابع
...
اسلاید 5 :
7-3- نحوه ايجاد توابع-ادامه-
نکات:
.1تابع ممکن است هيچ آرگومان ورودي يا خروجي نداشته باشد.
.2اولين سطر بعد از اعلان تابع، يک جمله توضيحي است که در هنگام استفاده از دستور lookfor در متلب مورد جستجو قرار ميگيرد
.3تمامي سطرهاي توضيحي تا نخستين سطر غير توضيحي در هنگام استفاده از دستور help نمايش داده ميشود.
نکته :بهتر است هنگام نوشتن يک تابع حتما يکي دو سطر در مورد نحوه استفاده از آن و عملکرد آن توضيح داده شود تا کاربر بتواند با استفاده از دستور help متلب با روش استفاده از آن تابع و قابليتهاي آن آشنا شود.
اسلاید 6 :
7-4- فرمانهاي retur و error
با استفاده از اين دو دستور ميتوان اجراي يک تابع را پيش از رسيدن به انتهاي آن متوقف کرد. تفاوت دستور error با دستور retur آن است که دستور error مي تواند يک پيغام خطا نيز بمنظور آگاهسازي کاربر نمايش دهد.
مثال:
s= i put( ‘Please e ter a scalar value= ‘);
if le gth (s) > 1
error(‘Error! Your i put is ’’t a scalar!’);
e d
a= li space( 0 , abs(s) , 100);
اسلاید 7 :
7-5- تعيين تعداد آرگومانهاي بکار رفته در حين اجرا
در متلب ميتوان توابع را با تعداد آرگومان کمتر از تعداد آرگومان موجود در تعريف تابع نيز فراخواني کرد. مثلا تابع size در متلب با دو آرگومان نوشته شده است اما با يک آرگومان نيز قابل اجراست که البته مقدار بازگشتي به تعداد آرگومانهاي مورد استفاده بستگي خواهد داشت.
در صورتيکه بخواهيم از تعداد آرگومانها در حين اجرا مطلع شويم بايد از توابع argi و argout به ترتيب براي تعداد آرگومانهاي ورودي و تعداد آرگومانهاي خروجي استفاده کنيم.
همچنین توابع argchk و argoutchk تعداد آرگومانهای ورودی و خروجی را چک میکنند و درصورتیکه با تعداد درخواست شده برابر نباشند پیام خطای مناسب را نشان میدهند.
اسلاید 8 :
7-6- نکاتي در مورد توابع
در يک فايل ميتوان بيش از يک تابع تعريف کرد. در اينصورت تمامي اين توابع ميتوانند يکديگر را فراخواني کنند اما تنها نخستين تابع از خارج از اين فايل قابل فراخواني است.
نام فايل با نام نخستين تابع آن بايد يکسان باشد. در غير اينصورت بمنظور اجراي تابع بايد از نام فايل به جاي نام تابع استفاده گردد که البته کار درستي نيست.
اسلاید 9 :
مثال ۱-۷- تابعی بنویسید که یک بردار(آرایه سطری یا ستونی) را از کاربر بگیرد و مراحل زیر را انجام دهد:
تعداد آرگومان ورودی و خروجی که توسط کاربر وارد شده است را چک کند و در صورتیکه تعداد آرگومان ورودی بیشتر یا کمتر از یک و تعداد آرگومان خروجی بیشتر از یک باشد، پیام خطا نمایش داده از تابع خارج شود.
ابعاد آرگومان ورودی را چک کند و درصورتیکه آرایهای غیر سطری یا غیر ستونی باشد(یعنی در صورتیکه به جای بردار، ماتریس باشد)، با پیام خطا از تابع خارج شود.
عبارت زیر را بر روی مقادیر ورودی اعمال نموده به عنوان خروجی بازگرداند.
y=2exp(4x2)+3si (2πx)+10
تعداد آرگومان خروجی را چک کند و در صورتیکه برابر با صفر باشد، نمودار تغییرات y در مقابل x را رسم کند.(راهنمایی: برای رسم نمودار از تابع plot(x,y) استفاده کنید.
اسلاید 10 :
تکلیف 7-1-تابعی بنویسید که یک عبارت ریاضی دلخواه را از کاربر (به صورت یک رشته کاراکتری) به عنوان آرگومان اول و یک آرایه را به عنوان آرگومان دوم بگیرد و :
چک کند که تعداد آرگومان ورودی دقیقا دو عدد باشد(با استفاده از تابع argchk)
چک کند که تعداد آرگومان خروجی دقیقا یک عدد باشد.(با استفاده از تابع argoutchk)
چک کند که آرگومان اول حتما یک رشته کاراکتری باشد و آرگومان دوم حتما یک متغیر عددی. (از توابع isstr و is umeric استفاده کنید)
با استفاده از تابع eval عبارات ریاضی وارد شده توسط کاربر را بر روی تمامی عناصر آرایه ورودی اعمال نموده، باز گرداند.