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

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


جلسه‌ي بيست و چهارم

صفحه‌ي اصلي رباتيك

جلسه‌ي بيست و ششم


به نام خدا

با عرض سلام خدمت همه‌ي دوستان عزيز

در اين جلسه نيز در ادامه‌ي مطالب جلسه پيش، سعي مي‌کنيم کمي بيشتر با نحوه‌ي برنامه‌نويسي در زبان C آشنا شويم.


متغيّر چيست؟

متغير قسمتي از حافظه است که ما براي آن يک نام دلخواه انتخاب مي کنيم و از آن براي نگه داري اطلاعات مورد نياز خود در روند اجراي برنامه استفاده مي کنيم.

1- متغيرها با خاموش شدن مدار پاک مي شوند و حافظه ي دائمي نيستند.

2- بايد نوع اطلاعاتي که قرار است در متغير نگه داري شود، معلوم گردد، مثلاً قرار است در آن عدد ذخيره شود يا حروف، يا عدد اعشاري يا .... .

3- کامپيلر به صورت خودکار بخشي از حافظه را به متغير مورد نياز ما اختصاص مي دهد و نيازي نيست ما براي آن مشخص کنيم که اطلاعات را در کجاي حافظه ذخيره کند. البته مي توان در صورت نياز آدرس بخشي از حافظه را مشخص کنيم تا اطلاعات ما در ان جا ذخيره شود(که فعلاً به آن نمي پردازيم).


تعريف متغير:

براي تعريف يک متغير ابتدا بايد نوع يا تايپ (Type) اطلاعاتي که قرار است در آن ذخيره شود، نوشته شود، و بعد از يک فاصله (Space) نام متغير نوشته شود. به مثال زير دقت کنيد:

int a;

در اينجا متغيري با نام "a" و از نوع integer يا همان عددي تعريف شده است، يعني در اين متغير فقط مي توان يک عدد صحيح (غير اعشاري) را ذخيره کرد.

نکته: اگر يک عدد اعشاري در آن ريخته شود، بخش اعشاري آن حذف مي شود.

هر متغير از جنس int، دو بايت حافظه را به خود اختصاص مي دهد و مي توان در آن اعداد در گستره ي32767 تا 32768- را ذخيره کرد.

براي ذخيره سازي حروف(Character) بايد متغير از نوع Char تعريف شود. متغيرهاي Char يک بايت حافظه را به خود اختصاص مي دهند و در آن ها مي توان تنها يک حرف را ذخيره سازي کرد. براي ذخيره سازي حروف در حافظه، کد اسکي (ASCII code) حروف در آن ذخيره مي شود.

در جدول زير چند نوع داده(Data Type) ي ديگر نيز معرفي شده است.

بازه ي تحت پوشش

اندازه (size)

Type

 2147483647  تا 2147483648 -

4 بايت

Long int

4294967295  از 0 تا

4 بايت

Unsigned long int

براي اعداد اعشاري

4 بايت

Float

65535 از 0 تا

2 بايت

Unsigned int

براي ذخيره سازي اطلاعات در داخل متغيرها نيز از همان عملگر "=" استفاده مي کنيم. مثلاً:

sum1=75;

مي توانيم متغيرها در همان موقع تعريف مقدار دهي کنيم. به اين کار مقدار دهي اوليه يا "Initialize" کردن ميگويند. مثلاً:

int sum1=75;

اطلاعاتي که در داخل متغيرها ذخيره مي شود ثابت نيست و مي توان در هر جاي برنامه که لازم بود، مقدار ديگري در متغير ذخيره کرد. مثلاً:

int Cross1=34;
.
.
.
Cross1= 68;

اگر بخواهيم مقدار متغير ثابت و غير قابل تغيير باشد بايد قبل از تعيين نوع متغير، کلمه ي "const" را بنويسيم. مثلاً

Const float pi=3.14;

مي توان چند متغير را با هم تعريف کرد و انها را مقدار دهي کرد. مثلاً:

char a1='a', a2, a3, a4='B';

توجه:برای مقدار دهی متغیرهایی که از جنس "char" تعریف میشوند، باید مقدار در داخل '   ' قرار بگیرد، به مثال بالا دقت کنید.



