「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

【プログラム】1週間でC#の基礎が学べる本(1/6)

 C#を使うようにはなったものの、具体的な機能については未習熟なので(というかまだ使うべき状況が出てきていないので)

を読んで、まずは最低限を学んでいく。

1. プログラミングとは何か

1.1 コンピュータの仕組み

1.1.1 論理回路

 コンピュータは電子機器の1つであり、その基本は論理回路と呼ばれる回路によって構成される。論理回路は真理値の「真」および「偽」=2進法の「0」および「1」を電圧の強弱で表現する。

  • AND演算:2つの値A,\ Bに対して両方が1ならば演算結果X1に、それ以外はすべて0になる。

例:

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,\ Bに対して少なくとも一方が1ならば演算結果X1に、それ以外はすべて0になる。

例:

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演算:0ならば1を、1ならば0になる。

例:

A 0 1 1 0 1 1 0 1
X 1 0 0 1 0 0 1 0
1.1.2 素子

 現在のコンピュータは論理回路を大量に集積させて作られている。そのような回路を構成する基本要素を素子という。
 素子は以下の順で発展してきた:

1.2 コンピュータの内部構造

 現在のコンピュータの中核は、


マザーボード(多数のLSIを搭載した基盤)+CPU+ハードディスク+メモリ
で構成される。

  • CPU:コンピュータなどにおいて中心的な処理装置として働く電子回路。
  • メモリ:プログラムやデータなどを保存する装置。
  • ハードディスク:コンピュータの主要部分の外部に接続してプログラムやデータなどを記録する2次記憶装置。メインメモリが電源を切ると記録を消してしまうため、ハードディスクに残したい情報を記録する。ただしメモリに比べアクセスに時間がかかり、また衝撃に弱い。
1.2.1 メモリの種類

 コンピュータのメモリには大きく分けてRAM(何度も自由にデータを読み書きできるもののコンピュータの電源が切れるとデータが消失する)とROM(読み出し専用でコンピュータの電源が切れても消失しない)の2種類がある。
 コンピュータに内蔵されるメモリには主に以下の3種類がある:

  • メインメモリ:DRAMを使用した、コンピュータのデータやプログラムを保存するためのメモリ。アドレスと呼ばれる数値が割り当てられ、データアクセスする際にはアドレスを指定して行う。
  • キャッシュメモリSRAMを使用した、メインメモリからデータをコピーし処理を高速に実行するメモリ。DRAMよりも処理スピードが速い。
  • フラッシュメモリ:自由にデータの消去・書き込みが可能で電源を切っても内容が消えない半導体メモリ。PC本体のメモリとしてではなく(外部)記録メディアとして利用される。

1.3 ソフトウェア

 コンピュータを利用するためにはソフトウェアが必要で、アプリケーションソフトウェアシステムソフトウェアがある。

  • アプリケーションソフトウェア:コンピュータ上で特定の作業を行うことを目的に用意されたプログラム
  • システムソフトウェア:システムの根幹を成すソフトウェア。①直接ハードウェアを操作・制御するためのソフトウェアである基本ソフト(OS)、②アプリケーションソフトとOSの中間的な役割を持つソフトウェア、③コンピュータに接続する周辺機器の内部でその機器自身の制御のために動作するソフトウェアがある。
1.3.1 OSの働き

 OSの基本的な役割:

  • 周辺機器の制御:キーボードやマウス、ディスプレイなどの正常動作をチェックする
  • ユーザーインターフェースの提供:GUI*1CUI*2を提供する
  • ソフトウェアの管理:さまざまなソフトウェアを同時に動作させることやソフトウェアの(アン)インストールを行う
  • コンピュータ上のデータ管理:コンピュータ内部のデータ(ファイル)を管理する

1.4. プログラミング言語

 コンピュータにどのような仕事や動作をするかを教える一連の作業をプログラムという。


表1 C#以外のプログラミング言語

言語名
特徴
C 現在用いられrテイル主流の言語の中では最も古い言語。多くの言語がC言語をベースに作られている。
C++ C言語を更に拡張した言語。オブジェクト指向という考え方に対応している。
Java C/C++をベースにして開発され、現在Oracle社によって公開されている。Androidなどで用いられている。
Swift Apple社が独自に開発した言語。iPhoneiPadアプリ開発に用いられる。
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.1 C#の用途

 C#は①Windowsアプリケーションの開発、②Webアプリケーションの開発、③ゲームの開発、④スマートフォンアプリの開発で主に用いられている。

1.5.2 C#の問題点

 .NET Framework上で動作することを前提とした仕様をもつため、ハードウェアを直接制御するプログラミングには不向きで、それにはC/C++が未だに主流である。
 さらにバージョンごとの変化が激しいため、初期と現在のバージョンでは別言語と言えるほどにソースコードが変化している。

2. プログラミングの基本的な考え方

2.1 アルゴリズムとは何か

 アルゴリズムはコンピュータにおける問題解決の手段と言える。
 アルゴリズムには最も基本となる処理として、3つの処理がある:

  • 順次処理:処理を記述した順番に実行する。
  • 分岐処理:条件により処理の流れを変える。
  • 繰り返し処理:条件が成立する間、処理を繰り返す。

これら3つの処理を組み合わせてプログラムを設計する方法論を構造化プログラミングという。

2.2 データ構造とは

 データ構造とは大量のデータを効率よく管理する仕組みを指す。

*1:グラフィックを多用して視覚的に表示し、それを利用してユーザーがコンピュータの操作を行なえるようにしたユーザーインターフェース

*2:キーボードからの文字列入力のみによってユーザーがコンピュータを操作するユーザーインターフェース

プライバシーポリシー お問い合わせ