Submit Search
Upload
JA7YCQプログラミング勉強会 第2回 ~変数を理解しよう!~
•
0 likes
•
736 views
N
Neppo Telewisteria
Follow
プログラミング勉強会 第2回のテーマは変数 メモリのイメージを頭に浮かべよう
Read less
Read more
Technology
Report
Share
Report
Share
1 of 37
Download now
Download to read offline
Recommended
iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-
Daichi Teruya
Hard-Disk
Hard-Disk
Na Da
JA7YCQプログラミング勉強会 第1回 ~プログラミングやってみようか~
JA7YCQプログラミング勉強会 第1回 ~プログラミングやってみようか~
Neppo Telewisteria
ベンチマーク勉強会#02
ベンチマーク勉強会#02
milk hanakara
UEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Yuma Ohgami
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
y-uti
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
You&I
Recommended
iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-
Daichi Teruya
Hard-Disk
Hard-Disk
Na Da
JA7YCQプログラミング勉強会 第1回 ~プログラミングやってみようか~
JA7YCQプログラミング勉強会 第1回 ~プログラミングやってみようか~
Neppo Telewisteria
ベンチマーク勉強会#02
ベンチマーク勉強会#02
milk hanakara
UEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Yuma Ohgami
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
y-uti
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
You&I
Kyoto dev caffe
Kyoto dev caffe
Natsutani Minoru
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
Preferred Networks
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
Toshiaki Hishinuma
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Yasuyuki Sugai
Snapdragon-SCORER
Snapdragon-SCORER
Satoshi Toriumi
Open VZ
Open VZ
Kazuaki Fujikura
78tch
78tch
78tch
Java EE7 䛸㻌JCache
Java EE7 䛸㻌JCache
maruyama097
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
VirtualTech Japan Inc.
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale Japan株式会社
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Hirotaka Kawata
ロボットシステム学2015第2回
ロボットシステム学2015第2回
Ryuichi Ueda
Meltdown を正しく理解する
Meltdown を正しく理解する
Norimasa FUJITA
ACRiウェビナー_ChipTip Technology様ご講演資料
ACRiウェビナー_ChipTip Technology様ご講演資料
直久 住川
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみた
NISHIMOTO Keisuke
StackStorm Workflowの設計
StackStorm Workflowの設計
Shu Sugimoto
kagamicomput201814
kagamicomput201814
swkagami
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化
Hiroshi Watanabe
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
More Related Content
Similar to JA7YCQプログラミング勉強会 第2回 ~変数を理解しよう!~
Kyoto dev caffe
Kyoto dev caffe
Natsutani Minoru
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
Preferred Networks
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
Toshiaki Hishinuma
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Yasuyuki Sugai
Snapdragon-SCORER
Snapdragon-SCORER
Satoshi Toriumi
Open VZ
Open VZ
Kazuaki Fujikura
78tch
78tch
78tch
Java EE7 䛸㻌JCache
Java EE7 䛸㻌JCache
maruyama097
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
VirtualTech Japan Inc.
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale Japan株式会社
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Hirotaka Kawata
ロボットシステム学2015第2回
ロボットシステム学2015第2回
Ryuichi Ueda
Meltdown を正しく理解する
Meltdown を正しく理解する
Norimasa FUJITA
ACRiウェビナー_ChipTip Technology様ご講演資料
ACRiウェビナー_ChipTip Technology様ご講演資料
直久 住川
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみた
NISHIMOTO Keisuke
StackStorm Workflowの設計
StackStorm Workflowの設計
Shu Sugimoto
kagamicomput201814
kagamicomput201814
swkagami
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化
Hiroshi Watanabe
Similar to JA7YCQプログラミング勉強会 第2回 ~変数を理解しよう!~
(20)
Kyoto dev caffe
Kyoto dev caffe
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Snapdragon-SCORER
Snapdragon-SCORER
Open VZ
Open VZ
78tch
78tch
Java EE7 䛸㻌JCache
Java EE7 䛸㻌JCache
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
ロボットシステム学2015第2回
ロボットシステム学2015第2回
Meltdown を正しく理解する
Meltdown を正しく理解する
ACRiウェビナー_ChipTip Technology様ご講演資料
ACRiウェビナー_ChipTip Technology様ご講演資料
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみた
StackStorm Workflowの設計
StackStorm Workflowの設計
kagamicomput201814
kagamicomput201814
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化
Recently uploaded
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Recently uploaded
(9)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
JA7YCQプログラミング勉強会 第2回 ~変数を理解しよう!~
1.
JA7YCQ プログラミング勉強会 #2 プログラミング言語編 変数を理解しよう! @jo7ueb JA7YCQ
SNCT Ham club
2.
変数とは ● データを格納するための箱 出典: http://www.sgnet.co.jp/c/2-2.html 2
3.
変数とは ● データを格納するための箱 出典: http://www.sgnet.co.jp/c/2-2.html 3
4.
メモリから 理解する! 4
5.
メモリとは ● 主記憶装置という ● 中央処理装置(CPU)と繋がっている ● 処理が高速 http://e-tech.life.hyogo-u.ac.jp/ kyouzai/suihanki/comp/kousei.htm http://japanese.engadget.com/2009/01/30/50nm-4gb-ddr3-32gb/ 5
6.
メモリへのアクセス ● メモリの中には住所(アドレス)がある – 現実: 宮城県仙台市青葉区愛子中央4-16-1 – メモリ: 番号でアドレスを指定(0番,
1番, 2番…) 0番目 1番目 2番目 3番目 4番目 5番目 6
7.
実際には ● メモリのアドレスはある一定のビット幅で表現 – – – x86アーキテクチャだと32bit アドレスでアクセスできる一連の空間をアドレス空 間なんて言ったり アドレスは普通16進数で書く 0x00000000番地 0x00000001番地 0x00000002番地 0x00000003番地 0x00000004番地 0x00000005番地 7
8.
メモリ内のデータ配置 ● データは各番地に1バイト格納される ● 番地を指定して読み書きができる 0x0000 0x0001 34 0x0002 56 0x0003 78 0x0004 9A 0x0005 8 12 BC
9.
メモリ内のデータ配置 ● データは各番地に1バイト格納される ● 番地を指定して読み書きができる 0x0000 34 0x0002 56 0x0003 78 9A 0x0005 9 0x0001 0x0004 これでは1バイトの データしか扱えないの? 12 BC
10.
メモリ内のデータ配置 ● データは各番地に1バイト格納される ● 番地を指定して読み書きができる 0x0000 12 0x0001 34 0x0002 56 0x0003 78 複数バイトをまとめて 0x0005 1つのデータを表現する! 9A これでは1バイトの データしか扱えないの? 0x0004 10 BC
11.
バイトオーダのお話 ● 複数バイトを使って1つのデータを表現するとき に… – – – ビッグエンディアン リトルエンディアン ネットワークバイトオーダ 0x12345678 を格納するぜ! 下位アドレス 11
12.
バイトオーダのお話 ● 複数バイトを使って1つのデータを表現するとき に… – – – ビッグエンディアン リトルエンディアン ネットワークバイトオーダ 0x12345678 を格納するぜ! 下位アドレス 12 34 56 78 ビッグエンディアン 12
13.
バイトオーダのお話 ● 複数バイトを使って1つのデータを表現するとき に… – – – ビッグエンディアン リトルエンディアン ネットワークバイトオーダ 0x12345678 を格納するぜ! 12 78 34 56 56 34 78 12 ビッグエンディアン リトルエンディアン 下位アドレス 13
14.
バイトオーダのお話 ● 複数バイトを使って1つのデータを表現するとき に… – – – ビッグエンディアン リトルエンディアン ネットワークバイトオーダ 0x12345678 を格納するぜ! 12 78 12 34 56 34 56 34 56 78 12 78 ビッグエンディアン リトルエンディアン 下位アドレス 14 ネットワークバイトオーダ
15.
演習: バイトオーダを練習しよう ● 4バイト符号あり整数で次の数を表現しよう – 154323 (ビッグエンディアン) – 1202006(リトルエンディアン) – -37311(リトルエンディアン) – 3141592(ネットワークバイトオーダ) 15
16.
演習: バイトオーダを練習しよう 解答編 ● 補足資料 4バイト符号あり整数で次の数を表現しよう – 154323
(ビッグエンディアン) 00 02 5A D3 – 1202006(リトルエンディアン) 56 57 12 00 – -37311(リトルエンディアン) 41 6E FF FF – 3141592(ネットワークバイトオーダ) 00 2F EF D8 16
17.
メモリ上の表現は分かったけど.... ● プログラムからメモリを操作するときに考えな きゃいけないこと – – – – 何番地にデータが入っているのか? 何バイトのデータなのか? 何のデータが入っているのか? エンディアンはどうなっているのか? 17
18.
メモリ上の表現は分かったけど.... ● プログラムからメモリを操作するときに考えな きゃいけないこと – – – – 何番地にデータが入っているのか? 何バイトのデータなのか? 何のデータが入っているのか? エンディアンはどうなっているのか? めんどくさすぎる!!!! 18
19.
メモリ上の表現は分かったけど.... ● プログラムからメモリを操作するときに考えな きゃいけないこと – – – – 何番地にデータが入っているのか? 何バイトのデータなのか? 何のデータが入っているのか? エンディアンはどうなっているのか? めんどくさすぎる!!!! 変数 ←救世主 19
20.
救世主・変数 ● ● 複雑なメモリアクセスを簡単にしてくれる魔法 の薬 名前をつけて覚えやすくする ● ● ● 20 0x0001 34 0x0002 56 0x0003 78 9A 0x0005 (エンディアンはCPU毎に決まります) 12 0x0004 0番地から1バイト整数 1番地から2バイト整数 3番地から4バイト浮動小数点数 etc. 0x0000 BC
21.
救世主・変数 ● ● 複雑なメモリアクセスを簡単にしてくれる魔法 の薬 名前をつけて覚えやすくする ● ● ● (エンディアンはCPU毎に決まります) 1バイト整数: aznyan 2バイト整数: prnyan 4バイト浮動小数点数:
krnyan 21 12 0x0001 34 0x0002 56 0x0003 78 0x0004 0番地から1バイト整数 1番地から2バイト整数 3番地から4バイト浮動小数点数 etc. 0x0000 9A 0x0005 BC
22.
もっと便利に! ● ● 名前をつけることでメ モリをちょっと楽に扱 えるようになった もっと楽にしたい! – – 何バイト? 何のデータ? データ型で表現する! 22 1バイト整数: aznyan 2バイト整数: prnyan 4バイト浮動小数点数:
krnyan
23.
もっと便利に! ● ● 名前をつけることでメ モリをちょっと楽に扱 えるようになった もっと楽にしたい! – – 何バイト? 何のデータ? データ型で表現する! 23 1バイト整数: aznyan 2バイト整数: prnyan 4バイト浮動小数点数:
krnyan
24.
もっと便利に! ● ● 名前をつけることでメ モリをちょっと楽に扱 えるようになった 1バイト整数: aznyan 2バイト整数: prnyan 4バイト浮動小数点数:
krnyan もっと楽にしたい! – – 何バイト? 何のデータ? char: aznyan short: prnyan float: krnyan データ型で表現する! 24
25.
補足資料 C言語におけるデータ型 名前 大きさ int char short long float double 4 1 2 4 4 8 種類 整数 文字 整数 整数 浮動小数点数 浮動小数点数 頭に signed をつけると符号あり(省略可能) unsigned
をつけると符号なし 25
26.
劇的!? ビフォーアフター ● ● ● 0番地から1バイト整数 1番地から2バイト整数 3番地から4バイト浮動小数点数 0x0000 12 0x0001 34 0x0002 56 0x0003 78 0x0004 9A 0x0005 BC 0x0006 DE 26 補足資料
27.
劇的!? ビフォーアフター ● ● ● 0番地から1バイト整数 1番地から2バイト整数 3番地から4バイト浮動小数点数 0x0000 12 0x0001 34 0x0002 56 0x0003 78 0x0004 9A 0x0005 BC 0x0006 バイト列が ずらーっとならぶ DE 27 補足資料
28.
補足資料 劇的!? ビフォーアフター ● ● ● 0番地から1バイト整数 1番地から2バイト整数 3番地から4バイト浮動小数点数 0x0000 12 0x0001 ● バイト列が ずらーっとならぶ 名前: aznyan 56 0x0003 ● char aznyan short
prnyan float krnyan 34 0x0002 ● 78 0x0004 9A 0x0005 BC 0x0006 型: char 中身: 0x12 名前: prnyan 名前: krnyan 型: short 型: float 中身: 0x5634 中身: 0xDEBC9A78 DE 28
29.
補足資料 劇的!? ビフォーアフター ● ● ● 0番地から1バイト整数 1番地から2バイト整数 3番地から4バイト浮動小数点数 0x0000 12 0x0001 ● バイト列が ずらーっとならぶ データが箱に分け られているイメージ 名前: aznyan 56 0x0003 ● char aznyan short
prnyan float krnyan 34 0x0002 ● 78 0x0004 9A 0x0005 BC 0x0006 型: char 中身: 0x12 名前: prnyan 名前: krnyan 型: short 型: float 中身: 0x5634 中身: 0xDEBC9A78 DE 29
30.
補足資料 変数とは ● データを格納するための箱 出典: http://www.sgnet.co.jp/c/2-2.html 30
31.
補足資料 変数とは ● データを格納するための箱 出典: http://www.sgnet.co.jp/c/2-2.html 31
32.
補足資料 変数と抽象化 ● 変数を使うことで,メモリに関するややこしい ことを考えなくても,データが扱えるように なった! 抽象化という 詳細を隠して,注目するべきことを絞ること 32
33.
補足資料 抽象化の反対は? ● 抽象化の対義語: 具象化 ● メモリアクセスを抽象化→ 変数 ● 変数を具象化するには? – アドレスを得る: &演算子 – サイズを得る:
sizeof()演算子 33
34.
補足資料 変数の詳細を知る! ● ● ● 名前: aznyan 0番地から1バイト整数 1番地から2バイト整数 3番地から4バイト浮動小数点数 型: char 中身:
0x12 0x0000 12 0x0001 34 中身: 0xDEBC9A78 9A 0x0005 型: float 78 0x0004 型: short 56 0x0003 名前: krnyan 中身: 0x5634 0x0002 名前: prnyan BC 0x0006 &aznyan → 0x0000 &prnyan → 0x0001 &krnyan → 0x0003 sizeof(aznyan) → 1 sizeof(prnyan) → 2 sizeof(krnyan) → 3 DE 34
35.
プログラムで変数を使うには? ● 補足資料 まずは変数を宣言する – – 宣言するときに,同時に値を入れておくことができ ます(初期化) 初期化していない場合は,値は不定です ● 変数に値を代入する ● 変数の値を使う 35
36.
補足資料 変数を使ってみよう! #include <stdio.h> //
OMAJINAI int main(int argc, char **argv) { int sum = 0; // 初期化して宣言 int val1, val2; // 宣言しただけ val1 = 10; // val1に10を代入 val2 = 30; // val2に20を代入 sum = val1 + val2; // val1とval2の値を使って 計算,sumに代入 printf("%dn", sum); } 36
37.
本資料の利用について 本資料はクリエイティブ・コモンズ 表示 -
継 承 3.0 非移植 ライセンスの下に提供されてい ます.ライセンスの詳細については,下記 URL をご参照ください. 本資料の利用に際して,元データ(ODF形式)の 提供を希望される方は作者までご連絡下さい. http://creativecommons.org/licenses/by-sa/3.0/deed.ja LibreOfficeについて 本資料は LibreOffice Impress を利用して作成 されています.LibreOffice は The Document Foundation が提供する自由でかつオープンソー スのオフィススイートです.作者は LibreOffice を応援しています. 37
Download now