The Office Uchida, School of Computer

コンピュータを学習する人の学校:パソコンキャンパス、プログラミングキャンパス
ホームC言語によるプログラミング 基礎編
文字の縮小

デジタルナレッジの本コンテンツの販売サイト (1ヶ月コース, 4,200円)(3ヶ月コース, 8,400円)(6ヶ月コース, 12,600円)

「C言語によるプログラミング 基礎編」 速習コース(約17時間30分:学習時間1ヶ月)
「C言語によるプログラミング 基礎編」 標準コース(約17時間30分:学習時間3ヶ月)
「C言語によるプログラミング 基礎編」 じっくりコース(約17時間30分:学習時間6ヶ月)

対象となる方:C言語のプログラムを実際に組めるようになりたい方、あるいは読めるようになりたい方

内容紹介:プログラミングの初心者の方からある程度のプログラミング経験をお持ちの方を対象に、C言語の持つ機能を一通り学習します。 e-Learningでは、データの流れや処理の流れをアニメーションで分かりやすく説明できます。 一方、書籍のほうは詳しく書いてある説明をじっくりと読んで理解するのに適しています。 なお、書籍は、内田智史監修、株式会社システム計画研究所編、 「C言語によるプログラミング 基礎編 第2版」、オーム社(ISBN 4-274-06440-9)を用いますので、別途ご用意ください。
 この講座の講師は、過去18年に渡り、企業や各種セミナーなどでC言語の教育に携わってまいりました。そのノウハウがこの講座に集約されています。
 なお、初心者の方が本講座をきちんと学習するには最低でも約3ヶ月はかかるかと思います(詳細は、FAQ参照)。  そこで、3ヶ月コースと6ヶ月コースを用意しました。 しかし、ある程度の知識のある方でポイントだけ抑えればよい場合や、集中して勉強したい人のために速習コースである1ヶ月コースも用意してあります。 これらは学習期間が異なるだけで内容は同じものです。

講師

神奈川大学工学部准教授
内田智史 詳しいプロフィール

学習方法:本コンテンツの学習方法は、こちらからどうぞ。

FAQ:本コンテンツに対するFAQは、こちらからどうぞ。

