تبلیغات

به نام خدا

سلام دوستان

اول از همه معذرت می خوام بخاطر وقفه ای که افتاد بین قرار دادن آموزش ها

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

لینک اول

لینک دوم

و حالا ادامه بحث توابع و برنامه نویسی:

همان‌طور که در جلسه‌ی گذشته نیز گفته شد، در این جلسه در مورد استفاده از توابع در برنامه‌نویسی به زبان C بحث خواهیم کرد. به طبع اکثر مطالبی که در این جلسه مطرح می‌شود، فقط مختص بحث روباتیک نیستند، بلکه مربوط به روش برنامه نویسی به زبان C هستند. از این منظر بحث این جلسه بسیار مهم و پرکاربرد است.

بدون مقدمه‌ی بیشتر به بحث باز می‌گردیم. تا کنون روش برنامه‌نویسی ما به این صورت بوده که تمام دستوراتی که می خواهیم روبات آن‌ها را اجرا کند، به ترتیب در قسمتی که نوشته شده است  (“Place your code here”) می‌نویسیم، و میکروکنترلر هم آن‌ها را به ترتیب مشخص شده اجرا می‌کند.

اما این روش در طراحی و نوشتن برنامه‌های بزرگتر برای ربات‌های حرفه‌ای تر ما را دچار مشکل خواهد کرد. مثلاً در نوشتن یک برنامه‌ی پیشرفته‌تر، ممکن است در چندین جای مختلف برنامه، یک سری دستورات خاص عیناً تکرار شود. مثلاً فرض کنید در یک روبات مین یاب، ممکن است در 10 جای مختلف برنامه نیاز باشد به موتورها فرمان توقف داده شود. این فرمان توقف برای 4 موتور، حداقل نیاز به 8 خط برنامه دارد.  حالا فرض کنید این رویه برای ده ها فرمان دیگر نیز در برنامه تکرار می‌شود، که فرمان "توقف" شاید ساده‌ترین و کوتا‌ه‌ترین آن‌ها باشد!

این روش برنامه‌نویسی علاوه بر زمان بَر بودن و پیچیده بودن، مشکلات دیگری هم دارد، از جمله این که از خوانایی برنامه به شدت کاسته می‌شود و به جز شخصی که برنامه را نوشته است، افراد دیگر به سختی خواهند توانست برنامه‌ی نوشته شده را بررسی کنند و در صورت لزوم تغییراتی در آن اعمال کنند یا بخش‌هایی به آن اضافه یا کم کنند. در نتیجه امکان انجام یک کار گروهی بر روی یک برنامه میسر نخواهد بود و بالاخره برنامه های بزرگ و حرفه‌ای‌تر(مثل یک بازی کامپیوتری، یا یک سیستم اتوماسیون) شاید اصلاً امکان به وجود آمدن نداشته باشند.

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

این مشکلات و شاید بسیاری دیگر، متخصصان امر را وادار به تهیه‌ی چارچوب و اصول دقیقی در روش نوشتن برنامه‌ها کرد. این اصول در قالب متدهای مختلف برنامه نویسی در طول سالیان متمادی، از لحظه‌ی شکل گیری کامپیوتر تا به امروز، توسط افراد و نهادهای مختلف بین المللی مربوطه عرضه و تکمیل شده است. و هدف آن‌ها نیز صرفاً کشف راهکارهایی برای بهبود روش‌های برنامه نویسی و به دنبال آن ایجاد برنامه‌هایی کار آمدتر و مناسب‌تر، با هزینه‌های پایین‌تر بوده است.

نخستین متدی که مورد پذیرش اکثر نهادها و شرکت‌های بزرگ بین المللی قرار گرفت ، متد "ساخت یافته"  بود. این متد بسیاری از مشکلات شرکت‌های بزرگ تولید نرم افزار و کاربران حرفه‌ای را حل کرد و تا سال‌ها به عنوان کامل‌ترین متد مورد پذیرش و استفاده قرار گرفت. هر چند پس از آن متدهای دیگری هم ارایه شد که شاید کار آمدتر هم بودند، اما هنوز هم این متد، به دلیل سادگی نسبی، طرفداران بسیاری دارد.

زبان C یک زبان ساخت یافته است، یعنی در برنامه‌نویسی به این زبان، برنامه‌نویس موظف است اصول برنامه‌نویسی ساخت یافته را رعایت کند. به همین خاطر از این به بعد ما تلاش خواهیم کرد شما را هر چه بیشتر با این متد برنامه نویسی آشنا کنیم تا انشاالله بتوانید برنامه‌های حرفه‌ای تری را برای ربات‌های پیشرفته‌تر بنویسید.


    برنامه‌نویسی ساخت‌یافته:



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

در حقیقت در متد ساخت یافته، هیچ قسمتی از برنامه خارج از این توابع نوشته نمی‌شود، بلکه برای هر بخش از برنامه، متناسب با عملی که آن بخش انجام می‌دهد، تابعی تعریف می‌شود.

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

بحث در مورد توابع را به صورت مفصل  در جلسه‌ی آینده ادامه خواهیم داد، اما لازم می‌دانم در اینجا به چند مورد از مهمترین فواید برنامه نویسی با متد ساخت یافته، به نقل از کتاب مهندس جعفر نژاد قمی اشاره کنم.

1 نوشتن برنامه‌های ساخت یافته آسان است، زیرا برنامه‌های پیچیده به بخش‌های کوچکتری تقسیم می‌شوند و هر بخش توسط تابعی نوشته می‌شود. دستورالعمل‌ها و داده‌های موجود در تابع، مستقل از سایر بخش‌های برنامه است.
2 همکاری بین افراد تیم را فراهم می‌کند. به طوری که افراد مختلف می‌توانند بخش‌های مختلفی از برنامه را بنویسند.
3 اشکال زدایی برنامه‌های ساخت یافته ساده‌تر است. اگر برنامه اشکالی داشته باشد، بررسی تابعی که اشکال در آن به وجود آمده است، ساده است.
4 برنامه نویسی ساخت یافته موجب صرفه جویی در وقت می‌شود. بدین ترتیب که، اگر تابعی بنویسید که عملی را در برنامه‌ای انجام دهد، می‌توانید آن تابع را در برنامه‌ی دیگری که به این عمل نیاز دارد، به کار ببرید. حتی اگر، با تغییر اندکی در توابع نوشته شده، بتوانید آن‌ها را در برنامه‌های دیگر به کار ببرید، باز هم مقرون به صرفه است.


    توابع:                            


توابع در زبان C از دو زاویه قابل بررسی هستند، نخست تعریف توابع؛  دوم، فراخوانی توابع.
تعریف تابع:  از یک مجموعه دستورات برنامه‌نویسی تشکیل شده است که عملکرد و وظایف آن تابع را مشخص می‌سازد.
فراخوانی تابع: دستوراتی که در داخل آن تابع تعریف شده است را اجرا می‌کند.

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

بحث بیشتر در مورد توابع را به جلسه آینده موکول می‌کنیم.
منتظر سولات و نظرات دوستان خوبم هستم.