ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Javaの課題丸投げコミュのjava scriptの構造の説明

  • mixiチェック
  • このエントリーをはてなブックマークに追加
どなたかこのjava scriptを解読できる方いませんか?パソコン初心者にもかかわらず、間違えて上級者向けの講義を取ってしまい全く分かりません(;_;)ネットで調べてもなかなか調べたいものが出でこなくて...。
課題内容は【変数の使い方、処理の大枠、function使用の場合はその機能を説明して レポートにまとめなさい】といったものなんですが・・・。
「このサイトを見れば、このtagの説明載ってるよ」とかヒントでもいいので、教えていただけると幸いですm(__)mダメもとですが、ご協力お願いします。


<html>
<head>
<title>BIORHYTHM Curve</title>

<script language="javascript">

function bar(d23,d28,d33) {
var sp=new Array(41);
for (i=0;i<41;i++) sp[i]=" ";
sp[d23]="p"; // Physical
sp[d28]="s"; // Sensitivity
sp[d33]="i"; // Intelligence
space=""
for (i=0;i<41;i++) space=space+sp[i];
return(space);
}

function ymdprt(dd) {
yy = dd.getYear();
mm = dd.getMonth() + 1;
dd = dd.getDate();
if (yy < 2000) { yy += 1900; }
if (mm < 10) { mm = "0" + mm; }
if (dd < 10) { dd = "0" + dd; }
return (yy+mm+dd);
}

function plot(id,idd) {
xdd=idd*360/(id-1);
if (xdd>=360) xdd=xdd%360;
sinvid=Math.sin(xdd*Math.PI/180);
spcvid=Math.round(20*sinvid+20);
return (spcvid);
}

</script>
</head>

<body>
<pre>

<script language="javascript">

birthday=new Date(1957,10,16); //Birthday
ymd=new Date(2007,0,1); //Today
days=(ymd.getTime()-birthday.getTime())/1000/60/60/24;

s23=days%23;
s28=days%28;
s33=days%33;

document.write(" -1 0 1<br>");
document.write(" +....+....+....+....v....+....+....+....+<br><br>");

for (d=0;d<31;d++) {
document.write(ymdprt(ymd)," ",bar(plot(23,s23+d),plot(28,s28+d),plot(33,s33+d)),"<br>");
dx=ymd.getDate();
ymd.setDate(dx+1);
}
</script>

</pre>
</body>
</html>

コメント(9)

java script は java じゃないです。
間違えて上級者向けの講義を取ってしまったのなら、受講しなければ良いと思うのですが・・・?

一応参考までに

バイオリズム(Wiki)
http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%82%AA%E3%83%AA%E3%82%BA%E3%83%A0

とほほのWWW入門
http://www.tohoho-web.com/www.htm
>1
すみません。色々ありまして。。。

わざわざありがとうございますm(__)m
これって、実際に動かしてみましたか?

プログラムのコードを解析・理解するときは、
まずは、プログラムの目的を理解しましょう。

細かいところから追おうとすると、分かりにくいものです。

みたところ、バイオリズムか何かをグラフ化するプログラムのような気がするのですが、違いますかね?

1957年10月16日生まれの人の2007年1月時点のバイオリズム・・先生の生年月日なんですかね^^;
軽く見てみた感じ
サインカーブ描いてるっぽい

見た感じをざっとコメントすると
function bar(d23,d28,d33)
ある1行を返す.
例> i s p

function ymdprt(dd)
日付の調整.
2007年12月11日なら20071211みたいなのが出る

function plot(id,idd)
サインカーブ計算してるっぽい
多分i, s, pの位置を決めてる.
だからplot()で求めた値をbar()に渡してる.

見た感じ簡単です.
上でも言われてますけど値変えたりして動かせば分かると思います.
授業で習ったと思いますが, webブラウザで動かせます.
>祥さん、maruさん
コメントほんとにありがとうございますm(__)m
祥さんの言う通りです。。。ほんとは自分の誕生日のバイオリズムをサインカーブで作れっていう課題だったんですが、出来ないと先生に直訴したら、救済措置で構造の把握のレポートでいいからやってきなさいってことになったんです。

アドバイスをいただけたのは嬉しいんですが、実際に動かしても分からないです(;_;)
何かいいサイトご存知ないでしょうか?
function bar やymdprt plotとかの説明が載ったサイトとか探しても載ってないんですよね↓↓独特なやり方なんですかね?
barやymdprtやplotとかは、ご自身のプログラムで定義されたものです。
barとかplotとかはありがちな名前なので同じ名前の関数はあると思いますが、太郎とか花子並によく使われる名前なので名前が同じだからといって中身が同じとは限りません。

内容は独特という程のものじゃないです。
関数をざっと見た感じで説明すると・・・
bar、ymdprt、plot 、あと(適当な名前).htmlにして開いたときに実行される部分(メイン) (birthday=new Date(1957,10,16); //Birthday 〜ymd.setDate(dx+1); )に別れます。

そうそう、解説する前にjavascriptのどこが分からなくて、どこが分かるのかを自分で認識することが大事です。
それがわかってないと、下記の説明を読んでも、さっぱりだと思います。
まずは、自分が分からないのは何か?を認識してください。
・文法?
・作るべきプログラムの仕様?
・仕様が実現できるかどうか?
先に答えを見てしまったので余計分からなくなっているという可能性もあるので、よく整理してみましょう。

以下、概略です。
関数bar
これは、barに渡される3つの数字をもとに "p"、"s"、"i" を埋め込んでいます。
文字で作られたグラフの1行をつくっているのようですね。

関数ymdprt
開始日付から 日付を綺麗な形にしてますね。
2007年1月31日を、20070131 という形です。 y軸の表題桁数を合わせたいんでしょうね。

関数plot
渡された周期と、開始日からの日数から、それぞれのx軸の位置を判別しようとしてますね。三角関数をグラフに描くときどうするかを考えてプログラムを見てみましょう。

(メイン)
誕生日(birthday)とグラフを描く開始日(ymd)に値を入れて、上記3つの関数を駆使してグラフを書こうとしています。
%演算子とdocument.writeの意味が分かれば理解できると思いますよ。

あとは、プログラムの中をわかる範囲で変更したりして、どうなるか試してみましょう。
そのうち、わかる範囲がひろがって、全体がわかるようになりますよ。

上記のように理解するのは、細部から全体を理解するという手法です。
でも、一番速く、上級者に求められるスキルは全体から細部を理解するという能力なので、まずは、このプログラムの目的から、どうやって作ればいいのか?を自分なりに考えてみましょう。
プログラムなんて手でやってることを、自動化するだけのものなので、普段やってることの順番を整理できるか?が大事です。

では、頑張ってみてください。
xdd=idd*360/(id-1); ではなく、xdd=idd*360/id; が正解では?

マジックナンバー多いし、変数のスコープいいかげんだし、無駄な処理多いし、なんか素人くさいですね。
みなさんほんとアドバイス&ヒントありがとうございました☆なんとかレポート作ることが出来ました!!

ほんと感謝の一言に尽きますm(__)m

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Javaの課題丸投げ 更新情報

Javaの課題丸投げのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。