コースの開始モジュール「アルゴリズム。 オリンピアードプログラミング「または年の途中

はじめに!



1年間自転車に乗る場合(2014年の記事: 赤い車輪のある黄色の自転車または1Cの別のアルゴリズムを参照)、地球を2回周航できます。 たとえば、最初に子午線37.57571に沿って、次に平行線55.81842に沿って、 ティミリヤゼフスカヤにある1C会社のメインビルディングに戻ります。 (数学者にとって:はい、平行線は赤道が成功するよりも短いです;生物学者にとって:はい、休憩のために停止すると1年以上になります;退屈:はい、はい、海で泳ぐこと)



私たちの旅を止めて評価する価値があります。 しかし、最初から始めましょう。



画像 さらに早く-2年前に戻ります。



2013年、1C:Summer Schoolにより、 児童向けのアルゴリズムに関する新しいコースの最初のモジュール(12レッスン)が作成されました。 かなり良いことがわかりましたが、難しいです。 予備的な準備、言語の基本的な構文の研究、および基本的なアルゴリズム構成の理解なしに対処することは困難でした。 1CのJavaの予備講座:プログラマークラブ -(これはプロジェクトプログラミングの紹介です)実際には問題を解決しませんでした-結局、Javaの基本に関する最初のゲームは、教師の多大な助けを借りて書かれ、ほとんどアルゴリズムの開発に遭遇することなく、設計上の問題を解決しました。 しかし、コースの開発は継続されました-2番目と3番目のモジュールが作成され、テストされました。 計画は4番目を開発することでした...



そして再び-1C:サマースクール、すでに2014年。



私は仕事を与えられました:完全に初心者の子供を占めるようにそれを作る必要がありますが、すでにアルゴリズムのオリンピアードプログラミングに興味があります。 そして、秋にそれらをさらに追加して、「古い」と「新しい」を一緒に-すべて一緒に働きましたか?



解決策:最初から始めて、非常にゆっくりと移動する必要があります。 そして、それはすべてボリュームで判明しました...もう1つのモジュールできれいに。



そして、すべてが適切に配置されました。コースにスターターが登場しました-ゼロモジュール(プログラマーはゼロから番号を付けなければなりません!)-アルゴリズムの実際のコースをすばやく簡単に入力するための資料です。



残りの部分と同様に、開始モジュールにはタスクだけでなく、ヒントと分析もあります。 このマニュアルは、ワークブックとしても、鉛筆で記入するための特別な場所としても、自習ガイドとしても使用できます。マニュアルにはすべての質問に対する答えがあります。 最も単純なプログラムであっても、ソリューションの断片が提供されます。



7年生またはそれ以前から



一般的に、場合によっては、トレーニングは最初のモジュールのクラスからすぐに開始できますが、「スムーズな入力」とグループの整列を確保する必要があるのは開始クラスです。これは非常に重要です。



開始モジュールで学習したトピックは、以前のプログラミングコースの「理論上」の学生によく知られています。 もちろん、スタートアップモジュールのタスクは、以前に研究されたアルゴリズム構成を6か月間「繰り返す」ことではなく、それらを正しく迅速に使用してアルゴリズムを開発する方法を学ぶことです。



プログラミングを勉強している子供の認識では、画面上のオブジェクト画像の動きを整理するサイクルと、数字の単純さを決定するサイクルは完全に異なります。 アルゴリズムプログラミングのレビュー「...私の脳はアルゴリズムの問​​題を解決するようには設計されていません。ゲーム用のコードを書くことができます...」はおかしいようですが、これは実際には通常の自然な状況です。 実際、開始モジュールを教えるタスクは、この状況を変更することです。



誰もが必要としているが、誰もが十分な時間を持っていないものについて



通常、クラスに十分な時間がないものや、伝統的に些細で自然と見なされているものに多くの時間が費やされているのは、開始モジュールです。 スタイル-スペース、コード内のインデント、変数名を正しく配置する方法を学ぶことは非常に重要です。 1つまたは別のアルゴリズム構成を使用する場合、およびその逆。これは、多くの場合より重要です-そうでない場合。 ループに入れるべき条件は何ですか?平等を使用する価値がありますか? どちらが良いですか:if-elseまたはswitch-caseからチェーンですか? 中断して続行:いつ悪か、いつ役に立つツールか



