初めてのプログラム 7日目 完成電卓プログラム

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

初めてのプログラムシリーズも今日で最後。
7日目は複数の値を保存できる配列について

初めてのプログラム 6日目 で作った計算プログラムを改良して、
最後に今までの計算の流れが表示されるようにするよ

そのためには今までの計算結果を全て記憶しないと行けない。
そんな時に便利なのが配列
配列は複数の変数が集まったようなもので、配列名と添え字を指定するとそれぞれに異なる値を代入できる。
配列をつかうことで複数の値を一つにまとめて管理できるよ

配列は次のように書く
配列名[添え字] = 値

例えば
a[1] = 1
a[2] = 3
とすると
a[1]には1がa[2]には3が代入される。

実際に作ってみよう
SmallBasicを起動したら
昨日保存した6_Bekijoを開いて、
名前を付けて保存で「7_List」で保存する。

今回は配列をc、添え字をiとする。
まずは、配列に値を代入させるために添え字を管理する変数を作る。
a=x
の下で新しい変数jに0を代入しよう
変更前


a=x


変更後

a=x
j=1


画面に計算の途中経過を表示している部分をそれぞれ
配列に値を入れるようにしよう。
変更前

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


変更後

a = x + y
c[j] + "+" + y + "=" + a
TextWindow.WriteLine(c[i])


jには1を代入したので
配列c[1]に、計算結果が代入されるよ。
でも、このままでは2回目の計算を行ったときに上書きされてしまうので、添え字を1加算しておく
変更前

a = x + y
c[j] + "+" + y + "=" + a
TextWindow.WriteLine(c[i])


変更後

a = x + y
c[j] + "+" + y + "=" + a
TextWindow.WriteLine(c[i])
j = j + 1

これで2回目の計算では配列c[2]に計算結果が代入されるようになる。

引き算、かけ算、割り算、べき乗についても同様の処理を入れる。

次に、配列の値を全て表示するプログラムを作る。
配列に入っている計算結果を繰り返し表示するので6日目のFor文が使える。
繰り返すのは配列に入っている要素数分。
要素数を求めるにはArray.GetItemCount(配列名)を使用する。

変更前

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

変更後

For i = 1 To Array.GetItemCount(c)
EndFor
TextWindow.WriteLine("計算結果は" + a + "です。")


Forの中で配列c 添え字iの値を出力する処理を追加する。

For i = 1 To Array.GetItemCount(c)
TextWindow.WriteLine(c[i])
EndFor
TextWindow.WriteLine("計算結果は" + a + "です。")


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

TextWindow.WriteLine("元の値を入れてね")
x = TextWindow.ReadNumber()
a = x
j = 1
While f <> "="
TextWindow.WriteLine("計算する方法を選んでね [+ - * / ^ =]")
f = TextWindow.Read()
If f <> "=" Then
TextWindow.WriteLine("計算する値を入れてね")
y = TextWindow.ReadNumber()
If f="+" Then
a = x + y
c[j] = x + "+" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="-" Then
a = x - y
c[j] = x + "-" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="*" Then
a = x * y
c[j] = x + "*" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="/" Then
a = x / y
c[j] = x + "/" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="^" Then
If y >= 0 Then
a = 1
For i = 1 To y
a= a * x
EndFor
EndIf
c[j] = x + "^" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
Else
TextWindow.WriteLine("計算できないです")
EndIf
x=a
EndIf
EndWhile
For i = 1 To Array.GetItemCount(c)
TextWindow.WriteLine(c[i])
EndFor
TextWindow.WriteLine("計算結果は" + a + "です。")


入力し終わったらプログラムを実行して繰り返し計算して、=で今までの計算経過が表示されることを確認したら保存しよう。

これで初めてのプログラムシリーズはおしまい。
駆け足だったけれど、コレまでの応用で簡単なゲームを作ったりも出来るよ
今後はより実践的な絵を描いたりアニメーションするプログラムとかも紹介して行けたらと思ってます。

関連キーワード

[簡易言語][SmallBasic]

コメントを投稿する

名前URI
コメント

トラックバック URL(β)

iPhone OS4.0概略

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

iPhone OS4.0の概略が発表されましたね
間違いもあるかもだけれど、ざっくりまとめます。

1.マルチタスク
一番のニュース!やっとマルチタスクに対応
ただ、Androidほど自由なものじゃなくて、バックで動かせるのは制限がある模様。
音楽再生
VoIP(Skypeなど)
基地局/GPSによる位置通知
内部/ローカル通知
作業中のタスクの完了
現状の保存/再開時の読み込み
ユーザーが見ていない時に動くようなものを限定的に動けるようにすることで、複数のアプリがそれぞれ個別に動いているかのごとく見せることが出来るといったレベルみたい。
とはいえ、ユーザーのトラッキングとか、定時撮影カメラとかも出来そうだし、アプリのダウンロードしながらブラウジングとかできるようになるだろうから、これだけでもかなり便利になるとおもうよ

