Valdish’s blog

UE4初心者がただひたすらに基礎の基礎をやって報告していくだけの日記・・・かな?

基本的な文法のおさらい(1)

今週もやってきました、個人的な業務外で業務速度改善するための勉強会。 本当はもう少し進めてるんですが、文字として書き出すのが遅すぎるのと内容がわかりにくいことはご容赦いただきたい。 今日はライブラリも何も入れない状況でのPythonの基本的文法をおさらいして書いて行きたいと思う。
と言うよりこれ書いている時点で前回から1週間経っているのはおかしくない・・・?


今回の目次

  • プログラミングの基本的な動作思考
  • 結果出力
  • コメントアウト
  • if文
  • while文
  • for文

プログラミングの基本的な動作思考

早速の個人的暴論が始まりますが、プログラミングに触れ始めていろんな言語で共通して学んだことは「プログラム処理は極論して3つの動作で動いている。」ということでした。

3つの処理というのは、順次、分岐、繰り返しです。(全部二字熟語にしたかったけどいいのが思い浮かばなかった・・・。)

順次というのはそのまま順序よく処理を行なっていくことで、プログラムを書いているときも実行しているときもそうですが基本的には上から下に私たちもプログラムも読んでいきます。
1の処理
2の処理
3の処理
といったように処理を書いたとして実行優先とか特別な指定をしていない限り2,3,1や3,1,2みたいな順番でプログラムで実行はされないよということで覚えていればいいと思います。

分岐は処理に条件をつけて異なる結果や処理を実行する処理のことを指します。
例えば人間には食事を行うという処理がありますが、ある昼食にラーメンを食べるか、もやし定食を食べる選択肢があり、その人間はラーメンが大好きだとすれば、ラーメンを食べる処理に対して満足度100の結果が返ってきますが、もやし定食を食べる処理に対しては満足度70の結果が返ってくるといったように分岐の条件によって実行する処理も結果も異なるものを出したい場合に行う処理になります。(これは例えが悪すぎた・・・)

最後の繰り返しは最初に決めた回数分同じ処理を繰り返すことになります。
使う場面で言うと、ソシャゲのガチャなどはよくある処理だと思います(処理内容は知らない。
1から100までの数字をランダムに出力する処理をガチャの処理に仮定すると、10連ガチャを引きたい場合は同じ処理を10回繰り返すことで処理ができると言うことになります。

この説明で説明できているのか非常に不安ですが、ご指摘いただけたら随時修正投稿したいかなと・・・。


結果出力

まずは全ての基本、要するに答えを見える形にすることです。
注意するべきことは、この結果はプログラムを実行した結果として出力されるものであり、一般のWEBアプリなどで返ってくるポップアップでの出力ではないことくらいですかね。
やり方は単純で「print関数」を使います。

print("この中に表示したい文言を書く")

print関数の例については前回に書いた環境構築の記事で基本の「Hello World」を出力した画像があるので、そちらをみていただけたらと思います。(不親切極まる
特に付け加えることもないので次

コメントアウト

コメントアウトはどのプログラミング言語を取り扱っていても存在する重要なものだと思います。
コメントアウトとはプログラムソース上で実行しないように指定したもののことを指します。
利用方法も様々ですが、自分の主な使い方は2つあります。

1点目はデバック作業でのソースコードの一時退避です。
プログラムを描いている途中で思った動作をしない時や、一部のソースを飛ばして実行したい時に対象のソースコードを丸ごとコメントアウトして実行したりしています。コメントアウトしているコードに対しては実行自体がされないため、一部機能の確認などに重宝されると思います。
下記画像のように「print関数」で1行目は『Hello World!』、2行目は『See You World!』と出力されるようになっています。
本来なら結果として

Hello World!
See You World!

と出てくるはずなんですが・・・画像では『See You World!』だけが出力されています。
これは1行目のprint関数の行頭にコメントアウトの「#」が入っているため、1行目のプログラムを読み込んでいないためです。
使い方として、行頭に#を置くことでその行全体がコメントアウトされます。
または複数行全体をコメントアウトする方法として、複数行のコメントアウト記号自体はないですが、ダブルクォーテーションかシングルクォーテーションを3つで囲むことで擬似的に可能になります。

"""
こんな風に
"""

f:id:Valdish:20210116223208p:plain

2点目はチーム開発での保守コメントを残すことです。
これは個人開発の場合でもあったほうが便利なので皆さんも使っていくことをお勧めします。
どう言うことかというと、コメントアウトソースコードに対してだけではなく、単純な文字列も入れることができます。
つまり、ソースコード内に隣接したコードの役割説明を入れたり、作りかけの途中で更新日時を記録しておくこともできます。
チーム開発においては同一のソースコードに複数人が変更を加えることもあり、変更を加えた経緯や、加えたコードの説明などをコード内に入れておくことで引き継ぎや内容理解が時間をかけずに行うことができます。(決して口頭での説明を怠っていい理由にはなりませんが・・・
簡単なものですが使い方の例としては以下のコード例を参考にしてください。

print("Hello World!")
#↑「Hello World!」を出力する。
print("今日こそはブログ更新をしよう!")
#2021/01/18 今日は前回更新した日から丁度1週間経った・・・早く更新しなければ・・・ by管理者A
print("日が経つのが早すぎる・・・")
#2021/01/16 いつの間にか今週が過ぎ去っていた・・・記事が完成していないが、あとは頼んだ by管理者A
print("ソースコード完了")
#2021/01/16 今週があと15分で終わるんですけど!? ここで投げ出されても困るんですけど!? by作業者X

・・・はい、お分かりいただけたでしょうか。
2行目のコメントアウトは1行目のコードの説明をしており、それ以降のコメントアウトは更新した日時と更新者の情報が共有情報として書かれていました。
例のようにソースコード上で会話も開発チームでできてしまうわけですね。
つまり、チームチャットなどで報告しにくいことや後から伝えたいことなどをここに書いておけば問題ないと言うことですね!(問題は大ありなのでやめましょう
なぜ今回のような変な例を書き上げたかと言うのには非常に困った理由があります・・・。
そうです、察しのいい方もいらっしゃると思いますが、例に書いてあるとおり月曜投稿をしようとしていたのにもかかわらず記事を書く時間がなく、土曜の今までになってしまいました!
自分の自己管理能力の欠如がただただ原因のため、なんともいえませんが自己流言い訳をして1週間に1度の投稿なら次の週の土曜日の23時59分まではセーフ!と言う謎の考え方が出てきてしまったのも否めません。
目次とは異なってコメントアウトまでしかかけていませんが、一旦ここで区切って来週こそ月曜日に続きの投稿をさせていただくことで週1投稿を果たさせてください。なんでもはしません(土下座はします
とりあえず日がこえて日曜になりそうなので、今回はここまで