hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

ループ処理

ループ処理をする

メニューで「アプリを終了する」を選択するまでプログラムが終了しないような実装は以下のようなイメージとなる。

ループ処理

プログラムを実行してから終わらせないようにするにはループ処理というものを使う。

繰り返し処理

ループ処理は while という文法を使えば実行できる。whileは 繰り返し処理 と呼ばれるものを実行するための文法。

 繰り返し処理

繰り返し処理とはある決まった処理を繰り返し行うこと。
決まった回数や条件を満たしている間は処理を繰り返す。
繰り返し処理を行うための文法にはforeachwhileなどいくつかある。

 while文

while(ホワイル)文は繰り返し処理を行う文法の1つ。whileは以下のような文法で繰り返し処理を行う。

1
2
3
  while 条件式 do
    # 処理を実行する
  end

whileは条件式で繰り返すかどうかを決める。条件式が真(true)のときはずっと処理を繰り返し続ける。

 

要点チェック

 

whileで繰り返し処理

「1から10までを順に足し合わせてその都度表示する」は以下のような考え方でアルゴリズムを組み立てていく。

 アルゴリズム

アルゴリズムはコンピュータである目的を達成するための処理の手順のこと。
ここでは「1から10までを順に足し合わせてその都度表示する」が目的、もしくは解となりこれを達成するためにどのようにプログラムを組んだらいいか考えることがアルゴリズムを考えることになる。

「1から10までを順に足し合わせてその都度表示する」処理の手順

  • 1から10まで1ずつ増えていく変数numberを定義する
  • 足し合わせた数値の変数sumを定義する。
  • numberが10になるまで処理を繰り返すwhile文を書く
  • while文の中に足し合わせる処理を書く
  • while文の中に足し合わせた数字を表示させる処理を書く

アルゴリズム

 ループ処理を書いていると条件によってはいつまでも処理が終わらないという無限ループに入ってしまう。そうしたときはターミナルでプログラムを強制終了させる必要がある。強制終了はターミナル画面で「control + c」

 

sample.rb

1
2
3
4
5
6
7
  sum = 0
  number = 1
  while number <= 10 do
    sum += number
    puts sum
    number += 1
  end

3行目の「number <= 10」が条件式で「numberが10以下のときは処理を繰り返す」ということ。
ここで+=という演算子が出てくる。これは自己代入演算子と呼ばれる演算子

 自己代入演算子

自己代入とは、その名の通り自分自身に代入するということ。自己代入演算子は、通常の演算子を用いた書き方に直すことができる。例としてサンプルプログラム6行目のnumber += 1を通常の演算子+を使った書き方に直してみる。

【例】

1
  number += 1

この自己代入演算子+=を使った式は以下のように書き直せる。

【例】

1
  number = number + 1

このソースコードを見るとわかるように自己代入演算子を使った式number += 1は変数numberに1足した値をnumber自身に代入するという処理になる。
以下に代表的な自己代入演算子を示す。

自己代入演算子 処理
+= number += 1 numberに1足した値をnumber自身に代入
-= number -= 2 numberから2引いた値をnumber自身に代入
*= number *= 3 numberに3かけた値をnumber自身に代入
/= number /= 4 numberを4で割った値をnumber自身に代入

 

このように自己代入演算子を使うと、変数自身にある値を足したり、引いたりすることを簡単に記述することができる。

 

要点チェック

 

ループ処理を行う

プログラムを終了させず同じ処理をずっと繰り返すループ処理を行う方法はwhile文の条件式をtrueにしておくこと。

これでwhileが繰り返すための条件が常に真となり、永遠にwhile内の処理が繰り返される。

1
2
3
4
  while true do
    # プログラムは終了せず繰り返し処理が行われる
    ## 処理
  end

しかしこれでは無限ループとなり、処理が終わることがない。このループの処理から抜けるためにはexitメソッドを呼び出す。

 exitメソッド

exitメソッドはプログラムの処理を強制的に終了させるメソッド。言うならば、実行中のプログラムを強制終了するコマンド「control + c」と同じ役割を持つメソッド。

1
2
3
4
  while true do
    exit  # ここでプログラムが終わる
    puts "Hello World" # これは呼ばれない
  end

 exitメソッドはプログラム自体を強制終了させるのでexitメソッド以降の処理は行われない

 

sample.rb
1
2
3
4
5
6
7
  while true do
    input = gets.chomp         # ユーザーの入力
    if input == "exit" then    # exitと入力されたら
      exit                     # プログラムを終了
    end
    puts "ループ中"
  end

これはexitと入力するまでずっと処理を続けるプログラム。このようにwhileの条件式をtrueにすることでexitを呼ぶまで同じ処理を行い続ける

 

要点チェック