情報処理のWeb教科書―IPA情報処理試験対策のお供に!
トップ 情報処理の知識体系 テクノロジ系 技術要素 プログラム言語
プログラム言語とは何かをテーマに、プログラミング言語の意味から、種類、特徴、体系、スタック領域やヒープ領域といった記憶域などの知識をまとめています。
この記事の目次です。
プログラム言語とは、プログラムを記述するための人工的な言語です。プログラミング言語はプログラム言語の別のいい方で同じ意味です。
プログラム言語の種類と特徴をまとめていきます。
プログラム言語は、機械語、アセンブラ言語、高水準言語と発展してきました。 プログラム言語の分類には、手続型言語、関数型言語、論理型言語、オブジェクト指向言語、スクリプト言語があります。
Fortran、COBOL、PL/I、Pascal、BASIC、Cなどのプログラム言語を手続型言語といいます。
Windowsでも使えるフリーソフトのgccコンパイラで学ぶC言語入門用のオリジナルテキストをまとめています。 フリーソフトのgccコンパイラのインストール方法や基本文法はもちろんですが、分割コンパイルやヘッダーファイルの作成方法など入門者にとって気になる内容もまとめています。
Java、C++、C#などのプログラム言語をオブジェクト指向言語といいます。
代表的なオブジェクト指向言語の特徴、記述方法の例です。
オブジェクト指向プログラミングにおいて、同一クラス内に、メソッド名が同一であって、 引数の型、個数又は並び順が異なる複数のメソッドを定義することをオーバーロードといいます。
Javaの特徴としていかが挙げられます。
JavaScript(ECMAScript)、Perl、PHP、Python、Rubyなどのプログラム言語をスクリプト言語といいます。
整数の割り算のあまりなど、四則演算から超入門をテーマにJavaScript入門用のオリジナルテキストをまとめています。
Python3で四則演算から超入門をテーマにPython入門用のオリジナルテキストをまとめています。
なお、HTMLやXMLなどマークアップ言語はプログラム言語に含まれません。
以下ではプログラム言語の種類と特徴に関連したIPA情報処理試験の過去問とその解説をまとめています。
プログラム言語の基本的な制御構造についてまとめていきます。
プログラム言語の基本的な制御構造の1つ、選択について見ていきます。
if文は条件に応じて処理を行うか行わないかを制御する制御構造です。
if-else文は条件に応じてある処理を行うか、そうではないときに別のある処理を行うかを制御する制御構造です。
プログラム言語の基本的な制御構造の1つ、繰返しについて見ていきます。
while文、for文は条件に合う場合繰返し処理を行う制御構造です。
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情報処理試験の過去問とその解説をまとめています。
プログラムの実行に必要な記憶域の考え方、利用法についてまとめていきます。
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域があります。
スタック領域は、LIFO(Last In First Out)方式のデータ構造を採用しており、 関数が呼び出される関数の先頭アドレスがスタックに格納(プッシュ)され、 関数の処理が終わるとその結果が取りだされ(ポップ)、自動的に開放されます。
ヒープ領域は、関数の処理が終わっても継続して利用する場合に使用されるデータ領域で、 使用するときに領域を確保して、使用し終わったら明示的に領域を解放します。 解放されない場合はそのまま残ってしまい、メモリリークの原因となります。
なお、ヒープ領域の構造は設計によるようでデータ構造のヒープが必ずしも使用されるわけではないようです。
データ構造やヒープ領域とは何かなど、ヒープをテーマに情報をまとめています。
以下ではプログラム言語の記憶域に関連したIPA情報処理試験の過去問とその解説をまとめています。
情報処理試験対策用のサイトオリジナル教科書をテーマにテクノロジ系の知識をまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…