SlideShare a Scribd company logo
1 of 36
C言語超入門
1日目
• プログラムとは
• C言語とは
• 開発環境のインストール
• Hello World!
プログラムとは
コンピュータに仕事をさせるための手順を書いたもの
たとえば…その1
よく飼いならされた犬がいる
「お手」という
お手をする。
プログラムは…
「お手」という
たとえば… その2
これもプログラム
https://scratch.mit.edu/
たとえば… その3
void main()
{
int b = a;
b = b*2;
}
これもプログラム
たとえば… その4
ADD A,R0
SUBB A,R0
これもプログラム
プログラムとは
• コンピュータに仕事の手順を教えた
(命令した)もの
• 教え方はいろいろ
• 教え方の一つがC言語
C言語とは
コンピュータに仕事を教えるための文法
コンピュータに命令を与えるための文法
コンピュータは
何を理解できる?
コンピュータは0と1を区別できる
コンピュータはONとOFFしかわからない
たとえば
コンピュータは0と1は理解できるが2は理解できない。
コンピュータはスイッチのONとOFFは理解できる。
スイッチがONなら1、OFFなら0というふうに理解する。
スイッチが2つあるとする。
00 01 10 11
01と組み合わせで4種類を区別する。
C言語は…
void main()
{
int b = a;
b = b*2;
}
このままでは理解できないので、C言語の文法にしたがって0と1
に変換する必要がある
コンパイラに変換をお願いする
C言語とCコンパイラ
C言語の文法にしたがって書かれたプログラム
コンパイラが変換
コンピュータが仕事する
ひとりじゃ大変
プログラムは、すでにある部品や、いろんな人が作った部品を最
後につなげて動かす
→変換だけではなくつなげることも必要
→リンカにお願いする。
C言語とコンパイラと
リンカ
C言語の文法にしたがって書かれたプログラム
コンパイラが変換
コンピュータが仕事する
既にあるプログラム 既にあるプログラム
リンカが結合
ライブラリ
既にあるプログラムをライブラリという
・標準Cライブラリ
以外にもいろいろ。自分で作ったりもする。
プログラムは、いろんなライブラリと自分のプログラムを組み合
わせてコンピュータに仕事を命令する
コンパイラのインストール
コンパイラとリンカを実行して、プログラムを実行ファイル
(exeファイルとか)にしてくれるプログラムを開発環境という
C言語の開発環境には
Microsoft Visual Studio
Eclipse with CDT
NetBeans
BCC Developer
などなどいっぱいある。
Windowsで使うプログラムの開発環境は、とりあえずMicrosoft
Visual Studioが無難。
MICROSOFT
VISUAL STUDIO
・ユーザが多い
・webでヒントいっぱい
・なんだかんだで高機能
・無料でも使える
VISUAL STUDIO COMMUNITY
2015 RCをインストール
https://www.visualstudio.com/
Visual Studio Community 2015 RCをダウンロード
カスタムインストール
カスタムを選択
Microsoft SQL Server Data Toolsと
Silverlight開発キット
以外全部インストール(28G必要!!)
VISUAL STUDIOを起動する
新しいプロジェクト…
空のプロジェクトを選択
新しいプロジェクトの設定
名前はFirstDayとしておく。
場所は、好きな場所でOK
ソリューション名は、C_Practiceとして
OKボタンをクリック
ソリューションと
プロジェクト
プロジェクトは、プログラムを管理する単位
プロジェクトの集合体がソリューション
プログラム作成画面
ソリューションの中にFirstDayというプロジェクトが作成される。
プログラムの追加
ソースファイルフォルダを右ク
リックして新しい項目を追加をク
リック
プログラムの追加
C++ファイルを選択して、名前をFirstDaySrc.cppとする。
cppはC++のソースファイルの拡張子だが、今回の練習の範囲
内では問題なし。
プログラムの追加
編集エリアにFirstDaySrc.cppが編集可能な状態で表示される。
プログラムを作る
まずは、何もしないプログラムを編集エリアに書く
void main(){
}
C言語のソースプログラムは、関数の集合体として記述される。
関数は名前を持ち{}でくくられた文字の集合体。
上のプログラムは、mainという名前の関数で、{}にくくられ
えた本体部分はなにもないプログラム。
mainの前のvoidは戻り値と呼ばれ、関数を実行した結果、その
関数からは何も出力されませんの意味。
プログラムを
コンパイルする
なにもしないプログラムをコンパイルして実行する。
Visual Studioではコンパイル→リンクをまとめて実行するコマン
ド(ビルド)が用意されている。
メニューからビルド>FirstDayをビルドを選択する。
画面下の出力ウィンドウにFirstDay.exeを作成したことが表示さ
れる。
プログラムを実行する
できあがったFirstDay.exeファイルを選択して実行する
一瞬、黒い画面がでて終了する。
←何もしないプログラムだからなにもしないで終了した。
何かするプログラムを作る
#include <stdio.h>
void main(){
printf(“Hello World”);
getchar();
}
上の3行を追加してビルド、実行する
黒い画面にHello World!と表示される
何かキーボードを押すとプログラムは終了する
PRINTFとGETCHAR
printfとgetcharは標準C言語ライブラリの中の関数
他の人が作った関数を利用するために、
#include <stdio.h>
としている。
stdio.hにはほかの人が作った関数がどんなものかが書いてある。
そのために、stdio.hをソースファイルに含めてくださいというの
が、#includeの意味。
stdio.hは関数の説明だけ。関数をコンパイルした結果は、リンカ
が結合してくれる。リンカの設定は、また次回以降に
コメント(メモ)を追加する
#include <stdio.h>
// プログラムのエントリポイント
void main(){
printf(“Hello World!”);// Hello World!と表示する
getchar(); // 入力された文字を取得する
}
プログラムのコメントは//で始める。//以降、その行のプログラ
ムを、コンパイラは無視をする。
演習問題
① C_HomeWorkというソリューションを作成し、その中に
FirstDayというプロジェクトを作成する。
② ①で作成したプロジェクトにFirstDaySrc.cppというソース
ファイルを追加する。
③ ②で追加したソースファイルにmain関数を作成し、printfを
使って様々な文字を表示するプログラムを作成
④ ③で作ったプログラムをビルドして、exeファイルを作成し
実行する。
⑤ ③で使ったprintfに渡したメッセージがちゃんと表示される
ことを確認する

