C#を使うようにはなったものの、具体的な機能については未習熟なので(というかまだ使うべき状況が出てきていないので)
を読んで、まずは最低限を学んでいく。
1. プログラミングとは何か
1.1 コンピュータの仕組み
1.1.1 論理回路
コンピュータは電子機器の1つであり、その基本は論理回路と呼ばれる回路によって構成される。論理回路は真理値の「真」および「偽」=2進法の「0」および「1」を電圧の強弱で表現する。
- AND演算:2つの値に対して両方がならば演算結果はに、それ以外はすべてになる。
例:
A | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
B | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
X | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
- OR演算:2つの値に対して少なくとも一方がならば演算結果はに、それ以外はすべてになる。
例:
A | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
B | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
X | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
- NOT演算:ならばを、ならばになる。
例:
A | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
X | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
1.2 コンピュータの内部構造
現在のコンピュータの中核は、
で構成される。- CPU:コンピュータなどにおいて中心的な処理装置として働く電子回路。
- メモリ:プログラムやデータなどを保存する装置。
- ハードディスク:コンピュータの主要部分の外部に接続してプログラムやデータなどを記録する2次記憶装置。メインメモリが電源を切ると記録を消してしまうため、ハードディスクに残したい情報を記録する。ただしメモリに比べアクセスに時間がかかり、また衝撃に弱い。
1.2.1 メモリの種類
コンピュータのメモリには大きく分けてRAM(何度も自由にデータを読み書きできるもののコンピュータの電源が切れるとデータが消失する)とROM(読み出し専用でコンピュータの電源が切れても消失しない)の2種類がある。
コンピュータに内蔵されるメモリには主に以下の3種類がある:
1.3 ソフトウェア
コンピュータを利用するためにはソフトウェアが必要で、①アプリケーションソフトウェアと②システムソフトウェアがある。
- アプリケーションソフトウェア:コンピュータ上で特定の作業を行うことを目的に用意されたプログラム
- システムソフトウェア:システムの根幹を成すソフトウェア。①直接ハードウェアを操作・制御するためのソフトウェアである基本ソフト(OS)、②アプリケーションソフトとOSの中間的な役割を持つソフトウェア、③コンピュータに接続する周辺機器の内部でその機器自身の制御のために動作するソフトウェアがある。
1.3.1 OSの働き
OSの基本的な役割:
- 周辺機器の制御:キーボードやマウス、ディスプレイなどの正常動作をチェックする
- ユーザーインターフェースの提供:GUI*1やCUI*2を提供する
- ソフトウェアの管理:さまざまなソフトウェアを同時に動作させることやソフトウェアの(アン)インストールを行う
- コンピュータ上のデータ管理:コンピュータ内部のデータ(ファイル)を管理する
1.4. プログラミング言語
コンピュータにどのような仕事や動作をするかを教える一連の作業をプログラムという。
表1 C#以外のプログラミング言語例
言語名 |
特徴 |
C | 現在用いられrテイル主流の言語の中では最も古い言語。多くの言語がC言語をベースに作られている。 |
C++ | C言語を更に拡張した言語。オブジェクト指向という考え方に対応している。 |
Java | C/C++をベースにして開発され、現在Oracle社によって公開されている。Androidなどで用いられている。 |
Swift | Apple社が独自に開発した言語。iPhoneやiPadのアプリ開発に用いられる。 |
PHP | Webアプリケーションの開発に特化した言語。 |
Ruby | 日本人によって開発された言語。Ruby on RailsでWebアプリケーション利用によく用いられる。 |
Python | 人工知能や機械学習などの分野で用いられる言語。 |
1.4.1 コンピュータ言語の役割
コンピュータを動作させるにはコンピュータに理解できる言葉で命令する必要がある。しかしコンピュータが理解できるのはマシン語であり、これは人間にとっては理解が難解である。そこで人間にとって比較的理解しやすい単語や記号で構成される高級言語を作った。
マシン語と高級言語を変換するには、主に①コンパイラと呼ばれるものと②インタープリタと呼ばれるものがある。
変換過程 | 一度にすべてのソースコードをマシン語に変換し返還後のプログラムを実行する方式 | ソースコードを翻訳しながら実行する方式 |
特徴 | コンパイル作業に時間が掛かるものの、実行速度が速い。 | コンパイル作業が不要なものの、変換作業を行ないながらの実行になるために速度は相対的に遅い。 |
1.5 C#の特徴
C#はMicrosoftによって独自に開発され2002年に発表された。開発目的はC言語およびC++言語の古い設計仕様に起因する様々な問題に対処することであった。
C#はコンパイラでソースコードをコンパイルして実行するものの、マシン語のプログラムは生成せず、CLと呼ばれる中間言語で記述されたものを生成し、さらに.NET Frameworkと呼ばれる実行環境上で動作する。そのため、.NET Frameworkさえ存在する環境であれば、ハードウェアが異なっていても同じようにアプリケーションを動作させられる。
1.5.2 C#の問題点
.NET Framework上で動作することを前提とした仕様をもつため、ハードウェアを直接制御するプログラミングには不向きで、それにはC/C++が未だに主流である。
さらにバージョンごとの変化が激しいため、初期と現在のバージョンでは別言語と言えるほどにソースコードが変化している。
2. プログラミングの基本的な考え方
2.1 アルゴリズムとは何か
アルゴリズムはコンピュータにおける問題解決の手段と言える。
アルゴリズムには最も基本となる処理として、3つの処理がある:
- 順次処理:処理を記述した順番に実行する。
- 分岐処理:条件により処理の流れを変える。
- 繰り返し処理:条件が成立する間、処理を繰り返す。
これら3つの処理を組み合わせてプログラムを設計する方法論を構造化プログラミングという。
2.2 データ構造とは
データ構造とは大量のデータを効率よく管理する仕組みを指す。
*1:グラフィックを多用して視覚的に表示し、それを利用してユーザーがコンピュータの操作を行なえるようにしたユーザーインターフェース
*2:キーボードからの文字列入力のみによってユーザーがコンピュータを操作するユーザーインターフェース