情報処理のWeb教科書―IPA情報処理試験対策のお供に!

プログラム言語とは―意味、種類、特徴、体系、記憶域などの知識を解説。

トップ 情報処理の知識体系 テクノロジ系 技術要素 プログラム言語

プログラム言語とは何かをテーマに、プログラミング言語の意味から、種類、特徴、体系、スタック領域やヒープ領域といった記憶域などの知識をまとめています。

目次

この記事の目次です。

0. プログラム言語とは

1. プログラム言語の種類と特徴

2. プログラム言語の制御構造

3. プログラム言語の記憶域

もっと知識を広げるための参考

更新履歴

0. プログラム言語とは

プログラム言語とは、プログラムを記述するための人工的な言語です。プログラミング言語はプログラム言語の別のいい方で同じ意味です。

1. プログラム言語の種類と特徴

プログラム言語の種類と特徴をまとめていきます。

プログラム言語の変遷と分類

プログラム言語は、機械語、アセンブラ言語、高水準言語と発展してきました。 プログラム言語の分類には、手続型言語、関数型言語、論理型言語、オブジェクト指向言語、スクリプト言語があります。

手続型言語

Fortran、COBOL、PL/I、Pascal、BASIC、Cなどのプログラム言語を手続型言語と言います。

オブジェクト指向言語

Java、C++、C#などのプログラム言語をオブジェクト指向言語と言います。

代表的なオブジェクト指向言語の特徴、記述方法

代表的なオブジェクト指向言語の特徴、記述方法の例です。

オーバーロード

オブジェクト指向プログラミングにおいて、同一クラス内に、メソッド名が同一であって、 引数の型、個数又は並び順が異なる複数のメソッドを定義することをオーバーロードといいます。

スクリプト言語

ECMAScript、Perl、PHP、Python、Rubyなどのプログラム言語をスクリプト言語と言います。

マークアップ言語は含まれない

なお、HTMLやXMLなどマークアップ言語はプログラム言語に含まれません。

プログラム言語の種類と特徴に関連したIPA情報処理試験の過去問題

以下ではプログラム言語の種類と特徴に関連したIPA情報処理試験の過去問とそのの解説をまとめています。

2. プログラム言語の制御構造

プログラム言語の基本的な制御構造についてまとめていきます。

選択

プログラム言語の基本的な制御構造の1つ、選択について見ていきます。

if文

if文は条件に応じて処理を行うか行わないかを制御する制御構造です。

プログラム言語の制御構造―選択(if文)
プログラム言語の制御構造―選択(if文)

if-else文

if-else文は条件に応じてある処理を行うか、そうではないときに別のある処理を行うかを制御する制御構造です。

プログラム言語の制御構造―選択(if-else文)
プログラム言語の制御構造―選択(if文)

繰返し

プログラム言語の基本的な制御構造の1つ、繰返しについて見ていきます。

while文、for文

while文、for文は条件に合う場合繰返し処理を行う制御構造です。

プログラム言語の制御構造―繰返し(while文、for文)
プログラム言語の制御構造―繰返し(while文)

do-while文

do-while文は初めに処理を行いその処理を条件に合う場合繰返し処理を行う制御構造です。

プログラム言語の制御構造―繰返し(do-while文)
プログラム言語の制御構造―繰返し(do-while文)

再帰呼出し

ある関数や手続きの中で再びその関数や手続きを呼び出すことを再帰呼出しといいます。

再帰呼出しの例

例えば、以下のような処理が再帰呼び出しになります。

文字列を引数とする関数len、first、butfirstを用いて、関数compを再帰的に定義した。

[関数の定義]
len(S) : 文字列Sの長さを返す。Sが空文字列のときは0を返す。
first(S) : 文字列Sの先頭の1文字のASCIIコードを返す。Sが空文字列のときはエラーを返す。
butfirst(S) : 文字列Sの先頭の1文字を除いた残りの文字列を返す。 Sが空文字列のときはエラーを返す。


comp(A,B)
begin
    if len(A)=0 and len(B)=0 then return 0;
    if len(A)=0 and len(B)≠0 then return 1;
    if len(A)≠0 and len(B)=0 then return -1;
    if first(A)<first(B) then return 1;
    if first(A)>first(B) then return -1;
    return comp(butfirst(A),butfirst(B))
end

たとえば、comp("11","101")を呼び出したとき、-1が返されます。

コードの追い方としては、まず関数compを3つの要素に分解して考えます。

(1) A,Bの長さを判定する部分。


    if len(A)=0 and len(B)=0 then return 0;
    if len(A)=0 and len(B)≠0 then return 1;
    if len(A)≠0 and len(B)=0 then return -1;

(2) 先頭文字を比較する部分。


    if first(A)<first(B) then return 1;
    if first(A)>first(B) then return -1;

(3) もう一度関数compを呼び出す部分。


    return comp(butfirst(A),butfirst(B))

関数compにA=11、B=101を投入した場合、まず(1)の長さの比較ではAが2、Bが3なので(1)は通りません。

次に(2)も先頭文字はAが1、Bが1で同じなので通りません。 なので、(3)で先頭文字をなくしたA=1、B=01を投入して再度関数compが呼び出されます。

同じ様に、2回目の呼び出しでも(1)の長さの比較ではAが1、Bが2なので(1)は通りませんが、先頭文字がAは1、Bは0となり、(2)の「if first(A)>first(B) then return -1;」を通り、-1が返されます。

-1はそのまま戻り値として返されますので、comp("11","101")を呼び出したとき、-1が返されます。

プログラム言語の制御構造に関連したIPA情報処理試験の過去問題

以下ではプログラム言語の制御構造に関連したIPA情報処理試験の過去問とそのの解説をまとめています。

3. プログラム言語の記憶域

プログラムの実行に必要な記憶域の考え方、利用法についてまとめていきます。

プログラムの実行時に利用される記憶領域

プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域があります。

スタック領域

スタック領域は、LIFO(Last In First Out)方式のデータ構造を採用しており、 関数が呼び出される関数の先頭アドレスがスタックに格納(プッシュ)され、 関数の処理が終わるとその結果が取りだされ(ポップ)、自動的に開放されます。

ヒープ領域

ヒープ領域は、関数の処理が終わっても継続して利用する場合に使用されるデータ領域で、 使用するときに領域を確保して、使用し終わったら明示的に領域を解放します。 解放されない場合はそのまま残ってしまい、メモリリークの原因となります。

なお、ヒープ領域の構造は設計によるようでデータ構造のヒープが必ずしも使用されるわけではないようです。

ヒープとは

データ構造やヒープ領域とは何かなど、ヒープをテーマに情報をまとめています。

詳細

プログラム言語の記憶域に関連したIPA情報処理試験の過去問題

以下ではプログラム言語の記憶域に関連したIPA情報処理試験の過去問とそのの解説をまとめています。

もっと知識を広げるための参考

更新履歴

戻る

スポンサーリンク

情報処理の知識体系

プログラミング

各試験の問題と解説

ランダム出題・採点アプリ

スポンサーリンク