初めてのプログラム 5日目 SmallBASICで電卓プログラム

2010/3/29 読まれた回数1030
このエントリーを含むはてなブックマーク |  このページを Google Bookmarks に追加 | Yahoo!ブックマークに登録 | このエントリの Delicious history

5日目はGoTo文について
初めてのプログラム 4日目 SmallBASICで四則演算プログラムを改良して繰り返し計算が出来るようにするよ
今までプログラムは上から下に流れて終わるだけだったけれど
GoTo文を使うと、プログラムの処理を好きな場所へ飛ばすことが出来る。

SmallBasicを起動したら
昨日保存した4_Shisokuを開いて、
名前を付けて保存で「5_Dentaku」で保存する。

+-*/に=を加えて=が押されるまで計算する方法を選ぶ処理に戻るようにする。
戻る場所を指定するには戻る位置にラベルをセットする。
ラベルのセットの仕方は
ラベル名に続いてコロン「:」を入力する。

今回は計算する方法を選んでね、の直前に戻したいので


TextWindow.WriteLine("計算する方法を選んでね [+ - * /]")

の前にラベルを追加する。
ついでに、計算する方法に[=}も追加しておこう

ReStart:
TextWindow.WriteLine("計算する方法を選んでね [+ - * / =]")


ReStartに戻る処理を追加する。
計算を行ったら計算結果を元の値に代入する処理を追加する。
プログラムの最後に

x=a

をセットする。

このままだと、計算する方法におかしな値が入ってきた場合や、いきなり=を押した場合
aに値が入らないので、xを入力時にaにも同じ値を代入するようにする

x = TextWindow.ReadNumber()

の下に

a=x

を追加する。


計算後ReStartに戻るので
プログラムの最後に

GoTo Restart

を追加する。


次に=を押した処理の追加する。
=が押されると計算結果を表示してプログラムを終了するようにする。

プログラムの最後に=が押されたときに飛ぶラベルを追加して計算結果を表示するようにしよう。
ラベル名はEqualにする。

プログラムの最後に

Equal:
TextWindow.WriteLine("計算結果は" + a + "です。")

を追加する。

=が押されたときだけEqualへ飛ぶ処理を追加するのでif文を使う。

TextWindow.WriteLine("計算する方法を選んでね [+ - * /]")
f = TextWindow.Read()

の下に

If f = "=" Then
Goto Equal
EndIf

を追加する。

プログラム全体は次の通り


TextWindow.WriteLine("元の値を入れてね")
x = TextWindow.ReadNumber()
a = x
ReStart:
TextWindow.WriteLine("計算する方法を選んでね [+ - * / =]")
f = TextWindow.Read()
If f = "=" Then
Goto Equal
EndIf
TextWindow.WriteLine("計算する値を入れてね")
y = TextWindow.ReadNumber()
If f="+" Then
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
ElseIf f="-" Then
a = x - y
TextWindow.WriteLine(x + "-" + y + "=" + a)
ElseIf f="*" Then
a = x * y
TextWindow.WriteLine(x + "*" + y + "=" + a)
ElseIf f="/" Then
a = x / y
TextWindow.WriteLine(x + "/" + y + "=" + a)
Else
TextWindow.WriteLine("計算できないです")
EndIf
x=a
Goto ReStart
Equal:
TextWindow.WriteLine("計算結果は" + a + "です。")


入力し終わったらプログラムを実行して繰り返し計算できること
=を押すと計算結果が表示されてプログラムが終了できることを確認しよう


初めてのプログラム 6日目 SmallBASICでべき乗計算

関連キーワード

[簡易言語][SmallBasic]

コメントを投稿する

名前URI
コメント

トラックバック URL(β)

初めてのプログラム 4日目 SmallBASICで四則演算プログラム

2010/3/23 読まれた回数1115
このエントリーを含むはてなブックマーク |  このページを Google Bookmarks に追加 | Yahoo!ブックマークに登録 | このエントリの Delicious history

4日目はif文について
昨日作った挨拶プログラムを改良して引き算やかけ算等も出来るようにするよ

