Translate

2009年10月21日水曜日

回数指定ループでLEDの点滅(7) 無限ループで回数指定

[実験 MikroC Pro PIC16F84A_LED_0017]

0.1秒間隔で下記のパターンのようにLEDを4回点滅させなさい。
(1)while文(2)do~while文(3)for文の無限ループを使って考えなさい。


●○○○○○○○
●●○○○○○○
○●●○○○○○
○○●●○○○○
○○○●●○○○
○○○○●●○○
○○○○○●●○
○○○○○○●●
○○○○○○○●





















i-- は、前回までのいろいろのパターンで入れ替えて確認して下さい。
if(i <= 0) は、if(i == 0) でも結果は同じです。
無限ループから抜けるには、goto と break でしたね。


2009年10月20日火曜日

回数指定ループでLEDの点滅(6) while(count--){ }

[実験 MikroC Pro PIC16F84A_LED_0016]

0.1秒間隔で下記のパターンで4回LEDを点滅させなさい。
(1)while文(2)do~while文は、while(count-- ) を使って
(3)for文は、for(i=0; i < count; i++)を使って3つ考えなさい。


○○○○○○○●
○○○○○○●●
○○○○○●●○
○○○○●●○○
○○○●●○○○
○○●●○○○○
○●●○○○○○
●●○○○○○○
●○○○○○○○





(1)while文の回数指定ループ




(2)do~while文の回数指定ループ





(3)for文の回数指定ループ





while(count-- )
4,3,2,1,0,-1,-2,-3….とデクリメントされて、あれ?無限ループ?
そんな気になってきます。


前回の実験では、while(count-- >0 )だったので0より大きい間は繰り返す。
解りやすかったですね。

でも今回は、条件が間違えている、または、不足しているのでは。

無限ループ(1)でお話しましたが、見えない条件が隠れています。
while( )の中の制御文は、0か非0を常に判定しています。
0は偽(false)、非0は真(true)。
ですから、count=0になった時、繰り返しをやめます。
つまり、4,3,2,1と4回繰り返して5回目に0になり繰り返しを止めることになります。








mikroC PRO for PIC

2009年10月19日月曜日

回数指定ループでLEDの点滅(5) while(count-- >0){ }

[実験 MikroC Pro PIC16F84A_LED_0015]
0.05秒間隔で下記のパターンで4回LEDを点滅させなさい。
(1)while文(2)do~while文は、while(count-- >0) を使って
(3)for文は、for(i=0; i < count; i++)を使って3つ考えなさい。


●○○○○○○○
○●○○○○○○
○○●○○○○○
○○○●○○○○
○○○○●○○○
○○○○○●○○
○○○○○○●○
○○○○○○○●




(1)while文の回数指定ループ





(2)do~while文の回数指定ループ





(3)for文の回数指定ループ





while(count-- >0){...}
4,3,2,1とデクリメントされて、0になった時に、
つまりcount>0の条件を満たしたので繰り返しをやめます。
countに--が付加されたことで、プログラムが1行少なくなりましたね。








mikroC PRO for PIC



2009年10月17日土曜日

回数指定ループでLEDの点滅(4) 前置デクリメント演算子--i、前置インクリメント演算子++i

[実験 MikroC Pro PIC16F84A_LED_0014]

0.05秒間隔で下記のパターンのように4回LEDを点滅させなさい。
前置デクリメント演算子、前置インクリメント演算子を使って
(1)while文(2)do~while文(3)for文3つ考えなさい。


○○○○○○○●
○○○○○○●○
○○○○○●○○
○○○○●○○○
○○○●○○○○
○○●○○○○○
○●○○○○○○
●○○○○○○○





(1)while文の回数指定ループ





(2)do~while文の回数指定ループ





(3)for文の回数指定ループ






前置デクリメント演算子、前置減分演算子(predecrement operator)
前置インクリメント演算子、前置増分演算子(preincrement operator)
を使って見ました。
--count

++i





mikroC PRO for PIC

2009年10月16日金曜日

mikroC PRO for PIC 2009 が、Ver3.20にVersion Upしました。

mikroC PRO for PIC 2009 がVer 2.50からVer3.20にVersion Upしました。

どこが、どうUpしたのか、まだ解りません。とりあえず、報告だけです。


mikroElektronikaのページからDownload してみて下さい。

mikroBasic PRO for PIC 2009
mikroPascal PRO for PIC 2009
もVer3.20にUpしているようです。



回数指定ループでLEDの点滅(3) 後置デクリメント演算子i--、後置インクリメント演算子i++

[実験 MikroC Pro PIC16F84A_LED_0013]

0.2秒間隔で下記のパターンのように4回LEDを点滅させなさい。
後置デクリメント演算子、後置インクリメント演算子を使って
(1)while文(2)do~while文(3)for文3つ考えなさい。

●○○○○○○●
●●○○○○●●
○●●○○●●○
○○●●●●○○
○○○●●○○○
○○○○○○○○





(1) while文の回数指定ループ





(2) do~while文の回数指定ループ





(3)for文の回数指定ループ





後置デクリメント演算子、後置減分演算子(postdecrement operator)、
後置インクリメント演算子、後置増分演算子(postincrement operator)
を使ってみました。

count-- は、count=count-1またはcount-=1と同じ。
i++ は、i=i+1または i+=1と同じ。










mikroC PRO for PIC

2009年10月15日木曜日

回数指定ループでLEDの点滅(2) 複合代入演算子i-=1、 i+=1

[実験 MikroC Pro PIC16F84A_LED_0012]

0.5秒間隔で下記のパターンのように4回LEDを点滅させなさい。
複合代入演算子-=、+=を使って(1)while文(2)do~while文(3)for文
3つ考えなさい。


○○●●●●○○
●●○○○○●●



(1) while文の回数指定ループ





(2) do~while文の回数指定ループ





(3)for文の回数指定ループ






unsigned short count = 4; /* 点滅回数 4回 */
型名 変数名 = 初期化子

今回のように点滅回数4回と入れる値が決まっている場合は、
変数を宣言する時に=の右側に初期値を入れます。
これを初期化(initialization)といい、その値を初期化子(initializer)と呼びます。





複合代入演算子(Compound Assignment Operators)を使ってみました。

count -= 1 は、count = count – 1 と同じ。
i+=1  は、i = i + 1 と同じ。


複合代入演算子には、
+=, -=, *=, /=, %=, &=, =, ^=, <<= and >>=
などがあります。







リセットスイッチを押した時、バウンズ(チャタリング)が発生しています。
Delay_ms(50);を追加した方が良さそうです。

mikroC PRO for PIC