قوانين نام گذاري شناسه ها(Identifiers) در زبان C:

شناسه ها همان نام هايي هستند که براي متغيرها، توابع و ... انتخاب مي شوند.

براي انتخاب يک شناسه فقط مي توانيم از حروف زير استفاده کنيم:

1- اعداد 9 تا 0

2- حروف z تا a (حروف کوچک)

3- حروفZ تا A (حروف بزرگ)

4- خط فاصله "_" (Under Line)

5- علامت $

به غير از اين کاراکترها مجاز به استفاده از هيچ کاراکتر ديگري (حتي فاصله(Space) ) نيستيم.

همچنين در ابتدا شناسه ها نمي توانيم از اعداد استفاده کنيم. مثلاً شناسه ي 1loop غلط است، ولي Loop1 درست است.

طول شناسه ها نيز نميتواند بيش از 32 کاراکتر باشد.

بعضي کلمات در اين زبان جزو کلمات رزرو شده (Reserved word) هستند و نمي توانند به عنوان شناسه استفاده شوند مانند:int, float, void, char, while, if ، و ...



نکات مهم در مورد برنامه نويسي در زبان C:

1- در پايان هر دستور بايد يک ";" گذاشته شود.

2- جملات و عبارات غير عددي را بايد در داخل " " قرار دهيم. مثلاً اگر مي خواهيم کارکتر B را در داخل متغيري با نام Temp که از جنس char تعريف شده است ذخيره کنيم، بايد بنويسيم:

Temp='B';

3- زبان C در اصطلاح يک زبان Case sensitive است، يعني در اين زبان بين حروف بزرگ و کوچک تفاوت وجود دارد. مثلاً در يک برنامه ما مي توانيم دو متغير با نام هاي "temp" و "Temp" داشته باشيم که ارتباطي هم با يکديگر ندارند.

4- اگر بخواهيم در هر قسمت از برنامه توضيحاتي رو بنويسيم، بايد يک "//" در ابتداي جمله بنويسيم. مثلاً:

int a; // etelaate porte C dar in moteghayer rikhte mishavad

همچنين اگر بخواهيم چند خط پشت سر هم را موقتاً از روند اجراي برنامه حذف کنيم، بايد علامت"*/" را در ابتدا، و "/*" را در انتهاي ان خطوط قرار دهيم. هرگاه اين 2 علامت را پاک کنيم، دوباره آن قسمت، به روند اجراي برنامه اضافه مي شود.

5- در ساختار زير، هردستور يا دستوراتي که در داخل{} نوشته شود، بي نهايت بار انجام مي شود. در حقيقت while(1)، يک حلقه ي بي پايان است که دستورات داخل آن تا وقتي که مدار فعال باشد، تکرار مي شوند. در جلسات آيند شما با ساختار حلقه ها بيشتر آشنا خواهيد شد.

while(1)

{

PORTD.3=PINA.2;

PORTD.4=PINA.3;

}

اين 2 دستور مکرراً تا زمانيکه ميکروکنترلر فعال باشد، اجرا مي شوند.

در بخش برنامه نويسي مطالب بسيار گسترده اي براي آموزش هست، ولي جلسه ي آينده سعي مي کنيم کمي هم از ساير بخش هاي نرم افزاري ميکروکنترلر يعني همان Code vision صحبت کنيم تا تنوعي هم در مطالب ارائه شده داشته باشيم.

در ضمن،از اين هفته سعي مي کنيم هر هفته يک جلسه مطلب بر روي سايت قرار دهيم. جلسه ي بعد نيز 3شنبه ي هفته ي آينده بر روي سايت قرار داده خواهد شد.

منتظر سوالات و نظرات دوستان خوبم هستم

تا جلسه ي آينده خدا نگه دار

دوست شما، فراز


جلسه‌ي بيست و چهارم

صفحه‌ي اصلي رباتيك

جلسه‌ي بيست و ششم


1387/7/29 لينک مستقيم

