新着記事
08/24: 待ち時間・アカウントなしで4sharedにあるファイルをダウンロードするには
08/23: 色んな歌詞検索サイトから歌詞を探してくれる高機能歌詞検索ソフト -Lyrics Master-
08/01: フリーでいろんな国のIPアドレスを利用できるFireFoxのVPNアドオン -Hola Unblocker-
07/18: 著作権フリー・無料で利用できるBGMダウンロードサイト - audionautix
07/17: apngをブラウザ上で見るには
06/14: deviantARTなどで入手したテーマに変更するには
06/03: [KissAnime] - 日本語検索可能でいろんなタイトルが見れるアニメ無料視聴サイト
05/30: スマホをギターにして演奏してしまう動画
05/23: InoReader - シンプルで使いやすいRSSリーダー
05/18: [Apowersoft音声録音フリーツール] - PC・マイクから簡単に録音できるフリーツール
05/12: フリーのDNSへ簡単に変更出来るDNSチェンジャー - [ChrisPC DNS Switch]
05/11: C言語 入門 複合文について
05/10: TabsBy.Net - フリーで利用可能なオンラインTABプレーヤー
05/09: [Chrome Extension]Chromeで新しいタブを開いたときにWindows8のメトロ画面にするExtension - New MetroTab
05/06: Bop.fm - フリーでクールなインターフェイスのオンライン音楽プレーヤー
05/05: iAlbums - アルバムごとにカテゴライズされたプレイリスト作成も可能なオンライン音楽プレーヤー
09/20: [B1 Online Archiver] オンライン上で圧縮ファイルを解凍できるサイト
09/15: Operaの旧バージョン(15以前)にXSSの脆弱性が
09/10: ペルセウス座流星群を1分で
08/29: スマホアプリ紹介サイト
RSS feeds

2014年05月11日

C言語 入門 複合文について

長らくのC言語の更新です。時間がかかっても最後までやっていきたいと思います。

前回、最後にif文は{ }内の分が単一の場合、省略が可能だと説明しました。
では、複数の文を扱う場合はどうする必要があるのでしょうか?

これは意外と重要な問題です。
そこで今回は、「複合文」について勉強したいと思います。


複合文(ブロック)について


if文が使えるようになると幅が広がります。
前回まではif( 式 )の式の関係演算子で場合分け処理をしましたが、
結果を表示させたのは一つだけでした。

今回は、二つの結果を表示させてみましょう。

ここでは、「二つの整数を入力して大きい方の値と小さい方の値をそれぞれ表示させるプログラム」を作りたいと思います。
単純に二つの入力された数値が、

大きい方の値

小さい方の値

それぞれ表示させてみます。

まずはプログラムを作ってみましょう。

#include <stdio.h>

int main(void)
{
    int no1, no2, max, min;

    printf("二つの整数を入力してください。¥n");
    printf("整数1:");    scanf("%d", &no1);
    printf("整数2:");    scanf("%d", &no2);

if(no1 > no2){
    max = no1;
    min = no2;
} else {
    max = no2;
    min = no1;
}

printf("大きい方の値は%dです。¥n", max);
printf("小さい方の値は%dです。¥n", min);

    return 0;
}


実行結果
二つの整数を入力してください。
整数1:50↵
整数2:51↵
大きい方の値は51です。
小さい方の値は50です。


さて、ここで注目してほしいのは、if文の後です。

if(no1 > no2){
    max = no1;
    min = no2;
}

今までは、ifの後に文は一つでしたが、今回は二つです。
しかしながら、if文の構成は決まっています。
if( 条件式 ) 文;

何が言いたいかというと、if文が制御する文は「1つ」だけということです。
それではなぜ今回のプログラムが実行できたかというのが今回です。
今回の文をもう一度見てみましょう。
if(no1 > no2){ max = no1; min = no2; }

max = no1; min = no2;を{ }で囲んであるのが分かるかと思います。
これが重要です!
この文の並びを{ }で囲んだものを「複合文」といいます。ブロックとも言いますね。
前回、「{ }内の文が単一の場合、{ }を省略することも出来ます。」といいました。
今回のように文が複数の場合、{ }で囲む必要があるということです。
試しに
if(no1 > no2){ max = no1; min = no2; }

この文の{ }を外してプログラムを実行してみましょう。
出来ましたか?出来なかったと思います。
これは先ほど言った通り、if文の制御する文が1つだけだからです。もちろんelse文も同じです。


複合文の構成


複合文は複数の文を扱うことができますが、もう一つ含めるものがあります。
それは、「宣言」です。
ただし、条件があります。それは、文よりも前に配置しないといけないことです。
{ 宣言; 文; }

こうなるわけです。これさえ守ればいくつでもOKです。
例えば、
{ int ax; int bx; ax = 1; bx = 2; printf("%d", ax + bx); }

こんな風に
{ 宣言; 宣言; 文; 文; 文; }

なんてやっても宣言が先にくれば、
どんなに追加しても単一の文と認識してくれるので大丈夫です。

では最後にこれを踏まえて、今回のプログラム整数が同じ場合を追加してみましょう。

#include <stdio.h>

int main(void)
{
    int no1, no2, max, min;

    printf("二つの整数を入力してください。¥n");
    printf("整数1:");    scanf("%d", &no1);
    printf("整数2:");    scanf("%d", &no2);

if(no1 > no2){
    max = no1;
    min = no2;
printf("大きい方の値は%dです。¥n", max);
printf("小さい方の値は%dです。¥n", min);
} else if(no2 > no2){
    max = no2;
    min = no1;
    printf("大きい方の値は%dです。¥n", max);
    printf("小さい方の値は%dです。¥n", min);
} else
    printf("その値は同じです。¥n");


    return 0;
}


実行結果(数値が異なる場合)
二つの整数を入力してください。
整数1:22↵
整数2:23↵
大きい方の値は23です。
小さい方の値は22です。

実行結果(数値が同じ場合)
二つの整数を入力してください。
整数1:100↵
整数2:100↵
その値は同じです。


追加してみた感じではこんな感じかなと思います。
あくまで今回の重要な部分は複合文ですのでわざとこんなプログラムを考えてみました。
正直、このサイトで習ってきたことを踏まえれば最後のプログラムはもっとシンプルにできます。

この最後のプログラムを書くなら宣言のmaxとminはいらないです。

よかったら考えてみてください。

では最後に復習です。

複合文は{ }で囲む
{ 宣言; 文; }の順番を守る
if文、else文の制御出来る文は1つだけ


今回はこんなところです。

メニューへ戻る


タグ:C言語


↓もしこの記事が役に立ったらクリックお願いします。
人気ブログランキングへ ブログランキング・にほんブログ村へ



posted by Yuichi at 07:00 | Comment(0) | TrackBack(0) | プログラミング>C言語 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック

Copyright (C) 2009-2010 Yuichi All Rights Reserved.