10.1 アドレス
ポインタの仕組み:アドレスとは ポインタはC言語(および拡張言語)に特有の概念で、C言語を学び始めた初心者が必ずといっていいほどつまづく概念でもあります。ポインタがどうしても理解できないためにC言語に挫折してしまう方もいます。 アドレスの基本 コンピュータの記憶装置(メモリ)には、アドレスが付けられている。 変数のアドレス 変数のアドレスを取得するには変数名の前にアンパサンド “&”をつけます。 int a = 123; printf(“aのアドレス : %p\n”, &a); 配列のアドレス 配列の先頭をアドレスは、配列名だけで示します。要素のアドレスは&配列名[添字]で示します。 #include <stdio.h> int main() { char str[3] = “AB”; printf(“str[0]の要素のアドレス: %p\n”, &str[0]); printf(“strのアドレス: %p\n”, str); getch(); return 0; } 二次元配列のアドレス 二次元配列の先頭アドレスは、配列名だけで示します。要素のアドレスは&配列名[行][列]で示します。 値とアドレスの表現 変数、1次元配列、2次元配列の整理 値 (要素)アドレス 先頭アドレス 変数 変数名 &変数名 1次元配列 配列名[添字] &配列名[添字] 配列名 2次元配列 配列名[行][列] &配列名[行][列] […]
2.1 演算
C言語の特徴(2) 関数型言語 コンピュータに実行してもらう命令はすべて関数の中に記述されている。関数がプログラムの実行単位。いくつかの関数を組み合わせ、コンピュータへ命令をする。最初にコンピュータが実行する関数はmain()に決まっている。 戻り値の型 関数名(引数リスト) { 命令文; } 命令文(Statement) 名札付き文 式文 複合文 選択文 繰り返し文 ジャンプ文 式(Expression) オペランド 演算子 オペランド… トークン(token) コンパイラが認識する最小単位のテキスト、トークン(token) キーワード 識別子 定数 リテラル文字列 演算子 区切り子 #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } トークンに分解 トークン トークンの種類 int キーワード main 識別子 ( 区切り子 ) 区切り子 { 区切り子 printf 識別子 ( 演算子 “Hello World\n” […]
7.3 math and utility
数学関数 数学的な計算が必要な場合に使用する命令セットです。引数と返りは全てdouble型になります。 主なもの: sin(x):角度x(ラジアン)のsinの値を返す cos(x):角度x(ラジアン)のcosの値を返す tan(x):角度x(ラジアン)のtanの値を返す pow(x,y):xのy乗の値を返す exp(x):指数関数eのx乗の値を返す log(x):xの自然対数の値を返す log10(x):xの常用対数の値を返す sqrt(x):xの平方根の値を返す ceil(x):小数第一位を切り捨てした値を返す floor(x):小数第一位を切り上げした値を返す round(x):小数第一位を四捨五入した値を返す サンプル: #include <stdio.h> #include <math.h> //math.hのインクルードを忘れずに int main(int argc, const char * argv[]) { // insert code here… double value = 0.5; printf(“sin : %f\n”, sin(value)); printf(“sqrt : %f\n”, sqrt(value)); printf(“ceil : %d\n”, (int)ceil(value)); printf(“floor : %d\n”, (int)floor(value)); return 0; } 文字列を数値型に変換する関数 文字列を数値型にするときに使われる関数がatoi関数(整数型に変換する場合)とatof関数(小数型に変換する場合)があります。 サンプル: […]
1.3 入力
puts関数:表示を行う関数 書式化の必要がなく、改行もしたいの場合 puts(“ABC”); printf(“ABC\n”); scanf関数:読込みを行う関数 scanf関数は、処理の途中でキーボードから文字の入力を求め、入力されたものを処理に利用するというものです。 実例: #include <stdio.h> int main(int argc, const char * argv[]) { // insert code here… int input; printf(“数字を入力して下さい。\n”); scanf(“%d”, &input); printf(“入力された数字は、%dです。\n”, input); getch(); return 0; } 実行例: 数字を入力して下さい。 3 入力された数字は、3です。 テキストが出力され キーボードからの入力待ちの状態。入力してエンターキーを押しますと処理が再開 書式付き出力 scanfの2番目の引数に変数を指定する際は、「&(変数名)」というように「&」をつけてポインタとして扱って下さい。そういうルールだと思っていただいて構いません。 実践レベルの問題を考えれば、実は scanf() 関数が使われることは滅多にありません。理由はエラーチェックが十分にできないからです。十分なエラーチェックを行う必要がある入力は(商用のプログラムは十分なエラーチェックが必要であり、結果として本格的なプログラムには scanf() をあまり使わない)変換作業を行わずに、他の標準入力関数を用いて文字列として入力された情報を受け取り、入力された文字列を調べて適切な値に変換するというような作業を行います。もちろんこれらの作業は複雑になります。
11.3 文字列関数
標準ライブラリ関数 : 文字列操作関数 string.hのヘッダファイルをincludeする 主なもの: strcpy(ss,st):文字列(文字型の配列)ssに文字列stをコピーする strlen(st):文字列stの長さを求める strcat(ss,st):文字列ssの後ろに文字列stを連結する strncpy(ss,st,n):文字列ssに文字列stの先頭n文字をコピーする strncat(ss,st,n)文字列ssの後ろに文字列stの先頭n文字を連結する サンプル: #include <stdio.h> #include <string.h> //string.hのインクルードを忘れずに int main(int argc, const char * argv[]) { // insert code here… char str[40]; char alpha1[] = “ABCDE”; char alpha2[] = “VWXYZ”; int length; printf(“alpha1 : %s\n”, alpha1); printf(“alpha2 : %s\n”, alpha2); strcpy(str, alpha1); strcat(str, alpha2); printf(“str : %s\n”, […]
1.2 変数と入力
変数と宣言 代入 int a, b; a = 19; b = -20; 変数初期化 int a = 1; int b = 10; int c = 4; 変数の演算 a = b + c; (練習1)変数と宣言のサンプル #include <stdio.h> int main(int argc, const char * argv[]) { // insert code here… int a; int b; int result; a = 4; b […]
8.5 入出力と文字
標準ライブラリ関数 : 標準入出力関数 標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。 標準入力から文字入力 getchar 関数 標準出力から文字出力 putchar 関数 標準入力から文字列入力 gets 関数 標準出力から文字列出力 puts 関数 標準入力から書式付き入力 scanf 関数 標準出力から書式付き出力 printf 関数 標準入力関数(参考) getchar() int getchar(void); 標準入力(キーボード)からの入力値を「EOF」まで1文字づつ取得します。エラー時は「EOF」を返します。 gets() char *gets(char *str); 標準入力(キーボード)からの入力値を「EOF」※1まで1行づつ取得して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。エラー時は「EOF」を返します。 但し現在では読み込む長さを指定できる「fgets()」の使用が推奨されています。 fgets() char *fgets(const char *str, int n, FILE *stream); 「*stream」で示されるストリーム※2から「n-1」文字を取得し「\0」を付加して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。 scanf() int scanf(char *format,…) ; […]
1.1 表示
C言語の特徴(1) 関数型言語 コンピュータに実行してもらう命令はすべて関数の中に記述されている。関数がプログラムの実行単位。いくつかの関数を組み合わせ、コンピュータへ命令をする。最初にコンピュータが実行する関数はmain()に決まっている。 戻り値の型 関数名(引数リスト) { 命令文; } コンパクトな言語仕様 予約語(キーワード)は各種の指示を行う命令。全部で32個。このなかには「画面に文字を表示する」とか「ディスクにデータを書き込む」などという「入出力」の機能はない。すべて「関数」として実現されている。このような基本的な関数がないとコンピュータとやり取りできないので、必ず標準ライブラリ関数として予め用意されている。 #include <stdio.h> Cプログラムの作成 C プログラムの作成手順 文字の並びとして作成したソースプログラムを、コンピュータが理解できる形式に変換する C プログラミングを書くための約束事 基本は半角英数字で書く 大文字と小文字は別の文字 文はセミコロンで区切る 余計なことは書かない 余計なことは「コメント」で (練習1)文字列の表示 C言語はmain()関数ではじまる C言語の標準関数はヘッダファイルに記述されている ヘッダファイルをインクルードするにはプリプロセッサ命令 #include をソースの先頭で使う // test1.c // 全角と半角の入力に注意 // { { ((( \\\\\\n //これがさいしょのぷろぐらむ #include <stdio.h> int main( ) { printf(“おはよう \n”); printf(“こんにちわ\n”); printf(“こんばんわ\n”); return 0; } 日本語環境では、バックスラッシュ(\)の表示は円マーク(¥)になる。
C言語検定(3級)
C言語検定試験について 主催・認定 サーティファイ情報処理能力認定委員会 試験名 C言語プログラミング能力認定試験 (C-Language Programming Skills Qualification Test) 試験目的 C言語を駆使して応用プログラム(言語処理系、ユーティリティなど)を作成する能力を認定します。 認定基準 一級 C言語を駆使し、応用プログラム(言語処理系、ユーティリティなど)が作成できる能力を有する。 また使用しているOSについて理解をしている。 二級 小規模のプログラム(500行程度)が適切に(理路整然、簡潔、正しく、速く)書ける。 また各種基本アルゴリズムを理解している。 三級 C言語の概念を理解し、簡単なプログラムが書ける。 C言語を駆使した応用プログラムの作成能力を認定 C言語は、記述の自由度が高く、使用可能なプラットホームが多いなど、使用できる場面が多いことから、現在最も広く普及しているプログラミング言語です。このC言語のプログラミング能力の測定を目的に、1992年より開始されたのがサーティファイ 情報処理能力認定委員会が主催する「C言語プログラミング能力認定試験」です。 保有スキルのレベルに合わせた3段階の認定基準を設けることにより、これから新たにプログラミングの学習を始める方から、現在プログラマやシステム・エンジニアとして既に活躍されている高度IT技術者の方まで、幅広い皆様から受験いただいています。 初学者から、ビジネスシーンで活躍できるプログラマまで、幅広いスキルを測定 「C言語プログラミング能力認定試験」は、これからプログラミングを学び始める方を対象とした「3級」から、プログラマやシステム・エンジニアとして活躍されている方の保有スキルを客観的にアピールできる「1級」まで、幅広いスキルを測定しています。 特に「1級」では、実際にPCを使用して、プログラムの仕様変更やこれに伴うプログラミング作成(コーディング・コンパイル・デバッグ)を行う、極めて実践的な資格・検定試験として、IT業界でも高く評価されています。 基本情報技術者試験の午後の試験対策としても有効 「C言語プログラミング能力認定試験」の「2級」及び「3級」は、経済産業省認定「基本情報技術者試験」の「午後問題」の出題形式も意識して作成しています。そのため、「基本情報技術者試験」の学習と連動した活用も多く見られます。保有スキルのレベルに応じた級位取得を目標としていただくことで、C言語のプログラミング能力を高めるだけではなく、「基本情報技術者試験」の合格にもつなげていくことができます。 参考(3級出題範囲) 出題内容 定数 整数定数 10進定数、8進定数、16進定数 整数接尾語は符号無し接尾語(u、U)のみ 文字定数 ワイド文字定数(L’c文字の列’)を除く 拡張表記は単純拡張表記のみ 文字列リテラル ワイド文字列リテラル(L”s文字の列”)を除く 拡張表記は単純拡張表記のみ 演算子 算術演算子、インクリメント演算子、デクリメント演算子、(算術の)代入演算子、関係演算子、等値演算子、論理関係演算子、括弧演算子、コンマ演算子 型指定子 char、int、unsigned、signed 変数 上記型指定子の単純変数、配列 初期化の構文 基本制御文 break、continue、do、for、if、return、switch、while プリプロセッサ機能 #define、#include ライブラリ関数 […]
C code I 指南
C言語ガイダンス 学習目的 プログラミングは楽しい 資格取得 就職 情報工学系科目のC言語の位置づけ カリキュラム C言語プログラミング能力認定試験(C言語検定) 基本情報技術者試験 プログラミング言語の歴史 アセンブラ→C→C++→Java→C# どのプログラミング言語が話題になっているか? 順位 TIOBE Programming Community Index TIOBE Programming Community Index , PCI値は、複数の検索エンジンの検索結果から対象とするプログラミング 言語がどれだけ話題になっているかをインデックス化したの。TIOBE Softwareでは毎月中旬に分析結果を公開し ている。 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html PCの使い方、先生PCからのFile受信 PC Windows7 フォルダー(Folder) ⇒ 箱 ファイル(File) ⇒ 文書 マイ ドキュメントの中にCソース、pdf、書類を置くこと デスクトップにはショートカット 文字入力 半角⇔全角 を理解 ああ aaa アルファベット入力⇒日本語変換に慣れるようにする マウス「クリック」操作 ファイルの移動 ⇒「ドラッグ・アンド・ドロップ」操作 文字列やファイルのコピー ⇒「コピー ・アンド・ペースト」操作 ctrl+C , ctrl+V , ctrl+A 初めわからなくても調べる努力は大事 ⇒情報知性の向上