رفتن به مطلب

دستورالعمل do – loop


ارسال های توصیه شده

دستورالعمل DO – LOOP :

این دستور العمل زمانی استفاده می شود که ما بخواهیم یک حلقه تشکیل بدهیم. فرم کلی این دستور العمل به شکل زیر است:

Do

برنامه ای که قرار است به صورت حلقه اجرا شود

Loop

این حلقه یک حلقه بینهایت است و تنها با دستور EXIT DO می توان از آن خارج شد و ادامه برنامه از خط بعد از حلقه ادامه میابد. اگر بخواهیم حلقه ای بسازیم که تعداد چرخش برنامه تحت کنترل باشد می توانیم از DO – LOOP UNTIL به شکل زیر استفاده کنیم:

DO

برنامه ای که قراراست به صورت حلقه اجرا شود

LOOP UNTIL expression

که در این حلقه برنامه که قرار است به صورت حلقه انجام شود تا زمانی اجرا می شود که شرط expression صحیح شود. مثال:

Dim A As Byte

Do

A=A+1

Loop Until A=10

در مثال بالا در هر بار اجرای حلقه یک رقم به متغییر A افزوده می شود ، این عمل تا زمانی اجرا می شود که مقدار A برابر با 10 شود. نکته: دستور العمل DO – LOOP حداقل یک بار اجرا می شود. دستورالعمل FOR – NEXT : از این دستور العمل می توانیم به عنوان یک کانتر استفاده کنیم. فرم کلی این دستور العمل به شکل زیر است:

FOR var=start TO end STEP value

Statements

NEXT var

متغییر var به عنوان کانتر استفاده شده است و start مقدار اولیه و end مقدار نهایی و value مقدار STEP یا گامهای شمارش را نشان می دهد. در صورتی که از STEP در برنامه استفاده نشود نرم افزار به صورت خودکار مقدار گامها را یک در نظر می گیرد. مثال:

Dim A As Byte , B As Byte , C As Byte

For A=1 To 10 Step 2

Print A

Next A

For B=1 To -5 Step -1

Print B

Next B

For C=1 To 10

Print C

Next C

در برنامه بالا مقدار متغییر A از 1 تا 10 با گامهای 2 افزایش میابد (3 ، 5 ، 7 ، 9) و متغییر B از 1 تا -5 با گامهای -1 کاهش میابد (0 ، -1 ، -2 ، -3 ، -4 ، -5) و همچنین متغییر C از یک تا 10 با گامهای 1 افزایش میابد (2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10) دستورالعمل IF : از دستورالعمل IF در جایی استفاده میکنیم که قصد داریم مرحله ای از برنامه در صورت اجرا شدن یک یا چند شرط اجرا شود. در برنامه نویسی BASCOM به شکل زیر نوشته می شود:

IF expression THEN statement

مثال:

If A=10 Then A=0

در مثال بالا اگر مقدار متغییر A برابر 10 شود بلافاصله مقدارش صفر می شود. دستورالعمل statement زمانی اجرا می شود که شرط expression تحقق یابد. حالت 1- ممکن است دستورالعمل statement از یکی بیشتر باشد در این صورت در پایان شرط از عبارت END IF استفاده می کنیم که به شکل زیر نوشته می شود:

IF expression THEN

Statement 1

Statement 2

END IF

حالت 2- ممکن است در برنامه بخواهیم در صورت محقق نشدن شرط برنامه دیگری اجرا شود که در این صورت از ELSE استفاده میکنیم و به شکل زیر نوشته می شود:

IF expression THEN

Statement 1

ELSE

Statement 2

END IF

حالت 3- ممکن است در برنامه بخواهیم در صورت محقق نشدن شرط برنامه بلافاصله وارد شرط دیگری شود که در این صورت از ELSE IF استفاده می کنیم و به صورت زیر نوشته می شود:

IF expression 1 THEN

Statement 1

ELSE IF expression 2 THEN

Statement 2

END IF

مثال:

Dim A As Byte , B As Byte

Do

A = A + 1

If A=8 Then

B = 5

Else If A = 15 Then

B = 10

End If

Loop Until A = 20

