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

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

コンピュータのプログラムを書くに当たって

 数学のコンピュータの問題で、『プログラムは疑似言語、Pascal、C、BASIC、FORTRANのいずれかで書くこと。ただし、どの言語を使うにしても、プログラム中に使用する名前の型、属性、意味内容を明示しておくこと』とあります。  ここで、「プログラム中に使用する名前の型、属性、意味内容を明示」するとは何を意味しているのでしょうか?  私は、 ○名前の型 : BASIC ○属   性 : FOR n=A TO B              ~           NEXT n ○意味内容 : FOR文に指定された変数の値を順に変化させながらFOR行とNEXT行に挟まれた各行を繰り返し実行する のように、名前の型、属性、意味内容のことを捉えたのですが、このような考え方で宜しいのでしょうか?お手数おかけ致しますが、アドバイスの程宜しくお願い致します。

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

  • ベストアンサー
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% (7987/21355)
回答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

  • プログラムを捜しています

    昔コンピューターが開発された初期にFORTRANという プログラム言語があり、たとえば 1 FOR X=1 TO 5,1 2 Y=X^2+1 3 Print Y と入力すると、Y=X^2+1をX=1から5まで 1飛びに計算して  2, 5, 10, 17, 26 と出力することができました。これに相当する 方法は現在どうすればよいのでしょうか。 教えて下さい。

  • FORTRANプログラムについてお聞きします。

    仕事で1970年代にFORTRAN77で作られた技術計算(発電所の熱精算)プログラムを使っています。(私はプログラムは使っていても、作ったことのない、ほとんど素人です) このプログラムの規模として、総ステップ数が約60kステップ有ります。 このたび、このプログラムをMATLABに移植することになりました。 移植の理由は、FORTRANそのものが古い言語で、機能拡張などのメンテナンスを依頼しているソフト会社には、FORTRANの分かるエンジニアがいなくなったこと、だそうです。 (MATLAB使用は会社の指示です) そこでお聞きしたいのは以下の点です。 1.FORTRANとは、そんなに古い言語になってしまったのか? 2.MATLABはある精度内で収束するように繰り返し計算するようなプログラムに向いているのか? 3.MATLABのネット記事のほとんどが大学関係者ばかり。企業では使われていないのか?だとしたら、その理由は? 4.MATLABの利点と欠点を述べた記事などがあったら紹介して下さい。 宜しくお願いします。

  • FortranプログラムからC言語で実装された関数を呼ぶ方法

    Windows Vista Home PremiumにFTN95をインストールしたPCにて、Fortranのプログラミングをし始め、「Cpad for Salford FTN77」を利用してプログラミングをしています(FORTRAN77・Fortran90ともに)。FTN95でのFortranプログラミングに際し、FortranプログラムからC言語で実装された関数を呼ぶには、どのように対処すれば可能になりますでしょうか?何分初心者ですので、拙い質問かと思いますが、何卒ご教示願います。

  • FortranでCSVファイルを読み込む方法

    fortranでこのcsvファイルのE列、F列の5行目から14行目まで読み込んで、それぞれの平均を求めるまでのプログラムを書かなければならなくなったのですがどのようにすればよいのでしょうか。 行、列の読み飛ばしの仕方が分からなくて困っています。 また、読み飛ばし以外の方法でもできるのであれば教えてください。 プログラム言語はfortranが初めてです。よろしくお願いします。

  • プログラム言語FortranとCの違いについて

    FortranとCの相違点ですが、言語仕様という意味ではなく、置き換えが効かない、すなわち片方にはあるが片方にはない、という違いについてお尋ねします。 それはビット演算ということです。私はあるプログラム集の説明を見ていて、”この仕事はビット演算なのでC言語です。それ以外はFotranです”とありました。Fotranではビット演算ができない、ということを言っているように感じました。実際、Fortranでは無理なのでしょうか。できるけど面倒な処理になるという意味ではなく、できない、ということでしょうか。C言語のようなビット処理は。 よろしくおねがいします。

  • ハノイの塔のプログラムの疑問点

    ハノイの塔のプログラムについて調べていて http://www.kernelthread.com/hanoi/ というサイトを見つけいくつかの言語でのソースを見ていたら、pascalのところで疑問がある箇所がありました。 writeln('move ', Tfrom:1, ' --> ', Tto:1); というところです。実行すると「move1-->3」など円盤の動きがわかりましたが、ここの「 :1 」という記述の意味がわかりません。 ここの意味を教えてください。

  • Cのプログラム上でDiffを使いたい

    Visual Studio2005 WindowsXP 上でプログラムを作っています。 使用言語はC言語です。 プログラム上でDiffを使いたいのですが、Cygwin等にあるような Diffを使うことは可能なのでしょうか? やりたいこととしては、 2つのファイルのDiffを行って、 挿入、削除された行の行番号を取得したいと思っています。

  • Fortran "実引数の型が仮引数の型と異なります。"

    Fortran "実引数の型が仮引数の型と異なります。" Intel Visual Fortranの最新版をMS Visual Studio 2008で使用(お試し)しています。 既存のFortranプログラムでエラーが出て、使えなくなりました。 問題点を要約すると以下のようなシンプルなコードに集約されました。 ---------------------- 00 program main 01 call sub1(10.d0) 02 call sub1(10.0) 03 end ! ---------------------- 04 subroutine sub1(rr) 05 real*8 rr 06 write(*,*) 'rr = ', rr 07 end subroutine ! --------------------- 昔のFortranでは、Subをcallする時に、仮引数の型と厳密に一致していなくても、うまく処理してくれたと思います。(倍精度でも整数でも、同じ数値とみなして) オプションのルーチンインターフェースのチェック(/warn:interfaces)をオフにすると、コンパイルは出来るようになるのですが、上記プログラムの計算結果は、01行と02行で結果が異なってきます。 (02行はおかしな値が入る) 本来、ランタイムエラー防止の観点からは、このような厳密性を要求するのは良いことだと思いますが、既存のプログラムが実行できなくなるのは痛手なので、何かオプションの変更で対応出来ないものでしょうか? よろしくお願いいたします。

  • fortranのコメントアウト

    fortranで書かれたプログラムをせこせこ勉強しているのですが、普通に C と書かれた行のほか、 CTK CTF とコメントアウトされている行があるのです。このCTKやCTFはfortranの世界でなにか通例使用されているやりかたなのでしょうか?それとも私の見ているプログラムが特異なのでしょうか? もしfortranのプログラマーはこれこれこう言う理由でこんな使い方をする、というものであれば教えてください。

  • 以下の言語の初心者用のページとかありませんか?

    現在以下の言語で共通プログラムを作成中です BASIC VisualBASIC C Pascal Fortran Java Perl で価格,預り金を入力するとそのおつりと紙幣・硬貨の各枚数を表示するプログラムを作成中です。 BASICは簡単だしVB,Cは多少やっていたのでわかるんですが、他の言語がさっぱりです・・・ 参考になるページがありましたら教えてください。 また上のプログラムのサンプルなどがありましたらかなりうれしいです・・・ ちなみに配列・SelectCaseを使って作成しています。