Submit Search
Upload
12_C言語入門 - 読みやすいソースコードを書く
•
Download as PPTX, PDF
•
1 like
•
2,480 views
bc_rikko
Follow
C言語入門 読みやすいソースコードを書く
Read less
Read more
Education
Report
Share
Report
Share
1 of 18
Download now
Recommended
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
Fujio Kojima
11_C言語入門 - 繰り返し処理について
11_C言語入門 - 繰り返し処理について
bc_rikko
10_C言語入門 - 条件分岐について(論理演算子と条件演算子)
10_C言語入門 - 条件分岐について(論理演算子と条件演算子)
bc_rikko
1-1_C言語入門 - C言語について
1-1_C言語入門 - C言語について
bc_rikko
9_C言語入門 - 条件分岐について(switch case)
9_C言語入門 - 条件分岐について(switch case)
bc_rikko
1-2_C言語入門 - プログラマに必要な能力
1-2_C言語入門 - プログラマに必要な能力
bc_rikko
4_C言語入門 - n進数と基数変換について
4_C言語入門 - n進数と基数変換について
bc_rikko
3_C言語入門 - C言語の基本
3_C言語入門 - C言語の基本
bc_rikko
Recommended
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
Fujio Kojima
11_C言語入門 - 繰り返し処理について
11_C言語入門 - 繰り返し処理について
bc_rikko
10_C言語入門 - 条件分岐について(論理演算子と条件演算子)
10_C言語入門 - 条件分岐について(論理演算子と条件演算子)
bc_rikko
1-1_C言語入門 - C言語について
1-1_C言語入門 - C言語について
bc_rikko
9_C言語入門 - 条件分岐について(switch case)
9_C言語入門 - 条件分岐について(switch case)
bc_rikko
1-2_C言語入門 - プログラマに必要な能力
1-2_C言語入門 - プログラマに必要な能力
bc_rikko
4_C言語入門 - n進数と基数変換について
4_C言語入門 - n進数と基数変換について
bc_rikko
3_C言語入門 - C言語の基本
3_C言語入門 - C言語の基本
bc_rikko
8_C言語入門 - 条件分岐について(if-else if-else)
8_C言語入門 - 条件分岐について(if-else if-else)
bc_rikko
7_C言語入門 - 型変換について
7_C言語入門 - 型変換について
bc_rikko
5_C言語入門 - 変数について
5_C言語入門 - 変数について
bc_rikko
6_C言語入門 - 式と演算子について
6_C言語入門 - 式と演算子について
bc_rikko
2_C言語入門 - VisualStudioについて
2_C言語入門 - VisualStudioについて
bc_rikko
やさしく知りたいC言語
やさしく知りたいC言語
uru nru
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
Fumihito Yokoyama
C言語超入門
C言語超入門
Mercury Soft
C言語講習会1
C言語講習会1
odenhadengaku
情報システム系
情報システム系
Hagihara Ryosuke
オペレーティングシステム 第2回-公開用
オペレーティングシステム 第2回-公開用
Ruo Ando
第三回ネットワークチーム講座資料
第三回ネットワークチーム講座資料
densan_teacher
[中1英語] 01_英語の勉強の仕方
[中1英語] 01_英語の勉強の仕方
curio-e
Scis2017 2007-01-27-02
Scis2017 2007-01-27-02
Ruo Ando
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
Insight Technology, Inc.
情報技術の基本と仮想化について
情報技術の基本と仮想化について
rookwin
情報セキュリティと標準化I 第1回-公開用
情報セキュリティと標準化I 第1回-公開用
Ruo Ando
基本情報技術者試験 勉強会
基本情報技術者試験 勉強会
Yusuke Furuta
講演資料 201606 web公開版
講演資料 201606 web公開版
Ruo Ando
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
Ruo Ando
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
#5:プログラミングの基本
#5:プログラミングの基本
長岡技術科学大学 自然言語処理研究室
More Related Content
Viewers also liked
8_C言語入門 - 条件分岐について(if-else if-else)
8_C言語入門 - 条件分岐について(if-else if-else)
bc_rikko
7_C言語入門 - 型変換について
7_C言語入門 - 型変換について
bc_rikko
5_C言語入門 - 変数について
5_C言語入門 - 変数について
bc_rikko
6_C言語入門 - 式と演算子について
6_C言語入門 - 式と演算子について
bc_rikko
2_C言語入門 - VisualStudioについて
2_C言語入門 - VisualStudioについて
bc_rikko
やさしく知りたいC言語
やさしく知りたいC言語
uru nru
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
Fumihito Yokoyama
C言語超入門
C言語超入門
Mercury Soft
C言語講習会1
C言語講習会1
odenhadengaku
情報システム系
情報システム系
Hagihara Ryosuke
オペレーティングシステム 第2回-公開用
オペレーティングシステム 第2回-公開用
Ruo Ando
第三回ネットワークチーム講座資料
第三回ネットワークチーム講座資料
densan_teacher
[中1英語] 01_英語の勉強の仕方
[中1英語] 01_英語の勉強の仕方
curio-e
Scis2017 2007-01-27-02
Scis2017 2007-01-27-02
Ruo Ando
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
Insight Technology, Inc.
情報技術の基本と仮想化について
情報技術の基本と仮想化について
rookwin
情報セキュリティと標準化I 第1回-公開用
情報セキュリティと標準化I 第1回-公開用
Ruo Ando
基本情報技術者試験 勉強会
基本情報技術者試験 勉強会
Yusuke Furuta
講演資料 201606 web公開版
講演資料 201606 web公開版
Ruo Ando
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
Ruo Ando
Viewers also liked
(20)
8_C言語入門 - 条件分岐について(if-else if-else)
8_C言語入門 - 条件分岐について(if-else if-else)
7_C言語入門 - 型変換について
7_C言語入門 - 型変換について
5_C言語入門 - 変数について
5_C言語入門 - 変数について
6_C言語入門 - 式と演算子について
6_C言語入門 - 式と演算子について
2_C言語入門 - VisualStudioについて
2_C言語入門 - VisualStudioについて
やさしく知りたいC言語
やさしく知りたいC言語
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
C言語超入門
C言語超入門
C言語講習会1
C言語講習会1
情報システム系
情報システム系
オペレーティングシステム 第2回-公開用
オペレーティングシステム 第2回-公開用
第三回ネットワークチーム講座資料
第三回ネットワークチーム講座資料
[中1英語] 01_英語の勉強の仕方
[中1英語] 01_英語の勉強の仕方
Scis2017 2007-01-27-02
Scis2017 2007-01-27-02
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
情報技術の基本と仮想化について
情報技術の基本と仮想化について
情報セキュリティと標準化I 第1回-公開用
情報セキュリティと標準化I 第1回-公開用
基本情報技術者試験 勉強会
基本情報技術者試験 勉強会
講演資料 201606 web公開版
講演資料 201606 web公開版
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
Similar to 12_C言語入門 - 読みやすいソースコードを書く
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
#5:プログラミングの基本
#5:プログラミングの基本
長岡技術科学大学 自然言語処理研究室
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
MITSUNARI Shigeo
ji-4. 整数,浮動小数点数
ji-4. 整数,浮動小数点数
kunihikokaneko1
講座C入門
講座C入門
Tokai University
リーダブルコード 1.0'
リーダブルコード 1.0'
Yamamura Takashi
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
mitamex4u
Similar to 12_C言語入門 - 読みやすいソースコードを書く
(8)
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
#5:プログラミングの基本
#5:プログラミングの基本
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
ji-4. 整数,浮動小数点数
ji-4. 整数,浮動小数点数
講座C入門
講座C入門
リーダブルコード 1.0'
リーダブルコード 1.0'
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
Recently uploaded
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
Ken Fukui
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
ssusere0a682
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
Ken Fukui
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
Ken Fukui
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
yukisuga3
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
Ken Fukui
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
Ken Fukui
Recently uploaded
(8)
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
12_C言語入門 - 読みやすいソースコードを書く
1.
C言語入門 ~ 読みやすいコードを書く ~
2.
本日の目標 • 読みやすい(可読性の高い)コードを書け るようになる • 1ヶ月後に見返しても、すぐ理解できるよ うなコードを書けるようになる (「1ヶ月前に書いたコードは他人が書いたコード」といわれる) 1
3.
読みやすいコードは 永遠のテーマ
4.
なぜ可読性の高いコードを 書く必要があるのか?
5.
コードが汚いと… • 理解するのに時間がかかる • バグが紛れ込みやすい •
修正・改修が困難になる • 「一緒に仕事したくない」と思われる 4
6.
汚いコードとは? • 記述が統一されていない • 命名(変数名、関数名など)が不適切 •
コメントで補足しないと意味が伝わらない • ひとつの関数の処理が長い • 冗長的な処理が多い などなど・・・ 5
7.
可読性の高いコードとは?
8.
可読性の高いコードとは? • プログラマのワーキングメモリを浪費させない • インデント・スペース・改行が適切に使われてお り、構造的にわかりやすい •
記述が統一されており、処理を予測できる • 変数名・関数名などに意味を持たせている • 理解を阻むノイズ(冗長)がない(短い) 7
9.
インデントをつかう 8 #include <stdio.h> int
main(void){ int a; printf("西暦を入力してください。¥n"); printf("西暦 :"); scanf(“%d”,&a); // 入力値を判定して「うるう年」、「平年」を表示する if(0==a%400){ puts ("うるう年です。"); }else if(a%100==0){ printf("平年です。¥n"); }else if(0==a%4){ puts(“うるう年です。"); }else{ printf("平年です。¥n"); } return 0; } #include <stdio.h> int main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”,&a); // 入力値を判定して「うるう年」、「平年」を表示する if(0==a%400){ puts(“うるう年です。"); }else if(a%100==0){ printf("平年です。¥n"); }else if(0==a%4){ puts(“うるう年です。”); }else{ printf("平年です。¥n"); } return 0; } インデントがないコード インデントをつかったコード 中括弧 {} がでてきたら インデントをつける
10.
スペースをつかう 9 #include <stdio.h> int
main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”,&a); // 入力値を判定して「うるう年」、「平年」を表示する if(0==a%400){ puts("うるう年です。"); }else if(a%100==0){ printf("平年です。¥n"); }else if(0==a%4){ puts(“うるう年です。”); }else{ printf("平年です。¥n"); } return 0; } #include <stdio.h> int main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &a); // 入力値を判定して「うるう年」、「平年」を表示する if (0 == a % 400) { puts("うるう年です。"); } else if (a % 100 == 0) { printf("平年です。¥n"); } else if (0 == a % 4) { puts(“うるう年です。”); } else { printf("平年です。¥n"); } return 0; } スペースがないコード スペースをつかったコード キーワードや式などの間に スペースをいれる ※関数名と()の間にはスペース を入れない
11.
改行をつかう 10 #include <stdio.h> int
main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &a); // 入力値を判定して「うるう年」、「平年」を表示する if (0 == a % 400) { puts("うるう年です。"); } else if (a % 100 == 0) { printf("平年です。¥n"); } else if (0 == a % 4) { puts(“うるう年です。”); } else { printf("平年です。¥n"); } return 0; } #include <stdio.h> int main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &a); // 入力値を判定して「うるう年」、「平年」を表示する if (0 == a % 400) { puts(“うるう年です。”); } else if (a % 100 == 0) { printf("平年です。¥n"); } else if (0 == a % 4) { puts(“うるう年です。”); } else { printf("平年です。¥n"); } return 0; } 改行がないコード 改行をつかったコード 処理のグループごとに改行で区切る ※ このコードを例にとると 1. 変数の宣言 2. 数値の入力 3. 判定処理
12.
記述を統一する 11 #include <stdio.h> int
main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &a); // 入力値を判定して「うるう年」、「平年」を表示する if (0 == a % 400) { puts(“うるう年です。”); } else if (a % 100 == 0) { printf("平年です。¥n"); } else if (0 == a % 4) { puts(“うるう年です。”); } else { printf("平年です。¥n"); } return 0; } #include <stdio.h> int main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &a); // 入力値を判定して「うるう年」、「平年」を表示する if (a % 400 == 0) { printf("うるう年です。¥n"); } else if (a % 100 == 0) { printf("平年です。¥n"); } else if (a % 4 == 0) { printf(“うるう年です。¥n”); } else { printf("平年です。¥n"); } return 0; } 統一されていないコード 統一されているコード if文の条件は、 式を伴なう比較は、左辺に式を書く 不等号なら「左辺 < 右辺」 などなど
13.
適切な変数名をつける 12 #include <stdio.h> int
main(void){ int a; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &a); // 入力値を判定して「うるう年」、「平年」を表示する if (a % 400 == 0) { printf("うるう年です。¥n"); } else if (a % 100 == 0) { printf("平年です。¥n"); } else if (a % 4 == 0) { printf(“うるう年です。¥n”); } else { printf("平年です。¥n"); } return 0; } #include <stdio.h> int main(void){ int year; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &year); // 入力値を判定して「うるう年」、「平年」を表示する if (year % 400 == 0) { printf("うるう年です。¥n"); } else if (year % 100 == 0) { printf("平年です。¥n"); } else if (year % 4 == 0) { printf(“うるう年です。¥n”); } else { printf("平年です。¥n"); } return 0; } 意味のない変数名のコード 意味のある変数名のコード yearなら変数に「年(西暦)」が 入っていることがわかる
14.
コメントを使わず伝える 13 #include <stdio.h> int
main(void){ int year; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &year); // 入力値を判定して「うるう年」、「平年」を表示する if (year % 400 == 0) { printf("うるう年です。¥n"); } else if (year % 100 == 0) { printf("平年です。¥n"); } else if (year % 4 == 0) { printf(“うるう年です。¥n”); } else { printf("平年です。¥n"); } return 0; } #include <stdio.h> int isLeapYear(int year) { if (year % 400 == 0) { return 1; } else if (year % 100 == 0) { return 0; } else if (year % 4 == 0) { return 1; } else { return 0; } } int main(void){ int year; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &year); if (isLeapYear(year)) { printf("うるう年です。¥n"); } else { printf("平年です。¥n"); } return 0; } コメントがあるコード コメントを使わず伝えるコード main処理に注目すると、 1. if(isLeapYear)だけでうるう年の 判定だとわかる 2. うるう年の判定条件を考えなくてよい
15.
冗長的な処理を削除する 14 #include <stdio.h> int
isLeapYear(int year) { if (year % 400 == 0) { return 1; } else if (year % 100 == 0) { return 0; } else if (year % 4 == 0) { return 1; } else { return 0; } } int main(void){ int year; printf(“西暦を入力してください。¥n”); printf("西暦 :"); scanf(“%d”, &year); if (isLeapYear(year)) { printf("うるう年です。¥n"); } else { printf("平年です。¥n"); } return 0; } #include <stdio.h> int isLeapYear(int year) { if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { return 1; } else { return 0; } } int main(void){ int year; printf("西暦を入力してください。¥n"); printf("西暦 :"); scanf("%d", &year); if (isLeapYear(year)) { printf("うるう年です。¥n"); } else { printf("平年です。¥n"); } return 0; } 冗長的なコード 冗長を排除したコード isLeapYear のreturnが シンプルになる ※ 冗長させたほうが分かりやすい 場合は、そのままにしておく
16.
修正前後のコードの比較 15 #include <stdio.h> int
main(void){ int a; printf("西暦を入力してください。¥n"); printf("西暦 :"); scanf(“%d”,&a); // 入力値を判定して「うるう年」、「平年」を表示する if(0==a%400){ puts ("うるう年です。"); }else if(a%100==0){ printf("平年です。¥n"); }else if(0==a%4){ puts(“うるう年です。"); }else{ printf("平年です。¥n"); } return 0; } #include <stdio.h> int isLeapYear(int year) { if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { return 1; } else { return 0; } } int main(void){ int year; printf("西暦を入力してください。¥n"); printf("西暦 :"); scanf("%d", &year); if (isLeapYear(year)) { printf("うるう年です。¥n"); } else { printf("平年です。¥n"); } return 0; } 修正前のコード 修正後のコード
17.
これが正解とは限らない
18.
「読みやすさ」を意識して プログラミングしてください
Download now