Submit Search
Upload
C言語講習会1
•
12 likes
•
40,394 views
O
odenhadengaku
Follow
未経験者のためのC言語講習会 資料/ C language for inexperienced people
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 36
Download Now
Download to read offline
Recommended
C言語講習会2
C言語講習会2
odenhadengaku
やさしく知りたいC言語
やさしく知りたいC言語
uru nru
C言語講習会4
C言語講習会4
odenhadengaku
C言語講習会3
C言語講習会3
odenhadengaku
C言語超入門
C言語超入門
Mercury Soft
C day2
C day2
Mercury Soft
C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)
kakira9618
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
More Related Content
What's hot
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
Fumihito Yokoyama
F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Haruka Oikawa
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
cocodrips
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
全探索
全探索
HCPC: 北海道大学競技プログラミングサークル
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
C++の黒魔術
C++の黒魔術
Daichi OBINATA
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
Unit II chapter 4 Loops in C
Unit II chapter 4 Loops in C
Sowmya Jyothi
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
Emcpp0506
Emcpp0506
Takatoshi Kondo
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
ラムダ計算入門
ラムダ計算入門
Eita Sugimoto
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
What's hot
(20)
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
F#によるFunctional Programming入門
F#によるFunctional Programming入門
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
全探索
全探索
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
C++の黒魔術
C++の黒魔術
templateとautoの型推論
templateとautoの型推論
プログラムを高速化する話
プログラムを高速化する話
Unit II chapter 4 Loops in C
Unit II chapter 4 Loops in C
C++ マルチスレッド 入門
C++ マルチスレッド 入門
Emcpp0506
Emcpp0506
中3女子でもわかる constexpr
中3女子でもわかる constexpr
ラムダ計算入門
ラムダ計算入門
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Similar to C言語講習会1
Unity + C#講座①
Unity + C#講座①
Yu Yu
C#勉強会
C#勉強会
hakugakucafe
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
yushin_hirano
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Taketo Sano
リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Tomonobu_Hirano
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
Kaz Aiso
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
Tomo Mizoe
About Pointer
About Pointer
Sho IIZUKA
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712
Nobuaki Oshiro
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
AtCoder Inc.
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
wada, kazumi
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
keki3
Similar to C言語講習会1
(20)
Unity + C#講座①
Unity + C#講座①
C#勉強会
C#勉強会
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
リテラル文字列型までの道
リテラル文字列型までの道
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
About Pointer
About Pointer
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
C言語講習会1
1.
C言語講習会 第1回 ロボット技術研究会 13情報工学科 @odenhadengaku
2.
今日やること • 講習会について • (titech-pubnetの設定) •
C言語について • Ideone • Hello Worldの前に • Hello World • エラーの対処法 • 変数 配列 型 • 次回予告
3.
講習会について • 時間・回数:2時間×4回 • マイコン講習会やF3RCにスムーズに対応でき るレベルのC言語を教える(らしい) -未学者・超初心者向けです
難しいことはやらないです • わからないことがあったら積極的に質問しま しょう -優しい14が答えてくれる
4.
講習会について 第1回:はじめに Hello World 変数
配列 型 第2回:関数 制御構文 第3回:配列再び ビット演算 マクロ 第4回:構造体、共用体、列挙体 ポインタ ヘッダファイル
5.
titech-pubnetの設定 • titech-pubnet:キャンパスにある無線LAN • 設定すると無線LANが自由に使えるので良い -速度は、まぁ… •
講習会で使用するIdeoneはWebサイトなので ネットに繋がらないと使えない • 設定しよう!!!!
6.
titech-pubnetの設定 • http://www.noc.titech.ac.jp/wlan/guide.shtml に設定方法が書いてある 1. 無線LANを有効にすると、titech- pubnetが検出される 2.
プロパティに以下を入力 1. セキュリティの種類:WPA2-パーソナル 2. 暗号化の種類:AES 3. ネットワーク セキュリティ:titech-pubnet
7.
titech-pubnetの設定 • http://www.noc.titech.ac.jp/wlan/guide.shtml に設定方法が書いてある 3. プロキシの設定をおこなう •
IE:メニューから[インターネットオプション] • Chrome:[設定]->[プロキシ設定] • Firefox:メニューから[ツール]->[オプション] を選び,[詳細][ネットワーク][接続設定]と進 む 4. 自動検出にチェックを入れる • もしくは自動構成(プロキシ)スクリプトに 「http://portal.titech.ac.jp/proxy.pac」 と入力
8.
C言語について • ロボット(マイコン)やPCを制御するには, それらに命令を送らなければならない – サーボをm度動かす,n秒前に進む,逆行列を求める… •
命令を処理するには,ロボット/PCが理解でき る言語で命令する必要がある→機械語 • 人間にとって非常に読みにくく,理解し難い – 2進数(表示では16進数)
9.
C言語について • 人間もコンピュータも理解できる言語が必要 – プログラミング言語 –
でもコンピュータはプログラミング言語自体を理解すること はできない • 様々な種類のプログラミング言語がある – C,C#,C++,Java,Python,Scheme,Haskell… • 今回はC言語を扱う – マイコンは主にC言語を使用する – C言語が分かれば,他のプログラミング言語を学ぶ際にも 参考になる(はず)
10.
C言語について • C言語によるプログラミング(GCCの場合) 1. ソースコードの作成 2.
コンパイル • ソースコード(プログラミング言語)を機械語に変換すること • 機械語に変換するツールをコンパイラという 3. 実行ファイルが生成される 4. 実行!! 実行結果
11.
Ideone • C言語の開発環境は様々 – エディタ+コンパイラ(gcc,
Borland C++ Compiler…) – Visual Studio,Eclipseなどの統合開発環境(IDE)もある – マイコン講習会ではAtmel Studioを使用 • 上記の方法はインストールなどが面倒 – 特にコンパイラを✝Windows✝に導入する場合 • 今回は気軽にC言語に触れてもらうために Ideoneを使用 – https://ideone.com/ – 多言語対応オンラインコンパイラ – WebサイトなのでOSに依存しない
12.
Ideoneの使い方 1. https://ideone.com/にアクセス 2. ソースコードを書く 3.
左下のタブが「C」になっているか確認 4. 「Run」ボタンを押す 5. 「stdout」に実行結果が表示される 3 4
13.
Hello World • プログラミング言語を学ぶ際に,最初に書く プログラムとして定番のもの –
入門書の80-90%はこのタイプのプログラムが最初 • ただ「Hello World」と出力するだけのプログ ラム – 実際に目に見えたら面白い – Ideoneの使い方を覚えるついでに,実際に書いてみよう
14.
でもちょっと待って
15.
Hello Worldの前に • どちらか1つのコードはエラーが発生する
16.
Hello Worldの前に • どちらか1つのコードはエラーが発生する #include
<stdio.h> int main(void){ printf(“Hello World¥n”); return 0; } #include <stdio.h> int main(void){ printf(“Hello World¥n”); return 0; }
17.
Hello Worldの前に • どちらか1つのコードはエラーが発生する 全角文字が入っていること を示すエラー •
右は全角スペースが混入している • 全角スペースは箇所が特定 しにくい • ソースコードは半角英数字を入力 しよう
18.
Hello World • Ideoneで下のプログラムを入力し,実行しよう •
成功すると右のようになる – 余裕のある人は「Hello World」の文字を変えてみたり, プログラムの一部を変えてみてどうなるのか試してみよう – 何度も変更する場合は実行結果画面左上の「edit」から コードを変更し,[ideone it!]を押下すると,[Output]に結 果が順次出力される
19.
Hello World • C言語では
int main(void){…}の{…}が実行され るので,{…}の中にプログラムを記述する – int main(void){…}はmain関数と呼ばれる関数. • 1つの命令(文)の最後には「;」がつく • 命令は上から下へ実行される • C言語は改行や空白がある程度自由がきく – 下図のように1行に書いても正常に動く – でも読みにくいからあまりオススメしない – インデントをして見やすくする(勝手にしてくれる場合も)
20.
Hello World • printfはコンピュータに文字列を出力するよう 命令する関数 –
“”(ダブルクォーテーション)で囲まれたところを出力 – 「¥n」は「改行」を意味する • return 0; は必ずプログラムの最後につける • #include<stdio.h>はprintfなど,入出力に関す る機能を使えるようにするために記述 – stdio.hというファイルにprintfなどの関数の定義がされて おり,includeによりそのファイルを呼び出している – stdioは”Standard I/O”の略.studioではない
21.
エラーの対処法 • エラーはプログラミングをする際に必ずと言っ ていいほど発生するもの – 一発でコンパイラ通ると「どこかおかしいんじゃないか」 と疑うことも…? –
よくある間違いは,スペルミス,配列の範囲外アクセス… • プログラミングでは,エラーに対処できるよう になることも大事 • 主に,コンパイルエラーとランタイムエラーの 2つが発生する
22.
エラーの対処法 • コンパイルエラー • コンパイル時に発生 •
エラーメッセージを出してくれるので,どこでエ ラーが発生しているか見当をつけやすい
23.
エラーの対処法 • ランタイムエラー • 日本語では「実行時エラー」 •
その名の通り,プログラムが実行されている時に発 生するエラー • コンパイルは通るので,コンパイルエラーよりも対 処が厄介 • デバッガーなどを使ってエラーの原因を探す 例:ゼロ除算
24.
エラーの対処法 • エラーが発生したら – 怪しい箇所をいじったり消したりして,どこでエラーが 発生しているかを特定する –
スペルミス,全角スペースは定番 – コンパイルエラーならば,エラーメッセージにヒントがあ る場合が多い • エラーをできるだけ発生させないように, 見やすいコードを書くようにする – インデントや改行を心がける
25.
変数 配列 型
の概要 • 「データを入れる箱」が変数 • そしてその箱をたくさん用意したのが配列 • しかしその箱には特定のデータしか入れること ができない – 整数,小数… • どのデータを入れることができるかを示したの が型 (誤解を恐れず)ざっくり説明すると こんな感じ
26.
変数 型 • 右のコードを書いて 実行しよう •
同時進行で,変数,型 の詳しい説明とコード の説明もします
27.
変数 型 • 情報を数値や文字とし て保存する必要がある •
ロボットが何回線を通過 したか • 成績の合計値 • C言語では数値や文字な どの情報を変数として 保持することができる a 3
28.
変数 型 • 変数にはどのデータを入れて もいいわけではない •
整数,小数,文字などタイプを 指定する必要がある →型 • 変数を定義するには, int a; (型)(変数名) のように記述する • 定義せずに,いきなりaを利用す ることはできない • 変数名は基本自由 • int b,c,d,e;のようにまとめて定義 もできる.この場合すべてint型
29.
変数 型 • 型の種類(代表的なもの) •
void型の変数は作れない • voidは関数,ポインタで登場 • float,doubleともに小数の型 • 違いは精度 • doubleの方が精度が良い 型名 意味 扱える値 変換文字 char 文字 ‘a’,’b’… %c int 整数 1,100… %d,%o,%x, %u float 浮動小数点 3.14,1.6… %f,%e double 倍浮動小数点 1.2e+54… %f,%e void 空 ない
30.
変数 型 • 変数に値を代入するには b
= 2; • のように「=」を用いる • この場合,int型の変数bに2を 代入している • 数学の「=」ではない.左側の 変数に値を設定するという意味. • 変数の宣言時に値を決める こともできる • 初期化という • 初期化する前の状態の変数には 0や不定の値が入っているので, 最初から変数の値が定まってい るなら初期化すること
31.
変数 型 • 計算では数学と同じく,四則 演算(+,-,*,/)の記号が使える •
他にも剰余(%)が使える • 4%2→0, 15%2→1 • c = a + b; はa+bが計算され, その値がcに代入される.つま りcには…? • 数学と同じように演算子の優 先度があるため, d = a * (b + c); のように, ()で優先度の指定もできる.
32.
変数 型 • a++;
はa = a + 1;のこと • インクリメントという • a--;もあり,a = a – 1;の意味 • a += b は,a = a + b;の意味 • a *= b は,a = a * b;の意味 • a++;は++a;と書いても結果は同 じ.しかし,実際の動作はビ ミョーーーーに違う. • int型の変数aに関して, printf(“%d¥n”,a);と書くと,a の内容が出力される. • 詳しく言うと,%dの部分がaに 置き換わる
33.
変数 型 • 右のコードを実行した結果は, 右のようになる. •
実行できたら,コードを ちょっといじってみよう. • %dと変数が対応していること を意識して, printf(“a:%d,b:%d¥n”,a,b); と するとどうなるか考えてみる.
34.
おまけ1 • printfで登場した「¥n」は改行を意味する – だから
printf(“Hello¥nWorld¥n”); とすると・・・? – 「¥n」はエスケープシーケンスと呼ばれる • エスケープシーケンスは,通常の文字列では表 せない文字や機能を,規定された文字で表した もの – たとえば,printfで「”」を表示させたい – でも printf(“””); だとエラー – ¥”で「”」を表すので, printf(“¥””); とする – 他にも色々あるので,「エスケープシーケンス」でググっ てみよう
35.
おまけ2 • 変数名は基本自由 – でもダメな場合もある –
変数名の先頭が数字はダメ(int 10a;とか),C言語で使われ ている言葉(予約語:int,printf…)もダメ • a++;と++a;の違い – どちらも1を加算する(++ はインクリメント演算子) – 前につけると前置演算子,後ろにつけると後置演算子 – a = 1;のときに, – b = ++a;とした場合とb = a++;した場合のbの値は…? • 配列を利用したい場合は, – int a[5];(宣言), int a[5]={1,2,3,4,5}; (初期化) – a[5]とすると,a[0]-a[4]にアクセスできることに注意!
36.
次回予告 • 変数,型の続き • 関数 •
制御構文 本日は以上です ありがとうございました
Download Now