1 C 言語入門 プログラミング言語 Ⅰ( 実習を含む ), 計算機言語 Ⅰ 計算機言語演習 Ⅰ, 情報処理言語 Ⅰ( 実習を含む )
2 本日の内容 授業予定日の確認 授業教材の指示 C 言語用プログラミング環境の整備 C 言語プログラミングの導入部分
3 授業予定日の確認 授業予定日の変更があります 本来の授業予定日 : 毎週金曜日 7,8,9,10 時限 4/10 4/17 4/24 5/1 5/15 5/22 5/29 6/5 6/12 6/19 6/26 7/3 7/10 7/17 7/24 7/31 以上 16 回 最終日は期末試験 ただし以下の授業予定日は出張のため 翌日または翌々日に変更になります 金曜日 : 4/24 5/22 6/19 7/10 休講 土曜日 : 4/25 5/23 6/20 7/11 補講候補日 1 日曜日 : 4/26 5/24 6/21 7/12 補講候補日 2
4 授業変更日の確認 4 月日月火水木金土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 5 月日月火水木金土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6 月日月火水木金土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 7 月日月火水木金土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
5 教材のページ 修学支援システムの講義情報から Moodle 学内外版 へ
コマンドプロンプト キーボードから直接命令を入力して実行する時に使います 本講義では C 言語によるプログラムのソースコードをコンパイル (= 機械語に翻訳 ) する場合等に利用する
コマンドプロンプトを開く キーボードから 田 を押したまま R を押して ファイル名を指定して実行 を開く 田 +R のように表記された場合 慣例として上記のような複数キー同時押しを意味する ファイル名を指定して実行 の 名前 の欄に cmd と入力し ENTER キーを押すか OK ボタンをクリックする スタート ボタンから すべてのプログラム アクセサリ コマンドプロンプト でも開ける
コマンドプロンプトの設定項目 簡易編集モード を ON にしておくと マウスの左右ボタンだけでコピペ出来る
コマンドプロンプトの設定 ウインドウ左上のアイコンをクリックするとメニューが出る プロパティ で現在開いているプロンプトのみ 規定値 で次回以降開くプロンプト全てに対する設定を変更出来ます
コマンドプロンプトと作業ディレクトリ 作業ディレクトリ とはコマンドプロンプトで作業した際に ファイルが入出力されるディレクトリの事 ディレクトリとはフォルダの別の言い方 つまり ディレクトリ = フォルダ 通常 コマンドプロンプトを開いた初期状態では ユーザーのホームまたはプロファイルのディレクトリが作業ディレクトリ
作業ディレクトリとコマンド コマンドプロンプトで explorer. と入力して ENTER キーを押す 現在の作業ディレクトリが explorer で開く explorer がコマンド名 ( プログラムの実行ファイル名 ) で スペースで区切って与えた. はコマンドライン引数と言います この場合. は 現在の作業ディレクトリを表す explorer とは Windows 上で いつもファイルを操作しているこのウインドウの事
本来のディレクトリ名 explorer 上では本来のディレクトリ名が日本語も用いて分かり易く (?) 表示されている 異なる名前に見える これが本来のディレクトリ名 explore 以外ではこちらを使う C: Users kou は C ドライブの Users フォルダの中にある kou フォルダを意味する ここをクリックすると コマンドプロンプト上の作業ディレクトリの表示と一致していることが確認出来る
プログラミング言語 計算機言語 13 情報処理言語とは? コンピュータに命令するための人工言語 AWK, BASIC, C, C++, C#, D, ECMAScript, Erlang, Fortran, F#, Haskell, Java, JavaScript, Lisp, Objective-C, OCaml, Perl, PHP, Python, Ruby, Smalltalk, Tcl, 等々
14 プログラムとは? 値の保存 参照 各種演算 条件分岐等を組み合わせた計算の手順 データ参照処理保存データ 処理条件判定真処理 偽 処理
プログラムが出来ると 何が良いのか? コンピュータに仕事をやってもらえる!!! ルーチンワークからの解放 工作の世界も広がる!!! 最近は Arduino 等の安くて高機能なキットがある http://thinkit.co.jp/story/2013/02/12/3960 楽しい!!! 遊び方は遊ぶ人次第 仕事にもあぶれない? Facebook 元役員 プログラミングを学ぶのなら 生涯仕事に困らないことを私が保証しよう http://goo.gl/i8ncdm 15
16 C 言語 AT&T の Bell 研で UNIX を作ってた Brian Wilson Kernighan と Dennis MacAlistair Ritchie らによって UNIX を作成するための言語として生まれた K&R プログラミング言語 C が C 言語のバイブルと言われる所以
17 世界で最も有名なプログラム 1 2 3 4 5 6 K&R の最初に出て来るプログラム hello.c hello.c #include <stdio.h> main() { printf("hello, world n"); } mintty + bash + GNU C $ gcc hello.c &&./a hello, world
18 世界で最も有名なプログラム 1 2 3 4 5 6 K&R の最初に出て来るプログラム hello.c hello.c #include <stdio.h> main() { printf("hello, world n"); } ヘッダファイル (stdio.h) の取り込み main 関数の定義 文字列の表示 mintty + bash + GNU C $ gcc hello.c &&./a hello, world プログラムのソースコードをコンパイルして実行
19 ヘッダファイル stdio.h 1 2 3 4 5 6 多くの入門書ではおまじないとして紹介 hello.c #include <stdio.h> main() { printf("hello, world n"); } ヘッダファイル (stdio.h) の取り込み C 言語は言語本体だけでは 四則演算 条件分岐 繰り返し等の基本 mintty 的な処理以外ほとんど何も出来ない + bash + GNU C 文字列の入出力や数学の関数等 基本的かつ必要性の高い機能は 標準ライブラリと呼ばれる サブルーチン集として用意されている printf 関数は stdio.h (= STanDard Input Output Header file) で提供されている $ gcc hello.c &&./a hello, world printf 関数の呼び出し
20 C 言語のプログラム コンパイラにより実行形式に変換する Source files.h ファイル.h ファイル.h ファイル Preprocessor C compiler Object files Executable file 実行ファイル.c ファイル.c ファイル.c ファイル.o ファイル.o ファイル.o ファイル linker
21 C コンパイラによるコンパイル Cygwin の mintty で bash から gcc で行った例 $ ls hello.c $ gcc hello.c $ ls a.exe hello.c $./a hello, world ファイル一覧の表示コンパイルファイル一覧の表示作成した実行ファイルを実行
22 C/C++ リファレンス http://www.cppll.jp/cppreference/ Windows Help (.chm) 版を入れておくと便利です
23 C 言語の規則 1 2 3 4 5 6 各処理の末尾はセミコロン ; で終端する hello.c #include <stdio.h> main() { printf("hello, world n"); } これがないとコンパイル時にエラーとなる
24 セミコロン ; を忘れたエラーの例 1 2 3 4 5 6 各処理の末尾はセミコロン ; で終端する hello_err.c #include <stdio.h> main() { printf("hello, world n") } 本当はここに ; が必要 mintty + bash + GNU C $ gcc hello_err.c hello_err.c: 関数 main 内 : hello_err.c:6:1: エラー : expected ; before } token } ^
25 エラーの例 hello.c の関数 main の内にある 6 行目の 1 文字目にあるトークン } の前に ; が ( あることが ) 予想されますよ と言っている mintty + bash + GNU C $ gcc hello_err.c hello_err.c: 関数 main 内 : hello_err.c:6:1: エラー : expected ; before } token } ^
26 C 言語の規則 1 2 3 4 5 6 7 { } で複数の処理をまとめる hello1.c #include <stdio.h> main() { printf("hello"); printf(", world n"); } { } の間に ; で終端された複数の処理を書いてよい
27 C 言語の規則 1 2 3 4 5 6 7 " " で囲まれた部分は文字列 hello1.c #include <stdio.h> main() { printf("hello"); printf(", world n"); } { } の間に ; で終端された複数の処理を書いてよい
28 C 言語の構造 1 2 3 4 5 6 プログラムは関数の形でまとめる 関数定義の書式 戻り値の型関数名 ( 引数の宣言,...) { // 処理 ; //... // return 戻り値 ; } 関数は上記のように定義し ( ) の中に書かれた引数で ( 呼び出し元や呼び出し先の ) 他の関数と値の受け渡しを行う
29 C 言語の規則 1 2 3 4 プログラムは main 関数から実行される main.c main() { // ここに処理を書く } mintty + bash + GNU C $ gcc main.c &&./a これは何もしないで終わるだけのプログラム // から行末までと /* から */ まではプログラムとして解釈はされない コメントと呼ばれる要素で メモや覚書として主に人間が読む際の注釈を書くために使う他 一時的にプログラムの一部を無効にするために使う
30 宿題 次回までに以下の事をやっておくこと 教科書の第 1 章までを読み 指示された操作を試して動作を確認する 不明な点 疑問点についてメモし 次回の授業に持参する または 本講義の Moodle コース上にある第 1 週宿題用フォーラムに書き込んでおく