型付きプログラミング言語。 §1言語に関する一般情報。 プログラムの設計段階。 アプリケーションライフサイクルモデルすべてcについて

コンピュータは、おそらく人類が自由に使える最も用途の広いツールです。 それらは信じられないほどの計算が可能であり、地球のさまざまな場所に完全に大量の情報を保存することができ、同時に場所に関係なく簡単に交換できます。 コンピューターは多くの日常業務を簡素化し、人にとって非常に退屈で退屈な多くの日常的なプロセスを自動化することを可能にします。 コンピューターは多くのことを実行できますが、それでも、人間とは異なり、コンピューターはインテリジェントではありません。 最も単純なプロセスでさえ自動化するには、コンピューターが正確に何をすべきかを明確かつ明確に言う必要があります。 残念ながら、私たちの言語とコンピューターの言語は完全に異なります。 したがって、機械と人の間には深刻な言語の障壁があり、それを何らかの方法で克服する必要があります。そうしないと、コンピューターが私たちを理解できません。 そして、コンピューターは私たちを理解していませんが、それ自体では何もしません。 人間とコンピューターの間の通信手段として、膨大な数のプログラミング言語が発明されました。 プログラミング言語の助けを借りて、私たちはプログラムを作成し、コンピューターはすでにプログラムと直接連携しています。 プログラム自体は、コンピューターが理解して実行できる一連の命令です。

プログラムの種類

私たちが望んでいるコンピューターと効果的に通信するために、さまざまなプログラミング言語があります。

プロジェクトの種類に応じて、プログラミング言語を選択する際に考慮すべき多くの要因があります。 最も注目すべき要因のリストは次のとおりです。

コンパイル、解釈、JITコンパイル

コンパイルプロセスは、プログラミング言語で記述されたコードをターゲットマシンのネイティブ言語に変換します。 このプロセスを実行するプログラムは、コンパイラーと呼ばれます。 コンパイルは、特にコンパイラが最適化に効率的である場合、コードを十分に高速に実行できます。 ただし、実際には、結果のコードはさまざまなオペレーティングシステムで機能せず、コンパイルプロセスには時間がかかり、コードが多いほど、コンパイルプロセスが長くなります。 プログラムコードに変更を加えるときは、それをコンパイルしてから実行する必要があることに注意してください。

解釈されたプログラミング言語は、インタープリターと呼ばれるプログラムによって読み取られ、同じプログラムによって実行されます。 解釈されたプログラミング言語は、インタープリターなどのさまざまなオペレーティングシステムで実行でき、コンパイル時間も長くありません。 しかし、解釈された言語で書かれたプログラムは、同等のコンパイルされたプログラムよりもはるかに遅く実行される傾向があります。

そして最後に、いわゆるオンザフライでのコンパイル(またはJITコンパイル)。 このような言語は、プログラムの起動時にすばやくコンパイルされます。 原則として、JIT言語で記述されたプログラムは最適化されないため、コンパイルプロセスが高速化され、パフォーマンスとクロスプラットフォームのバランスが回復します。

高または低プログラミングレベル

低レベルの言語はハードウェアと直接連携する傾向があるため、デバイスドライバーの作成に最適です。 ドライバーは、ハードウェアを制御し、ハードウェアに直接アクセスできるプログラムです。 ただし、低レベルの言語で記述されたプログラムは、通常、他のプラットフォームに移植するのが困難です。 したがって、OSごとに、同じデバイスに異なるドライバーが付属しています。 低レベルのプログラミング言語は、ほとんどの場合コンパイルされます。

高レベルの言語では、言語の概念に焦点が当てられます。 つまり、このようなプログラミング言語は、たとえば、データを配列、文字列、オブジェクトなどとして表すなど、理解しやすいものでなければなりません。通常、高レベルの言語は低レベルの言語よりも理解しやすいです。 そして、原則として、低レベルの言語よりも高レベルの言語でプログラムを開発する方がはるかに簡単で迅速です。 ご覧のとおり、さまざまなレベルのプログラミングが完全に異なるタスク用に設計されており、マルチレベル言語の機能を比較する価値はありません。意味がありません。

プログラミング言語のデータタイプシステム

