授業/C言語基礎/プログラミングを学ぶための心構え
をテンプレートにして作成
開始行:
プログラミングを学ぶにあたっては、心構えが重要です。
きちんと心構えをして学ぶのと心構えをしないで学ぶのとでは...
そこで、プログラミングを学ぶための心構えを示します。
(ここではC言語を対象にしていますが、他のプログラミング言...
#contents
*Level 1: はじめてのプログラムを書く前に [#wed3eabf]
**プログラミングは知識ではなくスキル [#iae8eab0]
デジタル大辞林によると、スキルとは、「手腕。技量。また、...
プログラミングを学ぶということは、プログラミング言語につ...
身近なものに例えると、スポーツ、料理、楽器演奏、絵を描く...
例えば、自転車に乗れるようになるためには、自転車そのもの...
実際に自分で自転車に乗ってみて、何度も練習して、少しずつ...
プログラミングも、知識を学んだだけでは実際にできるように...
実際に自分でやってみて、何度も練習して、少しずつ上手にで...
**プログラミングは楽しい [#zbdf0c1d]
プログラミングは、最初は難しいと感じるかもしれませんが、...
スポーツ選手が苦しい表情をしながら厳しいトレーニングをし...
しかし、できなかったことができるようになったときの喜びや...
プログラミングも、できるようになるまではすこし苦しいかも...
**良い道具を使う [#ndafce00]
いい道具を使わないと、なかなか上達できません。
-エディター(プログラムを書くためのソフトウェア)
--構文を解釈して色をつけることができる(シンタックス・ハ...
--自動的に字下げできる(自動インデント機能)
--行番号が表示できる
--文字の違い(下記参照)が解りやすいフォントが選べる
--空白、タブ、改行など見えない文字を可視化できる
--文字コードと改行コードを変更できる
-ディスプレイ
--画面が広い(解像度が高い)もの
-キーボード
--打ちやすいもの
Windows PCであれば、外出先では13.3型のノートPC、自宅では...
エディターにはTeraPadを使います。
ある程度上達したらもっといい道具を使いますが、最初のうち...
**上手なプログラムと上手な人のプログラミングを真似る [#e7...
スポーツ、料理、楽器演奏、絵を描くことなど、スキルを上達...
プログラミングも、上手なプログラムを真似ること、上手な人...
友達や先輩が書いた下手なプログラムを見せてもらって、それ...
上手なプログラムと上手い人のプログラミングを真似ましょう。
**プログラムを見ただけでわかったつもりにならない [#pe3dfe...
完成されたプログラムや他の人のプログラミングを見て勉強す...
**とにかくやってみる [#dd66d475]
スキーを履いたことがない人がいきなりスキーのジャンプ競技...
でも、パソコンを触ったことがない人がいきなりプログラムを...
しかも、間違ったプログラムを書いたらどうなるのかは、やっ...
間違いや失敗を恐れず、とにかくやってみましょう。
**アルゴリズムとプログラムの違いを意識する [#tcf34fc7]
アルゴリズムとは、問題の解き方のことです。
問題が同じであれば、プログラミング言語が違っても、ほとん...
アルゴリズムの部分は、プログラミング言語を使わずに流れ図...
また、アルゴリズムがわからないと、プログラムはかけません。
例えば、ある整数nが与えられて、1からnまでの整数の和を求め...
このとき、どうやって1からnまでの和を求めるかという部分が...
プログラムが難しいと感じたら、アルゴリズムがわからないの...
*Level 2: はじめてのプログラムを書くときに [#oa5b9a90]
**文字の違いに気をつける [#x23ff807]
プログラミングは、文字の違いに厳しいです。
たとえば、次のCプログラムは正しいプログラムです。
#geshi(c){{
int main(void) {
return 0;
}
}}
でも、次のプログラムは正しくありません。
#geshi(c){{
int main(void){
return 0;
}
}}
上のプログラムと同じように見えますが、このプログラムは全...
また、次のプログラムも正しくありません。
#geshi(c){{
Int Main(Void) {
Return zero;
}
}}
このプログラムは一部が大文字で書かれています。
人間は、mainとMain、0とzeroは、同じ意味だと理解しますが、...
間違えやすい文字を挙げておきます。
-大文字と小文字がほとんど同じ形の英字 Cc, Oo, Pp, Ss, Uu,...
-小文字のエル l と大文字のアイ I と数字のイチ 1 と記号の...
-大文字のオー O と数字のゼロ 0
-ドット . とコンマ ,
-ダブル・クオーテーション " とシングル・クオーテーション...
-マイナス - とアンダーバー _
-カッコ < ( { [ ] } ) >
-空白 と日本語変換された空白
-英数字 abc... と日本語変換された英数字 abc...
プログラムを書くときは、文字の違いに気をつけましょう。
**バックスラッシュ \ と円記号 ¥ は同じもの [#l1750256]
コンピューターが最初に開発されたアメリカやヨーロッパでは...
日本にコンピューターが持ち込まれたとき、¥ が使えない...
このため、バックスラッシュ \ を使う場合と円記号 ¥ を...
この説明も、Windowsでは、\ と ¥ が両方とも ¥ に見...
OS X (Mac) やiOSでは、\ はバックスラッシュに、 ¥ は円...
**プログラムの最後に改行を入れる [#baeb776d]
Cプログラムの最後、つまり閉じ波括弧 ''}'' の後に改行を入...
改行がないと、次のような警告が出ます。
警告: ファイル末尾に改行がありません
**文字コードを意識する [#iec75aa6]
コンピューター内部で文字を表見する方法を文字コードといい...
-Shift-JIS
-EUC (EUC-JP)
-Unicode (UTF-8)
日本語を使うときは、プログラムを保存するときの文字コード...
たとえば、次のプログラムをShift-JISで保存し、UTF-8の環境...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("こんにちは\n");
}
}}
#geshi(sh){{
????ɂ???
}}
*Level 3: はじめてのプログラムが書けたら [#m84057d0]
**プログラムを綺麗に書く [#hdecef90]
プログラムを綺麗に書かないと、プログラミングは上達しませ...
たとえば、最初のサンプルとしてよく出てくるHello Worldプロ...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("Hello World!\n");
}
}}
たったこれだけのプログラムにも、以下のような工夫がされて...
-#includeで始まる行の次の行を空行にして見やすくしている
-{ の行が始まる位置とそれに対応する } の始まる位置を揃え...
-printf命令を字下げ(インデント)して、{ } に囲まれている...
次のプログラムは、C言語として間違ってはいませんが、とても...
#geshi(c){{
#include <stdio.h>
int
main
(
void
)
{
printf
(
"Hello World!\n"
)
;
return
0
;
}
}}
プログラムは、読みやすいよう、綺麗に書きましょう。
**いつでも動かせるようにしながら少しずつ完成させていく [#...
プログラミングの勉強をしていくと、だんだんプログラムが長...
長く、複雑なプログラムを一気に書き上げてコンパイルすると...
そこで、プログラムを書くときは、1行目から順番に書くのでは...
たとえば、Hello Worldプログラムの場合、最初から書き始めて...
#geshi(c){{
#include <stdio.h>
int main(void) {
p
}}
でも、次のようなところで中断した場合には、コンパイルがで...
#geshi(c){{
#include <stdio.h>
int main(void){
}
}}
**コンパイルエラーは一つずつ直す [#c9ae083c]
プログラムの構文が間違っていると、コンパイルエラーが出ま...
このとき、たくさんのメッセージが表示されることがあります。
例えば、次のプログラムをコンパイルします。
#geshi(c){{
#include <stdio.h
int main(void) {
printf("Hello World!\n");
}
}}
すると、次のようなエラーメッセージが表示されます。
#geshi(sh){{
hello.c:1:18: error: expected "FILENAME" or <FILENAME>
#include <stdio.h
^
hello.c:4:3: warning: implicitly declaring library functi...
'int (const char *, ...)'
printf("Hello World!\n");
^
hello.c:4:3: note: include the header <stdio.h> or explic...
declaration for 'printf'
1 warning and 1 error generated.
}}
全部で3箇所のメッセージが出ていますが、実は、エラーは最初...
1行目の最後の > が抜けているだけです。
これが原因で、警告と注釈が表示されています。
ですから、たくさんメッセージが出ていても、直す所は1つしか...
誤りを直したら、再びコンパイルします。
まだエラーが残っていたら、また、最初の1つを直します。
エラーが出なくなるまで、これを繰り返します。
**実行時のエラーはprintf命令で誤りを探す [#ca9a2fa0]
プログラムの構文に誤りがないときは、コンパイル時にはエラ...
でも、プログラムを実行しても正しく動かないことがあります。
多くの場合、Segmentation faultsとか、セグメンテーション違...
このとき、プログラムは、全く動いていないのではなくて、途...
これに対処するための簡単な方法が、プログラムの区切りごと...
やり方は簡単で、次のような命令を入れるだけです。
#geshi(c){{
printf("####\n");
}}
繰り返し処理の最中に止まってしまう場合には、繰り返し回数...
#geshi(c){{
for (i = 0; i < n; i++) {
printf(">> %d\n", i);
}
}}
printf命令で指定した文字列は改行が出力されるタイミングで...
**エラーが解決できないときはGoogleで検索する [#n29d87c1]
コンパイル時や実行時にエラー・メッセージが表示されても、...
そんなときは、Googleでエラー・メッセージの一部を''そのま...
同じエラー・メッセージで困っている人とそれを助けている人...
Googleでエラー・メッセージを検索するときは、フレーズ検索...
コピペしただけだと、空白で区切られた文字列のAND検索として...
フレーズ検索にするためには、エラー・メッセージ全体をダブ...
ファイル名やエラーの位置など自分のプログラムだけに関係し...
**上手に書けるようになるまで同じプログラムを何度も作る [#...
料理は、たまたま一回おいしく作れたとしても、さらに同じ料...
プログラムも、たまたま一回正しく動くものが作れたとしても...
なぜか、課題プログラムをひとつ作っただけで、その課題のテ...
一度作ったからもういいと思わずに、上手に書けるようになる...
**わざとエラーを起こしてエラー・メッセージを確認する [#g7...
教科書や参考書には正しいプログラムしか載っていません。
正しいプログラムはコンパイル時も実行時もエラーが出ません...
そこで、正しいプログラムを作るだけ出なく、わざとエラーが...
*Level 4: ある程度プログラミングができるようになったら [#...
**複数のプログラミング言語を学ぶ [#l78afa15]
C言語を勉強していくと''ポインター''が出てきたところで多く...
C言語ではポインターはとても重要ですから、C言語を勉強する...
しかし、ポインターが存在しないプログラミング言語や変数の...
また、C言語にはない''オブジェクト''や''メソッド''という概...
でも、ほとんどのプログラミング言語に''変数''、''条件分岐'...
複数のプログラミング言語を学ぶことによって、プログラミン...
**デバッガーを使ってデバグする [#h703b869]
プログラムの誤りのことを''バグ'' (bug) といい、プログラム...
作成するプログラムの規模が大きくなると、printf命令による...
C言語でコンパイラーにgccを使っている場合、''gdb''というデ...
*Level 5: かなりプログラミングができるようになったら [#d3...
**統合開発環境を使う [#wee58a96]
統合開発環境 (IDE) は、プログラムを開発するためのツールで...
IDEには、エディター、コンパイラー、デバッガー、ランタイム...
Windows用のIDEとして''Visual Studio''があります。
また、様々なOSとプログラミング言語に対応した''Eclipse''と...
作成するプログラムの規模が大きくなってきたら、エディター...
終了行:
プログラミングを学ぶにあたっては、心構えが重要です。
きちんと心構えをして学ぶのと心構えをしないで学ぶのとでは...
そこで、プログラミングを学ぶための心構えを示します。
(ここではC言語を対象にしていますが、他のプログラミング言...
#contents
*Level 1: はじめてのプログラムを書く前に [#wed3eabf]
**プログラミングは知識ではなくスキル [#iae8eab0]
デジタル大辞林によると、スキルとは、「手腕。技量。また、...
プログラミングを学ぶということは、プログラミング言語につ...
身近なものに例えると、スポーツ、料理、楽器演奏、絵を描く...
例えば、自転車に乗れるようになるためには、自転車そのもの...
実際に自分で自転車に乗ってみて、何度も練習して、少しずつ...
プログラミングも、知識を学んだだけでは実際にできるように...
実際に自分でやってみて、何度も練習して、少しずつ上手にで...
**プログラミングは楽しい [#zbdf0c1d]
プログラミングは、最初は難しいと感じるかもしれませんが、...
スポーツ選手が苦しい表情をしながら厳しいトレーニングをし...
しかし、できなかったことができるようになったときの喜びや...
プログラミングも、できるようになるまではすこし苦しいかも...
**良い道具を使う [#ndafce00]
いい道具を使わないと、なかなか上達できません。
-エディター(プログラムを書くためのソフトウェア)
--構文を解釈して色をつけることができる(シンタックス・ハ...
--自動的に字下げできる(自動インデント機能)
--行番号が表示できる
--文字の違い(下記参照)が解りやすいフォントが選べる
--空白、タブ、改行など見えない文字を可視化できる
--文字コードと改行コードを変更できる
-ディスプレイ
--画面が広い(解像度が高い)もの
-キーボード
--打ちやすいもの
Windows PCであれば、外出先では13.3型のノートPC、自宅では...
エディターにはTeraPadを使います。
ある程度上達したらもっといい道具を使いますが、最初のうち...
**上手なプログラムと上手な人のプログラミングを真似る [#e7...
スポーツ、料理、楽器演奏、絵を描くことなど、スキルを上達...
プログラミングも、上手なプログラムを真似ること、上手な人...
友達や先輩が書いた下手なプログラムを見せてもらって、それ...
上手なプログラムと上手い人のプログラミングを真似ましょう。
**プログラムを見ただけでわかったつもりにならない [#pe3dfe...
完成されたプログラムや他の人のプログラミングを見て勉強す...
**とにかくやってみる [#dd66d475]
スキーを履いたことがない人がいきなりスキーのジャンプ競技...
でも、パソコンを触ったことがない人がいきなりプログラムを...
しかも、間違ったプログラムを書いたらどうなるのかは、やっ...
間違いや失敗を恐れず、とにかくやってみましょう。
**アルゴリズムとプログラムの違いを意識する [#tcf34fc7]
アルゴリズムとは、問題の解き方のことです。
問題が同じであれば、プログラミング言語が違っても、ほとん...
アルゴリズムの部分は、プログラミング言語を使わずに流れ図...
また、アルゴリズムがわからないと、プログラムはかけません。
例えば、ある整数nが与えられて、1からnまでの整数の和を求め...
このとき、どうやって1からnまでの和を求めるかという部分が...
プログラムが難しいと感じたら、アルゴリズムがわからないの...
*Level 2: はじめてのプログラムを書くときに [#oa5b9a90]
**文字の違いに気をつける [#x23ff807]
プログラミングは、文字の違いに厳しいです。
たとえば、次のCプログラムは正しいプログラムです。
#geshi(c){{
int main(void) {
return 0;
}
}}
でも、次のプログラムは正しくありません。
#geshi(c){{
int main(void){
return 0;
}
}}
上のプログラムと同じように見えますが、このプログラムは全...
また、次のプログラムも正しくありません。
#geshi(c){{
Int Main(Void) {
Return zero;
}
}}
このプログラムは一部が大文字で書かれています。
人間は、mainとMain、0とzeroは、同じ意味だと理解しますが、...
間違えやすい文字を挙げておきます。
-大文字と小文字がほとんど同じ形の英字 Cc, Oo, Pp, Ss, Uu,...
-小文字のエル l と大文字のアイ I と数字のイチ 1 と記号の...
-大文字のオー O と数字のゼロ 0
-ドット . とコンマ ,
-ダブル・クオーテーション " とシングル・クオーテーション...
-マイナス - とアンダーバー _
-カッコ < ( { [ ] } ) >
-空白 と日本語変換された空白
-英数字 abc... と日本語変換された英数字 abc...
プログラムを書くときは、文字の違いに気をつけましょう。
**バックスラッシュ \ と円記号 ¥ は同じもの [#l1750256]
コンピューターが最初に開発されたアメリカやヨーロッパでは...
日本にコンピューターが持ち込まれたとき、¥ が使えない...
このため、バックスラッシュ \ を使う場合と円記号 ¥ を...
この説明も、Windowsでは、\ と ¥ が両方とも ¥ に見...
OS X (Mac) やiOSでは、\ はバックスラッシュに、 ¥ は円...
**プログラムの最後に改行を入れる [#baeb776d]
Cプログラムの最後、つまり閉じ波括弧 ''}'' の後に改行を入...
改行がないと、次のような警告が出ます。
警告: ファイル末尾に改行がありません
**文字コードを意識する [#iec75aa6]
コンピューター内部で文字を表見する方法を文字コードといい...
-Shift-JIS
-EUC (EUC-JP)
-Unicode (UTF-8)
日本語を使うときは、プログラムを保存するときの文字コード...
たとえば、次のプログラムをShift-JISで保存し、UTF-8の環境...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("こんにちは\n");
}
}}
#geshi(sh){{
????ɂ???
}}
*Level 3: はじめてのプログラムが書けたら [#m84057d0]
**プログラムを綺麗に書く [#hdecef90]
プログラムを綺麗に書かないと、プログラミングは上達しませ...
たとえば、最初のサンプルとしてよく出てくるHello Worldプロ...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("Hello World!\n");
}
}}
たったこれだけのプログラムにも、以下のような工夫がされて...
-#includeで始まる行の次の行を空行にして見やすくしている
-{ の行が始まる位置とそれに対応する } の始まる位置を揃え...
-printf命令を字下げ(インデント)して、{ } に囲まれている...
次のプログラムは、C言語として間違ってはいませんが、とても...
#geshi(c){{
#include <stdio.h>
int
main
(
void
)
{
printf
(
"Hello World!\n"
)
;
return
0
;
}
}}
プログラムは、読みやすいよう、綺麗に書きましょう。
**いつでも動かせるようにしながら少しずつ完成させていく [#...
プログラミングの勉強をしていくと、だんだんプログラムが長...
長く、複雑なプログラムを一気に書き上げてコンパイルすると...
そこで、プログラムを書くときは、1行目から順番に書くのでは...
たとえば、Hello Worldプログラムの場合、最初から書き始めて...
#geshi(c){{
#include <stdio.h>
int main(void) {
p
}}
でも、次のようなところで中断した場合には、コンパイルがで...
#geshi(c){{
#include <stdio.h>
int main(void){
}
}}
**コンパイルエラーは一つずつ直す [#c9ae083c]
プログラムの構文が間違っていると、コンパイルエラーが出ま...
このとき、たくさんのメッセージが表示されることがあります。
例えば、次のプログラムをコンパイルします。
#geshi(c){{
#include <stdio.h
int main(void) {
printf("Hello World!\n");
}
}}
すると、次のようなエラーメッセージが表示されます。
#geshi(sh){{
hello.c:1:18: error: expected "FILENAME" or <FILENAME>
#include <stdio.h
^
hello.c:4:3: warning: implicitly declaring library functi...
'int (const char *, ...)'
printf("Hello World!\n");
^
hello.c:4:3: note: include the header <stdio.h> or explic...
declaration for 'printf'
1 warning and 1 error generated.
}}
全部で3箇所のメッセージが出ていますが、実は、エラーは最初...
1行目の最後の > が抜けているだけです。
これが原因で、警告と注釈が表示されています。
ですから、たくさんメッセージが出ていても、直す所は1つしか...
誤りを直したら、再びコンパイルします。
まだエラーが残っていたら、また、最初の1つを直します。
エラーが出なくなるまで、これを繰り返します。
**実行時のエラーはprintf命令で誤りを探す [#ca9a2fa0]
プログラムの構文に誤りがないときは、コンパイル時にはエラ...
でも、プログラムを実行しても正しく動かないことがあります。
多くの場合、Segmentation faultsとか、セグメンテーション違...
このとき、プログラムは、全く動いていないのではなくて、途...
これに対処するための簡単な方法が、プログラムの区切りごと...
やり方は簡単で、次のような命令を入れるだけです。
#geshi(c){{
printf("####\n");
}}
繰り返し処理の最中に止まってしまう場合には、繰り返し回数...
#geshi(c){{
for (i = 0; i < n; i++) {
printf(">> %d\n", i);
}
}}
printf命令で指定した文字列は改行が出力されるタイミングで...
**エラーが解決できないときはGoogleで検索する [#n29d87c1]
コンパイル時や実行時にエラー・メッセージが表示されても、...
そんなときは、Googleでエラー・メッセージの一部を''そのま...
同じエラー・メッセージで困っている人とそれを助けている人...
Googleでエラー・メッセージを検索するときは、フレーズ検索...
コピペしただけだと、空白で区切られた文字列のAND検索として...
フレーズ検索にするためには、エラー・メッセージ全体をダブ...
ファイル名やエラーの位置など自分のプログラムだけに関係し...
**上手に書けるようになるまで同じプログラムを何度も作る [#...
料理は、たまたま一回おいしく作れたとしても、さらに同じ料...
プログラムも、たまたま一回正しく動くものが作れたとしても...
なぜか、課題プログラムをひとつ作っただけで、その課題のテ...
一度作ったからもういいと思わずに、上手に書けるようになる...
**わざとエラーを起こしてエラー・メッセージを確認する [#g7...
教科書や参考書には正しいプログラムしか載っていません。
正しいプログラムはコンパイル時も実行時もエラーが出ません...
そこで、正しいプログラムを作るだけ出なく、わざとエラーが...
*Level 4: ある程度プログラミングができるようになったら [#...
**複数のプログラミング言語を学ぶ [#l78afa15]
C言語を勉強していくと''ポインター''が出てきたところで多く...
C言語ではポインターはとても重要ですから、C言語を勉強する...
しかし、ポインターが存在しないプログラミング言語や変数の...
また、C言語にはない''オブジェクト''や''メソッド''という概...
でも、ほとんどのプログラミング言語に''変数''、''条件分岐'...
複数のプログラミング言語を学ぶことによって、プログラミン...
**デバッガーを使ってデバグする [#h703b869]
プログラムの誤りのことを''バグ'' (bug) といい、プログラム...
作成するプログラムの規模が大きくなると、printf命令による...
C言語でコンパイラーにgccを使っている場合、''gdb''というデ...
*Level 5: かなりプログラミングができるようになったら [#d3...
**統合開発環境を使う [#wee58a96]
統合開発環境 (IDE) は、プログラムを開発するためのツールで...
IDEには、エディター、コンパイラー、デバッガー、ランタイム...
Windows用のIDEとして''Visual Studio''があります。
また、様々なOSとプログラミング言語に対応した''Eclipse''と...
作成するプログラムの規模が大きくなってきたら、エディター...
ページ名: