---
# System prepended metadata

title: 競プロ班講義 第二回

---

# 競プロ班講義 第二回

初回はc\++の環境構築を行いました。今回から[APG4b](https://atcoder.jp/contests/apg4b)に沿ってc\++の文法や競プロで使う知識を学んでいきます。
この資料では主にAPG4bの内容の補足事項を書いていきます。

APG4bの内容に入る前に、APG4bを学ぶ際に作成するプログラムを入れるフォルダーを作っておきましょう。
macの人はターミナルで、windowsの人はubuntuで以下のコマンドを実行してください。
```
$ mkdir apg4b
$ cd apg4b
$ touch test.cpp
```
mkdirやcdやtouchはLinuxコマンドの一つです。以下でそれぞれのコマンドの意味を説明します。

mkdir ディレクトリ名: 今いるディレクトリに、指定した名前のディレクトリを作成する
cd ディレクトリ名: 今いるディレクトリ内のディレクトリを一つ指定してそのディレクトリに移動する
touch ファイル名: 今いるディレクトリ内に指定した名前のファイルを作る

なお、```$ pwd```というコマンドで、今いるディレクトリを調べることができます。
紹介したコマンドの他にも様々なLinuxコマンドが存在します。Linuxコマンドは何かと便利です（環境構築の時などに役立ったりします）。興味があったら勉強してみるといいと思います！


無事実行できたら、作成したapg4bという名前のディレクトリをVScodeで開いておいてください。

では、ここからはAPG4bの内容に入っていきます。

## A - 1.00.はじめに
### プログラムの実行方法
> APG4bでは後で説明する「コードテスト」の利用を推奨しているので、難しい環境構築は不要です。

とありますが、この講義ではコードテストではなくVScodeを用いてプログラムの編集や実行を行います。

### 提出練習
載っているプログラムの代わりに、こちらのプログラムを先程作成したtest.cppというファイルにコピー&ペーストしてください
```
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, world!" << endl;
}
```
プログラムを貼り付けられたら、以下のコマンドで実行してみましょう。
```
$ g++ test.cpp
$ ./a.out
```
Hello, world! と出力されればOKです。
無事実行ができたら、プログラムをapg4bの所定の提出欄に貼り付けた上で、言語の欄で、C\++(GCC 9.2.1)を選択して提出してください。
提出をすると自動で提出結果のページに移動します。問題がなければ結果の欄にACと出るはずです。


## B - 1.01.出力とコメント
### プログラムの基本形
> まずはプログラムの基本形について学びましょう。次のプログラムは何もしないプログラムです。

```
#include <bits/stdc++.h>
using namespace std;

int main() {
}
```
とありますが、 bits/stdc\++.h というファイルを使うための設定がまだできていません。しばらくは、```#include <bits/stdc++.h>```の代わりに```#include <iostream>```を１行目に書くようにしてください。
なお、近いうちに　bits/stdc\++.h を使えるように設定を行いたいと思います

### bits/stdc\++ と iostream について
c\++では、様々な標準ライブラリ（STL）が用意されており、プログラムの最初に、```#include <STL名>```のように書くことで、そのSTLの機能をプログラム内で使うことができます。STLの機能を使えば、以下のような処理が行えます。
- 様々な計算（sin/cos/tan/平方根/累乗）
- ソート
- 文字列操作

実はiostreamはSTLの一つで、入力/出力に関する機能をまとめたライブラリになっています。
プログラム内でSTLの機能を使うときには都度使うライブラリを宣言しないといけませんが、bits/stdc++.h というファイルを用いることで全てのSTLの機能をプログラム内で使えるようになります。

apg4bでは、最初の方はiostream以外のSTLを用いる必要がほとんどありません。bits/stdc\++ の代わりに iostream を書くようにするのはこのためです。

## C - 1.02.プログラムの書き方とエラー
### インデント
> 基本的に{が出てきたら一段インデントし、}が出てきたら一段戻します。

とありますが、VScodeでプログラムを書く場合、{}と入力してenterすると自動でインデントされます。

## G - 1.06.if文・比較演算子・論理演算子
### 論理演算子
```条件式1 && 条件式2``` は ```条件式1 and 条件式2```のように書くこともできます。
また、同様に、```条件式1 || 条件式2``` は ```条件式1 or 条件式2```のように書くこともできます。

### else句
> else句は、if文の後に書くことで「if文の条件が偽の時」に処理を行えるようになります。
> 書き方は次のようになります。

```
if (条件式1) {
  処理1
}
else {
  処理2
}
```
とありますが、別の書き方を紹介しておきます。
```
if (条件式1) {
  処理１
} else {
  処理2
}
```
おそらくこちらの書き方のほうが一般的です。2つの書き方のうち自分の見やすい書き方を選べばOKです。







