C言語入門 (6) 同じ処理を複数回を行う

Posted: 2012年02月28日

処理を複数回行いたい時にはどうすればよいか
例えば5回max関数を呼び出す場合
max関数を5回記述することで実現が可能です。

しかしこのやり方では欠点が存在します。

  • プログラムが読みづらくなる。
  • 10回に変更されたときに修正が面倒
  • 変更により、間違えて11回行うバグを生む可能性もある

ではどうすればよいか?



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

バグ : ファイルの属性を変更する

Posted: 2011年10月06日

ファイルの属性を変更する際のバグを紹介します。

具体的にファイルの属性とは、
読み取り専用や、隠しファイル、所有者などです。

プログラムプログラム:

 #include  <stdio.h>
 #include  <unistd.h>

 int main(int argc, char *argv[])
 {
    if (access(argv[1], 1) != 0) {
        // ファイルへアクセス権がない、ファイルが存在しない
        return -1;
    }

    SetFileAttributes(argv[1], FILE_ATTRIBUTE_HIDDEN);

    return 0;
 }

このプログラムにどのようなファイル操作関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , | コメント無し »

C言語入門 (5) サブルーチン(関数)ってなんか響きが面白い

Posted: 2011年09月19日

あまりサブルーチンって言われなくなってきましたが
昔は無駄にこの単語を言っていた気がする。

そんな話はいいとして、printf関数など
馴染み深い関数ですが、それは一体何なんでしょうか?

関数というよりもサブルーチンのほうが理解がしやすいと思います。
ルーチンワークといえば、決まっている作業・業務です。
サブルーチンでは、決まっている処理を定義したもの
printfでは、指定したフォーマットでコマンドプロンプトに出力する処理です。

関数を作成、使用することでの利点は

  • 同じ処理を様々な箇所に記述する必要がなく関数を呼ぶ出すだけですむ
  • 同じ処理を複数記述していてかつ、その処理に変更があった場合修正が大変だが、関数化することでその関数を修正するだけで済む
  • 関数が多用されることで、その関数にバグが顕在化することを早める(後々痛い目に合わなくて済む)
  • 処理ごとに関数が作成されるため、プログラムの可読性が良くなる

関数化することで良い事づくしです。

関数化することで欠点もあります。

  • 関数を呼び出すときに関数を呼び出す処理が実行されるため、処理が遅くなる

この欠点は、インライン関数化(後の章で解説)することで解決します。



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

C言語入門 (4) そういえば、includeってなに?

Posted: 2011年09月11日

今までのプログラム例のはじめに
#includeと書かれた行がありましたが
それは一体何なんでしょうか?

???.hファイル(ヘッダーファイル)に定義されている関数を使用する際に
#include <???.h>
と記述することで
以下のプログラムは、???.hに定義された関数やグローバル変数を使用できるようになります。

具体的には、
出力関数のprintfは、stdio.hに定義されている関数です。

つまり
#include <stdio.h>
を記述することで
printf関数を使用できるようになります。
ちなみに、stdioはstandard io(Input/Output)の略です。

その他にどのような???.hが存在するか



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

バグ : ファイルに書きこむ

Posted: 2011年09月03日

前回変数がプログラムの説明で出てきましたが
変数って一体何なんでしょうか?

変数と聞いて数学の変数を思い出す方もいるのではないでしょうか。
大まかなイメージは同じですが全く同じ物と思っていると、
泥沼に突っ込んでしまうので気をつけてください。

Wikipedia
変数 (数学)
変数 (プログラミング)

プログラミングの変数とは、
よく言われる喩えは、データを入れる箱(領域)です。
どういうことか以下のプログラムを見てください。

プログラムプログラム:

 #include  <stdio.h>

 int main(void)
 {
     int nResult = 0;
     nResult = 2;
     nResult = nResult * 5 + 3;
     nResult = nResult * -1;

     return 0;
 }



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

C言語入門 (3) 変数ってなんですか

Posted: 2011年09月03日

前回変数がプログラムの説明で出てきましたが
変数って一体何なんでしょうか?

変数と聞いて数学の変数を思い出す方もいるのではないでしょうか。
大まかなイメージは同じですが全く同じ物と思っていると、
泥沼に突っ込んでしまうので気をつけてください。

Wikipedia
変数 (数学)
変数 (プログラミング)

プログラミングの変数とは、
よく言われる喩えは、データを入れる箱(領域)です。
どういうことか以下のプログラムを見てください。

プログラムプログラム:

 #include  <stdio.h>

 int main(void)
 {
     int nResult = 0;
     nResult = 2;
     nResult = nResult * 5 + 3;
     nResult = nResult * -1;

     return 0;
 }



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

バグ : ファイルを開く

Posted: 2011年08月30日

ファイルを開くプログラムでよく書いてしまうバグを紹介します。

プログラムプログラム:

 #include <fstream>

 int main(int argc, char *argv[])
 {
    std::ofstream ostream(argv[1]);

    //
    // 書き込み処理
    //

    ostream.close();

    return 0;
 }

このプログラムにどのようなファイル操作関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

C言語入門 (2) 演算式を書いてみよう

Posted: 2011年08月24日

コンピューター=計算機
そんなイメージがあると思います。
では、プログラムで計算を行う方法を学びましょう

プログラムプログラム:

 #include  <stdio.h>

 int main(void)
 {
    // 足し算
    1 + 2;

    // 引き算
    1 - 2;

    // 掛け算
    1 * 2;

    // 割り算
    1 / 2;

    // 割り算の余り
    1 % 2;

    // 2 * 2倍
    1 << 2;
    // 2 * 3倍
    1 << 3;

    // 1 / (2 * 2)倍
    1 >>> 2;
    // 1 / (2 * 3)倍
    1 >>> 3;

    return 0;
 }



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

C言語入門 (1) とにかくプログラムを作成してみよう

Posted: 2011年08月23日

まずはじめに、簡単なプログラムを見てみましょう

プログラムプログラム:

 #include  <stdio.h>
 #define MESSAGE "hello world"

 int main(void)
 {
     printf(MESSAGE);
     return 0;
 }



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

C言語入門(0) なぜいまさらC言語なのか

Posted: 2011年08月23日

C言語は、現在人気のある言語よりも
難解であり、バグを入れやすい言語です。

詳しい言語の人気ランキングは
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html を参照してください。

ランキングを見て人気がある言語の特徴は、
 ”オブジェクト指向やインタープリター”がキーワードの言語です。

どちらのキーワードもプログラマを楽にさせるための技術です。

  • なぜ、C言語よりも簡単なプログラミング言語が存在するのに
  • いまさら”C言語入門編”を記載しているか?
  • プログラムの歴史を勉強できる
  • 初心者向けプログラム言語では、学ばなくても良い知識が学べる。
     ※これは、今後ほとんど使うことはないですがそれを知っていると知らないとでは、周りの印象が違います。
  • C言語よりも難解なアセンブリなどは、もっと勉強になると思います。しかし、理解するのに時間がかかりすぎる
  • C言語プログラマーは、だんだんと減っていくと思われます。使いこなせればかなり重宝されるはず
  • 新人研修では、大体がC言語からが多くその際の資料として役立てるため
  • C++は、CベースのためC++を勉強する際に役立つため

ちなみに、C言語をコンパイル/ビルドするためには様々なソフトウェアが存在します。

この他にも様々なソフトウェアが存在します。
また、Androidでも配布されているため
気軽に試すことができる言語かもしれません。



カテゴリー: プログラム, 入門 | タグ: , | コメント無し »
Page 11 of 11« First7891011