More Related Content

What's hot

競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep LearningSatoshi imai
 
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」Preferred Networks
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプKohsuke Yuasa
 
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppC++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppcocodrips
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonadKouji Matsui
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発Takuya Ueda
 
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発祐司 伊藤
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGoTakuya Ueda
 
5_C言語入門 - 変数について
5_C言語入門 - 変数について5_C言語入門 - 変数について
5_C言語入門 - 変数についてbc_rikko
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Hiro H.
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】Hiro H.
 

What's hot (20)

競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
 
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppC++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonad
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
 
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGo
 
5_C言語入門 - 変数について
5_C言語入門 - 変数について5_C言語入門 - 変数について
5_C言語入門 - 変数について
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
C++ programming
C++ programmingC++ programming
C++ programming
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
 

Similar to C言語超入門

Cをやりましょう
CをやりましょうCをやりましょう
CをやりましょうKen Ogura
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日nukaemon
 
Programming 学習のすすめ(改訂版)
Programming 学習のすすめ(改訂版)Programming 学習のすすめ(改訂版)
Programming 学習のすすめ(改訂版)Sayaka Tamura
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programmingkeki3
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門kunihikokaneko1
 
Programming 学習のすすめ
Programming 学習のすすめProgramming 学習のすすめ
Programming 学習のすすめSayaka Tamura
 
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」Takashi Ogura
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiNaruto TAKAHASHI
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトTaketo Sano
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用Takaya Funabiki
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_opsume3_
 
po-1. プログラミング入門
po-1. プログラミング入門po-1. プログラミング入門
po-1. プログラミング入門kunihikokaneko1
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段Pierre3 小林
 

Similar to C言語超入門 (17)

Cをやりましょう
CをやりましょうCをやりましょう
Cをやりましょう
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
Programming 学習のすすめ(改訂版)
Programming 学習のすすめ(改訂版)Programming 学習のすすめ(改訂版)
Programming 学習のすすめ(改訂版)
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programming
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門
 
Programming 学習のすすめ
Programming 学習のすすめProgramming 学習のすすめ
Programming 学習のすすめ
 
C#勉強会
C#勉強会C#勉強会
C#勉強会
 
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
RoboticsとC++@歌舞伎座.tech#8「C++初心者会」
 
4/17
4/174/17
4/17
 
Blenderとコード
BlenderとコードBlenderとコード
Blenderとコード
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
 
IT魔導の書 ~ Grimoire du IT
IT魔導の書 ~ Grimoire du ITIT魔導の書 ~ Grimoire du IT
IT魔導の書 ~ Grimoire du IT
 
po-1. プログラミング入門
po-1. プログラミング入門po-1. プログラミング入門
po-1. プログラミング入門
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段
 

Recently uploaded

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 

Recently uploaded (6)

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 

C言語超入門