すべてのプログラミング言語について、プログラミング言語が従わなければならないさまざまなルールを定義する仕様があります。 一部の言語にはデータタイプがないため、そうではありません。 ただし、ほとんどの言語(C ++を含む)にはデータタイプがあるため、この情報は役に立ちます。

強いまたは弱いデータタイプシステム

弱い入力システムは制限を課しません。プログラマーはこれを監視する必要があります。 「弱いデータシステム」とは、そのようなデータシステムを備えた言語が、利用可能なデータタイプの変換を厳密に規制していないことを意味します。 たとえば、文字列または記号が数値ではなく乗算関数に渡された場合、厳密に型指定されていないプログラミング言語はそのようなコードを実行しますが、文字列に数値を乗算することはできないため、乗算の結果はすべての意味を失います。 さらに、この無意味な乗算を実行した結果は予測できません。 プログラミング言語が厳密に入力されている場合、コンパイル段階で、トランスレータはエラーを報告し、プロジェクトのビルドプロセスを停止します。 例えば、

//サンプルC ++プログラム#include 名前名stdを使用します。 int main()(char string \u003d "example"; int number \u003d 5; cout<< string * number << endl; // умножаем строку на число }

その結果、コンパイラはエラーを報告します。

エラー:タイプ「char」および「int」の無効なオペランドからバイナリ「operator *」

緩く型付けされたプログラミング言語であるphpでも同じことを試してみましょう。 変数を宣言する場合でも、データタイプを指定する必要がないことに注意してください。

このコードを実行した結果はゼロになります。 文字列に数値を掛けることはできないように見えますが、エラーは発生しません。 しかし、phpではすべてが可能です。 phpコンパイラはエラーを報告せず、スクリプトは機能し、結果を生成します。プログラムが1000行のコードで構成されている場合、このエラーを見つけるのは困難です。 これは、「弱いデータタイプシステム」を備えたプログラミング言語の鮮やかな例です。つまり、このような不条理な操作の防止は、完全にプログラマーの肩にかかっています。

定義済みまたは未定義のデータタイプ

これは、コンパイルされた言語と解釈された言語の両方に適用されます。 多くの言語では変数のタイプを明示的に定義する必要があるため、あいまいさはなく、コンパイラとインタプリタは何をすべきかを明確に知っています。 一部のプログラミング言語では、変数のタイプを明示的に定義する必要はありません。 データタイプは、変数の内容によって自動的に決定されます。

静的または動的データタイプ

言語が静的に型付けされている場合、コンパイラー/インタープリターは、コンパイル/解釈プロセスの前に1回タイプチェックを実行します。 データタイプが動的である場合、データタイプは実行時にチェックされます。

安全または安全でないデータタイプシステム

予期しない結果やエラーが発生する可能性がある状況があります。 安全な言語は、そのような状況が発生しないように、可能な限り多くの制限を課します。 安全でない言語はプログラマーにすべての責任を負わせますが。

これらの要因は、1つまたは複数のプログラミング言語を特徴づけることができます。

サポートされているプログラミングパラダイム

プログラミングパラダイムは、プログラミング言語がサポートするプログラミング方法または手法です。 主なパラダイムのリストは次のとおりです。

宣言的パラダイム

宣言的プログラミング言語は、その目的を達成するための手段ではなく、目的に焦点を合わせます。 何を達成する必要があるかを示すだけで十分であり、それを使用することの意味を示す必要はありません。 このパラダイムは、独自のコードを作成するときに発生する可能性のある望ましくない副作用を回避します。

機能パラダイム

機能プログラミングは、数式と関数の観点から問題を解決しようとする宣言的プログラミングのサブセットです。 機能プログラミングは、必須言語とは異なり、変数とオブジェクトを共有されないデータとして扱います。

一般化されたパラダイム

一般化されたプログラミングは、定義されるデータタイプの観点からアルゴリズムを書くことに焦点を合わせています。 つまり、同じアルゴリズムが異なるデータタイプで機能します。 このアプローチは非常に強力なツールですが、適切に実装されている場合に限ります。

必須のパラダイム

必須言語を使用すると、プログラマーは、タスクを完了するために必要な命令の順序付きリストをコンピューターに提供できます。 必須のプログラミング言語は、宣言的なプログラミング言語とは対照的です。

構造パラダイム

