子供向けのプログラミングサークルを作成した経験から

マグカップの外観



このサークルの背景は2年前に始まりました。 その頃までに、私は数年にわたってコンピューターサイエンスとプログラミングの家庭教師として働いていました。ほとんどがコンピューターサイエンスの学生で、パスカルでプログラムされていました。学校ではより一般的です。

そして2011年の秋に、私は珍しい学生がいました:4年生の子供は本当にプログラミングをしたかったので、Delphiを教えていることを知った後、彼の母親と私はそれを教えようとすることに同意しました。 子供は非常に才能があることが判明し、私たちは非常に良い実りある活動を得ました。 そして、多くのアイデアが現れたのは、プログラミングに対する彼の絶え間ない関心だけでした。



その時までに、スベルドロフスク地方の青年宮殿のロボットクラブで働いていました。 そして、私は私たちと一緒にそのようなプログラミングサークルを組織することを考えました。 この円を作成するには、まず、いくつかのことを決定する必要がありました。







次の質問は、クラスをどのように構築するかです。 間違いなく、最初のクラスでは、主な教材を提供する必要があります:「オブジェクト-プロパティ-イベント」モデルでのナビゲーションを子供に教えること、このオペレーティングシステムへの参加を説明すること、変数とは何か、コンピューター変数とどのように関連するかを理解すること 最初に、コンポーネントのライブラリの構造、カプセル化のメカニズム、ポリモーフィズムなどを最初のレッスン(オブジェクト言語を教えるときに通常行うように)で説明する価値があるかどうかを考えました。 -しかし、最終的には、初期段階でこれは余分な過負荷であり、おそらく子供たちは単に理解できないと判断しました。 したがって、私たちはこれについても話しておらず、子供が混乱しないように「コンポーネント」の概念を使用しておらず、代わりに「オブジェクト」という用語が使用されています。 つまり、コースはもちろん単純化されていますが、子供たちはより理解しやすく、興味深いものです。 あまりダメージを与えないと思います。 結局のところ、学校は数学でマイナス1の根を抽出することは不可能であることを教えています。 そして、子供たちは研究所に来て、落ち着いて複素数を勉強します、そして、これは誤解で大きな問題を引き起こさないようです。 ですから、ここでは、いくつかのことを単純化して、すべてをできるだけシンプルで簡単にする価値があると思います。 さて、次の重要な側面:各トピックはプログラミングによってサポートされるべきです。 最初のレッスンで理論のみを読む場合(OOPのインスティテュートコースでよく行われます)、2番目のレッスンでは半分の子供がいます。 そして最後に、私たちが行うプログラムは子供たちにとって興味深いものでなければなりません。 したがって、メインコースはミニゲーム、ジョークプログラム、仮想百科事典などです。

基本を学んだ後、実験室でのトレーニングに移ります。



職業



もちろん、すべてのトピックを完全に書くことはできませんが、最初のクラスで教えていることは、私たちがどのように勉強するかを理解するために書く価値があると思います(1レッスンは45分かかります):



レッスン1. Hello world!


一般的な理論:なぜOS、その構造が必要なのか。 グラフィカルOSの仕組み。 WinAPIとは何ですか? クロスプラットフォームアプリケーションの動作原理。 オブジェクト、プロパティ、イベント。 Lazarusインターフェース:どこにあるのか、どこに新しいオブジェクトを取得するのか、どこにプロパティを見るのか、視覚デザインのフォームをどのように扱うか

新しいオブジェクト:フォーム、ラベル。

新しいプロパティ:キャプション、フォント、色

割り当て: 「Hello world!」という碑文でプログラムを作成します。 碑文のフォント、ウィンドウの背景を変更します。 ドラフトプログラムの保存を学習します。



レッスン2.イベント。


一般理論: OSに関する繰り返し。 オブジェクト、プロパティ、イベント。 繰り返しますが、Lazarusインターフェースのどのウィンドウがどこにあり、それが何を意味するかを覚えておいてください。 設計からプログラミングまで。 イベント処理手順の自動作成。 プロシージャとは、その構造です。

新しいオブジェクト:ボタン。

新しいプロパティ: BorderStyle、AlphaBlend、AlphaBlendValue

新しいイベント: OnClick

タスク: 「Hello World!」プログラムに「閉じる」と「再描画」の2つのボタンを追加します。 イベント処理を作成します。 (「色の変更」ボタンは背景色とフォントの色を変更します)。 BorderStyleと透明度の実験。



レッスン3.エスケープボタン。


一般理論:オブジェクトの描画。 オブジェクト座標:絶対および相対。 乱数ジェネレータ。

新しいプロパティ:高さ、幅、上部、左

新しいイベント: OnMouseMove

タスク:プログラムはウィンドウで構成され、その中央に「Press me」という碑文のボタンがあります。 ホバーすると、ボタンがランダムな場所に逃げます。 さらに、タスク:ユーザーがウィンドウのサイズを変更したときにプログラムが正しく機能するようにします(つまり、ランダムな引数を変更します。たとえば、フォームの高さを示す特定の数値ではなくForm1.Heightプロパティを設定します)。



