コンピュータ基礎I 第二回プログラミング 平成19年4月20日 藤川 賢治 メールで来た質問と回答 Q. 教科書は有りませんか? A. 有りません。資料はWEBに載せます。 Q. パソコンを授業で使いたい A. 今のとろ出来ません。何とか出来れば良いですが。 個人的に持ち込むのは構いません。 Q. 課題の提出が遅くなっても良いか。 A. 遅くなっても構いません。ただし、なるべく早く出す方が評価を高くします。 Q. 資料があるページのブリーフケースが開けなかったのですが A. 何故でしょう? インターネットでの検索方法 - 検索エンジン Yahoo (http://www.yahoo.co.jp), Google (http://www.google.co.jp) - ポータル(玄関)サイト Yahoo, Goo, Infoseek, Excite - SNS Mixi - 百科事典 Wikipedia (Wiki + Encyclopedia) - ただし、真実が書いてあるとは限らない!! パソコンの仕組 1. CPU (Central Processing Unit), MPU (Main Processing Unit) 計算処理などを司る。 2. 主記憶 電気的に記憶する装置。電力供給が無くなると忘れる 速い。容量は小さい。 3. 二次記憶 磁気などの方法で記憶する装置。電力供給が無くなっても消えない。 遅い。容量は大きい。 4. 入出力装置 5. 通信装置 コンピュータ (学会関係者など) コンピューター パソコンの場合 1. CPU, MPU 2. メモリ 3. ハードディスク (HDD, Hard(固定された) Disk Drive)、USBメモリ、CD、DVD 4. キーボード/マウス、液晶ディスプレイ 5. LAN (Local Area Network)、無線LAN 携帯 1. CPU, MPU 2. メモリ 3. SDメモリカード、miniSDメモリカード 4. テンキー、液晶ディスプレイ/有機ELディスプレイ 5. アンテナ等(最近は外に出ていない) 2進数 16進数 10進数 2進数 16進数 10進数 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15 ビットとバイト - ビットとは0と1の何桁で数値を表すか - 専門的にはビニットと言うが一般的ではない - 0100 0001 は 8ビット(bit) - コンピュータで一文字を表すことのできる単位を「バイト(byte)」と呼ぶ - 英数文字は 7もしくは8ビットで表現される 例) 0x41(0100 0001) -> 'A' - 2^7 = 128 - 2^8 = 256 - 漢字は16ビットで表現 - 今は 1バイト=8ビット のコンピュータしか存在しない - 漢字は2バイトで表現するという言い方は厳密には間違い - 文字が何文字記憶できるかでコンピュータの能力を表現 例) メモリ256MB ハードディスク80GB k(キロ)=10^3=1000≒2^10=1024 M(メガ)=10^6≒2^20 G(ギガ)=10^9≒2^10 コンピュータにとって切りの良い数字 - 2^7=127 アスキー文字コード(英数字)は127文字以下 - 2^8=256 欧米の文字も含めた文字コードは256文字以下 - 2^10=1024 10^3 として扱われる。k(キロ) - 2^16=65536 昔の16bitコンピュータの処理能力。記憶容量 64kB - 2^24=2^8*2^8*2^8=16777216 現在のコンピュータは 1600万色が処理できる(それ以上も可) RGB(Red, Green, Blue)の光の三原色ごとに 2^8=256段階処理 - 2^32=4294967296 32bitコンピュータは4GBのメモリ空間を処理できる 4294967296 までの整数を扱える (-2147483648 -- 2147483647) - DVD の容量 4.7GB 映画 1時間分くらい (二層の場合は、9.4GB) プログラミング 用語 - プログラム (program) コンピュータへの一連の動作の命令文書 - プログラミング プログラムを書くこと 何らかの言語を使って書く - 機械語(マシン語、machine language) コンピュータが実際に理解できる言葉 0と1と数値の羅列 - プログラミング言語 コンピュータに命令を教えるための、 人間にも理解できる手順書を書くための規則 - コンパイル (compile) 何らかの言語を別の言語に変換(翻訳)すること - コンパイラー (compiler) コンパイルする処理系(アプリケーション) - インタプリター 何らかの言語を逐次機械語に翻訳しながら実行すること (おまけ) - ハードウェア(hardware)(ハード) 金物 パソコン本体 - ソフトウェア(software 造語) (ソフト) 形は無い、コンピュータに対する命令書 CD-ROM に保存されていたり、ネットワークから取ってくる - アプリケーション(Application) 応用ソフトウェア 具体例) Word, Excel, Internet Explorer - OS オペレーティングシステム 基本ソフトウェア 具体例) WindowsXP, MacOS X 様々なコンピュータ言語 - コンパイラを通して機械語にするもの - アセンブリ言語 (assemble language) 機械語と一対一の対応が取れる言語 - C言語、C++言語 システム記述のための言語、機械語に近い - インタプリタを通し実行するもの - Perl, PHP WebサーバのCGIでよく使われる - JavaScript Webブラウザで実行できるインタプリタ言語 - Lisp リスト処理用言語、エディタの言語としても広く使われている - Excel などのマクロ - コンパイラで中間言語に翻訳し、 インタプリタで実行するもの - フラッシュ(Flash), Java コンパイルしたものをWebサーバ上に置き、 Webブラウザ、もしくは携帯電話で実行することが多い プログラミング例 - エクセルのマクロ - C - Lisp - JavaScript エクセルのマクロ(一部抜粋) A B C D E F 1 名前 国語 英語 数学 平均 合否 2 デモ子 @sum(B2:D2)/3 3 デモ美 =IF(E3>=60;"合格";"不合格") 4 デモ代 5 平均 @sub(B2:B4)/3 C 言語 ソースコード(元のプログラム) #include main(){ static int a; // a という変数を使うという宣言 static int b; // b という変数を使うという宣言 static int c; // c という変数を使うという宣言 a = 1; // a という変数に 1 を代入 b = 2; // b という変数に 2 を代入 c = a + b; // c という変数に a と b を足した値を代入 // 結果の表示 printf("a の値は %d、b の値は %d, c の値は %d です\n", a, b, c); } #include #include main() { static int val; for (val = 2; val < 4294967296; val++) { printf("val = %d\n"); sleep(1); } } Lisp (setq seikaku-list '(("デモ子" . "明るい") ("デモ美" . "暗い") ("デモ代" . "理解不能"))) (assoc "デモ美" seikaku-list) (cdr (assoc "デモ夫" seikaku-list)) JavaScript - 例) http://v223.jorudan.co.jp/norikae/cgi-bin/norikeyin.cgi?proc_sw=0 - ブラウザで、ソースを表示させる - で囲まれた部分がプログラム(ソースコード) Hanoi の搭 - PowerPoint 資料 - Emacs Lisp による実演