SlideShare une entreprise Scribd logo
1  sur  84
C/C++ ゼミ (1) プログラムの原理、C言語の原理 2008.4.12
agenda ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
プログラムの原理
プログラムとは ,[object Object],[object Object],[object Object]
プログラム言語 Via http://www.itmedia.co.jp/enterprise/articles/0703/26/news021.html
0と1 ,[object Object],[object Object],[object Object],[object Object]
マシン語 ,[object Object],[object Object],[object Object],[object Object],[object Object]
アセンブリ言語 ,[object Object],[object Object],[object Object],[object Object]
高級言語 ,[object Object],[object Object],[object Object],[object Object],MOV AL, 61 a = 61
プログラム言語 Via http://www.itmedia.co.jp/enterprise/articles/0703/26/news021.html
プログラム言語はさらに進化 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
プログラム言語 Via http://www.itmedia.co.jp/enterprise/articles/0703/26/news021.html
言語の水準 ,[object Object],[object Object],[object Object],[object Object]
なんでこんなにたくさん言語が? ,[object Object],[object Object],[object Object],[object Object],[object Object]
抽象化
抽象化とは ,[object Object],[object Object],[object Object],[object Object],[object Object]
抽象化とは ,[object Object],[object Object],[object Object],[object Object]
たとえば ,[object Object],[object Object],[object Object],MOV AL, 61 a = 61
データと手続き ,[object Object],プログラム データを入力 加工 出力
構造化プログラミング ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
順番に実行する(順次) 処理 1 処理 2 処理 3
条件によって分岐する(分岐) 条件 処理 1 処理 2
何度も繰り返す(反復) 条件 処理 1 処理 2
手続き抽象化 ,[object Object],[object Object]
サブルーチン ,[object Object],[object Object],[object Object],サブルーチン 入力 加工 出力
サブルーチンのいいところ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
構造化プログラミング ,[object Object],[object Object],[object Object]
構造化プログラミング メインルーチン サブルーチン サブルーチン サブルーチン サブルーチン サブルーチン 入力 出力
データ抽象 ,[object Object],[object Object],[object Object],[object Object],[object Object]
気をつけること ,[object Object],[object Object],抽象度高 抽象度低 らくちん はやい 0 と 1 の世界 マシン語とか 低水準 高水準 超高水準 超高水準
気をつけること ,[object Object],[object Object],[object Object],[object Object],[object Object]
コンピュータ・アーキテクチャ
コンピュータの構成 CPU ハード ディスク メモリ 入力インタフェース 出力インタフェース マウス、キーボード、カメラ ディスプレイ、プリンタ、スピーカ
CPU ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
レジスタ ,[object Object],[object Object],[object Object]
Via http://en.wikipedia.org/wiki/Central_processing_unit
メモリとアドレス ,[object Object],[object Object],[object Object],アドレス 0001 0002 0003 … メモリ データ データ データ …
ハードディスク ,[object Object],[object Object],[object Object]
プログラムとメモリ ,[object Object],[object Object],[object Object],CPU ハード ディスク メモリ レジスタ 遅い 超遅い 速い
コンパイラ
コンパイラ ,[object Object],[object Object],[object Object],[object Object],[object Object],コンパイラ コンパイル ソース コード 実行可能 オブジェクト
インタプリタ ,[object Object],インタプリタ 命令 実行 命令 実行
スクリプト ,[object Object],[object Object],[object Object]
コンパイラとインタプリタ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
とりあえずコンパイルしてみる ,[object Object],[object Object],[object Object],$ gcc hello.c $ a.out
アセンブリ ,[object Object]
のぞいてみる $ gcc hello.c –S $ gedit hello.s
リンク ,[object Object],[object Object],[object Object]
ソースコード オブジェクト ライブラリ 実行可能 オブジェクト コンパイル リンク
[object Object],$ gcc hello.c
リンクしてみる ,[object Object],$ gcc hello21.c –c hello21.o $ gcc hello22.c –c hello22.o $ gcc hello21.o hello22.o –o hello2 $ hello2 ,[object Object],[object Object],[object Object],[object Object]
バイナリ ,[object Object],[object Object],[object Object],[object Object]
バイナリファイルの中を見てみる ,[object Object],$ gedit hello2
C 言語の基礎知識
C言語(歴史的な話) ,[object Object],[object Object],[object Object]
CとC++とJava ,[object Object],[object Object],[object Object]
抽象度の水準 ,[object Object],[object Object],[object Object],[object Object]
ANSI C ,[object Object],[object Object],[object Object],[object Object]
本題
Cのプログラムの構成 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
変数
変数 ,[object Object],[object Object],[object Object],[object Object],[object Object]
データ型 ,[object Object],[object Object],[object Object]
宣言 ,[object Object],[object Object],[object Object],[object Object]
コード /*  変数の宣言  */ int a; double b; a = 10; b = 1.5;
メモリのイメージ アドレス 0001 0002 0003 … メモリ 10 ?? 1.5 … a b
関数
関数 ,[object Object]
関数を呼び出す ,[object Object],[object Object],[object Object],printf(“hello world!!”); 関数名  (  引数リスト  );
関数からの出力がある場合 ,[object Object],[object Object],result = pow( 5, 2);
関数を自作 int square ( int n ) { int result; result = n*n; return result; } 返り値の型 関数名  (  引数リスト  ){ 中身 }
関数を宣言する ,[object Object],[object Object],[object Object]
プロトタイプ宣言 int square( int n ); int main(void) { ... val = square( 5 ); ... } int square( int n ) { ... }
void ,[object Object],[object Object],int foo(void); void woo( int n ){ ... }
printf の宣言や本体はどこにある? ,[object Object],[object Object],#include <stdio.h> … Int main(void) { … … int printf(...); … … int printf(...) { … } … stdio.h 自作ファイル ライブラリ
Hello World!
Hello World! ,[object Object],#include <stdio.h> int main(void) { printf(“hello world!”); return 0; }
#include ,[object Object],[object Object],[object Object]
標準ライブラリ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
main ,[object Object],[object Object],[object Object]
printf ,[object Object],[object Object],[object Object],[object Object]
と文字 ,[object Object],[object Object],[object Object],[object Object]
今後の予定
予定! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Contenu connexe

