プログラム

プログラミング言語入門 2013
(C言語 初級)
• 演習期間
– 10/24 - 1/23 (全10回)
• 担当
– 松澤,鈴木,児玉
• 参考資料
– http://www.is.noda.tus.ac.jp/isws/1IS-C/index.html
• 採点
– 課題のレポートにより評価
諸注意事項
• 2年生,3年生は,週5時間の演習で
ほぼプログラミング言語の演習を行います
• 疑問点,質問などがあれば近くのTAまたは教員に
遠慮なく聞いてください
• 補習,補講などはありません
プログラミングができると・・
• 計算機(コンピュータ)の資源を自由に扱える
– 自分の意のままに動作させることが可能
• 人手では難しい(面倒臭い)処理をプログラムするこ
とで簡単に結果を得ることができる
– 複雑な計算を一括で行う
– 面倒な入力を一括で入力させる
– 自分の理論が正しいことを証明するための実験を行う
本演習のコンセプト
専門学校の演習と比べて
• 数学を基礎としたプログラミングの概念や構造を学ぶ
• 小手先(表面上)のテクニックを覚える演習ではない
– 演習終了後即3Dプログラムやゲームの開発ができるわけではない
• 必要に応じた技術を柔軟に吸収できる下地を作る
• プログラミングを通じて計算機の仕組みを詳細に理解する
– メモリの使われ方などは特に強く意識できるようになる
プログラミング言語の種類
• 論理型言語
– プログラムとは、関係の記述である
• Prolog, GHC, KL1
• 関数型言語
– プログラムとは、計算式である
• ML, OCaml, Haskell, LISP
• 手続き型言語
– プログラムとは、命令の並びである
• C(C++), Java, Pascal, Perl, Fortran, PHP, Python
プログラミングとは
計算機(コンピュータ)に処理させる命令書を記述する
手続き型の例
–
–
–
–
–
変数Xを使用します
変数Yを使用します
Xに5を代入してください
YにXを5倍した値を代入してください
Yの値を画面に出力してください
プログラムの実行
計算機(コンピュータ)に処理させる命令書を記述する
上司
命令書
作業員
プログラムの実行
上司
命令書
作業員
しかし、この2人は得意な言語が異なると想定してみよう
プログラムの実行
上司(フランス人)
命令書(フランス語で記述)
さて、困った
作業員(日本人)
プログラムの実行
上司(フランス人)
命令書
(フランス語)
命令書
(日本語)
作業員(日本人)
1つ目の解決策:あらかじめ翻訳をした命令書を用意する
プログラムの実行
上司(フランス人)
命令書(フランス語で記述)
作業員(日本人)
2つ目の解決策:作業時に自力で翻訳して作業を行う
プログラムの実行
プログラマ
プログラム
計算機(コンピュータ)
この上司と作業員の関係は,
プログラマと計算機の関係にも当てはまる
プログラムの実行
プログラマ
(得意言語は自然言語)
プログラム
計算機
(得意言語は機械語)
プログラム言語とは、機械語に翻訳されることを
前提として記述される自然言語(主に英語)よりの言語
プログラムの実行
プログラマ
プログラム
機械語
(ソースコード) バイナリコード
計算機
このように事前に翻訳しておく言語をコンパイラ言語と呼び,
プログラミング言語で記述された文書を機械語に翻訳する
プログラムをコンパイラと呼ぶ (C言語はコンパイラ言語)
プログラムの実行
プログラマ
プログラム
計算機
計算機が実行時に翻訳しながら実行する言語を
インタプリタ言語と呼ぶ
コンパイラ言語とインタプリタ言語の比較
• コンパイラ言語
– 処理(実行速度)が速い
– 実行前に必ずコンパイル作業が入るため,開発効率は良くない
– C(C++), Java
• インタプリタ言語
– 実行時に逐次機械語に変換して処理するため,実行速度は遅い
– 記述して即実行できるため,開発効率は良い
– Perl, PHP
自然言語とプログラミング言語の違い
プログラミング言語は,自然言語に比べて,正確性と完全性を
求められる度合いが非常に高い
– 何通りもの解釈の仕方(曖昧な表現)が存在するプログラム言語仕様
はない
– 文法を間違えれば計算機は処理できない
– 自然言語に比べれば,使用できる単語(命令)や文法は極僅かである
C言語
•
•
•
•
•
•
手続き型言語である
コンパイラ言語である
命令列は基本的には左から右,上から下へ逐次実行される
命令の最後には 「; 」セミコロンを書く
命令列のまとまりを関数として定義する
プログラムの開始点はmain()という関数で与える
C言語のソースファイル
関数A
~~ ;
命令(最後に ; )
~~ ;
関数B
~~ ;
~~ ;
関数main (最初に実行される関数)
~~ ;
~~ ;
計算機(コンピュータ)の簡単な仕組み
CPU
(Central Processing Unit)
命令
(足し算を行う)
データ
(整数4)
データ
(整数15)
CPUの演算には
4
15
19
メモリ
4+15の演算を行う
•
•
•
•
加減乗除 算
ビット演算
比較
コピー
などがある
HDDやキーボード
からの入力等
CPUに計算させるには,メモリ上にデータを
読み書きできる領域が必要である
メモリについて
4
15
19
….. 00000100 00001111 ……..00010011 ……
0x04
0x0F
0x13
8bit ( 1byte) =2^8=256通りなので,16進数で表記することも多い
C言語では,箱の大きさも自由に指定できる ( する必要がある )
1年生で行うC言語
• C言語初級(1年生)
– C言語に極力依存しないプログラミングの
基礎知識・技術の習得
• C言語中級(3年生)
– C言語特有のメモリアクセス・操作・データ型の習得
• C言語上級(研究室配属後?)
– OSやデバイスに依存したプログラム等の習得
アルゴリズムとプログラム
• アルゴリズム
– 解を得るための手順
• プログラム
– コンピュータにアルゴリズムを指示するための
電子文書
アルゴリズムとプログラム
アルゴリズム
1~10までの整数の和を求める問題がある
• アルゴリズム1
– 1+2+3+4+….+10を計算する
• アルゴリズム2
– 11×5 ( (1+10)+(2+9)+(3+8)+(4+7)+(5+6) )
を計算する
アルゴリズムとプログラム
プログラム
int i = 0;
i = 1+10;
i = i*5;
printf(“%d\n”,i);
C言語の予約語
asm auto break case continue const char
default do double else endasm entry enum
extern float for goto if int long register
return short signed sizeof static struct
switch typedef union unsigned void
volatile while
#include #if #elif #else #endif #undef
#ifdef #ifndef #line #pragma