SmallBasicを起動したら
昨日保存した3_Tashizanを開いて、
名前を付けて保存で「4_Shisoku」で保存する。

どの計算をするかを選んでもらうために


TextWindow.WriteLine("元の値を入れてね")
x = TextWindow.ReadNumber()



TextWindow.WriteLine("足す値を入れてね")
y = TextWindow.ReadNumber()

の間に計算する記号を入力してもらう処理を追加する。

TextWindow.WriteLine("元の値を入れてね")
x = TextWindow.ReadNumber()
TextWindow.WriteLine("計算する方法を選んでね [+ - * /]")
f = TextWindow.Read()
TextWindow.WriteLine("計算する値を入れてね")
y = TextWindow.ReadNumber()

これでfにどの方法で計算するかがセットされる。

次に入力された内容によって計算方法を切り替える処理を作る。
条件によって処理を切り替えるにはif文を使う。

if文は
If 条件 Then
処理
ElseIf 条件 Then
 処理
Else
 処理
EndIf
と言う風に書く。
If 条件 Thenは
もし、条件に該当する場合だけ処理を行うと言う意味
ElseIf 条件 Thenは
今までの条件に該当せずに、新しい条件に該当する場合だけ処理を行うと言う意味
Elseは
今までの条件に該当しなかった場合に処理を行うと言う意味

例えば
If 条件1 Then
 処理A
ElseIf 条件2 Then
 処理B
ElseIf 条件3 Then
 処理C
Else
 処理D
EndIf
と言う場合、
条件1に該当する場合、処理Aが実行され、
条件1に該当せず、条件2に該当する場合、処理Bが実行される。
条件1、2該当せず、条件3に該当する場合、処理Cが実行される。
条件1、2、3全てに該当しない場合は処理Dが実行される。

ElseIfやElseは省略することも出来る。
If 条件1 Then
 処理A
Else
 処理B
EndIf
とすれば、もし条件1に該当すれば処理Aを実行し、
条件Aに該当しない場合は処理Bを行う。

If 条件1 Then
 処理A
ElseIf 条件2 Then
 処理B
EndIf
とすれば、もし条件1に該当すれば処理Aを実行し、
条件1に該当せず、条件2に該当する場合は処理Bを行い、
条件1,2に該当しない場合は何も処理を行わない。
このif文のことを条件によって処理を分岐することから条件分岐という。

今回はfに入力された値を元に計算を行い、
もし+,-,*,/以外が入力された場合はエラーを表示する処理を作る。

xとyを必ず足し算する処理をfに"+"が入ってきた場合のみ行うようにするには、

a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)

をIf文で囲って

If f="+" Then
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
EndIf

とする。

次に引き算の処理を追加する。
EndIfの前にElseIfを追加して、fが"+"ではなく"-"だった場合に引き算を行う処理を追加する。

If f="+" Then
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
ElseIf f="-" Then
a = x - y
TextWindow.WriteLine(x + "-" + y + "=" + a)
EndIf

同様に、かけ算、割り算の処理も追加する

If f="+" Then
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
ElseIf f="-" Then
a = x - y
TextWindow.WriteLine(x + "-" + y + "=" + a)
ElseIf f="*" Then
a = x * y
TextWindow.WriteLine(x + "*" + y + "=" + a)
ElseIf f="/" Then
a = x / y
TextWindow.WriteLine(x + "/" + y + "=" + a)
EndIf


最後にElseを使って+-*/以外が入力されるとエラーとなる処理を追加する。

If f="+" Then
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
ElseIf f="-" Then
a = x - y
TextWindow.WriteLine(x + "-" + y + "=" + a)
ElseIf f="*" Then
a = x * y
TextWindow.WriteLine(x + "*" + y + "=" + a)
ElseIf f="/" Then
a = x / y
TextWindow.WriteLine(x + "/" + y + "=" + a)
Else
TextWindow.WriteLine("計算できないです")
EndIf



プログラム全体は以下の通り

