ロゴ-クイックガイド
ロゴは非常にシンプルで習得しやすいプログラミング言語です。それは学生と子供たちにコンピュータをプログラムする方法を教えるために使われます。
なぜロゴ言語を学ぶ必要があるのですか?
- 楽しいので、とても楽しいです。
- 子供の論理的な感覚を高めます。
- プログラミングスキルを開発します。
- それは本当のコンピュータサイエンスです。
ロゴは非常に簡単で興味深いプログラミング言語です。それは事実上何でもするのに十分な深さを持っています、そしてそれは他のどんなコンピュータプログラミング言語でもすることができます。
MSWロゴソフトウェアをダウンロードしてインストールする方法は?
ロゴプログラミングソフトウェアがコンピュータにインストールされていない場合は、次のリンクから無料で入手できます-
www.softronix.com/mswlogo.htmlインストール後、コンピュータのデスクトップにロゴアイコンが表示されます。

MSWロゴ画面には2つの部分があります-
- 中央に三角形のタートルがある上の描画ウィンドウ。
- 次のスクリーンショットに示すようなコマンダーウィンドウ。

コマンドライン、つまりコマンダーウィンドウの下部にあるテキストボックスにコマンドを記述します。これらのコマンドを実行または実行するには、Enterキーを押すか、[実行]ボタンをクリックします。一度に複数のコマンドをオンラインで記述して実行することもできます。
コマンド履歴が灰色のボックスに表示されます。履歴の行をクリックしてそれぞれのコマンドラインにジャンプすると、必要に応じて変更を加えることができます。これが完了したら、Enterキーを押すか、[実行]ボタンをクリックします。
シンプルなロゴ描画コマンドは、タートルを前後に動かし、右または左に回します。コマンドとその略語を以下に示します-
- fd –フォワード
- bk –後方
- rt –右
- lt –左
- cs –クリアスクリーン
これらのコマンドのどちらのバージョンも使用できます。csコマンドを除いて、これらの各コマンドの後には、引数として呼び出される1つの値を続ける必要があります。fdとbkの引数は単位です。rtとltの角度は、任意の整数にすることができる角度です。360度の回転は完全な回転であるため、375度の回転は1/15度と同じです。
forward 60 または fd 60 60ステップ進むことを意味します
right 90 または rt 90 右折90度を意味します
left 90 または lt 90 左折90度を意味します
back 60 または bk 60 60ステップ戻ることを意味します
clearscreen または csすべての図面を消去することを意味します。これはカメを中心に置きます
グラフィックウィンドウには座標系があります。中央の2つの座標(通常はxとyと呼ばれます)の値は0、0です。北東の角では250、250です。南東の角では、250、-250です。南西の角では、-250、-250です。カメが画面の片側に歩き出そうとすると、カメは回り込みます。右側が左側に折り返され、上部が下部に折り返されます。
多くのプログラミングシステムは、同じ種類の2軸の「xy」座標平面で動作します。これは代数でも動作します。

ここで、「0 0」は中心または原点です(ここではコンマや括弧は使用しないでください)。中央にズームされた「通常の」状態では、ロゴの描画画面には、中央から上下に約150ポイント、左右に300ポイントの領域が表示されます。
カメは、コンパスローズに対応する見出しで方向付けることができ、0度または360度が真上を向き、90度が右を真っ直ぐに向けます。変数を0から360までの数値に設定してから、そのパスをたどることができます。
タートルコマンド
それでは、いくつかのコマンドを試してみましょう。コマンドは1行に1つずつ発行され、その後にキャリッジリターンが続きます。これらのコマンドのいくつかは、コマンドウィンドウに連続して入力した後、キャリッジリターンを入力できます。カメへの影響は同じです。ただし、1つ以上の入力を必要とし、次の行に欠落している入力を提供するコマンドを入力すると、ロゴにエラーが表示されます。
以下は練習コマンドで、右側に望ましい結果を示しています。

コマンド– fd 50 rt 120 fd 50 rt 120 fd 50 rt 120、試してみるとわかるように、カメに三角形を描かせます。
これらのコマンドは、左から右に読み取られます。コマンド以来fd1つの引数が必要で、次の値として使用されます。同様に、rt引数も取ります。したがって、ロゴはこれらの文字列のそれぞれに明確な意味を与えることができます。一部のロゴコマンドでは、セパレータが必要です。
以下は、右側に望ましい結果が得られるいくつかの練習コマンドです。




