* 連載・基本はいつもC言語 [#p8e7defd] -日経ソフトウェア2005年7月~2006年6月号 -全12回 -対象処理系: Borland C++ 5.5 (Cコンパイラとして使用) -続編としての中級編は[[連載/100.基本はいつもC言語]] -内容は全面改定され、連載時にカットされた原稿も復活、対象処理系をVisual C++ 2008/MinGWに変更して[[単行本/100.C言語教科書【入門編】]]に収録 ** 第1回 Cの美学! ゼロからのC入門!コンパイラをセットアップしよう [2005年7月号掲載] [#b320bdd2] パソコンもファスト・フード化している! 今こそ目指そうCの美学! Borland C++ Compiler 5.5をセットアップ コンパイラの動作に必要な設定を済ませる 文字による操作に取り組もう コマンドプロンプトを操作する 初めてのCプログラムを書いてみよう コンパイル前の最終確認をする 初めてのコンパイルとエラーへの対処 初めての実行! コラム 特定の拡張子を持ったファイルを確実に作成する コラム すべての拡張子を表示する設定 ** 第2回 わずかなコードで多彩に機能する「標準入出力」で楽しんでみよう [2005年8月号掲載] [#a68ae281] Hello Worldプログラムをもっと楽しむ “Hello World!”という出力文字列をテキスト・ファイルにする “Hello World!”という出力文字列をプリンタで印刷する “Hello World!”という出力文字列を別のプログラムに入力する わずかな労力で多くの機能を!「標準出力」の力 最初に実行される関数“main” printf関数の宣言はどこにあるのか? ヘッダー・ファイルはライブラリ活用の便利手段 サンプルを改造してみよう 「決まり切った文字列」を卒業しよう 標準出力と対になる標準「入力」もある 根幹部分はライブラリ関数で実現できる Upper1プログラムも改造してみよう コラム コマンドライン・ヒストリを活用してキー入力を減らす コラム gets関数にはバッファ・オーバーランの危険 ** 第3回 プログラムに「賢さ」を与える切り札!条件判断でプログラムの動作を変える [2005年9月号掲載] [#j121a2ba] もしも入力が空だったら? 金額によって処理を分ける キーワードelseで条件不成立時の処理を指定 合言葉は「山」「川」――複雑な条件の記述 コラム 文字列の比較に“==”を使用できない理由 コラム if文一つで多彩な条件判断が可能 ** 第4回 短いコードで大きな結果を生む「繰り返し」をマスターしよう [2005年10月号掲載] [#v2f3ff6d] プログラムに「力」を与える たった10数行で無限に羊を数え続ける forキーワードでループを作る 指定した回数だけ繰り返すループを作る 三つの式で繰り返しの条件を指定する ループの中に別のループを入れる Upper1を拡張し,任意の行数に対応させる ** 第5回 配列処理を通して知る「文字=数値」の不思議! [2005年11月号掲載] [#k947b3cd] 多数のデータを効率よく記憶する配列 「範囲外アクセス」に注意 Cの文字列は「文字」の「配列」 文字とは実は数値である 一つの数値で表す文字と二つの数値で表す文字がある 漢字対応の逆転処理プログラムを作ろう ** 第6回 最大の難関にして最大の喜び!さあ,いよいよポインタだ! [2005年12月号掲載] [#a3319c26] メモリー空間=巨大な配列 宣言することでメモリーを確保できる ポインタでメモリー空間を扱う 配列の名前はポインタのように扱える ポインタを知ればライブラリをフル活用できる! 整数型のポインタもある コラム 配列ではない変数のポインタ値を得る ** 第7回 コードから重複を取り除く関数の書き方/使い方 [2006年1月号掲載] [#i1023f1a] コードの重複を取り除け! 作者が自由に名前を付けられる 引数を活用してさらに重複を減らす 戻り値で結果を返す関数を作る 「有効範囲(スコープ)」のわな main関数の引数と戻り値も活用しよう バッチ・ファイルでmain関数の戻り値を参照する コラム 引数なしの関数はvoidキーワードで「引数なし」と明示 ** 第8回 データをまとめて効率化構造体に情報を結集させる [2006年2月号掲載] [#zbe580f1] データを扱う手間も減らそう 複数のデータをまとめた「構造体」を宣言する 構造体の変数を作ってデータを格納する structキーワードを書かないで済ませるテクニック 構造体は引数の記述も簡単にする 構造体の配列を作ることもできる 構造体で実現するリンク・リスト malloc関数でメモリーを借り受ける コラム 型に別名を付けるtypedef宣言 ** 第9回 ファイル入出力機能で複数のファイルを自在に操る! [2006年3月号掲載] [#w5118fdb] この二つのファイルは同じか? fopenで開き,fgetsで読み取る fopenとfgetsを結ぶ「FILE構造体」 開いたファイルはfclose関数で必ず閉じる fgets関数は単なる「ファイル対応版gets関数」ではない 複数のファイルを一つにまとめる 複数のファイルに分類して書き出す ** 第10回 検索+ソート+ユニーク=?実用コマンドの自作に挑戦! [2006年4月号掲載] [#nfd6825d] テキスト処理コマンドを自作しよう ワイルドカード対応検索ツールを作る 文字列の一致をどうやって調べるか ポインタ操作で検索開始位置をずらしていく 様々な条件判断で比較を進める 順番を整列するソート 泡のようにソートせよ バブルソート・アルゴリズムをCプログラムにする 「ユニーク」はユニークな宿題で ** 第11回 いざというときに心底役に立つデバッグとそのテクニック! [2006年5月号掲載] [#ub55766a] 優秀なプログラマはデバッグもうまい 名探偵を目指せ――推理と絞り込み わからないときは違う角度からソースを見る 誰もが知る有名テクニック「printfデバッグ」 デバッグ出力をファイルに書き出す あるべき値を保証する「assertマクロ」を利用する コラム まずは自分のプログラムを疑ってみよう コラム 使い終わったprintf関数呼び出しは削除する? コラム assertマクロはエラー・チェックには使わない ** 最終回(第12回) 卒業制作!CSVファイル処理を実践 [2006年6月号掲載] [#bd9c2210] 実用的なプログラムへ第1歩を踏み出そう まず敵を知る――CSVファイルの仕様は? 次は己を知る――何をどう作るのか? CSV処理関数の仕様を考える テスト用main関数の仕様を決めよう CSVの迷宮を踏み越えろ main関数でreadRecord関数の使い方を確認 readRecord関数の活用――クロス集計を作る 終わりに――連携がプログラムのパワーを引き出す コラム 一つの配列に複数の文字列を入れる