goo blog サービス終了のお知らせ 

 ■ 一人綴り

イロイロやってますが、停滞中。(モノが出来たらアップする感じですから...。)更新はしますが数が減るかも。

【 Infomation 】


【 F1GP 2017 最終戦:アブダビGP 今日から開催中 】

■ F1GP 2017 最終戦:アブダビGP
【 11月24日(金) 】   ■ フリー走行1回目 【 リザルト 】     セバスチャン・ベッテル選手(フェラーリ)   ■ フリー走行2回目 【 リザルト 】     ルイス・ハミルトン選手(メルセデスAMG) 【 11月25日(土) 】   ■ フリー走行3回目 【 リザルト 】     ルイス・ハミルトン選手(メルセデスAMG)   ■ 公 式 予 選 【 リザルト 】     バルテリ・ボッタス選手(メルセデスAMG) 【 11月25日(日) 】   ■ 決     勝 【 リザルト 】     バルテリ・ボッタス選手(メルセデスAMG) (*)メルセデスAMGがコンストラクターズ    タイトル、ルイス・ハミルトン選手(    メルセデスAMG)がワールドタイトルを    獲得しています。
【 今シーズンのレースカレンダー 】 【 今シーズンのチーム&ドライバー 】  


 SUPER-GT 2017年シーズン終了。  GT300はグッドスマイル初音ミクAMGが  タイトル獲得、GT500はKeePer TOM’S  LC500がタイトル獲得となりました。
【 Super GT Round 8 ツインリンクもてぎ 】


【 11月11日(土) 】


  〇 公式練習
 
■ GT300 【 リザルト 】 

  4 グッドスマイル 初音ミク AMG
    Mercedes AMG GT3 / M159

    谷口 信輝選手
    片岡 龍也選手
 

■ GT500 【 リザルト 】

  37 KeePer TOM'S LC500
    LEXUS LC500 / RI4AG

    平川 亮選手
    ニック・キャシディ選手



   〇 予選Q1【 リザルト 】

  ■ GT300

   【4】グッドスマイル 初音ミク AMG
      Mercedes AMG GT3 / M159

      谷口 信輝選手
      片岡 龍也選手

  ■ GT500

   【46】S Road CRAFTSPORTS GT-R
      NISSAN GT-R NISMO GT500 / NR20A

      本山 哲選手
      千代 勝正選手




   〇 予選Q2 【 リザルト 】

  ■ GT300

   【4】グッドスマイル 初音ミク AMG
      Mercedes AMG GT3 / M159

      谷口 信輝選手
      片岡 龍也選手

  ■ GT500
   【23】MOTUL AUTECH GT-R
      NISSAN GT-R NISMO GT500 / NR20A

      松田 次生選手
      ロニー・クインタレッリ選手


【 11月12日(日) 】
 

   〇 決  勝

  ■ GT300【 リザルト 】

   【65】LEON CVSTOS AMG
      Mercedes AMG GT3 / M159

      黒澤 治樹選手
      蒲生 尚弥選手


  ■ GT500【 リザルト 】
   【23】MOTUL AUTECH GT-R
      NISSAN GT-R NISMO GT500 / NR20A

      松田 次生選手
      ロニー・クインタレッリ選手


(*)GT300はグッドスマイル初音ミクAMGが
   タイトル獲得、GT500はKeePer TOM’S
    LC500がタイトル獲得となりました。
 

【 今シーズンのレースカレンダー 】

【 今シーズンのドライバー&チーム 】








■ 交通情報などのリンク
http://blog.goo.ne.jp/kay-nea_l-u
e/8f3d1b94262f05bfe2eee971786294f0

【 最近アップした動画 】

【 差し替え 】Power Director 10 Ultraの2D-3D変換してみた。

■ JavaScript(その3)

2017年01月18日 | プログラミング

 とりあえず、現状において、sumahoge-muya WEBもそう

なんですが、意外と使える部分が多い、JavaScriptについて

再び触れておこうかなと思います。

 

 とりあえず、HTML5.0になって、キャンバス要素が登場した

ので、CSSと組み合わせると色々できるようになっており、結構

変わっているのですが、WEB GLも含めてWEBで使うJavaS

criptの用途も結構広くなった気がします。

 

 あと、Unityや2Dゲーム開発環境のCocos 2DXや別のエ

ンジンでもJavaScriptベースのモノもありますから、選択肢と

して存在しています。

 


【 オブジェクト 】


 

 オブジェクト指向言語と言うのはそれに対して処理を行う

事でプログラムが成立しているので、従来のBASICのような

手続き型のモノとは異なります。この種類ですが、

 

├● 数値(Number)

├● 文字列(String)

├● 真偽値(Boolean)

├● 配列(Array)

├● 数学関数(Math)

├● 日付(Date)

├● 関数(Function)

├● 正規表現(RegExp)

 

● ウィンドウ(Window)

 ├● ナビゲーター(Navigator)

 │├● プラグイン(Plugin)

 │└● MIMEタイプ(MimeType)

 ├● フレーム(Frame)

 ├● イベント(Event)

 ├● ヒストリ(History)

 ├● ロケーション(Location)

 ├● スクリーン(Screen)

 

 ● ドキュメント(Document)

  ├● レイヤ(Layer)

  ├● 画像(Image)

  ├● リンク(Link)

  ├● アンカー(Anchor)

  ├● アプレット(Applet)

  ├● フォーム(Form)

  │├● テキスト(Text)

  │├● パスワード(Password)

  │├● ファイルアップロード(File)

  │├● 隠し部品(Hidden)

  │├● テキストエリア(Textarea)

  │├● チェックボックス(Checkbox)

  │├● ラジオ(Radio)

  │├● ボタン(Button)

  │├● サブミットボタン(Submit)

  │├● リセットボタン(Reset)

  │└● セレクト(Select)

  │ └● オプション(Option)

  └● エレメント(Elements)

   └● スタイル(Style)

 

 

となっています。見ての通りウインドウやフォームもそうですが、

CSSまで対応してるので、本当に多岐にわたってコントロール

が出来る訳です。

 

 つまり、これが、オブジェクトであり、型(クラス)になります。

 

 構文については、ここで既に出ていますが、

 

 オブジェクト名メソッド名パラメータ

 

と言う書式があります。例えば、

 

 Window.alert(" Hello World ");

 

などがそれです。つまり、それぞれのウインドウには、メソッド

でコントロールが可能になっており、それを行うパラメーターが

存在しています。つまり、

 

 ■ メ ソ ッ ド : 動作

 ■ パラメーター  : 値

 

という関係性です。これとは別に、オブジェクトにはプロパティー

が存在し

 

 オブジェクト名プロパティ名 

 

と言う書式になります。

 

 navigator.appName

 