構造プログラミング言語は、何らかの形式のコード(階層構造)を提供することを目的としています。 コードの構造がはっきりと見えると、ステートメントが実行される順序が直感的に明確になります。 このような言語は通常、コードのある部分から別の部分への「ジャンプ」を非難します。たとえば、CおよびC ++で定義されている有名なgoto演算子です。

手続きパラダイム

手続き型プログラミング言語とは、手続きまたはサブルーチンの概念をサポートする構造化プログラミング言語を指します。

オブジェクト指向のパラダイム

オブジェクト指向プログラミング(OOPと略されることもあります)は、「オブジェクト」の観点からプログラムを表現する構造化プログラミングのサブセットです。 このパラダイムにより、コードを理解しやすい方法で再利用できます。

標準化

言語には公式の基準がありますか? 標準化-これは、さまざまなコンパイラ/インタプリタがプログラムを競合なく理解できるようにするために非常に重要です。 一部の言語はAmericanNational Standards Institute(ANSI)によって標準化されており、その他の言語はInternational Organization for Standardization(ISO)によって標準化されています。 すべてのプログラミング言語を標準化する必要があります。そうしないと、構文の何が正しく、何が間違っているかについて合意することができません。

C ++プログラミング言語を特徴づけましょう

プログラミング言語の主な特徴を検討したので、C ++プログラミング言語が満たす要素を決定します。

C ++はISO標準のプログラミング言語です。

しばらくの間、C ++には公式の標準がありませんでしたが、1998年以降、C ++はISO委員会によって標準化されています。

C ++コンパイル済み言語。

C ++はマシンコードに直接コンパイルされるため、世界で最も高速な言語の1つになります。

C ++は厳密に型指定された言語です。

C ++は、プログラマーが自分のしていることを知っていることを前提としており、想像力によってのみ制限される、信じられないほどの可能性を可能にします。

C ++は、静的および動的データタイプをサポートします。

したがって、データタイプのチェックは、コンパイル時または実行時に実行できます。 そしてこれもまた、C ++の柔軟性を証明しています。

C ++は多くのパラダイムをサポートしています。

C ++は、手続き型、汎用、およびオブジェクト指向のプログラミングパラダイム、および他の多くのパラダイムをサポートします。

C ++は移植可能なプログラミング言語です。

世界で最も使用されている言語の1つとして、またオープン言語として、C ++には、さまざまなプラットフォームで動作するさまざまなコンパイラがあります。 C ++標準ライブラリコードは、多くのプラットフォームで機能します。

C ++は完全にC互換です

C ++では、Cライブラリを使用でき、それらは正常に機能します。

この記事では、scanf()関数は特定の標準に縛られることなく一般的な形式であると見なされるため、C99、C11、C ++ 11、C ++ 14標準のデータが含まれています。 おそらくいくつかの標準では、この機能は記事に示されている資料とは異なって機能します。

ScanfC機能-説明

scanf()は、stdio.h(C)およびcstdio(C ++)ヘッダーファイルにある関数であり、フォーマットされたプログラム入力とも呼ばれます。 scanfは、標準入力(stdin)から文字を読み取り、形式に従って変換してから、指定された変数に書き込みます。 形式-受信時のデータが特定のタイプに縮小されることを意味します。 したがって、scanfC関数は次のように記述されます。

scanf( "%format"、&variable1 [、&variable2、[...]])、

ここで、変数はアドレスとして渡されます。 変数を関数に渡すこの方法の理由は明らかです:その操作の結果として、エラーの存在を示す値が返されるため、変数の値を変更する唯一の方法はアドレスに渡すことです。 また、この方法のおかげで、この関数はあらゆるタイプのデータを処理できます。

一部のプログラマーは、他の言語との類似性から、scanf()やprintf()などの関数をプロシージャと呼びます。

Scanfを使用すると、char、int、float、stringなどの言語のすべての基本タイプを入力できます。 文字列型の変数の場合、文字列型の変数は配列であり、その名前はコンピュータメモリ内の配列の最初の要素のアドレスであるため、アドレス記号「&」を示す必要はありません。

データ入力フォーマットまたは制御文字列

説明からscanfC関数を使用する例を見てみましょう。

#include int main()(int x; while(scanf( "%d"、&x)\u003d\u003d 1)printf( "%d \\ n"、x); return 0; // Linuxシステムの要件)

