変数の値とアドレス

前回のまとめ等

  • 配列
    • 同一型の複数のデータで、各データを添字によって区別する
    • 添字は0から始まる整数
  • 課題の解答例

課題の回答状況

  • ◯ コンパイルできるソースコードを提出している。
  • × 関数の定義の形が理解できていない。例: fizzbuzzの戻り値の型をintにしている、あるいは指定していない。
  • × 演算子を正しく理解していない。例: for文で i=i++
  • × 関数の使い方を理解していない。例: printf(“FizzBuzz “,i);

C言語における変数の値とアドレス、代入という操作について

変数の値とアドレスについて

  • 変数は値を入れておく箱のようなもの。箱の名前のことを「変数名」という。
  • 変数の値はコンピューターのメモリのどこかにに保存される。
  • 「どこか」を知りたい場合、アドレス演算子を使うと取り出すことができる。
  • 「アドレスを保存するための変数」があり、それを「ポインタ変数」という(教科書P.106、重要ポイント及び表7.1)。

この辺りをしっかり理解しておくと、Javaを勉強するときに役立つ。

代入という演算について

  • 「a = b」はbの値をコピーしてaの値にするという操作
  • 「func(a)」とした場合、aの値をコピーして関数にわたされる

値とアドレスとポインタに関するサンプルプログラム

address.c

実行して結果を確かめよう。

ポイント:

  • b: aを変更してもbの値は変わらない。
  • *c: aと同じアドレスなので、aを変更すれば*cも変わる(変わるというかaの別名が*cと言っても良い)。
  • 関数の引数は、値のコピー。

配列を引数とする関数

array.c

実行して結果を確かめよう。

ポイント:

  • 値がコピーされた新しい配列が作られるわけではない。
  • 先頭アドレスがコピーされる。
  • 値がコピーされた新しい配列が欲しい場合は、関数ないで配列を宣言し値をコピーする。

変数の入れ替え

次の実行例と同じになるように、変数の値を入れ替えるプログラムを完成させよう。

元のプログラム: swap.c

大量のデータを扱えますか?

前回のまとめ等

  • 関数
    • 関数を定義するときの書式と意味をきちんと理解する
    • 戻り値(返り値)の型、関数名、引数(仮引数の型と引数名)、関数の本体(処理内容)
  • 前回、説明を省略したもの(そのうち説明する)
    • プロトタイプ宣言
    • 値渡しと参照渡し
    • 再帰呼び出し
    • etc…
  • 課題の解答例

配列を使おう

実行例と同じになるようにプログラムを修正(関数を追加するだけで、元のコードは変更しない)して実行しよう。

BMI算出

元のプログラム: bmi.c

BMIの計算は用意されている関数(calc_bmi)を使う。

三目並べ

三目並べを作ろう。石を同じところに置いた場合のチェックや入力間違いのチェックはしなくてよい。

元のプログラム: tictactoe.c

物足りない人へ

ライフゲームを作ろう。

さらに物足りない人はLangton’s loopsを作ろう。さらに物足りない人はEvoloopを作ろう。

C言語の関数を定義できますか?

前回のまとめ等

  • if
  • for
  • ソースコードの整形(主にインデント)について
    • まともなエディタを使おう。
    • indent、astyle等の整形ツール
  • 課題の解答例

関数を定義しよう

実行例と同じになるようにプログラムを修正(関数を追加するだけで、元のコードは変更しない)して実行しよう。

BMI算出

元のプログラム: bmi.c

身長[cm]は?: 170
体重[kg]は?: 60
BMIは20.761246です。

「170」と「60」はキーボードからの入力。BMIの計算方法はBMIと適正体重(keisanサービス)が参考になる。

任意の範囲の数値の合計を求める

元のプログラム: sum.c

10から40までの数の合計は775です。

パラメータが指定できるFizzBuzz

元のプログラム: fizzbuzz.c

5の倍数のときFizz、9の倍数のときBuzzを表示するFizzBuzzを400以上500未満で実行する
Fizz 401 402 403 404 FizzBuzz 406 407 408 409 Fizz 411 412 413 Buzz Fizz 416 417 418 419 Fizz 421 422 Buzz 424 Fizz 426 427 428 429 Fizz 431 Buzz 433 434 Fizz 436 437 438 439 Fizz Buzz 442 443 444 Fizz 446 447 448 449 FizzBuzz 451 452 453 454 Fizz 456 457 458 Buzz Fizz 461 462 463 464 Fizz 466 467 Buzz 469 Fizz 471 472 473 474 Fizz 476 Buzz 478 479 Fizz 481 482 483 484 Fizz Buzz 487 488 489 Fizz 491 492 493 494 FizzBuzz 496 497 498 499

C言語でプログラムを作成、実行できますか?

プログラミングが身についているか確認しよう

実行例と同じになるようにプログラムを作成、実行しよう。

[課題1] BMI算出

身長[cm]は?: 170
体重[kg]は?: 60
BMIは20.761246です。

「170」と「60」はキーボードからの入力。BMIの計算方法はBMIと適正体重(keisanサービス)が参考になる。

[課題2] 100以上200未満の数のうち、3の倍数でないものを空白区切で表示せよ

100 101 103 104 106 107 109 110 112 113 115 116 118 119 121 122 124 125 127 128 130 131 133 134 136 137 139 140 142 143 145 146 148 149 151 152 154 155 157 158 160 161 163 164 166 167 169 170 172 173 175 176 178 179 181 182 184 185 187 188 190 191 193 194 196 197 199

[課題3] 200以上300未満でFizzBuzz、空白区切

3の倍数の時に「Fizz」、5の倍数の時に「Buzz」と表示する。ただし、3と5の両方の倍数の時には「FizzBuzz」と表示する。3もしくは5の倍数でない時にはその数字を表示する。

Buzz Fizz 202 203 Fizz Buzz 206 Fizz 208 209 FizzBuzz 211 212 Fizz 214 Buzz Fizz 217 218 Fizz Buzz 221 Fizz 223 224 FizzBuzz 226 227 Fizz 229 Buzz Fizz 232 233 Fizz Buzz 236 Fizz 238 239 FizzBuzz 241 242 Fizz 244 Buzz Fizz 247 248 Fizz Buzz 251 Fizz 253 254 FizzBuzz 256 257 Fizz 259 Buzz Fizz 262 263 Fizz Buzz 266 Fizz 268 269 FizzBuzz 271 272 Fizz 274 Buzz Fizz 277 278 Fizz Buzz 281 Fizz 283 284 FizzBuzz 286 287 Fizz 289 Buzz Fizz 292 293 Fizz Buzz 296 Fizz 298 299

詳細はFizz Buzz (Wikipedia)を参照。

その他

プログラムを作ってみよう。