などがそれになります。これを使う場合ですが、

 

 Window.alert(" ”+navigator.appName+" ");

 

 などになります。

 

このオブジェクトに対しての

 

 ■ メソッド

 ■ プロパティー

 

 

がそれぞれ存在し、結構な数があるのでそれを覚える必

要があります。

 

 

 あと、書式ですが、

 

 a=10;

 b=10;

 C=a+b;

 document.write(C);

 

と言う処理があったとします。これは代入と演算と表示ですが、

この一連の流れを文と呼びます。

 

 あと、処理において何をしているのかが解りにくいので、チェッ

クサム用として、コメントをつけることもできます。BASICはREM

で、'を使うのですが、これは、

 

/*

* コメント

*/

 

のような感じで使います。行がまたがる場合はそうなんですが、

1行だと

 

//コメント

 

になります。

 

【 使用例 】

 

*/

*代入した数値を演算し表示するプログラム

*/

 

 a=10; //aに10を代入

 b=10; //bに10を代入

 C=a+b; //a+bの結果をCに代入

 document.write(C); //Cの数値を表示

 

と言う感じです。

 


呼び出しと実行


 

 以前も書きましたが、JavScriptをヘッダーに書いた場合、

 

 <SCRIPT>タグ

 

で呼び出します。記述ですが、

 

<script type="text/javascript">
<!--
window.alert("Hello World");
// -->
</script>
 
で呼び出せます。ちなみに、古いブラウザの場合だと
 
<script language="JavaScript1.2">
<!--
document.write("Hello World");
// -->
</script>
 
のような記述になりますが、1.2辺りの記述になります。
 
最初に書いた、"text/JavaScript" が4.01なので、
基本的にこっちが現行の記述になります。
 
ちなみに、 4.10では
 
<html>
<head>
<title>JavaScript Sample</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
 
 
とヘッダーに書くように指定されています。
 
 こうした呼び出しは、ヘッダー記述だけでなく、外部呼出しも
可能で、外部スクリプトをHTMLから呼び出す事が出来ます。

 

【 サンプル 】

 

■ SAMPLE.js

 
function sample() {
    window.alert("Hello World");
}

 

 

■ SAMPLE.html

 

<html>
<head>
<title>JavaScript Sample</title>
<script type="text/javascript" src="SAMPLE.js">
</script>
</head>
<body>
<form>
<input type="button" value="OK" onclick="sample()">
</form>
</body>
</html>

 

 

とすると、外部読み込みができます。とりあえず、呼び出しに

関連する部分を色違いにしてみたのですが、これでどういう

方式か理解できるのではないでしょうか?つまり、ボタン側

でクラスを呼び出して、ヘッダー側でファイルを呼び出してい

る状態です。この方式を使うと、処理が個別で大丈夫なモノ

を別に分ける事が可能になりますが、複数のモノを読み込

む場合には、

 
<script type="text/javascript" src="SAMPLE.js">
 <script type="text/javascript" src="SAMPLE1.js">
 
 
のように二つ記述する事になります。
 
 
 JavaScriptでは、マウスアクションなどにも対応しており、
 
 OnMouseOver
 OnClick
 
などがありますが、
 
<form action="#">
<input type="button" value="CLICK HERE!"
   onclick="window.alert('Hello World')">
</form>

 

のような記述をすると、マウスの処理と同時にダイアログが

表示されます。

 

 当然、

 

<form action="#">
<input type="button" value="CLICK HERE!"
   onclick="window.alert('RETURN TOP PAGE')" a hr
 ef="index.html">
</form>
 

のようなこともできます。あと、ハイパーリンクにダイレクトに

記述する方法もあり、

 

<a href="javascript:alert('Hello World')">
 <img src="button1.gif">
</a>

 

という事もできます。

 


条件分岐


 

 IF文になるのは、多くの言語で共通なんですが、やはり

構文はそれぞれ異なり、Pythonでは

 

 IF  条件式 真の処理 偽の処理

 

だったのですが、JavaScriptでは

 

 if (条件式) {処理1} else {処理2}

 

となっています。つまり、

 

 if (a<1){

 document.write("Aは0以下");

 }else{

 document.write("Aは1以下");

  }

 

と言う感じの構文になります。また、

 

if (条件式) {処理1} elseif (条件式) {処理2}

 else{処理3}


というのがあり、

 

if (X < 5) {
    alert("未満");      
} else if (X > 20) {
    alert("超過");         
} else {
    alert("基準値");      
}

 

のようなこともできます。条件式ですが、これに比較で出てくる

超過・以上・同一・以下・未満(>・>=・=・=<・<)のような

ものだといいのですが、こうした条件分岐には、比較演算子が

登場します。

 

 

 

 

【 比較演算子 】

 

■ a<b

  ・ aがb未満だと真、以上だと偽

 

■ a=<b

  ・ aがb以下だと真、超だと偽

 

■ a>b

  ・ aが超だと真、以下だと偽

 

■ a>=b

  ・ aがb以上だと真、未満だと偽

 
 
と、ここまでは問題がないと思います。単なる比較ですから。
特殊なのはここからで、

 

■ a==b

  ・ aがbと等しいだと真、等しくない場合だと偽

    (*)a=bとは異なる

 

■ a!=b

  ・ aがbと等しいだと偽、等しくない場合だと真

 

■ a===b

  ・ aがbと等しいだと真、等しくない場合だと偽

     (*)ただし、文字列と数字の比較の場合偽になる。
 
      123=="123" => 真
      (暗黙に変換するので真になる)
 
      123==="123" => 偽
      (文字と数値を区別するので偽)

 

■ a!==b

  ・ aがbと等しいだと偽、等しくない場合だと真

     (*)ただし、文字列と数字の比較の場合真になる。
 
      123!=="123" => 偽
      (暗黙に変換するので偽になる)
 
      123!==="123" => 真
      (文字と数値を区別するので真)
 

■ a&&b

  ・ aが真でかつbも真のとき真

       if((x==0)&&(y==0))alert("true"); 

          ・・・xyともに0のとき

      

■ a||b

  ・ aが真またはbが真のとき真

    if((x==0)||(y==0))alert("true"); 

    ・・・xyいずれかが0のとき

 

■ !a

  ・ aが真でなければ真


    if(!(x==0))alert("true"); 

    ・・・xが0以外のとき

 

■ a?b:c

  ・ aが真であればb、偽の場合はcを代入する

    tx=(x<10)?"小さい":"大きい"; 

    ・・・xが10未満なら「小さい」、10以上なら「大きい」

 

 

のようなのがあります。条件式において、数値の比較で

 

 ===や!==は数字か文字かという厳格な審査をして判

断するので、条件を絞る場合に使え酢ですが、こんな感じの

処理があります。

 

 


 

 とりあえず、今回はオブジェクトとには、実行するメソッドと数値である

パラメーターが存在しており、処理がされていることと、プロパティーも存

在している事や、それを使った構文お呼び出しにヘッダー記述だけでなく

アクションに対してのリアクションをするようなタグ挿入型と外部呼出しに

ついて触れました。基本的ンいオブジェクト指向の言語は、このオブジェ

クトとは別に任意に型(クラス)を構築できるのですが、それが、

 

 Function クラス名()

 

で宣言されるものになります。こうしたものに、メソッドやパラメ

ーターを加えた物を追加し構文する事になるのですが、その中

において、今回は、条件分岐のIFに振れました。条件におい

ては二者の比較においても一般的な比較では見かけない手法

も存在していますが、大小の対比と論理延安以外の者もその

中にあるわけです。

 

 前回forループについて触れましたが、これに関しては、

do while などがあるので、この辺りについてforのループも

含めて次回振れようかなと思います。

 

 

 

 

 

 

 

 

 

 

 

 


■ JavaScript(その2)

2017年01月17日 | プログラミング

 とりあえず、前回は、

 

 【 ユーザーの文字列の入力待ち 】

 【 HelloWorldのような表示 】

 

と演算による差異や変数についてグローバル変数とロー

カル変数について書きました。これは3DCGのグローバ

ル座標とローカル座標の関係に似ているのですが、グロ

ーバル座標と言うのは、絶対ていな原点からの座標なので、

そこから【 X=X+1 】とすると、原点ベースで動くのです

が、これがローカル座標参照だと、そのオブジェクトの重

心から【 X=X+1 】の処理をします。つまり、同じX座標

において同じ移動距離であったとしても、原点を主体とした

固定されている物(つまり、これについては不変なモノ)と、

オブジェクト座標ベースで他のオブジェクトとは異なる個別

の座標が存在します。つまり、オブジェクトの重心が、仮に

 

 X=5の場所にあったとします。その場合に+1をすればX

の数値は6になりますが、オブジェクトの同じXでも結果が異

なる訳です。

 

 これと同じように、

 

【 プログラム内で存在する共通して利用する変数 】

 

というのは、絶対的な変数ですから、そうした構造にするとそ

れが登場する場所ではそれを準拠にするのでわかりやすい

訳ですが、こうしたものがグローバル変数に該当し、そうでは

なく、個別のオブジェクト(JavaScriptの場合は、Functionの

ハッシュで包含されたもの)に包含される

 

 【 var 変数名=数値 】 

 

がローカル変数に該当します。つまり、グローバル座標のXを

基準に動くもののの場合、回転運動だとすれば、その距離を

半径とした周回軌道になりますが、これが、オブジェクトの重

心で存在する座標であった場合その回転有働は、公転運動

ではなく自転運動になります。

 

 これと同じようにグローバル事変数でX=100と指定された

ものがあったとして、これとは別に、

 

 functuin sample()

 

  {

    ver x=10

  };

 

とした場合、Sample()だとX=10が反映されるわけです。

 


アレイと言う概念


 

 以前、BGEを使ったゲーム制作の時に、

 

 【 オブジェクトを発生する仕様にして配置してそれを

   個別に割り当てると作業しやすい 】

 

というのを書きましたが、個別のオブジェクトを割り当てて

それを発生させるような仕様にした場合、その管理は、数

値で行えます。

 

 例えば、仮に、画像で考えたとしましょう。その場合、

 

 "画像の名称"+a+".jpg"

 

と言う表記にした場合、数値の違いで異なる画像を呼び

出せるのですが、4種類の画像があったとして、これを配

置した時に

 

 111111111111111

 113344444444441

 112244422113331

 112211331111221

 112211114441221

 113344444444441

 112244422113331

 111111111111111

 

的に並べて配置するとします。その場合、これの一括管理

が出来たほうがいいと言うのは理解できると思います。ち

なみに、ドット絵のゲームの時代からこういうパターンでモ

ノを配置させる考え方は存在するので、昔からある手法な

んですが、ここに伽rクターのタイルとして用意したオブジェ

クトを張り付ければマップになるという事です。

 

 あと、変数の呼び出しですが、個別に呼び出すと大変な

ので、一括でまとめたh所状態で呼び出したほうがいい場合

もありますが、そうした場合に使うのが、Arrayです。

 

 JavaScriptでもPythonで見かけるような

 

 配列名 = [ 1,2,3,4 ]

 

のような記述は出来るのですが、これは省略形で、

 

 a=new array();

 a[0]=1;

 a[1]=2;

 a[2]=3;

 a[3]=4;

 

と記述する方法と、引数にそのまま記述して

 

 a=new array(1.2.3.4);

 

とする方法があります。しかし、この記述方法によくにた

もので、

 

 a=new array(4);

 

と言う単一の数字を入れた場合があるのですが、この記

述の場合、

 

 a[0];

 a[1];

 a[2];

 a[3];

 
 
を作成するという意味であって、  【 a[0]=4; ではない 】
ので注意が必要です。
 
 

 基本的にデータを格納するアレイを作る場合ですが、これは、

Pythonなどと同じく

 

 a=[1,2,3,4];

 

とすればよく、a[0]=4と同じ状態だと

 

 a=[4];

 

と単数を指定すればそれになります。

 

あと、アレイですが、

 

 a=[ 1,"sample",2,"code" ];

 

のように文字列と数字の双方を格納できます。

 

とりあえず、最初の構造物と同じですから、基本的に

 

a[0]を呼び出せば指定されたそれが呼び出される

仕組みになっています。

 


ループを使った処理


 

 これは、BASICの

 

 for 条件 netx ~

 

の処理と同じですが、JavaScriptでは全く記述が異なり

ます。JavaScriptでは、

 

 for (初期値;繰り返し条件;数値の加減法);

 

  {

    処理の方法     

 

  }

 

と言う構文になります。つまり、BASICインタプリタなどでは、

 

10 for i=0 to 20

20 Print i

30 next

 

のような感じで、for文はnext出戻りループする仕様でしたが、

JabvaScriptはは最初の引数に包含されたものをそのまま実

行する仕様で、その処理をハッシュで囲むような状態になって

います。とりあえず、上記の処理を、JavaScriptで行う場合に

は、

 

 for(i=0;i<21;i++)

 {

   document.wite(i)

 }

 

となります。当然、SCRIPTタグで囲む必要性があり、ヘッダー

に書き込むことが大前提になります。

 

 とりあえず、アレイと組み合わせると

 

 a=[ 1,"sample",2,"code" ]; 

  for(i=0;i<4;i++)document.write("a["+i+"]="+a[i]+"<br>");

 

とすると、

 

 a[0]=1

 a[1]=sample

 a[2]=2

 a[3]=code

 
 
 が表示されます。

 


数式


 

 前回、四則演算と論理演算などが存在する事について書きま

したが、あれのみで中学校レベルで学ぶ数式を構築すると絶望

的な事になりますが、流石に購入言語ではそんな末期な状態に

はなっていません。

 

 低級言語であるハードウェア寄りの処理の場合だと、ビット演

算で処理うするのでその振る舞いをしたかったらプログラミング

して作りましょうと言う世界なんですが、それと比べれば相当親

切な状態になっています。

 

 こうした複雑な演算の実装は、どの開発言語でも同様に実装

されているので、VBの学習の前に覚えると複雑な部分を後で

覚えれば大丈夫なのですんなりは入れて、C#も命令自体は

似ているので、ソレに付加したh時内容を覚えていけば習得で

きるようになっているSmallBASICでも実装されています。

 

 とりあえず、その実装されているモノについて触れておこう

かなと思います。

 

 これについては、

 

 Math.関数名

 

で呼び出せるのですが、Document.Witeのような書式で、

これもメソッドでコントロールできるのですが、

 

 ■ ABS() : 絶対値を得る

 

【 三角関数 】

 

 ■ sin() : サイン

 ■ cos() : コサイン

 ■ tan() : タンジェント

 ■ asin() : アークサイン

 ■ acos() : アークコサイン

 ■ atan() : アークタンジェント

 

のようなものや、

 

 ■ pow()  : べき乗を得る 

 ■ sqrt() : 平方根を得る

 ■ Round() : 整数に四捨五入する

 ■ celi() : 整数に切り上げる

 ■ floor() : 整数に切り下げる

 ■ log() : 対数を得る

 ■ random() : 乱数を得る

 ■ atan2() : XY座標から角度を得る

 ■ exp() : eの累乗を得る

 ■ max() : 比較して大きいほうを得る

 ■ min() : 比較して小さいほうを得る

 

などがあります。引数の存在しない定数型だと、

 

 ■ E : eの値を得る

 ■ LN2 : 2の自然対数を得る

 ■ LN10 : 10の自然対数を得る

 ■ LOG2E : 2が底のeの対数を得る

 ■ LOG10E : eの常用対数を得る

 ■ PI : 円周率を得る

 ■ SQRT1_2 : 2の平方根の1/2を得る

 ■ SQRT2 : 2の平方根を得る

 
 
などがあります。とりあえず、学校での学習だと、円の面積

は、【 πr 】ですが、現実世界だと直径は出せても半径

を出すのは難しいので製造に追い得ては、【 (πD/4 】

を用います。そうなると、数式も

 

 D=10

 pi=Math.PI

 X=(pi*D^2)/4

 document.write(x)

 

でそれが出せる事になります。つまり、そうした数式を入力

を用いて作れば計算機になるので、JaaScriptで演算をす

るというのはそれほど難しい物でもなかったりします。

 

 例えば、三角関数だと、

 

 底辺 : X

 高さ : Y

 斜辺 : 2cm

 

とした場合、角は60度で、あるので、

 

  X=2*(cos 60°)

  Y=2*(sin 60°)

  

となります。というか、正三角形を分断したものだと底辺は

計算するまでもなく1cmなんですが、基本的にそうした縛り

がない場合はそうした算出方法になります。

 

 こうした数式も構築できますし、IntegerではなくLongな

やFlotなどを使った場合に、浮動小数点が発生した場合の

処理も整数処理しなくてはならない場合に、その選別方法

が選択できるわけです。

 

 ちなみに、

 

 H=20  //高さ

 D=10  //直径

 pi=Math.PI  //円周率

 X=(pi*D^2)/4  //円の面積

 Y=((pi*D^2)/4)*H  //円柱の体積

 

 document.write(x+<br>)

  document.write(Y)

 

な感じで、数式を構築しそれを算出できます。つまり、戻り

値を内部処理で指定できることになります。ちなみに、コレ

を1/3にすると円すいの体積になります。

 

 円周率があるという事は、当然nラジアンを指定できま

すし、数式によって数値の推移をコントロールもできるの

でそうしたアルゴリズムの構築も可能です。ちなみに、グ

ラフにしてみると三角関数と言いうのは面白い動きをする

のですが、自然界における波形と言うのはサインカーブ

で、音についてもアナログ波はサインカーブを描きます。

 

 これはオシロスコープで確認できるのですが、サイン

波、コサイン波、タンジェント波というのは理科で出てき

そうな気がするかもしれませんが、これは、シンセで音

を作る時の波形でフツーに存在しているので、理科を

学ぶと世の中では存在していないものと言う訳ではあ

りません。

 

 もーっしょんまで数式で作る場合の用途ですが、放

物線を描く動きをさせる場合にはサインカーブでの動き

を作る必要があるので、関数を用いたモーションを作る

必要が出てくるわけですが、ゲームで放物線を描くスプ

ライト処理などはそうした関数に基づく動きになっていま

す。

 


 

とりあえず、こうして見てみると、数式を用いて何かを作

るとしても、数学で出てくるようなものがあるわけですが、

見ての通り、命題に該当するビット演算や学校で習う数

式なども発生します。ただだ、複雑な数式の構築のため

に必要な基礎的な関数の実装と数s期の構築は可能な

ので、それを実装した戻り値として呼び出すという事は前

述の数式構築で理解できると思います。

 

 とりあえず、条件分岐についてですが、これは少し長く

なりそうなので、次回書こうと思います。また、他の言語で

も存在する

 

【 ForループとIF文の複合 】

 

である、Whileなども実装されているので、そうしたモノを

使うと今回のような累積で呼び出すとか繰り返しで処理を

するなどのものとは別に条件分岐が出来るようになります。

 

 ちなみに、forループですが別の言語でも実装されてい

るようにbrakeでループを止めるコトが出来ます。

 

 

 


■ ブラウザベースで動く物

2017年01月15日 | プログラミング

 現状において、プログラムというのは、OSの標準実装の

コンパイラや、SmallBASICのようなVisalBASICやC#を

覚えるのに向いているものやTinyBASICのような、懐かし

い入門言語のようなものがありますが、基本的に、開発言

語を覚え、その使用を学習すると、そうした言語を使用した

プログラミングが可能になります。

 

 基本的に、プログラミングと言うのは言語によって構文

が異なるのですが、その記述の仕様と構造物の構築と、

当たり前に動く状態でソースコードを記述し、それを実行

する事になるのですが、こうしたソースコードを打ち込む

作業を【 コーディング 】と呼ぶのですが、インタプリタ

言語の場合、実行できる環境(つまり、コンパイル言語の

インストールおよび必要なフレームワークなどの実装を

行い、環境変数を設定して動く状態にする)があれば、

こうした言語の場合、ソースコードの実行がそのまま行

えます。

 

 これに対し、コンパイル型言語と言うのはコンパイラを

使用する事になるので、コンパイラーを使った実行形式

に変更する必要があります。そのため、WINDOS環境

だとeceファイルを出力する事になるのですが、この場

合、その言語の統合環境を実装する必要があります。

 

 この二者の違いは、前者は、実行段階で順を追って

機械語返還をして処理をするのに対し、後者は、一括変

換されている違いがあります。このため、インタプリタ型言

語は遅く、コンパイル型言語は高速に機能します。

 

 とりあえず、こうした言語ですが、言語の系統が異なり

ますが、Linux環境だとg++を実装すれば、当たり前に

実行可能で、WINDOWS環境だと、前述のとおりコンパ

イル型言語は利用できます。LinuxでCやBASHは当た

り前に通るのですが、基本的に、CUIでのコンパイルと

なると上記のような状態になります。

 

 MAC環境だと大昔からObject-Cがあったので開発

言語はそれがあったのですが、現在はX-CODEのイン

ストールでObject-Cよりもオブジェクト指向の強いものを

使えるようになっているのですが、基本的ン別途インストー

ルすればそういうのが可能になるのはどの閑居も同じです。

 

 LinuxだとJAVAとC++ベースで考えると、Ecripsや

NetBeansがあるのですが、マイクロソフトだとVisualS

tudio Cominuty 2015アップデート3などでしょうか。

 

 コンパイル型言語の場合、そんな感じになっているの

ですが、どの環境でもOSが入っている状態でそのまま

動くものが存在しています。

 

 それは、

 

 ■ HTML

 ■ CSS

 ■ XML

 ■ JavaScript

 

です。基本的にタグで構成されているマークアップラン

ゲージとインタプリタ言語になるのですが、基本的に、

XML以外はHTMLファイルに包含してすべて実行す

る事が出来ます。

 

■ マークアップランゲージ       

 

 これに関しては、配置用言語なので、ワープロソフ

トが雑になったような状態でリッチテキストを作れる言

語と言う感じでしょうか。

 

 その為、通常の2バイト文字の構成の文字まみれ

のコンテンツとは異なり、マルチメディアファイルを包

含したモノを構築する事が出来ます。

 

 こう書くと少しわかりにくいですが、今のWEBを見

れば当たり前に見かけるものなんですが、SNSにおい

て動画や画像をアップできますが、それを投稿すると、

その投稿には、添付ファイルがそのまま表示されてい

ますが、あれはテキストとそうしたファイルを同時に表

示したモノになります。

 

 プログラムのソースコードやメモ帳やテキストエディ

タではこうした事は出来ないので、あれは何かしらの事

をしてそれを行っているという事になります。

 

 もともと、コンピューターのテキストの取り扱いと言う

のはテキストエディタの振る舞いで、2バイト文字も特殊

なモノに該当するので、それに対してマルチメディアファ

イルを配置する処理自体が通常とは異なる処理になりま

す。

 

 それを行う場合に、HTMLを使って表示してあるわけ

です。

 

 とりあえず、後述でローカルに置いたHTMLファイルと

ネット上のそれの違いについて書きますが、基本的に、

あれはリッチテキストを表示する言語が使われているの

は確かです。とりあえず、そういう事が出来るのが、マー

クアップランゲージになっています。

 

 それがXMLやHTMLになります。XMLはタグで詳細

情報を入れこむ事が出来るので少し違うのですが、HT

MLではそうした事が出来ます。

 

 その為、【 著作権などに注意が必要 】なんです

が、基本的に

 

 ■ 音声ファイル

 ■ 画像ファイル

 ■ 映像ファイル

 

などを配置する事が出来ます。これとは別に、現在の開

発言語では当たり前に利用できるウィジェットの利用も当

然のように行えるので、フォームを配置しテキストボックス

やチェックボックスなどの配置が可能になっています。

 

 その為、一通りのことはできるようになっていますが、

基本的に配置用の言語でしかないという事は確かです。

 

 これとは別に、印刷物やワープロソフトでのレイアウト

レベルでそれをコントロールするものがCSSになります。

 

 これについては、

 

 【 タグに対しての属性指定が出来る 】

 

ので、オブジェクトのプロパティー指定のようなものになり

ます。つまり、フォントを例に出すとフォントの種類や、スタ

イル、配置、色、背景色などを設定できます。

 

 これとは別に、CSSであh、サイズは位置の設定が可能

なので、従来のHTML飲みで行った場合の雑な配置やサイ

ズ指定の縛りが存在しない末期な状態の回避が出来ます。

 

 その為、ピクセル単位でで位置やサイズを指定して、そ

れを配置していくような事が可能です。これに加えて、x-In

dexなどで配置における上下関係を指定できるので、グラ

フィックツールのレイヤーような処理が出来ます。これに加

えてフィルター処理もありますから、配置するものが平面的

な状態からそうではない構造で構成する事が出来るように

なります。

 

 HTMLも背景にイメージを配置できるので、サイズ指定

をしてコンテンツを作ると、レイアウトとして画像とテキスト

の構造物を二層のみで構成する事は可能なんですが、

z-Indexに関しては、10層くらい用意できるので出来る

事が異なります。

 

 基本的に配置に関してはこの二つになります。ちなみ

にActive-Xコントロール系のモノに見られるプラグイン型

の追加機能に関してはEmbedタグなどで呼び出すのが

過去の方式(現在のHTML 5.0は異なります。)なんです

が、FALSHやJavaアプレットなどは完全に外部プラグイ

ンになります。

 

 つまり、そうした機能を実装するかいないあの話にな

るのですが、HTMLで処理しているモノではなく、外部参

照になります。

 

 ブログを書く時ンいHTML表示があるので、現在だと

こういうのが特別だという認識はないと主追いますが、

とりあえず、そういう仕様になっています。

 

■ WEBで使うスクリプト言語     

 

 これに関しては、VBScriptの選択肢もあったので

すが、Internet Explorerのみですから、実質的に、

これを制御する言語と言うのは、JavaScriptの一択

になっている感じです。

 

 記述に関しては、C言語などで見かけるハッシュ

で囲まれた文法なので、スティーブ・ジョブズ氏が

アップルから追い出される前あたりの時代のBASIC

しか知らない人だと全くわかりません。

 

 と言うよりも、構文があからさまに違うので、そ

の場合、JavaScript以前にマークアップランゲー

ジが解りません。つまり、こういう分野だと、それが

知識であった場合、昔取った杵柄は存在しません

から、何も知らない人と同じレベルでスタートする

事になります。その為、それがあるのでモノが解る

と言うのは酷い錯覚なので、そういう間違いをして

る輩は信用しないほうがいいのは確かです。w

 

 とりあえず、これについてですが、基本は

 

 ■ ヘッダーにソースを書き込む 

 ■ Bodyタグで呼び出すかScriptタグで呼び出す

 

ような状態になります。

 

 とりあえず、こうした言語については、古いBASICインタプ

リタのように

 

【 スティーブ・ジョブズ氏しかマウスの存在を用意しなかった 】 

 

ような時代のそれだと、基本的にマウスアクション用の処理が

存在しません。というおも汎用デバイスで存在sないのですか

らなくて当然ですが、そんな不便なモノがマウスの普及したネ

ットが普及した時代に存在するわけがありませんから、通常の

処理におけるマウスの処理は入っています。こういうのは、時

代が違うと現在のようなタッチパネルが大々的に普及してる時

代とは異なるので、そうしたモノが存在しないのと同じです。

 

 とりあえず、JavaScriptに関しては、18年前に初版が出てる

ような書籍ですら、マウスの取り扱いについては処理系が確立

されているので、当然のようにそれが使えます。

 

 とりあえず、基本となるのは、蒸気の方式での利用になるの

ですが、WEBオーサリングツールに関しては、タグ挿入型のア

クション登録が可能になっています。その為、

 

 ■ CSSのようにタグ挿入で機能するもの

 

もあります。例えば、ページの読み込みと同時に表示させる

 

<BODY OnLoad='alert("文字列");'>

 

のようなBODYタグに挿入するものや、

 

<a href="sample.html" onMouseover='alert

("文字列"):'>リンク先の名称やアドレス</a>

 

のように、マウスが重なるとアラートが出る処理もできます。

 

 また、HTMLではフォームを作れるので、

 

<form method="post">

<input type="button" value="OK" onclick='alert("文字列");'>

</form>

 

のようにすると、ボタンと連動したスクリプトになります。つま

り、WEBなどもそうですが、ソースコードを見て怪しい場合は

押してはならないという事になります。とりあえず、Googleの

翻訳が【 押すな!=Push Me 】と言う【 フリ 】を覚えた

ように(というか、通常は、 押すな =Don't Push Me で

すが。)押せと言うのが不利で実はトンd目御なく危険な何か

であり、酷いことになるかもしれませんから、注意が必要です。

 

 つまり、オンロードで変な場所に飛ばされてはいないだろう

か?かあるたがう事も重要なので、やはり、モノを知ったほうが

防御はしやすくなるのでその辺りの知識はあったほうがいいと

いう事になります。

 

 とりあえず、構造物でいうと、

 

■ ページ全体の表示非表示及び、ブラウザのステータ

  スバーなどの処理だとボディータグ

 

■ マウスの処理などについては、ボタンやリンクなどの

  タグ

 

になります。しかし、これは、その振る舞いがダイレクトに来る処

理ですが、プログラムにいて発生する、数的処理及び、変化が

発生する条件は、

 

<sclipt Langage="JavaScript">

<!--

プログラム

//-->

</sclipt>

 

をBodyタグに実装したり、ヘッダーにそれを記述する場合だと、

 

<html>

<head>

<sclipt Langage="JavaScript">

<!--

プログラム

//-->

</sclipt>

</head>

<body>

<sclipt Langage="JavaScript"><!--

Functionで指定した名称 

//--></sclipt>

 

</body>

</html>

 

となります。とりあえず、通常は、

 

<sclipt Langage="JavaScript">

<!--

function 任意の名称()

{

処理

}

//-->

</sclipt>

 

となります。構文としては、C#や他の言語で見られるように、

ハッシュの間にそれを入れる状態になるのですが、他の言語

では[ 0,1,2,3,4 ]などでアレイを構築できるのですが、Jav

aScriptでは、

 

 ■ 変数名 = new Array();

 

で指定するようで、その次の行に

 

 ■ 変数名[0] = 処理

 ■ 変数名[1] = 処理

 ■ 変数名[2] = 処理
 

     :

     :
 
 
のようにして複数のデータからモノを選ぶような構成になるようで
す。こうした処理を入れる場合も、他の言語と同様に、ハッシュに
包含した記述になるわけです。

 

 この言語については、マウスの座標取得や、マウスの移動や

ドラッグなど操作系を全て命令で呼び出して、リアクションの設

定が出来ますから、動的なモノが作れるのですが、通常のサイト

の構成では、ヘッダーで記述したモノをファンクションに指定され

た名称でボディーで呼び出して利用するか、もしくは、CSSを外

部において、Link RELで呼び出すように外部に用意したスクリ

プトファイルを呼び出して使うような方法になっています。

 

                     

 

 とりあえず、まともに動くPCや現行のブラウザが動く環境で

当たり前のモノを作る場合だと知識でいうと

 

 ■ HTML 5.0

 ■ CSS 3.0

 ■ JavaScript 2.0

 

の構成になるので、あまり古めかしいHTMLやJavaScriptの

本を参照しなほうがいいのですが、JavaScript 2.0だと、過

去には影響が出ていたJSONがまともに動くとかもありますし、

タグについてもCANVASタグの登場やVIDEoタグの登場で記

述がつい安く泣て居たり、自由度が高くなっているので、昔の

それでは難しい事が出来るようになっているのですが、これに

関しては、コンパイラなどは全く必要としません。

 

 あと、外部プラグインでいうと、FLASHやJAVAアプレットな

どがありますが、前者はアクションスクリプトでAirなどを使用

することになり、後者は、単なるJAVAのソフトウェアになるので

開発環境は別途必要で、実行はプラグインを利用する事にな

ります。現在は実装機能が面白いことになっており、ビデオカ

ードの性能を高くしておく必要がありますが、WEB-GLという

WEB 3Dの技術が存在しており、プラグインでそうした機能を

実装するものもありますし、そうした機能を合わせてゲーム開

発なども行われています。

 

 現在は、こうしたローカルで作れるHTMLファイルの生成で

ゲームを作れるようなゲームエンジンも複数登場しているので、

いろいと多機能に利用できる状態はあります。

 

■ ローカルとサーバの違い        

 
 とりあえず、上記の方法が制作時のソレなので、基本的に
ネットにも何にも繋がっていない、個人が所有するPC内部で
の処理になるのですが、これがネットワークとなると話が変わ
ってきます。
 
 とりあえず、個人が使っているネットワークと言うのはロー
カルネットワークでDTCP-IPとかDNLAだと思うのですが、
個人が保有しているモノ以外だとインターネトのサーバ上の
アカウント辺りではないかなと思います。
 
 
 とりあえず、上記の方法では、確かにインターネット上に
は作るホームページは作れますが、ソーシャルの写真やコ
メントなどと同じでそれをアップロードしない事にはどうにも
なりません。
 
 こうした場合に、自前でサーバを所有しているか、当たり
前にきょいなインフラを所有捨てる企業のサービスを利用し
てレンタルサーバの状態で使うかの二択になります。
 
 
 実際の話、この辺りの話はサーバ云々になるので割愛
して、個人おコンテンツのアップロードと種類について書くと
サーバ上にアップする作業はそうなんですが、実際の話、
ソーシャルで何かをアップするような状態とは異なる状態
になります。
 
 
 まず、こうした処理ですが、ファイルのアップロードに
ついてはブログ同様にファイルの一括アップロードとかも
可能なんですが、そもそも、アカウントの考え方そのもの
が異なります。
 
 まず、ソーシャルですが、運用しているサービスをユー
ザーが利用している状態ですから、ここにアカウント全体
の管理権限がある訳がありません。
 
 
 というか、アカウントの管理は個人でもできるので少し
解りやすく書くと、サービスと言うのはその仕様に合わせ
た設定の変更なんですが、

 

【 WEBのアカウントと言うのは、何も入っていない

  PC内部にある空のフォルダーのようなもの 】

 

です。そして、アプリケーションへのアクセス権限は当然あ

りませんし、そKに存在しているサービスと言う音は、CGI

の解放の有無(Perlの利用が出来るか否か)や他のスク

リプトの利用の有無(Cシェルなど)で、基本的にApatch

などが走ってるだけの構造物と考えたほうがいいです。

 

 つまり、グローバルIPが存在し、ソレにDNSでアドレス

が当たってる状態のものに外部からアクセスできる状態

になってるのがそれです。

 

 その為、レンタルサーバを借りても中身は何もありま

せん。当然、これをサイトとして構築していくことになるの

ですが、アカウントのツリー攻勢などは自分で考える事

になります。

 

 ソーシャルが普及しているので、今現在、URLにリンク

すると言うのが何か解らない人は減っていると思うのです

が、これが

 

 ■ 相対パス

 ■ 絶対パス

 

となると話は変わってきます。基本的ンい、URL全てが、

絶対パスになるのですが、ソシャルでつぶやく場合にボ

タンがないようなサイトだと、リンクを張ってつぶやくしか

ないですが、その場合の 【 http://www.~ 】 と

言うサーバから存在している何かが絶対パスです。

 

 当然、アドレスがそれですから、そこにしか飛ばないの

で、この指定をすると、間違いなくそのアドレスにアクセス

できます。

 

 ハイパーリンクの仕様は既にわからない人は殆どいな

くなってるような気がするのですが、ざっくり書くと

 

【 ネット上のアドレス表記であるURLに対してアクセス

  するための指定番号のようなもので、それを行う処

   理がソレ 】

 

になります。まぁ、Pixivに飛ぶとか、YouTubeに飛ぶと

か、現在のソーシャル連づのブログの状態を見ればリン

クが特別なモノではなくフツーの機能なのはいうまでもな

いですが、アカウントを取得しているという事は、

 

【 サーバ名などは固定されている 】

 

ので【 Http://www~サーバ名/ユーザー 】

のような部分は省略しても問題ないという話になります。

 

 これは、ディレクトリーの移動をコマンドラインで行った

場合の事になるのですが、基本的に同一階層の物の場

合、ファイル名の指定だけで実行できるという内容があ

りますから、同一の仕様なので、同一階層の同地フォル

ダー内のファイルの場合、パスの指定を簡略化できます。

 

 http://www~サーバ名/ユーザー/1.jpg

 http://www~サーバ名/ユーザー/index.html

 

と言う状態があったとします。この場合において、

 

【 index.html 】

<html>

<head>

</head>

<body>

<!--

【 上記の、1.jpgを呼び出したい 】

-->

</body>

</html>

 
 

となっており、1.jpegを呼び出すとしましょう。この場合、

 

そうすろと、絶対パス指定だと

 

<img src="http://www~サーバ名/ユーザー/

1.jpg">

 

となります。しかし、これは同一階層のファイルなので、

 

<img src="1.jpg">

 

で呼び出しが可能になります。これが、相対パス指定です。

 

 基本的に、処理において無駄な記述をだらだらとしても

仕方ないので、相対パス指定と言うのが存在しており、この

条件だと、

 

【 ./1.jpeg 】

 

が同一階層の表記になります。しかし階層構造が深くなる

と、アドレスの記述が必要になる為、

 

【 ./フォルダー名/ファイル名 】

 

と言うことになります。つまり、

 

【 同一階層 = 同一フォルダー名 】

 

なので、その条件が合わない下層だとそうした指定になり

ます。では、この1.jpegを新規に作ったIMGフォルダーに

移動したとしましょう。アカウント内にフォルダーを作れば、

それは一つ下の階層になりますから、

 

【 ./IMG/1.jpg 】

 

がそのアドレスになります。では、この画像をGalleryの画

像として利用するとして今後増やすことを想定し、index.

htmlとは異なる【 Gallery 】フォルダーにあるa.html

から呼び出すようにするとしましょう。そうなると、

 

 ■ index.htmlからのa.htmlへのリンク

 

   ./Gallery/a.html

 

 ■ Galleryからの1.jpgへのリンク

 

   ./IMG/1.jpg

 

となるわけです。しかし、これだと一方通行なので相互リ

ンクをさせないとこうz物として破たんしているので、Gall

eryをindex.htmlに戻れるようにする必要があります。

 

 そのばあい、一つ上の階層で単一のものですから

 

 ../index.html

 

になります。これが上層フォルダーが2つ存在した場合に

アクセスする場合だと、フォルダーの名称をそれぞれMA

INとSUBとし、それぞれに1.htmlを用意した場合上記の

記述だとどうしようもないですから、

 

 ../MAIN/1.html

 ../SUB/1.html

 
 
のようになります。これと同時にファイルのアクセス権限を
用意する必要があるのですが、基本的に降雨構造物をH
TMLファイルを配置してコンテンツを作るだけでも発生しま
す。

 

 この時に、スクリプトやCSSや、マルチメディアファイ

ルを配置するような状態になる訳です。それを行う事で

リッチコンテンツの表示が可能になるわけです。

 

 しかし、コンテンツにおいて取得できるものがローカル

のキャッシュ程度に限定されるので、サーバ内のデータと

のように常時記録されたものとは異なる状態になります。

 

 さーっば内のデータと言うのは、HTMLをアカウントに

配置するようにアップロードしない事にはそれを常時利用

する事はできませんから、サーバサイドスクリプトが必要

になる訳です。

 

 とりあえず、HTML+JavaScriptの構成で動かした場合、

ローカルデータしか扱えないので、サーバサイドに何もない

場合、次にアクセスした時にそれを維持する事が出来ません。

 

 つまり、ブログとかで実装されているアクセスカウンター

の系統はまたt九作れませんし、WORDPRESSなどで作

れるようなサービスの記事の保存が全くできないわけです。

 

 その為、こうしたモノを使う場合、Perlを使ったスクリプト

で動的な処理をさせるというほうほうになります。つまり、ク

ライアントにストックしたのでは処理できない物をストックす

るための処理系統を実装する必要が出てきます。と言うの

も、オープンで公開しているようなサイトの場合、アクセスと

言うのは自分のクラウドストレージではないので、当然のよ

うに他人も来るわけです。そうなると、自分がオフラインの時

に発生したアクセスおよびそお挙動と言うのは、全くわかり

ませんし、そのデータを取得する術もありません。

 

 そうした場合、サーバサイドスクリプトで、何かしらの処理

が発生するようなものを用意しておく必要性があるわけです。

 

 そうなると、これはHTMLだけではどうしようもない状態に

至ります。と言うのも仮に何かしらのデータを取得したとして

も端末がアクセスしているのはクライアントなので、そのデー

タのストックをするようなスクリプトがサーバサイドにない場

合、そのデータと言うのはアクセスした個人おくら案とに残す

術が存在する程度の話でしかないからです、となると、サー

バで何かが残るような気形式御サービスは少し無理になっ

てきます。つまり、この場合、クライアント内部に保存された

データを作る選択はあるとしても、これをサーバで使う術が

ないわけです。そうなると簡素な掲示板のようなものやカウ

ンターすら作れなくなる訳です。とりあえず、そうした点から、

HTML+CSS+JAVASCRIPTの構成のものをアカウントを

用意して公開するというのは

 

【 表示したモノがネットから見れるようになっただけ 】

 

でしかありません。その為、データを記録するファイルが存

在する場合にそれに記録するような処理の場合、ローカル

サイドのスクリプトではなく、サーバサイドスクリプトになり

ます。つまり、ブラウザで鵜後k鵜クライアントサイドスクリ

プトだけだと、他人がアクセスした時に死量出来るブログ

のような構造物や動画や画像を取り扱えるソーシャルのよ

うなものが作れないわけです。

 

 その為、取得できる情報が増える事はいろいろと作れる

物の変化があるのでいいのですが、それを記録し、アクセ

ス権限がある程度広目にしてあるものだと様子が変わって

くるわけです。

 

 そして、使う物で変わってくるのですが、データ管理なども

ローカル彩度でモノを作る場合にCVSやSQLなどを使う事例

がありますが、サーバも同様で、そうしたモノを何かしらの形

式で保存するとして、それをコントロールするものを作る事を

仮定するクライアントサイドスクリプトではなくサーバサイドス

クリプトになるような気がします。

 

 つまり、不特定多数の空くせそ予備アクションにおいての

何かしらの記録が残る条件だとクライアントサイドスクリプト

だけではどうしようもない訳です。

 

                    

 

 とりあえず、サーバサイドスクリプトの場合、サーバソフ

トを入れたローカル駆動の環境を作ってLANで利用する

ような状態で、学習する事になるのですが、基本的にクラ

イアントで動かすものとは少し異なるものになります。

 

 IISが選択できるので、そういうのが出来ないわけでは

ないのですが、そのままインストールした直後だと基本

的には前述のローカルサイドスクリプトになります。

 

 IISを追加した場合だと、OSそのままだtごPowersh

ellとか.netFrameworkでコントロールすることになり

ますが、SQLは表示順で入ってるわけではないですし、

サーバの場合はいろいろと追加する事になります。

 

 とりあえず、OSのインストールされた環境だとブラ

ウザは実装されているので、ブラウザベースで動くも

のは構築可能で、JavaScriptなどを使った物だと環

境を問わずプログラミングが可能になっています。

 

 


■ Small BASIC (その3)

2017年01月13日 | プログラミング

 Small BSICでは、

 

 

のようなUIになっていて、記述を行ってソースコードを構築する

ようになっているのですが、基本的に、この言語は、VisualBAS

ICのような構文になっています。しかし、変数の扱いなどがBASIC

とは異なり、

 

 【 全て、英数字の組み合わせで対応できる仕様 】

 

になっています。例えば、

 

【 BASIC 】

 

  ■ A=0などの数値は大丈夫だが、A=”零”などは

    使えない。基本的に数字のみの利用になる

 

  ■ 文字列を使う場合は、AではなくA$="文字列"

    と言う表記になる

 

と言う縛りがあります。TinyBASICはそうなんですが、

SmallBASIC二はその縛りが内容です。

 

 なので、

 

 ■ A = "True"

 ■ A = "文字列"

 ■ A = 1234

 

などの選択が可能になっています。言語によってこの辺りの

縛りがあるのですが、基本的に、英文字だと大文字と小文字

では認知が違うという当たり前の事も含めて存在しているの

ですが、そうした状態に泣ています。

 

 Graphicwindowsで利用できるカラーですが、WEBペー

ジ同様に色名指定が可能なんですが、8bitカラー対応なの

でWEBでの色指定のように#000000~#FFFFFFで決定

できます、

 

 とりあえず、この仕様ですが、RGBの256階調の仕様を

00~FFで示したもので

 

 # 00 00 00 ~ # FF FF FF


で指定できます。つまり、白から黒へと1階調上がった状態

は#010101となり、黒の手前の階調は#FEFEFEとなりま

す。とりあえず、アドレスのような&H00000~&HFFFFFF

でのビット変化とは異なるので、基本的に記述の仕様が存

在するためそういったシフトをします。

 

 この色指定は、WEB同様にウインドウ内の背景とそこに

存在しているオブジェクトもそうですし、Graphicwindowで

表示できるテキストについても同様の仕様になっています。

 

 このソフトでは、【 Tartle 🐢 】を表示して、アルゴリズ

ムを決めて動かすことが可能なんですが、これは、ロボット

の処理のように、特定の条件で動くモジュールを想定して、

任意の動きを決めて動かす学習に使え鵜物になっています。

プログラミングでLOGOと言うのはソフトウェア開発だと何の

事だかさっぱり解らないのですが、アルゴリズム構築とその

条件判定における処理と考えると、特定の振る舞いをする

ものの構造物の構築と言うな要ですか、SNSのサーボコン

トロールなどに似た考え方の学習と言う風にも言えます。

 

 つまり、そうした、特定のお物を特定の振る舞いをするよ

うに指定するための処理の構築と言うのをソフト内部ででき

るというのがソレになります。

 

 当然、モーターの回転速度やソレに刺さったギアの組み

合わせで、歯車が動いてもゲーム開発は出来ないので、

基本的に、ソフトウェアを吊るというのと制御系プログラムと

言うのは全く毛色が違う訳ですが、そうした特徴があります。

 

 ちなみに、Small BASICは、

 

EV3 Basic 1: What Is EV3 Basic?

 

のような用途でも使われており、LEGOマインドストーム

シリーズでセンサーやモーターの制御をするようなプロ

セッサの言語としても利用できるようです。

 

 あと昨年のBlog記事ですが、

 

 ■ New Oculus Rift Extension for Small Basic

   – Oculus SB

   https://blogs.msdn.microsoft.com/smallbasic/2016/

   03/26/new-oculus-rift-extension-for-small-basic-oculus-sb/

 
のようにVRグラスのOculus Riftが使えるようになるエクステ
ンションもあるようです。

 

 とりあえず、WINDOWS10だとすんなりとインストールが可能

で、そのまま動いているわけですが、以前書いたように、RGB-D

カメラや他のセンサーを実装したKinectセンサーも対応している

ので外部センサーの戻り値を使った利用方法もありますが、ソレ

とは別に、マイドストームV3の制御も可能な状態になっているよ

うです。

 


■ Small BASIC(その2)

2017年01月13日 | プログラミング

 この開発言語は、数年雨に登場したモノなんですが、

構文がBASICとはまたく異なる仕様になっています。

 

ちなみに、

 

【 VISUAL BASICのHello World 】

Imports System

Public Module modmain
 
   Sub Main()
     Console.WriteLine ("Hello World")
   End Sub
End Module
 
 
と言う感じになるので、プチコンやTBASICのそれとは
異なります。つまり、VBの場合、サブプロシージャの中に
ほうがされたものを実行するスタイルなので、上記のよう
な状態になり、冒頭の 【 Import System 】 が、
C言語の 【 include stdio.h 】 や C++のヘッ
ダー呼び出しの 【 include iostream.h 】 に該
当するもににないrます。そして
 
 Public Module 任意の名称 
      
 End Module
 
のモジュールに
 
 Sub Main()
   
 End Sub 
 
 
のようなメイン関数の用意されたサブプロシージャが存
在し、
 
 
Console.WriteLine ("Hello World") 
 
 
と言う表示命令が入っている構造物になります。
 
ちなみに、C#の場合だと
 
 
【 C#のHello World 】
 
using System;
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            Console.WriteLine("Hello World!");
        }
    }
}
 
 
となります。構造物としては。using Systemは呼び
出す命令が異なる物の同様の命令で、
 