以下は、この章でこれまでに学んだことに対する適性を確認するための演習です。

ロゴには他にもいくつかの描画コマンドがあり、その一部を以下に示します。
pu −ペンアップ
pd −ペンダウン
ht −ハイドタートル
dt −ショータートル
setpensize
pendownコマンドとpenupコマンドは、タートルが移動するときに画面にインクを残すか、インクを残さないように指示します。ザ・hideturtle そして showturtleコマンドはカメを非表示または表示しますが、移動時にインクを残す機能には影響しません。homeコマンドを実行すると、タートルは画面の中央に戻ります。カメが画面の中央に戻ると、インクが残ることがあります。setpensizeコマンドは、描画ペンのサイズを決定します。
penup または pu ペンを拾うことを意味するので、トラックを離れることなくカメを動かすことができます。
- pendown または pd ペンを下に持ち上げることを意味します。そうすれば、カメを動かして跡を残すことができます。
- hideturtle または ht カメを隠すことを意味するので、あなたはあなたの絵を賞賛することができます。
- showturtle または st 亀を見せて、絵を描き続けることができるという意味です。
- setpensizeつまり、ペンを大きくして見やすくすることができます。デフォルトのペンサイズは– [11]です。
以下は、右側に望ましい結果が得られるいくつかの練習コマンドです。



ロゴには他にもいくつかの追加の描画コマンドがあります。これらのいくつかを以下に示します。
- home
- 平文またはct
- label
- setxy
labelコマンドは、1つの単語を引用符で囲まれた文字列(例:「a_string」)または引用符なしの[]括弧内の単語のリスト(例:[文字列])として受け取り、グラフィックウィンドウのタートルの位置に出力します。 。次のコードを考えてみましょう。

ザ・ setxyコマンドは2つの引数を取り、最初の引数を横軸(横軸)の値として扱い、2番目の引数を縦軸(縦軸)の値として扱います。カメをこれらの座標に配置し、これらの座標に到達する間、インクを残す可能性があります。次の3つの図では、setxyコマンドの使用方法を示しています。



クリアテキストコマンド、省略形 ct、コマンドウィンドウのテキスト領域をクリアします。

運動
以下は、この章でこれまでに学んだことに対する適性を確認するための演習です。
次のコマンドシーケンスはどのような図を生成しますか?
cs pu setxy -60 60 pd home rt 45 fd 85 lt 135 fd 120
これらのコマンドを左から右に読むときに解釈してください。結果を見つけるためにそれを試してみてください。
以下は、コマンドの概要の表です。
コマンド名 | 目的 |
---|---|
setx 100 | カメのx座標を+100に設定します 中央から100ポイント右に移動します 垂直方向の変化なし |
setx -200 | カメを中央の左に200ポイント移動します 垂直方向の変化なし |
sety 150 | カメのy座標を150に設定します 中心から150ポイント上に移動します 水平方向の変化なし |
sety-50 | カメを中心から50ポイント下に移動します 水平方向の変化なし |
setxy 100100 | カメをxy座標に移動します100100 |
xcorを表示 ycorを表示 |
カメのx座標を報告します カメのy座標を報告します |
見出し0 セス0 |
カメをまっすぐ上に向ける、「正午」 |
セス120 | カメを120度動かして、4時の位置を指します。 |
次のスクリーンショットは、上記のコマンドのいくつかの実際的なデモンストレーションです。

変数は、値を含めることができるメモリ位置の名前です。コンピュータでは、各メモリ位置に整数アドレスがあります。プログラムで使用される値を含む各場所のアドレスを覚えるのは難しいため、コンピューターサイエンティストは、これらの場所に記号名を付ける方法を見つけました。変数に名前が付けられると、それを使用および操作できます。
変数には、文字列である名前が付けられます。変数名には、アルファベット(大文字と小文字を区別しない)、数字、およびアンダースコアを含めることができます。変数名は、その前に「:」を使用して計算でアクセスできます。スクリーンショットの次の例を考えてみましょう。

