SlideShare una empresa de Scribd logo
1 de 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]

Más contenido relacionado

Similar a C language Sem 01

Macで開発環境を整える170420
Macで開発環境を整える170420Macで開発環境を整える170420
Macで開発環境を整える170420Toshiyuki Shimono
 
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用Ruo Ando
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論shigaoki
 
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめMakiko Konoshima
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会Hirotaka Kawata
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1openrtm
 
20130329 rtm2
20130329 rtm220130329 rtm2
20130329 rtm2openrtm
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみようOsamu Masutani
 
130329 02
130329 02130329 02
130329 02openrtm
 
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能youten (ようてん)
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - FuncGosuke Miyashita
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用Takaya Funabiki
 
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能youten (ようてん)
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3openrtm
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflowionis111
 

Similar a 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
 

Más de Kosei Moriyama

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 5Kosei Moriyama
 
Chrome Web Store に登録してみた
Chrome Web Store に登録してみたChrome Web Store に登録してみた
Chrome Web Store に登録してみたKosei Moriyama
 
Programming Contest Hacks
Programming Contest HacksProgramming Contest Hacks
Programming Contest HacksKosei Moriyama
 
Firefox 学生向けアドオンパック
Firefox 学生向けアドオンパックFirefox 学生向けアドオンパック
Firefox 学生向けアドオンパックKosei Moriyama
 
Introduction To Google App Engine
Introduction To Google App EngineIntroduction To Google App Engine
Introduction To Google App EngineKosei Moriyama
 
Survey of the Ontology - オントロジーについての調査
Survey of the Ontology - オントロジーについての調査Survey of the Ontology - オントロジーについての調査
Survey of the Ontology - オントロジーについての調査Kosei Moriyama
 

Más 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 - オントロジーについての調査
 

Último

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Último (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

C language Sem 01