私はこれを取るいくつかの異なる方法を見ることができました:
1) 基本的なプログラミング ビルディング ブロック。switch や if/else などの条件文とは何ですか? for ループや while ループなどの繰り返しステートメントとは何ですか? これらをどのように組み合わせて、プログラムを必要な一連のステップにするか? 食料品の請求書を追加したり、温度や距離をメートル法からインペリアル法に、またはその逆に変換したりするのと同じくらい簡単なことを行うことができます. 文字列、整数、倍精度などの基本的な変数の型は何ですか? また、ここでは、高度なアイデアのためにブール代数を使用したり、基数 2 または 16 で算術演算を行う方法を教えたりすることができます。
2) アルゴリズム的に類似の構成要素は何か。並べ替えは非常に単純なトピックであり、広く議論および分析して、最も脳死の方法であるバブルソートを習得した場合に、順序が狂っているように見える要素を交換するよりも早くこれを行う方法を見つけようとします。
3) コンパイルおよび実行時の要素。コール スタックとは ヒープとは コード片やデータ片など、プログラムを実行するためにメモリはどのように処理されますか? ファイルを開いて操作するにはどうすればよいですか? コンパイルとリンクとは?メイクファイルとは?これのいくつかは単純ですが、クラブがほとんどの場合カバーしているものである可能性があるように、物事がどのように機能するかを見るだけでも目を見張るものがあります.
これらの次の 2 つはやや難しいですが、楽しいものになる可能性があります。
4) 次のようなアルゴリズムの背後にあるさまざまなアイデアについて議論します。1) 分割統治法、2) 動的計画法、3) 総当り、4) データ構造の作成、5) 問題を、たとえばフィボナッチ数列など、既に解決されている類似の問題に還元する初心者のプログラマーに与える古典的な再帰的問題、および 6) 硬貨の種類が a、b、および c. また、少し風変わりなものが必要な場合は最小重み全域木などのグラフ理論の例に入ることができます。また、説明は簡単ですが解決するのが面倒な場合は巡回セールスマンを使用することもできます。
5) 数学関数。1 から n までのすべての数の積である階乗をどのようにプログラムしますか? さまざまな算術または幾何級数の合計をどのように計算しますか? または、n 個のセットから r 個の要素の組み合わせまたは順列の数を計算しますか? 一連の点が与えられた場合、この要件を満たす多項式を概算します。たとえば、x と y という 2 次元平面で 2 つの点を指定し、線形方程式のペアを解いた場合、勾配と y 切片を人々に計算させることができます。すでに。
6) リンクされたリストと配列を使用して実装できるリスト。いろいろな場合でどちらがいいですか?挿入、削除、検索、並べ替えなどの基本的な機能をどのように実装しますか?
7) 抽象データ構造。スタックとキューとは何ですか? クラスをどのように構築し、テストしますか?
8) ポインター。これは、メモリを割り当て/割り当て解除する方法、メモリリークとは何ですか?などの膨大な量のトピックにつながります。
これらは、さまざまな出発点に対する私の提案です。場合によっては、毎週同じテーマについて話すことを気にしない数人を集めることができれば、ディスカッションを開始すると、いくつかの興味深い場所につながる可能性があると思います。細かいところまで。