Ta-kaku.jp Tools
Update 2010/02/06
技術メモ内容
トップページ
ハードやソフトの技術メモです。 ほとんど、個人の備忘録のレベルですので高度なことは書かれていません。 皆様に少しでもお役に立てれば幸いです。
MENU
2.C系プログラミング
サイト更新情報
2008/10/18
「Ta-kaku Tools 住所検索・郵便番号検索・事業所名検索・駅検索・電話局番検索」を Ver2.202 にリビジョンアップしました。
更新内容は以下の通りです。
・「xxx1丁目」の様に「全角の数字」と「丁目」が続いている文字列が入力されると検索できない事がある不具合を改修しました。
2008/10/01
Ta-kaku Tools Whois検索 Ver1.000をリリースしました。
2008/09/30
「Ta-kaku Tools 住所検索・郵便番号検索・駅検索・電話番号(局番)検索 」を Ver2.201 にリビジョンアップしました。
更新内容は以下の通りです。
・電話番号(局番)検索機能を正式版にしました。 ・無効な数値に対して住所の検索を行っていた処理を改善しました。 ・局番0120指定でGoogleMapがおかしな場所を示していた不具合を修正しました。 ・「東京駅駅」のように入力されると、関係の無いデータが出力される不具合を修正しました。
過去の情報
関連キーワード
技術メモ インデックス
カテゴリーを選択してください。
インストール
プログラミング言語
マークアップ言語
データベース言語
スクリプト言語
MS-Office
その他
Webアプリケーション
の開発方法
2.C系プログラミング 技術メモ
追加日時の新しい方から掲載しています。
第2章 C系プログラミングについて
登録日:2006/09/25   分類:Webシステム
目的
    今回学習する JavaScript や PHP は、C言語をベースに考案された言語です。
    C言語の基本構成を知る事で、以降の学習をスムーズに進める事ができると思います。
    ここでは、JavaScript や PHP に共通する構文のみを中心に解説します。

目次
    1.演算子
    2.制御構造
    3.関数
    4.スコープ

1.演算子

    1-1.演算子とは

        演算子とは、値や式から新しい値を生成する命令です。
        主なものに、比較演算子(==, !=)や論理演算子(and, or)などがあります。

    1-2.演算子の優先順位

        演算子には、優先順位があります。

        (1) 演算子の種類による優先順位

            全ての演算子の優先順位を記憶するのは、困難ですので
            通常演算子の種類によって大まかに優先順位を把握しておきます。

                代数演算子 > 比較演算子 > 論理演算子

                - 例 -
                if (a and b == c = d)
                // 1番目 ... d が c に代入される
                // 2番目 ... 1番目の結果と b が比較される
                // 3番目 ... 2番目の結果と a の論理積が評価される

        (2) 演算子の場所による優先順位

                左側 > 右側

                - 例 -
                ans = a + b + c;
                // 1番目 ... a と b が足し算される
                // 2番目 ... 1番目の結果と c が足し算される

        (3) 括弧による優先順位

                括弧有り > 括弧無し

                ans = a + (b + c);
                // 1番目 ... b と c が足し算される
                // 2番目 ... 1番目の結果と a が足し算される

2.制御構造

    2-1.制御構造とは

        構文によって、処理の分岐を決定します。
        制御構造の各要素は、以下の名称を使用します。

            制御(式)
            {           ... 評価された条件の実行開始位置
                文      ... 実行したい内容(内部に制御構造を含むことができます)
            }           ... 評価された条件の実行終了位置

    2-2.if-else-elseif文

        (1) 構文

            Cの場合

                if (式)
                {           ... 省略可(付けるのを推奨)
                    文      ... 省略可
                }           ... 省略可(付けるのを推奨)
                elseif (式) ... if が必要, 省略可
                {           ... 省略可(付けるのを推奨)
                    文      ... 省略可
                }           ... 省略可(付けるのを推奨)
                else        ... if が必要, 省略可
                {           ... 省略可(付けるのを推奨)
                    文      ... 省略可
                }           ... 省略可(付けるのを推奨)

            VBの場合

                If 式 Then
                    文
                ElseIf 式 Then
                    文
                Else
                    文
                End If

        (2) 機能

            各「式」で評価された「文」が実行されます。

    2-3.switch文

        (1) 構文

            Cの場合

                switch (値)
                {
                case ラベル:    ... 省略可
                    文          ... 省略可
                    break;      ... 省略可(通常は付ける, 
                default:        ... 省略可    省略すると処理が下に流れます)
                    文          ... 省略可
                }

            VBの場合

                Select Case 値
                Case ラベル
                    文
                Case False
                    文
                End Select

        (2) 機能

            「値」によって、ラベルに分岐します。
            「値」がラベルに該当しない場合は、default に分岐します。

            通常、各 case ブロック単位に break を設定します。
            break を設定していない場合は、処理が下に流れてしまいます。

                x = 0;
                a = 1;
                b = 2;
                c = 3;

                switch (sample)
                {
                case a:
                    x += a;
                    break;
                case b:
                    x += b;
                    // break が無い場合
                default:
                    x += c;
                }

                sample が a の場合
                x は、a の値が代入されて 1 になります。

                sample が b の場合
                x は、b と c の値が代入されて 5 になります。

    2-4.while文

        (1) 構文

            Cの場合

                while (式)
                {               ... 省略可(付けるのを推奨)
                    文          ... 省略可
                }               ... 省略可(付けるのを推奨)

            VBの場合

                While 式
                   文
                Wend

        (2) 機能

            「式」が真(true)の間、文が繰り返し実行されます。

            省略できる部分を全て外す場合は、以下のようになります。

            while (式)
                ;

            ただし、通常使用しません。(使用してはいけません)

            while を抜けたい場合は、break を使用します。

            文の途中で残りの処理をスキップしたい場合は、continue を使用します。

    2-5.do-while文

        (1) 構文

            Cの場合

                do
                {
                    文          ... 省略可
                } while (式);

            VBの場合

                Do
                    文
                Loop While 式

        (2) 機能

            一旦、「文」を実行した後に、「式」を評価します。
            「式」が真(true)の間、文が繰り返し実行されます。

            do-while を抜けたい場合は、break を使用します。

            文の途中で残りの処理をスキップしたい場合は、continue を使用します。

    2-6.for文

        (1) 構文

            Cの場合

                for (式1; 式2; 式3)     ... 各式の省略可
                {                       ... 省略可(付けるのを推奨)
                     文
                }                       ... 省略可(付けるのを推奨)

            VBの場合

                VBにも、For文はありますが、C言語とは仕様が異なります。

                For counter = start To end Step step
                    ~~~~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~~
                    文
                Exit For

                counter = start ... Cの式1に該当
                To end          ... Cの式2に該当
                Step step       ... Cの式3に該当

        (2) 機能

            式1 ... ループ開始時に無条件に「式1」が評価(実行)されます。
            式2 ... 「式2」が真(true)の間、文が繰り返し実行されます。
            式3 ... 「文」を実行した後、「式3」が評価(実行)されます。

            省略できる部分を全て外す場合は、以下のようになります。

            for (; ; )
                ;

            ただし、通常使用しません。(使用してはいけません)

            for を抜けたい場合は、break を使用します。

            文の途中で残りの処理をスキップしたい場合は、continue を使用します。

    2-7.return文

        (1) 構文

            Cの場合

                return 値;      ... 値は省略可

                return (式);    ... 式の場合のみ括弧が必要になります。

            VBの場合

                VBには、return文はありません。
                以下の2行でリターン値を返します。

                ファンクション名 = 値
                Exit Function

        (2) 機能

            関数を抜けます。

