- プログラミング教材の問題の解き方がわからない
- プログラミング教材の問題の考え方を教えて欲しい
プログラミング教材、わかりにくいハズレを引いた時は、萎える。こんにちは、ウルフです。
最近のプログラミング教材には、章ごとに練習問題があります。
しかし、初心者にとってプログラミングの問題を解くのは至難の業
人によっては、問題が解けないどころか、解き方もわからず困っている人もいるのではないでしょうか?
よって、今回の記事ではプログラミング教材で出てくる問題の「解き方・考え方」のコツをご紹介していきます。

プログラミング学習駆け出しの人は、ぜひ参考にしてみてくれ!
- プログラミング独学を3年間継続している。
- 趣味でプログラミング独学をしている。
- 学んだ言語は「HTML/CSS,Javascript,PHP,Java,Python」
- 未経験からWEB制作で数十万円だけ稼いだ経験あり
勉強法|プログラミング教材、問題の解き方と考え方のコツ
プログラミング教材、問題の解き方と考え方のコツは計3つ
- 問題は前のページを見ながら解くこと
- プログラムは1個ずつ実装する
- 考えるべきはプログラムの組み合わせ方



順番に紹介していくぜ!
①:問題は前のページを見ながら解くこと


問題の答えというのは、基本的に前のページに乗っています。
なので、問題は前のページを見ながら解いていくこと。
「何を当たり前のこと言ってんだよ」
と思われるかもしれませんが、意外と「答えを見るのはズル」と思い自力で解こうとする人はいます。
別にセンター試験じゃないんだから、答えを見ても何も問題はありません。
前のページを見ながら、ゆっくり問題を解いていきましょう。
②:プログラムは1個ずつ丁寧に実装するのがコツ


プログラミング教材の問題では、結果を複数表示させるモノが出てきます。
そういった場合でも、プログラムは1個ずつ丁寧に実装していきましょう。
よくありがちな例を言うと
一発で成功させたいから
確かめずにコードを全部書いて、一気に表示をさせ、エラーになり、
どこでつまづいたかわからない
というような現象。
プログラムというのは長くなればなるほど、複雑になります。
複雑になると、エラーの原因を探るのは大変だよね。



下手すれば、最初から書き直した方が早い場合もあるからな、、、
なので、焦らず上から順番に、1個ずつ表示を確かめながら丁寧に確認していくのが吉。
③:コードの組み合わせ方を考える


プログラミングでは複数のコードを組み合わせて、プログラムを書いていきます。
問題を解く上で考えるべきは、学んだ機能の組み合わせ方です。
プログラミング教材では、章ごとに「カプセル化、修飾子、変数、if文、for文….」など、言語の様々な機能を習いますが
プログラマーの人達は、それら複数の機能を組み合わせてプログラムを書いていきます。
教材の問題も、プログラムを組み合わせて解いていく傾向にあるんですよね。
「このプログラムは、どの機能を組み合わせて実装しようか?」
こういった考えはとても大事。
逆に「カプセル化だけ使う!if分だけ使う!」みたいなことは、初心者向けの練習問題以外でありません。
実践|プログラミング教材の問題を実際に解いてみる


文章で説明されても、なかなか理解が難しいかもしれません。
なので、わたくしウルフがプログラミング教材の問題を解きつつ
頭の中で考えていることも公開してきます。
問題は以下のプログラム教材を参考にさせて頂きます▼


