SlideShare a Scribd company logo
1 of 123
Download to read offline
IEEE SBワークショップ資料
A科2年 吉村柚輝
2020/8/19
本資料の内容または一部内容を許可なく
転用・共有・流布,それに準じることを禁止
利用規約 2
Copyright© 2020 yuzuki.yosimura All Rights Reserved.
A科一年生向けの資料
はじめに 3
内容が多いので,
ダウンロードして適時読むこと推奨
講義のレポート考察から独学で学ぶコツまで,
広い範囲をカバー
IEEE SBとは 4
IEEE(世界最大の学会)の学生団体
農工大は大学院生8人,学部生3人在籍
不定期でミーティングや勉強会を開催
画像:Wikipedia『https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers』
この資料はIEEE SBの新入生ワークショップで
使用したものの改良版
プログラミング学習はコーディング以外も大事
目的 5
大学の講義では教えない
自分で知る機会が少ない
資料があると学習の手助けになる
読み方 6
経験者向けの高度な内容もあります
初学者は気にしなくていいスライドは
番号が黄色になっています
6
目次 7
実行環境
レポート
デバッグ
独学
目次 8
実行環境
レポート
デバッグ
独学
概要 9
実行環境
C言語とは
コンパイラ
エディタ
コマンド
デバッガ
静的解析
C言語(シーげんご、英: C programming language)は、1972年にAT&Tベル研究所
のデニス・リッチーが主体となって開発した汎用プログラミング言語である----
wikipediaより引用
C言語とは 10
・歴史が長い,他言語への派生が多い
・実行速度が速い
・他言語と比べ難しい
Q.A 11
なんで最初に難しいC言語???
Pythonやりたいです
A. 歴史的な背景があります
(日本で最初に和訳されたのがC言語だから(諸説あり))
A. Cが理解できれば他言語も楽に学べます
(Haskell,prologとかは別)
コンパイラ 12
ソースコード gcc 実行形式ファイル
コンパイラ
コンパイラも色々(clang, MS Visual C++など)
aiueo.c
a.exe
a.out
ソースコードを編集するための道具
大きく分けて2通り
エディタ 13
コード編集機能が
メインのエディタ
色々な機能があるIDE
オススメエディタ 14
ATOM Visal Studio Code Sublime Text
プラグイン(拡張機能)
がたくさんある
ちょっと重い
コンソール(ターミナル)
がついてる
動作が速い
エディタの最低限機能に
絞られている
拡張があまりない
画像:https://atom.io/ https://code.visualstudio.com/ https://www.sublimetext.com/
エディタの拡張機能
『○○○(エディタ名) プラグイン オススメ 』
で検索するとでてくる
プラグイン 15
作業が楽になるので導入を強く推奨
おすすめプラグイン集 16
VSCode
ATOM
Japanese Language
Pack fot Visual
Studio Code
(日本語化)
Zenkaku
(全角スペース
可視化)
Bracket Pair
Colorizer2
(括弧の対応関係に
色付け)
C/C++ Snippets
(コード自動補完)
C/C++
(コード整形
,デバッグ)
https://vscodetheme
s.com/
(配色テーマ一覧)
platformio-ide-
terminal
(ターミナル追加)
japanese-menu
(日本語化)
higilight-selected
(単語ハイライト)
シンタックスハイライト→コードに色付け
好きなものを見つけよう
プラグイン 17
参考資料 18
https://qiita.com/sensuikan1973/items/74cf5383c02dbcd82234
https://appli-world.jp/posts/9905
https://blog-and-destroy.com/21376
VSCodeプラグイン集
VSCodeプラグイン集②
VSCodeのプラグイン管理について
コードのデバッグ(バグ取り)に役立つツール
プログラムの途中停止・変数の参照
デバッガ 19
付録でVSCodeにCデバッガの導入方法を記載
lint とは、主にC言語のソースコードに対し、コンパイラよりも詳細
かつ厳密なチェックを行うプログラムである。静的解析ツールとも
呼ばれる。---wikipediaより
静的解析(lint) 20
lintを行うプログラム→linter
プログラムを書きながらバグをつぶせる
静的解析(lint) 21
間違ってる部分を教えてくれる
エラーの場所と内容が表示
Atomのプラグイン『linter』
『linter-clang』『linter-ui-default』
を使用(2020/08/14時点)
IDE
プラグインが導入できない
管理めんどくさい
IDE(統合開発環境)
ECLIPSE Visual Studio
標準でデバッガ付属
色々な機能がインストール済み
画像:https://visualstudio.microsoft.com/ja/downloads/ https://www.eclipse.org/downloads/
20
よく使うコマンドを紹介
コマンド 23
cd ls/dir pwd
コマンド 24
その前に
コマンド 25
ディレクトリ,CUI・CLI
について
ディレクトリ 26
ディレクトリ (英: directory) は、コンピュータのファイルシステムにおいて、ファイルをグループ化するた
めの特殊なファイルで、整理・管理などの目的で活用される。---wikipediaより
簡単に言うと,ファイルを入れるファイル
Win/Macだとフォルダ
ディレクトリ 27
図解
ディレクトリA
ディレクトリB ディレクトリC
ディレクトリD ディレクトリE
ファイルA
木構造ともいう
ディレクトリ 28
treeコマンド
ディレクトリ 29
一番上の階層 ルートディレクトリ
と呼ぶ
親ディレクトリ
階層がひとつ
上
下 子ディレクトリ
CUI・CLI 30
(Character User / Command Line) Interface
キーボード文字入力でコンピュータを操作するツール
Windows
cmd
(コマンドプロンプト)
Mac
Terminal
(ターミナル)
Linux Bash
powershell
主なCUI
GUI 31
マウスカーソルで
クリック
GUI
(Graphical User Interface)
CUI・CLI,GUIにそれぞれ
メリット / デメリット
GUIとCUIの違い 32
画像:さくらのナレッジ,ネコでもわかる!さくらのVPS講座第二回「サーバーを触ってみよう」
https://knowledge.sakura.ad.jp/images/2017/05/02_04_CUI_GUI2.png
使い分け 33
ソースコードの編集
YouTube
Web開発
ファイル管理
プログラムの実行
GUI CUI
疑問 34
なぜGUIだけじゃダメなの?
理由 35
CUIの利点
軽くて速い
処理の自動化,繰り返しが得意
ファイルの紐づけ
操作記録の共有
結論 36
CUIを使って開発効率を上げよう!
開発でCUIを使うには 37
CUI・CLIのファイル操作はディレクトリ単位
cd ls/dir pwd
ディレクトリ関連コマンドが必要
まとめ 38
開発にはCUIが有用
CUI・CLIはディレクトリ単位で操作
ディレクトリ関連のコマンドを使う
ls/dir 39
ディレクトリ内部を表示
Windows
Linux/Mac
dir
ls
(エルエス)
cd 40
ディレクトリの移動
ディレクトリB
ディレクトリA
PS C:¥~~¥ディレクトリA> cd ディレクトリB
ディレクトリB
ディレクトリA
PS C:¥~~¥ディレクトリA¥ディレクトリB>
親
子
親
子
cd 41
cd .. →親ディレクトリへ移動
指定なし ホームディレクトリへ移動
PS C:¥~~¥ディレクトリA¥ディレクトリB> cd ..
PS C:¥~~¥ディレクトリA>
PS C:¥~~¥ディレクトリA¥ディレクトリB> cd
PS C:¥Users¥吉村柚輝>
pwd 42
今いるディレクトリのパス(場所)表示
~/サンプルディレクトリ/ディレクトリA/ディレクトリC
$ pwd
/c/Users/吉村柚輝/サンプルディレクトリ/ディレクトリA/ディレクトリC
注意 43
Windowsだと,cmdとpowershellで使えるコマンドや
コマンドの仕様が違うので注意
理由がなければpowershell推奨
絶対パス指定 44
ルートディレクトリからのパスを指定
PS C:¥> C:¥Users¥吉村柚輝¥サンプルディレクトリ¥ディレクトリA¥Hello.exe
Hello!
PS C:¥>
別のディレクトリ内のファイルを扱える
リダイレクト 45
別ファイルへ結果を出力
#include "stdio.h"
int main()
{
for(int i = 0; i < 10; i++)
{
printf("%d ", i + 1);
}
}
ソースコード
$ ./from1to10.exe > sample.txt
$
1 2 3 4 5 6 7 8 9 10
sample.txt
コマンド > 出力先ファイル名
CUI
リダイレクト 46
別ファイルから入力を取得
#include "stdio.h"
int main()
{
int a;
scanf("%d", &a);
printf("%d", a);
}
ソースコード
$ ./taxicub_number.exe < sample.txt
1729
$
1729
sample.txt
コマンド < 入力元ファイル名
CUI
参考資料 47
https://eng-entrance.com/linux-redirect#i-9
https://proengineer.internous.co.jp/content/columnfeature/5007#section100
https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB
https://eng-entrance.com/linux-command-cd#i-4
cdコマンドについて
リダイレクトについて
基本コマンド一覧
シェルについて
目次 48
実行環境
レポート
デバッグ
独学
概要 49
デバッグ
テンプレバグ
エラーのググり方
バグを減らす
exit()を使う
printfデバッグ
gccコマンド集
ありがちなバグとその時の対処法
英語エラー文を読むのが基本
テンプレバグ 50
エラーの読み方 51
CUIに出力されたエラーの例
a.c: In function ‘main’:
a.c:6:20: error expected ‘;’ before ‘}’ token
printf(“%d¥n”, a)
エラーの読み方 52
1行目:『ファイル”a.c”の関数”main”に問題がある』
2行目:『ファイル”a.c”の6行目の20文字目に問題がある』
『中括弧 ”}” の前にセミコロン ”;” がない』
3行目:『場所はここ』
エラーの読み方 53
ファイル名:行番号:列番号
ソースコードのエラー場所を確認する
エラーの読み方 54
エラー箇所
コンパイラが間違ってる箇所を示してくれる場合も
問題がある場所とエラー箇所が一致するとは限らない
expected ○○
テンプレバグ① 55
○○が足りていない
エラー箇所に○○を追加
例ではmain関数に中括弧 “}”が一個足りない
テンプレバグ② 56
stray ‘¥○○’
ソースコードに全角文字
多くは全角スペース,取り除く
エディタプラグインを使うと全角スペースに悩まない
時々ある大変なバグ
おまけ 57
Shift-JISで特定の
漢字を使用
“表”,”噂”,”ソ”,”ー”,”十”などの漢字は注意
”” で囲ってもエラーなので他の文字を使う
おまけ 58
文字コードShift-JISは漢字を2バイトで表現
2バイト目が0x5c(“¥”)や0x7c(“|”)だと文字化け・検索不可
他にも”弓”,”芸”,”農”,”予”などが使えない
ソ
83 5c
表
95 5c
芸
8c 7c
参考 https://sites.google.com/site/fudist/Home/grep/sjis-damemoji-jp
テンプレバグ③ 59
declaration ○○
undeclared ○○
undefined ○○
定義していない変数・関数を使用
前もって宣言する
自作関数はmain関数より上に書いてもエラーの恐れ
必ずプロトタイプ宣言をすると安心
テンプレバグ③ 60
int a(void){
~~~~~~~
}
int b(void){
~~~~~~~
}
int main(){
~~~~~~~
}
int a(void);
int b(void);
int main(){
~~~~~~~
}
int a(void){
~~~~~~~
}
int b(void){
~~~~~~~
}
関数も変数も,宣言は上の方にまとめて書くのが無難
変数は初期化する癖をつける
バグを減らす 61
int a, b, c;
int d[100];
int a = 0, b = 0, c = 0;
int d[100] = {};
配列は宣言時のみ{}で初期化
バグを減らす 62
変数名に意味を持たせる
int compared_number = 1
if(a < compared_number)
{
return 1;
}
else
{
return 0;
}
紛らわしい変数名にしない
int i, j;
for(i = 0; ……)
{
for(j = 0; …….)
{
見間違えやすいiとjを
使う必要はない
エラー文を抜粋してコピペで調べるのもあり
→C言語は日本語資料が沢山ある
『わからなかったらとりあえずググる』
は重要な姿勢
エラーのググり方 63
質問サイト 64
stackoverflow
エンジニア御用達質問掲示板
英語のスレッドが多い
Qiita
日本版stackoverflow
質問回答率が高い
teratail
国内最大のプログラマーコミュニティ
先輩プログラマのノウハウがある
画像:https://ja.stackoverflow.com/ https://qiita.com/ https://teratail.com/
聞くときは実行環境と
症状とソースコードを載せる
質問マナー 65
例
以下のソースコードでこのようなコンパイルエラーが出ていますが原因がわかりません
環境 エラーメッセージ ソースコード
Windows10 ~~~~~~~~ ~~~~~~
gcc(8.2.0)
C言語なら,OSとコンパイラの情報は最低必要
この資料の中で一番重要
printf デバッグ 66
エラーメッセージを読んでもよくわからない
コンパイルはできるのに動かない,挙動がおかしい
printf デバッグ
ソースコードの間にprintfを埋め込む
printf デバッグ① 67
int main()
{
~~~~~~~~
printf(“ここまで動いた①¥n”);
~~~~~~~~~
printf(“ここまで動いた②¥n”);
~~~~~~~~~
}
出力結果:
ここまで動いた①
C:Users/yosimura/program:
二つのprintf()の間に問題がある
C言語は原則上から下
printf デバッグ① 68
int main()
{
~~~~~~~~
printf(“ここまで動いた①¥n”);
~~~~~~~~~
printf(“ここまで動いた②¥n”);
~~~~~~~~~
}
動く
動かない
バグ
printf デバッグ② 69
怪しい値を可視化する
int main()
{
int i, c, a[3] = {1, 2, 3}, tmp;
for(i = 0; i < 3; i++)
{
for(c = i; c < 3; c++)
{
if(a[c] < a[c + 1])
{
tmp = a[c], a[c] = a[c + 1], a[c + 1] = tmp;
}
}
バグありバブルソート
printf デバッグ② 70
a[0] a[1] a[2]
1 2 3
ソート前
ソート後
理想
a[0] a[1] a[2]
3 2 1
a[0] a[1] a[2]
2 3 1
printf デバッグ② 71
if(a[c] < a[c + 1])
{
printf(“%d %d¥n”, a[c], a[c + 1]);
tmp = a[c], a[c] = a[c + 1], a[c + 1] = tmp;
}
ソートする値をprintf()で見る
printf デバッグ② 72
~/sample>bubble.exe
1 2
1 3
~/sample>
出力結果
存在しないa[3]を参照していることがわかる
for(c = i; c < 3; c++) // 1回目のループなのでi = 0 //
{
if(a[c] < a[c + 1])
{
printf(“%d %d¥n”, a[c], a[c + 1]);
tmp = a[c], a[c] = a[c + 1], a[c + 1] = tmp;
}
ソースコード
c = 2 (三回目のループ)で停止
printf デバッグ② 73
int main()
{
int i, c, a[3] = {1, 2, 3}, tmp;
for(i = 0; i < 3; i++)
{
for(c = i; c < 3; c++)
{
if(a[c] < a[c + 1])
{
tmp = a[c], a[c] = a[c + 1], a[c + 1] = tmp;
}
}
バグあり
int main()
{
int i, c, a[3] = {1, 2, 3}, tmp;
for(i = 0; i < 3; i++)
{
for(c = i; c < 2; c++)
{
if(a[c] < a[c + 1])
{
tmp = a[c], a[c] = a[c + 1], a[c + 1] = tmp;
}
}
デバッグ後
printf デバッグ 74
デバッガを使わないのであれば
printfデバッグは最強のデバッグ手段
個人的に
exit()を使う 75
無限ループの恐れがある時に使う
int main()
{
int i,count = 0;
while(~~~~)
{
~~~~~~~
if(count == 100) exit(1);
count++;
}
}
exit(1) → プログラムの異常終了
returnよりも強い(即時終了)
ヘッダファイル”stdlib.h”が必要
#include<stdlib.h>を記述
-o オプション:実行形式ファイル名を指定
gccコマンド 76
gcc -o sample.exe sample.c
複数のプログラムを編集している時に,
コンパイルする手間を省ける
-W○○オプション:Warningを出力
gcc –Wall a.c
Warningを全て出力
バグの発見が早まる
目次 77
実行環境
レポート
デバッグ
独学
概要 78
レポート
インデント
draw.io
コメント
Word
課題の考察
インデントとスペースを積極的に入れる
インデント 79
int main()
{
for(i = 0;i < n;i++)
{
If(a==b)
{
printf(“%d %d”,a,b);
}
}
}
int main()
{
for(i = 0; i < n; i++)
{
if(a == b)
{
printf(“%d %d”, a, b);
}
}
}
インデント 80
二項演算子,セミコロン,カンマのあとにスペース
if(a!=b)
a=b+c
if(a != b)
a = b + c
for(i=0;i<N;i++) for(i = 0; i < N; i++)
printf(%d %d,a,b) printf(%d %d, a, b)
インデント 81
自動整形ツールを使うと楽
Linux/Macユーザー indentコマンド
例
~/home: indent a.c
ファイル→ユーザー設定→設定
→Format On Saveをオン
VSCode
プラグイン『clang-format』
を使う
Atom
※フォーマッターの
インストールが必要
ビフォーアフター
インデント 82
フォーマッター:clang-format
参考資料
インデント 83
indentコマンド(Linux/Mac)
https://webkaru.net/linux/indent-command/
VSCode自動整形(C/C++プラグインが必要)
https://qiita.com/mitashun/items/e2f118a9ca7b96b97840
clang-format(Atom)(LLVMのインストールが必要)
https://atom.io/packages/clang-format
https://bluebirdofoz.hatenablog.com/entry/2019/10/27/213748
積極的にコメントを入れる
コメント 84
・何をする自作関数なのか明示
・if文の条件分岐を言語化する
・printfで何が出力されるのか書く
Etc…..
フローチャートを
パワーポイントで作るデメリット
draw.io 85
・矢印が微妙にずれる
・縦に長いフローチャートを作れない
・突然アプリケーションが落ちる
悲しいやつ
こまめに上書き保存しよう
画像:MSコミュニティ https://answers.microsoft.com/ja-jp/msoffice/forum/all/powerpoint-2013-%E3%81%8C/31201896-fd7d-4030-a570-4d4fa4e707f8
draw.io 86
ブラウザ上でフローチャートを描けるアプリ
できたらFile→Export asから
.pngや.jpegファイルにエクスポート
Vscodeで最近draw.ioが使えるようになったらしい
https://qiita.com/riku-shiru/items/5ab7c5aecdfea323ec4e
https://app.diagrams.net/
ソースコードは囲ってフォントを変える
word 87
罫線→外枠を選択
フォント『Arial』,Bold(太文字)
プログラムの評価軸
課題の考察 88
安定性 :どんな入力でも正しく動作するか
実行速度 :実行から終了まで高速か
可読性 :読みやすいソースコードなのか
新規性 :新たな手法を取り入れているか
Etc….
考察に困ったら
課題の考察 89
テストケース(入力)のサイズを大きくする
実行時間を計測して表を作る
課題の考察 90
Linux/Mac time ~home: time a.out
Windows
(powershell)
Measure-Command
C:Users:
Measure-Command {a.exe}
実行時間を計測する方法
全てのOS time()関数
”time.h”が必要
#include<time.h>を記述
課題の考察 91
参考資料
timeコマンド(Linux/Mac)
https://qiita.com/tossh/items/659e5934e52b38183200
Measure-Commandコマンド(windows)
https://pig-log.com/windows-measure-time/
time.hヘッダファイル
https://www.mm2d.net/main/legacy/c/c-02.html
目次 92
実行環境
レポート
デバッグ
独学
プログラミングを独学で頑張りたい人向け
概要 93
某企業で社会人向けのプログラミングスクールで
メンターとして働いている経験
初学者に大事なことをいくつか紹介
Windowsユーザー 94
日本語名ユーザーを使わない
必ず半角英字ユーザーに切り替える
Windows最大の沼
日本語が原因でトラブルがたくさん発生
英字ユーザーのフォルダの中に作業用フォルダを作成すること
Macユーザー 95
コマンドラインツールと
パッケージマネージャー(homebrew)を
インストールする
コマンドラインツール:
Macで環境構築をするのに必要
homebrew :
CUIから色々なものをインストールできる
ブラウザでダウンロードボタンポチポチ
する手間が省ける
開発する前に 96
参考資料
新しくユーザーを作成する(Windows)
https://support.microsoft.com/ja-jp/help/4026923/windows-
10-create-a-local-user-or-administrator-account
コマンドラインツールとhomebrewのインストール(Mac)
https://awesome-linus.com/2019/08/16/mac-xcode-git-install/
https://awesome-linus.com/2019/08/17/mac-homebrew-install/
開発する前に 97
Linuxの仮想環境を作るのも手
Vagrant
仮想化ソフトを使って
仮想マシン構築を簡易化
Docker
最近よく聞くツール
コンテナを使って高速に環境構築
画像:https://www.vagrantup.com/ https://www.docker.com/ Microsofft Store 「Ubuntu」
WSL
Windows公式の仮想化ツール
導入が簡単で軽い
開発する前に 98
参考資料
WSLの導入の仕方
https://www.kkaneko.jp/tools/wsl/wsl2.html
Vagrantの導入の仕方
https://qiita.com/ozawan→2016/03/30の資料
VSCodeでWSLを使う方法(WSLの導入が前提)
https://docs.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode
環境構築が一番つらい 99
理想 現実
プログラミング
環境構築
環境構築
プログラミング
環境構築が一番の関門と言っても過言ではない(と思う)
開発する前に 100
頑張ってググる,詳しい人・質問掲示板に聞く
①教材を見ながら手を動かす
学習のすすめ方 101
②自分で何か作ってみる
学習のすすめ方 102
①教材を見ながら手を動かす
とにかくコードを書いて動かす
疑問はメモして放置
Helloworldでググったりすると学習が進まない
細かいことは後から理解で問題ない
103
②自分で何か作ってみる
自分で考えてプログラムを書く
不明点は教材・Googleに聞く
理解不足があると手が止まる
そしたら調べる,考える,書く
学習のすすめ方
学習のすすめ方 104
①と②のギャップが大きい
環境構築の次の山場
①教材を見ながら手を動かして勉強
②実際に自分で何か作ってみる
作るために大事なこと 105
他の人が作ったものを参考にする
クオリティ< 形になっている(動く)
たくさん調べる
出版社 106
SB Creative
技術書をたくさん出版している
入門書が多い
O‘REILLY(オライリー)
分厚い実践的な専門書の大御所
もっと詳しくなりたい人向け
日経○○
ビジネス向けで実例紹介が多い
トレンドを追いたい人向け
画像:https://www.sbcr.jp/ https://www.oreilly.co.jp/index.shtml https://xtech.nikkei.com/
お疲れ様でした 107
実行環境
レポート
デバッグ
独学
資料作成に協力してくれたIEEE SBメンバー,
A科2年生,梅林先生に感謝します
謝辞 108
参考資料 109
プレゼン資料の教科書
https://www.slideshare.net/yutamorishige50/ss-41321443
見やすいプレゼン資料のつくり方
参考資料 110
ICOON MONO
https://icooon-mono.com/
HUMAN PICTOGRAM
http://pictogram2.com/
参考資料 111
PIXABAY
https://pixabay.com/ja/
SILHOUETTE
ILLUST
https://www.silhouette-illust.com/
参考資料 112
Icon-rainbow
https://icon-rainbow.com/
付録 113
VSCodeにCデバッガを導入する
手順を紹介
付録① 114
拡張機能C/C++をインストール
付録② 115
GDBをインストール
https://www.gnu.org/software/gdb/
付録③ 116
パスに日本語がないディレクトリ内に
C言語プログラムを作成
#include<stdio.h>
int main()
{
for(int i = 0; i < 10; i++)
{
printf(“%d”, i);
}
}
sample.c
C:¥Users¥yosimura.yuzuki¥sampledirectory2
ファイルパス
日本語があるとダメ
付録④ 117
ターミナル→既定のビルドタスクの構成
→C/C++:gcc.exe build active fileを選択
付録⑤ 118
デバッグするファイルを選択
ターミナル→ビルドタスクの実行を選択
ディレクトリ内に実行形式ファイルが作成
付録⑥ 119
実行→構成の追加→C++(GDB/LLDB)
→gcc.exe-アクティブファイルのビルドとデバッグを選択
①
②
③
付録⑦ 120
ブレークポイントの設定
行番号の左側をクリック
変数の中身を参照する場所に設定
付録⑧ 121
実行→デバッグの開始を選択
ステップオーバー→プログラムを進める
変数をプログラムの終了まで追う
変数の値が確認できる
付録 122
ディレクトリ内の別ファイルをデバッグ
⑤,⑦,⑧を行う
別ディレクトリ内のファイルをデバッグ
④~⑧を行う
参考資料 123
https://code.visualstudio.com/docs/cpp/config-mingw
https://k-ham.com/vscode-install-win10/
https://pavement1234.net/vscode_c_cpp/
VSCode公式リファレンス(英語)
gccのインストールから実行までの丁寧な資料
C/C++拡張機能の各種設定からデバッガの使い方まで

More Related Content

What's hot

統計学の基礎の基礎
統計学の基礎の基礎統計学の基礎の基礎
統計学の基礎の基礎Ken'ichi Matsui
 
BERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxBERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxKouta Nakayama
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイするTakayuki Itoh
 
ベルヌーイ分布からベータ分布までを関係づける
ベルヌーイ分布からベータ分布までを関係づけるベルヌーイ分布からベータ分布までを関係づける
ベルヌーイ分布からベータ分布までを関係づけるitoyan110
 
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tipscvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tipscvpaper. challenge
 
大学生及び大学院生の研究時間とメンタルヘルス
大学生及び大学院生の研究時間とメンタルヘルス大学生及び大学院生の研究時間とメンタルヘルス
大学生及び大学院生の研究時間とメンタルヘルスAtsuto ONODA
 
機械学習で嘘をつく話
機械学習で嘘をつく話機械学習で嘘をつく話
機械学習で嘘をつく話Satoshi Hara
 
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎Preferred Networks
 
学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~Masahito Ohue
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~nlab_utokyo
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language ModelsDeep Learning JP
 
失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用Hiroyuki Masuda
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)Satoshi Hara
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計Takahiro Kubo
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみたYoshihiko Shiraki
 
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版MOCKS | Yuta Morishige
 

What's hot (20)

統計学の基礎の基礎
統計学の基礎の基礎統計学の基礎の基礎
統計学の基礎の基礎
 
BERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxBERT分類ワークショップ.pptx
BERT分類ワークショップ.pptx
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイする
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
ベルヌーイ分布からベータ分布までを関係づける
ベルヌーイ分布からベータ分布までを関係づけるベルヌーイ分布からベータ分布までを関係づける
ベルヌーイ分布からベータ分布までを関係づける
 
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tipscvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tips
 
大学生及び大学院生の研究時間とメンタルヘルス
大学生及び大学院生の研究時間とメンタルヘルス大学生及び大学院生の研究時間とメンタルヘルス
大学生及び大学院生の研究時間とメンタルヘルス
 
機械学習で嘘をつく話
機械学習で嘘をつく話機械学習で嘘をつく話
機械学習で嘘をつく話
 
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
 
学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~
 
松尾研のご紹介
松尾研のご紹介松尾研のご紹介
松尾研のご紹介
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~
 
For MANABIYA
For MANABIYAFor MANABIYA
For MANABIYA
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみた
 
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版
 

Similar to 大学でC言語をはじめて触る人へ

C言語 学習教材
C言語 学習教材C言語 学習教材
C言語 学習教材Jun MITANI
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialTatsuya Tojima
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部Kiyoshi Ogawa
 
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)Jun MITANI
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
 
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミングUnity Technologies Japan K.K.
 
続・ゲンバのSwift
続・ゲンバのSwift続・ゲンバのSwift
続・ゲンバのSwiftYuichi Adachi
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2Tomohiro Namba
 
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1Hiroshi Watanabe
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦urasandesu
 
Example of exiting legacy system
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy systemTakamchiTanaka
 
Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回Ryo Suzuki
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門道化師 堂華
 

Similar to 大学でC言語をはじめて触る人へ (20)

C言語 学習教材
C言語 学習教材C言語 学習教材
C言語 学習教材
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 Turorial
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
 
C++の復習
C++の復習C++の復習
C++の復習
 
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
 
続・ゲンバのSwift
続・ゲンバのSwift続・ゲンバのSwift
続・ゲンバのSwift
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
CMSI計算科学技術特論A(8) 高速化チューニングとその関連技術1
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
[輪講] 第1章
[輪講] 第1章[輪講] 第1章
[輪講] 第1章
 
ji-6. 配列
ji-6. 配列ji-6. 配列
ji-6. 配列
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
 
Example of exiting legacy system
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy system
 
C言語の課題を(エクストリームに)解こう #1
C言語の課題を(エクストリームに)解こう #1C言語の課題を(エクストリームに)解こう #1
C言語の課題を(エクストリームに)解こう #1
 
Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (8)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

大学でC言語をはじめて触る人へ