【超入門】プログラミングはじめの一歩 基礎知識編

言葉としてはよく耳にする「プログラミング」。実際に何かと問われると答えに困る人も多いのではないでしょうか。

「パソコンに関係するもの」「数字がたくさん並んでいるもの」「なんだか難しそうなもの」といったイメージが入り乱れているかもしれませんが、プログラミングは「プログラムを作成し、コンピューターに命令する行為」を指します。それでは「プログラム」とは何でしょうか?

今回から数コマ、プログラミングに馴染みのない保護者層・未経験者を対象に、プログラミングを学ぶ方に必要な考え方(基礎知識)から、Webアプリ・スマホアプリ・ゲームアプリの作り方あたりまで解説できたらいいなと考えています。

親子で一緒にプログラミングを学ぶために

「お父さん(お母さん)、プログラミングをやってみたらって言うけど、そもそもプログラミングって何なの? お父さん(お母さん)もホントは知らないんじゃないの?」

子どもを前に痛いところを突かれると、つい見栄を張りたくなるかもしれません。

子どもたちは私たち親世代と違い、ゲームやタブレットやスマートフォンに触れて育ってきた子どもたちですから、大人が思っている以上にプログラミングは身近なものになっているようです。

そこでおすすめしたいのが、親子で一緒になって「プログラミング」について学ぶことです。見栄など軽く捨て去りましょう。

一緒に学ぶことは、現在を生きる子どもたちが無意識に身に着けている感覚を理解し、共感するための助けになるでしょう。

子どもにプログラミングのおもしろさを伝えるために、まずはご自身で「プログラミングって何?」という答えをまず探してみましょう。



「プログラミング」って何だろう?

まずは基本の「キ」から。

あらためて「プログラミング」とは何なのか、考えて見ましょう。

「プログラミングとは、プログラムを作る行為」を意味します。

あまりにも、そのままですね。

ではプログラムとは何でしょう。

「プログラムとは、コンピューターにやってもらいたいことを、コンピューターが理解できる方法で書いた指示書のまとめ」

身近なところでは、運動会やコンサートでもプログラムをつかいます。運動会やコンサートでは定められた順序でイベントが実行されます。
(語源はギリシャ語の「プロ=あらかじめ」「グラム=書かれたもの」です。)

コンピューターのプログラムも基本は同じ。記述されている内容は「定められた順序で、定められた処理を実行せよ」という命令をパソコンに与えているのです。

プログラム」って、要するに「こうしたら」→「こうなる」という仕組みです。

「右足出して」→「左足出すと」→「歩ける」♫ あたりまえ体操~(だいぶ古い)みたいなものですね。COWCOWは、先取りしていたんだなあ!?

「歩きたい」という目的があって、そのためには何をどの順序でやれば良いかを考える。歩くためには、「右足を前に出す」次に「左足を前に出す」そして「それを繰り返す」。この組み合わせが「プログラム」。

 文部科学省は、「プログラミング教育」で子どもたちが「プログラミング思考」を身につけることが目的だと言っています。

この「プログラミング思考」っていうのがまた、わかりにくくさせているんですね。ハッキリ言って言語センス良くないと思います。なんじゃそら? と思いますよ、ふつう。

でも、だいじょうぶ。「プログラミング思考」とは、「あたりまえ体操」のこと。

ある目的を実現するために、コンピュータに対する命令の正しい組み合わせを論理的に導き出す考え方のこと」です。短く言うと「目的達成能力」ですね。

プログラミング的に考える準備

制御文を知ろう

プログラム処理には、3つの基本の型があります。

  • 「順次処理」
  • 「条件分岐処理」
  • 「繰り返し処理」

の3種類です。一見複雑に見えるプログラムも、大別すれば三つの処理の組み合わせで構成されています。

これらの処理は、処理の部品を表す「箱」を矢印(→)でつないだフローチャートで表現できます。

フローチャートとは、主に3種類の記号を用いて、プログラムを実行する「流れ」や「条件」を第三者に伝えられるように図表化したものです。

フローチャートを作成すれば「どのプログラムを、どんな場合に、どういう順序で」実行すればいいのかが、一目瞭然でわかるようになります。

順次処理は、命令A→Bの処理を順次実行します。逐次処理やシーケンシャル処理とも呼ばれます。

条件分岐処理は、指定された分岐条件に対する判断(多くの場合はYESかNOか)の結果によって、次に行う処理が命令Aか命令Bかを決定し、そちらに進みます。

繰り返し処理は、特定の条件が続く間、同じ命令A・命令Bの処理を何度も行う。普通はその中で、繰り返しを抜ける条件の値が更新され、いずれ繰り返しを抜けることになります。(抜けなければ無限ループ)


(例)朝食の流れをフローチャートで理解する

変数を知ろう

変数はデータを入れて使う「ハコ」です。いったんハコに入れたデータは、以降の処理で使うことができます。データを変数に入れたり、変更したり、参照することができます。

変数と似たような仕組みに「定数」があります。違いは変数は処理の流れの中で中身のデータを自由に変更できますが、定数は宣言時に定したデータから変更で指きないことです。

イベントについて

もう1つプログラミングの重要な考え方となるのが「イベント」です。

例えば、キー入力やセンサーの反応といった出来事のことです。プログラムが動き始めるきっかけとなります。

