【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ10【四則演算計算機を作る その4】

Xcode


はい。

全然人気のない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が出力される。


skitchT9Fc9l



2を押すと、数字欄から1が消えて2が出力される。


skitchj5pYBl



=を押すと数字欄から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をおしてみる。


skitchg7Siq6



おお、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種類の計算を行わせるようにコードを書いていきます。

フラグ処理ですよ。

うちのブログも死亡フラグ立ちまくりです。


【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ10【四則演算計算機を作る その4】」への6件のフィードバック

  1. とーやま

    くずのはさん こんにちわ。

    いつも勉強させてもらっています。ありがとうございます。

    さて、お時間あるときに教えてもらっていいでしょうか。

    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=

    返信
    1. 葛葉 キョウジ(管理人) 投稿作成者

      うーん、多分それは文字コードは関係ありません。
      テキスト送信されているからリンクにならないんだと思います。
      sender.forceplaintextをtrueにして送信してみてください。

      返信
      1. とーやま

        くずのはさん

        ありがとうございます。

        してみたんですが、リンクにならないで・・・思考詰まり中です。

        送信のイメージは、

        iphoneやpcのメーラー

        vps

        imoten
        imotenで追加設定、imode用のメールになる

        imodenet

        相手先

        ですよね。
        parameter.txtに
        ======
        mail.alternative
         trueを設定すると、転送するメールにtext/plainも含めて、
         multipart/alternativeで送信する。
         デフォルト[false]
        ======
        あったので
        algernativeもいじって見たんですが
        んー分かんないです。

        imode.net で何か置き換わるでしょうかね。

        返信
        1. 葛葉 キョウジ(管理人) 投稿作成者

          今自分で試してみましたが、gmail、icloud、ezweb、docomoすべてリンクになりましたよ。
          相手が機種変してHTMLメールを受け取らない設定になってるとかじゃないですよね?

          返信
          1. とーやま

            くずのはさん

            こんばんわ。

            ありがとうございます。いろんな端末で試してもらったんですね。

            試しに、
            わたしのiphoneのsimを取り出し、
            昔のガラケーにさして、選択受信してみました。

            trueでもfalseでも
            ちゃんとリンクになっていました。ごめんなさい。

            友の携帯はgaraxy doomoとsonyのガラケー au
            なんですが、
            今度、htmlを受け取らないようになっているんか
            訊いてみます。

            お騒がせしました。

            xcodeはまだまだついていけないんですが、
            今wordpress、と 苦Cをしています。

            いつも面白記事ありがとうございます。
            楽しく勉強させてもらっています。

          2. 葛葉 キョウジ(管理人) 投稿作成者

            おお、そうですか。
            WordPressということはブログ始めるんですか?
            もしそうなら教えてくださいね!

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)