• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンピュータのプログラムを書くに当たって)

プログラム中に使用する名前の型、属性、意味内容を明示する方法とは?

このQ&Aのポイント
  • 質問文章では、コンピュータのプログラムを書く際に使用する名前の型、属性、意味内容を明示する必要があるとされています。
  • 具体的には、プログラム中で使用する変数や関数の名前に関して、その型や属性、意味内容を明確に記述することが求められています。
  • このような明示的な定義は、プログラムの可読性を向上させるだけでなく、後からプログラムを理解しやすくするためにも重要です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#221368
noname#221368
回答No.6

 #5です。  一昔前のBASICですね。なるほど、これでは混乱しますよね。お書きのコード(プログラムの文章の事)には、一つの宣言文も含まれていません。でもBASICは、これでも動きます。  プログラミングの正式な作法では、xとかaaとか、決めた変数名に対して、必ず宣言を行うのが本来です。xやaaが数値を表す場合に限れば、宣言とは、xやaaが最大何桁の数値であるのかを、コンパイラーに教えているのと同等です。最大桁数は概ね標準化されていますが、言語パッケージによって事前に決まっており、桁数に応じてタグ名(まぁ、あだ名程度の意味です)が与えられます。例えば、次のように、   Dim n as Integer  上記においてnは変数名で、as IntegerのIntegerが、「整数」というタグ名で、タグ名の事を「型」と言います。お使いのBASICでは、恐らくIntegerは、2進数で15桁の符号付の小数点を含まぬ数値という事になると思います。これが問われている、型の属性と思います。属性情報は、言語マニュアルに必ず載っているので、ご確認下さい。ちなみに、DimはBASICでの宣言文の始りを表し、asは、変数名と型名の分離記号です。  という訳で、プログラムの計算処理部分を書く前に、必ずそこで使う変数は、宣言する必要が生じます。そうでないとコンパイラーは、どんな数値を演算するのかわからず、計算をマシン語に再構成できないからです。でもこれって、書く方にとっては煩雑ですよね。  そこで初期のBASICは(今でも出来ますが)、宣言文の省略を考えました。コンパイラーが変数の型を、文脈で判断できるようにしたのです。例えば、LET s=0が現れたら、整数0の代入だから、   Dim s as Integer に相当するマシン語を、その直前に自動で生成するといった具合です。そうすると無宣言変数sには何でも代入できるように見えるので、そのような変数をVariant型とかObject型とか呼ぶ事にしたのです。  最後に、今風のコードを挙げておきます。変数は使う前に、必ず宣言してるところに注意して下さい。InputのかわりにInputBox関数を使ってますが、意味は同じです。また現在ENDは不要です(使えるけど)。 Dim n as Integer = InputBox("積算範囲nを入力して下さい。nは1以上の整数。") Dim s as Integer = 0 For t as Integer = 1 to n  s = s + t Next t  老婆心ですが、プログラムは処理内容に応じて、意味の塊として改行等でブロック化し、ブロックの中身も、必要に応じて字下げすると間違いが減ります(For Nextループのように)。けっこう効果は絶大ですよ^^。Next文に、ループカウンターのtを明記するのも、同様な理由です。

SATA_YUKI
質問者

お礼

ありがとうございました。大変参考になりました。さらに、勉強します。

その他の回答 (5)

