(57)【要約】【課題】プログラムの変換において、変換前後の対応関係が分かるようにする。【解決手段】プログラムは、第１プログラムを取得することと、前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することとをコンピュータに実行させる。【選択図】図６
2020170221.tif 000002
【特許請求の範囲】
【請求項１】
第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと
をコンピュータに実行させるためのプログラム。
【請求項２】
ユーザによって選択された、前記第１プログラムリストと前記第２プログラムリストとのうち何れか一方の任意の行の情報を取得することと、
前記第１プログラムリストと前記第２プログラムリストとのうち他方の、前記選択された行に対応する行を示す表示を前記表示装置に表示させるためのデータを作成することと
を更にコンピュータに実行させるための請求項１に記載のプログラム。
【請求項３】
前記第１プログラムリストと前記第２プログラムリストとを左右に並べたときに互いに対応する行が左右に並ぶように、前記第１プログラムリスト又は前記第２プログラムリストの行間に空白行を挿入することと、
前記空白行が挿入された、前記第１プログラムリストと前記第２プログラムリストとを左右に並べて前記表示装置に表示させるためのデータを作成することと
を更にコンピュータに実行させるための請求項１又は２に記載のプログラム。
【請求項４】
ユーザによる操作に応じて、前記空白行を含まない前記第１プログラムリストと前記第２プログラムリストとを上下に並べて前記表示装置に表示させるためのデータを作成することを更にコンピュータに実行させるための請求項３に記載のプログラム。
【請求項５】
第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと
を実行する回路を備える情報処理装置。
【請求項６】
第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと
を実行させるためのプログラムが記憶された記憶装置を備える情報処理装置。
【請求項７】
情報処理装置、通信機器、及び、プログラム入力機器を備えるシステムにより実行される情報処理方法であって、
前記プログラム入力機器により、第１プログラムを入力すること、
前記情報処理装置により、
前記プログラム入力機器により入力された前記第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと、
前記通信機器へ前記データを送信することと、
前記通信機器の表示装置により、前記データを表示することと
を含む、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを変換するためのプログラム、情報処理装置、及び、情報処理方法に関する。
【背景技術】
【０００２】
コンピュータプログラムの内容を他の形式に書き換えるシステムが知られている。例えば特許文献１には、あるプログラミング言語で作成されたプログラムの内容を、視覚的に理解しやすいブロックで表現された形式に変換するシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１９０４００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラムの形式などを変換するときに、変換前後の対応関係が分かると便利である。
【０００５】
本発明は、プログラムの変換において、変換前後の対応関係が分かるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、プログラムは、第１プログラムを取得することと、前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することとをコンピュータに実行させる。
【発明の効果】
【０００７】
本発明によれば、プログラムの変換において、変換前後の対応関係が分かるようになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、一実施形態に係るシステムの構成例の概略を示すブロック図である。
【図２Ａ】図２Ａは、一実施形態に係る電卓の構成例の概略を示すブロック図である。
【図２Ｂ】図２Ｂは、一実施形態に係るスマートフォンの構成例の概略を示すブロック図である。
【図２Ｃ】図２Ｃは、一実施形態に係るサーバの構成例の概略を示すブロック図である。
【図３】図３は、電卓の動作の一例の概略を示すフローチャートである。
【図４】図４は、スマートフォンの動作の一例の概略を示すフローチャートである。
【図５】図５は、サーバの動作の一例の概略を示すフローチャートである。
【図６】図６は、サーバで行われる変換処理の一例の概略を示すフローチャートである。
【図７Ａ】図７Ａは、説明のための第１プログラムの一例を示す図である。
【図７Ｂ】図７Ｂは、説明のための第２プログラムの一例を示す図である。
【図８Ａ】図８Ａは、第１プログラムを実行した際の電卓による表示の一例を示す図である。
【図８Ｂ】図８Ｂは、第１プログラムを実行した際の電卓による表示の一例を示す図である。
【図９】図９は、第１プログラムリストと第２プログラムリストとのスマートフォンによる表示の一例を示す図である。
【図１０】図１０は、サーバで行われる選択処理の一例の概略を示すフローチャートである。
【図１１】図１１は、スマートフォンによる表示の一例を示す図であり、選択処理の結果を示す図である。
【図１２】図１２は、サーバで行われる配置変更処理の一例の概略を示すフローチャートである。
【図１３】図１３は、スマートフォンによる表示の一例を示す図であり、配置変更処理の結果を示す図である。
【図１４Ａ】図１４Ａは、第２の実施形態に係るサーバで行われる変換処理の一例の概略を示すフローチャートである。
【図１４Ｂ】図１４Ｂは、第２の実施形態に係るサーバで行われる変換処理の一例の概略を示すフローチャートである。
【発明を実施するための形態】
【０００９】
［第１の実施形態］
第１の実施形態について図面を参照して説明する。
【００１０】
〈システム構成〉
本実施形態に係るシステム１０の構成例の概略を図１に示す。システム１０は、電卓（プログラム入力機器）１００と、スマートフォン（通信機器）２００と、サーバ（情報処理装置）３００とを含む。スマートフォン２００とサーバ３００とは、例えばインターネットなどといったネットワーク４００を介して接続されている。
【００１１】
本実施形態に係る電卓１００は、四則演算、各種関数演算などを行うことができる関数電卓である。さらに、電卓１００は、プログラムを作成し、実行する機能を有する。
【００１２】
スマートフォン２００は、電卓１００と連携して各種機能を発揮する。スマートフォン２００は、電卓に入力された演算式、プログラム等に基づいて、様々な表示や演算を行う。電卓１００で作成したプログラムは、スマートフォン２００に送信され得る。スマートフォン２００は、取得したプログラムをサーバ３００に送信できる。
【００１３】
サーバ３００は、電卓１００と関連するスマートフォン２００の動作に関する各種演算を行う。例えば、本実施形態では、サーバ３００は、スマートフォン２００から取得した電卓１００で作成されたプログラムを、他のプログラミング言語で作成されたプログラムに変換することができる。これに限らないが、サーバ３００は、例えば関数電卓用のプログラムから例えばＳｃｒａｔｃｈといった教育現場で用いられているプログラムへとプログラムの変換を行う。サーバ３００は、変換したプログラムをスマートフォン２００に返信する。スマートフォン２００は、サーバから取得した変換後のプログラムと、電卓１００から取得した変換前のプログラムとを並べて表示することができる。本実施形態では、サーバ３００は、変換前後のプログラムの対応関係を明確にするために、各々のプログラムに、互いに対応する行を示す符号を付す。
【００１４】
（電卓の構成）
電卓１００は、図２Ａに示すように、バスライン１９０を介して互いに接続されたCentral Processing Unit（ＣＰＵ、プロセッサ）１１２と、Read Only Memory（ＲＯＭ）１１４と、Random Access Memory（ＲＡＭ）１１６と、フラッシュメモリ１１８と、２次元コードエンコーダ１２２と、入力キー１３２と、液晶ディスプレイ１３４とを備える。ＣＰＵ１１２は、各種信号処理等を行う。ＲＯＭ１１４は、各種プログラム等を記録している。ＲＡＭ１１６は、ＣＰＵ１１２の主記憶装置として機能する。フラッシュメモリ１１８は、ユーザが作成したプログラムなどを記憶することができる。２次元コードエンコーダ１２２は、例えばユーザが作成したプログラムの情報を表す２次元コードを作成する。作成された２次元コードは、液晶ディスプレイ１３４に表示される。入力キー１３２は、数字キー、演算キー、機能キーなど、複数のキーを含む。液晶ディスプレイ１３４は、ユーザによる入力結果や、演算結果を表示する。
【００１５】
（スマートフォンの構成）
スマートフォン２００は、図２Ｂに示すように、バスライン２９０を介して互いに接続されたＣＰＵ（プロセッサ）２１２と、ＲＯＭ２１４と、ＲＡＭ２１６と、フラッシュメモリ２１８と、タッチパネル２２２と、液晶ディスプレイ２２４と、カメラ２３２と、通信装置２３４とを備える。ＣＰＵ２１２は、各種信号処理等を行う。ＣＰＵと共に、Application Specific Integrated Circuit（ＡＳＩＣ）、Field Programmable Gate Array（ＦＰＧＡ）、又はGraphics Processing Unit（ＧＰＵ）等の各種集積回路が用いられてもよい。ＲＯＭ２１４は、起動プログラム等を記録している。ＲＡＭ２１６は、ＣＰＵ２１２の主記憶装置として機能する。フラッシュメモリ２１８には、ＣＰＵ２１２で用いられるプログラム、パラメータ等各種情報が記録されている。また、フラッシュメモリ２１８には、取得したデータや作成したデータなど、各種のデータも記録される。タッチパネル２２２は、スマートフォンへの入力を受け付ける入力装置として機能する。表示装置である液晶ディスプレイ２２４は、各種情報を表示する。カメラ２３２は、各種画像を撮像する。スマートフォン２００は、例えば電卓１００の液晶ディスプレイ１３４に表示された２次元コードの画像を取得することで、電卓１００で作成されたプログラムの情報を取得することができる。通信装置２３４は、スマートフォン２００の外部の機器と通信を行う際に用いられる。通信装置２３４は、例えばインターネットといったネットワーク４００に接続する。
【００１６】
（サーバの構成）
サーバ３００は、図２Ｃに示すように、バスライン３９０を介して互いに接続された、ＣＰＵ（プロセッサ）３１２と、ＲＯＭ３１４と、ＲＡＭ３１６と、ハードディスク（記憶装置）３１８と、通信装置３３４とを備える情報処理装置である。ＣＰＵ３１２は、各種信号処理等を行う。ＲＯＭ３１４は、ＣＰＵ３１２の動作に用いられる情報を記録している。ＲＡＭ３１６は、ＣＰＵ３１２の主記憶装置として機能する。ハードディスク３１８には、ＣＰＵ３１２で用いられるプログラム、パラメータ、及びＣＰＵ３１２の演算結果など、各種情報が記録される。
【００１７】
〈システムの動作〉
（電卓の動作）
電卓１００の動作の一例の概要について、図３を参照して説明する。
【００１８】
ステップＳ１０１において、電卓１００のＣＰＵ１１２は、現在設定されている動作モードがアルゴリズムモードであるか否かを判定する。アルゴリズムモードでないとき、処理はステップＳ１０２に進む。
【００１９】
ステップＳ１０２において、ＣＰＵ１１２は、アルゴリズムモード以外の選択されているモードに関する処理を行う。例えば、一般的な電卓として、数字キー及び演算キーを用いた入力に応じて、演算を行い、その結果を液晶ディスプレイ１３４に表示する処理を行う。その後、処理はステップＳ１０１に戻る。
【００２０】
ステップＳ１０１において、アルゴリズムモードが選択されていると判定されたとき、処理はステップＳ１０３に進む。ステップＳ１０３において、ＣＰＵ１１２は、実行キー以外の入力キー１３２への入力があったか否かを判定する。入力キー１３２への入力がなかったとき、処理はステップＳ１０５に進む。一方、入力キー１３２への入力があったとき、処理はステップＳ１０４に進む。ステップＳ１０４において、ＣＰＵ１１２は、入力キー１３２への入力に応じた処理を行う。この処理によって、ユーザは、プログラムを作成することができる。その後、処理はステップＳ１０５に進む。
【００２１】
ステップＳ１０５において、ＣＰＵ１１２は、実行キーが押されたか否かを判定する。実行キーが押されていないとき、処理はステップＳ１０７に進む。一方、実行キーが押されたとき、処理はステップＳ１０６に進む。ステップＳ１０６において、ＣＰＵ１１２は、実行処理を行う。実行処理では、ユーザによって入力されたプログラムが実行される。電卓１００は、プログラムに従って動作し、入力を要求したり、結果を表示したりする。その後、処理はステップＳ１０７に進む。
【００２２】
ステップＳ１０７において、ＣＰＵ１１２は、プログラムを送信することが要求されたか否かを判定する。プログラムの送信が要求されていないとき、処理はステップＳ１０９に進む。一方、プログラムの送信が要求されたとき、処理はステップＳ１０８に進む。ステップＳ１０８において、ＣＰＵ１１２は、プログラム送信処理を行う。プログラム送信処理では、ＣＰＵ１１２は、２次元コードエンコーダ１２２に、作成されたプログラムに関する情報を含む２次元コードを作成させる。ＣＰＵ１１２は、作成された２次元コードを液晶ディスプレイ１３４に表示させる。この２次元コードは、プログラムの内容に加えて、電卓１００の機種に関する情報など、他の情報も含み得る。その後、処理はステップＳ１０９に進む。
【００２３】
ステップＳ１０９において、ＣＰＵ１１２は、動作モードがアルゴリズムモードから他のモードに変更されたか否かを判定する。変更されていないとき、処理はステップＳ１０３に戻る。すなわち、上述の処理が繰り返し行われ、ユーザの指示に応じてプログラムの入力、実行、２次元コード表示などが行われる。ステップＳ１０９において、モードが変更されたと判定されたとき、処理はステップＳ１０１に戻る。
【００２４】
（スマートフォンの動作）
スマートフォン２００の動作の一例の概要について、図４を参照して説明する。ここでは、スマートフォン２００における、電卓１００に関するアプリケーションソフトウェア（アプリ）の動作について説明する。
【００２５】
ステップＳ２０１において、スマートフォンのＣＰＵ２１２は、現在選択されている動作モードがプログラム変換モードであるか否かを判定する。プログラム変換モードは、本実施形態に関する、電卓１００で作成されたプログラムを他のプログラミング言語によるプログラムに変換し、変換前後のプログラムを提示したり実行したりするモードである。プログラム変換モードでないと判定されたとき、処理はステップＳ２０２に進む。
【００２６】
ステップＳ２０２において、ＣＰＵ２１２は、プログラム変換モード以外の処理を行う。例えば、高精度な計算、グラフ描画、グループメンバー間でのデータの共有などが行われ得る。その後、処理はステップＳ２０１に戻る。
【００２７】
ステップＳ２０１において、プログラム変換モードであると判定されたとき、処理はステップＳ２０３に進む。ステップＳ２０３において、ＣＰＵ２１２は、プログラム変換の指示が入力されたか否かを判定する。プログラム変換の指示が入力されていないとき、処理はステップＳ２０６に進む。一方、プログラム変換の指示が入力されたとき、処理はステップＳ２０４に進む。
【００２８】
ステップＳ２０４において、ＣＰＵ２１２は、電卓１００で作成されたプログラムを取得する。例えば、ＣＰＵ２１２は、カメラ２３２を用いて、電卓１００の液晶ディスプレイ１３４に表示された２次元コードを撮影させる。ＣＰＵ２１２は、取得した２次元コードを解析し、２次元コードで表された情報を取得する。この情報には、電卓１００で作成されたプログラムが含まれる。また、この情報には、電卓１００の機種に関する情報など、他の情報が含まれていてもよい。ＣＰＵ２１２は、取得した情報をサーバ３００に送信する。この情報を受けたサーバ３００は、電卓１００で作成されたプログラムを他のプログラムに変換し、変換後のプログラムをスマートフォン２００に送信する。
【００２９】
ステップＳ２０５において、ＣＰＵ２１２は、サーバ３００からプログラムの変換結果に関する情報を取得する。この情報には、プログラミング言語の種類、変換後のプログラム、プログラムの行番号などの情報が含まれる。ＣＰＵ２１２は、取得した情報を液晶ディスプレイ２２４に表示させる。その後、処理はステップＳ２０６に進む。
【００３０】
ステップＳ２０６において、ＣＰＵ２１２は、２種類のプログラムが表示されている状態において、表示されているプログラムリストの任意の行が選択されたか否かを判定する。行の選択は、例えば液晶ディスプレイ２２４に表示されている行の何れかがユーザによってタッチされることで行われる。タッチされたことは、タッチパネル２２２を用いて検出される。選択されていないと判定されたとき、処理はステップＳ２０９に進む。選択されたと判定されたとき、処理はステップＳ２０７に進む。
【００３１】
ステップＳ２０７において、ＣＰＵ２１２は、タッチパネル２２２による検出結果に基づいて、ユーザによって選択された行の情報を取得する。ＣＰＵ２１２は、取得した行の情報を、サーバ３００に送信する。選択された行の情報を取得したサーバ３００は、もう一方のプログラムにおいて当該選択された行に対応する行を特定する。サーバ３００は、ユーザによって選択された行と、特定された対応する行とに関する情報をスマートフォン２００に送信する。送信される情報には、選択された行及び特定された対応行を強調表示する画像に関する情報が含まれてもよい。
【００３２】
ステップＳ２０８において、ＣＰＵ２１２は、サーバ３００から選択された行に対応するもう一方の行に関する特定結果を取得する。ＣＰＵ２１２は、取得した情報に基づいて、選択された行と、特定された対応行とが強調された画像を、液晶ディスプレイ２２４に表示させる。その後、処理はステップＳ２０９に進む。
【００３３】
ステップＳ２０９において、ＣＰＵ２１２は、表示画面において、２種類のプログラムの配置を変更するか否かを判定する。例えば、スマートフォン２００が、画面が縦長となる向きに固定されているとき、２種類のプログラムが縦に２つ並べて配置される。スマートフォン２００が、画面が横長となる向きに固定されているとき、２種類のプログラムが横に２つ並べて配置される。このような場合、スマートフォンの向きが変更されたことが例えば重力センサの出力などを用いて検出されたとき、配置を変更すると判定される。配置を変更しないと判定されたとき、処理はステップＳ２１２に進む。配置を変更すると判定されたとき、処理はステップＳ２１０に進む。
【００３４】
ステップＳ２１０において、ＣＰＵ２１２は、例えばスマートフォン２００の向きといった配置に関する情報を取得する。ＣＰＵ２１２は、取得した配置に関する情報をサーバ３００に送信する。この情報を取得したサーバ３００は、配置の変更に関する情報を作成する。サーバ３００は、作成した情報をスマートフォン２００に送信する。この情報には、表示画面に関するデータが含まれていてもよい。
【００３５】
ステップＳ２１１において、ＣＰＵ２１２は、サーバ３００から作成結果である配置が変更された画面に関する情報を取得する。ＣＰＵ２１２は、取得した情報に基づいて、配置が変更された２種類のプログラムを示す画面を液晶ディスプレイ２２４に表示させる。その後、処理はステップＳ２１２に進む。
【００３６】
ステップＳ２１２において、ＣＰＵ２１２は、動作モードがプログラム変換モードから変更されたか否かを判定する。モードが変更されていないとき、処理はステップＳ２０３に戻る。その結果、プログラム変換、行選択、配置変更の何れかが選択されたとき、選択された処理が実行され、選択されていないとき、何れの処理も行われずに待機する。モード変更がされたと判定されたとき、処理はステップＳ２０１に戻る。選択されたモードに応じた処理が行われる。
【００３７】
（サーバの動作）
サーバ３００の動作の一例の概要について、図５を参照して説明する。サーバ３００は各種の処理を行うが、ここでは、図４を参照して説明した動作に対応する動作について説明する。
【００３８】
ステップＳ３０１において、サーバ３００のＣＰＵ３１２は、スマートフォン２００からプログラム変換に関する情報を受信したか否かを判定する。プログラム変換に関する情報を受信していないとき、処理はステップＳ３０３に進む。プログラム変換に関する情報を受信したとき、処理はステップＳ３０２に進む。ステップＳ３０２において、ＣＰＵ３１２は、受信した電卓１００で作成されたプログラムを他のプログラミング言語を用いたプログラムに変換する変換処理を実行する。変換処理については後に詳述する。その後、処理はステップＳ３０３に進む。
【００３９】
ステップＳ３０３において、ＣＰＵ３１２は、スマートフォン２００から行選択に関する情報を受信したか否かを判定する。行選択に関する情報を受信していないとき、処理はステップＳ３０５に進む。行選択に関する情報を受信したとき、処理はステップＳ３０４に進む。ステップＳ３０４において、ＣＰＵ３１２は、選択された行に対応するもう一方のプログラムの行を特定し、それらの行を強調表示するための情報を作成する選択処理を実行する。選択処理については後に詳述する。その後、処理はステップＳ３０５に進む。
【００４０】
ステップＳ３０５において、ＣＰＵ３１２は、スマートフォン２００から配置変更に関する情報を受信したか否かを判定する。配置変更に関する情報を受信していないとき、処理はステップＳ３０１に戻る。配置変更に関する情報を受信したとき、処理はステップＳ３０６に進む。ステップＳ３０６において、ＣＰＵ３１２は、２種類のプログラムの表示を変更するための情報を作成する配置変更処理を実行する。配置変更処理については後に詳述する。その後、処理はステップＳ３０１に戻る。
【００４１】
（変換処理）
ステップＳ３０２において行われる変換処理について、図６に示すフローチャートを参照して説明する。ここでは、電卓１００で作成される、変換される前のプログラム例を図７Ａに示す。また、変換された後のプログラム例を図７Ｂに示す。また、図７Ａに示すプログラムを実行したときに、電卓１００に表示される画面例を図８Ａ及び図８Ｂに示す。
【００４２】
電卓１００で作成され実行される第１プログラムの一例は、図７Ａのコマンド欄に記載のように、下記のようなプログラムである。
−−−−−
Go to x=-10, y=-20
Pen Down
Repeat 6
Move 20 pixels
Show Result y
Turn ↑ 60 degrees
Show Result x
」
−−−−−
このプログラムが電卓１００で実行されたとき次のように動作する。
【００４３】
「Go to x=-10, y=-20」によって、座標(x, y)=(-10, -20)が指定される。
【００４４】
「Pen Down」によって、指定されている点（この場合、(x, y)=(-10, -20)）から線が引かれる。線が引かれる向き、及び、線を引いた後の位置は、矢尻の記号によって示される。なお、矢尻の向きは、初期設定ではｘ方向である。
【００４５】
「Repeat 6」及び「」」によって、これらに囲まれたコマンドが６回繰り返される。繰り返されるのは、以下の動作である。
【００４６】
「Move 20 pixels」によって、矢尻の方向に長さ２０ピクセルの線が引かれる。
【００４７】
「Show Result y」によって、現在の位置のｙ座標の値を示す。また、実行ボタンが押されるまで待機する。
【００４８】
したがって、実行ボタンが押されたとき、電卓１００の液晶ディスプレイ１３４に表示される画面は、図８Ａの符号（ａ）のようになる。すなわち、(x, y)=(-10, -20)からｘ方向に長さ２０ピクセルの線が引かれ、(x, y)=(10, -20)の位置に矢尻記号が示される。また、現在位置のｙ座標である「-20」が表示される。
【００４９】
実行ボタンが押されると、「Turn ↑ 60 degrees」によって、矢尻の向きが反時計回りに６０度回転される。
【００５０】
「Show Result x」によって、現在の位置のｘ座標の値を示す。また、実行ボタンが押されるまで待機する。
【００５１】
したがって、電卓１００の液晶ディスプレイ１３４に表示される画面は、図８Ａの符号（ｂ）のようになる。すなわち、その場で反時計回りに６０度回転した矢尻記号が示される。また、現在位置のｘ座標である「10」が表示される。
【００５２】
「Repeat 6」及び「」」によって囲まれた命令が繰り返される。したがって、実行ボタンが押されたとき、２回目の「Move 20 pixels」及び「Show Result y」によって、図８Ａの符号（ｃ）のように、(x, y)=(10, -20)から矢尻の方向に長さ２０ピクセルの線が引かれ、(x, y)=(20, -2.679491924)の位置に矢尻記号が示される。また、現在位置のｙ座標である「-2.679491924」が表示される。
【００５３】
実行ボタンが押されたとき、「Turn ↑ 60 degrees」及び「Show Result x」によって、図８Ａの符号（ｄ）のよう、その場で反時計回りに６０度回転した矢尻記号が示される。また、現在位置のｘ座標である「20」が表示される。
【００５４】
実行ボタンが押されたとき、３回目の「Move 20 pixels」及び「Show Result y」によって、図８Ａの符号（ｅ）のように、(x, y)=(20, -2.679491924)から矢尻の方向に長さ２０ピクセルの線が引かれ、(x, y)=(10, 14.64101615)の位置に矢尻記号が示される。また、現在位置のｙ座標である「14.64101615」が表示される。
【００５５】
実行ボタンが押されたとき、「Turn ↑ 60 degrees」及び「Show Result x」によって、図８Ａの符号（ｆ）のよう、その場で反時計回りに６０度回転した矢尻記号が示される。また、現在位置のｘ座標である「10」が表示される。
【００５６】
実行ボタンが押されたとき、４回目の「Move 20 pixels」及び「Show Result y」によって、図８Ａの符号（ｇ）のように、(x, y)=(10, 14.64101615)から矢尻の方向に長さ２０ピクセルの線が引かれ、(x, y)=(-10, 14.64101615)の位置に矢尻記号が示される。また、現在位置のｙ座標である「14.64101615」が表示される。
【００５７】
実行ボタンが押されたとき、「Turn ↑ 60 degrees」及び「Show Result x」によって、図８Ｂの符号（ｈ）のよう、その場で反時計回りに６０度回転した矢尻記号が示される。また、現在位置のｘ座標である「-10」が表示される。
【００５８】
実行ボタンが押されたとき、５回目の「Move 20 pixels」及び「Show Result y」によって、図８Ｂの符号（ｉ）のように、(x, y)=(-10, 14.64101615)から矢尻の方向に長さ２０ピクセルの線が引かれ、(x, y)=(-20, -2.679491924)の位置に矢尻記号が示される。また、現在位置のｙ座標である「-2.679491924」が表示される。
【００５９】
実行ボタンが押されたとき、「Turn ↑ 60 degrees」及び「Show Result x」によって、図８Ｂの符号（ｊ）のよう、その場で反時計回りに６０度回転した矢尻記号が示される。また、現在位置のｘ座標である「-20」が表示される。
【００６０】
実行ボタンが押されたとき、６回目の「Move 20 pixels」及び「Show Result y」によって、図８Ｂの符号（ｋ）のように、(x, y)=(-20, -2.679491924)から矢尻の方向に長さ２０ピクセルの線が引かれ、(x, y)=(-10, -20)の位置に矢尻記号が示される。また、現在位置のｙ座標である「-20」が表示される。
【００６１】
実行ボタンが押されたとき、「Turn ↑ 60 degrees」及び「Show Result x」によって、図８Ｂの符号（ｌ）のよう、その場で反時計回りに６０度回転した矢尻記号が示される。また、現在位置のｘ座標である「-10」が表示される。
【００６２】
実行ボタンが押されたとき、終了を示す「（空白行）」によってプログラムの実行が終了する。その結果、図８Ｂの符号（ｍ）のような画面が表示される。ここでさらに実行ボタンが押されたとき、図８Ｂの符号（ｎ）のような画面が表示され、プログラムの入力画面となる。
【００６３】
ステップＳ４０１において、ＣＰＵ３１２は、スマートフォン２００から、例えば上述のような電卓１００で作成された第１プログラムを取得する。
【００６４】
ステップＳ４０２において、ＣＰＵ３１２は、取得した第１プログラムを異なるプログラミング言語で記述された第２のプログラムに変換する。このとき、図７Ａに示すように、ＣＰＵ３１２は、第１プログラムの各命令文に順に行番号を付与する。
【００６５】
図７Ａに示すような第１プログラムに対応する第２プログラムは、例えば図７Ｂに示すようになる。
【００６６】
第１プログラムの「Go to x=-10, y=-20」は、第２プログラムでは「go to x: (-10) y: (-20)」に変換される。
【００６７】
第１プログラムの「Pen Down」は、第２プログラムでは「pen down」に変換される。
【００６８】
第１プログラムの「Repeat 6」は、第２プログラムでは「repeat (6)」に変換される。
【００６９】
第１プログラムの「Move 20 pixels」は、第２プログラムでは「move (20) pixels」に変換される。
【００７０】
第１プログラムの「Show Result y」は、第２プログラムでは「show (y)」及び「wait any key」に変換される。
【００７１】
第１プログラムの「Turn ↑ 60 degrees」は、第２プログラムでは「turn ↑ 60 degrees」に変換される。
【００７２】
第１プログラムの「Show Result x」は、第２プログラムでは「show (x)」及び「wait any key」に変換される。
【００７３】
第１プログラムの「」」は、第２プログラムでは「」」に変換される。
【００７４】
第１プログラムの「（空白行）」は、第２プログラムでは「（空白行）」に変換される。
【００７５】
以上のようなプログラムの変換は、例えばあらかじめ用意された対応表などを参照して行われ得る。
【００７６】
続いて、ステップＳ４０３乃至ステップＳ４１０の処理によって、第２プログラムの各々の行に関して、第１プログラムの行番号に対応する行番号が特定される。
【００７７】
ステップＳ４０３において、ＣＰＵ３１２は、第１プログラムの処理行数を示す変数Ｎを１に設定する。また、第２プログラムの行番号を表す数列をリセットする。
【００７８】
ステップＳ４０４において、ＣＰＵ３１２は、第１プログラムのＮ行目のデータを取得する。ステップＳ４０５において、ＣＰＵ３１２は、取得した第１プログラムのＮ行目の構文が、プログラムの変換において行数が増える構文であるか否かを判定する。行数が増える構文であるか否か及び増える行数は、例えば対応表を参照することで特定され得る。行数が増えないとき、処理はステップＳ４０６に進む。ステップＳ４０６において、ＣＰＵ３１２は、第２プログラムの行番号を表す数列に１個のＮを追加する。その後、処理はステップＳ４０７に進む。
【００７９】
ステップＳ４０７において、ＣＰＵ３１２は、第１プログラムに次の行があるか否かを判定する。次の行があるとき、処理はステップＳ４０８に進む。ステップＳ４０８において、ＣＰＵ３１２は、変数Ｎに１を加算する。その後、処理はステップＳ４０４に戻る。すなわち、次の行について、同様の処理が繰り返される。
【００８０】
例えば、上述のとおり、図７Ａに示した第１プログラムから図７Ｂに示した第２プログラムへの変換において、第１プログラムの１行目乃至４行目は、行数が増えない行である。したがって、Ｎ＝１からＮ＝４のとき、ステップＳ４０６の処理によって、数列に「１」、「２」、「３」、「４」が１個ずつ追加される。その結果、数列は、｛１，２，３，４｝となる。
【００８１】
ステップＳ４０５において、行数が増える構文であると判定されたとき、処理はステップＳ４０９に進む。ステップＳ４０９において、ＣＰＵ３１２は、構文に基づいて、例えば対応表を参照して、増える行数ｎを取得する。ステップＳ４１０において、ＣＰＵ３１２は、数列にｎ＋１個のＮを追加する。その後、処理はステップＳ４０７に進む。
【００８２】
例えば、上述のとおり、図７Ａに示した第１プログラムから図７Ｂに示した第２プログラムへの変換において、第１プログラムの５行目は、行数が１増えて２行になる。したがって、Ｎ＝５のとき、ステップＳ４０９の処理によってｎ＝１が取得され、ステップＳ４１０の処理によって、数列に２個の「５」が追加される。その結果、数列は、｛１，２，３，４，５，５｝となる。
【００８３】
以上のようにして、例えば、図７Ａに示した第１プログラムから図７Ｂに示した第２プログラムへの変換については、数列｛１，２，３，４，５，５，６，７，７，８，９｝が得られる。
【００８４】
ステップＳ４０７において次の行がないと判定されたとき、処理はステップＳ４１１に進む。ステップＳ４１１において、ＣＰＵ３１２は、得られた数列に基づいて、第２プログラムに行番号を付与する。例えば、図７Ｂに示す第２プログラムの例では、図７Ｂに示すような行番号が付与される。
【００８５】
ステップＳ４１２において、ＣＰＵ３１２は、第１プログラム及び第２プログラムとそれらの行番号との情報を用いて、スマートフォン２００に表示させる画面に関するデータを作成する。ステップＳ４１３において、ＣＰＵ３１２は、画面に関するデータの作成結果をスマートフォン２００に送信する。ここで送信される画面に関するデータは、表示画面の画像データであってもよい。この場合、スマートフォン２００は、受信した画像を表示する。また、送信される画面に関するデータは、テキストデータであってもよい。この場合、スマートフォン２００は、このテキストデータに基づいて、表示画面を作成する。以上で、変換処理は終了する。
【００８６】
その結果、例えば図９に示すような画像がスマートフォン２００に表示される。すなわち、画面６００内には、第１プログラムに関する第１プログラムリスト６１０と第２プログラムに関する第２プログラムリスト６２０とが縦に並べて表示される。第１プログラムリスト６１０には、行番号６１１と命令文６１２とが含まれる。同様に、第２プログラムリスト６２０には、行番号６２１と命令文６２２とが含まれる。本実施形態では、第１プログラムリスト６１０の行番号６１１と第２プログラムリスト６２０の行番号６２１とは、機能的に対応する命令文に同じ行番号が付されるという関係になっている。このため、ユーザは、変換前後の第１プログラムリスト６１０と第２プログラムリスト６２０とを比較することができ、さらにその対応関係を容易に把握することができる。
【００８７】
なお、ここでは、行の対応関係が番号によって示される例を示したが、これに限らない。アルファベットや記号など各種の符号が同様に用いられ得る。
【００８８】
（選択処理）
ステップＳ３０４で行われる選択処理について、図１０に示すフローチャートを参照して説明する。
【００８９】
ステップＳ５０１において、ＣＰＵ３１２は、スマートフォン２００から選択位置を受信する。ステップＳ５０２において、ＣＰＵ３１２は、選択位置に基づいて、選択された行を特定する。このとき、第１プログラムと第２プログラムとの対応関係が明らかになっているので、第１プログラムと第２プログラムとの両方の選択された行が特定される。ステップＳ５０３において、ＣＰＵ３１２は、特定された行について、第１プログラムと第２プログラムとの両方について強調するハイライトを付与するための情報を生成する。例えば、選択された行がハイライト表示された画像を作成する。ステップＳ５０４において、ＣＰＵ３１２は、ステップＳ５０３で生成された結果をスマートフォン２００へ送信する。その結果、スマートフォン２００では、選択された行が強調表示された画像が表示される。
【００９０】
例えば、図１１に示すように、第１プログラムリスト６１０の５行目６１３が選択されたとする。このとき、第１プログラムリスト６１０の５行目６１３及び第２プログラムリスト６２０の対応する２行６２３が強調表示される。
【００９１】
本実施形態によれば、対応した行が強調表示されるので、ユーザは行を選択することで容易に対応関係を把握することができる。
【００９２】
（配置変更処理）
ステップＳ３０６で行われる配置変更処理について、図１２に示すフローチャートを参照して説明する。
【００９３】
ステップＳ６０１において、ＣＰＵ３１２は、第１プログラム及び第２プログラムの並べ方について縦に並べるか横に並べるかを判定する。並べ方は、ユーザによる操作に応じて変更される。例えば、スマートフォン２００の液晶ディスプレイ２２４が縦長となるようにスマートフォン２００が配置されるとき、縦に並べると判定される。例えば、スマートフォン２００の液晶ディスプレイ２２４が横長となるようにスマートフォン２００が配置されるとき、横に並べると判定される。横に並べると判定されたとき、処理はステップＳ６０２に進む。第１プログラムと第２プログラムとが横に並べて配置されるとき、命令文のうち対応する行が横に並べられると対応関係が把握されやすい。そこで、本実施形態では、ステップＳ６０２乃至ステップＳ６０７において、第２プログラムに応じて第１プログラムの命令文の行間に必要な空白行を挿入する。
【００９４】
ステップＳ６０２において、ＣＰＵ３１２は、処理対象の行番号を示す変数Ｎを１に設定する。ステップＳ６０３において、ＣＰＵ３１２は、第２プログラムのＮ番目の行番号を取得する。
【００９５】
ステップＳ６０４において、ＣＰＵ３１２は、現在対象としている行番号が繰り返されている番号であるか否かを判定する。例えば、図７Ｂに示す第２プログラムにおいて、行番号が「１」である行は、繰り返されていない。これに対して、行番号が「５」である行は、２つ繰り返されている。行番号が繰り返されていないと判定されたとき、処理はステップＳ６０６に進む。一方、行番号が繰り返されていると判定されたとき、処理はステップＳ６０５に進む。ステップＳ６０５において、ＣＰＵ３１２は、第１プログラムの対応する行の下に空白行を挿入する。その後、処理はステップＳ６０６に進む。
【００９６】
ステップＳ６０６において、ＣＰＵ３１２は、次の行があるか否かを判定する。次の行があるとき、処理はステップＳ６０７に進む。ステップＳ６０７において、ＣＰＵ３１２は、変数Ｎに１を加算する。その後、処理はステップＳ６０３に戻る。すなわち、第２プログラムで行番号が繰り返されている行に対応する行については、第１プログラムにおいて対応する行において空白行が挿入される。
【００９７】
ステップＳ６０６において、次の行がないと判定されたとき、処理はステップＳ６０８に進む。ステップＳ６０８において、ＣＰＵ３１２は、必要に応じて空白行が挿入された第１プログラムに関して表示するためのデータを作成する。このデータは表示用の画像データであってもよい。
【００９８】
ステップＳ６０９において、ＣＰＵ３１２は、ステップＳ６０８で作成された第１プログラムに関する表示データを用いて、また、第２プログラムに関して既に存在していた表示データを流用して、第１プログラムと第２プログラムとが横に（左右に）並べられた表示データを作成する。
【００９９】
ステップＳ６１０において、ＣＰＵ３１２は、作成した表示用のデータを、スマートフォン２００に送信する。その後、配置変更処理は終了する。その結果、スマートフォン２００では、第１プログラムリスト６１０と第２プログラムリスト６２０とが横に並べられた画面が表示される。
【０１００】
スマートフォン２００に表示される画面の一例を図１３に示す。この図に示すように、画面６００には、第１プログラムリスト６１０と第２プログラムリスト６２０とが横に並べて表示されている。ここで、第１プログラムリスト６１０においては１行の命令文が第２プログラムリスト６２０においては２行であることがある。このような行については、第１プログラムリスト６１０において空白行が挿入されることで、第１プログラムリスト６１０と第２プログラムリスト６２０とで、対応する命令文が左右に並べて表示される。その結果、ユーザは第１プログラムリスト６１０の命令文と第２プログラムリスト６２０の命令文との対応関係を把握しやすい。
【０１０１】
図１２に戻って説明を続ける。ステップＳ６０１において、並べ方が縦に変更されると判定されたとき、処理はステップＳ６１１に進む。ステップＳ６１１において、ＣＰＵ３１２は、既にある空白行が挿入されていない第１プログラムリスト６１０と第２プログラムリスト６２０との表示データを流用して、第１プログラムリスト６１０と第２プログラムリスト６２０とが縦に（上下に）並べられた表示データを作成する。その後、処理はステップＳ６１０に進む。このとき、作成された第１プログラムリスト６１０と第２プログラムリスト６２０とが縦に並べられた表示データをスマートフォン２００に送信する。その結果、図９に示すような、第１プログラムリスト６１０と第２プログラムリスト６２０とが縦に並べられた画面６００が表示される。
【０１０２】
［第２の実施形態］
本発明の第２の実施形態について説明する。ここでは、第１の実施形態との相違点について説明し、同一の部分については、同一の符号を付してその説明を省略する。第１の実施形態では、第１プログラムに対して第２プログラムは行が増えることはあるが、減ることはないものとした。また、増える行数は構文の種類によって決まっており、命令文を１行確認することで増える行数が特定されるものとした。これに対して、本実施形態では、第１プログラムに対して第２プログラムは行が増えたり減ったりする。また、増減する行数も次の行の記載次第で変化するものとする。
【０１０３】
本実施形態に係る変換処理について、図１４Ａ及び図１４Ｂに示すフローチャートを参照して説明する。
【０１０４】
ステップＳ７０１において、ＣＰＵ３１２は、スマートフォン２００から、電卓１００で作成された第１プログラムを取得する。ステップＳ７０２において、ＣＰＵ３１２は、取得した第１プログラムを異なるプログラミング言語で記述された第２のプログラムに変換する。このとき、ＣＰＵ３１２は、第１プログラムの各命令文に順に行番号を付与する。ステップＳ７０３において、ＣＰＵ３１２は、第１プログラムの処理行数を示す変数Ｎを１に設定する。また、第２プログラムの行番号を表す数列をリセットする。
【０１０５】
ステップＳ７０４において、ＣＰＵ３１２は、第１プログラムのＮ行目のデータを取得する。ステップＳ７０５において、ＣＰＵ３１２は、取得した第１プログラムのＮ行目の構文が、プログラムの変換において行数が増える構文であるか否かを判定する。行数が増えるとき、処理はステップＳ７０６に進む。
【０１０６】
ステップＳ７０６において、ＣＰＵ３１２は、変数ｋを１に設定する。ステップＳ７０７において、ＣＰＵ３１２は、第１プログラムのＮ＋ｋ行目のデータを取得する。ステップＳ７０８において、ＣＰＵ３１２は、第１プログラムのＮ＋ｋ行目のデータに基づいて、増加行数を決定するために次の行を確認する必要があるか否かを判定する。次の行を確認する必要があるとき、処理はステップＳ７０９に進む。ステップＳ７０９において、ＣＰＵ３１２は、変数ｋに１を加算する。その後、処理はステップＳ７０７に戻る。ステップＳ７０８において、次の行を確認する必要がないと判定されたとき、処理はステップＳ７１０に進む。
【０１０７】
ステップＳ７１０において、ＣＰＵ３１２は、第１プログラムのＮ行目からＮ＋ｋ行目までの命令文の記載に基づいて、第２プログラムにおいて対応する行数を示す数列を確定する。例えば、Ｎ行目が２行に、Ｎ＋１行目が３行に変換される場合、数列は、｛Ｎ，Ｎ，Ｎ＋１，Ｎ＋１，Ｎ＋１｝となる。ステップＳ７１１において、ＣＰＵ３１２は、第２プログラムの行数を示す数列に、ステップＳ７１０で確定した数列を追加する。
【０１０８】
ステップＳ７１２において、ＣＰＵ３１２は、変数Ｎにｋ＋１を加算する。ステップＳ７１３において、ＣＰＵ３１２は、次の行があるか否かを判定する。次の行があるとき、処理はステップＳ７０４に戻る。すなわち、数列に追加していない行から処理を繰り返す。
【０１０９】
ステップＳ７０５において、行数が増えていないと判定されたとき、処理はステップＳ７１４に進む。ステップＳ７１４において、ＣＰＵ３１２は、取得した第１プログラムのＮ行目の構文が、プログラムの変換において行数が減る構文であるか否かを判定する。行数が減るとき、処理はステップＳ７１５に進む。
【０１１０】
ステップＳ７１５において、ＣＰＵ３１２は、変数ｋを１に設定する。ステップＳ７１６において、ＣＰＵ３１２は、第１プログラムのＮ＋ｋ行目のデータを取得する。ステップＳ７１７において、ＣＰＵ３１２は、第１プログラムのＮ＋ｋ行目のデータに基づいて、減少行数を決定するために次の行を確認する必要があるか否かを判定する。次の行を確認する必要があるとき、処理はステップＳ７１８に進む。ステップＳ７１８において、ＣＰＵ３１２は、変数ｋに１を加算する。その後、処理はステップＳ７１６に戻る。ステップＳ７１７において、次の行を確認する必要がないと判定されたとき、処理はステップＳ７１９に進む。
【０１１１】
ステップＳ７１９において、ＣＰＵ３１２は、第１プログラムのＮ行目からＮ＋ｋ行目までの命令文の記載に基づいて、第２プログラムにおいて対応する行数を示す数列を確定する。ステップＳ７２０において、ＣＰＵ３１２は、第２プログラムの行数を示す数列に、ステップＳ７１９で確定した数列を追加する。例えば、Ｎ行目、Ｎ＋１行目、及びＮ＋２行目が１行に変換される場合、数列には１つの値が追加される。追加される値は例えば、｛Ｎ｝のように最初の行の値であってもよいし、例えば｛Ｎ／Ｎ＋１／Ｎ＋２｝のように、行番号を列記した値であってもよい。
【０１１２】
ステップＳ７２１において、ＣＰＵ３１２は、変数Ｎにｋ＋１を加算する。その後、処理はステップＳ７１３に戻る。すなわち、次の行があるときには、数列に追加していない行から処理を繰り返す。
【０１１３】
ステップＳ７１４において、行数が減らないと判定されたとき、処理はステップＳ７２２に進む。ステップＳ７２２において、ＣＰＵ３１２は、数列に１個のＮを追加する。その後、処理はステップＳ７１３に戻る。すなわち、次の行があるときには、数列に追加していない行から処理を繰り返す。
【０１１４】
ステップＳ７１３において、次の行がないと判定されたとき、処理はステップＳ７２３に進む。ステップＳ７２３において、ＣＰＵ３１２は、得られた数列に基づいて、第２プログラムに行番号を付与する。ステップＳ７２４において、ＣＰＵ３１２は、第１プログラム及び第２プログラムとそれらの行番号との情報を用いて、スマートフォン２００に表示させる画面に関するデータを作成する。ステップＳ７２５において、ＣＰＵ３１２は、画面に関するデータの作成結果をスマートフォン２００に送信する。以上で、変換処理は終了する。
【０１１５】
本実施形態によれば、第１プログラムから第２プログラムに変換するにあたって、行数が増える場合と減る場合とがあっても対応できる。また、本実施形態によれば、命令文の内容に応じて増減する行数が変化する場合があっても対応できる。したがって、種々のプログラム間の変換に対応できる。
【０１１６】
［変形例］
システムの構成については、上述の実施形態に限らない。システム構成は種々に変更し得る。例えば、スマートフォン２００は、これに限らず、タブレット型の情報端末、パーソナルコンピュータなど、各種情報処理装置であってよい。また、電卓１００とスマートフォン２００との間の情報の伝達は、２次元コードで行うに限らない。Bluetooth Low Energy（Bluetoothは登録商標）などの規格を用いた無線通信又は有線通信などで行われてもよい。電卓１００がＷｉ−Ｆｉ（登録商標）などで直接ネットワーク４００に接続してもよい。この場合、スマートフォン２００を介さずに、電卓１００がサーバ３００に第１プログラムを送信してもよい。また、電卓１００とスマートフォン２００とは別体でなくてもよい。例えば、電卓１００の機能とスマートフォン２００の機能とを１つのスマートフォンなどの情報処理端末が担ってもよい。また、サーバ３００で行われる情報処理は、スマートフォン２００で行われてもよい。したがって、システム１０の全ての機能を１つの情報処理端末で担ってもよい。
【０１１７】
つまり、電卓１００がプログラム入力機器、スマートフォン２００が通信機器、サーバ３００が情報処理装置として機能するシステムや、電卓１００がプログラム入力機器、及び、通信機器、サーバ３００が情報処理装置として機能し、スマートフォン２００が無いシステムや、電卓１００がプログラム入力機器、スマートフォン２００が通信機器、及び、情報処理装置として機能し、サーバ３００が無いシステム、あるいは、電卓１００又はスマートフォン２００のそれぞれが単体でプログラム入力機器、通信機器、及び、情報処理装置として機能し、サーバ３００が無くてもよい。
【０１１８】
上述の実施形態では、行数を特定するアルゴリズムの一例を示したが、これに限らない。同様の機能を発揮すれば、上述の機能は他の方法によって実現されもよい。
【０１１９】
上述の実施形態では、変換前の第１プログラムを基準として、第１プログラムの１行ごとに行番号が付され、変換後の第２プログラムの各々の行に、対応する行番号が付されている。しかしながら、これに限らない。変換後の第２プログラムを基準として、第２プログラムの１行ごとに行番号が付され、変換前の第１プログラムの各々の行に、対応する行番号が付されてもよい。
【０１２０】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は適宜組み合わせて実施してもよく、その場合組み合わせた効果が得られる。更に、上記実施形態には種々の発明が含まれており、開示される複数の構成要件から選択された組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、課題が解決でき、効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【０１２１】
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。  
［１］
第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと
をコンピュータに実行させるためのプログラム。
［２］
ユーザによって選択された、前記第１プログラムリストと前記第２プログラムリストとのうち何れか一方の任意の行の情報を取得することと、
前記第１プログラムリストと前記第２プログラムリストとのうち他方の、前記選択された行に対応する行を示す表示を前記表示装置に表示させるためのデータを作成することと
を更にコンピュータに実行させるための［１］に記載のプログラム。
［３］
前記第１プログラムリストと前記第２プログラムリストとを左右に並べたときに互いに対応する行が左右に並ぶように、前記第１プログラムリスト又は前記第２プログラムリストの行間に空白行を挿入することと、
前記空白行が挿入された、前記第１プログラムリストと前記第２プログラムリストとを左右に並べて前記表示装置に表示させるためのデータを作成することと
を更にコンピュータに実行させるための［１］又は［２］に記載のプログラム。
［４］
ユーザによる操作に応じて、前記空白行を含まない前記第１プログラムリストと前記第２プログラムリストとを上下に並べて前記表示装置に表示させるためのデータを作成することを更にコンピュータに実行させるための［３］に記載のプログラム。
［５］
第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと
を実行する回路を備える情報処理装置。
［６］
第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと
を実行させるためのプログラムが記憶された記憶装置を備える情報処理装置。
［７］
情報処理装置、通信機器、及び、プログラム入力機器を備えるシステムにより実行される情報処理方法であって、
前記プログラム入力機器により、第１プログラムを入力すること、
前記情報処理装置により、
前記プログラム入力機器により入力された前記第１プログラムを取得することと、
前記第１プログラムを、前記第１プログラムに用いられているプログラミング言語と異なるプログラミング言語で記述され、前記第１プログラムと同等の機能を果たす第２プログラムに変換することと、
前記第１プログラムと前記第２プログラムとの互いに機能的に対応する行に、対応する符号を付することと、
前記符号が付された前記第１プログラムの第１プログラムリストと前記符号が付された前記第２プログラムの第２プログラムリストとを、表示装置に表示させるためのデータを作成することと、
前記通信機器へ前記データを送信することと、
前記通信機器の表示装置により、前記データを表示することと
を含む、情報処理方法。
【符号の説明】
【０１２２】
１０…システム、１００…電卓、１１２…ＣＰＵ、１１４…ＲＯＭ、１１６…ＲＡＭ、１１８…フラッシュメモリ、１２２…２次元コードエンコーダ、１３２…入力キー、１３４…液晶ディスプレイ、１９０…バスライン、２００…スマートフォン、２１２…ＣＰＵ、２１４…ＲＯＭ、２１６…ＲＡＭ、２１８…フラッシュメモリ、２２２…タッチパネル、２２４…液晶ディスプレイ、２３２…カメラ、２３４…通信装置、２９０…バスライン、３００…サーバ、３１２…ＣＰＵ、３１４…ＲＯＭ、３１６…ＲＡＭ、３１８…ハードディスク、３３４…通信装置、３９０…バスライン、４００…ネットワーク、６００…画面、６１０…第１プログラムリスト、６１１…行番号、６１２…命令文、６２０…第２プログラムリスト、６２１…行番号、６２２…命令文。
【図１】
2020170221.tif 000003
【図２Ａ】
2020170221.tif 000004
【図２Ｂ】
2020170221.tif 000005
【図２Ｃ】
2020170221.tif 000006
【図３】
2020170221.tif 000007
【図４】
2020170221.tif 000008
【図５】
2020170221.tif 000009
【図６】
2020170221.tif 000010
【図７Ａ】
2020170221.tif 000011
【図７Ｂ】
2020170221.tif 000012
【図８Ａ】
2020170221.tif 000013
【図８Ｂ】
2020170221.tif 000014
【図９】
2020170221.tif 000015
【図１０】
2020170221.tif 000016
【図１１】
2020170221.tif 000017
【図１２】
2020170221.tif 000018
【図１３】
2020170221.tif 000019
【図１４Ａ】
2020170221.tif 000020
【図１４Ｂ】
2020170221.tif 000021