فرستنده :
ستاره HyperLink HyperLink 1387/9/23
مـتـن : من همه جلسات شما رو خوندم دستت درد نکنه کار ارزشمندیه حالا چه کتابایی برای بیشتر یاد گرفتن و اینکه طوری یاد بگیرم که بتونم در فکر توسعه روبات باشم و حتی چیزهای جدید براش طراحی کنم نه به تصور کپی پیست باقی بمونم مرسی
پاسـخ : سلام.نگران نباشيد، مطالبي كه تا الان مطرح شده مطالب پايه‌اي و عميقي هست و شما تا الان هم بايد بتونيد خيلي چيزارو خودتون به ربات كم و زياد كنيد. بهترين راه پيشرفت در اين زمينه هم، كار عملي هست!! به هر حال من در اين جلسه سعي مي كنم منابع مناسبي رو براي مطالعه‌ي دوستان معرفي كنم.
موفق باشيد

فرستنده :
فردادِ پوران HyperLink HyperLink 1387/9/23
مـتـن : با سلام
لطفاً مطالبی در رابطه با RoboCup Soccer Simulation(logplayer,base,monitor,server,...) در سایت قرار دهید.
با سپاس فراوان
پاسـخ : سلام دوست عزيز.
چشم، سعي مي كنم مطالبي رو در ايم مورد حتماً روي سايت قرار بدم.
پيروز باشيد

فرستنده :
نیلوفر HyperLink HyperLink 1387/9/23
مـتـن : میشه کتاب هم درباره این موضوع معرفی کنید؟
پاسـخ : سلام. بله، در اين جلسه حتماً يك كتاب مناسب معرفي خواهم كرد. موفق باشيد

فرستنده :
فاطمه HyperLink HyperLink 1387/8/12
مـتـن : سلام
خسته نباشين!
خيلي خوب بود!
پاسـخ : سلام
ممنونم دوست عزيز

فرستنده :
پدرام سرحدي دانشجوي رشته مهندسي برق(الكترونيك) HyperLink HyperLink 1387/8/12
مـتـن : سلام يك سوالي پرسيدم در مورد زبان برنامه نويسي كه شما فرموديد از ميانC++وC#بهتر استC#را انتخاب كنم چون خیلی با ارزشتره و زبان خیلی کاملتر و به روزتریه، کاربرد اقتصادی بیشتری هم نسبت به C++داره.منظورتان از كامل تر اين است كه دستور هاي بيشتر ي را مي توانيم به صورت ميانبر و از قبل آماده شده داشته باشيم يا چي؟لطفا توضيح دهيدو اين كه كاربرد اقتصادي بيشتري دارد يعني چي؟ من متاسفانه خوب متوجه نشدم!راستي دستتان هم درد نكند خسته نباشيد
پاسـخ : سلام پدرام جان
بله، منظور بنده اين بود كه اين زبان C# به خاطر پشتيباني بهتري كه از بحث Object oriented يا همون برنامه نويسي شي گرا مي كنه، خيلي به روزتره نسبت به C++، و براي كار كردن در شركت ها و برنامه نويسي هاي تجاري هم كاربرد بسيار بيشتري نسبت به C++ داره.
موفق باشي دوست عزيز، اگر باز هم نكته ي گنگي وجود داره من در خدمتم

