プロが教える店舗&オフィスのセキュリティ対策術

#include "CScreen.h"
#include <math.h>
//定数定義
#defineLAST_PAS_X(30)
#define PI 3.1415926f
#define HI 0.035f
//メイン関数
//引数なし
//戻り値なし
void main(void)
{
float sam=PI;
float jim,zak=0,dom=12;
int x=40,y=12,X,Y;
CUROFF();
for(jim=1.0f;jim<dom;jim+=HI)//ループ開始
{
X=(int)(x+cos(zak)*jim*2);
Y=(int)(y+sin(zak)*jim);
LOCATE(X,Y);
COLOR(rand()%7+1);//色の処理
{
printf("**");//**入力
}
WAIT(10);
zak+=0.1F;
while(zak>=sam*2)//*ループ
{
zak-=sam*2;
}
}//ループ終了
LOCATE(1,24);
}

このプログラムの変数名をハンガリアン記法で変えたいんですがよくわかりません。
教えてください。

A 回答 (3件)

ハンガリアン記法はネームスペースの消費制約を気にしなくてすむようになった時代の産物です。



基本目的は、英単語で関数名、変数名などをつけ、他人がソースコードを読んでも意味をとりやすくするところにあります。関数名はリターン値のデータ型を先頭に加え、変数名はデータ型を先頭に加え、いちいち宣言を参照しなくてもデータ型がわかるようにするのもソースコードの可読性をあげます。

提示のプログラムの場合、変数名の先頭にデータ型を加えることになります。どういう表記形式にするかは職場または学校が採用しているコーディング規約に従ってください。iX intX i_x int_xなど表記のしかたがあります。

変数名はふつうスペルミスや略記なしの英単語を使います。これは海外技術者とのチーム開発や引き継ぎがふつうになってきている以上、なおさら重要になります。ローマ字での命名は同音異義語の問題、ヘボン式訓令式など表記の不統一の問題があり可読性を低くしたり検索性を悪くするするもとになりやすいです。提示のプログラムでは、sam zak jim domが何の意味か書いた当人にしかわからないような気がします。
    • good
    • 0

ハンガリアン記法とは、変数の意味や型名を接頭語、接尾語として、変数名に付加して表記する表記法の事です。



意味を付加する表記法を、アプリケーションハンガリアン、型名を付加する表記法をシステムハンガリアンと言います。

例えば、通貨の名前など「意味」を付加した

int DollerTotal; //米ドル
int YenTotal; //日本円
int WonTotal; //韓国ウォン

はアプリケーションハンガリアンです。

例えば、型名の頭文字を付けた

float f_sam,d_sam; //f_はfloat型
double d_zak; //d_はdouble型
int i_jim,i_zak; //i_はint型

は、システムハンガリアンです。

もちろん、システムハンガリアンとアプリケーションハンガリアンを同時使用する事もあります。

ご質問のプログラムは、変数名が、変数の内容とは無関係に、適当なモビルスーツの名前などで命名されているので、ハンガリアン記法になっていないのです。

なお、一部の変数名は、x、y、X、Yなど、意味ある変数名っぽいですが「X座標、Y座標と言うのは判るが、何の座標なのか判らない」ので、中途半端なハンガリアン表記です。

なので「この変数は、何を意味する変数で、どんな型なのか」を把握し、その変数の意味や型に合わせて、変数名を変えればハンガリアン表記になります。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2011/11/16 21:13

何のためにハンガリアンに変えるのですか?



多分、プログラムを身につけるために、上司にでも頼まれたのでしょう

非常に簡単な、C言語の文法書を読みながら変数を見つけてください。
そしてあっているかどうかの質問ならイクラでも誰でも答えることでしょう。

貴方のためにも、貴方の家族のためにも、貴方の職場か学校での周りの人のためにも。

http://www5c.biglobe.ne.jp/~ecb/c/c00.html

ちなみに、プログラムの下記の部分より上は、気にしないで良いです。

void main(void)

以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2011/11/16 21:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!