画面からデータを入力後にエンターキーを押すと送信されたり、センサーが検知したときにライトが点灯ように、プログラムが動き始めるきっかけとなります。

こうした土台をきちんと頭に入れておきましょう。



クイズ形式で身につく プログラミング的思考

文部省が行った有識者会議の中で、「プログラム言語そのものでなく、コンピューター的な考え方を教えるべきだ」という意見が出され、「プログラミング 的思考」と呼ばれています。

この「プログラミング 的思考って何?」をより良く理解するためにクイズ形式で疑問への答えを見つけて見ましょう。

ジャンケンの勝ち負け

コンピュータと人が1対1で対戦する、ジャンケンの手順を例として考えてみます。

ルール

  • 合図(よくやるジャンケンポンの掛け声)を出す
  • その後、好きな手を出す
  • 出せる手は、グー・チョキ・パーの3種類
  • 自分の手と相手の手と比べて、勝敗をを決める
  • あいこなら、やり直す

上記のルールに従ってのジャンケンを時間の経過に従い説明してする場合、まず文章で説明することになります。

このルールを、ジャンケンの手順として次のように書き直しました。

手順・処理

  1. 開始
  2. 合図を出す
  3. 自分の手を指示(入力)する
  4. 相手の手を見る
  5. 勝敗を判定する
    ア 勝ちの場合 手順6に進む
    イ 負けの場合 手順7に進む
    ウ あいこの場合 手順8に進む
  6. 勝ち宣言、手順8に進む
  7. 負け宣言、手順8に進む
  8. 終了

上記のように文章でまとめた場合、「大体は分かるけど、よく分からないところがあるな」と思いませんか?

言葉だけよりも、図やイラストが添えてある方が効果的に伝達できると感じたことはありませんか?その対策として先程のフローチャートが使われます。

さらにこの手順では、「勝敗判定」の部分が不明確で「グー ・チョキ・パー」の勝敗ルールの記述が洩れていることがわかります。

道案内を作ろう

次に自宅までの道案内を考えます。

ポイント

  • 限られた命令文を組み合わせて、道案内を作ってみる
  • 正解は1つではなく何パターンかある
  • 命令文は少ない方が処理速度は速く、メンテナンスがしやすい

道案内は、自宅への生き方を友人に対して命令するとみなされるので、本質的にプログラムと同じです。

駅と自宅の地図は下図の通りとします。尚、地図の1区画は100mとします。

駅にいる友人は、地図の上の方向を向いています。友人が駅から自宅へ迷うことなくたどり着けるよう、道案内を作成します。

下図のように解答例を考えてみました。

この場合、

  1. 100m直進
  2. 右に曲がる
  3. 100m直進
  4. 左に曲がる
  5. 100m直進
  6. 右に曲がる
  7. 100m直進
  8. 100m直進

となります。

道案内で最低限クリアしなければならないことは、必ず目的地(自宅)にたどり着けることです。到達できるので、この条件はクリアしています。

しかし使う命令文の総数は8つでした。命令文の総数が増えると、処理は長くなります。

そこで、もう少し命令文を減らして処理速度を上げたいと思います。

では、ここで問題です処理速度を上げるためにはどのように変更すれば良いでしょうか?



さきほどの答えです

正解となる一例は次の通りです。計6つの命令で構成されています。

  1. 100m直進
  2. 100m直進
  3. 右に曲がる
  4. 100m直進
  5. 100m直進
  6. 100m直進

(解説)
注目してほしいのは、先程と同じ種類の命令文のみで、自宅へたどり着けるという同じ機能の道案内を2つ紹介したのですが、命令文の総数は先の道案内が8つであるのに対し、次の道案内は6つに減っています。

その内訳は、「100m直進」の数は両者ともに5つですが、前者は「右に曲がる」と「左に曲がる」が1つずつ増えています。

このような命令文の総数の違いは、プログラムの処理速度の違いに大きく影響します。さらに、後に機能の追加・変更といった「メンテナンス性」も優れています。

アンプラグドプログラミングについて

アンプラグドプログラミングは、コンピューターやタブレットなどを使わないプログラミング体験のことです。

掃除や料理、計算の手順などを、行動ごとに書き出して(分解)、順序どおりに並べてみる。これだって、立派なプログラミング的思考能力を育む教育のひとつです。

命令カードを用いたプログラミング教材を使ってもいいし、紙とえんぴつだけで取り組んでもいいです。小学校低学年なら、プログラミング教育への入り口として、このアンプラグドプログラミングの導入を考えてもよいでしょう。

プログラミング教育先進国の欧米諸国では既にボードゲームが授業の教材として採り入れられており、プログラミングに精通していない教師でも今すぐクラスで始められるアンプラグド(PC不要)の本格的なプログラミング教材として関係者から注目を集めているようです。

ボードゲームでは、プログラミングと同じプロセス≪PLAN(設計)→DO(実装)→SEE(修理)≫が発生し、プログラミングのプロセスを体験として習得できる仕組みです。

これが政府の設定した小学校におけるプログラミング教育の目標=“プログラミング的思考力の習得”となるのです。

■ボードゲーム問合せ先 CASTJAPAN

シェアする

  • このエントリーをはてなブックマークに追加