فرستنده :
sh.n HyperLink HyperLink 1387/8/12
مـتـن : ba tashakore kheili kheili ziad az zahmati kke baraye in jalasat mikeshid. khastam beporsam ke agar bekhaim dar zamineye robatik faaliate amali dashte bashim va betore ekhtesasi baraye mosabeghat amade beshim che moddat bayad kar konim?yani haddeaksar cheghadr tool mikeshe ke dar in zamine be marahele khoob va gabele tavajohi beresim va soale dige inke aia mishe tamaman az tarighe internet in amoozeshha ro did ?dar gheire insoorat aia makani baraye in faaliat vojood dare?agar momkene dar morede hodoode hazineye in faaliat ham tozih bedid.
ba tashakor az talashe shoma baraye in site kheili mofid
sh.n
پاسـخ : سلام
ممنونم دوست عزيز. شما بعد از اينكه AVR رو تا حد خوبي ياد گرفتيد، مي تونيد كار ساخت ربات رو شروع كنيد. ساخت يك ربات حرفه اي مسير ياب براي شما، بدون استاد راهنما تقريباً 20 جلسه ي آموزشي طول خواهد كشيد.
آموزش اين ربات ها رو نميشه تماماً از طريق اينترنت انجام داد و نياز به كمي پيگيري از طرف خود دانش آموز هم داره. پژوهشكده هاي مناطق آموزش پرورش معمولاً بخشي از فعاليت هاشونو به رباتيك اختصاص مي دهند، شما مي تونيد از طريق مدرسه خودتون در اين زمينه بيشتر تحقيق كنيد. اگر هم بخواهيد با بودجه ي شخصي كار كنيد، با حدود 80هزار تومان هزينه مي تونيد يك ربات مسيرياب يا آتش نشان خوب بسازيد.
به اين موضوع هم دقت كنيد كه كار رباتيك خيلي بهتره كه به صورت تيمي انجام بشه.
موفق و پيروز باشيد

فرستنده :
پیام HyperLink HyperLink 1387/8/12
مـتـن : سلام
خسته نباشی
واقعا عالیه
خواهش می کنم تا اخر ادامه بدید
در ضمن راستی نمیشه یه کم سریعتر اپدیت کنید
بازم ممنونم
بای
پاسـخ : سلام پيام جان
ممنونم،نگران نباش، حتماً ادامه خواهيم داد.
اون هم به روي چشم، سعي مي كنيم مطالب رو منظم روي سايت قرار بديم
موفق باشي دوست عزيزم

فرستنده :
پدرام HyperLink HyperLink 1387/8/12
مـتـن : سلام در جلسه 18 شما سوالي پرسيديد از ما ولي من به جوابي نرسيدم لطفا جواب سوال را خودتان بدهيد:دقت كنيد كه سنسورها مستقيماً در كنار هم چيده نشده‌اند و يه صورت زاويه دار (به شكل هشتي) چيده شده‌اند(چرا؟
پاسـخ : سلام پدرام جان
ممنون از دقت نظري كه روي مطالب داري.
دليل اين مطلب رو بيشتر مي شه در رابطه با پيچ هاي 90 درجه در مسير مسابقه مطرح كرد.
در پيچهاي 90 درجه، اگر همه ي سنسور ها در يك خط باشند، در لحظه ي اولي كه ربات به خط مي رسد، با اينكه به موتورها دستور توقف داده مي شود، ربات به خاطر سرعت اوليه اي كه دارد، از روي خط عمود رد مي شود و مسير مسابقه را گم مي كند. اما زمانيكه سنسورها هم خط نباشند، وقتي سنسور اول به خاطر سرعت زياد ربات از روي خط رد مي شود، سنسورهاي بعدي دوباره خط را ميابند و بلاخره سنسور سوم يا چهارم مي توانند ربات را متوقف كرده و به مسير مسابقه برگردانند.
باز هم اگر در اين خصوص مطلب گنگي وجود داره من در خدمتم
موفق باشي دوست عزيزم

فرستنده :
ناشناس HyperLink HyperLink 1387/8/12
مـتـن : سلام
با تشکر از مطالب خیلی خوبتون
لطفا اگ می شه یه مقدار اطلاعات هر جلسه را بیشتر و فاصله زمانی بین جلسات رو کمتر کنید
پاسـخ : سلام
ممنونم دوست عزيز. ميزان مطالبي كه در هر جلسه ارايه مي شه نمي شه خيلي بيش تر از اين مقدار فعلي باشه، چون به هر حال اين مطالب جديد هست و بار علمي مناسبي داره، ولي در خصوص فاصله ي زماني حق با شماست، ما بايد هفته اي 1 جلسه مطلب ارايه بديم و اين هفته تاخير زيادي داشتيم.انشاالله سعي مي كنيم اين مشكلات زودتر رفع بشه.
موفق باشيد

نظر شما پس از تاييد در سايت قرار داده خواهد شد
نام :
پست الکترونيکي :
صفحه شخصي :
نظر:
تایید انصراف
 

 

 فعاليت هاي علمي
 تماس با ما