入力形式は、次の4つのパラメーターで構成されます。%[*] [width] [modifiers] type。 この場合、「%」記号とタイプは必須パラメーターです。 つまり、最小形式は「%s」、「%d」などのようになります。

一般に、フォーマット文字列を構成する文字は次のように分けられます。

  • フォーマット指定子-%文字で始まるもの。
  • 区切り文字または空白文字-\u200b\u200bスペース、タブ(\\ t)、新しい行(\\ n)と見なされます。
  • 空白以外の文字。

機能が安全でない可能性があります。

scanf()の代わりにscanf_s()を使用してください。

(Visual Studioからの投稿)

タイプ指定子、フォーマット指定子、変換文字、または制御文字

scanf Cの説明には、少なくともフォーマット指定子が含まれている必要があります。フォーマット指定子は、「%」記号で始まる式の最後に示されます。 通常はキーボードから入力するときに予想されるデータの種類をプログラムに通知します。 すべてのフォーマット指定子のリストは、以下の表にあります。

プログラムは文字入力を待っています。 書き込む変数は、文字文字タイプである必要があります。

プログラムは、10進整数を入力することを想定しています。 変数はint型である必要があります。

プログラムは、指数形式の浮動小数点(comma)番号の入力を想定しています。 変数はfloat型である必要があります。

プログラムは、浮動小数点数(comma)の入力を想定しています。 変数はfloat型である必要があります。

7

プログラムは、浮動小数点数(comma)の入力を想定しています。 変数はfloat型である必要があります。

プログラムは、8進数が入力されるのを待っています。 変数はint型である必要があります。

プログラムは文字列が入力されるのを待っています。 文字列は、最初に検出された区切り文字までの任意の文字のセットです。 変数は文字列型である必要があります。

プログラムは、16進数が入力されるのを待っています。 変数はint型である必要があります。

変数はポインター入力を待機しています。 変数はポインター型でなければなりません。

scanf関数によって現在までに読み取られた文字数に等しい整数値を変数に書き込みます。

プログラムは符号なし整数を読み取ります。 変数タイプは符号なし整数である必要があります。

プログラムは2進数の入力を待っています。 変数はint型である必要があります。

スキャンされたシンボルのセット。 プログラムは、scanf間で指定された限られたプールからの文字の入力を想定しており、入力ストリームに指定されたセットの文字が含まれている限り機能します。

文字列文字をフォーマットする

アスタリスク(*)

アスタリスク(*)は、割り当て操作を抑制する必要があることを示すフラグです。 「%」記号の直後にアスタリスクが表示されます。 例えば、

Scanf( "%d%* c%d"、&x、&y); // 2つの整数の間の文字を無視します。 scanf( "%s%* d%s"、str、str2); // 2行の間の整数を無視します。

つまり、コンソールに「45-20」という行を入力すると、プログラムは次のことを実行します。

  1. 変数「x」には値45が割り当てられます。
  2. 変数「y」には値20が割り当てられます。
  3. また、マイナス記号(ダッシュ)「-」は「%* c」のおかげで無視されます。

幅(またはフィールド幅)

これは、%記号とフォーマット指定子の間の整数であり、現在の読み取り操作で読み取る最大文字数を指定します。

覚えておくべきいくつかの重要なポイントがあります:

  1. scanfは、20文字をカウントしていなくても、区切り文字が検出されると終了します。
  2. 20文字を超える文字が入力に入力された場合、最初の20文字のみがstr変数に書き込まれます。

タイプ修飾子(または精度)

これらは、入力が期待されるデータのタイプを変更する特別なフラグです。 フラグはタイプ指定子の左側に表示されます。

  • Lまたはl(小さいL)指定子d、i、o、u、xで「l」を使用する場合、フラグはプログラムに長いint入力が予想されることを通知します。 eまたはf指定子で「l」を使用する場合、フラグはプログラムにdouble値を待機するように指示します。 「L」を使用すると、長いdoubleが予想されることがプログラムに通知されます。 「l」を「c」および「s」指定子とともに使用すると、プログラムはwchar_tタイプのダブルバイト文字を予期するようになります。 たとえば、「%lc」、「%ls」、「%l」などです。
  • hはタイプshortを示すフラグです。
  • hh-変数が符号付きcharまたは符号なしchar値へのポインターであることを示します。 このフラグは、d、i、o、u、x、n指定子とともに使用できます。
  • ll(2つの小さいL)-変数がsignedintまたはunsignedlong longint値へのポインターであることを示します。 フラグは、指定子d、i、o、u、x、nで使用されます。
  • j-変数がstdint.hヘッダーファイルからのintmax_tまたはuintmax_tタイプへのポインターであることを意味します。 指定子とともに使用:d、i、o、u、x、n。
  • z-変数がsize_tタイプへのポインターであり、その定義がstddef.hにあることを示します。 指定子とともに使用:d、i、o、u、x、n。
  • t-変数がptrdiff_tタイプへのポインターであることを意味します。 このタイプの定義はstddef.hにあります。 指定子とともに使用:d、i、o、u、x、n。