上記の例では、2つの変数を定義しました first_name, 100_last_name_200 値で初期化しました Amal そして Das 次のステートメントを使用する-
- 「first_name」Amalを作成します
- 「100_last_name_200」を作成するDas
また、これら2つの変数をprint:first_nameステートメントとprint:100_last_name_200ステートメントで出力しました。
次の例は、数値変数を定義する方法を示しています-

ここでは、2つの数値変数を定義しました val1 そして val2。また、それらを使用して加算と減算を実行しました。
ロゴは、+、-、*、/の記号で示される、加算、減算、乗算、除算の通常の算術演算を提供します。これらの各操作は結果を生成します。印刷など、結果に対して何もしないと、ロゴにエラーが表示されます。
printコマンドを使用すると、算術演算の結果を使用して、コマンドウィンドウに印刷できます。次のスクリーンショットに示されている例は、同じことを示しています。

その他の便利なコマンドは次のとおりです。
sqrt − 1つの非負の引数を取り、その平方根を返します。
power − 2つの引数を取り、それらを「a」および「b」と呼び、aのb乗を生成します。
ln − 1つの引数を取り、その自然対数を返します。
exp − 1つの引数を取り、eをその累乗で計算します。eは自然数2.718281828です。
log10 −1つの引数の10を底とする対数を取ります。
次のスクリーンショットは、上記のコマンドの例とそれぞれの出力を示しています。

算術演算子には、評価される順序を決定する優先順位があります。
Note− print 60 * sqrt2とprintsqrt 2 * 60は異なる答えを生成します。ここで、*演算子はsqrt演算子よりも優先されます。したがって、2番目の場合のように、選択肢がある場合は、*はsqrtの前に実行されます。
このため、次のスクリーンショットに示すように、最初のステートメントは2の平方根の60倍の値を出力し、2番目のステートメントは120の平方根を出力します。

多くの場合、一連のコマンドを繰り返します。コンピュータプログラムはしばしば反復的なタスクを実行します。コンピュータ科学者が言うように、ほぼすべてのプログラミングシステムには、この繰り返しまたは反復を実行する方法があります。次の例を考えてみましょう-
長さ100の正方形を描きたいとしましょう。これは、次のプログラムで実行できます。
fd 100
rt 90
fd 100
rt 90
fd 100
rt 90
fd 100
rt 90
fd100とrt90の2つのコマンドが4回繰り返されることに注意してください。これらの2つのコマンドを4回続けて書き込むのではなく、4回繰り返すだけでよいことをコンピューターに伝えるのは簡単ではないでしょうか。次のコマンドを使用して、これを正確に行うことができます-

正方形を作成するために入力する時間を節約できます。一般的な形式は次のとおりです。repeat number [commands]。キーワードを使用する必要があります–repeat [角括弧]内に数字、コマンドのシーケンスが続きます。
多くの場合、繰り返し内で繰り返す必要があります。これはnesting。これに関するいくつかの例を見てみましょう。


以下は、この章でこれまでに学んだことに対する適性を確認するための演習です。

計算の結果が予測できない場合は、楽しい場合があります。ロゴは、乱数を生成するためのランダムな手順を提供します。引数が1つあり、ランダムに均一に選択された整数値を生成します。これは、0以上で、引数の値よりも小さくなります。したがって、0〜359度のランダムな角度が必要な場合は、次のコマンドを使用できます。random 360それを生産する。印刷などの結果を処理しない限り、ロゴにはエラーが表示されることに注意してください。
次の例を見てみましょう-

コマンドを発行しました– print random 360 上記のコマンドウィンドウで数回、気づいたら、ランダムな出力を生成するたびに。
以下は、右側に望ましい結果が得られるいくつかの練習コマンドです。


