• 検索結果がありません。

第2回講義:まとめ

N/A
N/A
Protected

Academic year: 2021

シェア "第2回講義:まとめ"

Copied!
34
0
0

読み込み中.... (全文を見る)

全文

(1)

C言語のキーポイント

 5=xはNG, x=y=6はOK. (x=y)=6は? *ptr=7は?  int x; printf(“%d”, x)は○、scanf (“%d”, x)は×

 非0が真、0が偽  for文はwhile文で書き直せる、逆も真  配列は0-オリジン  関数呼び出しでは、仮引数が実引数で初期化される  式を評価するとき副作用を起こす演算子は、(複合)代入 演算子、増分演算子、減分演算子  ポインタはアドレス  配列名は先頭要素へのポインタ  配列とポインタは似ている

(2)

第1回講義

• >gcc test.c

実行ファイルa.exe生成

– ソースプログラム test.c より – 実行プログラム a.exe が作られる

• >gcc -o test1 test.c

オプションoで、実行ファイルtest1.exe生成

– ソースプログラム test.c より – 実行プログラム test1.exe が作られる

(3)

/* 画面に文字を出力するコード*/

#include <stdio.h>

int main(void)

{

printf(“ようこそC言語へ!¥n”);

printf(“C言語をはじめましょう!¥n”);

return (0);

}

(4)

#include <stdio.h>

int main(void)

{

return (0);

}

• はおまじない

• /* */はコメント

• printfを関数呼び出し

printf(“ようこそC言語へ!¥n”);

printf(“C言語をはじめましょう!¥n”);

/* 画面に文字を出力するコード*/

(5)

• プログラムはmainから実行される

int main(void) { }

が基本

文が上から順番に実行される

• 文

のおわりは原則として

セミコロン(;)

printf(“ようこそC言語へ!¥n”)

;

return (0)

;

int main(void) { printf(“ようこそC言語へ!¥n”); printf(“C言語をはじめましょう!¥n”); return (0); }

(6)

• ブロック(文):文を中カッコ{ }でまとめたもの

{ } • ブロックは文 • ブロックが実行されるとき、内容の文が上から順番に実行さ れる • ブロック文の終わりはセミコロン(;)がつかない • ブロックの中の文がブロックであることも { { printf(“ようこそC言語へ!¥n”); printf(“C言語をはじめましょう!¥n”); } return (0); }

(7)

• コメント:/* から*/までの文字は、コンパイル時に無視される • コメントを用いて、プログラムを分かりやすくするために説明を書く – 他人に分かりやすく – 未来の自分に分かりやすく • デバッグ時にコメントを用いることもある – プログラムの一部を消すかわりに、コメントアウトしておく – 後でその部分を復活させるのが楽 /* 画面に文字を出力するコード*/ #include <stdio.h> int main(void) { printf(“ようこそC言語へ!¥n”); /* printf(“C言語をはじめましょう!¥n”); */ return (0); } 無視される

(8)

• stdio.hファイルのインクルード: • 「stdio.hファイルを読み込め(includeしろ)」という命令 • stdio.hを読み込むことによりprintfを使うことができる(gccでは、なくても OKだが…) • .h拡張子をもつファイルをヘッダファイルという • #ではじまる命令は、コンパイルの前処理部分:プリプロセッサで実行され る。 /* 画面に文字を出力するコード*/ #include <stdio.h> int main(void) { printf(“ようこそC言語へ!¥n”); printf(“C言語をはじめましょう!¥n”); return (0); }

(9)

• printf 書式化して表示を行う関数

– 基本 画面に文字列を表示する

• #include <stdio.h>が必要 • printf(文字列リテラル) • 文字列リテラル: 2重引用符(“ ”)で囲まれた文字の 並び

– printf(

“Hello,World.¥n”

)

• “Hello,World.¥n” 文字列リテラル • ¥n 改行を表す拡張表記(エスケープシーケンス) >Hello, World. > (改行される)

(10)

• printf 書式化して表示を行う関数

– 挿入-書式化が行われる場合

– printf(“15と37の和は%dです。¥n”,

15+37);

• %d 挿入位置を指定 • d 書式(10進(decimal)表示)を指定

– printf(“あ%dい%dう%d¥n”, 1, 2, 3)

>あ1い2う3 >

(11)

• 文字列リテラル: 2重引用符(“ ”)で囲まれた

文字の並び

– "Hello,World.¥n"

• 文字定数:

1重引用符(’ ’)で囲まれた単独

の文字

– 'H'

'e'

– '¥x48' '¥x65' 文字コードでも表せる

• printf("

%c

は文字です。¥n"

,

'A'

);

– %c 挿入位置を指定

– c 書式(文字定数表示)を指定

(12)

• エスケープシーケンス:¥ではじまる特殊な文字

– 文字定数、文字列リテラルで用いられる – ¥n(改行) ¥t(水平タブ) 表示の指定 – ¥‟(1重引用符 ’ ) ¥”(2重引用符 “) 1重引用符、2重 引用符が、文字定数、文字列リテラルを定義するために 使われているため – ¥¥(円記号¥ ) 円記号が、エスケープシーケンスを定義 するために使われているため

• printf(“円記号を表示します: %c¥n”,

„¥¥‟

);

>円記号を表示します: ¥ >

(13)

• 整数定数

10 10進の「10」。10進の10を表す。

010 8進の「10」。10進の8を表す。

0x10 16進の「10」。10進の16を表す。

0xF 16進の「F]。10進の15を表す。

int x=10; printf("10進数%dを8進で表すと%o, 16進で表すと%xであ る。¥n",x,x,x); >10進数10を8進で表すと12, 16進で表すとaである。

(14)

• printf(“%cは文字です。¥n”, „A‟);

– %c 挿入位置を指定

– c 書式(文字定数表示)を指定

• printf(“

%d

は整数です。¥n”

,

567

);

• printf(“

%f

は小数です。¥n”

,

53.14

);

• printf(“%d

は整数、

%cは文字です。¥n”,

567, „A‟

);

(15)

• 変数宣言

int num ;

char c;

double db;

– 型 変数名 セミコロン

– int型(整数型)の変数numを宣言

– int

vx

,

yx

; とまとめて宣言できる

(16)

• 変数には値を格納することができる

• 代入(演算子) =

– 基本 x = 3; /*変数xに3を代入*/

– 変数へ=を使って値を格納(代入)

– 方程式を作るためのものでは

ない

– int型変数には整数を格納できる num=234

– char型変数には文字、整数を c=„A‟ c=127

– double型変数には(浮動)小数点数を db=3.14

(17)

• 変数宣言

int num =234;

char c =„A‟;

double db=3.14;

– 変数宣言と同時に値を指定できる(

初期化

できる)

• int num; num = 234;の代わりに

– 初期化を行わない変数には、何が格納さ

れているかわからない

(18)

• 代入(演算子 )=

num = 3; /*変数numに3を代入*/

num=5; /*変数numに5を代入*/

– 代入により、格納される値を変更(上書き)

int num1,num2;

num1 = 3; /*変数num1に3を代入*/

num2=num1;

/*変数

num1の値

をnum2を代入*/

(19)

• 代入(演算子 )=

int num1,num2;

num1 =

3

; /*変数num1に

3

を代入*/

num2=

num1

; /*変数

num1の値

をnum2を代入*/

○右辺の

num1

が3に置き換わると考える

num2=

3

; と考える

(20)

• 代入(演算子 )=

num2=num1;

/*変数

num1の値

をnum2を代入*/

C言語(や、それ以後の言語)のよくないところ・・・

右辺:num1の値を 左辺:num2へ格納

変数が場所(右辺or左辺)によって役割が

異なる

(21)

• printf 書式化して表示を行う関数

int num= 3; printf(“変数numの値は%dです。¥n”, num);

/*変数

numの値

を表示*/

>変数numの値は3です。 >

○numが3に置き換わると考える

printf(“変数numの値は%dです。¥n”, 3); と考える

(22)

• 代入(演算子 )=

int num; /*numは整数変数だが…*/

num = 3.14; /*変数numに3.14を代入*/ printf(“変数numの値は%dです。¥n”, num);

/*変数

numの値

を表示*/

>変数numの値は3です。 > 3.14の小数部分を切り捨てた値3が格納されている 小数点数から整数への変換が行われている 型を自動的に変換している

(23)

• scanf 読み込みを行う関数

– 基本 キーボードから数値などを読み込み、変数

に格納

• #include <stdio.h>が必要 • scanf(書式指定、&変数名) • 「&変数名」に注意、 – &はアドレス演算子という – 変数のメモリ上の場所「番地(アドレス)」を表す

– scanf("%d",&no)

• キーボードからの入力を10進数としてみなして • 変数noへ格納 • 事前に変数noが宣言されている必要がある!

(24)

• scanf 読み込みを行う関数

int no;

scanf(“%d”,&no);

• キーボードからの入力を10進数としてみなして • 変数noへ格納

double num;

scanf(“%lf”,&num);

• キーボードからの入力を小数点数としてみなして • 変数numへ格納

(25)

• getchar キーボードより文字を読み込む関数

– 基本 文字を読み込む関数

• #include <stdio.h>が必要 • getchar() 引数をとらない • 読み込んだ文字を返却する

char ch;

ch = getchar();

• chに読み込んだ文字が格納される

(26)

• (もう一度)プログラムはmainから実行される int main(void) { }

が基本

• 文のおわりは原則としてセミコロン(;)

– return (0); return文 – int vx; 宣言文 – printf(“%d”, 15+37); – vy = 10;

(27)

今日のレポート課題

以下をレポートにまとめてください。次回講義中に回

収します。

• 自分の環境の各型(char, unsigned char, ... ,

long double)のサイズと記憶できる値の範囲を調

べよ。

• 2の補数(表現)について調べよ。それを用いて、

unsigned int変数の格納できる値の範囲とint変数

の格納できる値の範囲の違いについて説明せよ。

• 10進表示、2進表示、16進表示のそれぞれの間の

変換方法を調べよ。例も示せ。

(28)

今日のレポート課題

以下をレポートにまとめてください。次回講義中に回

収します。

• プログラム課題「文字(アルファベット)を入力させ、

その文字そのものとその文字コードを出力させる

プログラムを書け」

>1文字を入力してください:a > aの文字コードはx61です。

• 自作問題と解答

– 2組の問題と解答

(29)

○第1回大レポート課題

– 10月18日の講義中に回収

– 表紙をつける

– A4用紙、左上ホチキス(ステープラー)留め

• 内容

– 以下の書籍を読み、「自分用まとめメモ」をA4用

紙2枚程度で作成

– 箇条書きのメモ

• 戸田山 和久「論文の教室―レポートから卒論まで 」 (NHKブックス) – この本で、パラグラフ・ライティングを学んでください

(30)

戸田山 和久「論文の教室―レポートから卒論

まで 」(NHKブックス)

(31)

○第2回大レポート課題

10月25日の講義中に大レポートの構成案を回収

• 大レポートのアウトライン(各セクションのタイトルと、サブセクショ ンの見出し)と各パラグラフに書く内容の概要(1行程度、トピック センテンス(の候補))を提出

11月8日の講義中に大レポートを回収

• 表紙をつける、A4用紙、左上ホチキス(ステープラー)留め • マイクロソフトワードを使用、フォント12ポイント以下 • 5ページ以上 • パラグラフ・ライティングの手法に基づいている必要がある(トピッ クセンテンスにアンダーラインをすること) • その他の戸田山本の規則に従う • 参考文献、引用文献を明記 • 個人的な意見、感想、アイデアを書いてはいけない

(32)

○第2回大レポート課題  課題内容 C 言語を使用して、方程式 を満たすx を求めるプログラムを作成しなさい。実数値a、b、 c がどのような値(0を含む)になっても正しい値が出るように しなさい。 入力(a,b,cの指定)はプログラム冒頭の代入で行い、様々 な入力に関しては全て再コンパイルで対応すること。 また、全ての条件分岐(if文)が正常に動作していることを確 かめるために、それぞれの条件に対応する入力例を作り、 実際に動作テストを行った結果も示すこと。 なお、解が実数の場合のみ考えれば十分である。

0

2

c

bx

ax

(33)

○第2回大レポート課題  技術的文章は、問い(解くべき課題)と答え(課題に対する解 答)を含む。  技術文章内のすべての文章は上記いずれかを説明するた めにある。  作成したアウトラインの基づき、全体を構成すること。  目次の例  解くべき課題  背景  課題の背景  解決法の背景  (課題へのアプローチ )  解決法、提案方式  評価  (今後の課題 )  参考文献リスト  付録:プログラム本体等

(34)

○第2回大レポート課題

 例えば、以下の内容が含まれている必要がある

 a=0の場合の解説  2次方程式の解の公式の解説  2次方程式の判別式の解説  作成したプログラムのif文の条件式の意味の説明  C言語で利用する機能(sqrt)の解説

 その他

 写したと思われるほど酷似したレポートがあった場合には 、不合格とします。同じ過去レポートを写した場合や意図 せず他人に写されてしまった場合も不合格となります。  出典を明記することにより参考文献を利用すること。Web 文章の利用は不可。  合格するまで再提出をしてもらいます。そのため、ワード で作成。

参照

関連したドキュメント

前回パンダ基地を訪れた時と変わらず、パンダの可愛らしい姿、ありのままの姿に癒されまし

それでは資料 2 ご覧いただきまして、1 の要旨でございます。前回皆様にお集まりいただ きました、昨年 11

2(1)健康リスクの定義 ●中間とりまとめまでの議論 ・第

父親が入会されることも多くなっています。月に 1 回の頻度で、交流会を SEED テラスに

[r]

*2 施術の開始日から 60 日の間に 1

○福安政策調整担当課長

・毎回、色々なことを考えて改善していくこめっこスタッフのみなさん本当にありがとうございます。続けていくことに意味