Logo-quick-guide
ロゴ-はじめに
ロゴは、非常にシンプルで習得しやすいプログラミング言語です。 生徒や子供にコンピューターのプログラミング方法を教えるために使用されます。
ロゴ言語を学ぶ必要があるのはなぜですか?
- 楽しいから、たくさんの楽しみがあります。
- 子供の論理的な感覚を高めます。
- プログラミングスキルを開発します。
- それは本当のコンピューターサイエンスです。
ロゴは、学ぶのが非常に簡単で興味深いプログラミング言語です。 他のコンピュータープログラミング言語で実行できる、実質的に何でもできるほどの深さがあります。
MSWロゴソフトウェアをダウンロードしてインストールする方法
ロゴプログラミングソフトウェアがコンピューターにインストールされていない場合、次のリンクから無料で入手できます-
インストール後、コンピュータのデスクトップにロゴアイコンが配置されます。
MSWロゴ画面には2つの部分があります-
- 中央に三角形の亀が描かれた上の描画ウィンドウ。
- 次のスクリーンショットに示すようなCommanderウィンドウ。
コマンドライン、つまり、Commanderウィンドウの下部にあるテキストボックスにコマンドを記述します。 これらのコマンドを実行または実行するには、Enterキーを押すか、[実行]ボタンをクリックします。 また、一度に複数のコマンドをオンラインで記述して実行することもできます。
コマンド履歴は灰色のボックスに表示されます。 履歴内の行をクリックして、それぞれのコマンドラインにジャンプし、必要に応じて変更を加えることができます。 これが完了したら、Enterキーを押すか、実行ボタンをクリックします。
ロゴ-タートル
シンプルなロゴ描画コマンドは、タートルを前後に移動し、左右に回転させます。 コマンドとその略語は以下のとおりです-
- fd –フォワード
- bk –後方
- rt –右
- lt –左
- cs –クリアスクリーン
これらのコマンドのどちらのバージョンも使用できます。 csコマンドを除き、これらの各コマンドの後には、引数として呼び出される1つの値が必要です。 fdおよびbkの引数は単位です。 rtとltの角度は、任意の整数の角度です。 360度の回転は完全な回転であるため、375度の回転は1/15度と同じです。
- forward 60 または fd 60 は、60ステップ進むことを意味します
- 右90 *または *rt 90 は、右折90度を意味します。
- 左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 は、試してみるとわかるように、カメに三角形を描画させます。
これらのコマンドは、左から右に読み取られます。 コマンド fd には1つの引数が必要なため、次の値として使用されます。 同様に、 rt も引数を取ります。 したがって、ロゴはこれらの文字列のそれぞれに明確な意味を与えることができます。 一部のロゴコマンドには、区切り記号が必要です。
以下は、右側に目的の結果を持ついくつかの練習コマンドです。
以下は、この章でこれまでに学んだことの適性を確認するための演習です。
ロゴ-カメとペンの制御
ロゴには他にも多くの描画コマンドがあり、その一部を以下に示します。
- pu -penup
- pd -ペンダウン
- ht -hideturtle
- dt -showturtle
- *設定 *
ペンダウンおよびペンアップコマンドは、タートルが移動するときに画面上にインクを残すか、インクを残さないように指示します。* hideturtle および *showturtle コマンドは、カメを非表示または表示しますが、インクが移動してもインクを残す機能には影響しません。 homeコマンドにより、タートルは画面の中央に戻ります。 カメが画面の中央に戻ると、インクが残る場合があります。 setpensizeコマンドは、描画ペンのサイズを決定します。
- penup または pu はペンを拾うことを意味するため、トラックを離れることなくタートルを移動できます。
- pendown または pd はペンダウンを意味するため、タートルを移動してトラックを離れることができます。
- hideturtle または ht は、カメを隠すことを意味するため、描画を賞賛できます。
- showturtle または st はカメを表示することを意味するため、描画を続行できます。
- setpensize は、ペンを大きく、見やすくすることができることを意味します。 デフォルトのペンサイズは– [1 1]です。
以下は、右側に目的の結果を持ついくつかの練習コマンドです。
ロゴ-タートルワールド
ロゴには他にも多くの追加の描画コマンドがありますが、これらのいくつかを以下に示します。
- home
- cleartextまたはct
- ラベル
- setxy
labelコマンドは、単一の単語を引用符付き文字列として使用します(例: 「a_string」)または引用符なしの[]括弧内の単語のリスト(例: [文字列]))をグラフィックウィンドウの亀の位置に印刷します。 次のコードを考えてみましょう。
*setxy* コマンドは2つの引数を取り、最初の引数を横座標の値(水平軸)として扱い、2番目の引数を縦座標の値(垂直軸)として扱います。 タートルをこれらの座標に配置し、これらの座標に到達するときにインクを残します。 次の3つの図では、setxyコマンドの使用方法を示しています。
cleartextコマンド(省略形は ct )は、コマンドウィンドウのテキスト領域をクリアします。
運動
以下は、この章でこれまでに学んだことの適性を確認するための演習です。
次のコマンドシーケンスはどのような図を生成しますか?
cs pu setxy -60 60 pd home rt 45 fd 85 lt 135 fd 120
これらのコマンドを左から右に読みながら解釈してください。 それを試して結果を見つけてください。
以下は、コマンドの要約の表です。
Command Name | Purpose |
---|---|
setx 100 |
Sets the turtle’s x-coordinate to +100 中心の右に100ポイント移動します 垂直方向の変更なし |
setx -200 |
Moves the turtle 200 points to the left of center 垂直方向の変更なし |
sety 150 |
Sets the turtle’s y-coordinate to 150 中心から150ポイント上に移動します 水平方向の変化なし |
sety - 50 |
Moves the turtle 50 points below center 水平方向の変化なし |
setxy 100 100 | Moves the turtle to xy coordinate 100 100 |
show xcor ycorを表示 a |
カメのx座標を報告します カメのy座標を報告します a |
見出し0 セス0 |
Points the turtle straight up, “high noon” |
seth 120 | Moves the turtle 120 degree to point to the four o’clock position |
次のスクリーンショットは、上記のコマンドのいくつかの実用的なデモンストレーションです。
ロゴ-変数
変数は、値を含むことができるメモリロケーションの名前です。 コンピュータでは、各メモリロケーションには整数アドレスがあります。 プログラムが使用する値を含む各場所の住所を覚えるのは難しいため、コンピューター科学者はこれらの場所に記号名を付ける方法を見つけました。 変数に名前が付けられたら、それを使用して操作できます。
変数には、文字列である名前が付けられます。 変数名には、アルファベット(大文字と小文字を区別しない)、数字、アンダースコアを含めることができます。 変数名は、計算の前に「:」を使用してアクセスできます。 スクリーンショットの次の例を考えてみましょう。
上記の例では、2つの変数 first_name、100_last_name_200 を定義し、次のステートメントを使用して値 Amal および Das で初期化しました-
- 「first_name」をアマルにする
- make“ 100_last_name_200” Das
また、ステートメントprint:first_nameおよびprint:100_last_name_200を使用して、これら2つの変数を出力しました。
次の例は、数値変数を定義する方法を示しています-
ここでは、2つの数値変数 val1 および val2 を定義しています。 また、それらを使用して加算と減算を実行しました。
ロゴ-算術演算
ロゴは、加算、減算、乗算、除算の通常の算術演算を提供し、記号+、-、*、/で示されます。 これらの各操作は結果を生成します。 印刷など、結果に対して何もしないと、ロゴにエラーが表示されます。
印刷コマンドを使用すると、算術演算の結果を使用して、コマンドウィンドウで印刷できます。 次のスクリーンショットにある例は同じことを示しています。
他の便利なコマンドは-
- sqrt -1つの非負の引数を取り、その平方根を返します。
- power -2つの引数を取り、それらを「a」と「b」と呼び、aからb乗を生成します。
- ln -1つの引数を取り、その自然対数を返します。
- exp -1つの引数を取り、eをそのべき乗で計算します。eは自然数2.718281828です。
- log10 -1つの引数の10を底とする対数を取ります。
次のスクリーンショットは、上記のコマンドとそれぞれの出力の例を示しています。
算術演算子には、評価される順序を決定する優先順位があります。
注-60 sqrt 2とprint sqrt 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
2つのコマンドfd 100とrt 90が4回繰り返されることに注意してください。 これらの2つのコマンドを4回連続で書き込むのではなく、4回だけ繰り返す必要があることをコンピューターに伝えるのは簡単ではないでしょうか? 次のコマンドを使用して、これを正確に行うことができます-
入力して正方形を作成する時間を節約できます。 一般的な形式は次のとおりです。 repeat number [commands] 。 キーワードを使用する必要があります- repeat の後に数字が続き、[角かっこ]内の一連のコマンド
多くの場合、繰り返し内で繰り返す必要があります。 これは*ネスト*と呼ばれます。 これに関するいくつかの例を見てみましょう。
以下は、この章でこれまでに学んだことの適性を確認するための演習です。
ロゴ-ランダム化
予測できない結果を計算するのは楽しいことです。 ロゴは、乱数を生成するランダムな手順を提供します。 引数が1つあり、ランダムに一様に選択された整数値を生成します。整数値は0以上で、引数の値未満です。 したがって、0〜359度のランダムな角度が必要な場合は、コマンド random 360 を使用して生成できます。 印刷などの結果に対して何かを行わない限り、ロゴにはエラーが表示されることに注意してください。
私たちは次の例を見てみましょう-
コマンドを発行しました。*上記のコマンドウィンドウで*ランダム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」という単語で終了する必要があります。 すべてのコメント行またはコメント行の前にセミコロン(;)を付ける必要があります。
以下は、上記の例の実用的なデモンストレーションです-
今、コマンドラインから、以下に示すようにその名前「正方形」を使用して手順を実行します-
プロシージャには組み込みコマンドを含めることができるだけでなく、他のプロシージャを含めることもできます。
次の例では、プロシージャ「flower」は事前定義されたプロシージャ「square」を本体から呼び出しています。
次のスクリーンショットは、プロシージャ「flower」が呼び出されたときの出力を示しています-
すべての正方形を同じサイズにしたくはありません。多様性が必要です。 ロゴでは、値を変更できる変数を作成します。 次の例では、小さな変更を加えて同じ正方形の手順を使用します。
to square :n
repeat 4 [fd :n rt 90]
end
以下に示すように、コマンドラインでLogoに「:n」の代替値を指定します。
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 [条件]」の後に括弧で囲まれたコードが実行されますが、条件は真です。 (この場合) ':n’の値が100より大きくなるため、それが真でなくなると、括弧に続くコードが実行されます。
次のスクリーンショットは、上記のコードの実行と出力を示しています。
次に、特定の条件が満たされた場合にのみ実行されるコードを持つ「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画面*と呼ばれることもあります。
ロゴのセットメニューでは、3つの画面要素の色を設定できます-
- 亀のペン
- 亀の塗りつぶし(囲いのペイントバケツのような) *画面の背景
これら3つのスライダーを左右に動かして色を設定します。 黒はすべての色が存在せず、白はすべての色が一緒であることを忘れないでください。 光の混合は、塗料の混合とは異なります。 例として、赤と緑のペイントを混ぜると、濁った色になります。 これはコンピューターなので、すべての色には内部数値表現があります。
スライディングスケールの左端はゼロ(0)です。 右端には255があり、これはコンピュータにとって99のようなものです(2 ^ 8 ^-1です)。 したがって、黒は[0 0 0]、赤は[255 0 0]、緑は[0 255 0]、青は[0 0 255]です。 これらの色の間にあるものは何でも作成でき、これらすべてに256* 256 256の可能な色があります。 それは2 ^ 8 ^ 2 ^ 8 ^ * 2 ^ 8 ^、つまり24ビットの色、つまりマシン内の24桁の数字です。
次のコマンドはあなたに大きな太った赤ペンを与えます-
setpensize [5 5]
setpencolor [255 0 0]
スライダーを使用して好きな色を見つけたら、Logoにその色を尋ねることができます。ペンの色を選択し、コマンドウィンドウで次のコマンドを入力します。
show pencolor
次のスクリーンショットは、上記のコードの実行と出力を示しています。
次の手順を使用して、色付きの正方形を作成できます-
- ステップ1 *-次のコマンドを使用して、辺の長さが40の正方形を描画します。
repeat 4 [fd 40 rt 90]
- ステップ2 *-次のコマンドを使用してペンアップします。
pu
- ステップ3 *-正方形の内側のポイントに移動します。 たとえば、次のコマンドを使用して、タートルを座標(20、20)に配置します。
setxy 20 20
- ステップ4 *-設定した塗りつぶし色で正方形を塗りつぶします。 たとえば、フラッドカラーを青に設定するには、次のコマンドを使用します。
setfloodcolor [0 0 255]
次の表に、カラーとペンに関連するコマンドをいくつか示します。
Color & Pen command | Purpose of the command |
---|---|
setpencolor [ r g b] setpc [r g b] a |
カメのペンの色を設定します r g bは範囲[0、255]の数値です a |
setfloodcolor [r g b] setfc [r g b] |
Sets the color for an endorsed area |
setscreencolor [r g b] setsc [r g b] |
Sets the color for the background |
show pencolor フラッドカラーを表示 スクリーンカラーを表示 |
Specifies the current values for [r g b] of a named item |
Fill | Dumps a bucket of current floodcolor at the cursor’s location |
Fill | Dumps a bucket of current floodcolor at the cursor’s location |
次の一連のコマンドを実行してみてください-
- cs -画面をクリアします。
- home -家の場所にカメを連れて行く。
- setpensize [5 5] -ペンのサイズを設定します。
- setpencolor [255 0 0] -ペンの色を赤に設定します。
- setfloodcolor [0 0 255] -洪水の色を青に設定します。
- setscreencolor [0 255 0] -画面の色を緑に設定します。
- *繰り返し4 [fd 40 rt 90] *-辺の長さが40の正方形を描きます。
- pu -ペンアップ。
- setxy 20 20 -座標(20、20)にカメを置きます。
- fill -設定されたフラッドカラーブルーで正方形を塗りつぶします。
- ht -カメを隠す。
上記のコマンドを実行すると、次の出力が表示されます。