- 大規模なシステムの開発に!オブジェクト指向とは
- シンプルで設計しやすい!行数を少なめで設計できるPython
- Webシステム開発に使える!サーバー上で動くPHP
- Webブラウザで動く!組み込んで実装するJavaScript
- Webプログラミングを始める前に!学習すべきHTML・CSS
- 事務処理が効率よくできる!オフィスソフトのVBAとマクロ
- 初心者でも使いやすい!VisualBasicの使い方
- 仮想マシン上で動く!幅広く利用される言語Java
- マイクロソフトが開発!C#と.NETの関係性を知る
- アップルの製品に使用される!Objective-Cの使い方
- 汎用性の高い言語!多くの言語が影響を受けたC言語
- ゲーム好きなら知っておきたい!ゲームプログラミングの考え方
- ネット上で動くアプリを作るなら!Webプログラミングの考え方
- プログラミングでよく使われる!IF文と演算子の使い方
- システム開発で重要!データベースの概念とSQLについて
- ちゃんと使えるか試したい!テストで問題を解決する方法
- 効率よく開発するために!プロジェクトマネジメントの考え方
- どう進めていけばいいのか?プログラムの開発工程
- システム開発で知っておきたい!UMLの使い方
- アルゴリズムを形に表す!フローチャートの書き方
- プログラミングを始める前に知っておきたい!アルゴリズムのこと
Monthly archives: 1月 2018
ゲーム好きなら知っておきたい!ゲームプログラミングの考え方
プログラミングは、様々な目的で使用されるシステムの開発をするため、プログラミング言語を使用して開発を行います。
皆さんが日ごろからプレイしているゲームにおいても、開発する際にプログラミングが行われており、実際にキャラクターが動かせるように設計されています。
3Dを活用したゲームも登場しており、ゲームに関する技術も向上しているので、最新の技術が使いこなせることも、ゲームプログラミングでは重要になります。
ゲームプログラミングは、ゲームの企画から始まって、キャラクターや風景などのデザインを行い、操作するキャラクターが動けるようにプログラムを作成し、テストしたうえで、公開されるようになります。
ゲームプログラミングは、ゲームソフト(アプリ)を開発するだけでなく、各ゲームで使用されるライブラリー(ゲームエンジン)やゲーム制作ツールなどの作成も含まれ、その目的は多岐にわたります。
ゲームの開発をする際は、ゲーム作品自体を開発するだけでなく、補助ツールの作成も含まれることもあり、多くのプログラマーが制作にかかわっています。
ゲームプログラミングは、基本的なプログラミングの学習をする際にも、簡単なゲームを作成して、プログラミングの基礎を理解してもらうことにも役立っています。
ゲームのキャラクターの動きや場面の変更などができるようにするには、プログラマーがプログラムを作成しなければならず、もちろんプログラミング言語が使用されます。
プログラミング言語は、ゲームプログラミングではどの言語を使用してもいいのですが、ゲーム開発に向いている言語がある程度決まっているようです。
コンピューターの性能が進むにつれて使用される言語が変わり、最初はアセンブリ言語が使用され、性能が上がるとC言語が使用され、さらに処理能力が上がるとC#やJava、C++なども使用されます。
ゲームをプレイするOSやデバイスなどによって、開発環境や言語に違いがあり、どの環境下でプレイするかによって、それに応じた言語の学習をしなければなりません。
インターネット上でプレイできるゲームもあり、それらのゲームではPHPなどのWeb開発に関する知識も使用され、オンラインゲームが多く出回るようになりました。
ゲームプログラミングでは、使用する言語だけでは入出力がしづらいものがあり、入出力をするための装置が必要になり、それはAPIと呼ばれています。
APIは使用する環境下での動作を補助する役割があり、ゲームに特化したAPIも公開されており、ゲーム開発においてはよく使用されています。
マイクロソフトでは、ゲーム開発に特化したAPIとして「DirectX」が公開されており、マイクロソフト製品で使用できるゲームの制作に使用されています。
マイクロソフトといえばWindowsですが、ゲーム機のXboxも同社の製品で、Xboxシリーズの機器で使用できるゲームの開発には、DirectXがおすすめです。
ネット上で動くアプリを作るなら!Webプログラミングの考え方
情報システムの中には、様々な環境で機能するシステムがあり、どの環境で使用するかによって、使用されるプログラミング言語が決まってきます。
インターネットを通じて使用されるシステムを開発するなら、Webに関する知識が必要になり、Webシステム開発のための学習が大事になります。
インターネットは、ブラウザを通じてホームページを見ることが主な目的になり、まずはホームページが作成できるようになる事が前提になります。
ホームページの作成はHTMLというマークアップ言語の知識が必要で、それを見やすいようにデザインするにはCSSの知識も必要です。
HTML・CSSを使用するだけならWebデザイナーやWebクリエイターと呼ばれますが、それにプログラミングができればWebプログラマーやWebエンジニアなどと呼ばれます。
Webプログラミングでは、サーバーサイドで動かすか、ブラウザ上で動かすかによって、使用される言語が異なり、単に動きのあるものなら後者の学習がメインになるでしょう。
ブラウザ上で動く仕組みを作成するなら、JavaScriptなどの言語を使用することになり、ホームページが動的に変化できるようになります。
ホームページ作成の仕事をしている人なら、依頼者から動きのあるものを依頼されたら、JavaScriptの知識が必要になるでしょう。
JavaScriptは関数を使用する機会が多くなり、これをうまく活用するならjQueryなどのライブラリーも使用することができ、さらにプログラミングの知識が理解できます。
サーバーサイドで動かすWebシステムなら、Webサーバー内に大量のデータを保存しておき、ユーザーが見られるようにプログラムを作成しないといけません。
サーバーサイドの言語ならPHPなどの言語があり、これらの言語を生かしてプログラムを作成し、サーバー上で動かせるようにします。
PHPなどはデータベースとの関連性が深く、大量のデータを活用する際にはPHPなどの知識が理解できないと、Webシステムがつくれません。
言語の知識のほかに、Flashなどのソフトウェアの活用や、サーバーを使用するならネットワークやセキュリティなどの知識が必要になります。
大規模なシステムを使用するなら、サーバーサイドで動く仕組みとブラウザ上で動く仕組みの双方を作成していかなければならず、Webプログラミングを総合的に学習しなければなりません。
開発環境が重要になり、サーバーサイドのプログラミングなら、CGIやJavaサーブレット、.NETなどのことも理解し、それぞれに合った言語で開発します。
CGIなどはフレームワークというもので、実際にシステムを開発・稼働させていくために必要になり、Webプログラミングでは重要になります。
ブラウザはHTMLなどで作成した文書を見るためにあるもので、サーバーサイドの言語で作成したものはそのままで見ることは難しく、事前の設定が必要になります。
プログラミングでよく使われる!IF文と演算子の使い方
情報を処理していくと、データの内容によって適切な処理が行えるようにしていかなければならず、入力したデータに応じた出力ができなければなりません。
条件を設定して、実際に与えられた値がその条件に適合しているかを確かめ、合っているときの対応とそうでないときの対応を考えないといけません。
プログラミングでは、このような考え方は分岐というもので、ITにおいては「真か偽か」「YesかNoか」という選択になります。
どのプログラミング言語でも、分岐に関しては「If」から始まる文で記述するのが基本で、条件に一致すれば{}などで囲まれた内容の命令が実行されます。
If文の書き方は言語によって異なりますが、「If 条件式 Then」や「If(条件式)」などの書き方をするのが一般的で、その下に真であった時の処理を記述します。
真の時の処理を書くだけでなく、偽の時の処理を書く場合もあり、その際はElseという単語を使用し、偽の時の処理を記述していきます。
If文は複数の条件で記述することが可能で、いわゆる入れ子という方法で処理することができ、最初の条件で偽だったときは、その次の条件で真偽を問う仕組みを作ることができます。
プログラミングでは、値を処理するために演算子というものを使用し、演算子の性質を利用して値を演算して、出力できるようにします。
計算するための演算子は、四則演算に使用される「+」「-」「*(掛け算)」「/(割り算)」などがあり、これらを使って値を計算します。
今回のIf文においても演算子を使用することがあり、条件文では判断に使用される値が条件に適合しているかを確かめるために使用します。
その値が特定の数値よりも大きいか小さいかを判断するためには、「<」「>」「<=」「>=」などの演算子を使用し、「a >= 10」というように使用します。
上記の例では、「aは10以上」という意味になり、「=」が隣にあることで、「以上」という意味や「○○より大きい」という意味になります。
条件によっては論理演算子というものを使用することがあり、「AかつB」「AまたはB」「Aでない」などの条件を決めることができます。
このような演算子は、「AND」「OR」「NOT」という意味をもち、「AND」なら「AでもBでもあてはまる」という意味で、「OR」なら「AでもBでもどちらでもいい」という意味になります。
「OR」を使用すると双方のどちらかに当てはまる値の処理が行われるようになり、「AND」を使用すると双方どちらにも当てはまる値の処理が行われます。
これらにも専用の記号が使用されることがあり、「AND」の場合は「&」を、「OR」の場合は「|」を使用するプログラミング言語があります。
言語によっては、これらの記号が「&&」もしくは「||」というようにあらわされることがあり、これらの記号を挟んで左右に条件式を記述していきます。
論理演算子を使用した分岐のテストをする際は、どちらの条件式に合うようなテストケースを考える必要があり、網羅できるかを確認する必要があります。
システム開発で重要!データベースの概念とSQLについて
プログラミングをする際に、どういったものを作るかによって、データベースが必要になる事があり、システムを作成した時にデータベースを活用しながら処理を行うようになります。
プログラムを作成するのと同時に、データベースも作成していかなければならず、多くのデータを扱うシステムを作るなら、データベースの知識も必要です。
データベースを作成するときは、データベース管理システムを活用しなければならず、実際にプログラミングで使用するならMySQLなどのシステムがあります。
プログラミングを始める人で、データベースを活用したプログラムを作るなら、リレーショナルデータベース(関係データベース)を学習すれば、データベースの仕組みが理解できます。
関係データベースは、テーブル同士が関連し合う仕組みになっていて、正規化によって情報が整理しやすくなり、操作することで、データの更新や操作ができるようになります。
テーブル(表)を作成し、データ操作の中心となる主キーを設定し、別の表を関連付けるために、外部キーを設定することで、異なる表を使って組み合わせた結果を出力することもできます。
表の構成は、データを見やすくするための属性(列)と各データが1つずつまとまった組(行)によってつくられ、特定のデータが一目でわかるように主キーを設定します。
この表を作成する際は、SQLというデータベースのためのプログラミング言語を使用し、データベースの作成・操作・制御をしていきます。
データベースを操作する際は専用の管理システムを用意し、システム内で表を作成して、プログラムからデータベースが操作できるようにします。
SQLをはじめとするデータベース言語には、データの検索や更新などに使うデータ操作言語、データ構造を作成するためのデータ定義言語、使用するユーザーを管理するデータ制御言語に分けられます。
データ制御言語は実際に使用する人が決まっている場合に使用すればいいので、プログラミングを学習する場合は、主にデータ操作言語とデータ定義言語を中心に学習すればいいのです。
使用するデータベースを作成するには、データ定義言語を使用し、SQLを使用して作成する場合は、CREATEから始まる文を使って表を作成します。
CREATE文では、作成する表の名前を決め、その次にデータを扱う属性を各自決めていき、データの型を設定し、主キーを設定すれば、表が出来上がります。
作成した表に、データを追加・更新・削除・検索をする場合は、データ操作言語を使用し、必要に応じでデータの操作をしていきます。
データを追加するにはINSERT、更新するにはUPDATE、削除するにはDELETE、検索するにはSELECTから始まる文で操作します。
特にSELECTはプログラムからの操作で重要になり、操作する表または列を決めて、検索するデータの条件を記述すれば、条件に合ったデータのみが出力されます。
ちゃんと使えるか試したい!テストで問題を解決する方法
プログラミングはコードを書けば終わりというものではなく、実際に作成したプログラムがしっかり動くかどうかを確かめる必要があります。
いわゆるテストというもので、自身が作成したソフトを公開する際に、誰もが使えるようにしなければならず、欠陥を放置した状態で公開することはよくありません。
テストで見つかった欠陥を修正する方法をデバッグといい、欠陥がない状態で公開できるようにして、その後にまた欠陥が出てきたら、修正していくことも大事です。
プログラミングにおけるテストは、ソフトウェアで使用されるデータをもとにテストデータを用意し、それが適切に処理できるかを確かめていきます。
テストでは、システムに欠陥が出てくるか、またはチェックする項目にそれぞれ合格しているかを確かめ、ちゃんと使えることが最大の目標です。
実際に書いたプログラムをテストする方法には、プログラムを実際に動かす動的テストと、プログラムを動かさずにソースコードを検証する静的テストがあります。
静的テストは、専用のツールを使用して行うコード解析をはじめ、人手で行うコードレビューやウォークスルーなどの手法があります。
大規模なシステムを作成した際は、単体テストから結合テストまで一通り行うことが重要で、この手法にはトップダウンテストとボトムアップテストがあります。
トップダウンテストは、単体テストが完了した仕組みのうち上位から順に結合テストを行い、機能がうまく動かせるかを確かめ、早期に問題が発見できる手法です。
ボトムアップテストは、前述とは逆に単体テストが完了した仕組みのうち下位から順に結合テストを行い、開発とテストが平行して行うことができます。
入出力に関するテストにおいては、プログラムの内部に注目するかどうかで手法が異なり、実際に適切な処理ができるかを確かめます。
プログラムの内部構造に注目したテストは、ホワイトボックステストと呼ばれ、注目する部分には命令や分岐があるので、それがしっかり網羅できるかを検証します。
すべての条件が実行できるかを確かめるには命令網羅、分岐が機能しているかは判定条件網羅、各条件のうち少なくとも1回は実行できるかを確かめるには条件網羅という手法で行います。
実際に網羅できるかは、それぞれの手法に応じたテストケースを用意する必要があり、テストケースが実際に実行できるかを確かめていきます。
それとは逆に、プログラムの入出力だけに注目したテストは、ブラックボックステストと呼ばれ、仕様通りに実行できるかを確かめていきます。
このテストでは、まず同値分割という手法があり、入出力が同じように扱える値を同値クラスにして、それぞれの代表値を使って検証し、有効か無効かを分析します。
もう1つは限界値分析というものがあり、入出力できる範囲の境界にあたる値を使用して、入出力ができることを確かめていき、同値分割よりも多い欠陥を見つけることができます。
効率よく開発するために!プロジェクトマネジメントの考え方
プログラミングによるソフトウェアの開発を進めていくうえで、実際に完成させるまでのスケジュールを管理する必要があります。
各工程をいつまでにするのかを決めておき、それに沿って作業を進め、全体の流れを調整しながら、開発を進めていきます。
そのためには、プロジェクトマネジメントについて理解しておく必要があり、活動計画・スケジュール作成・進捗管理などを行いながら、ソフトウェアを開発します。
プロジェクトとは、明確に示された目標があり、必ず始めと終わりがあり、いくつかの行程で構成されているもので、複数のメンバーで行う際はリーダー(プロジェクトマネージャー)が必要になります。
プロジェクトの管理では、スケジュール管理はもちろん、プロジェクトにかかわる人員、プロジェクトに必要な予算、発生するリスクなども管理しなければなりません。
プロジェクトを成功させるためには、決められた期間内で、予算金額内で、割り当てられた資源をうまく活用して、ユーザーが出した要件に応えられるようにしなければなりません。
プロジェクトマネジメントでは、計画(Plan)・実行(Do)・評価(Check)・改善(Act)のPDCAサイクルが重要になります。
プロジェクトには大きく5つのプロセスがあり、立ち上げプロセス・計画プロセス・実行プロセス・監視プロセス・終結プロセスがあります。
プロジェクトでは、まずそれを開始するための立ち上げプロセスと、最終報告書を作成するための終結プロセスが、必ずなければなりません。
PDCAサイクルについて考えると、計画プロセス・実行プロセス・監視プロセスは繰り返し行っていくことになり、それに基づいてプロジェクトを進めていきます。
監視プロセスは評価と改善をまとめて行うプロセスで、進めていく中で発生した問題点を修正し、必要に応じた対応をしていかなければなりません。
プロジェクトマネジメントの手法では、世界中で受け入れられているPMBOKというガイドラインに沿って、プロジェクトを進めていくのが一般的です。
ガントチャートなどの管理製品を使用していくことで、プロジェクト管理がより明確に、効率よくできるようになります。
PMBOKでは、プロジェクトを管理していくための手法が記されており、統合・スコープ・タイム・コスト・品質・人的資源・コミュニケーション・リスク・調達・ステークホルダーの10の項目を分類して管理することが示されています。
プロジェクトマネジメントに関しては専門の資格があり、これらの資格を有することで、プロジェクト管理に関して専門知識を生かすことができます。
IT系の資格を代表する情報処理技術者の中に、プロジェクトマネージャー試験というものがあり、年に1回試験が行われています。
他には、日本プロジェクトマネジメント協会が主催するP2M、PMBOKに準拠した認定制度であるPMPなどがあり、将来的にプロジェクトマネージャーになりたい人におすすめです。
どう進めていけばいいのか?プログラムの開発工程
プログラミングを進めていくには、実際にどうやって進めていくのかを考える必要があり、ちゃんとしたやり方でないと、いい加減なプログラムが出来上がってしまいます。
プログラミングをしていきたい人には、これからそれを仕事にする人、いわゆるプログラマーとして活躍したいという人もいるでしょう。
仕事でプログラミングをやるなら、適切な方法で行わなければならず、システムを求めている人の要望に応えられるようにしていかなければなりません。
仕事としてのプログラミングのやり方は、要求分析・システム設計・コーディング・テスト・保守などといったことをしていかなければなりません。
要求分析は、システムを作るうえでどんな機能を使用したいかを、顧客やユーザーから聞き出して、それが実現できるように情報を整理していく作業です。
その次の設計で、要求分析で得られた情報をもとに行い、UMLなどの図法を生かしてシステムの構造をつくりあげていきます。
プログラムを書く作業をコーディングといい、開発環境に適した言語を用いてコードを書いていき、データが処理できるよう命令を表していきます。
実際に書いたプログラムが正常に動くかどうか試すために、ソフトウェアのテストは重要であり、異常があったまま納品するのはよくありません。
システムの保守は重要であり、ユーザーから問題点が指摘されたら、それを修正できるようにしていかなければなりません。
ソフトウェア開発では様々な開発工程がありますが、最もよく知られているものはウォーターフォール型と呼ばれるものです。
先ほどの内容を、要求分析から保守までを順番に行っていくもので、各工程で役割がしっかりしており、プロジェクト管理がしやすいです。
上流工程後に発生した問題はそのままにしがちだと思われますが、工程間に問題点をチェックするかどうかで、より良いシステムがつくれるようになります。
開発手法にはVモデルと呼ばれる方法もあり、設計とテストの関係が明確になっており、設計とテストの内容がさらに分類されています。
設計は基本設計・機能設計・詳細設計の順に行われ、テストは単体テスト・結合テスト・システムテスト・受け入れテストの順に行われます。
工程の順番は先ほどと変わりませんが、コーディングの後にまずは単体テストを行い、これは詳細設計がうまくできているかを確認します。
結合テストは機能ごとに実際に機能できるかどうかを確かめるため、機能設計で行ったことが実際に機能できているかが関係しています。
システムテストは、システム全体がうまく機能しているかを確認するテストで、全体的に設計した基本設定との関係性があります。
最後の受け入れテストは、ユーザーに実際に使用できるかどうかを確認してもらうため、最初の要求分析で得た情報が実際に反映されているかどうかを確かめます。
プログラミングは、単にコーディングが重要なだけではなく、その前の設計やその後のテストを含めて、よりよいプログラムができるようになっています。
システム開発で知っておきたい!UMLの使い方
プログラミングをはじめとするシステム開発では、実際に開発が進められるように、あらかじめ専用の図を使って設計しておくことが大事です。
開発ではオブジェクト指向などの考え方も反映されており、実際に開発するに当たり、設計図も分かりやすいものにしていく必要があります。
実際に開発を進みやすくするために、UML(統一モデリング言語)というものを使用し、言語と訳されていますが、図式を表記して処理の方法をわかりやすく示します。
UMLはソフトウェアの処理をわかりやすくモデリングするために使用され、様々な図を作成していくことで、全体的な仕組みが理解できます。
UMLの図には様々なタイプがあり、用途に応じて分類されており、システムの仕組みを示す構造図、動きを示す振る舞い図に分類され、振る舞い図の中でメッセージのやり取りに特化したものは相互作用図と呼ばれています。
構造図には、クラス図・コンポーネント図・パッケージ図などがあり、システムの静的な構造を示すために使用されています。
クラス図は、システムを構成するクラス(概念)を中心に考えていき、クラス間の関連を示すことで、システム全体の構造をわかりやすく示します。
コンポーネント図は、ファイルやパッケージなどの物理的な構成要素から、システムの構造を示していくために使われています。
パッケージ図は、パッケージ同士の関係を示すために使用する図で、システムを階層構造で表すために役立つ図として、よく使われています。
振る舞い図は情報の流れややり取りを示すための図であり、ユースケース図・アクティビティ図・状態遷移図があり、振る舞い図の一種である相互作用図はオブジェクト間のメッセージのやり取りを示すもので、シーケンス図などがあります。
ユースケース図は、システムの機能をユーザーの視点を交えて図式化したもので、システムの全体像を開発者とユーザーの双方が理解できるように示しています。
アクティビティ図は、フローチャートに似た構造で、システムの全体の流れを明確に示し、条件による分岐の処理や、並行して作業できる処理の記述が、この図によって示すことができます。
状態遷移図は、システムの状態によって動作する機能の遷移を示すことができ、該当する状態になったときの適切な処理がわかりやすくなります。
シーケンス図は、オブジェクト間のメッセージのやり取りを時系列的に表示したもので、システムを動かしていくにつれて、イベントの発生やメッセージの送受信などを明確に示すことができます。
UMLはシステムの設計をわかりやすくできるようになるメリットがありますが、様々な図があることで問題点が多くあるのがデメリットなのです。
まずはUMLの規模が大きくなっていることで、現在13種類の図がUMLとして使用されていますが、異なる図が複雑に使用されてきたことで、使用しない図が現れるなどの問題が指摘されています。
様々な図が統合されてきたため、全体的に統一されていないのではないかといった声があり、先ほどの問題も含め、UMLの学習や採用は難しいものになっています。
アルゴリズムを形に表す!フローチャートの書き方
アルゴリズムは、実際に考えたらそれを形に表す必要があり、わかりやすく説明していくためには、図で表したほうが誰にでもわかりやすくなります。
アルゴリズムをわかりやすく示すために、フローチャート(流れ図)がよく使用され、処理の流れを上から下まで、図形を使ってわかりやすく書いていきます。
変数にどんな値を入れていくかを考え、順番に処理しながら値を変えていき、分岐や繰り返しでは条件に合わせて処理をしていき、最終的な値を出力できるようにします。
プログラミングの学習においては、このフローチャートは学習するときに役立ち、アルファベットで書いた疑似的なコードよりわかりやすく、どんな処理が行われているのか、理解できるようになります。
プログラムを開発するに当たっては、フローチャートを用いることでどんなシステムを作るかがわかり、それに沿ってコードを書いていくことが可能です。
フローチャートの書き方は、図形と線・矢印で記述していき、図形の形によって処理方法が異なり、どんなことをしていくのか明確に示すことができます。
最初と最後には「端子」という楕円形の部品を書き、「開始」または「終了」をこの中に書き、プログラムの初めと終わりを示します。
プログラムの流れは線で描いていきますが、分岐による異なった処理ができるようにするには、矢印が使用され、条件に応じた処理ができるようにしていきます。
基本的な処理は長方形で記述し、変数に値を代入したり、変数を使用して計算したりする際に、この部品が使用されます。
値の入出力は平行四辺形で表し、フォームから入植された値を示すときや、処理した値をユーザーに出力する際に、この部品が使用されます。
条件に基づいた判断を表すために、菱形の部品を使用し、中に判断の材料となる条件を記述し、YesかNoかを判断できるようにし、それぞれで適した処理ができるようにします。
条件に適していればYesの処理を、条件に適していなければNoの処理をしていきますが、場合によっては判断の中にまた判断を入れることもできます。
繰り返しの処理でも判断の部品を使用することは可能ですが、記述が紛らわしいと感じるなら、ループ専用の部品があるので、それを使用することでよりわかりやすくなります。
ループは上下の部品があり、どちらか一方に条件を記述し、ループの上下の部品をはさんで処理を書いていき、繰り返し処理ができるようにします。
値が条件に合うようになれば、ループから抜け出すことができ、その次の処理へと続けることができるよう、最適な条件を記述しなければなりません。
フローチャートでは、定義済み処理を行うための部品を使用することもでき、長方形の処理の部品の左右の辺を二重線にして表すことができます。
この定義済み処理は、別のフローチャートに示されたプログラムを実行できるようにするために使用し、これはサブルーチンとも呼ばれ、再帰プログラムの作成ではよく使われます。
プログラミングを始める前に知っておきたい!アルゴリズムのこと
プログラミングを始める際に、アルゴリズムのことを理解していないと、具体的にどんなことをしたいのか、わからなくなってしまいます。
アルゴリズムとは、コンピューターの情報処理において、処理するための手順を形に表したものをいい、プログラミングをはじめとするシステム開発で重要なものになります。
問題を解くための方法を図式化するもので、入力された値を計算し、条件に合わせて適切な処理ができるようにしていき、それを見ながらプログラミングをしていきます。
情報システムにおいては、情報を入力すれば適切な値が出力されるには、プログラムの設計が必要になり、そのプログラム自体がアルゴリズムという見方もあります。
金額の計算や書類の印刷など、特定の処理に特化したシステムを作るうえでアルゴリズムを考えると、指定された順序で考えられるようになり、アプリケーションが作りやすくなります。
値が入力されると、順番に処理の行程が考えられており、その処理内容に応じてデータを処理し、条件に合わせて適切な解答を出力できるようにします。
処理の中には分岐や繰り返しといった処理があり、それらの処理は条件が指定されており、値が条件に合っているかどうかを判断しながら処理を行います。
分岐は値が条件に合っているかどうかを判断する処理で、プログラミングではよくIfから始まる文で記述され、合っているときの処理を記述し、合っていないときの処理を記述することもあります。
繰り返しは値が指定された値になるまで処理が繰り返され、その回数に合わせて計算などの処理が行われるようになり、この処理はループとも呼ばれています。
アルゴリズムでは再帰と呼ばれる処理もあり、処理がその再帰のところまで行われると、情報が別のアルゴリズムで処理されるようになり、再帰で処理された情報が出力されるようになります。
ある条件が成立するまで、再帰は自動的にプログラムが呼び出されるようになり、先ほどの繰り返しとは考え方が似ています。
プログラミングでは関数と呼ばれる仕組みを使用することがあり、関数が使用できる言語では、この再帰が関数によって行われます。
様々な処理方法でアルゴリズムは考えられており、基本的なアルゴリズムには探索やソートといった、数値などのデータに対する処理が行われます。
探索とは、指定されたデータをランダムに並べられた多くのデータの中から見つける方法で、探索の中でも様々な方法があります。
探索には、1つずつ順番に同じ値を見つけていく線形探索、整列された配列から2つのかたまりで分けていきながら探していく二分探索などがあります。
ソートとは、ランダムに並んだ配列を、昇順または降順に並べ替えていく方法で、いわゆる整列・並べ替えといった方法です。
ソートには、隣同士の値の大小を比べながら並べ替えていく比較ソート、最適な値を選びながら並べ替えていく選択ソート、最初から順番に値を適した場所に入れていく挿入ソートなどがあります。