TextWindow.WriteLine("元の値を入れてね")
x = TextWindow.ReadNumber()
TextWindow.WriteLine("計算する方法を選んでね [+ - * /]")
f = TextWindow.Read()
TextWindow.WriteLine("計算する値を入れてね")
y = TextWindow.ReadNumber()
If f="+" Then
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
ElseIf f="-" Then
a = x - y
TextWindow.WriteLine(x + "-" + y + "=" + a)
ElseIf f="*" Then
a = x * y
TextWindow.WriteLine(x + "*" + y + "=" + a)
ElseIf f="/" Then
a = x / y
TextWindow.WriteLine(x + "/" + y + "=" + a)
Else
TextWindow.WriteLine("計算できないです")
EndIf

入力し終わったら実行ボタン
+-*/によって計算方法が変わること、
それ以外の値を入れるとエラーとなることを確認したら保存を押してプログラムを保存しよう
初めてのプログラム 5日目 SmallBASICで電卓プログラム

関連キーワード

[簡易言語][SmallBasic]

コメントを投稿する

名前URI
コメント

トラックバック URL(β)

CR-Zとインサイトを見てきました

2010/3/22 読まれた回数1839
このエントリーを含むはてなブックマーク |  このページを Google Bookmarks に追加 | Yahoo!ブックマークに登録 | このエントリの Delicious history

CR-Z、写真で見ると随分野暮ったい雰囲気だけれど、
実物はそんなこと無かったです。

サイズが小さいのでぎゅっと締まった感じで、
特にヘッドライトの立体的な造形が良い具合にアクセントになってる。
車高が低く、幅が有るので思った以上に格好いい
内装の作りもメーター周りが飾りすぎな感じはするけれど、全体の作りがまとまっていたので取って付けたような印象は受けなかった。

けれど、CR-Zは2シーターと割り切った方が良いと思う。
リアシート狭すぎ。
シルビアやRX-7のリアシートも狭かったけれど、そんなもんじゃない
普通2+2の車は座面が低くて体をたたみ込むように乗るんだけれど、インサイトはバッテリーがある関係か座面が高い。
そのくせ天井が低いから乗れたモンじゃない。
リアシートはハンドバック置き場で2シーターと割り切った方が良い。(そもそも北米は2シーター)
ただ、2シーターと割り切ると、もっと面白そうな車がいっぱいあるんだよね、マツダのロードスターとかダイハツのコペンとか
そもそも、実質2シーターを今更買えないってことで、CR-Zはパス

ということで、インサイト見てきました。
プリウスが同価格帯でぶつけられたときは、インサイト終わった って思ったけれど、試乗してみて印象が変わりました。
同じ値段ならプリウスよりこっちが良い。

車内に乗り込んだときに感じたのが凄くスポーティーなドライビングポジション。
座面が低く、若干寝そべった感じでシルビアに近い。
ファミリーカーでここまでスポーティーなのは初めて。

試乗したときはエアコンが付いていてエンジンが回っていたんだけれど、それを感じさせないほど静か 若干アイドリングの振動が伝わってくることでエンジンが回っているのが分かるんだけれど、エアコンを切ってエンジンを止めても、プリウスみたいに突然静かになったって感じがしない。

ブレーキを解除すると自動的にエンジンがかかる。
クリープに入るまでに一瞬タイムラグがあるのでATの感覚でブレーキを離していたら、流れに乗れない。
MTの感覚で早めにブレーキを外すと自然に運転できるた。
クリープ自体はするので、アクセルにふれずに渋滞ののろのろ運転とかは出来る。
エンジン始動時の振動はぶるっと大きな揺れが一瞬くる。
ATからの乗り換えはプリウスの電動クリープの方が自然に感じると思う。
振動も走行中にエンジンを始動できるプリウスの方が有利。

一つ驚いたのが音の静かさ、
普通考えればエンジンが回っているインサイトと
エンジンが止まっていても動くプリウスならプリウスの方が圧倒的に静かになりそうだけれど、街中で乗ってみた感覚は逆