noname#221368
noname#221368
回答No.5

 #4さん、まぁ~いいじゃないですか。全くの無関係と言う訳ではないし、生え抜きのプログラマーやシステム屋って、こういう基礎的な(計算論的な?)事柄には、無頓着な事も多いです。なので、その板では的外れな回答もあり得ると思います。なので自分は、応えてみたいです。現在、プログラマー兼システム屋という事もありますが・・・。  まずPascal、C、BASIC、FORTRANが、なぜ疑似言語なのかわかりますか?。プロのプログラマーは、ふつうはそう言いません。これらは具体的な言語です。現場で言う疑似言語とは、これらの構文を説明用にさらに抽象化したような、シンボリックな書き方を言います。でもこれらを、疑似言語と言っても良い理由があります。  コンピューターのcpuは、マシン語しか読めないからです。マシン語は、cpuの機械構造に合わせた具体言語で、基本的にcpu依存です。cpuの電気回路がこう出来てるから、マシン語はこう書かなければいけない、と決まります。現在cpuの機械的規格はかなり標準化されているので、こういう事態は余り意識しなくて良いようになって来ましたが、Pascal、C、BASIC、FORTRANらが、cpuの機械構造に依存しない抽象的構文を持つ事は事実です。その意味でこれらは、具体的マシン語に対して、擬似言語と言えます。一般的には高級言語と言われます。色々異論はありますが、高級言語の定義は、次が妥当と自分は思っています。   ・高級言語とは、マシン(cpu)依存、ハードウェア依存でない言語。  なので低級(具体)言語の代表は、今でもcpu依存であるアセンブラです。では、機械構造に合わせて書かれていない高級(抽象)言語の文章を、cpuはいかにして読むのか?。それがコンパイラーの役目です。コンパイラーは高級言語の文章を、マシン語に翻訳します。高級言語は、どのようなマシンでも使えるように書かれるので、翻訳には最低限、高級言語の一連の定義や宣言が、マシン語のどのようなアドレス(名前)やバイト並び(型)とかに対応するのかの、情報を含める必要があります。  というわけで、   名前:変数名(アドレス)   名前の型;変数宣言   属性:変数宣言の内容=その変数のバイト並び=整数型とか実数型⇒高級言語では、組み込み定義されている   意味内容:その変数がどう使われるか?.これだけ前3者と違って、コンパイラーとは無関係。        でもこれが、アプリケーションとしては一番重要で、アプリケーションに関わる.   こんな処です。

SATA_YUKI
質問者

お礼

ddtddtddt様 詳細なアドバイスありがとうございます。お手数おかけ致しますが、確認させていただきたいことがございます。名前の型の「変数宣言」と属性の「変数宣言の内容」の違いが理解できません。 例えば、 100 INPUT n 110 LET s=0 120 FOR t=1 TO n 130 s=s+t 140 NEXT 150 END のような場合、変数はn,s,tの3つになりますが、それぞれの「名前の型;変数宣言」や「属性:変数宣言の内容」はどのようになるのでしょうか? 大変申し訳ございませんが、宜しくお願い致します。

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.4

[カテゴリー違い] 数学と何の関係もない質問。 このサイトの質問者には、 数学とパソコンの区別がつかない人が多過ぎる。 http://oshiete.goo.ne.jp/category/221/ へ!

SATA_YUKI
質問者

補足

alice_44様ご返答ありがとうございます。高校数学の問題で、最大公約数や最小公倍数、素因数分解、2進数への変換等のプログラムを書く問題の中で、今回のような「ただし書き(留意事項)」がありましたので、どうしてもわからず、数学のカテゴリーでよろしいのかと思い質問させていただきました。 大変失礼致しました。

  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.3

全くだめですね。 例 名前の型:A,B,n:整数 属性:A,B,n:単精度整数 意味内容:n:繰り返し回数のカウンター A:繰り返しカウンターの初期値      B:繰り返しカウンターの上限値  各行について:何をする行なのかの意味内容を書く たとえば 名前の型:整数型、実数型、論理型、複素型など 属性:配列(寸法や次元)、パラメータ(変数や定数)など 意味内容:変数がプログラム中で何を表しているかなど      (リンゴの個数、気圧、体積)     :プログラムの各行が何をしているかなど 参考URL(Fortranの場合) http://www.nag-j.co.jp/fortran/FI_4.html

SATA_YUKI
質問者

お礼

info22_様 大変参考になりました。さらに勉強したいと思います。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

この場合の名前とは、プログラミングの世界では通常「変数の名前」を意味します。ですのでBASICなら使う変数を事前に Dim N as integer ' FOR~NEXTのループ変数 と、こういう風に事前に「定義」しておくことを意味すると思うんですが・・・。

SATA_YUKI
質問者

お礼

FEX2053様 アドバイスありがとうございます。参考にさせていただきたいと思います。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

恐らく n:整数型:ショート8ビット:ループ制御変数・ループ1回ごとにカウントアップする と言った感じでしょう。

SATA_YUKI
質問者

お礼

ymmasayan様 アドバイスありがとうございます。参考にさせていただきたいと思います。

関連するQ&A