はい。
全然人気のないXcodeの格闘記事を書いて早10話目。
どれだけ人気がないかというと、『【docomo】SIMフリーiPad miniをiOS6.1にアップデートしたらLTEを掴んだ【Xi】』という記事の場合、リリース1日目のページビューは2500。
それに比べ、Xcodeの記事は200前後。
圧倒的な少なさ。
こんなのを書いて誰得なのかといつも疑問に思いながら編集してますw
XcodeでiPhoneアプリを作る基礎を学ぶ まとめ四則演算ボタンのアルゴリズムを考える
Excelの場合、四則演算をする時はセルに『=1+2』と入力すればセルに3と出力される。
同じような感じにすればいいんだろうと単純に考えていたんだけど、よく考えればセルがない。
さらに、押したボタンが+だよ!とかーだよ!っていうのをわかるようにしなけりゃならない。
Excelにはセルで元々わかりやすいように区分けしてあるけど、Xcodeにはない。
うーん。
こりゃ困った。
計算機をいじって挙動を確かめる
とりあえず、計算機で1+2=をしてみる。
1+と押すと、数字欄に1が出力される。
2を押すと、数字欄から1が消えて2が出力される。
=を押すと数字欄から2が消えて1+2の計算結果である3が出力される。
となると、+ボタンなどの四則演算ボタンを押したら、一度countNumber変数の中身をクリアしなきゃならないのか。
でも、クリアしちゃうと前に入力した数字が何だったかわからなくなるから、それを格納しておく変数も必要になる。
うーむ。
こんな事考えたこともなかったな。
四則演算ボタンのコード
とりあえず足し算のボタン名をadditionButtonとし、コードを書いてみた。
前の数字を格納するsubtotalプロパティもあらかじめ作成済み。
プロパティの作り方はもう何度もやったよね。
– (IBAction)additionButton:(id)sender {
self.subtotal += self.countNumber;
self.countNumber = 0;
}
+ボタンをおすと、変数subtotalに、subtotalとcountNumber(ボタンの数字)を足したものを代入する。
そしてcountNumberに0を代入してクリアしてしまう。
また数字ボタンを押すとcountNumberはクリアされているので前に作った桁上げ計算はされず、1桁目からの入力になるはず。
とりあえずこれでシミュレータを起動し、1+2をおしてみる。
おお、1が消えて2になった。
これでいける!と思ったんだけど、そういえば=を押した時ってどうすればいいんだろう。
1+7+4って入力すると、今書いたコードだと+ボタンを押されるたびに下記のように計算される。
1=0+1
8=1+7
subtotal変数には1+2まで計算されているので8が格納されてるんだけど、4ボタンを押してラベルに4と表示されていても、まだ計算されていないまま。
このときに=キーを押したときに足し算されて12=8+4されてラベルには12と表示されなければならない。
四則演算は文字通り4種類。
=ボタンが押されたとき、1+2だったら足し算を、1−2だったら引き算を、1×2だったらかけ算を、1÷2だったら割り算をしなければならない。
でも=ボタンは1つ。
ということはボタンは1つなのに、前に押した四則演算キーは何が押されたのかを記憶して適切に処理をしなきゃならないって事なの?
ナンテコッタイ。
次回はフラグ処理
次回は=ボタン1つで4種類の計算を行わせるようにコードを書いていきます。
フラグ処理ですよ。
うちのブログも死亡フラグ立ちまくりです。
くずのはさん こんにちわ。
いつも勉強させてもらっています。ありがとうございます。
さて、お時間あるときに教えてもらっていいでしょうか。
imotenで携帯にメールを送るとき
相手先によると、
urlをはりつけた場合
以前は、
http://・・・・
というところが下線になってリンクがジャンプするようになっていたんですが、
文字が白いまま(他のテキストと同じ)と言われるようになりました。
前はAUメールから、今はdocomoメールからも言われます。
mailencodeをshiftjisにする必要がありますか?
もしそうすると、どんな影響があるのでしょうか
相手先のuft-8形式の読み方によるもので、こちらでは何もできないのでしょうか。
絵文字は快適に使えています。
試しに自分(docomo)に送ってみると、
iphoneではリンクしていますが、
thunderbirdでは、テキスト扱いになっています。
ちなみに imoten.iniは以下のように設定しています。
docomo.id=
(略)
forward.rewriteaddress=false
forward.headertobody=false
forward.subject.charconvfile=../conv/genDocomo2sb.csv
mail.encode=UTF-8
mail.contenttransferencoding=7bit
mail.fontfamily=Hiragino Kaku Gothic ProN
mail.emojiverticalalign=text-bottom
mail.emojisize=15px
mail.emojiverticalalignhtml=baseline
mail.emojisizehtml=14px
emojireplace.subject=false
emojireplace.body=inline
sender.forceplaintext=false
(略)
sender.charconvfile=../conv/unicode2docomo.csv,../conv/genSb2docomo.csv
sender.convertsoftbanksjis=true
sender.stripiphonequote=true
sender.docomostylesubject=true
(略)
save.cookie=true
forward.prowl.keys=
addressbook.csv=
うーん、多分それは文字コードは関係ありません。
テキスト送信されているからリンクにならないんだと思います。
sender.forceplaintextをtrueにして送信してみてください。
くずのはさん
ありがとうございます。
してみたんですが、リンクにならないで・・・思考詰まり中です。
送信のイメージは、
iphoneやpcのメーラー
↓
vps
↓
imoten
imotenで追加設定、imode用のメールになる
↓
imodenet
↓
相手先
ですよね。
parameter.txtに
======
mail.alternative
trueを設定すると、転送するメールにtext/plainも含めて、
multipart/alternativeで送信する。
デフォルト[false]
======
あったので
algernativeもいじって見たんですが
んー分かんないです。
imode.net で何か置き換わるでしょうかね。
今自分で試してみましたが、gmail、icloud、ezweb、docomoすべてリンクになりましたよ。
相手が機種変してHTMLメールを受け取らない設定になってるとかじゃないですよね?
くずのはさん
こんばんわ。
ありがとうございます。いろんな端末で試してもらったんですね。
試しに、
わたしのiphoneのsimを取り出し、
昔のガラケーにさして、選択受信してみました。
trueでもfalseでも
ちゃんとリンクになっていました。ごめんなさい。
友の携帯はgaraxy doomoとsonyのガラケー au
なんですが、
今度、htmlを受け取らないようになっているんか
訊いてみます。
お騒がせしました。
xcodeはまだまだついていけないんですが、
今wordpress、と 苦Cをしています。
いつも面白記事ありがとうございます。
楽しく勉強させてもらっています。
おお、そうですか。
WordPressということはブログ始めるんですか?
もしそうなら教えてくださいね!