namespace HelloWorld{} 
 
というネームスペースを用意したの中に
 
 class Hello{}
 
 
と言うHalloと言うクラスを生成し、
 
static void Main() {}
 
というstaticメッッドにVoid型を使い、引数なしの
Mainメソッドの中に表示用の
 
Console.WriteLine("Hello World!");
 
が加わっています。つまり、これの全てがないと表示を
行う事は出来ず、この二者はコンパイル型言語なので、
コンパイルが必要です。
 
 そして、これがオブジェクト指向と言うのは、モジュールの
中にメソッドが存在するような構造での記述なので、単独命
令ではなく、必ず、その対象が存在しているという事です。
 
 C#の表示と文字の入力待ちですが
 
【 表示 】
 
 ■ Console.WriteLine("文字列");
 
【 キー入力待ち 】
 
 ■ Console.ReadKey();
 
 
となっています。つまり、Consoleに対して、振る舞いをさせ
る構造のプログラムがソレを包含している構造物の中にある
プログラムという事になります。
 
 
 こうして見てみると、考え方は同じなんですが、記述方式
が相当異なります。そして、C#の記述はJavaScriptなどで
見かけるような構造で、VisualBASICのほうが、まだ、Pyt
honなどの構造に似ている記述になっています。
 
 とりあえず、これを踏まえて、Small BASICを見てみると
 