レッスン4.電卓。


一般理論: RAMの仕組み。 メモリセルとは何ですか。 変数:メモリ内のセルをOSに正しく問い合わせる方法:名前を見つけ、タイプを決定し、サイズを決定します。 数値変数のタイプ:バイト、整数、倍精度。 変数を正しく宣言する方法(手順のvarセクションを作成します)。 数字とテキストの違い。 IntToStrおよびStrToInt関数。

新しいオブジェクト:編集。

新しいプロパティ: Edit.Text

タスク:電卓プログラム。 数字を入力する2つの編集。 4つのボタン:+、-、*、/。 そして、結果を出力するラベルを付けます。



レッスン4.分岐。


一般理論:選択状況。 Ifステートメントとその構成。 操作ブラケットの適切な使用。 プログラムの正しい構造、またはインデントが必要な理由。 完全および不完全な分岐。 ネストされた分岐。 コードに関するコメント、必要な処理方法。

タスク:計算機を改良します。 「比較」ボタンを作成します。ボタンを押すと、応答に大きい方が表示されます。 追加のタスク:プログラムを正しく動作させるため:2つの数値が等しい場合、それらが等しいと推定します。



レッスン5.推測。


一般理論: Ifを繰り返します。 複数行のメモテキストボックスの操作方法を学習します。

新しいオブジェクト:メモ。

新しいプロパティ: Memo.Lines

タスク: 「Hello World!」プログラムに「閉じる」と「再描画」の2つのボタンを追加します。 イベント処理を作成します。 (「色の変更」ボタンは背景色とフォントの色を変更します)。 BorderStyleと透明度の実験。

このプログラムは、数字を入力するためのウィンドウ、OKボタン、「Make Up」ボタン、および複数行フィールドで構成されています。 コンピューターは1から100までの数字を作成します。ユーザーは、入力フィールドに数字を入力してこの値を推測します。 数字を入力すると、コンピューターはメモにプロンプ​​トを表示します。たとえば、数字の10が入力され、ユーザーが20を入力すると、コンピューターは「マイナンバーが少ない!」と表示します。 追加のタスク:ユーザーが非表示の数値の範囲を選択できるようにプログラムを終了します。



もちろん、理論全体は、子供ができるだけ理解できる言語で説明されています。 オブジェクトモデルを検討する場合、異なるプログラムを開き、それらの同じオブジェクトを探し、子供たちはこれらのオブジェクトの違いを探します(プロパティとは何かを理解するため)。 記憶を研究する場合、セルを備えたキャビネットの形で提示します(この時点で、ボードにはキャビネットが描かれたプレゼンテーションがあります)など。 主なものは、すべてが可能な限り明確でなければならないということです。



ノートブックは保持しますが、最低限の書き込みを行います。これらのクラスから、プログラムからオブジェクトのプロパティにアクセスする構造、ランダム性の構造、およびIf構造を記録しました。 また、ノートブックには、オブジェクト用、プロパティ用、イベント用の3つの辞書があります。 そこで、たとえばColor-colorのように簡単に記述します。



現在、および私たちの計画は何ですか。



私のサークルには1つのグループがあり、今年は9人です。 これらは主にグレード5〜7です。 3年生(ロボット工学から来た)が1人、9年生、1年生が1人います。

プログラミング能力によって-原則として、通常の大学グループのように:数人は優れた能力を持ち、残りは平均です。 年齢別では、11年生が最高のプログラマーであり(わかりやすい)、同じレベルで7年生の3人の男の子がいます。

3年生の男の子にとっては一番難しいことだと思いました(時間内にロボット工学に行くことができなかったが、授業を辞めたくなかったために来ました)が、彼はかなり間に合っていました。



計画は、地平線の拡大を試みることです。 このグループに加えて、私はロボット工学のサークルに何人かの学生がいましたが、今年の終わりまでにプロジェクトでやりたいと思う例の1つは、COMポートを介した相互作用を持つ外部デバイスです。 つまり、コンピューターでCOMポートとやり取りするプログラムを作成し、Arduinoでデバイス自体を収集します。このデバイスはコンピューターと制御/交換されます。 もちろん、これはこれまでの計画にしか含まれておらず、どうなるかはまだわかりませんが、これは私が努力したいものの1つです。



また、クラスと実験室の仕事のためのプレゼンテーションに基づいて本を書く計画で-子供のためのプログラミングチュートリアル。



願い、またはこの記事が書かれている理由。





まず、私は大きな要望があります:子供たち(特にミニゲーム)に興味があるかもしれないプログラムを知っていて、同時にこれらのプログラムが簡単に書けるなら、私にそれらについて書いてくれたら嬉しいです。 かつては、適切なカリキュラムを探すためにたくさんの教科書やプログラミングフォーラムをシャベルで掘りましたが、それでも私のコレクションで望むほど多くはないと思います。



そして第二に、もし誰かがそのようなクラブを(例えば、最も近い学校で)組織したいと思うなら、私は私の経験を喜んで共有するでしょう。



All Articles