基本構造

C++言語のプログラムは、関数の集合で構成されています。関数とは、ある目的のための一連の命令に名前を付けて、適時呼び出せる(使える)ようにしたものです。呼び出し元からデータを受け取り、定められた処理を実行して、必要に応じて結果を返します。

関数が受け取るデータを引数、返すデータを戻り値と呼びます。C++言語の関数はおおむね次のように書きます。

戻り値の型 関数名(引数の列){
  文;
  文;
   :
   :
  文;
}

とは、整数、文字、実数などのデータの種類を表すもので、データ型とも呼ばれます。関数の定義の最初に型を指定して、その関数が戻り値として返すデータの種類を明確にします。

{} に囲まれた部分をブロックあるいは複合文といいます。ブロックはの並びで、1つの文は;(セミコロン)で区切られます。文はブロックの上の行から下の行に向かて順番に実行されます。 同じ行に複数の文を書くことができ、複数ある場合は左から右に向かって順番に実行されます。

プログラムは関数の集合から構成されますが、これらは他の関数から呼び出されることによって実行されます。つまり、プログラム全体で見ると、最初に書かれた関数から順番に実行されるわけではないことに注意してください。C++言語では、システムが最初に呼び出す関数をmain関数と定めています。

main関数

main 関数は以下のように書きます。

// 戻り値の型が`int`型で名前がmainである関数、main関数
int main(){
  
  /* 処理 */
  // 処理

  // プログラムが正常終了したことを示す時は0、異常終了した時はそれ以外の値を返す
  return 0;
}

int は整数を表し、main関数はシステムに正常終了を通知するために0を返します。関数から値を返すためにはreturn文を実行します。

/**/で囲まれた部分、//の右側はプログラムの実行には影響しないコメントとなります。

標準出力

printf

C/C++言語で標準出力に文字列を出力するためには次のようにprintf 関数を使用することができます:

printf("文字列"); /* 出力したい文字列を渡して呼び出す*/

プログラムの中に直接書き込まれる文字列は""(ダブルクォーテーション)で囲います。文字列の中に改行を含める場合は、改行コード "\n" を含めます。例えば、文字列 "Accepted!" の後に改行を加え出力する場合は、以下のように記述します。

printf("Accepted!\n");

printfは関数なので、プログラムの中に関数の定義が必要になります。 しかし、printfの定義を自分で書く必要はなく、ライブラリとして準備されているものを利用することができます。ライブラリとは、あらかじめ準備された汎用的なプログラムの集まりです。printf を使用する場合には、次のように stdio.h (C++ の場合は cstdio) をインクルードします。インクルードとは、ライブラリをプログラムに含める操作です。stdioには入出力に関する様々な関数や機能が実装されています。

#include<stdio.h>

int main(){
  printf("Accepted!\n");
  return 0;
}

std::cout

C++では printf 関数に加えて、次のように std::cout を使用することができます:

std::cout << "文字列";

文字列の中に改行を含める場合は、改行コード "\n" を含めます。例えば、文字列 "Hello" の後に改行を加え出力する場合は、以下のように記述します。

std::cout << "Hello\n";

std::cout を使う場合は、改行コードを使用する代わりに次のように std::endl を用います。


std::cout << "Hello" << std::endl;

std::endl は改行を行い、バッファをフラッシュします。バッファとは処理を高速化するために出力データを溜めておく仕組みで、フラッシュ操作によって溜められたデータを出力します。std::cout におけるフラッシュのタイミングは環境に依存するため '\n' のみで改行し、明示的なフラッシュを行わない場合には注意が必要です。

std::cout と std::endl を使用する場合には、次のように iostream をインクルードする必要があります。


#include <iostream>

int main() {
  std::cout << "Hello" << std::endl;

  return 0;
}

Reference

 

オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)

AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。