C言語によるプログラミング 基礎編 (総講義時間:17時間24分43秒)
第1章 プログラミングの基礎知識 (43分23秒)
タイトル収録時間ポイント
1.1本ビデオ授業での学習の仕方9:57なぜ、ビデオ授業か, 本講座の目的, 学習方法
1.2C言語の位置付け9:56ソフトウェアの活躍する範囲、科学技術計算の特徴, C言語の誕生とその意義, C言語のいいところ、わるいところ
1.3プログラムの作成から実行まで22:10プログラムを機械語に翻訳して実行する意味, エディタでソースプログラムを作る, gccでコンパイルして実行する
1.4プログラミングの基礎知識1:20プログラミングに王道なし, 初心者から中級者になろう
第2章 プログラミング入門 (56分47秒)
タイトル収録時間ポイント
2.1画面にメッセージを表示しよう20:02画面にメッセージを表示するプログラム, プログラムの書き方と特徴, 基本的な文法知識
2.2数の計算をしてみよう16:532個の数を加えるプログラム, 変数と計算するプログラムの書き方, 基本的な整数の演算子
2.3入出力について9:04データの入力と出力, データを入力して表示するプログラム
2.4プログラムの流れを変える10:48条件判断, 条件判断を用いたプログラム例, データのチェック
第3章 変数と式 (1時間54分51秒)
タイトル収録時間ポイント
3.1a変数について9:05変数とは何か, 変数の文法規則, 誤りのある変数の例
3.1bデータ型26:37コンピュータで扱うデータ, 整数型と実数型, char型
3.1c定数23:00定数とは, 10進以外の定数, printf 変換
3.1d変数の定義11:24変数の定義, 変数の初期化, const, signed, unsigned
3.2a15:25式文、代入文, 演算子, 右辺値、左辺値
3.2b算術演算子20:36整数型・実数型の演算とその演算回路, 整数型の演算回路, 実数型の演算回路
3.2c混合演算8:44混合演算, 精度の消失, キャスト
第4章 制御の流れ (2時間51分14秒)
タイトル収録時間ポイント
4.1a条件演算32:22条件判断処理, 関係演算子、論理演算子、否定演算子, 文字の入力
4.2a条件演算12:45if文, 複文, else文
4.2bswitch文13:13switch文, さまざまなswitch文の例, プログラム例
4.2c多肢条件文14:36多肢条件文, if - else if - else文, switch文
4.2d多肢条件文の応用と数学関数11:48数学関数, エラーの例, プログラム例
4.3.1a繰り返し処理とwhile文11:44ループ処理, while文, プログラム例(数表、集計)
4.3.1bインクリメント演算子など20:42インクリメント・デクリメント演算子とその動作, 練習問題と誤用例, プログラム例
4.3.1cループの境界条件2:05ループの境界条件とタイミング
4.3.1dgetcharとputchar11:15getcharとputchar, なぜ、入力文字にint型を使うのか, EOFとは何か
4.3.1ebreak文とcontinue文3:49break文とcontinue文, プログラム例
4.3.2afor文15:08for文, continue文とbreak文, プログラム例
4.3.3ado-while文3:35do-while文, while文とdo-while文の違い, プログラム例
4.3.4a無限ループ3:49無限ループとは, 無限ループのプログラム例, 無限ループ使用時の注意
4.3.4bループのネスト7:00ループのネスト, ネストとbreak文, 外側のループには脱出できない
4.4a無条件分岐4:35ラベル, goto文とループの内側からの強制脱出, 空文
4.5a条件演算子2:48条件演算子, プログラム例
第5章 関数 (2時間17分11秒)
タイトル収録時間ポイント
5.1.1関数とは(やさしい解説)25:30例題による関数の紹介, パラメータの受け渡し, プログラムの形式と動作
5.1.2関数を含むプログラムの構造19:29プログラムの構造, ヘッダファイル, プロトタイプ宣言
5.1.3関数の呼び出し手順11:54組み合わせ数を求める関数, 関数の具体的な呼び出しメカニズム, プログラム例
5.1.4局所変数と数値計算4:30局所変数, 自作関数の作り方
5.2関数宣言と引数5:22引数の記述形式, 引数の個数と型の一致, 関数の名前と重複の禁止
5.3いろいろな関数の例14:03プロトタイプ宣言, 名前空間, void型関数
5.4aさまざまな変数(概要)5:04記憶クラス、記憶クラス指定子, 生存期間、配置場所、通用範囲(スコープ), 外部変数、静的変数、局所変数
5.4b自動変数13:28自動変数とは, 局所変数、仮引数, スタック
5.4c外部変数とstatic変数14:10ファイルの分割, 自分が呼ばれた回数を返す関数, 外部変数とstatic変数
5.4dレジスタ変数4:59レジスタ変数とは, 生存期間、配置場所、初期値
5.4e変数の初期化7:10静的変数の初期化, 自動変数の初期化
5.5変数の通用範囲11:32通用範囲(スコープ)とは, ブロック、関数、複数ファイルにおける通用範囲
第6章 配列 (2時間8分14秒)
タイトル収録時間ポイント
6.1配列の概念4:55配列の必要性, 配列の基礎, 配列を用いる場面
6.2a配列の使い方9:21配列変数の定義, 配列定義の仕方, 配列を用いる場面
6.2b配列の利用例8:12配列のコピー, 配列の添字の範囲チェック, 全配列の初期化、最大値検索
6.3a平均値・分散・標準偏差10:10集計計算, 平均値・標準偏差, 配列を用いる場面
6.3b並べ替え15:33交換法のアルゴリズム, 交換法のプログラム
6.4配列の要素数とマクロ定数7:58配列の特徴, マクロを使ったプログラムの修正
6.5a2次元配列4:202次元配列の文法説明, 2次元配列の事例による説明
6.5b行列計算8:08行列を配列で表現する, 行列の和と積, 行列計算プログラム
6.5c座標計算16:15座標計算, 最も遠い席を探す, サンプルプログラムのデータ構造
6.6a1次元配列の初期化14:461次元配列の初期化, 配列の要素数, 配列処理のアルゴリズム
6.6b2次元配列の初期化5:112次元配列の初期化, 最後のコンマ, メモリ中の配置
6.7多次元配列8:34多次元配列とは, 3次元配列、それ以上の配列, 多次元配列のアクセスと利用例
6.8関数の引数に配列を使う14:51関数に配列全体を渡す, 関数に配列の要素を渡す, 関数内での配列の変更
第7章 文字列 (1時間35分28秒)
タイトル収録時間ポイント
7.1a文字列の表現16:34文字と文字列, 文字列を文字配列として使う, 文字列の標準関数
7.1b文字配列の初期化6:45文字配列の初期化, 文字列の初期化に関する注意
7.2a文字列の操作3:16文字列の操作
7.2b文字列のコピー5:45文字列のコピー, 文字列をコピーする関数を定義する, その関数を使う
7.2c文字配列の使用例と注意点12:58文字配列の使用例と注意点, 関数の引数に文字配列を記述する場合, 文字配列の寸法を超えたコピー
7.2d文字列の長さ9:33文字列の長さ, 文字列の長さを計算する関数, scanf関数とgets関数
7.2e文字列の連結15:49文字列の連結(誤り版と正解版、危険版), 連結のアルゴリズム
7.2f文字列の比較24:48文字の大小(ASCIIコード表), 文字列比較関数, プログラム例
第8章 ポインタ (2時間00分10秒)
タイトル収録時間ポイント
8.1aアドレス4:09コンピュータの記憶装置, プログラムのロード, 記憶装置に配置されたプログラム
8.1bポインタとは4:17ポインタとは, NULLポインタ
8.1cアドレス演算子6:04アドレス演算子とは, アドレス演算子の利用, レジスタ変数のアドレスが取れない理由
8.1dポインタ変数の定義9:58ポインタ変数の定義, ポインタ変数の定義の制限, さまざまなポインタ変数
8.1e間接演算子8:27間接演算子, アスタリスク(*)の用法, なぜ、特定の型しか指せないのか?
8.1fポインタ変数の初期化4:29ポインタ変数の初期化の重要性, ポインタの初期化, ポインタは危険
8.2aポインタ演算19:04ポインタ演算とは, ポインタ演算の種類, ポインタ演算の具体的な例
8.2bポインタと配列25:48アドレス計算, サンプルプログラム:合計を求める, ポインタで効率を追求する
8.2cポインタ変数と配列の相違6:13ポインタ変数を配列のように使う, ポインタと配列の相違
8.2d文字列とポインタ13:50文字列定数, 初期化に用いられる文字列定数, プログラム例
8.2eポインタの引数としての使い方17:51誤りのあるswap関数と正しいswap関数, str_copy関数のポインタ版, 配列要素の和を計算する関数プログラムのポインタ版
第9章 構造体とユーザ定義型 (1時間36分19秒)
タイトル収録時間ポイント
9.1構造体の概念23:49構造体の概念とその定義, 複雑な構造体の定義, 構造体のネスト
9.2共用体15:27記憶装置の特性, 共用体とは, 共用体を使う場面
9.3構造体と共用体の初期化7:24構造体の初期化, ネストされた構造体の初期化, 共用体の初期化
9.4a構造体の配列12:09構造体の配列, 構造体の配列の初期化, プログラム例
9.4b構造体へのポインタ4:56構造体のポインタ
9.4c構造体と関数5:49構造体を関数の引数にする, 構造体を返す関数の定義, プログラム例
9.5atypedef16:54typedefの利用, 高度なtypedef, typedefが有効な局面
9.5b列挙(enumeration)7:57typedefの多少の問題点を列挙型で解決, 列挙型の正体, #defineとenumの違い
9.5c宣言と定義1:54宣言と定義の違い
第10章 ファイル (1時間21分06秒)
タイトル収録時間ポイント
10.1ファイルの概念8:26ファイルからのデータ入力,
10.2ファイルからの入力12:5ファイルを入力するには, 実際のプログラムの動作, プログラム例
10.3ファイル名を指定した入力5:1ファイル名の指定, ファイル名の長さ, キーボードからのファイル名の入力
10.4入力データの終わりの判定4:12ファイルから入力するデータの終わりの判定
10.5複数ファイルから入力するには2:37複数ファイルからデータを入力する方法, その際の注意点
10.6ファイルへの出力10:41ファイルへの出力, 出力時のプログラムの動作, 改行の注意点
10.7ファイルの追加出力3:04ファイルの追加出力, プログラム例
10.8aエラー発生時の対処6:07エラーを未然に防ぐ, エラーチェックの方法, エラーチェックを行う関数
10.8bfscan関数の危険性13:24fscanf関数の危険性, fscanf関数の危険性の回避法
10.8cfclose関数のチェック・例外処理4:15fclose関数のチェック, 例外処理で有効なgoto文
10.9ファイルと入出力8:32ファイルの入出力, 標準入力・標準出力・標準エラー出力
10.10実用的なプログラムへの応用(概要のみ)2:42実用的なプログラムを開発するには, サンプルプログラムの概要

