【情報I】プログラミング問題に強くなる10個の基礎(苦手な人必見)

eyecatch-3360v2

生徒
生徒

情報1のプログラミング問題って難しくない?

と感じている人に向けた記事となっています。

プログラミング問題とは「プログラムを読み解く」問題です。とは言っても、プログラムの読み方を学んでいる人は少ないはず。

生徒
生徒

なんかプログラムで出てくる「=」って、数学のイコールと違うの?よくわからないんだけど…

というように、そもそも解き方がわからない人も多いのではないでしょうか

しかし、プログラム問題は実は以下を理解できれば読み解けるようになるのです。

プログラム問題を読むために知っておくべきこと
  1. プログラムを構成する3種類の構造
  2. プログラミングの基本項目10個

そこでこの記事では、学習塾で「情報I」を指導している筆者が、プログラム問題を読むためのコツを順序立てて紹介します。

この記事を読めば「情報I」のプログラム問題に強くなりますよ!

実際の塾での授業の2~3回分の分量があります。

長くて文字も多いので一度で読み切らなくてもかまいません、そんなときは何度も読んでみてください!

注意①

この記事でのコードの記述については「情報」科で規定する擬似言語の表記に則っています。

注意②

情報1のプログラム問題を解くためにイメージを掴みやすいような言葉を選ぶように心がけています。そのため、プログラミングそのものの原理原則や理屈と照らし合わせた時に齟齬がある場合もありますがご了承ください。

本記事の信頼性