プロシージャは、コマンドのコレクションをカプセル化する方法を提供します。プロシージャを作成すると、組み込みコマンドと同じように使用できます。プロシージャの「意味」は、その個々のコマンドの意味です。
引数のないプロシージャーの最初の行には、「to」という単語(予約語)とプロシージャーの名前があります。(ロゴの予約語は変数として使用できず、明確に定義された意味と使用法があります。)最後の行に予約語「end」があります。
サブプログラムは、別のプログラムが実行するための名前付きの一連のステップです。サブプログラムの他の名前は、プロシージャと関数です。ロゴでは、コンピュータに何かを行う方法を指示します—たとえば-
to square
repeat 4 [fd 100 rt 90]
end
Logoに手順を説明したら、組み込みのものと同じように、コマンドラインでその名前を入力できます。この場合、コマンドラインで「square」と入力すると、Logoはコマンドを検索して正方形を作成します。
と言うボタンをクリックします Edall(すべて編集用)Logoの組み込みエディターを表示します。(ロゴにEdallボタンがない場合は、コマンドラインで「edall」と入力します)。次のコードブロックには、サブプログラムの必要な構造があります。
to procedurename
steps of your procedure here
end
プロシージャまたはサブプログラムは、「to」という単語で始まり、その後に私たちが考える名前が続く必要があります。次のステップは、コマンドラインで記述するのと同じステップをすべてキー入力することです。プロシージャは「end」という単語で終了する必要があります。すべてのコメントまたはコメント行の前には、セミコロン(;)を付ける必要があります。
以下は、上記の例の実際的なデモンストレーションです。

ここで、コマンドラインから、以下に示すように、「square」という名前を使用してプロシージャを実行します。

プロシージャには、組み込みコマンドを含めることができるだけでなく、他のプロシージャを含めることもできます。
次の例では、プロシージャ 'flower'がその本体から事前定義されたプロシージャ 'square'を呼び出しています。

次のスクリーンショットは、プロシージャ「flower」が呼び出されたときの出力を示しています-

すべての正方形が同じサイズである必要はありません—多様性が必要です。Logoでは、変数を作成し、その値を変更できます。次の例では、少し変更を加えて同じ正方形の手順を使用します。
to square :n
repeat 4 [fd :n rt 90]
end
以下に示すように、コマンドラインで「:n」の代わりにLogoに値を指定します。
square 50
square 75
square 100
これが上記の例の実際的なデモンストレーションです-

次に、2つの引数をプロシージャに渡す方法について説明します。次のスクリーンショットは、同じものの実際的なデモンストレーションです。

再帰的プロシージャでは、プロシージャ内でプロシージャの再帰呼び出しが行われます。次のコードを考えてみましょう-
to spiral_recur :n
if :n < 1 [stop]
fd :n
rt 20
spiral_recur 0.95 * :n
end
プロシージャspiral_recurは、プロシージャ本体自体から呼び出されました。次のスクリーンショットは、コードの実行と出力を示しています。

意思決定と変数は一緒に行きます。プログラムは、状況に応じてコースを変更できる必要があります。ここでは、たとえば、スパイラルを描画するためのフレームワークがあります。ループがあり、前に示した繰り返しのバリエーションであり、ループの本体は私たちが埋めるためのものです。
to spiral
make "n 1
while [:n < 100] [
make "n :n + 5
fd :n rt 90
]
end
上記のコードは、MSWロゴの構文のいくつかの新機能を示しています。以下に示すように、「make」をキー入力して変数を新しい値に設定すると、変数の名前の前にコロン「:」ではなく二重引用符「:」が付きます。
make "n 1
ただし、名前の前にコロン「:」が付いた変数を使用します。
while [:n < 100]
'while [condition]'の後に括弧で囲まれたコードは、条件がtrueのときに実行されます。(この場合) ':n'の値が100を超えるため、trueでなくなると、角かっこに続くコードが実行されます。
次のスクリーンショットは、上記のコードの実行と出力を示しています。

ここで、特定の条件が真の場合にのみ実行されるコードを持つ「ifステートメント」の使用について説明します。
また、乱数を生成する組み込みのロゴも表示されます。声明random 3ランダムなシーケンスで任意の数0または1または2を生成します。次に、プロシージャは「ランダムに」どちらに進むかを決定します。生成された乱数は「r」に保持され、後で変数「r」の値に応じて、条件を満たすifステートメントの1つが実行されます。したがって、-
- 'r'の値が0の場合、 [fd 20] 実行されます。
- 'r'の値は1であり、 [rt 90 fd 20] 実行されます。
- 'r'の値は2であり、 [lt 90 fd 20] 実行されます。
次のスクリーンショットは、上記の説明の実行と出力を示しています。

