なぜ書けないか

Progateなどを終わらせてみたけど、実際に自分でプログラムを書くと手が止まってしまうといった悩みを抱えられている方、結構いらっしゃるみたいです。

いくつか原因は考えられるので実際にお話を聞いてみないとわかりませんが、よくあるパターンはプログラミング言語の基本文法がきちんと習得できていないパターンです。

多くの学習教材では、「何かをインプット→その場でアウトプット」という流れで学習が進むため、ある課題を解くためにどのようにプログラミングを活用すればよいかという思考を鍛えることが難しいという欠点があります。つまり、言われたことをやっているだけで自分で考える部分が少ないので、なかなか定着しにくいのです。

競技プログラミング

  • 自分はプログラミング言語の基本文法がきちんと習得できているか?
  • できていなければ習得するにはどうすればよいか?

一つの解決策をご提案します。競技プログラミングです。

競技と聞いて構えられたかもしれません笑
といっても、皆さんに取り組んでいただきたいとご提案しているのは、その入門レベルの問題ですのでご安心ください。

ある問題のPythonでの回答例です。

a, b, c = map(int, input().split())
print(21 - a - b - c)

たったの2行です。どうですか?何とか取り組めそうではないでしょうか。

AtCoder

競技プログラミングを始める場合、AtCoderというサービスを使うことをおすすめします。理由は下記のとおりです。

  • 過去問に取り組める(時間制限がないのでゆっくり取り組めます)
  • 公式解説が丁寧
  • Webに情報が豊富

下記のページから過去問にアクセスできるので、こちらから取り組んでみてください。
https://kenkoooo.com/atcoder/#/table/

AtCoderの入門向けコンテストであるABCのA問題、B問題では下記のような知識が問われていました。これらの文法が怪しいと思われる方、ぜひトライしてみてください!

203

A. if文
B. for文(二重ループ)

202

A. 特になし
B. if文もしくは辞書型 (dictionary)

201

A. if文もしくはソート
B. ソート

200

A. 切り捨て除算
B. if文(と解法によっては文字列の結合)

199

A. if文
B. max, min

さいごに

宣伝になります。
Python, JavaScript, PHP, Rubyの基本文法Python(機械学習)に関する技術的な質問や勉強方法の相談などもお気軽にお待ちしています。