これが行われない場合、学生は独自のプログラミングの「スタイル」を開発することができます(多くの場合、開発します)。この場合、学生を「再教育」することは非常に困難です。 たとえば、子供は独立しておよそ次の方法でサイクルを終了する可能性を「発見」しました。



for (int i = 0; i < 10; i++) { if (…) i = 11; … }
      
      





一度機能しました。 システムは「承認」され、それだけです。他のすべてのプログラムでは、サイクルを抜ける方法は次のとおりです。 スタートアップモジュールを率いる教師の非常に重要なタスクは、そのような状況を検出し、そのようなアプローチがスキルにならないようにすることです。



アルゴリズムレーシング



そして、もちろん、競争。 オリンピアードのプログラミングはまだスポーツです。



Startのトレーニングは次のように構成されています。条件演算子とサイクルに最初に触れた直後の最初の「オリンピック」。 「オリンピアード」という言葉は、1Cの主題に関する条件を持つ非常に単純なタスクを含むため、引用符で囲まれています。 問題の言い回しはおかしく、解決策は標準的な単純なアルゴリズムです。



たとえば、最も単純な「olympiad」タスク:

「ビュッフェの休憩中の1Cプログラマーは、サンドイッチでギャンブルをすることを決めました。 彼らはひそかにナプキンにいくつかの数字を書いて、それらをバーのメイドに渡します。 バーメイドは、すべてのサンドイッチを、最初の数が多い場合は最初に、2番目の数が少ない場合は2番目に提供します。 しかし、突然数字が同じになった場合、両方のサンドイッチがビュッフェに残っています。 ナプキンの数字によると、栄養のあるプログラマーの数を印刷するか、両方が空腹のままだった場合は0を印刷します。



(1Cでは、ビュッフェが将来のプログラマーの生活に大きな役割を果たすことに注意してください)



とても喜んでいる子供たちは、これが実際に通常の最大検索であることを発見します。 これは興味深いことです。なぜなら、子供はコースのほぼ最初に「オリンピアードに参加し」、成功を収めるからです。



蛇紋岩



学習はスパイラルです。 最初に、最も必要なもの、そしてすぐにオリンピアードのレッスン。 さらに、条件演算子と循環演算子のより詳細な説明。 3番目のレッスンのサイクルについて十分に理解していない人にとっては、6番目と7番目の条件に「戻る」のは快適です。 ただし、これらは簡単なタスクとはほど遠いものです。 たとえば、高さの制限がある場合でも、2つの長方形の箱を3分の1に詰めることができるかどうかを確認するには、箱を横に置くことはできませんが、上に置くことはできます-技術的に非常に難しい作業です。

最後のレッスンでは-関数(これにより再帰の理解が深まります)および結論として最終コンテスト。 参加者がオリンピックルールに従って解決するように招待されたすべてのタスクは、ヒントなしで-シンプルですが、実際のオリンピックから取られています。



美人!



蓄積された経験を考慮して、Startが最後に作成されたという事実により、Star Warsの最初の部分、3番目と4番目の投稿のように、非常に印象的です。

テーマアドバイザーと典型的なプログラマーからの引用でペイントし、サイドフッターを追加してページをすばやくスクロールしてマニュアルの必要な部分を見つけ、プレゼンテーションスタイルを楽しくしました。

それは少しフーリガンでもあると言えますが、これは若い学生が高く評価し愛するスタイルです(プログラミングの教師にとっては、7-8年生は若いです)。



コースのWeb部分とPDFの最初のモジュールのマニュアルは、 informatics.msk.ruで入手できます

また、スターターモジュールハンドブックからいくつかのレッスンの PDFもあります。



そして結論として:



年間の追跡



現在の結果について少し。 それらは小さいですが、具体的です。 7つのグループが形成され、合計80人以上の人々が参加しました。 彼らは成長しており、1年で彼らの最高のものが私たちのチームに入り、そこで、Vserosが彼らに提出するでしょう。



記事の著者:Ilyin Vladimir Vladimirovich(oivt@ya.ru)、教師、学校179モスクワ広報協会



All Articles