3.関数

    3-1.関数

        (1) 構文

            Cの場合

                返り値の型 関数名(パラメータの型 パラメータ
                    , パラメータの型 パラメータ)... パラメータは省略可, 複数指定可
                {
                    文
                    return 値 または 式;                ... 省略可
                }

            VBの場合

                スコープ 関数の種類 関数名(パラメータ パラメータの型
                , パラメータ パラメータの型) 返り値の型
                    文
                    ファンクション名 = 値   ... 関数の種類がFunctionのみ
                    Exit Function           ... 関数の種類がFunctionのみ
                End 関数の種類

        (2) 機能

            文を分離または、共通化します。
            通常、機能単位に分離させます。

            返り値の型

                C言語の構文です。
                PHPの場合は、function 型固定になります。

            パラメータ

                0?n の指定が可能です。

4.スコープ

    スコープとは、有効範囲や可視性を意味します。
    スコープの範囲が、各オブジェクト(意味合いに変数なども含めています)の
    有効範囲(メモリのロード状態が保障されている)になります。

    スコープは、大きく分けて、以下の2種類の概念があります。

    ・ファイルスコープ ... 翻訳単位
    ・ブロックスコープ ... ブロック内

    以降ご紹介するPHPには、基本的に翻訳という概念がありませんので、
    2つめのブロックスコープについてのみ説明します。

    4-1.ブロックスコープ

        上記、制御構造や関数では、頻繁に "{" と "}" が登場しています。
        C言語では、スコープの範囲を明確化する為に、括弧で明示的に指定する事が
        できます。

        - 制御構造のスコープ例 -

            if (a < 10)
            {                   ... 制御構造スコープの開始
                a += 1;
                printf("%d", a);
            }                   ... 関数スコープの終了

            処理の有効範囲が確認できます。

        - 関数のスコープ例 -

            int sample()
            {                   ... 関数スコープの開始
                int a;          ... 変数 a のエリアがメモリ上の確保される
                a += 1;
                return a;
            }                   ... 関数スコープの終了, 変数 a のエリアが
                                    メモリ上から解放される

            関数スコープ内で生成された変数 a は、この関数内のみで有効です。
            変数の可視性が確認できます。

        - 型のスコープ -

            PHPでは、使用される事はありませんが、C言語には構造体と言われるもの
            があります。
            これは、変数のグループを定義する型宣言です。
            構造体の概念は、次の章でご紹介するClassの概念のベースとなっています。

            構造体の型宣言

                struct SAMPLE       ... 構造体の宣言
                {                   ... 構造体型スコープの開始
                   int   a;         ... メンバの宣言
                   long  b;
                   float c;
                };                  ... 構造体型スコープの終了

                ここでは、型が宣言されただけでオブジェクトは生成されていません。
                これは、重要な概念です。

            構造体のオブジェクトを生成(構造体宣言)

                struct SAMPLE sample;   ... C言語の場合

                SAMPLE sample;          ... C++言語の場合

                この宣言によって、オブジェクトが生成されました。
                オブジェクトの生成とは、メモリ上にエリアが確保され、
                必要な情報がロードされた状態を言います。
                これは、重要な概念です。

            構造体のオブジェクトを使う

                x = sample.a;           ... 構造体メンバー a の値を x に代入

                上記の簡単な例は、「スコープ内部を閲覧する」行為を示しています。
                以後、ご紹介するJavaScript や PHPでは、頻繁にこのスコープ内部を
                閲覧が登場します。

---

・本ページの内容は、Ta-kakuが住所検索のページを作成する際に独自で調査した内容を
  講座的にまとめたものです。

・記述に誤りがある場合は、訂正して読み替えてください。

・技術的な内容にはお答えできませんので、予めご了承ください。
PR