より明確に言えば、修飾子付きの画像は表の形式で表すことができます。 scanf Cのこの説明は、プログラマーにとってより明確になります。

他のキャラクター

このフォーマットで検出された文字はすべて破棄されます。 制御行に空白または区切り文字(newline、space、tabulation)が存在すると、関数の動作が異なる可能性があることに注意してください。 あるバージョンでは、scanf()は、セパレータ以外の文字に遭遇するまで、任意の数のセパレータを保持せずに読み取ります。別のバージョンでは、スペース(それらのみ)は重要ではなく、式「%d +%d」は「%」と同等です。 d +%d "。

の例

関数の機能をより正確に考えて理解するのに役立ついくつかの例を見てみましょう。

Scanf( "%3s"、str); //コンソールに文字列「1d2s3d1; 3」を入力すると、「1d2」のみがstr scanf( "%dminus%d"、&x、&y);に書き込まれます。 // 2つの数字の間の「マイナス」の文字は破棄されますscanf( "%5"、str); //文字は5になるまでstrに入力され、文字は0から9までの数字になります。scanf( "%lf"、&d); //二重データ入力を待機しますscanf( "%hd"、&x); //短い数のscanf( "%hu"、&y);を期待します。 //符号なしの短い番号scanf( "lx"、&z);を期待します。 //長いintを期待します

上記の例から、さまざまな文字を使用して予想される数がどのように変化するかを確認できます。

scanfC-初心者向けの説明

このセクションは初心者に役立ちます。 多くの場合、関数の詳細ほどscanfCの完全な説明を手元に用意する必要はありません。

  • この機能はやや時代遅れです。 ライブラリのさまざまなバージョンには、いくつかの異なる実装があります。 たとえば、強化されたscanf S C機能は、マイクロソフトのWebサイトにあります。
  • 形式の指定子の数は、関数に渡される引数の数と一致する必要があります。
  • 入力ストリームの要素は、スペース、タブ、ニューラインなどの文字を区切ることによってのみ区切る必要があります。 カンマ、セミコロン、ピリオドなど-これらの文字はscanf()関数の区切り文字ではありません。
  • scanfで区切り文字が検出されると、入力が停止します。 読み取る変数が複数ある場合、scanfは次の変数の読み取りに進みます。
  • 入力データの形式にわずかな不一致があると、プログラムの結果が予測できなくなります。 プログラムが失敗しただけならいいです。 しかし、プログラムは機能し続け、間違っていることがよくあります。
  • scanf( "%20s ..."、...); 入力ストリームが20文字を超える場合、scanfは最初の20文字を読み取り、指定されている場合は終了するか、次の変数の読み取りに進みます。 次のscanf呼び出しは、前のscanf呼び出しが停止したポイントから入力ストリームの読み取りを続行します。 最初の20文字を読み取るときに区切り文字が検出されると、scanfは、最初の変数の20文字を読み取らなくても、動作を停止するか、次の変数の読み取りに進みます。 この場合、未読の文字はすべて次の変数に付加されます。
  • スキャンする文字のセットが「^」で始まる場合、scanfは、区切り文字またはセットの文字に遭遇するまでデータを読み取ります。 たとえば、「%[^ A-E1-5]」は、大文字の英語文字AからEのいずれか、または1から5の数字のいずれかに遭遇するまで、ストリームからデータを読み取ります。
  • scanf C関数は、その説明により、変数への成功したエントリの数に等しい数を返します。 scanfが3つの変数を書き込む場合、関数の正常な操作の結果は数値3を返します。scanfが変数を書き込むことができなかった場合、結果は0になります。最後に、scanfが何らかの理由でまったく動作を開始できなかった場合、結果はEOFになります。 ..。
  • scanf()関数がその作業を正しく完了しなかった場合。 たとえば、scanf( "%d"、&x)-数値が期待されていましたが、文字が入りました。 次のscanf()呼び出しは、前の関数呼び出しが終了した入力ストリーム内のポイントから開始されます。 この問題を克服するには、問題のあるシンボルを取り除く必要があります。 これは、たとえば、scanf( "%* s")を呼び出すことで実行できます。 つまり、関数は文字列を読み取って破棄します。 このトリッキーな方法で、必要なデータを引き続き入力できます。
  • scanf()の一部の実装では、スキャンされる文字セットで「-」を使用できません。
  • %c指定子は、ストリームから各文字を読み取ります。 つまり、区切り文字も読み取ります。 「%1s」を使用すると、区切り文字をスキップして、目的の文字を読み続けることができます。
  • 「c」指定子を使用する場合、幅「%10c」を使用できますが、charタイプの要素の配列を変数としてscanf関数に渡す必要があります。
  • 「%」は「英語のアルファベットのすべての小文字」を意味し、「%」は「z」、「a」、「-」の3文字のみを意味します。 つまり、「-」文字は、正しい順序の2つの文字の間にある場合にのみ範囲を意味します。 「-」が式の最後、最初、またはそれらの両側の文字の順序が間違っている場合、それは単なるハイフン文字であり、範囲ではありません。