次のように底辺と高さを入力して、三角形の面積を出力するコードを記述して下さい。
三角形の高さを入力して下さい
3
三角形の底辺を入力してください
5
三角形の面積は7.5です。
教材を見返す
さて、教材を見返していこう
教材で今まで出てきたプログラムの入力の方法は
// ①:プログラムを書くひな形
#include <iostream>
using namespace std;
int main()
{
}
// ②:変数
int test = 0;
// ③:キーボードからの入力
cin >> test;
// ④:出力方法
cout << "キーボードの入力結果は " << test << " と出力されたよ!";
「①:プログラムを書くひな形」「②:変数の書き方」「③:キーボードからの入力」「④:出力方法」
今のところ、この4つしか出てきてません。
そして、今回のlesson4では
式と演算子、型変換
について学びました。
てことはよ?
4つの入力方法を駆使しつつレッスンで学んだ知識を使ってプログラムを書いていけば、問題は解けそう。
上から順番に実装していく
教材を見直したので、問題の上から順番に実装していこう
まずは、最初の2行
三角形の底辺を入力してください
5
「三角形の底辺を入力してください」という文字を次に出力して、キーボードで入力したら「5」という結果が表示されるようなプログラムを書きます。
#include <iostream>
using namespace std;
int main()
{
int num = 0;
cout << "三角形の底辺を入力して下さい\n";
cin >> num;
}
「変数、cout、cin」3つを使えばプログラムを実装できます。
続いて、次の2行
三角形の高さを入力して下さい
5
「三角形の高さを入力して下さい」という文字を最初に出力して、キーボードで入力したら「5」という結果が表示されるようなプログラムを書きます。
#include <iostream>
using namespace std;
int main()
{
int num = 0;
cout << "三角形の高さを入力して下さい\n";
cin >> num;
}
最初に書いたプログラムと同じ書き方ができますね。同じだから変数も使いまわせそう、、、
最後の行(ちょっと厄介)
三角形の面積は7.5です。
最後の行「三角形の面積は7.5です。」という文字を出力します。
恐らく、これが一番ややこしいのではないでしょうか?
#include <iostream>
using namespace std;
int main()
{
int num = 3 * 5 / 2;
cout << "三角形の面積は" << num <<"です。\n";
}
式と演算子を利用してこのように書けます。でも、この書き方だと、、、


出力結果は7のままで、小数点以下が表示されていません。
理由としてはlesson4でもあった通り、型がintだからですね。intだと小数点以下は表示されません。
なので、キャスト演算子を使って型名をdoubleに変換、小数点以下も表示させます。
キャスト演算子は書き方に工夫がいるので、プログラムを組み合わせながら使い方を考えましょうかね。
教材を見返しつつ、プログラムを組み合わせる
よし、素材は揃ったからプログラムを組み合わせていきます。
#include <iostream>
using namespace std;
int main()
{
int num = 0;
cout << "三角形の底辺を入力して下さい\n";
cin >> num;
cout << "三角形の高さを入力して下さい\n";
cin >> num;
int num = 3 * 5 / 2;
cout << "三角形の面積は" << num << "です。\n";
}
先ほど個別に実装したプログラムを並べてみました。
プログラムを並べてみたところ、
- 「底辺の変数、高さの変数」を個別に指定した方がいい
- 三角形の面積を求める計算式に変数を組み込む必要あり
- 小数点以下も表示させたいから、変数の型名を一部「intからdouble」に変更
というように感じました。
なので、プログラムを少し書き換えてみますよ、、、
#include <iostream>
using namespace std;
int main()
{
// 高さと底辺の変数を作成
// どちらかの型名をdoubleにする
double w = 0;
int h = 0;
cout << "三角形の底辺を入力して下さい\n";
cin >> w;
cout << "三角形の高さを入力して下さい\n";
cin >> h;
// 三角形の面積 = 底辺 × 高さ ÷ 2
// 型名をdoubleにする
double num = w * h / 2;
cout << "三角形の面積は" << num << "です。\n";
}
変更箇所は以下の通り
- 底辺の変数名「w」、型名を「double」に変更
- 高さの変数名「h」
- 変数「num」、型名を「double」に変更し計算式を「w、h」に書き換える。
さて、これで表示させてみると、、、


三角形の高さを入力して下さい
3
三角形の底辺を入力してください
5
三角形の面積は7.5です。
問題通りに表示させることができました!
- 問題は前のページを見ながら解くこと
- プログラムは1個ずつ実装する
- 考えるべきはプログラムの組み合わせ方
この流れで問題を解いても、スムーズに行くとは限りません。なので、答えを見ながらでも粘り強く問題を取り組むことが重要です!
プログラミング初心者が問題を解くことが難しい理由