در مثال در هر بار اجرای حلقه یک واحد به مقدار متغییر A افزوده می شود. اگر مقدار A برابر عدد 8 شود آنگاه مقدار متغییر B برابر 5 می شود ، در غیر این صورت اگر مقدار A برابر عدد 15 باشد مقدار متغییر B برابر عدد 10 می شود. این حلقه تا زمانی اجرا می شود که مقدار A برابر 20 شود. دستور العمل WHILE – WEND : این دستور العمل نیز مانند دستورالعمل های DO – LOOP و FOR – NEXT برای ساختن حلقه استفاده می شود با این تفاوت که در دو دستورالعمل قبلی حداقل یک بار حلقه اجرا میشد اما در این دستوالعمل برای ورود به حلقه ابتدا شرط چک می شود و در صورت محقق بودن شرط برنامه وارد حلقه می شود. بنابر این ممکن است در حالت هایی از برنامه حلقه WHILE – WEND اجرا نشود. این دستورالعمل به شکل زیر نوشته می شود:

WHILE condition

Statements

WEND

در صورت محقق شدن شرط condition برنامه وارد حلقه می شود و برنامه statement تا زمان صحت شرط condition اجرا خواهد شد. مثال:

Dim A As Byte

A = 1

While A

A = A + 1

Print A

Wend

در مثال بالا تا زمانی که مقدار متغییر A برابر یا کوچکتر از 10 باشد به متغییر A یک واحد اضافه می شود. دستورالعمل GOTO و JMP : از این دستورالعملها در جاهایی استفاده می شود که بخواهیم در روال برنامه ، ادامه برنامه را از نقطه ای به تقطه دیگری از برنامه هدایت کنیم یا به عبارتی برنامه را مجبور به پرش (JOMP) کنیم. شکل کلی این دستورالعمل در نرم افزار بسکام به شکل زیر نوشته می شود:

GOTO label

JMP label

با این دستور می توان به برچسب label پرش کرد. برچسب label باید با علامت : (colon) یابد و می تواند تا 32 کاراکتر طول داشته باشد. در یک برنامه نباید از دو label هم نام استفاده کرد. دستور RETURN برای برگشت از برچسب وجود ندارد. مثال:

Dim A As Byte

Start :

A = A + 1

If A

Goto Start

End If

End

در مثال بالا با شروع برنامه ابتدا شرط برنامه چک می شود و تا زمانی که متغییر A از عدد 10 کوچکتر باشد توسط دستور GOTO برنامه به برچسب start پرش می کند و یک واحد به متغییر A اضافه می شود. دستور EXIT : از این دستور برای خارج شدن از یک ساختار یا حلقه استفاده می شود تا ادامه برنامه از بعد از حلقه یا ساختار انجام شود. شکل کلی این دستور به شکل زیر نوشته می شود.

EXIT FOR

EXIT DO

EXIT WHILE

EXIT SUB

EXIT FUNCTION

دستور WAIT : گاهی در برنامه نیاز به تاخیر زمانی است و در این موارد می توان از دستور WITE (انتظار) استفاده کرد. هنگامی که برنامه به این دستور می رسد ادامه برنامه به اندازه مقدار WITE متوقف می شود و پس از سپری شدن این مقدار زمان مجدداً برنامه از خط بعد شروع به اجرا می شود. شکل کلی این دستور به شکل زیر نوشته می شود:

WITE seconds

WITEms milliseconds

WITEus microseconds

هنگامی که برنامه به دستور WITE می رسد به اندازه seconds ثانیه در برنامه تاخیر ایجاد می شود. هنگامی که برنامه به دستور WITEms می رسد به اندازه milliseconds میلی ثانیه در برنامه تاخیر ایجاد می شود. هنگامی که برنامه به دستور WITEus می رسد به اندازه microseconds میکروثانیه در برنامه تاخیر ایجاد می شود. نکته : دستور WITE زمان دقیق را ارائه نمی دهند و باید برای ایجاد زمان دقیق از تایمرهای میکروکنترلر استفاده شود. دستور TOGGLE : این دستور مقدار یک بیت یا یک پایه را معکوس میکند و به شکل کلی زیر نوشته می شود:

TOGGLE pin/Bit

مثال:

Do

Toggle pinb.0

Waitms 100

Loop

در مثال بالا پین B.0 هر 100 میلی ثانیه یک بار صفر و یک بار یک می شود. اگر یک LED به این پایه از میکروکنترلر وصل کنیم شاهد چشمک زدن LED با فاصله زمانی 100 میلی ثانیه می شویم.

 

م ب

  • Like 1
لینک به دیدگاه
×
×
  • اضافه کردن...