本コンテンツの学習方法

本講座は、インターネット上で学習する新しい形態の教育システムです。 すべての授業はWeb上にあり、期間内であれば、いつでも視聴することができます。

また、この講座は書籍を使います。別途、書籍 内田智史監修、株式会社システム計画研究所編、 「C言語によるプログラミング 基礎編 第2版」、オーム社(ISBN 4-274-06440-9)を用意し、これを見ながら授業を受けて下さい。

プログラミングは、文法を覚えただけでは不十分です。本講座で学習した内容は必ず、実際にプログラムを作成して確認して下さい。 本来は、自分でプログラムを入力したほうが学習効果が高くなるのですが、この書籍のソースプログラムは、 筆者の研究室のC言語の勉強室に公開されています。

質問は受け付けておりませんが、私の大学の電子メールアドレス(uchida@inf.ie.kanagawa-u.ac.jp)には、一般の方や私の書籍の読者から多くの質問が参ります。 すべての質問に直ちに答えることはできませんが、極力解答するようにしています。常にお答えできるか分かりませんが、メールしてみてください。 なお、そのような質問は、FAQ集に登録させていただきます。

本コンテンツに対するFAQ

質問:すべてを学習するのにどのくらいの期間がかかりますか?

 e-Learningの講座の総時間は約20時間です。 毎日4時間ずつ学習すれば5日で終わる計算になりますが、実際にはそうは参りません。 できる限り、やさしく解説していますが、本講座のコンテンツを見るには初心者の場合には、約40時間程度 必要になります。さらに、プログラムを作成するなどの実習を行えば、その倍の80時間から120時間程度の学習は必要になる と考えられます。月から金まで一日2時間学習しても2ヶ月から3ヶ月程度はかかると考えられます。その意味で3ヶ月を標準コースとしております。
 一方、ある程度の前提知識をお持ちの方は、本講座を知識を整理する形で利用していただくようにすることができるので、 この場合は1ヶ月程度の学習で済むと思います。
 なお、実習をふんだんに行って確実にC言語を自分のものにしたい方に対して6ヶ月コースがあります。