結論

これでscanfCの説明は終わりです。これは、小さなプログラムで作業する場合や、手続き型プログラミングを使用する場合に便利な便利な機能です。 ただし、主な欠点は、scanfの使用時に発生する可能性のある予測できないエラーの数です。 したがって、scanf Cの説明は、プログラミング時に目の前に置いておくのが最適です。 大規模な専門プロジェクトでは、iostreamが使用されます。これは、iostreamが高レベルの機能を備えており、エラーをより適切にキャッチして処理できるようにし、大量の情報を処理できるためです。 また、ロシア語でのscanf Cの説明は、機能の古さから、多くのネットワークソースで利用可能であり、その使用例もあることに注意してください。 したがって、必要に応じて、テーマ別フォーラムでいつでも答えを見つけることができます。

1.はじめに

プログラミングには新しいユニバーサルアルゴリズムモデルが必要であり、ハードウェアは異なる形式だけでなく、別のアルゴリズムモデル(オートマトンモデル)に基づいてアルゴリズムを実装します。 ハードウェア開発の分野から技術を借りることは、オートマトンプログラミングの重要なアイデアです。 ただし、デジタルデバイスの合成はプログラミングとは異なります。 しかし、モデルを借用することは、一方ではそれを大幅に変更することは望ましくなく、他方では、プログラミングの既存の理論と実践を無視することはできません。

次に、このようなプロセスが頻繁に発生するオートマトンベースのプログラムを設計するためのSWITCHテクノロジーについて検討します。 一方で、それはステートマシンモデルを大幅に変更したため、実際にはオートマトン理論の範囲を超えていました。 一方で、プログラマーが理解するのが難しく、時には単に不必要な概念をプログラミングに導入します。 プログラム理論とプログラミング実践から、より身近な類似物があります。

オートマトンプログラミングの問題を議論するための基礎として、A.A。Shalytoによる最近の講演を行います。 オートマトンプログラミングパラダイムの定義に関する彼の「プログラマティック」記事。

C ++プログラミング言語

最終更新日:2017年8月28日

C ++プログラミング言語は、さまざまなアプリケーションの構築に適した、高レベルで静的に型付けされた汎用のコンパイル済みプログラミング言語です。 今日、C ++は最も人気があり普及している言語の1つです。

1969年から1973年にベルラボでプログラマーのデニスリッチーによって開発されたC言語にルーツがあります。 1980年代初頭、当時BellLabsにいたデンマークのプログラマーBjarneStroustrupは、C言語の拡張機能としてC ++を開発しました。 実際、当初、C ++は単にC言語にいくつかのオブジェクト指向のプログラミング機能を追加しただけでした。 そのため、Stroustrup自身は当初それを「クラス付きC」と呼んでいました。

