*応用プログラミング演習 2015年度 第1回 [#d5bb394b]

//&color(#ff0000){工事中};

#contents
**演習のすすめ方 [#l5135b5b]

[[AProg/2015/ex00]] を参照してください.


**課題A(self) 締切: 今回の演習終了時 [#kadaiA]

課題A-3まで全部できたらTAさんに申し出てください.

***課題A-1 講義資料 Q5 [#efe541a1]

今日の講義資料のQ5をやりなさい(紙の上で考えればよい).

&color(white,blue){check}; 右のリンク先に答えがあります.
[[本当に見ます?>https://gist.github.com/takatakamanbou/c0f7dea1fd546e61120e]]
***課題A-2 講義資料 Q8 [#y9a15738]

今日の講義資料のQ8をやりなさい(紙の上で考えればよい).

- &color(white,blue){check}; 以下に白字でヒントが書いてあります.マウスで文字列を選択すると見えるでしょう.
-- ヒント1:  &color(white){f1 を呼ぶと x の値が変化してますね};
-- ヒント2: &color(white){f1の3つ目の引数は番地を渡してますね};
- &color(white,blue){check}; 右のリンク先に答えがあります.[[本当に見ます?>https://gist.github.com/takatakamanbou/69c289701e0a62c56d41]]
- &color(white,blue){check};  関数を呼び出す際に書く引数(括弧の中に書くもの)を「実引数」といい,関数を定義する所で書く引数を「仮引数」といいます.この例では,関数 f1 に渡される実引数は 1.5, 2.0, &x の3つ.一方,関数 f1 の定義では,1つ目の引数を x, 2つ目を y,... という名前で扱うことにしています.実引数と仮引数に同じ名前の変数を使う必要はないことに注意.
***課題A-3 講義資料Q9 [#d295e294]

今日の講義資料のQ9をやりなさい(紙の上で考えればよい).

&color(white,blue){check}; 以下に白字で答えが書いてあります.
-f01.c: &color(white){ウ: 以下の3つで選ばれなかったから};
-f02.c: &color(white){ア: 第2引数が浮動小数点数 ==> 第2引数としてdouble型を受け取ってるのは ア だけ};
-f03.c: &color(white){イ: main中で関数 f の戻り値を受け取ってる ==> 戻り値のある関数は イ だけ};
-f04.c: &color(white){エ: 第2引数で番地を受け渡ししてる};

&size(9){注: C言語の規格上は,上記の答えの組み合わせ以外にもコンパイル&実行可能な解がいくつかあります.しかし,「最も適切な対応づけはどのようになるか」ですので...};

&size(9){注: コンパイル&実行の上では ア には何も問題がありませんが,人間の感覚ではおかしな所があります.さてどこでしょう → &color(white){ s + t と s - t }; };


**課題B(self) 締切: 今回の演習終了時 [#kadaiB]

この課題は以下の通りです.
&color(#0000a0){以下の文だけではディレクトリの作成の仕方やEmacsの使い方がわからないという人は,次のページを参照しなさい:}; [[Docs/4UNIXBeginners]]

+コンソールを開き,mkdir コマンドを使って,ホームディレクトリの下に aprog2015 というディレクトリを作りなさい.
--&color(white,blue){check};  mkdir の使い方を忘れたひとは [[Docs/4UNIXBeginners]] へ
+aprog2015ディレクトリに移動し,emacsを用いてこの中に ex01b.c という名前のファイルを作りなさい.このファイルの内容については,以下の指示に従うこと
--&color(white,blue){check}; cd でディレクトリを移動してから emacs ファイル名  &
--&color(white,blue){check};  cd の使い方を忘れたひとは  [[Docs/4UNIXBeginners]] へ
--次の実行例のような動作をするプログラムとする
#pre{{
2つの数を入力してね: 7 2                ← 7 と 2 はキーボードからの入力
7 の3倍から 2 を引くと 19 やで
2つの数を入力してね: 99 100             ← 99 と 100 も.以下同様
99 の3倍から 100 を引くと 197 やで
2つの数を入力してね: 54321 12345
54321 の3倍から 12345 を引くと 150618 やで  ← 同様の動作を3回繰り返したら終了する
}}
--ただし,次のような仕様の関数を定義してそれを用いること,&color(red){プロトタイプ宣言を忘れずに};
---関数名は sub3
---引数は2つ,いずれもint型
---戻り値はint型
---(1つ目の引数の値)の3倍から(2つ目の引数の値)を引いた値を返す
--上記の仕様からわかるように,&color(red){この関数中で printf() を呼んで出力するのではない};
+ex01b.c をコンパイルして動作を確認,ただし,&color(red){実行形式のファイル名は ex01b とすること};.
--&color(white,blue){check}; コンパイルの仕方忘れたひとは講義資料参照

**課題C(TA) 締切: 今回の演習終了10分前  [#kadaiC]

課題C-1とC-2の両方ができたら [[callta>http://callta.math.ryukoku.ac.jp/]] してください.&color(#0000a0){「関数の定義を紙に書け」ですからプログラムのソース全体を書けと言っているわけではない};ことに注意.
課題C-1とC-2の両方ができたら [[callta>http://callta.math.ryukoku.ac.jp/]] してください.&color(red){「関数の定義を紙に書け」ですからプログラムのソース全体を書けと言っているわけではない};ことに注意.

***課題C-1 関数 sum [#lf50e1f4]

次の仕様の関数の定義を紙に書きなさい
-関数定義の1行目は次の通り
 int sum(int a[], int n)
-配列aの先頭からn個の値の合計を求め,それを返す
-関数の定義の中にprintf()は含まれないはずです

***課題C-2 関数 ほげ [#a4e70e46]

以下のような関数の定義を紙に書きなさい
-関数名は自分で適当に決める
-引数は課題C-1の関数sumと同様とする
-渡された配列の要素中に7の倍数があったら,その数を999倍する
-関数の定義の中にprintf()は含まれないはずです

**課題D(TA) 締切: 次回演習開始直後  [#kadaiD]

***課題D-1 ex01sum [#we1ec3a3]

課題C-1の関数を用いて,次の実行例のような動作をするプログラムを作りなさい.
ただし,次のようにすること
-ソースファイル名は ex01sum.c 実行形式のファイル名は ex01sum (&color(Red){今後は特に指示がない限り,実行形式のファイル名はソーフファイル名の拡張子を取り除いたものとしてください};)
-配列の大きさは 100
-最初にキーボードから入力されるデータ件数は,1以上100以下と仮定して構わない(範囲外の件数が入力されたときのエラー処理などはしなくてよいということ.余裕があれば,エラー処理をどうするとよいか考えてみるとよい)
#pre{{
何個?: 5    ← 5 はキーボードからの入力
0番目: 1     ← 1 はキーボードからの入力,それ以外はプログラムの出力.以下同様
1番目: 2
2番目: 3
3番目: 4
4番目: 5
合計は 15
}}

***課題D-2 ex01x999 [#zdd5e828]

課題C-2の関数を用いて,次の実行例のような動作をするプログラムを作りなさい.
ただし,次のようにすること
-ソースファイル名は ex01x999.c
-配列の大きさは 100
#pre{{
何個?: 5
0番目: 1
1番目: 2
2番目: 21
3番目: 49
4番目: 343
0番目は 1    ← ここから先は全部プログラムの出力
1番目は 2
2番目は 20979
3番目は 48951
4番目は 342657
}}
**課題S(おまけ) 締切: 次回演習開始直後 [#kadaiS]

次のことをやりなさい.おまけ課題のチェックは高橋が担当しますので,直接高橋に声をかけてください.

- [[Docs/ポインタの話]]のQ2(初級)の2番をやって説明しなさい
- 2011年2月実施の「2010年度数理情報学科学力認定試験」の専門Iの問IVのプログラムを作りなさい.
学力認定試験や大学院入試の過去問は[[こちら>https://www.math.ryukoku.ac.jp/wiki/index.php/%E5%A4%A7%E5%AD%A6%E9%99%A2%E5%85%A5%E8%A9%A6%E5%95%8F%E9%A1%8C]]にあります(全学認証のユーザ名とパスワードでログインする必要があります).

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS