狠狠撸
Submit Search
颁言语讲习会1
?
12 likes
?
40,693 views
O
odenhadengaku
Follow
未経験者のためのC言語講習会 資料/ C language for inexperienced people
Read less
Read more
1 of 36
Download now
Downloaded 29 times
More Related Content
颁言语讲习会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