【 テキスト表示 】
 
 ■ TextWindow.WriteLine("文字列") 
 
【 文字入力待ち 】
 
 ■ 任意の変数名  =  TextWindow.Read() 
 
ですから、この言語は従来の行番号を追いかける方式の
記述ではなく、オブジェクト指向型の言語のヘッダー呼び
出しなどの部分を除外した、簡素な構造の言語という事に
なります。
 
その為、Print、Inputの文章で構築されている
 
【 対象が明確では名kうプログラムの流れの中
  の一部としてそれが存在する構造 】
 
とは異なる訳です。ちなみに、VisualBASICでモジュー
ルを使った場合、Accessでボタンは位置をしてイベント
追加をする時も同じなんですが、これはサブプロシージ
ャが登場します。SUBについては、前回miniBASICの
サブルーチンで触れましたが、
 
 

【 数値入力処理 】

TextWindow.Write("Enter first number: ")

num1 = TextWindow.ReadNumber()

TextWindow.Write("Enter second number: ")

num2 = TextWindow.ReadNumber()

 

【 対比して大きい数値を表記する処理 】

FindMax() 
TextWindow.WriteLine("Maximum number is: " + max)

 

【 サブルーチン 】

Sub FindMax

If (num1 > num2) Then 

 max = num1

 Else

 max = num2

EndIf

EndSub

 
と言うIntroducticting Small BASICで紹介されている構文を
紹介しましたが、VisualBASICのHello Worldの記述の
 
Imports System

Public Module modmain
 
   Sub Main()
     Console.WriteLine ("Hello World")
   End Sub
End Module
 
に似ていますよね。つまり、構造的にはよく似てい居る訳です。
ただ、それを選択してGlobalの記述と別に行うとかではなくサ
ブルーチンとして 個別の処理は独立させる事が出来るような
構造物になっています。
 
 そして、Small BASICでは前回紹介した通り、
 
 GraphicsWindow
 TextWIndow
 
のように用途で異なる物が存在しており、グラフィックの表示だ
とGraphicsWindowを使用し、表示する事になります。この時
の選択はBASICインタプリタと似た振る舞いになります。
 
 とりあえず、昨日はじめてつかってのファーストインプレッショ
ンなんですが、手続きの部分は甘楽略化されているので構造物
がどう動くのかを組み立てる上では、その処理をするためのヘッ
ダーなどをだしていないので止まるとかいうのがないので、そう
した点ではべりなんですが、とりあえず、通常のBASICとは全く
違い、現代のオブジェクト指向型言語の入門言語のような側面の
ほうが強い仕様になっています。