Relative Content

Author Archive for chen

Compile a C code on Chromebook

Chromebookでhello できるまでの手順は以下の通り。 linux betaをインストールする。設定で検索すれば見つかる。 インストール後、ターミナルアプリを起動。 linux をアップデートする gccをインストールする C専用フォルダを作る vscode をダウンロードする vscode を立ち上げる Cフォルダにhello.cソースコードを作成し、コンパイル、実行 Linux環境準備 linux betaをインストールする。設定で検索すれば見つかる。 インストール後、ターミナルアプリを起動。 linux をアップデートする [=========] 準備完了 chen@penguin:~$ sudo apt-get update   vscode環境準備 gccをインストールする C専用フォルダを作る vscode をダウンロードする vscode を立ち上げる chen@penguin:~$ pwd /home/chen chen@penguin:~$ mkdir C chen@penguin:~$ cd C chen@penguin:~/C$ sudo apt-get install gcc C言語hello.c hello.c をコンパイルする chen@penguin:~/C$ ls hello.c chen@penguin:~/C$ gcc hello.c -o hello chen@penguin:~/C$ ./hello Hello, […]

Dump file

DUMP で出力された内容を ダンプリスト と呼ぶ ダンプリスト左端はアドレス(ファイル先頭からの位置) ダンプリスト中央にある16進数(バイト)が列挙されてる部分がマシン語プログラム(バイトコード)を表している。 ダンプリスト右端は、バイトコードをキャラクタコードで表現したときの内容。ただしバイトで表現可能な数値はキャラクタコードの範疇を超えることがあるため、そのような場合はピリオドで表現される。 dump.c #include <stdio.h> int main(int argc, char* argv[]) { FILE *fp; unsigned char buf[16]; /* 読み込みバッファ */ unsigned long addr = 0; /* 先頭からのアドレス */ int readnum, i; if(argc <= 1) { printf(“usage:dump filename\n”); return 1; } if(!(fp = fopen(argv[1], “rb”))) { printf(“file open error.\n”); return 1; } while(1) { printf(“%08x […]

Error on JP programming

Hello World例 正しいhello.c。カーソルは位置を注意してください。Pは5:5の位置にある。 コンパイルと実行する様子 典型的なエラー 初めてCのプログラミングは なかなかうまく行かないかも知れない。 ここではHello World プログラムの典型的な間違い例をいくつか紹介する。 半角引用符「”」ではなく全角引用符「”」に 右の引用符は全角引用符「”」になっている 全角スペースが用いられ 全角スペースが用いられている、これはなかなか探しにくい。 カーソルは位置を注意してください。Pは5:3の位置にある。 (半角のスペースなら、Pは5:5の位置にある。) セミコロン「;」の付け忘れ セミコロン「;」の付け忘れである。

Compile a C code on Linux

C言語の最小限の開発環境を作る手順 エディタをインストール コンパイラをインストール コンパイラにPATHを通す設定をする エディタをインストール Atomという新世代のエディター(Windows、Mac OS X、Linux対応)をインストールしてください。 公式サイト コンパイラをインストール LinuxでのC言語開発環境について解説しています。「GNU Compiler Collection」が一般的です。 それでは gcc をインストールしていきます。 Debian Debianでは、apt-getコマンドを使ってgccをインストールします。 # apt-get install gcc Ubuntu UbuntuはDebianベースのディストリビューションなので、Debianと同じようにa apt-getコマンドを使います。ただ、Ubuntuにはrootユーザーという概念がないので、sudoコマンドでインストールしていきます。 $ sudo apt-get install gcc CentOS CentOSでは、yumコマンドを使ってgccをインストールします。 # yum install gcc 以上で、コンパイラ(gcc)のインストールは完了です。 コンパイラにPATHを通す設定をする 不要です。 ソースコードコンパイル C言語プログラムのファイル名を「hello.c」というファイルを作成します。ファイルの中身は「Hello, World!」という文字列を出力するプログラムです。 hello.cをコンパイルします。 $ gcc hello.c エラーが表示されなければ、OKです。 プログラムの実行 実行します。 $ ./a.out Hello, World 無事に実行できましたね。

Compile a C code on Windows

WindowsでgccをインストールするにはMinGWを利用した、C言語の最小限の開発環境を作る手順 エディタをインストール コンパイラをインストール コンパイラにPATHを通す設定をする エディタをインストール Atomという新世代のエディター(Windows、Mac OS X、Linux対応)をインストールしてください。 公式サイト コンパイラをインストール C言語コンパイラって幾つかありますが、gccのインストールをオススメします。gccはMacでもLinuxでもWindowsでも使えます。 コンパイラの違い一覧 システム mingw-jp Visual Studio .net Borland C++ Builder コンパイラ名 gcc cl bcc32 オブジェクトファイルの拡張子 .o .obj .obj 実行ファイル名指定 -o ファイル名 -o ファイル名 -eファイル名 make コマンド mingw32-make nmake make 依存ファイルマクロ $^ $** $**   WindowsでgccをインストールするにはMinGWというソフトを使う必要があります。 MinGW | Minimalist GNU for Windows MinGWのホームページで「Downloads」をクリック sourceforgeというサイトに飛びます 「Download mingw-get-setup.exe […]

12.1 構造体