外の音が響いて、エンジンが止まっているのにエンジン音が聞こえるプリウスに対して、インサイトはエンジンが回っていても静か。
停車するときも、エンジンが切れる瞬間に軽い振動があるくらいで、殆ど音が気にならない。
田舎に行くと印象は逆転するはずだけれど、街中で走る分ではインサイトの方が車格が上に感じた。

加速感はインサイトの圧勝。
CVTは加速と共にエンジンの回転数が上がっていくタイプで、いかにも加速しているって感じがする。
おまけに踏み足し時のモーターアシストが自然で数値以上にトルク感がある。
プリウスのスピードが乗らないようで実はスピードが上がっているのと比べると、とても自然で気持ちよく加速する。

ステアリングの感じもインサイトの方が一段上
電動パワステの違和感は残っているけれど、プリウスのハンドルとタイヤが別になっている感覚はなく普通のコンパクトカーレベルで自然に運転できた。

ブレーキはプリウスとインサイトで逆の印象。
プリウスは踏み始めた瞬間にガクっと強めのブレーキがかかり
その後はわりとリニアに止まる。
インサイトは軽く踏んだときのブレーキがあまり効かずに、じんわりブレーキがかかって、あわてて踏みますってことが何度かあった。
踏みましたときのブレーキの強まり方もいびつでいまいちつかみ所がない感じがした。
正直、どっちもどっちであまり好きじゃない。
プリウスのブレーキは酔いそうだし、インサイトのブレーキは怖い

足回りはインサイトの一人負け
プリウスは普通レベルのサスペンション。
インサイトは、足回りが固い。
足回りが固いっていうとスポーティーな感じだけど、
スポーティーな堅さは一気に揺れてすぐに収束する。
インサイトは一気に揺れるのにそのまま収束せずにぐらぐらと揺れ続けて、バスやトラックみたいな乗り味になってる。
実は板バネですっていわれたら信じる。

後部座席は必要最低限で、見た目で想像するほど広くない。
ドアの下部があまり開かないので足を入れにくいのと、シートが高くて天井が低いので頭上スペースも少ない。
あくまでコンパクトカーレベル。
荷室の収納もバッテリーの関係で深さがないので、見た目ほど荷物は載らない。

内装は全ての装備が普通で良かった。
サイドブレーキはレバー式だし、ATレバーも、普通の直線型だし、ハザードの場所も分かりやすく押しやすい
メーター周りだけ特殊だけれど、スピードメーターだけ見る分には見やすい。
内装がプリウスに比べてチープって言われているけれど、長く使っていて使いやすいのはインサイトの方じゃないかな

総評で、プリウスと比べて、チープだけれど走りの楽しさがある。
特にアクセルの感覚が良かった。
ハイブリッドにしては、ではなく、普通のAT車と比べても良い
装備面でも、L以上ならHIDが標準だし、カーナビをつければETCやバックビューも付いてくるし、オプションをあまりつける必要が無くて
車両本体価格では大差なくても、乗り出しはインサイトの方がだいぶ安い。

純粋に実用性だけで言えば後部座席が広いプリウスの方が上だけれど、走りの楽しさまで含めて考えたらインサイトは決してプアマンズプリウスじゃないな っと感じた。

関係ないけれど、帰りに見かけた面白い看板。

関連キーワード

[][ドライブ]

コメントを投稿する

名前URI
コメント

トラックバック URL(β)

RSSで読むRSSフィードを購読

プロフィール

kenz

新しいものが大好き
仕事ではクラウドをプライベートではAndroidアプリを作ってます。
最近、プログラムしている人が減っているのでSmallBasicの紹介記事でプログラム好きな人が増えてくれたら嬉しい

FriendFeed

日記の一覧

follow me

☆最新コメント

近況報告 
kenz:うん、タイムライン組...

近況報告 
Take:写真をiphotoに...

音楽が異常にいいゲー 
kenz:思った以上に曲数が増...

最近の日記

kenz 9月2日
Apple新製品発表

kensei 8月26日
次の

京 7月28日
postgresでクエリ結果をファイルに書き出し。 (1)

jyun 6月30日
いよいよ福岡へ (1)

あわせて読みたいブログパーツ