その後、新しい言語が人気を博し始めました。 新しい機能が追加され、Cに追加されただけでなく、まったく新しいプログラミング言語になりました。 その結果、「CwithClasses」はC ++に名前が変更されました。 そしてそれ以来、両方の言語は互いに独立して発展し始めました。

C ++は強力な言語であり、Cから豊富なメモリ機能を継承しています。 したがって、C ++は、特にオペレーティングシステム、ドライバー、さまざまなユーティリティ、アンチウイルスなどを作成するときに、システムプログラミングでそのアプリケーションを見つけることがよくあります。 ちなみに、WindowsはほとんどC ++で書かれています。 ただし、この言語の使用はシステムプログラミングだけに限定されません。 C ++は、速度とパフォーマンスが重要なあらゆるレベルのプログラムで使用できます。 グラフィカルアプリケーションやさまざまなアプリケーションプログラムを作成するためによく使用されます。 また、リッチでリッチな視覚化を備えたゲームを作成するために特によく使用されます。 さらに、最近、モバイルの方向性が勢いを増しており、C ++もその用途を見出しています。 また、Web開発でも、C ++を使用してWebアプリケーションまたはWebアプリケーションを提供するある種のヘルパーサービスを作成することもできます。 一般に、C ++は広く使用されている言語であり、ほとんどすべての種類のプログラムを作成できます。

C ++はコンパイルされた言語です。つまり、コンパイラはC ++ソースコードを一連のマシン命令を含む実行可能ファイルに変換します。 ただし、プラットフォームごとに独自の特性があるため、コンパイルされたプログラムをあるプラットフォームから別のプラットフォームに単純に転送してそこで実行することはできません。 ただし、ソースコードレベルでは、現在のOSに固有の機能を使用しない限り、C ++プログラムはほとんど移植可能です。 また、ほぼすべての一般的なプラットフォーム用のコンパイラ、ライブラリ、および開発ツールが存在するため、同じC ++ソースコードをこれらのプラットフォーム用のアプリケーションにコンパイルできます。

Cとは異なり、C ++では、相互作用するクラスとオブジェクトのコレクションとしてプログラムを表す、オブジェクト指向のスタイルでアプリケーションを作成できます。 これにより、大規模なアプリケーションを簡単に構築できます。

開発の主な段階

1979-80年、Bjarne Stroustrupは、C言語の拡張機能である「CwithClasses」を開発しました。 1983年に言語はC ++に改名されました。

1985年に、C ++言語の最初の商用バージョンがリリースされ、公式の標準がない場合にこの言語の最初の説明を提供した本「C ++プログラミング言語」の最初の版がリリースされました。

1989年に、C ++ 2.0言語の新しいバージョンがリリースされました。これには、多くの新機能が含まれていました。 その後、言語は2011年まで比較的ゆっくりと発展しました。 しかし同時に、1998年に、ISO(International Organization for Standartization)によって言語を標準化する最初の試みが行われました。 最初の規格は、ISO / IEC 14882:1998、または略してC ++ 98と名付けられました。 その後、2003年に、C ++ 03標準の新しいバージョンが公開されました。

2011年に、新しいC ++ 11標準が公開されました。これには、多くの追加機能が含まれ、C ++言語が多数の新機能で強化されています。 その後、2014年に、C ++ 14としても知られる標準への小さな追加がリリースされました。 そして、この言語のもう1つの重要なリリースが2017年に予定されています。

コンパイラと開発環境

C ++プログラムを開発するには、コンパイラが必要です。コンパイラは、C ++ソースコードを実行可能ファイルに変換し、それを実行できます。 しかし、現時点では多くの異なるコンパイラがあります。 それらは、さまざまな側面、特に標準の実装において異なる可能性があります。 C ++のコンパイラの基本的なリストは、Wikipediaにあります。 開発には、すべての最新の標準を開発および実装するコンパイラを選択することをお勧めします。 したがって、このチュートリアル全体を通して、GNUプロジェクトによって開発された無料のg ++\u200b\u200bコンパイラが主に使用されます。

Visual Studio、Netbeans、Eclipse、QtなどのIDEを使用してプログラムを作成することもできます。

トピックの続き:
スマートフォン

Microsoft OneNote 2013のインターフェースは以前のバージョンから変更されており、より速く理解できるように、このガイドを紹介します...。