演習 1)任意二つのunsigned int型数値の論理AND, OR, XORを求めなさい(P324) /* a9-4-1.c */ #include <stdio.h> #include <limits.h> int main(void) { unsigned a, b; printf(“0 〜 %u の整数を2つ入力してください。¥n”, UINT_MAX); printf(“> “); scanf(“%u”, &a); printf(“> “); scanf(“%u”, &b); printf(“%u(%#x) AND %u(%#x) = %#x¥n”,__,__,__,__,__); printf(“%u(%#x) OR %u(%#x) = %#x¥n”,__,__,__,__,__); printf(“%u(%#x) XOR %u(%#x) = %#x¥n”,__,__,__,__,__); return 0; }   2)任意unsigned int型数値のビットパターンを表示(P328) /* a9-4-2.c */ […]

5.2 多次元配列

  前回の演習 演習5-4(p115) List5-6を書き換えて、配列aの要素の並びを逆順にしたものをbにコピーするプログラムを作成さよ。 #include <stdio.h> #define NUMBER 5 int main(void) { int i; int va[NUMBER] = {15, 20, 30}; int vb[NUMBER]; for(i = 0; i < 5; i++) { vb[i] = va[NUMBER – i – 1]; } puts(” va vb”); puts(“——-“); for(i = 0; i < 5; i++) { printf(“%3d%3d\n”, va[i], vb[i]); } return(0); } […]

7.2 bitwise

第9章 ビットを意識する 整数型の指定 整数値を扱うための型には,( signed, unsigned ) char 型と int 型とがあることは説明したが, それら以外にもある.ここで,まとめて簡単に解説する. バイト数 ビット数 最小値 最大値 unsigned char 1 8 0 255 signed char 1 8 -128 127 unsigned short int 2 16 0 65535 signed short int 2 16 -32768 32767 unsigned int 4 32 0 4294967295 signed int 4 32 -2147483648 2147483647 unsigned long […]

5.1 配列

配列 同じ型の変数が並んだものを「配列」と言います。C以外でも多くの高級言語に採用されている。 通常の変数は int num; のように型と名前を示して宣言しますが、配列ではさらに要素数を加えて以下のように宣言します。 int num[10]; 名前(上の例では”num”)が変数名で、それに続く[ ]内に示した”10″が、配列の要素数です。上記のように宣言すると int 型の変数が10個確保され その全体を“num”という名前で扱える ようになります。 配列の各要素は添字(またはインデックス)と呼ばれる番号で一意に指定できます。Cでは先頭が0で、1ずつ増加します。   配列の走査 配列の各要素に規則性を持った値を代入するには、forループを使うのが便利です。例えば、10個の要素を持つint 型の配列に、100・200・300……と100ずつ増加する値を代入する処理は、リスト1のように記述できます。 カウンタ変数iは0から1ずつ増加するので、その値を配列の添字に使い、同時に(i + 1)の100倍を添字で示す要素の値として代入します。 継続条件は「i < 10」となっているので、iが9になるまでループが繰り返され、10になったら処理をせずにループを抜けるので、配列のすべての要素に値が代入されます。 リスト1:配列に100ずつ増加する値を代入していく int num[10];    /* 整数を格納する配列 */ int i;    /* カウンタ変数 */ for(i =0; i <10; i++){ num[i]=(i +1)*100; } 配列の初期化 配列は同じ型の変数が並んだものですから、個々の要素の扱いは通常の変数と変わりません。配列の個々の要素に値を代入するには、以下のように代入演算子=を使います。 num[0]=100; num[1]=200; num[2]=300; : もちろん、通常はこんな悠長な記述はしません。配列の宣言時にすべての要素の値を示し、初期化することができます。 int num[]={100,200,300,400,500,600}; { }内に値を「,」で区切って列挙するだけです。このようにすれば、[ ]内に最大要素数を示す必要はありません。{ }内に列挙した値の数だけの要素が自動的に確保されます。 配列のコピー 他の変数と同じように配列をコピーしたプログラム […]

C言語検定(2級)

C言語検定試験について 主催・認定 サーティファイ情報処理能力認定委員会 試験名 C言語プログラミング能力認定試験 (C-Language Programming Skills Qualification Test) 試験目的 C言語を駆使して応用プログラム(言語処理系、ユーティリティなど)を作成する能力を認定します。 認定基準 一級 C言語を駆使し、応用プログラム(言語処理系、ユーティリティなど)が作成できる能力を有する。また使用しているOSについて理解をしている。 二級 小規模のプログラム(500行程度)が適切に(理路整然、簡潔、正しく、速く)書ける。また各種基本アルゴリズムを理解している。 三級 C言語の概念を理解し、簡単なプログラムが書ける。   参考(2級出題範囲) 出題内容 定数 浮動小数点定数 指数形式を許す 浮動小数点接尾語はf、l、F、Lのいずれか 整数定数 整数接尾語として長語接尾語(l、L)を含む 文字定数 拡張表記は8進拡張表記、16進拡張表記を含む 文字列リテラル 拡張表記は8進拡張表記、16進拡張表記を含む 列挙定数 演算子 ビット演算子、条件演算子、代入演算子、キャスト演算子、ポインタ/アドレス演算子、構造体演算子、sizeof演算子 宣言指定子 void、short、long、float、double、構造体共用体指定子(struct、union)、列挙型指定子(enum)、型修飾子(const)、typedef 変数 上記型指定子の単純変数、配列 外部定義 プリプロセッサ機能 ファイルの包含 ライブラリ関数 数学関数<math.h> double cos(double x); double sin(double x); double tan(double x); double exp(double […]