ITパスポート試験(シラバス6.2) テクノロジ系 アルゴリズムとプログラミング の出題傾向、学習ポイント、重要な用語を説明します。
「アルゴリズムとプログラミング」の出題傾向
「アルゴリズムとプログラミング」から、3問程度(テクノロジ系45問中)出題されます。
平成6年過去問題(公開)でも、3問でした。
Ver.○.○の表示について
用語が初めて掲載されたときの、シラバスのバージョンです。
Ver.4.0、Ver.5.0は、シラバスの比較的新しい用語です。
Ver.6.0と同じく要注意用語です。
表示がないのは、Ver.3以前からシラバスにある用語です。
データ構造
![](https://michitomo2019.com/wp-content/uploads/2021/09/mikeneko1_R.jpg)
実際の問題で、考え方を理解しましょう。
データ構造
データ構造は、データを効率的に管理するための整理方法です。
データの出し入れを簡単にするために、一定の方式で収めたデータのあつまりです。
リスト、キュー、スタック、木構造、2分木などの種類があります。
木構造
木構造は、大量の情報を整理する方法の1つです。
![木構造の例(テクノロジ系アルゴリズムとプログラミング36.データ構造)](https://michitomo2019.com/wp-content/uploads/2022/09/tree-structure1.png)
木構造は、節(node)と枝(エッジ)からできています。
植物に基づいて、階層で一番最初にくる親子を「根」、そして階層が一番最後の親子が「葉」と植物に基づいた呼び方もあります。
![木構造の呼び方(テクノロジ系アルゴリズムとプログラミング36.データ構造)](https://michitomo2019.com/wp-content/uploads/2022/09/tree-structure2.png)
問題をチェック! R4年 問90
スタック
スタックでは、最後に格納されたデータを最初に取り出します。
![スタックの説明図(テクノロジ系アルゴリズムとプログラミング36.データ構造)](https://michitomo2019.com/wp-content/uploads/2023/08/stack.png)
問題をチェック! R元年 問62
アルゴリズムとプログラミング
![](https://michitomo2019.com/wp-content/uploads/2021/09/mikeneko1_R.jpg)
疑似言語の問題を解けるように、まずは用語を覚えましょう。
擬似言語
Ver.6.0
擬似言語は、アルゴリズムを表現するための擬似的なプログラム言語です。
問題をチェック!
R6年 問62 R6年 問85 R5年 問60
式
Ver.6.0
式は、数量の事柄や関係を数学の+、-、=等の記号を用いて表現したものです。
条件式
Ver.6.0
条件式は、値や式の比較や論理演算を組み合わせた式です。
計算結果は、真(true)または偽(false)となります。
プログラムの分岐の条件などに用いられます。
演算子
Ver.6.0
演算子は、足し算や掛け算などの計算、値の大小を比べるときに使われる記号のことです。
代入
Ver.6.0
代入は、変数に値を入れることです。
注釈
Ver.6.0
注釈は、プログラムのソースコードの内容の補足・説明・解説のことです。
入出力
Ver.6.0
入力の例として、キーボードによる数字や文字の入力があります。
出力の例としては、コンソール画面への表示があります。
手続
Ver.6.0
手続は、複数の処理を一つにまとめたものです。
プログラム言語によっては、関数とも呼ばれます。
問題をチェック! R5年 問60
関数
Ver.6.0
関数は、ある値(引数)を渡すと、一定の処理がされて結果が返ってくる機能です。
![関数の説明図(テクノロジ系アルゴリズムとプログラミング37.アルゴリズムとプログラミング)](https://michitomo2019.com/wp-content/uploads/2023/09/function.png)
問題をチェック! R5年 問64
引数
Ver.6.0
引数は、関数などに受け渡す値です。
関数は、受け渡された値を使って処理を行い、結果となる値を返します。
戻り値
Ver.6.0
戻り値は、関数などが処理を終了し、呼び出し元に対して渡す値です。
データ型
Ver.6.0
データ型は、普段、人が使っているデータ(数字、文字など)をパソコンに記録できる値に変換する仕組みです。
整数型、実数型、論理型、文字型などがあります。
各データ型には長所・短所があり、効率的なプログラムを組むためには、使い分ける必要があります。
問題をチェック! アルゴ 予想1
整数型
Ver.6.0
整数型は、整数を格納します。
整数型は、2の補数表示を使用すると、8ビットでは-128~127が扱えます。
実数型
Ver.6.0
実数型は、実数を格納する変数の型です。
小数を表現できます。
また、表現できる数字の範囲が、整数型より広いです。
論理型
Ver.6.0
論理型は、ブール値(論理値)を格納する変数の型です。
真(true)か偽(false)のどちらかの値が入ります。
文字型
Ver.6.0
文字型は、文字の値を格納する変数の型です。
疑似言語問題を解く手順を以下の記事に、ていねいに説明しました。ぜひ、ご確認ください。
問題をチェック!
線形探索法
Ver.6.0
線形探索法は、データ列の先頭から順番にキーと比較していく探索方法です。
![線形探索法の説明(テクノロジ系アルゴリズムとプログラミング37.アルゴリズムとプログラミング)](https://michitomo2019.com/wp-content/uploads/2022/08/linear-search2.gif)
配列上に不規則に並んだ多数のデータの中から、特定のデータを探し出すのに適したアルゴリズムです。
(ソフト開発 平成19年春午前 問13より)
2分探索法
Ver.6.0
2分探索法は、データをあらかじめ決められた順番(例えば、小さい順、大きい順、五十音順など)にならべておき、探索の対象を半分ずつ狭めながらキーと比較していく探索方法です。
![2分探索法の説明(テクノロジ系アルゴリズムとプログラミング37.アルゴリズムとプログラミング)](https://michitomo2019.com/wp-content/uploads/2022/08/binary-search2.gif)
選択ソート
Ver.6.0
選択ソートは、データ中の最小値(もしくは最大値)を求め、次にそれを除いた部分の中から最小値を求める。この操作を繰り返していく方法です。
(基本情報 平成30年秋午前 問6より)
![選択ソートの説明(テクノロジ系アルゴリズムとプログラミング37.アルゴリズムとプログラミング)](https://michitomo2019.com/wp-content/uploads/2022/08/selection-sort.gif)
バブルソート
Ver.6.0
バブルソートは、隣り合ったデータの比較と入替えを繰り返すことによって、小さな値のデータを次第に端の方に移していく方法です。
(基本情報 平成30年秋午前 問6より)
![バブルソートの説明(テクノロジ系アルゴリズムとプログラミング37.アルゴリズムとプログラミング)](https://michitomo2019.com/wp-content/uploads/2022/08/bubble-sort2.gif)
クイックソート
Ver.6.0
クイックソートは、適当な基準値を選び、それより小さな値のグループと大きな値のグループにデータを分割する、同様にして、グループの中で基準値を選び、それぞれのグループを分割する。との操作を繰り返していく方法です。
(基本情報 平成30年秋午前 問6より)
![クイックソートの説明(テクノロジ系アルゴリズムとプログラミング37.アルゴリズムとプログラミング)](https://michitomo2019.com/wp-content/uploads/2022/08/quicksort.gif)
プログラム言語
![](https://michitomo2019.com/wp-content/uploads/2021/09/mikeneko1_R.jpg)
特に、プログラミム言語の種類、特徴を覚えようね。
C
Ver.6.0
C言語は、UNIXを開発するために設計されたシステム記述向きのプログラミング言語です。
プログラムをすべて機械語に変換してから実行するコンパイラ方式です。
![C言語の説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/c-language.png)
Fortran
Ver.6.0
Fortran(フォートラン)は、科学技術計算向けに開発された言語です。
(ITパスポート 平成22年秋 問54より)
![Fortrannの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/fortran.png)
Java
Ver.6.0
Java(ジャバ)は、コンビュータの機種やOSに依存しないソフトウェアが開発できる、オブジェクト指向型の言語です。
(ITパスポート 平成22年秋 問54より)
OSSの一つです。
![Javaの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/java.png)
問題をチェック! アルゴ 予想4
C++
Ver.6.0
C++(シープラスプラス)は、C言語を拡張させたオブジェクト指向のプログラミング言語です。
C言語と互換性があるため、C言語と同時に使用することができます。
![C++言語の説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/c-plus-plus.jpg)
Python
Ver.6.0
Python(パイソン)は、アプリケーションの開発、人工知能、データ解析など幅広い分野で使用されている言語です。
次の特徴が有ります。
- 豊富なライブラリ
- インタプリター言語
- スクリプト言語
- オブジェクト指向
OSSの一つです。
![Pythonの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/python.png)
問題をチェック! アルゴ 予想5
JavaScript
Ver.6.0
JavaScript(ジャバスクリプト)は、ブラウザで動作する処理内容を記述するスクリプト言語注)です。
(ITパスポート 平成24年春 問67より)
ウェブサイトに動きを付けることができます。
注)プログラムを書いて実行するのが比較的容易な言語(大雑把な説明)
![JavaScriptの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/javascript.png)
次のような、JavaScriptの利用例が試験に出ています。
”入力データの検査”は、HTMLだけでは実現できません。JavaScriptを使うことによってブラウザ側で実現可能になります。
(応用情報 平成22年春午前 問7より)
問題をチェック! R6年 問88
R
Ver.6.0
R言語は、統計解析向けのプログラミング言語です。
データの解析からグラフへの出力を行うことに優れ、人工知能(AI)領域においても注目されています。
OSSの一つです。
![R言語の説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/r-language.png)
問題をチェック! アルゴ 予想6
アプレット
アプレットは、小さいアプリケーションプログラムを意味し、サーバからダウンロードされ、クライアントであるWebブラウザに組み込まれて実行されるプログラムです。
ソースコード
ソースコードは、人がプログラミング言語でコンピュータへの命令を書いた文書です。
実行形式
シラ外
実行形式は、人間が書いたソースコードを「0」と「1」で表現し、コンピューターがそのまま実行できるようなプログラムの形式です。
コーディング標準
Ver.6.0
コーディング標準は、ソフトウェア開発に関わるエンジニア、プログラマがコンピュータプログラムのソースコードを記述する際に求められる、コードの書き方や形式に関する決まりです。
可読性を高める(コードを読みやすくする)ことによって、次のことを実現しようとしています。
①一定の品質の担保
②保守性の向上
③生産性の向上
問題をチェック! アルゴ 予想7
字下げ(インデンテーション)
Ver.6.0
字下げは、プログラムの階層構造をわかりやすくするために行います。
ネストの深さ
Ver.6.0
ネストの深さは、プログラムの階層構造の数のことです。
浅いほうがいいです。
![ネストの深さの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/07/nest2.jpg)
命名規則
Ver.6.0
命名規則は、プログラミングにおいて、変数名など識別名をつける際のルールです。
プログラム構造
Ver.6.0
プログラム構造は、プログラムの命令が実行される流れを定めたものです。
モジュール分割
Ver.6.0
モジュール分割は、プログラムを設計する際に、全体を基準をもとに、いくつかの部品(モジュール)に分割することです。
モジュールは、特定の機能や構造の、扱いやすい大きさのプログラムのことです。
![モジュール分割(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/09/module-division.png)
メインルーチン
Ver.6.0
メインルーチンは、プログラムの主な処理・メインの処理をおこないます。
メインルーチンがサブルーチンの呼び出します。
サブルーチン
Ver.6.0
サブルーチンは、特定の機能や処理の集合を指し、一般的には「関数」と呼ばれます。
メインの処理から呼び出されて処理を実行します。
サブルーチンは基本的に「引数」「戻り値」と呼ばれる値を持ちます。
![メインルーチンとサブルーチンの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/09/mainroutine-subroutine2.gif)
ライブラリ
Ver.6.0
ある目的のための、汎用性の高い、複数のプログラムを他のプログラムから呼び出して利用できるように部品化したものです。
他のプログラムに機能を提供するコードの集まりで、ライブラリ単体では動作することはできません。
![ライブラリの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/10/library.png)
API
Ver.6.0
API(Application Programming Interface)
APIとは、アプリケーションの開発者が、他のハードウェアやソフトウェアの提供している機能を利用するためのプログラム上の手続きを定めた規約の集合のことです。
個々の開発者は規約に従って、自分でプログラムを作らず、機能を「呼び出す」だけで、その機能を利用したアプリケーションを作成することができます。
(総務省|平成28年版 情報通信白書|用語解説 (soumu.go.jp)より)
![APIの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/api.png)
WebAPI
Ver.6.0
WebAPIとは、API利用者とAPI提供者のやり取りをウェブ上で実現したものです。
お互いのプログラミング言語が異なっても連携でき、また、Webブラウザでも利用可能です。
![WebAPIの説明(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/08/webapi.png)
WebAPIによって、次のようなことが実現できます。
- 自社Webサイトで他社サイトの機能や情報を利用すること
- アプリケーションソフトからWeb上で公開されている機能や情報を利用すること
ローコード
Ver.6.0
ローコードとは、従来よりも少ないコード作成量で、アプリケーションやシステムを開発できるツール・手法です。
コードの記述が可能なため、汎用性や拡張性があります。
![ローコードのイメージ(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/07/low-code2.jpg)
ノーコード
Ver.6.0
ノーコードは、コードの作成を必要としないで、アプリケーションやシステムを開発できるツール・手法です。
ツールに用意された部品(パーツ)やテンプレートで小さなアプリケーションを開発します。
![ノーコードのイメージ(テクノロジ系アルゴリズムとプログラミング38.プログラム言語)](https://michitomo2019.com/wp-content/uploads/2022/07/no-code2.jpg)
その他の言語
![](https://michitomo2019.com/wp-content/uploads/2021/11/b09f8c93464125253f5d4823889815a4.jpg)
プログラミング言語だけでなく、HTMLなどのマークアップ言語、JSONなどのデータ記述言語があることもを覚えておこうね。
マークアップ言語
マークアップ言語とは、文書の内容と共に、文書の構造(見出し、段落、箇条書きなど)や修飾(文字の大きさや色など)の内容を、コンピュータに伝えるための言語です。
文章の一部をタグで囲むことで、文書の構造や修飾の内容などを指定します。
HTML
HTML(Hyper Text Markup Language:エイチ・ティー・エム・エル)
HTMLは、 Webページを作成するための言語です。
HTMLには、文字だけでなく画像や音声を埋め込むことができます。
HTML形式のファイルは、Web ブラウザで閲覧することができます。
また、HTML形式のファイルに埋め込まれたリンクをクリックすることで、参照先などのWebページに移動できます。
(英字|用語辞典|国民のための情報セキュリティサイト (soumu.go.jp)より)
XML
XML (Extensible Markup Language:エックス・エム・エル)
XMLは、ネットワークを介した情報システム聞のデータ交換を容易にするマークアップ言語です。
文書の構造などに関する指定を記述する、“<”と“>”に囲まれるタグを、利用者が目的に応じて定義して使うことができます。
(ITパスポート 平成22年秋 問56より)
問題をチェック! R4年 問88
データ記述言語
Ver.6.0
データ記述言語は、データの構造を記述するための言語です。
プログラムを作成するための言語ではありません。
JSON
Ver.6.0
JSON(JavaScript Object Notation)
JSONは、異なるプログラム言語で書かれたプログラム間でのデータのやり取りなどに用いられるデータ記述の仕様です。
JavaScript の言語仕様のうち、オブジェク トの表記法などの一部の仕様を基にして規定したものであって、「名前と値の組みの集まり 」と 「値の順序付きリスト」の二つの構造に基づいてオブジェクトを表現します。
(応用情報 平成31年春午前 問7より)
「アルゴリズムとプログラミング」まとめ
これまで、テクノロジ系「アルゴリズムとプログラミング」の最新の用語について、出題傾向、学習ポイント、重要な用語を解説しました。
【出題傾向】
「アルゴリズムとプログラミング」から、3問程度(テクノロジ系45問中)出題されます。
平成6年過去問題(公開)でも、3問でした。
【学習ポイント】
・データ構造
→実際の問題で、考え方を理解しましょう。
・アルゴリズムとプログラミング
→疑似言語の問題を解けるように、まずは用語を覚えましょう。
・プログラム言語
→特に、プログラミム言語の種類、特徴を覚えましょう。
・その他の言語
→JSONなどのデータ記述言語があることも覚えましょう。
【重要用語】
シラバス6で、新しい用語がたくさん増えたので、それらの学習が大切です。
ただし、用語の意味の理解だけでは不足です。
疑似問題、フローチャートの問題の解き方を学習しましょう。
以上、テクノロジ系「アルゴリズムとプログラミング」の重要な用語について解説しました。
コメント