※「はじめに」と「プログラミングをする上で大事なこととは」はYouTubeにて解説動画を出しています。
プログラミングとはコンピュータにやってほしいことを、コードにより表現することです。
プログラミングにより、スマホのアプリを作ったり、ゲームを作ったりすることができます。
最近ではAIや自動化の推進、テレワーク需要の高まりにより、高度なプログラミングができる人材が求められており、人材価値を上げるスキルの一つ
として注目されています。
(ここではその基礎となるものを学習します。)
プログラミングにおけるコードの種類のことを指します。私たちが話す言語でも日本語、英語、中国語...とあるように、プログラムにおいても、CやC#、java、javascript、php、python、swift...という様にたくさんの種類があります。これらの言語はそれぞれ以下のような用途で用いられます。
言語の種類 | 用途 |
---|---|
C, C++ | 機械(ロボット)の制御 |
C# | windowsソフト、アプリ、ゲーム(Unity)の開発 |
Java | Androidアプリの開発 |
Javascript, PHP, HTML, CSS | Webサイトの作成 |
Python | AIの開発(Machine LearningやDeep Learningとよばれる分野です) |
Swift | iOSアプリの開発 |
Go | サーバー構築 |
学習する際はあなたのしたい、興味のある分野で使われるプログラミング言語を選んで学習すると良いです。
変数や関数はプログラミングにおいて一番基本的なものなのですが、変数は値や文字(列)を代入することで使われます。数学の授業でxやyといった変数を学習しましたよね、あれと同じようなことをします。
また関数は決まった処理をするもののことを指します。同じ処理を複数回させる時にその都度、その処理コードを全て書かなくても、関数を呼び出すだけでその処理をさせることができます。
関数と変数について、詳しくは後ほど説明します。
-
論理的思考とはAという原因(過程)があってBという結果がおこるという考え方のことです。 コンピュータは論理的に動くため、(感情的になったりはしないです、たぶん)このような考え方は必須です。
-
プログラミングをする上で必ず関数や変数を使いますが、それが'何に'、'どのように'使われるかを自分が覚えておくため、或いはチーム内で共有するためにそれを明記しておく必要があります。誰が見てもわかりやすいように書くと良いです。
-
プログラミングは論理的に行う必要があるため、そのコードがどういった仕組みで、中でどのような計算(おおまかで構いません)をしているのかをしっかりと理解しておく必要があります。
-
おそらく英語学習などで経験したことがあると思いますが、英語を読むのはスラスラできるけど、書くのは難しい...ということがありましたよね。それと同じでコーディングも読むのはできるけど、書くのが難しい...ということがあります(絶対)。ですので、見本のコードをコピペせずに、
しっかりと自分の手で打って、コードを書き写しましょう。
-
プログラミングは楽しんですることが非常に大事です。少ししんどい程度なら構いませんが、しんどい(以上の)コーディングは行わないようにしましょう。
-
Pythonなどの「コード記述スタイル」は比較的英語に近いため、自然言語のスキルが高い人ほどプログラミングスキルが身に付きやすい傾向があるそうです。ですので、英語を勉強しましょう笑
-
プログラミングをして初めての頃や、長いコードを書かなければならない時は、ミスが多い傾向があります。 ミスをした時の解決策として、以下のような3原則があります。
- プログラムが動かない理由の把握
- 動くようにするための再設計
- (再)設計通りのプログラムの構築
プログラミングでは専用のソフトを使い、プログラムを実行します。
そこで定番のソフト(エディタ)を紹介します。
(エディタとは、ターミナル(黒い画面)上でファイルを編集するツールのことを指します。)
コト/モノ | ソフト | ソフトの概要 |
---|---|---|
Python C Unity 他 |
Visual Studio Code | 最高のプログラミングソフトウェア(エディタ)。C++, pythonをはじめ、php, java, etc…といった様々な言語を扱える優秀なソフトです。 (内部で Arduino IDEを介して)Arduinoをプログラムすることができます。 Raspberry PiもSSH経由でプログラムすることができます。(講習会ではこの機能は使いません) |
Visual Studio | Visual Studio Codeと同様にプログラミングができますが、こちらは統合開発環境とよばれるソフトです。Unity、C/C++やpythonなどほかの言語も扱えます。 (容量も大きいので、講習会では使用しません) |
|
Python C 他 |
Repl.it | これはソフトではなくウェブサイトなのですが、あらかじめセットアップが行われているため、初心者に扱いやすいプログラミングプラットフォームになっています。 |
Arduino | Arduino IDE | Arduinoをプログラミングするための定番ソフトウェア。今回の講習会ではこのソフトを内部処理のためだけに使います。 |
Raspberry Pi | vim | これはソフトではなく、エディタなのですが、プログラミングのためのファイル編集ができます。これはターミナル(黒いコマンド入力の画面)で使用します。今回はこれは使用しません。 |
Thonny | プログラミング初心者の方にとって使いやすいコーディングソフト。セットアップされたラズパイにはすでに入っています。 | |
Unity | Unity Personal | 有名のゲームエンジンであるUnityのゲームを作るための開発環境。 |
こちらのサイトに上で紹介したソフトの導入手順が書いてあるので、そちらをご覧ください。
Visual Studio CodeでC/C++のプログラミングをしよう!
Visual Studio CodeでPythonのプログラミングをしよう!
Visual Studio CodeとUnityでゲームをつくろう!
この講習会資料では以下のようにフォルダーが分けられています。
言語:
- Python
- C
デバイス:
- Raspberry Pi
- Arduino
ゲーム:
- Unity
「言語」フォルダでは基本的なプログラミングの仕方を学びます。
「デバイス」フォルダーでは「言語」フォルダで習得したスキルを生かして、LED、サーボモータなどを制御する方法を学習します。
「ゲーム」フォルダーではC#を使ったUnityゲームの作成の仕方を学びます。
program0: プログラミングにおける基本事項、注意事項
program1: 足し算、引き算、掛算、割り算、割り算の余り
program2: if文
program3: ループ(有限)
program4: ループ(無限, break, continue)
program5: 多重ループ
program6: 配列(Pythonではリスト)
program7: 2次元配列
program8: 関数の作成(1) 〔返り血なし〕
program9: 関数の作成(2) 〔返り血あり〕
program_last: 構造体(PythonではClass)
work0 ~ work_lastはそれぞれprogram0 ~ program_lastの課題ファイルです。
code0: プログラミングにおける基本事項
code1: 〔デジタル〕LED制御(Lチカ)
code2: 〔アナログ〕LED制御(Lチカ)
code3: DCモータ制御
code4: サーボモータ制御
code5: 距離センサー(hc-sr04)を使用した距離測定
code6: 7セグメントディスプレイの制御
code7: サーボモータとボタンの複合制御(1)
code8: 7セグメントディスプレイ, LED, サーボモータの複合制御(2)
work0 ~ work3, work6はそれぞれcode0 ~ code3, code6の課題ファイルです。
ここに載っているコード等はすべてApache License 2.0の下保護されています。
Relating Natural Language Aptitude to Individual Differences in Learning Programming Languages
Understand, Design, Build: A Framework for Problem-Solving
プログラミングを上達するには量と質のどちらがより大切なのか?
プログラミング学習に「GitHubを使用すること」の効果とは?
総合編集: Yusuke
Arduino: カルロス, Yusuke
Raspberry Pi: Yusuke
Python: Yusuke
C++: Horiuchi, Mikawa, Inaba
Unity: DAO
電気通信工学研究会(2020)