プログラミング初心者はまず、問題を解くのが難しい理由について把握しておいた方がいい
だから、なぜ難しいのかについて紹介しておきます。
理由①:プログラム同士の「組み合わせ」に慣れていない
プログラミング初心者は教材のページを少しずつ進めて、1つずつ言語の機能を覚えていきます。
なので、プログラム同士の「組み合わせ」に慣れていないというのも、難しく感じるポイント。
というか、そもそも機能を組み合わせるという考えも、なかなか浮かばないと思われます。
プログラム同士を「組み合わせ」ても、普通にエラーは起こるし、焦ります。
私はJavaでオブジェクト指向を勉強していた時、特に困りましたね~
だって、アクセス制御の「組み合わせ」を間違えただけでエラーが起こったから、、、
- プログラムを組み合わせる
- エラーが起こる
- 焦る
- わからない
こういった悪循環も、初心者にとって難しく感じるんじゃないかと。



「組み合わせ」に慣れてくると、エラーの頻度も減り、エラーが起きてもすぐに解決策が浮かんでくるんだよな。
理由②:自分で考えることに慣れていない
プログラミングって、自分で考えることがかなり多いんですよ。
でも、プログラミング初心者は自分で考えることに慣れていないから、難しく感じるでしょう。
自分で考えること、例えば
- エラーやバグが起きた時の解決方法
- 教材通りにやったのにうまく表示されない
- プログラムの「組み合わせ」
など、あげればキリがないくらい、とにかく考えることが多い!
ただでさえ、難易度高いことやってんのに、基本的に全て自分で解決することになるから、尚更難しいに決まっています。
まぁ、実際のエンジニアの現場では、頻繫に質問できるわけでないから、自力で解決する能力は確実に必要なんですけどね。
そう考えると、プログラミングを学ぶだけで、自分で考える能力が身についていいかもしれませんね。



「自分で考えて、行動して、解決する」
プログラミング初心者にとって、このトレーニングは重要だな。


理由③:ググって解決に慣れていない
プログラミングを学習していると必ずわからないことが出てきて、ひたすら検索します、ググります。
プログラミング初心者は、このググってエラーを解決することに慣れていません。
私は職業柄、様々な人のPC学習を見るのですが、みんな口をそろえて言うことが
「検索のやり方がわからない」
これを聞いて私はとても驚きましたが、言われてみればそうかもしれませんね。
だって、学校でも社会でも「検索して解決する方法」なんて教えてくれません。
なるほど、、、、自分の当たり前は、他の人にとっての当たり前ではないんですね、、、いやぁ、勉強になった。
世にあるプログラミングのサイトでは「ググって解決」みたいなこと書いているけど、そもそも検索のやり方がわかない人のため、検索のやり方を最初に教えてあげる必要があるかもしれませんね。
どの勉強をするにしても、検索力は重要です。
せっかくプログラミングを学んでいるんだ、人に聞くよりも先に、ググって解決していくクセも習慣にしていきましょう。



検索する時は基本的に「C++ 学習 やり方」みたいに3ワード検索をすればOKだ。困った時はぜひ試してみてほしい。
まとめ|ひらすらこなして慣れていこう


プログラミングが難しいと感じるのって、結局のところ
慣れていない
これにつきると考えます。
慣れていないことには戸惑うし、難しく感じるのは当然です。
私はプログラミングはおろか、PCすら未経験だったので、プログラミングが難しくて難しくて仕方がありませんでした。
でも、数年間独学を続けたら流石に慣れて、今ではいつでもどんなプログラミング言語でも学べるくらいにはフットワークは軽い。
今回紹介した方法はあくまで「解き方と考え方」
後は、プログラミング教材をひたすらこなして、プログラミングそのものに慣れていきましょう!
当サイトでは、私の完全独学で苦しんだ経験をベースに
プログラミング初学者向けの独学にフォーカスした学習のフローを解説しています。
- 極力お金をかけずにプログラミングを独学したい
- 超初心者目線の学習アドバイスがほしい
- どのプログラミングサイトも専門用語多すぎてわからない
- 同じ目線で学んでいるプログラミング仲間が欲しい
というような、これからプログラミング学習を始めたい人はぜひ参考にしてみて下さい!

