スタートガイド

事例で学ぶ

新しい言語でプログラミングを学ぶ最善策の一つは、 多数のサンプルプログラムがあります。おすすめの方法は、 以下の各プログラムをテキスト ファイルに変換してコンパイルします。テストを試します。 これらのサンプル プログラムを拡張することで、さまざまな側面に慣れることができます。 C++ の知識がベースとなっており、 傷ます。

例 1: コンパイラを動作させる

まだ行っていない場合は、次の従来のプログラムをコピーして貼り付けます テキスト ファイルに変換してコンパイルします。コンパイルの手順は こちらをご覧ください。

おそらく、チュートリアル、 そのため、1 行ごとの説明は行いません。いくつか 可読性については注意が必要です。これはコメントや 読みやすく、理解しやすく、維持しやすいように書式設定されています。

  • 私たちが作成するすべてのプログラムは、ヘッダーコメントから始まります。 作成者の名前、連絡先情報、簡単な説明、用途 (該当する場合)。どの関数も、オペレーションと使用に関するコメントから始まります。
  • コードが記述されるたびに、完全な文での説明コメントが追加されます。 たとえば、処理が複雑でわかりにくい場合や、 注目してください。
  • 常にわかりやすい名前を使用する(変数は小文字の単語で区切る) my_variable のように _ で囲みます。関数名は単語をマークするために大文字を使用します。 (MyExcitingFunction() など)。定数は「k」で始まる使用し、 単語をマークするために、kDaysInWeek のように大文字で記述します。
  • インデントは 2 の倍数です。第 1 レベルは 2 つのスペースです。さらに インデントが必要な場合は、スペースを 4 つ、スペースを 6 つなど使用します。
// hello.cpp: Maggie Johnson
// Description: a program that prints the immortal saying "hello world"

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!" << endl;
  return 0;
}

次のような機能を試すことができます。

  • 最も重要なことは、このプログラムをコンパイルして実行できることを確認することです。
  • 「Hello World!」を出力するように上記のプログラムを変更します。1 日に 4 回 6 行。それぞれ 17 スペースのフィールドに出力されます。for ループを使用する できます。こちらをクリックして、 cout を使用して出力をフォーマットする方法について説明します。こちらをクリックして、 ソリューションをご覧ください
  • さきほどのプログラムを使って、「Hello!」を出力する方法を考えてください。 世界一!」17 個のスペースのフィールドで左揃え(デフォルトは (右揃え)。解決策については、こちらをクリックしてください。

例 2: 入力を取得する

cin を使用して C++ でキーボードから入力を取得するのは簡単です。以下に例を示します。

// get_input.cpp: Maggie Johnson
// Description: Illustrate the use of cin to get input.

#include <iostream>
using namespace std;

int main() {
  int input_var = 0;
  // Enter the do while loop and stay there until either
  // a non-numeric is entered, or -1 is entered. Note that
  // cin will accept any integer, 4, 40, 400, etc.
  do {
    cout << "Enter a number (-1 = quit): ";
    // The following line accepts input from the keyboard into
    // variable input_var.
    // cin returns false if an input operation fails, that is, if
    // something other than an int (the type of input_var) is entered.
    if (!(cin >> input_var)) {
      cout << "You entered a non-numeric. Exiting..." << endl;
      break;
      // exit the do while loop
    }
    if (input_var != -1) {
      cout << "You entered " << input_var << endl;
    }
  } while (input_var != -1);
  cout << "All done." << endl;
  return 0;
}

テスト:

  • 入力エラーが発生すると、ストリームが「中断」し、Cin のリターン false となり、プログラムは停止します。このようなエラーを防ぐことは非常に重要です 前のプログラムでしたとおりです。では、このエラーから復旧するにはどうすればよいでしょうか。 どうすればよいでしょうか復旧には 2 つのステップがあります。 エラーが発生します。 <ph type="x-smartling-placeholder">
      </ph>
    1. cin.clear() でエラーをクリアします。
    2. 正しくない文字をストリームから削除してください。その方法の 1 つは、cin.ignore() を使用することです。

以下の 2 つのステップを使用して、不正な入力から回復するプログラムを作成してください。使用 Google で検索してください。解決策はこちらをご覧ください。

例 3: このプログラムが出力するものは何ですか?

#include <iostream>
using namespace std;

int main() {
  cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
  for (int c = 1; c < 10; c++) {
    cout << c << "| ";
    for (int i = 1; i < 10; i++) {
      cout << i * c << '\t';
    }
    cout << endl;
  }
  return 0;
} 

例 4: 分解によりすべてが容易になる...

コンピュータ ゲームを作り始めるときです。最初は少しシンプルですが まだ始まったばかりです。私たちのタスクは、推測機能を実装するプログラムを 説明します。プログラムは 0 ~ 100 の乱数を生成します。プレーヤーは 秘密の番号を推測します。プログラムが「高すぎます」などのヒントを提供するまたは「その 低すぎます」秘密の番号を推測するまで続きます。

このゲームは 3 つのステップで進めていきます。 

  1. 特定の値範囲内の乱数を生成する方法を理解する。
  2. プレーヤーから得た推測を 1 つ処理して、 あります。
  3. プレーヤーが推測するまで、複数の推測を許容するために必要なものを追加します。 表示されます。

この開発プロセスは「分解」と呼ばれ、タスクを サブタスクに分割されており、それぞれ簡単にできます。

まず、Google 検索を行い、乱数を生成する方法を確認します。 使用できます。「rand C++」で検索してみてください。こちらは 説明します。

ステップ 2 では、プレーヤーから整数の入力を受け取る必要があります(適切な cin でのエラーチェックなど)を使用して、シークレット番号と照合します。試しに書いてみる 確認する前に、 ソリューションをご覧ください。

最後に、プレーヤーから推測を収集するループを追加する必要があります。 秘密の番号を推測するまで続きます。このコースのこのセクションを Google のソリューションをご覧ください。

分解は、プログラマーが学ぶ最も重要なスキルの 1 つです。 タスクを管理可能な断片に分割し、一つを完了できること 一度に一つずつまとめていくことは、プロジェクトの規模にかかわらず重要です。以下に例を示します。 分解を練習できます

  • 日常業務の多くには、分解のスキルを身に付ける機会があります。 心がこのように働くことに気づいて、驚くかもしれません。

    たとえば、散らかったキッチン( 例えるなら、タスクを分割して計画を出し、 後で作業をやり直す必要がなくなりますこれを洗いたくない カウンターに何か片付けようかなと思っていたら、まずは床に行って。 後でもう一度やり直す必要があるかもしれません。材料を全部入れて、 まずすべての皿をシンクに移します。カウンターを掃除します洗う 料理最後に床をきれいにしますこのほかに、事前トレーニング済みモデルの しかし、まずよく考えてから、 再作業は不要です

    日常的な作業を分解スキルを磨くための例として、 まだまだ気づけないよ。そうすれば、家の中の効率が上がるかもしれない!

  • 2 つの整数の最大公約数は、 両者を均等に分けます。たとえば、gcd(12, 18) = 6、gcd(−4, 14) = 2 です。 gcd を最も効率的に計算する方法は、ユークリッド アルゴリズムを使うことです。書き込み 2 つの整数に対して gcd を計算する関数を持つプログラムです。以下の手順をお試しください。 そのアルゴリズムがどのように機能するかを理解するのに役立ちます。 機能します。

    サブタスクを明示的に定義する(例: ユークリッドの アルゴリズムアルゴリズムの非再帰関数を作成する。こちらをご覧ください。 説明します。

例 5: 数学のパズル

コンピューティングの利点の一つは、 考えることができます。問題によっては、試行錯誤がうまくいく。 実際、コンピュータはそのような問題に特に得意です。次の点を考えてみましょう。

ウマは 10 ドル、ブタは 3 ドル、ウサギはたったの 0.5 ドルです。ある農家が 100 個購入 100 ドルで何匹の動物を買ったかがわかります。 

この問題には非常にシンプルな解決策があります。次の検出結果があるか確認 こちらで確認するようにしてください。

もう 1 つ試してみましょう。
本棚には、6 冊の本を左から右に並べる方法は何通りありますか。

今回は解答を提示して、プログラムを記述するだけです。 720。

例 6: 検討事項の文字列

次のプログラムは何を出力しますか。

#include <iostream>
using namespace std;

int main() {
  string str1 = "To be or not to be, that is the question";
  string str2 = "only ";
  string str3 = str1.substr(6, 12);
  str1.insert(32, str2);
  str1.replace(str1.find("to be", 0), 5, "to jump");
  str1.erase(9, 4);
  cout << str1 << endl;
  for (int i = 0; i < str3.length(); i++)
    cout << str3[i]; cout << endl;
}

[ こちらをご覧ください。

例 7: 分解による次のステップ - 入社初日

あなたは、ExerShoe という会社の営業担当者として、 高級なエクササイズ シューズで、1 足 225 ドルほどです。上司から 補償について 3 つのオプションを用意しており、 day:

  1. 週 600 米ドルの定給
  2. 1 時間あたり $7.00 の給与に加えて、売上に対する 10% の手数料。
  3. 給与はないが、靴を販売するたびに 20% のコミッションと 20 ドルが支払われる

C++ プログラマーであるあなたは、C++ のプログラマーが 最適な報酬を決定します

大規模なプログラムを分解する場合の一般的な手法は、 問題を解決するための概略図のようなメイン関数です。その後、 各タスクを実行する関数を記述します。

メイン プログラムの最初のパスは次のとおりです。

  GetInput(WeeklySales);
  CalcMethod1(WeeklySales);
  CalcMethod2(WeeklySales);
  CalcMethod3(WeeklySales); 

以下の各関数を実装できるかどうか、 ソリューションをご覧ください。

例 8: どこで購入できるか

次のプログラムの出力は次のようになります。

// scope.cpp, Maggie Johnson
// Description: A program to illustrate different scopes

#include <iostream>
using namespace std;

int a = 18;
int b = 6;

int function1(int a, int b) {
  return a - b;
}

int function2() {
  int c;
  c = a + b;
  return c;
}

int main() {
  int b = 12;
  int c = 0;
  a = function1(b, a);
  c = function2();
  cout << "a: " << a << " b: " << b << " c: " << c << endl;
}

答えを決めたら、こちらでコメント付きのコードをご確認ください。

例 9: ファイルの処理

C++ でのファイル処理は fstream を使用して実行されます。ファイルに保存するには、 宣言し、「out」コマンドを使用してモードです。これをチェック 見てみましょう。

// file.cpp, Maggie Johnson
// Description: An illustration of file processing
#include <fstream>
#include <iostream>
using namespace std;

int main() {
  char first_name[30], last_name[30]; int age;
  char file_name[20];
  // Collect the data.
  cout << "Enter First Name: "; cin >> first_name;
  cout << "Enter Last Name: "; cin >> last_name;
  cout << "Enter Age: "; cin >> age;
  cout << endl << "Enter the name of the file: "; cin >> file_name;

  // Create an ofstream called People, open the stream for output.
  ofstream People(file_name, ios::out);
  // Write the output to the stream.
  People << first_name << endl << last_name << endl << age << endl; return 0;
} 
  • 先ほど作成したファイルを開き、プロンプトを表示する方法を できます。解決策はこちらをご覧ください。
  • では、ユーザーが多くの入力を行えるように、このプログラムに修正を加えてみましょう。 ループを使用してデータレコードを作成します。すべてのデータを読み戻す必要もあります。 あります。解決策はこちらをご覧ください。

これで、エクササイズや 独自のプロジェクトに取り組むことができます。

Google でソフトウェア エンジニアになる

Google での仕事についてはこちら のウェブサイトをご覧ください。

演習とプロジェクト

以下のエクササイズは 基本的な C++ の演習をさらに行います。これらの演習に対するソリューションは提供しません。 他の受講生と一緒に取り組んでいただきたいと考えています。 ようこそ

  1. 一般的なフィールド クリケットの鳴き声は、現在の気温に正比例して鳴っています。 クリケットが 1 分間に鳴らす回数に 40 を足してから、 その値を 4 で割ることで温度が得られます入力として受け取るプログラムを作成する 現在の温度を出力します。対象 例:
    Number of chirps: 120
    The temperature is: 40.0 degrees. 
  2. プログラミング コースの最終成績を計算するプログラムを作成する 選択します。評価方式は次のとおりです。
    Final grades will be based on the following:
    40% Assignments   15% Midterm Examination
    35% Final Examination
    10% Class Participation Grade 

    プログラムでは、課題の 4 つのスコア(中間期、中期、中期)をユーザーに求めます。 あります。最終スコアが計算されて出力されます。 計算するには、4 つの課題のスコアを合計して平均します。 0.4(40%)を掛けます次に中間スコアと スコアは 0.15、最終スコアは 0.35、参加グレードは 0.1 となっています。次に、 これらの乗算の結果すべてを加算します

    このプログラムでは、できる限り関数を使用できます。関数を作成すると、 表示する文字列をパラメータとして渡して入力を取得する 確認できます実行例を次に示します。

    Enter the score for the first assignment. 75
    Enter the score for the second assignment. 85
    Enter the score for the third assignment. 82
    Enter the score for the fourth assignment. 94
    Enter the score for the midterm. 81
    Enter the score for the final. 89
    Enter the score for the section grade. 100
    The final grade is: 86.9
  3. 電子ストップウォッチがより安価で正確になるにつれ、 信じられないほど正確な時間計測であふれています。プログラムを作成する これは、秒単位で指定された時間を入力として受け取り、 時間、分、秒を表すものです。例:
    Number of seconds: 3662
    Hours: 1
    Minutes: 1
    Seconds: 2     
  4. 以下では、プログラムを記述する前に分解を行います。 うまく構造化されたプログラムを作るために可能な限り関数を使用する。

  5. 次のバナーを出力するとします。

    「FREEZY BREEZE MAKES 3 TREES FREEZE」

    これはバナーであるため、文字を大きくする必要があります。

    FFFFF
    F
    FFF
    F
    F
    
    EEEEE
    E
    EEE
    E
    EEEEE
    
    その他

    優れた問題分解者であれば、 すべての cout を main 関数に含めると 関数に入れる方法ですたとえば「printE」は関数 「printZ」使用できます。

    単語やフレーズのバナーを作成する関数を含むプログラムを作成する 多くの文字の繰り返しです。次のような可能性:

    FREEZY BREEZE MAKES FLEAS
    SNEEZE TWEETLE BEETLE PADDLE BATTLE
    SIX SICK CHICKS KICK
    SUE SEWS SUE'S SOCKS
    BEN BENDS BIM'S BROOM 
  6. これは「マジック ナンバー」です問題: ユーザーに 3 桁の数字 数値を返します。プログラムが逆になります 元の数からその逆数を引きます。最後に、 計算された数値を反転して、元の数値に加算します。出力 示されます。ユーザーが入力する元の数値は整数である必要があります 3 文字は使用できません。関数を記述する方法を考えて その数値の逆数を返します。例:
    input number: 901
    reverse it: 109
    subtract: 901 - 109 = 792
    reverse it: 297
    add: 297 + 792 = 1089   
  7. 法律により、食品メーカーは有効期限を設けることを義務付けています 法律の抜け穴があります。つまり、この法律の 有効期限を特定の形式に設定できます。このように スワヒリ語ではありますが、引き続き合法であることが必要です。

    ラルフ ネーダーさんの 3 人目のいとこであるナディーンさんは、自称フード クオリティ スパイです。 彼女は、多くの食品メーカーが 商品の有効期限を設定しておくと、 あります

    エンコードによって、食料品店は有効期限を知ることができます。 なんらかの理由で必要になったとします

    一般的なエンコード方法に、

    • 1 月から 12 月までの月を「A」とエンコードする「L」
    • 日付の各桁を「Q」としてエンコードするから「Z」まで
    • 年を「A」としてエンコードするから「Z」までつまり 1 から 26 までなので 1995 年に追加されました

    ナディーンさんは、この日付が特に疑わしいパン一斤を見つけました。ARZM。 日付を特定するプログラムを作成します。

  8. これは有名なカードトリックに例えられます。入力するようユーザーに依頼する 3 桁の数字数字を ABC(A、B、C は 3 つの単語の 。次に、x で生成された数の余りを求め、 ABC、BCA、CAB を 11 で割った値です。この余りを X、Y と呼び ZX+Y、Y+Z、Z+X のように足します。いずれかの合計が奇数の場合は、増加または 11 ずつ減らす(ただし、結果的に正の数値が 20 未満合計が 9 の場合は、これを報告して処理を停止します)。最後に、 それぞれの和を半分に割ります。結果の数字は A、B、C です。書き込み このアルゴリズムを実装するプログラムです。

アプリケーション: アニメーションで音楽を可視化する

ソフトウェア エンジニアは、さまざまな面白くて革新的なアプリケーションを作成します。 このコースの各モジュールでは、Google Cloud で開発された さまざまな領域を理解して、Google Cloud が 学びました。

こちらが興味深い例です 音楽を可視化するために作られたアプリケーションです。