見出し画像

ど文系の私がプログラミング的思考を考えてみる④(組み合わせ)

こんばんは。
あおはるです。

ど文系の私が、新しい概念を学びながらその過程を公開していくというコンセプトで始めてみた企画。
前回からの続きもので、プログラミング的思考についてです。

1回目ではプログラミング的思考の中でモデル化を。
2回目ではモデル化に必要な要素の中の分解を。
3回目では抽象化と一般化について考えてみました。

今回は組み合わせについて考えてみます。

最後まで読んで頂ければ幸いです。


組み合わせとは?

ベネッセさんのサイトでは、以下のように書かれています。
・目的に合わせて試行錯誤しながら、明確でより良い手順を創造すること。組合せ方法には「順次」、「繰り返し」、「条件分岐」などが含まれる。

これまでは一つ一つを点で考えてきましたが、それぞれを一本の線で繋げてみましょうという話です。

組み合わせをイメージしてみる

例えば、トレーニングプログラム。

例えば、全体的に筋力をつけていきたいという目的があったとして、スクワット、ベンチプレス、腹筋というプログラムを組んだとします。

参考0420

全体的に筋力をつけていきたいので、トレーニングする箇所を分解し、それぞれN回を1セットとしてN回繰り返すといった組み方をします。

このプログラムの説明を受ける時に、

1回目の行動:ベンチプレスを1回行う
2回目の行動:ベンチプレスを1回行う
3回目の行動:ベンチプレスを1回行う
・・・
10回目の行動:ベンチプレスを1回行う
11回目の行動の前に1分の休憩
11回目の行動:ベンチプレスを1回行う
・・・
30回目の行動:ベンチプレスを1回行う

と逐一説明されると、正確ですが長くなりますし理解もしづらいですよね。

そこで、
ベンチプレス:1セット10回×3回
ベンチプレスは10回を1セットとする。つまり、10回目まで繰り返すという表現をし、さらにそれを3回繰り返すといった表現をします。

プログラミングの世界で考えてみる

日常的には上記のような組み合わせの考え方が自然と行われていますが、プログラミングにおいてはきちんと指示をしてあげなければなりません。

例えば、上記の例で言うと
1. ベンチプレスを実行する
2. 1.の行動を繰り返す
という指示だけでは、無限にベンチプレスを実行してしまいます。

現実に置き換えると怖いですよね。
こっちの身体がどれだけボロボロになろうとも無限に繰り返す実行命令が来るんです。
ホラーの世界観。

そこで、上限として10回目までという条件を加えます。
他にも現実世界に置き換えるなら、体力のような指標を設けておいて、体力が一定以下になった場合は10回目より前でも中断するといった処理も必要になります。

翻って、組み合わせを定義することの重要性

さて、上記の例ではプログラミングの方が融通が利かないと思えてしまうかもしれませんが、融通を利かせるというのは人の持つ特殊能力に近いものです。

プログラミングは想定した結果を出すために組むので、途中の状況の変化に対応することが困難です。

そこで大切なのが予測する力
今回の組み合わせの項からは拡大解釈になってしまうのですが、もしこういうケースであればこうしなければならないという想定をしておくことはとても大切です。

プログラミングにおいて、予測をしていなかったことは不具合として検知されます。
これは現実世界に置き換えても同様で、行動をする時に想定外の出来事が発生し中断させられてしまったり、予期せぬ結果になってしまうことがあると思います。

プログラミングを学ぶことは、こうした予測をする力を身に着けるトレーニングにもなります。

まとめ

というわけで、全4回に渡ってプログラミング的思考について考えてみました。
今回は実際のプログラミング、コードで書いて練習する手前の概念的な部分についてしか触れておりませんが、個人的にはコードが書けるかどうかは練習量の話であって、大切なのは考え方を理解することだと思っています。

現実世界でこれまで感覚的に行っていたことを、改めて言語化し、知識として体系化して定着させる。
プログラミング的思考を学ぶということは、プログラムを書けるようになること以上に、物事の考え方を理解するために重要だと感じました。

必修科目になるだけありますね。
いまの小学生、中学生羨ましい。


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


今回のような内容はこちらにまとめています。

また、他にもビジネス系についても書いています。
よければあわせて読んでいただければ幸いです。


この記事が参加している募集

おうち時間を工夫で楽しく

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