Microsoft Windows の最初のバージョンは 1983 年に市場に登場しました。しかし、今日の Windows バージョンとは異なり、Windows 1.0 はオペレーティング システム (OS)ではありませんでした。 MS-DOSと呼ばれる既存のOSで動作するグラフィカル・ユーザー・インターフェースでした。バージョン 1.0 も、新しいバージョンとはあまり似ていませんでした。多くの人が Windows の最初の正式バージョンと考えている Windows 3.0 にも似ていませんでした。そのグラフィックスは今日のユーザー インターフェイスよりもシンプルで使用色も少なく、ウィンドウは重なることができませんでした。
それ以来、Windows は大きく変わりました。過去 20 年間、Microsoft はオペレーティング システムの本格的なバージョンを多数リリースしてきました。場合によっては、Windows 3.1 から Windows 95 への変更のように、新しいバージョンが古いバージョンと大きく異なる場合があります。1995 年から 1995 年までにリリースされた複数のコンシューマ バージョンの OS など、他の新しいリリースは、古いバージョンの拡張または改良のように見えます。 2001年。
Microsoft のオペレーティング システムの最新バージョンはWindows Vistaです。多くのユーザーにとって、Vista へのアップグレードは、3.1 から Windows 95 へのアップグレードほど劇的なものではないように思えます。しかし、Windows Vista には、見える部分と見えない部分の両方に、多数の新機能があります。
Windows Vista も、本質的には依然としてオペレーティング システムです。舞台裏では主に次の 2 つの仕事があります。
Windows Vista の GUI は、 Windows Aeroと呼ばれる 3D インターフェイスです。 Windows Vista の 4 つのエディションのうち、 Home Premium 、 Business 、 Ultimate の3 つは Windows Aero をサポートしています。 OS の最も縮小されたエディションであるHome Basic は、Aero の代わりにグラフィックスをあまり使用しない GUI を使用します。他のエディションでもこの基本 GUI を使用できるため、多くの 3D グラフィックスをサポートできない古いコンピュータを使用している人でも、Vista にアップグレードできます。
次に、Aero GUI とその他の Vista 機能を詳しく見ていきます。
各エディションに含まれる機能の詳細については、「」を参照してください。
感謝版と追加版
この記事の作成にご協力いただいたJason Caudillに感謝します。
Windows Vista の 4 つのプライマリ エディションに加えて、特別市場向けの 2 つのエディションがあります。 Windows Vista Enterprise は、非常に大規模なビジネス向けに設計されています。 Windows Vista Starter は、発展途上国などの新興市場で使用される基本的な Vista OS です。
Windows Vista:エアロ
ある意味、Windows Aero は、Windows XP で使用されているものなど、Windows GUI の最新バージョンに似ています。 Aero は、情報を画面上のウィンドウに整理し、アイコンを使用してファイル、フォルダー、アプリケーションを表します。ただし、Aero には、Windows XP GUI へのアップグレードと考えられるいくつかの機能もあります。そのウィンドウは 3 次元オブジェクトであり、任意の方向に移動および調整できます。 Aero Glass では各ウィンドウの境界線が半透明になるため、その背後にあるデスクトップや他のウィンドウが見えるようになります。 Microsoft は、境界線が明確なため、インターフェイスではなく作業に集中できると主張しています 。
また、Vista では、古い Windows GUI で多くのファイルを表す単純で静的なアイコンが、より精巧なライブ アイコンに置き換えられます。ライブ アイコンでは、各ファイルの最新のサムネイル プレビューが表示されます。ドキュメントのライブ アイコンを見ると、ドキュメントを作成したプログラムのアイコンが表示されるのではなく、ドキュメントが実際にどのように見えるかがわかります。エクスプローラーのプレビュー ペインを使用して、ファイルを開く前にファイルの内容を確認することもできます。
「alt」キーと「tab」キーを使用して開いているウィンドウ間を移動するときに表示されるアイコンも、同様のサムネイルに置き換えられます。 Aero の「alt + tab」のより基本的なバージョンはFlipと呼ばれ、メニュー バー上の 2-D サムネイル プレビューから選択できます。もう 1 つの機能であるFlip 3D を使用すると、2D 画像ではなく 3D の動くサムネイルから選択できます。さらに、タスク バー上の項目の上にマウスを置くと、アプリケーションとファイル名をリストするテキストの代わりに、各ウィンドウの 2D サムネイルが表示されます。
新しい機能、特に 3-D GUI のため、Vista には以前のバージョンの OS とは異なるハードウェア要件があります。これらの要件を検討し、次に Vista が 3-D デスクトップを作成する方法を検討します。
WinFS
Windows Vista の開発中に、Microsoft は と呼ばれる新しいファイル システムを組み込むことを計画しました。 Windows Future System の略で、リレーショナル データベースにデータを保存します。情報を一連のフォルダーやサブフォルダーに保存するのではなく、ドライブのデータのインデックスを作成します。 2004 年 8 月、Microsoft は、これが Vista に含まれないことを発表しました。代わりに、同社は既存のファイル構造に新しい検索機能を追加しました。
Windows Vista: 3-D デスクトップの作成
Windows Vista のデスクトップ環境は、以前のバージョンの OS よりもかなり多くのコンピュータ リソースを必要とします。このため、また OS の安定性を高めるために、Vista のグラフィック サブシステムは以前のものとは異なります。
まず、Windows Vista は、 Windows ディスプレイ ドライバー モデル (WDDM)として知られる新しいグラフィックス ドライバー モデルを使用します。以前の Windows グラフィック ドライバーはカーネル モードで実行されていました。彼らはグラフィックス ハードウェアに直接アクセスでき、そのパフォーマンスがオペレーティング システムに影響を与える可能性がありました。これが、グラフィックス エラーによりシステム全体が応答停止する可能性がある理由です。ただし、WDDM は主にユーザー モードで実行されます。グラフィックス ハードウェアやオペレーティング システムの重要な部分に直接アクセスすることはほとんどありません。 Microsoft は、Vista のオーディオ サブシステムにも同様の変更を加えました。これらの変更は、OS の安定性を高めるのに役立ちます。
WDDM は、グラフィックス プロセッシング ユニット (GPU) のワークロードを管理します。さまざまなタスクに必要なビデオ メモリを割り当て、GPU へのアクセスが必要なアプリケーションを優先します。言い換えれば、コンピュータのビデオ処理リソースの予算を確保するのに役立ちます。 3D グラフィックスを多用する OS とアプリケーションはコンピュータのグラフィックス リソースを共有する必要があるため、これは特に重要です。
WDDM は、アプリケーションへのアクセスに使用するウィンドウの作成の中心となりますが、それらのプログラムと直接通信しません。代わりに、アプリケーション プログラミング インターフェイス (API)を通じてプログラムと対話します。 API は、複雑なタスクに対する一連の命令を提供することで、ハードウェアとソフトウェアの通信をより効率的にするのに役立ちます。 Windows Vista は API として DirectX 9 を使用できますが、新しいバージョンのDirectX 10は OS に組み込まれた専用の部分です。
このすべての 3D レンダリングには大量の処理能力が必要です。 Aero および Windows Vista のハードウェアを多用する機能の一部を使用するには、コンピュータがPremium Readyである必要があります。 3D イメージの継続的な作成と操作を処理するには、十分なシステム メモリとグラフィックス メモリが必要です。これが、Premium Ready コンピューターの要件が 3-D ゲームに期待されるものと似ている理由です。以下が必要です:
1 GHz 32 ビットまたは 64 ビット プロセッサ
1GBのシステムメモリ
少なくとも 15 GB の空き容量がある 40 GB のハード ドライブ
少なくとも 128 MB のグラフィックス メモリ
また、コンピューターは DirectX 9 をサポートし、DVD-ROM ドライブを備え、インターネットにアクセスできる必要があります。 Microsoft は、Premium Ready システムに必要なコンポーネントをすべて備えています。
Windows Vista へのアップグレードを検討していて、Aero インターフェイスを使用したい場合は、これらが最小要件であることに留意してください。コンピューターがこれらの仕様を正確に満たしていれば、3-D インターフェイスを作成できます。ただし、マルチタスクを行っている場合や、画像を多用するゲームをプレイしている場合は、行き詰まる可能性があります。専用のビデオ カードを持たないラップトップまたはデスクトップで Vista を実行したい場合は、GUI の利点がシステム リソースにかかる負担を上回らないことがわかるかもしれません。 Aero ユーザー インターフェイスから最適なパフォーマンスを得るには、コンピューターは、独自のグラフィックス メモリを備えた別個のビデオ カードを含め、最小推奨事項を超える必要があります。
Microsoft は、基本インターフェイスを使用するコンピューターに関するさまざまな最小要件を公開しています。それらには次のものが含まれます。
800 MHz 以上の最新プロセッサ
512MBのシステムメモリ
DirectX 9をサポートするグラフィックプロセッサ
Microsoft は、Vista のネットワークとセキュリティの処理方法にもいくつかの変更を加えました。これらの変更については次のセクションで見ていきます。
コンピュータで音楽を聴きながらIMで誰かと話そうとした経験があるかもしれません。場合によっては、音楽に合わせて IM 通知音を大音量で聞くか、完全にオフにするかを選択することもあります。 Windows Vista では、各アプリケーションの送信ボリュームを変更できるようにすることで、この問題を解決しています。
Vista には、複数の場所でコンピュータを使用する必要があるユーザー向けのネットワーク認識機能も含まれています。ネットワーク認識は、ユーザーのコンピュータがどのネットワークを使用しているかを検出し、適切な設定を適用します。
Vista には、ユーザーが自分のネットワークを保守および修復するのに役立つツールも含まれています。ネットワーク診断機能は、一部のネットワークの問題を独自に検出して修復できます。また、ネットワーク接続を復元するために必要な手順をユーザーに案内することもできます。これを行うには、 Windows 診断インフラストラクチャ (WDI) を使用するツールのコレクションを使用します。
WDI は、ネットワーク診断フレームワーク (NDF ) やいくつかの API など、いくつかのコンポーネントの構造を提供します。 NDF は、ネットワーク診断エンジンと Microsoft およびサードパーティのヘルパー クラスを使用して、クライアント側のネットワークの問題を特定し、トラブルシューティングします。ヘルパー クラスはトラブルシューティング プロトコルであり、ネットワーク診断エンジンはヘルパー クラス API を介してヘルパー クラスと通信します。インターネットにアクセスする必要があるアプリケーションは、API を使用して Vista のトラブルシューティング機能にアクセスすることもできます。
Vista に対するその他の変更により、ネットワークまたはインターネットに接続した後のコンピュータのセキュリティが向上するはずです。一部の専門家は、セキュリティに関する以前の問題は Windowsカーネルのせいだと主張しています 。 Vista は以前のバージョンの Windows と基本的に同じカーネルを使用していますが、Microsoft はアプリケーションが Windows と対話する方法にいくつかの変更を加えています。この変更により、コンピューターがより安定するだけでなく、アプリケーションを悪用してカーネルに影響を与えることを目的とした悪意のあるコードを作成することがより困難になります。
Vista には、システムの安全性を高めるために使用できるアプリケーションとツールも含まれています。以前のバージョンの Windows と同様に、Vista ではセキュリティ更新プログラムを自動的に確認、ダウンロード、インストールできます。さらに、次のような新しいセキュリティ機能がいくつかあります。
ユーザー アカウント制御 (UAC) を使用すると、特定のコンピュータの各 Windows Vista ユーザーが独自のアカウントを設定できます。管理者権限を持つユーザーは、さまざまなアカウントがどのような種類のアプリケーションをインストールできるか、またコンピュータの設定にどのような変更を加えることができるかを決定できます。多くの場合、ソフトウェアをインストールしたり、オペレーティング システムに変更を加えたりするには、管理者のパスワードが必要です。
また、UAC では、保護者がペアレント コントロールを使用して、子供がプレイできるゲームの種類や表示できる Web コンテンツの種類を管理できます。保護者はコンピューターの使用時間制限を設定することもできます。
ユーザー アカウント制御、 Windows ファイアウォール、 Windows Defender 、および悪意のあるソフトウェア削除ツールは、システムのセキュリティを向上させ、ウイルスやスパイウェアの防止と削除に役立ちます。ただし、多くの業界専門家はユーザーに追加のウイルス対策をインストールするようアドバイスしています。
MicrosoftはVistaが以前のバージョンのWindowsより安全でセキュアであると紹介しているが、新しいOSには論争がないわけではない。批評家は、検索、サイドバー、プレビュー ペイン機能を含むその機能の多くが、Linux や Macintosh OS X などの他のオペレーティング システムにすでに存在していることを指摘しています。ベータ テスターは、UAC のパスワード要件が侵略的で煩わしいと述べています。アプリケーションがカーネルと対話する方法の変更によるセキュリティの向上は長くは続かないと主張する人もいます。 Vista は、特に統合されたマルウェア削除ツールが原因で、いくつかの国で独占禁止法違反でも告発されています。
その他の批判はラップトップに特有のものです。 Aero の 3D レンダリングのハードウェア要件により、古いバージョンの Windows よりもラップトップのバッテリーが早く消耗する可能性があります。ラップトップが使用されていないときに、スリープ状態によってラップトップのバッテリーが消耗する場合もあります。
Vista は、2006 年 11 月 30 日にボリューム ライセンス購入者向けに市場に投入され、2007 年 1 月 30 日に一般公開されました。3-D GUI と関連するハードウェア要件により、人々のコンピュータの購入方法を変える可能性があります。特にグラフィックスハードウェアに関しては。 Windows Vista と以前のバージョンの違いが Windows Vista をより安定した安全な OS にするのか、それとも最も重要な変更が表面的なものであるのかは時間が経てばわかります。
Windows Vista の機能とコストの詳細については、Microsoft の情報を確認してください。コンピュータ、オペレーティング システム、および関連トピックの詳細については、次のページのリンクを参照してください。
これが何を意味するかというと、ブラウザは通常、アクセスしたサイトの Web アドレス (URL と呼ばれます) を保存します。これにより、後で再度見つけやすくなります。
プライベート (シークレット) モードでは、ブラウザの動作が少し異なります。検索履歴はローカルに保存されません。これは、サプライズのプレゼントを買うときや、成人向け Web サイトを閲覧しているときなど、同じデバイスを使用している他の人から閲覧履歴を隠すのに最適です。しかし、それはあなたの活動が完全にプライベートであるという意味ではありません。
「Cookie のような Web 追跡機能の当初の設計は、追跡が個々のサイト内のみで行われ、ユーザーが望まない限り、個別の閲覧セッションに接続されないという期待に基づいていました」とショーエン氏は言います。 「これらの規範は両方とも、インターネット広告業界によって大幅に違反されています。インターネット広告業界は、人々がオンラインで何をしているのかについて、長期にわたって詳細かつ包括的なプロファイルを作成することがよくあります。」
Microsoft Excel のグラフと棒グラフは、ビジネスや個人の財務管理にすでに多くの機能を提供していますが、AI はそれをさらに進化させることができます。 ChatGPT を使用して MS Excel スプレッドシートを作成する場合は、簡単なものから始めて、段階的に複雑さを加えていきます。迷った場合は、いつでも AI に説明を言い換えたり、より詳細に分解したりするよう依頼できます。
まず、一部のユーザーは、モバイル フォト プリンタで作成された写真の品質が標準以下であると不満を抱いています。 PC Magazine の専門評論家の一人である David Stone は、テスト写真の半分は色が歪んでおり、一部は「色褪せている」と主張しました 。彼はまた、プリンターが宣伝している想定される耐水性をテストしたところ、写真は水滴に耐えてもすぐに拭き取れるが、水滴が表面上で乾くと画像に影響が出ることがわかりました。これらのねじれを今後の進歩で解決できるかどうかは、時間が経てば分かるだろう。
クリック詐欺は、既存のテクノロジーを新たに使用する際に時々発生する、一見矛盾した概念の 1 つです。この場合、クリックがお金を意味する Web 広告の、クリックがクリックを意味する検索エンジン テクノロジーの領域への拡張について話しています。 Google の検索ベースの広告の場合、ここで説明する広告は基本的に 2 種類あります。1 つは Google 検索結果の右側に表示される広告、もう 1 つは検索結果ページに表示される広告です。 Google 広告をホストする他の無数の Web サイト。これらの広告をクリックすると、Google は事前に設定されたクリックごとの料金を広告主に請求します。
では、クリックがクリックではないのはどのような場合でしょうか?誰かがコンピュータの前に座って、何も考えずに 1 つの Google 広告を何度もクリックしている可能性もありますし、コンピュータ プログラムやウイルスが同じことをしている可能性もあります。クリック詐欺の最も基本的なものは、クリックの意図にあります。ここで、クリック詐欺の概念が曖昧になります。
検索ベースのインターネット マーケティングは巨大なビジネスです。それは検索エンジンに利益をもたらします。検索エンジンの広告結果をホストする Web サイトが収益を上げます。そして、誰かが検索を通じて広告主を見つけると、広告主にお金が入ります。しかし、これは昔ながらの「私のバナー広告をここに掲載してください」というタイプの広告ではなく、複数のステップから成るトランザクションの網目です。したがって、クリック詐欺がなぜこれほど大きな問題なのかを理解するためには、クリック詐欺により Google は年間約 10 億ドルの収益損失が発生し、小規模な広告主が廃業に追い込まれる可能性があるとされています。この種の広告がどのように行われるのかについて基本的に理解しておくと役立ちます。動作します。
また、広告主は不正なクリックごとに Google に料金を支払うことになるため、Google もこの種の広告詐欺から利益を得られるように思えるかもしれませんが、実際には全体的な結果は Google にとって悪いものとなります。クリック詐欺は広告ネットワークの品質を低下させます。ネットワークの価値は、最終的には広告ビューとクリックを生成する能力だけでなく、生産的なクリックを生成する能力にもあります。販売や問い合わせにさえ結びつかないクリックが増えれば増えるほど、ネットワークの品質が低下し、Google がキーワードに対して請求できる料金が安くなります。 Googleは、ネットワーククリック詐欺の疑いでパートナーパブリッシャーに対して少なくとも1件の訴訟を起こしている。
彼は独自に調査したところ、膨大な数の広告クリックが 1 つの IP アドレスから送信されていることがわかりました。ヘンディソンさんは虐待を止めるためにこれらの会社の1つを雇ったが、その費用は月に数百ドルもかかっていた。同社は、疑わしい IP アドレスを確認し、誰がクリックを行ったかに関するデータを提供し、問題の IP アドレスを持つ人が次回その広告をクリックしたときにヘンディソンが作成したメッセージがポップアップ表示されるようにヘンディソンの広告を設定しました。
情報技術 (IT) の専門家である場合は、C 言語を学習することも有益です。IT 専門家は、仕事の一環としてスクリプトを作成、保守、実行することがよくあります。スクリプトは、コンピュータのオペレーティング システムが従うべき命令のリストです。特定のスクリプトを実行するために、コンピュータはシェルと呼ばれる制御された実行環境をセットアップします。ほとんどのオペレーティング システムは C ベースのシェルを実行するため、 C シェルはIT プロフェッショナルによって使用される C の一般的なスクリプト化です。
この記事では、C の背後にある歴史を取り上げ、C がなぜそれほど重要なのかを考察し、いくつかの基本的な C コードの例を示し、データ型、演算、関数、ポインター、メモリ管理などの C の重要な機能をいくつか探ります。この記事は C プログラミングの取扱説明書ではありませんが、平均的な C プログラミング ガイドの最初の数章を超える方法で、C プログラミングのユニークな点について説明しています。
まずは、C プログラミング言語がどこから来たのか、どのように発展してきたのか、そして今日のソフトウェア開発において C プログラミング言語が果たしている役割を見てみましょう。
Cって何ですか?
C を定義する最も簡単な方法は、C をコンピューター プログラミング言語と呼ぶことです。これは、コンピューターで実行できるソフトウェアを作成できることを意味します。その結果、Web ブラウザのような大規模なコンピュータ アプリケーションが作成されたり、マイクロプロセッサやその他のコンピュータ コンポーネントに埋め込まれた小さな命令セットが作成されたりする可能性があります。
C 言語は 1970 年代初頭にベル研究所で開発され、主に Ken Thompson と Dennis Ritchie の研究によるものとされています。プログラマーは、当時アセンブリ言語で書かれたプログラムを必要としていた UNIX オペレーティング システム用の、よりユーザー フレンドリーな命令セットを必要としていました。コンピュータのハードウェアと直接対話するアセンブリ プログラムは長くてデバッグが難しく、新しい機能を追加するには退屈で時間のかかる作業が必要でした 。
トンプソン氏の高級言語への最初の試みは B と呼ばれ、そのベースとなったシステム プログラミング言語 BCPL に敬意を表しました。 Bell Labs が Digital Equipment Corporation (DEC) の UNIX システム モデル PDP-11 を取得したとき、Thompson は、より新しく優れたシステム ハードウェアの要求にさらに適合するように B を作り直しました。こうしてBの後継者Cが誕生した。 1973 年までに、C は十分に安定しており、この革新的な新しい高水準言語を使用して UNIX 自体を書き直すことができるようになりました 。
C と UNIX での C の使用は、1980 年代までのオペレーティング システム開発ブームの一部にすぎませんでした。ただし、以前のバージョンに比べて C はあらゆる点で改善されていますが、大規模なソフトウェア アプリケーションの開発に C を使用するのはまだ簡単ではありませんでした。コンピューターがより強力になるにつれて、より簡単なプログラミング体験に対する需要が高まりました。この需要により、プログラマは C を使用して独自のコンパイラを構築し、したがって独自の新しいプログラミング言語を構築するようになりました。これらの新しい言語を使用すると、多くの可動部分を伴う複雑なタスクのコーディングを簡素化できます。たとえば、C++ や Java などの言語はどちらも C から開発され、プログラマのコード再利用能力を最適化するプログラミング アプローチであるオブジェクト指向プログラミングを簡素化しました。
C コードの内容を確認する前に、C コンパイラを見つけて使用できることを確認しましょう。 Mac OS X およびほとんどの Linux ディストリビューション (Ubuntu など) を使用している場合、その特定の OS 用の開発ツール ソフトウェアをインストールすると、コンピュータに C コンパイラを追加できます。これらの無料の C コンパイラはコマンド ライン ツールです。つまり、通常はターミナル ウィンドウのコマンド プロンプトから実行します。これらの C コンパイラのいずれかを実行するコマンドは、「cc」または「gcc」にいくつかのコマンド ライン オプションと引数を加えたものです。これらは、コマンドの後に Enter キーを押す前に入力する単語です。
Microsoft Windows を使用している場合、またはコマンド ラインではなくグラフィカル ユーザー インターフェイスを使用したい場合は、C プログラミング用の統合開発環境 (IDE) をインストールできます。 IDE は、コードの作成、コンパイル、テスト、エラーの迅速な発見と修正を行うことができる単一のインターフェイスです。 Windows の場合は、C と C++ の両方のプログラミング用の IDE である Microsoft Visual C++ ソフトウェアを購入できます。もう 1 つの人気のある IDE は Eclipse です。これは、Windows、Mac、Linux 上で動作する無料の Java ベースの IDE で、C やその他の多くのプログラミング言語のコンパイルに使用できる拡張機能があります。
C の場合、他のコンピューター プログラミング言語と同様に、使用するコンパイラーのバージョンは非常に重要です。プログラムで使用している C 言語のバージョンと同じか、それよりも新しいバージョンの C コンパイラを使用する必要があります。 IDE を使用している場合は、IDE が作業中のプログラムのターゲット C バージョンを使用するように設定を調整してください。コマンド ラインを使用している場合は、次のコマンドのようにコマンド ライン引数を追加してバージョンを変更できます。
gcc –std c99 –o myprogram.exe myprogram.c
上記のコマンドでは、「gcc」はコンパイラを実行するための呼び出しであり、それ以外はすべてコマンド ライン オプションまたは引数です。 「-std」オプションの後に「c99」が追加され、コンパイル中に C の C99 標準バージョンを使用するようにコンパイラに指示しました。 「-o」オプションの後に「myprogram.exe」が追加され、実行可能ファイル (コンパイラの出力ファイル) に myprogram.exe という名前を付けるように要求されました。 「-o」を指定しないと、実行可能ファイルには自動的に a.out という名前が付けられます。最後の引数「myprogram.c」は、コンパイルする C コードを含むテキスト ファイルを示します。つまり、このコマンドは、「ねえ、gcc、C99 C プログラミング標準を使用して myprogram.c をコンパイルして、結果を myprogram.exe という名前のファイルに入れてください」と言っているのです。 gcc であろうと他のものであろうと、特定のコンパイラーで使用できるオプションの完全なリストについては、Web を参照してください。
コンパイラがインストールされたら、C でプログラミングする準備が整います。まず、作成できる最も単純な C プログラムの 1 つの基本構造を見てみましょう。
最も単純な C プログラム
簡単な C プログラムを見て、それを使用して C の基本と C のコンパイル プロセスを理解しましょう。前に説明したように C コンパイラがインストールされた自分のコンピュータがある場合は、sample.c という名前のテキスト ファイルを作成し、それを使用してこの例を手順に従って進めることができます。ファイル名で .c を省略した場合、またはエディターがファイル名に .txt を追加した場合、コンパイル時に何らかのエラーが発生する可能性があることに注意してください。
行 2 — #include コマンドは、既存の C コードの他のソース、特に再利用可能な一般的な命令を含むファイルであるライブラリを調べるようにコンパイラーに指示します。は、ユーザーから入力を取得し、出力を画面に書き込むための関数を備えた標準 C ライブラリを参照します。ライブラリについては後ほど詳しく見ていきます。
行 3 — この行は関数定義の最初の行です。すべての C プログラムには、少なくとも 1 つの関数、またはプログラムの実行時にコンピューターが行うべきことを表すコード ブロックがあります。関数はタスクを実行し、他の関数で使用できる戻り値と呼ばれる副産物を生成します。プログラムには少なくとも、ここで示したような main という関数があり、データ型が int (整数を意味する) の戻り値を持ちます。後ほど関数を詳しく調べるときに、空の括弧が何を意味するかがわかります。
データ型— プログラムの実行中にデータをメモリに保存し、そのデータに対してどのような操作を実行できるかを知るために、C などのプログラミング言語は認識できる特定のデータ型を定義します。 C の各データ型には、バイナリのビットまたはバイトで測定される特定のサイズと、そのビットが何を表すかについての特定の規則があります。 C を使用する場合、タスクに適切なデータ型を選択することがいかに重要であるかが今後わかります。
演算— C では、数値に対して算術演算 (加算など) を実行したり、文字列に対して文字列演算 (連結など) を実行したりできます。 C には、データに対して実行したいことのために特別に設計された組み込みの操作もあります。 C のデータ型を確認するときは、操作についても簡単に見ていきます。
データ構造— プログラムで処理するデータが大量にあり、そのデータを並べ替えたり検索したりする必要がある場合、おそらく何らかのデータ構造を使用することになるでしょう。データ構造は、同じデータ型の複数のデータを表す構造化された方法です。最も一般的なデータ構造は配列です。これは、指定されたサイズのインデックス付きリストにすぎません。 C には、いくつかの一般的なデータ構造を処理するために使用できるライブラリがありますが、いつでも関数を作成して独自の構造を設定することもできます。
C プログラムには、少なくとも main という名前の関数が 1 つあります。コンパイラは、main 関数がプログラム内の他の関数を呼び出している場合でも、プログラムの開始点として main 関数を探します。以下は、以前に見た単純な C プログラムで見たメインです。これは戻り値の型が整数で、パラメータをとらず、2 つのステートメント (関数内の命令) があり、そのうちの 1 つは return ステートメントです。
int main()
{
printf(“これは私の最初のプログラムからの出力です!\n”);
0を返します。
}
main 以外の関数には、定義と 1 つ以上の関数呼び出しがあります。関数呼び出しは、別の関数内のステートメントまたはステートメントの一部です。関数呼び出しでは、呼び出している関数の名前を括弧で囲んで指定します。関数にパラメータがある場合、関数呼び出しにはそれらのパラメータと一致する対応する値が含まれている必要があります。関数呼び出しのこの追加部分は、関数へのパラメーターの受け渡しと呼ばれます。
しかし、パラメータとは何でしょうか?関数のパラメーターは、関数が動作するために必要な特定のデータ型のデータです。 C の関数は、引数とも呼ばれるパラメーターを無制限に受け入れることができます。関数定義に追加される各パラメーターは、関数ブロック内のデータ型と変数名の 2 つを指定する必要があります。複数のパラメータはカンマで区切られます。次の関数には 2 つのパラメーターがあり、どちらも整数です。
int doubleAndAdd(int a, int b)
{
戻り値 ((2*a)+(2*b));
}
次に、ズームアウトして関数の観察を続け、より大きな C プログラム内で関数がどのように適合するかを見てみましょう。
関数プロトタイプ
C では、プログラム内のどこにでも関数定義を追加できます (別の関数内を除く)。唯一の条件は、関数がコードの後半のどこかに存在することをコンパイラに事前に通知する必要があることです。これは、プログラムの最初に関数プロトタイプを使用して行います。プロトタイプは、定義の最初の行に似たステートメントです。 C では、プロトタイプのパラメーターの名前を指定する必要はなく、データ型のみを指定する必要があります。 doubleAndAdd 関数の関数プロトタイプは次のようになります。
C では、特に古い C プログラマの間では、関数プロトタイプよりも関数宣言という用語をよく聞くでしょう。ただし、この記事では関数プロトタイプという用語を使用していますが、これには重要な違いがあるためです。元々、関数宣言にはパラメーターは必要なかったため、戻り値の型、関数名、および空のかっこのペアで十分でした。ただし、関数プロトタイプは、呼び出すパラメーターの数とデータ型を含めることにより、コンパイラーに重要な追加情報を提供します。プロトタイプは、今日のプログラマーの間で、C やその他のプログラミング言語のベスト プラクティス アプローチとなっています。
C プログラマが知っておくべきもう 1 つの重要なことは、言語が符号付きデータ型と符号なしデータ型をどのように処理するかということです。符号付き型は、そのビットの 1 つが、それが正の数であるか負の数であるかを示すインジケーターとして予約されていることを意味します。したがって、16 ビット システム上の unsigned int は 0 ~ 65,535 の数値を処理できますが、同じシステム上のサインインした場合は -32,768 ~ 32,767 の数値を処理できます。操作によって int 変数がその範囲を超える場合、プログラマは追加のコードでオーバーフローを処理する必要があります。
C のデータ型と演算におけるこれらの制約とシステム固有の特性を考慮すると、C プログラマはプログラムのニーズに基づいてデータ型を選択する必要があります。選択できるデータ型の一部は、C のプリミティブ データ型、つまり C プログラミング言語に組み込まれたデータ型です。 C のデータ型の完全なリストと、ある型から別の型にデータを変換する方法に関する重要な情報については、お気に入りの C プログラミング ガイドを参照してください。
C プログラマーは、プリミティブ データ型と、データの編成と操作の方法を定義する一連の関数を組み合わせたデータ構造を作成することもできます。データ構造の使用は高度なプログラミングのトピックであり、この記事の範囲を超えていますが、最も一般的な構造の 1 つである配列について見ていきます。配列は、すべて同じデータ型のデータを含む仮想リストです。配列のサイズは変更できませんが、その内容を他のより大きいまたは小さい配列にコピーすることはできます。
プログラマは数値の配列をよく使用しますが、文字列と呼ばれる文字配列には最もユニークな機能があります。文字列を使用すると、ユーザーが言う内容 (「こんにちは」など) を一連の文字として保存でき、C プログラムでユーザーから読み取ったり、画面に出力したりできます。文字列操作には非常にユニークな操作セットがあり、一般的な文字列関数を備えた独自の専用 C ライブラリ (string.h) があります。
これまで説明してきた C の機能は、他のプログラミング言語でも一般的なものです。ただし、次に、C がコンピュータのメモリをどのように管理するかについて説明します。
C のポインターに関するいくつかのヒント
C プログラムがメモリ (通常はコンピュータのランダム アクセス メモリ、つまり RAM) にロードされると、プログラムの各部分がメモリ内のアドレスに関連付けられます。これには、特定のデータを保持するために使用している変数が含まれます。プログラムは関数を呼び出すたびに、その関数を実行して値を返すのに十分な時間だけ、その関数とそれに関連するすべてのデータをメモリに読み込みます。関数にパラメーターを渡すと、C は関数で使用する値のコピーを自動的に作成します。
ただし、関数を実行するときに、元のメモリ位置にあるデータに永続的な変更を加えたい場合があります。 C が関数で使用するためにデータのコピーを作成した場合、元のデータは変更されません。元のデータを変更したい場合は、その値を関数に渡す (値渡し) のではなく、そのメモリ アドレスへのポインターを渡す (参照渡し) 必要があります。
C ではポインタがあらゆるところで使用されるため、C 言語を完全に使いこなしたい場合は、ポインタについてよく理解する必要があります。ポインタは他の変数と同様に変数ですが、その目的は他のデータのメモリ アドレスを格納することです。ポインタにはデータ型もあるので、そのメモリ アドレスのビットを認識する方法がわかります。
C コードで 2 つの変数を並べて見ると、ポインターを認識できない場合があります。これは、最も経験豊富な C プログラマにとっても困難な場合があります。ただし、最初にポインターを作成するときは、変数名の直前にアスタリスクが必要なので、より明確になります。これは、C では間接演算子として知られています。次のコード例では、整数 i と整数 p へのポインターを作成します。
int i;
int *p;
現在、i または p には値が割り当てられていません。次に、i に値を代入し、i のアドレスを指すように p を代入しましょう。