見出し画像

書籍「一般教養としてのプログラミング」を読む(その5)

マガジンリスト > 書籍「一般教養としてのプログラミング」を読む > その5


最初にアルゴリズムを考える


上記の「一般教養としてのプログラミング」を読み進めています。
今回は、「Chapter 4 プログラミングの基礎」を読みました。

最初に自分の行動をアルゴリズムとして考え、それをフローチャートとしてまとめていきましょう。そうすることで、どのように「命令」していけばよいかがイメージできるようになります。

p.147

アルゴリズム設計はプログラミングを行う上での一番の醍醐味ではないかと思っています。
最初に実現したいことがあってこれを行うためにどのようにコンピュータに命令していくかのアルゴリズム設計を行います。その後、そのアルゴリズム通りにプログラムを作成し、コンピュータを動かします。このとき、意図通りに動かすことができれば、自分が考えたアルゴリズムはやりたいことを実現するために正しいものだったということになり、ものすごくうれしい気持ちになります。
ですので、アルゴリズム設計はプログラミングをモチベーション高く行っていくために最も大事な工程ともいえるかもしれません。
ですので、日常生活でアルゴリズム設計の練習をしておくことは、プログラミング力向上によいことだと思います。


プログラミングの文法①:関数

ちなみに、この「関数」は、読者の方々が学校で習った算数や数学の関数をそれと基本的には同じ原理です。

p.150

そうなんですよね、関数というのは学校で習った数学の関数と同じようなものなんですよね。そう考えると、プログラミングで扱う関数も理解しやすくなると思うんですが、どうでしょうか。

ちなみに、この書籍のp.150の図「当てはめられた値に応じて計算結果を出力する」は、図とその説明がおかしくなっている(関数への入力と出力が逆になっている)部分があるので、ちょっと注意が必要です。


プログラミングの文法②:変数

Python では、記述するだけで変数を使用できますが、プログラミング言語によっては、変数を用意する際に、明示的に「これは変数ですよ」と宣言しなくてはいけないものがあります。

p.156

プログラミング言語 Processing は、まさに変数の宣言を必要とするプログラミング言語の一つです。このあたりのことは記事『高校数学をプログラミングで解く(準備編)「1-3 データ型、変数、コメント、コンソール出力」』で説明していますので、必要であれば読んでみてください。
プログラミングの初学者には、Processing のような、変数の宣言が必要なプログラミング言語で学んでもらいたいところです。変数の宣言にはデータ型の知識が必要ですが、このデータ型の扱い方を最初に身につけておいてほしいからです。データ型を知っておかないと、プログラム上でどうしてそのような結果になったのか、よくわからないということも結構あります。そのような例がこの書籍の次の節にあったので、以下で紹介します。


プログラミングの文法③:演算子

たとえば、「10 ÷ 4」の結果を表示するプログラムは次のようになります。

a = 4
b = 10
c = b / a
print(c)

結果は「2.5」が表示されます。
さて、それでは「11 ÷ 7」の結果を表示するプログラムは次のようになりますが、これを実行すると何が表示されると思いますか?

a = 7
b = 11
c = b / a
print(c)

「11 ÷ 7」は、我々が算数で習った回答例としては、「1 余り 4」となるかと思います。

p.160-161

この記述に違和感を感じないでしょうか。前者の「10 ÷ 4」の結果は「2.5」、後者の「11 ÷ 7」の結果は「1 余り 4」になるといっていますが、なぜ「10 ÷ 4」の結果が「2 余り 2」ではないのでしょうか。なぜ「11 ÷ 7」の結果は「1.571428・・・」ではないのでしょうか。また、「10 ÷ 4」の結果として「2.5」ではなく「2 余り 2」としたいときにはどうしたらよいでしょうか。Python をもう少し勉強したらわかるかもしれませんが、すぐにはわかりません。
でも、Processing のような、変数をデータ型を指定して宣言して扱うプログラミング言語では、プログラムを動かすためにこのあたりの区別をきちんと行う必要があります。例えば、「10 ÷ 4」の結果を「2.5」のような小数で表したい場合は

float a = 4.0;
float b = 10.0;
float c = b / a;
print(c);

と記述します。一方、「10 ÷ 4」の結果を「2 余り 2」のような整数の割り算として表したい場合

int a = 4;
int b = 10;
int c = b / a;
print(c);

と記述します。このように、Processing では、変数(ここでは、a, b, c )の宣言時に float や int のようなデータ型を指定する必要があり、このデータ型を指定することにより、計算結果をきちんとコントロールすることができます。そのため、データ型を知っておくことは重要であり、初学者には、Processing のような、変数のデータ型を指定して扱うプログラミング言語で学ぶことをお勧めしています。


文書執筆AI

ELYZA Pencil は、2~8個までのキーワードから自動で文章を生成してくれるAIシステムです。ちょっとしたニュース記事やメール文などを、違和感のない文章で表現してくれます。

p.169

生成AIは、最近ブームになっていますので、利用したことがある方も多いと思います。ただ、上記の「違和感のない文章」というところに注意が必要です。つまり、文章に違和感はなくても、文章が正しいかどうかは保証されていないということです。
そのため、生成AIで作った文章は鵜呑みにせず、自分できちんとチェックしましょう。あと、著作権侵害などを行っていないかも気を配った方がよいでしょう。


まとめ

今回は、Chapter 4 を読んで気になる箇所にコメントしました。この Chapter  4 で紹介されているプログラミングの基礎は上でコメントしたことに注意しながら読めば、基礎知識としてはわかりやすくまとめられていると感じました。ですので、初学者の方は、是非一読されることをお勧めします。


今回は、ここまで。
次回は Chapter 5 について、コメントしていきたいと思います。

MK's papa

この記事が気に入ったらサポートをしてみませんか?