ASCII倶楽部

このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング 第6回

コンピューターの得意技、同じ部分を繰り返すループ処理

2016年09月19日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 なんらかの仕事をコンピューターにやらせることのメリットは、いくらでも思いつくでしょう。例えばコンピューターの仕事として最も基本的な数値計算であれば、人間に比べて桁違いに速く、しかも間違いもなく実行できます。しかし、その計算が1回で済んでしまうものだったらどうでしょう。そのためのプログラムを用意したり、必要なデータを入力したりする手間や時間は、それなりに必要です。もちろんその計算の複雑さにもよりますが、1回だけなら電卓で計算したほうが速いということもあるでしょう。場合によっては算盤や暗算のほうが速いことさえあるかもしれません。

 コンピューターにさせる仕事は、同じことを何度も繰り返す場合にこそ意味がある、ということは多いのです。もちろん毎回まったく同じことを繰り返しても意味がありません。計算式は同じでも、毎回異なるデータについて計算したり、条件によって計算の内容も少しずつ変えながら繰り返すことで意味が出てくるのです。コンピューターにそうした意味のある仕事をさせるのが、プログラミングの重要な機能なのです。

真でないときに実行するelse

 前回は、真偽値によってプログラムの実行する部分を選ぶif文が登場しました。少し復習しておきましょう。それは、ifというキーワードの後ろに書いた式の演算結果が真だったら、その後ろの{}で囲まれたブロックの中のプログラムを実行する、偽だったら何もしない、というものでした。

 このように言葉で書くとわかりにくいことがあるので、プログラムの動きをはっきりと表すための図式として「フローチャート」というものを使うことがあります。日本語では「流れ図」とも言いますが、あまり一般的な呼び方ではありません。このif文をフローチャートで表してみましょう。

前回に学んだif文のプログラムの動きを「フローチャート」で表すと、このようになります

 フローチャートではひし形の枠は、条件判断を表します。ここで真偽を判断して、プログラムを分岐させるのです。ひし形の中のifの後ろに「条件文」と書いてあるのは、演算結果が真か偽のどちらかになる論理式のことです。フローチャートの長方形は、中に書いてあるプログラムをそのまま実行するという意味です。if文の場合は、条件文が真なら{}の中を実行し、偽なら何もしないのです。

 偽の場合に何もしないということは、真の場合に実行するブロックが終わると、そこでプログラムは合流することになります。これでは、真ではなく偽の場合にだけ実行したいことがあっても、その流れを実現するのが難しいでしょう。これが前回に出てきた課題でした。それに対する答えとして今回紹介するのが「else」です。これは必ずifとペアで使います。真の時に実行する{}に続けてelseと書き、その次に{}で囲まれたブロックを置くと、その中はifの条件式が偽のときにだけ実行するようになります。

 前回示したif文のプログラムに続けてelseを書いてみましょう。これにより、点数scoreが基準点(この場合は80)より低いときには「不合格」とコンソールに表示するようになります。

前回のif文に続けてelse {}のように書くと、ifの条件が偽のときにだけ、elseの後ろの{}の中を実行できます

 このようなif〜else文をフローチャートに表してみましょう。ifの条件式に応じてプログラムが完全に2つの流れに分岐し、それぞれに固有の処理を実行した後で合流する様子がはっきりわかります。

if〜else文の動きをフローチャートで表すと、こうなります。流れが2つに枝分かれした後、合流します

カテゴリートップへ

この連載の記事

ASCII倶楽部の新着記事

会員専用動画の紹介も!