Similaire à C language Sem 01

オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
Ruo Ando
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
Hirotaka Kawata
 
システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論
shigaoki
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
 
20130329 rtm2
20130329 rtm220130329 rtm2
20130329 rtm2
openrtm
 
130329 02
130329 02130329 02
130329 02
openrtm
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
openrtm
 

Similaire à C language Sem 01 (20)

Macで開発環境を整える170420
Macで開発環境を整える170420Macで開発環境を整える170420
Macで開発環境を整える170420
 
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論
 
IT魔導の書 ~ Grimoire du IT
IT魔導の書 ~ Grimoire du ITIT魔導の書 ~ Grimoire du IT
IT魔導の書 ~ Grimoire du IT
 
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
 
ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
 
20130329 rtm2
20130329 rtm220130329 rtm2
20130329 rtm2
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみよう
 
130329 02
130329 02130329 02
130329 02
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用
 
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 

Plus de Kosei Moriyama

Plus de Kosei Moriyama (6)

Object meta-level control on ECMA Script 5
Object meta-level control on ECMA Script 5Object meta-level control on ECMA Script 5
Object meta-level control on ECMA Script 5
 
Chrome Web Store に登録してみた
Chrome Web Store に登録してみたChrome Web Store に登録してみた
Chrome Web Store に登録してみた
 
Programming Contest Hacks
Programming Contest HacksProgramming Contest Hacks
Programming Contest Hacks
 
Firefox 学生向けアドオンパック
Firefox 学生向けアドオンパックFirefox 学生向けアドオンパック
Firefox 学生向けアドオンパック
 
Introduction To Google App Engine
Introduction To Google App EngineIntroduction To Google App Engine
Introduction To Google App Engine
 
Survey of the Ontology - オントロジーについての調査
Survey of the Ontology - オントロジーについての調査Survey of the Ontology - オントロジーについての調査
Survey of the Ontology - オントロジーについての調査
 

C language Sem 01