質問:本講座の前提知識は、どのようなものでしょう。

 プログラミングに関する前提知識はまったく仮定しておりません。 しかし、パソコンに関しては、まったくの初心者の方は想定しておりません。 少なくとも、パソコンの電源を入れて、キーボードやマウスなどを操作して、簡単な仕事ができる方を対象としています。 しかし、もちろん、本格的にパソコンを理解している必要はありません。 まあ、この講座を見れる程度のスキルがあれば、十分かと思います。
 ただし、もちろん、何らかの前提知識があれば、講座の学習速度は大幅に速くなると思います。

質問:指定された書籍がなくても、この講座を受講することができますか?

 この講座は、書籍をテキストとして使うことを仮定しております。 したがって、書籍なしに受講した場合、学習効果がかなり低いものになってしまう可能性があります。 ぜひ、書籍を手元において学習して下さい。
 書籍『内田智史監修、株式会社システム計画研究所編、 「C言語によるプログラミング 基礎編 第2版」、オーム社(ISBN 4-274-06440-9)』は、一般の書店で購入することができます。

質問:どのような方にこの講座はお勧めですか?

 C言語でプログラムを作成したい方です。学生の方や企業の方、あるいは教員やインストラクタの方を対象としています。 C言語は、数あるプログラミング言語の中でも習得が難しい部類に属します。そのC言語を自分のスキルの中に 加えたい人にお勧めです。
 企業の研修や新人研修などにも十分利用できます。実際に、この書籍はいくつかの企業の研修、新人研修に利用されています。

質問:本講座でC言語のすべてを網羅しますか?

 本講座で使っている書籍は、「基礎編」です。しかしながら、C言語の文法に関することは大半網羅しています。 文法的なことで網羅していない部分は、(a)再帰呼び出し、(b)複雑なマクロ、(c)派生型、などです。 また、データ構造に関しても、(a)リスト処理、(b)クイックソートやマージソード、(c)バイナリツリー、(d)バイナリサーチ、など は扱っておりません。 さらにアプリケーションの対象として、(a)ネットワーク、(b)スレッド、(c)データベースも扱っておりません。 これらは、本書の続編である 内田智史監修、株式会社システム計画研究所編、 「C言語によるプログラミング 応用編 第2版」、オーム社(ISBN 4-274-06440-9)で扱っている内容です(スレッド、データベースを除く)。

質問:本講座では、特定のCコンパイラを仮定していますか?

 本講座は、特定のコンパイラを仮定しておりませんが、自宅などで安く学習したいと方のために、 GNU gccの説明を一部しております。しかし、その他のコンパイラ(たとえば、 Visual C++.NET)でも問題なく動作します。

質問:本講座で学習したプログラムをダウンロードできますか?

 本講座は、教科書としてオーム社の「C言語によるプログラミング 基礎編」を用いています。 その編者のサポートページであるC言語の勉強室から、「C言語によるプログラミング 基礎編」に掲載されているプログラムのダウンロードは可能です。 それ以外のこの講座の中だけで出てくるプログラムのダウンロードは現時点ではできません。