たとえば、「america」、「emp1234」などの英数字のシーケンスは、文字列の例です。文字を数えることは、すべての文字列プロセスの中で最も基本的です。質問への答えstringlength "abc12ef 次の手順で与えられます-
to stringlength :s
make "inputstring :s
make "count 0
while [not emptyp :s] [
make "count :count + 1
print first :s
make "s butfirst :s
]
print (sentence :inputstring "has :count "letters)
end
上記の手順では、「s」は入力文字列を含む変数です。変数inputstringには、入力文字列のコピーが含まれています。変数カウントは0で初期化されます。whileループでは、条件は文字列が空になったかどうかをチェックします。各ループカウントでは、長さカウントを保持するために変数が1ずつ増加しています。声明print first :s、 's'に格納されている文字列の最初の文字のみを出力します。
声明 make "s butfirst :s、最初の文字を除く部分文字列を取得します。whileループを終了した後、入力文字列の文字数または長さを出力しました。以下は、コードの実行と出力です。

コンピューターの画面は、光の赤、緑、青の成分で機能するため、「 RGB screens。
ロゴの設定メニューでは、3つの画面要素の色を設定できます-
- カメのペン
- カメの塗りつぶし(囲いのペンキのバケツのような)
- 画面の背景

これら3つのスライダーを左右に動かして色を設定します。黒はすべての色がないことであり、白はすべての色が一緒になっていることを忘れないでください。光を混ぜることは、絵の具を混ぜることとは異なります。一例として、赤と緑の絵の具を混ぜると、濁った色になります。これはコンピューターであるため、すべての色には内部数値表現があります。
スライドスケールの左端はゼロ(0)です。右端は255で、これはコンピュータにとって99のようなものです(2 8-1です)。したがって、黒は[0 0 0]、赤は[255 0 0]、緑は[0 255 0]、青は[0 0255]です。あなたはこれらの色の間に何でも作ることができます、そしてこれらすべてで、256 * 256 * 256の可能な色があります。これは、2 8 * 2 8 * 2 8、つまり24ビットの色—マシン内の24桁の2進数です。
次のコマンドはあなたに大きな太った赤いペンを与えるでしょう-
setpensize [5 5]
setpencolor [255 0 0]
スライダーを使用して好きな色を見つけたら、ロゴにそれが何であるかを尋ねることができます。ペンの色を選択し、コマンドウィンドウで次のコマンドを入力します。
show pencolor
次のスクリーンショットは、上記のコードの実行と出力を示しています。

次の手順を使用して、色付きの正方形を作成できます-
Step 1 −次のコマンドを使用して、辺の長さが40の正方形を描画します。
repeat 4 [fd 40 rt 90]
Step 2 −次のコマンドを使用してペンを上げます。
pu
Step 3−正方形の内側のポイントに移動します。たとえば、次のコマンドを使用して、タートルを座標(20、20)に配置します。
setxy 20 20
Step 4−設定したフラッドカラーで正方形を塗りつぶします。たとえば、floodcolorを青に設定するには、次のコマンドを使用します。
setfloodcolor [0 0 255]
次の表に、色とペンに関連するコマンドをいくつか示します。
カラー&ペンコマンド | コマンドの目的 |
---|---|
setpencolor [rgb] setpc [rgb] |
カメのペンの色を設定します rgbは範囲[0、255]の数値です |
setfloodcolor [rgb] setfc [rgb] |
承認された領域の色を設定します |
setscreencolor [rgb] setsc [rgb] |
背景の色を設定します |
ペンカラーを表示 フラッドカラーを表示 画面の色を表示 |
名前付きアイテムの[rgb]の現在の値を指定します |
塗りつぶし |
カーソルの位置に現在のフラッドカラーのバケットをダンプします |
塗りつぶし |
カーソルの位置に現在のフラッドカラーのバケットをダンプします |
次の一連のコマンドを実行してみてください-
cs −画面をクリアします。
home −カメを家に連れて行く。
setpensize [5 5] −ペンサイズの設定。
setpencolor [255 0 0] −ペンの色を赤に設定します。
setfloodcolor [0 0 255] −洪水の色を青に設定します。
setscreencolor [0 255 0] −画面の色を緑に設定します。
repeat 4 [fd 40 rt 90] −辺の長さが40の正方形を描きます。
pu −ペンを上に向けます。
setxy 20 20 −カメを座標(20、20)に置きます。
fill −正方形を設定されたフラッドカラーブルーで塗りつぶします。
ht −カメを隠す。
上記のコマンドを実行すると、次の出力が表示されます。