2.デスクトップに背景画像が表示できるようになった。
実際、iPhoneの壁紙じゃほとんど見る機会なかったものね
実はAndroidは当初から背景壁紙に対応しているのですが、
やっぱり壁紙のありがたみが全然違います。
Androidはスクリーンをスライドさせると背景も微妙にずれて立体感があったんだけれど、iPhoneではどうなるんだろう。

3.ファイルや削除したメールの検索ができるようになった。
iPadになるとやっぱりこういうのがあると便利ですよね
あまりファイル重視しちゃうとiPadの良さを削いでしまいそうですが

4.カメラやビデオにアクセス可能に
セカイカメラがより作りやすくなるってことでしょうか

5.外付けキーボード対応(Bluetooth)
これ待ち望んでいたiPhoneユーザー多いんでないの?

6.タッチでフォーカス
最近のデジカメにある液晶画面にタッチしてAFを認識させる?

7.プレイリストの作成
実際iTunesよりiPhoneで音楽聞く方が多いよね
聞きながら気に入った曲をプレイリストに入れていけるのは便利そう

7.iPod Out
謎の機能?

8.GiftApp
アプリをプレゼント可能になる?
任天堂みたいなやつかな?

9. x5デジタルズーム
iPhone内の解像度を考えれば多少のデジタルズームなら画質劣化は最小に抑えられるかと

10.フォルダに対応
アイコンをフォルダでまとめられるようになったよ

11.iAd
アプリ内で動画広告を表示可能になります。
ダウンロードはアプリの実行中にバックグラウンドで行われて
GoogleAdsenseみたいなものになるっぽい

開発者へのリターンは60% 悪く無いね
広告が大量にあるのは嫌いだけれど、これだけ有料アプリが売れない状態じゃ仕方ない。
少ないなりに収入があった方がモチベーションがわくもの

12.SNSゲーム対応
IWANGOみたいなものかな

13.対応ハードはiPhone3GS/第三世代iPodTouch
それより前のiPhone/iPodTouchは一部のみ対応

開発者としてはかなり面白くなったと思う。
特にマルチタスク対応はAndroid使っていると便利さを実感しているので、限定的なりにも対応してくれたのは嬉しい。
iAdもモチベーションわくね
あとはAndroidのAppウィジェットのように通知画面までマルチタスクに対応してくれたら最高

新型MacBookProは今回も無し
もう他社はほとんどCore iに移行しちゃってるのに、他社より割高で旧世代のPCをPROの名で売るのもいかがなものか
iPhoneOSもいいけど、そのアプリを作るのはMacなんだぞと

関連キーワード

[iPhone][IT]

コメント

名前:kyo|投稿日:2010/04/09 12:53

やっぱマルチタスクとbluetoothキーボードが期待大!

名前:kenz|投稿日:2010/04/09 18:30

マルチタスクはかなり使い勝手が良くなると思うよ
大きな写真をWebにアップするときとかでも待ち時間が無くなるし

個人的には位置情報をトラッキングして近くの人に匿名でメッセージを送る事が出来る ゆる SNSとか作ってみたい。

名前:TAKE|投稿日:2010/04/10 10:46

いま、めっちゃiPhoneのアプリ開発に興味があったりする

名前:kenz|投稿日:2010/04/10 11:36

ぜひぜひ、やってみよう
アプリ開発楽しいよ

コメントを投稿する

名前URI
コメント

トラックバック URL(β)

Androidウィジェット作成中

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

なんだかモタモタしていたらXperiaが大人気らしいです。
と言うことで、今日は急ぎAndroidウィジェット作ってました。

今日はかなり作成が進んで、Androidアプリ開発のこつがつかめてきた気がする。

特にスレッドが別々に動いていると言うことを意識して作る事が大切。
(1)定期的に(2)の処理を実行させるスレッド(AlarmManager)
(2)ウィジェットの処理を行うスレッド(AppWidgetProvider)
(3)画面を更新するスレッド(Service)
(4)設定画面のスレッド(Activity)

それぞれが別個に動いているので、お互いを連携させるためにはIntentを発行して別のスレッドを呼ばないと行けない。
最初は難しくて面倒だなぁと思っていたけれど、中身が分かってくると、CPUやメモリーの消費を抑える作りが出来るいい作りに思えてきた。
Intentの発行をメソッドにまとめてやると、開発がぐっと楽になった。

進捗は70%ほど、
基本的な機能は完成したので、あとは細かな操作性改善、
画面の見た目とか不正な値を入力した場合エラーチェックとかが残っている。

まずは基本機能のみの未熟版を無料で公開して、
付加機能が付いた有料の熟成版を開発するか検討しようかと思う。

関連キーワード

[Android][モバイル][IT]

コメントを投稿する

名前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)

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