مجید بهره مند 43111 اشتراک گذاری ارسال شده در 11 فروردین، ۱۳۹۳ آشنایی با دستور for معنی لغوی واژه forبه معنای (برای) است. یعنی وقتی ما میتونیم از این دستور استفاده کنیم که یک کلمه برای توی سوالاتی که برای طرح یک مدار است داشته باشیم. البته نه اینکه حتما برای باشه ها این رو گفتم که کلیات دستور رو مد نظر داشته باشید. در کل وقتی از این دستور استفاده میشود که ما یک حلقه تکرار شونده رو مد نظر داشته باشیم که از یک حدی تا یک حد دیگر را تکرار کند تا وقتی که شرط برقرار باشد. پس نتیجه میگیریم که این دستور هم یک حلقه است که پایان آنرا مشخص میکنیم. و اینکه این دستور جزء دستورات شرطی نیز به حساب می آید . برای این دستور باید ایتدا و انتها و همچنین شرط را مد نظر بگیریم. حالت کلی دستور به این صورت است : ( گام حلقه ;شرط حلقه ;ابتدای حبقه for ( } [color= #000080]دستورات حلقه[/color] { نکات قابل توجه اینکه : دستور forهم مانند سایر دستورات باید با حروف کوچک نوشته شود. بین هر قسمت دستور forباید از علامت سیمی کولن ;استفاده کنید. مجموعه دستورات را باید بین دو علامت آکلاد{}و آخر هر خط دستور باید از ;استفاده کرد. منظور از گام حلقه ، تعداد واحدهایی است که باید شمارش کند ، مثلا اگر ++ بگذاریم یعنی یک واحد یک واحد شمارش کند. جدول عملگرها را در دروس قبل بیان کرده اییم که میتوانید به آن بخش ها مراجعه نمایید. مثال :ما میخواهیم یک دستور از صفر شروع به شماردن کند و تا وقتی که به عدد 10 نرسیده این شمارش را ادامه دهد. تا وقتی که شرط پاید دار است با هر کام حلقه یک واحد به متغییر مورد نظر اضافه نماید. جواب : ابتدا دو متغییر را معرفی میکنیم یکی را برای شمارش کردذن و دیگری را برای اضافه شدن. مثلا : int a,b; یا int a; int b; در ضمن ما میتوانیم مقدار اولیه به متغییرمان بدهیم مثلا برای متغییر دوم مقدار 20 را میدهیم. int b = 20; خوب حالا دستورات حلقه را مینویسیم. [color= #000080]for(a=0a { [color=#000080]b++[/color] [color=#000080]delay_ms(1000)[/color] } طبق تعریف سوال ما به متغییر اول مقدار صفر را دادیم و برای او شرط گذاشتیم که تا وقتی به 10 نرسیده ، یک واحد اضافه کند. در مجموعه دستورات به متغییر دوم یکواحد اضافه میکند. و یک ثانیه صبر میکند و دوباره شرط رامورد بررسی قرار میدهد. اگر شرط درست باشد دوباره یک واحد به مقدار دوم اضافه میکند تا به عدد 10 برسد. پس مقدار متغییر دوم 29 میشود چون ما گفتیم نرسیده به 10 یعنی کمتراز 10 باشد و متغییر اول که فقط شمارنده است و نقش دیگری ندارد. برای آشنایی بیشتر شما عزیزان یک مثال دیگر می زنم. مثلا فرض کنید میخواهیم همان مدار چشمک زن درس قبل را که با آرایه نوشتیم را با حلقه forنیز بنویسیم. برای این کار ابتدای خط همانند خط درس قبل است اما یک خط به آن اضافه میکنیم برای شمارنده که با int a; تعریفش میکنیمبه این صورت: int table[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000, 0b00000100,0b00000010,0b00000010}; int a; حال در ادامه و در حلقه while(1)حلقه forرا می نویسیم: for (a=0;a { PORTA = table[a]; [color=#000080]delay_ms(250) } توضیح مدار : توضیح اینکه ما آرایه tableرو برای PORTAانتخاب کردیم و aرو هم بعنوان شمارنده قراردادیم. یعنی چی ؟ یعنی اینکه در درس قبل گفتیم که برای صدا زدن عناصر آرایه از table[0];استفاده میکنیم خوب حالا اینجا ما میگیم آقای پورتAشما و یکی یکی عناصر tableرو با توجه به aبیا جلو وتا وقتی که حلقه aبرقرار است عناصر را بشمار. امید وارم که متوجه منظورم شده باشید. حالا فکر کنید میخواهیم یک قسمت دیگه به قسمت قبل اضافه کنیم و آن هم اینکه عناصر جدول را از آخر به اول توسط aشمارش کند. خوب برای اینکار باید به صورت زیر عمل کنیم. for (a=9;a>0;a--) { PORTA = table[a]; [color=#000080]delay_ms(250)[/color] } خوب به این صورت دو برنامه مجزا را با هم ترکیب میکنیم. voide(main)voide{ int table[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000, 0b00000100,0b00000010,0b00000001}; int a; while(1){ for (a=0;a { PORTA = table[a]; [color=#000080]delay_ms(250) } for (a=8;a>0;a--) { PORTA = table[a]; [color=#000080]delay_ms(250)[/color] } [color=#000080]} [/color] } 1 لینک به دیدگاه
ارسال های توصیه شده