この記事の信頼性
kz2
コトゼニ(@kotozeni
  • 教育業界・学習塾で10年以上勤務。教員免許状所持
  • 500人以上の生徒に学習・進路指導:合格率 94.7%
  • プロ家庭教師・小学校学習支援サポーター、校内予備校の教室長
  • AIツールやオンラインでの豊富な指導経験を持つ
  • 不登校傾向のある生徒やギフテッドの特徴を持つ生徒も指導中

プログラムを構成する3種類の構造

「情報」のプログラミング問題を理解するために、まずはプログラムの3つの構造を理解しよう。ここでは、Scratchというビジュアルプログラミング言語を用いて説明する。

ソースコード・プログラムを読むうえでの前提

はじめに、ソースコードを読むうえでの前提を念のために確認する。

※「ソースコード」とはコンピュータに指示を出すためのコードのこと

※ここではScratchのソースコードは「ブロック」と表記する

【プログラム起動時】

プログラムを実行(起動)すると(1行目)から順に行われる。

※Scratchでは「(緑の旗)が押されたとき」ブロックを指す。

【プログラムの終了時点】

プログラムの中に書かれているコードのすべてを実行したらプログラムを終了

※Scratchではつながっているすべてのブロックが実行された時点で終了

プログラムの読む順番

さきほど「プログラムを実行(起動)すると(1行目)から順に行われる。」と書いたが、このように上から順番に処理を実行する方法を順次構造という。

順次構造

これはプログラムの基本中の基本。基本的にプログラムは順次構造で作られている。

順次構造では、プログラムが上から下へ、順番に命令を実行する

コンピュータが一つひとつの命令を順番に処理することで、タスクが完了する。

反復構造

反復構造では、ある一連の処理を何度も繰り返す。ループとも呼ばれるこの構造は、特定の条件が満たされるまで「繰り返し(ループ)」で囲まれた処理を繰り返すために使われる。

図2のプログラムにおいて、

使っている「ループ」は

図3の「3回繰り返す」であり、

繰り返す内容は、図4の「X座標を50ずつ変える」~「 Y座標を50ずつ変える」となる。

この場合は、先ほどの順次構造のプログラム(図1)を3回実行した結果と同じとなる。

図5を用いて反復構造のコードの追い方を確認しよう。

図2のプログラムは(強制的に)「3回繰り返す」ことになる。

つまり1回目の「 Y座標を50ずつ変える」が実行された後、

その後も「X座標を50ずつ変える」「1秒待つ」「 Y座標を50ずつ変える」を(それぞれ合計3回)繰り返し、 3回目の「 Y座標を50ずつ変える」を終えた時点で、プログラムは終了する。

つまり、図2のプログラムは(順次構造だけで書いた)図6のプログラムと同じなのである。※順次構造だけで書くとコードが冗長になるので、繰り返しを使って記述する。

図5
図6

条件構造(分岐構造)

分岐構造は、特定の条件に応じて処理の流れを変える構造をいう。

難しく感じるかもしれないが、分岐処理は「質問・確認」と考えよう。

分岐地点で「〇〇が当てはまりますか?」と質問(確認)され、YesかNoかでそのあとの処理が変わる、というものである。

たとえば、図7のような条件分岐のコードが備わった

ルーレットがあったとする。

このルーレットが図8のように青色で止まれば、「(青)色に触れた」という条件を

満たしたことになり、その時の処理「『当たり』と言う」が実行される。

図8

分岐構造は、入れ子構造にすることができる。入れ子構造とは、条件分岐の中に、さらに別の条件分岐を入れる構造のこと。複数の条件を順番に確認して処理を決めたいときや、最初の条件に合った後で追加の条件を調べるときに使う。

この答えは「『まだ大丈夫だよ』と言う」である。

1つ目の質問「『体力>50』ですか?」にはNoとなるが、2つ目の質問「『体力>30』ですか?」はYesとなるからである。

プログラムを構成する3種類の構造まとめ

すべてのプログラムはどれだけ複雑になったとしても、これらの

  • 順次構造
  • 反復構造
  • 条件分岐(分岐構造)

の3種類でできている。

つまり、

プログラム(を作っているソースコード)は、

順次構造をベースに、

やりたいことに応じて(必要になったら)

・反復構造

・条件分岐(分岐構造)

を挿入しているだけなのである。

まずはこの点を把握しよう。

そこに、

  • 値を扱うための「変数」、「配列」
  • 値を計算するための「演算子」
  • 決まった処理を(書くのが面倒なので)まとめておくための「関数」
  • コードを読み解くためのヒントである「コメント」

これらが、プログラムでやりたいことを実現するために考えられたアルゴリズムに沿って散りばめられているだけなのである。

プログラムのソースコードは

  • 他者が読んでも分かりやすい
  • 修正しやすい
  • 間違えにくい
  • 同じ処理を何度も書かない
  • 必要以上に無駄な処理をしない

ことを目標にされる。そのために「変数」や「配列」、「関数」といったプログラミング特有の書き方を通して「良いソースコード」へと改善していくのである。

良いソースコードへと編集していく過程を例として挙げておく。

良いソースコードへの編集過程1
良いソースコードへの編集過程2

プログラム問題を読み解く10つのポイント

※画像のソースコード内の下線や波線は作成しているアプリケーションソフトの仕様によるものなので気にする必要はない。

ここからは「プログラミングの基本項目」を順に確認しよう。

そもそもなぜ、プログラミングの基本項目を順に確認するのか。それは

共通テスト形式の問題に頻出する、配列を使った繰り返し処理を読めるようになるためである。

言い換えると、「基本項目を学ぶゴールは『配列を使った繰り返し処理を読めるようになる』こと」と捉えても良い。

配列を使った繰り返し処理は、インデックスループとも呼ばれ、配列に入っている複数の値を、番号を使って一つずつ取り出し、順番に処理するプログラムである。

このプログラムを読むために、変数・配列・演算子・条件分岐・繰り返しを一つずつ学ぶのである。

つまり、インデックスループは、プログラミングの基本項目を組み合わせた「総合問題」とも言える。

具体的には以下のコードを読めることをゴールとしよう。

解読目標

この短いコードの中には、基本事項がほぼ全部入っている。

解読目標の解説

基本項目を学んだ後にこのコードを読めるようになるために、部品(基本項目)を一つずつ確認しよう。

値・文字列

プログラムの中で「値」というのは、データそのもののことを指す。

たとえば…

– 100

– 「こんにちは」

– true(ほんとう)/false(うそ)

これらすべてが「値」である。

プログラム内では、値を変数に入れたり、計算したり、画面に表示したりする。

「文字列(もじれつ)」とは、文字や文章を1つのかたまりとして扱う値のこと。

値・文字列ポイント

この文字列や値を共通テストではどのように表記されるかを確認しよう。

変数

情報Ⅰ-変数

変数とは値に「名前」をつけて、あとから何度でも使えるようにしたり可読性を上げたりするための仕組みのこと。

難しい説明よりも、値を使うときには箱(変数)を使うのが原則。と覚えておくとよい。

また問題を解くコツとして、変数には値などのデータが入っているため、プログラムで登場した際には、「(そのコードの行の時点で、)その変数にどのような値・データが入っているのか」を意識するようにしましょう。

コトゼニ
コトゼニ

現実世界でも液体は箱(入れ物)に入れないと思うように扱えないですよね。

同じようにプログラムでも値は入れ物に入れないと処理できないとイメージしましょう。

変数の代入【重要】

変数の中に値を入れることを「代入」といい、

「=」を使う。図11のコードは図12のように、「変数に値を代入する」という意味である。
(Scratchでは図13のブロックのように「●●にする」という表記)

コトゼニ
コトゼニ

重要な点は数学で使う「=」の意味と違うということです!

また、値を代入している文では、右辺から読むと意味が分かりやすい。

たとえば「size = 43」のコードの意味は「sizeは43である(等しい)」ではなく、「43を変数sizeに代入する」という意味である。

 そもそもなぜ変数を使うの?

●計算の意味を分かりやすくする(可読性)

●値が変わっても利用しやすくする(再利用性)

ためである。Scratchで例を確認しよう。

改めて、このことから、プログラムの中で値を使うときには変数を使うのが原則だと覚えておくこと

配列

配列とはデータを格納する変数のまとまりのこと

変数は1つにつき、1つのデータしか格納できないが、変数を束にして持つ配列なら、それぞれの変数にデータを格納することができるため、複数のデータを処理する時に役立つ。

そして擬似言語での表記ルールを確認しよう。

ここで出てきた「要素」「添字(そえじ)」。これらは配列の特徴である。

配列で覚えるべき特徴はこれらを含めて3つだけ。

なお、「要素」は「値を格納する箱そのものを指す」文脈で使われることもあり、

添字」とは「要素番号を差すための数字」と考えよう。

また、「配列の長さ」は「要素数」ともいう。

要素の指定

では実際にソースコードの中で、配列の特定の箱を使うときにはどうするのかを確認しよう。

演算子(算術演算・比較演算・論理演算)

数と数を計算する「算術演算子」、大きい・小さい・同じを判定する「比較演算子」、条件を組み合わせる「論理演算子」が演算子である。演算子はどれも数学の記号と似ていますが、プログラミング特有のものを中心に覚えるようにしよう。

制御文(条件分岐)

条件分岐は3つの構造の一つ「条件分岐」を作るために使う。「IF文」とも言う。

ここでは擬似言語で用いられる3つのパターンの「条件分岐」をScratchでの表し方と比較しながら把握しよう。

制御文(繰り返し)は次の記事で

「くり返し」は反復構造を作るために使うコードであるが、

「配列」「変数」とも相性が良く、頻出のため理解が必要な項目である。

そのため「くり返し」についての詳しい解説は以下の記事で行う。

eyecatch-3360v2【情報I】プログラミング問題に強くなる10個の基礎その2(くり返し編)

まとめ

情報I、大学入学共通テスト「情報」科の範囲となっているプログラミング問題について、読み解くコツを解説しました。

まずは

  • プログラムの3つの構造
  • 「変数」
  • 「配列」
  • 「演算子」
  • 「制御文(条件分岐)」

を理解しよう。

残すは「くり返し」「関数」「コメント」。

これらは次の記事で詳しく解説する。ぜひ読んでいただきたい。

eyecatch-3360v2【情報I】プログラミング問題に強くなる10個の基礎その2(くり返し編)

最後まで読んでいただきありがとうございました。

この記事が少しでも参考になれば幸いです。

それではまたここで会いましょう!

ブログランキング・にほんブログ村へにほんブログ村

ブログ村に参加中です。上のバナーをクリックいただくだけで当ブログにポイントが入ります。いつも応援クリックありがとうございます。

Twitter

Twitter やってます。

新着記事のお知らせをしていますのでぜひフォローしてください!

人気の記事

この記事を読んだ人はこちらの記事も読んでいます。

▶︎「【塾長分析】大学入学共通テスト2025「情報」まとめ【難易度・対策】

共通テスト情報・対策共通テスト「情報」対策に必要なことは?塾講師が解説!勉強法と参考書

▶︎「【最新】(情報1)共通テスト試作問題 難易度と3つの対策

eyecatch-2491【最新】(情報1)共通テスト試作問題 難易度と3つの対策

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA