human
同じアプリケーションに2つの異なるソースコードを使用して、C ++プログラミング言語を使用して、構造化されたオブジェクト指向のプログラミングの違いを表示してください。
gpt
もちろん、ここでは同じC++アプリケーションの2つの異なるソースコードをお見せする。1つは構造化されたもの、もう1つはオブジェクト指向のものだ：

構造化コード：
```
    #include <iostream>
    #include <string>
    #include <cmath>

    using namespace std;

    int main() {
        double base, altura, area;
        string unidad;

        cout << "Ingresa la base del triángulo: ";
        cin >> base;

        cout << "Ingresa la altura del triángulo: ";
        cin >> altura;

        cout << "Ingresa la unidad de medida (cm, m, etc.): ";
        cin >> unidad;

        area = (base * altura) / 2;

        cout << "El área del triángulo es " << area << " " << unidad << " cuadrados." << endl;

        return 0;
    }
```


オブジェクト指向のコード：
```
    #include <iostream>
    #include <string>
    #include <cmath>

    using namespace std;

    class Triangulo {
        private:
            double base;
            double altura;
            string unidad;

        public:
            Triangulo(double b, double h, string u) {
                base = b;
                altura = h;
                unidad = u;
            }

            double calcular_area() {
                return (base * altura) / 2;
            }

            void imprimir_area() {
                double area = calcular_area();
                cout << "El área del triángulo es " << area << " " << unidad << " cuadrados." << endl;
            }
    };

    int main() {
        double base, altura;
        string unidad;

        cout << "Ingresa la base del triángulo: ";
        cin >> base;

        cout << "Ingresa la altura del triángulo: ";
        cin >> altura;

        cout << "Ingresa la unidad de medida (cm, m, etc.): ";
        cin >> unidad;

        Triangulo triangulo(base, altura, unidad);
        triangulo.imprimir_area();

        return 0;
    }
```

これら2つのコードの主な違いは、前者が一連のシーケンシャルな命令として構造化されているのに対し、後者は特定のタスクを実行するために必要なデータとメソッドをカプセル化したクラスとして構造化されていることだ。

オブジェクト指向のコードでは、Triangleクラスが三角形の面積を計算して表示するのに必要なデータ（底辺、高さ、単位）とメソッド（calculate_areaとprint_area）を定義している。メイン・プログラムはTriangleオブジェクトを作成し、そのprint_areaメソッドを呼び出して結果を表示する。

一方、構造化コードでは、変数はすべてグローバルで、プログラムは単純な関数を使って必要な計算を行い、結果を表示する。

オブジェクト指向プログラミングでは、クラスのインスタンスを複数作成し、それぞれが独立して同じタスクを実行できるため、モジュール性が高まり、コードの再利用が可能になる。また、クラス内にデータやメソッドをカプセル化することで、コードの複雑さが軽減され、保守やデバッグが容易になる。一方、構造化プログラミングは、オブジェクト指向プログラミングが提供するような複雑な構造を必要としない、単純で直線的な問題に適している。