2024年11月27日 第11回

  1. 今回の構造体の演習を通して,
    2通りの宣言方法があることがわかりました.
    しかし,
    これらstructとtypedefはどう使い分ける必要があるのでしょうか.

    処理は一緒です.また,typedef自体は構造体に限らず新しく型を定義するために用いることができます.

  2. 今回の演習では,
    構造体や別ファイルを参照して関数を用いる問題がありました.
    異なる型を1つにまとめられるのは非常に便利で,
    読みやすくて良いと思いました.
    これらを用いて可読性の高いコードを書いていきたいです.

    そうですね.大切なところだと思います.

  3. 今回の課題では前回の内容があまりまだ理解できていない自分にとっては難しかったが調べていくうちにわかるようになっていった.
    これからも続けて行きたい

    演習を通じて理解してくれたら良いと思います.

  4. 構造体によって複数のデータを整理できることを理解した.
    まだその利点を理解しきれていないが,
    大量のデータの処理には必要だと感じた.

    まとめることができますが,この考え方はオブジェクト指向につながります.

  5. 構造体を使うことで今までより簡潔にコードを示すことができ,
    とても便利だと思った.

    よろしいと思います.

  6. 何か1つのものに属している情報をひとまとめにできたら見やすそうだと思っていたが,
    今日の内容でそれが可能であることを知った.
    課題7では分割した複数のファイルをコンパイルすることに初めて挑戦したが,
    前の授業のスライドを見つつ無事に完成させることができた.

    それはすばらしい.

  7. ファイルの分割でかなり手間取ったが最終的にはコンパイルできた.
    大人数で開発したり,
    大規模なコードを作成するときは分割すると便利だろうと感じた.

    そうでうすね.分けることができるようになっておくのは重要ですね.

  8. ファイル分割からのコンパイルで-cでそれぞれoファイルにして-oで結合する手順を忘れていて手間取った.

    思い出しましたか?

  9. 先輩が就職した時に役立った言語の一例としてshell scriptを挙げていらっしゃいましたが,
    明確な進路が決まっていない人に対して,
    C言語の次に学ぶのにおすすめな言語などあったらご教示いただけると幸いです.

    まずはCだけでも良いと思いますよ.どうしてもというならC++とか?

  10. 今回は構造体について理解することが出来ました.
    大きなコードを書くときには必須な技術だと感じたので,
    理解を深めていきたいです.
    課題2と課題3では同じ出力を得るのに,
    コードの書き方によって課題3の方がすっきりしたコードに見え,
    メモリ数も少なかったので,
    どのような課題でもこのような効率的なコードを書けるようになっていきたいと思います.

    そうですね.工夫するのは大切かなと思います.

  11. 今回の講義では,
    変数をまとめて新しい型にできる構造体の使い方を身につけることができました.
    課題7の,
    複数のファイルで関数を管理するという段階で,
    コンパイルエラーが多発し,
    しばらくどうやったらいいかわからなくなりましたが,
    何とかできました.

    エラーメッセージをみていますか?

  12. 今回は構造体についての演習を行いました.
    以前オブジェクト指向言語に少し触れたことのある私としては,
    構造体はクラスに近い(恐らく概念の登場順序としては構造体の方が先)と感じ,
    比較的すんなりと理解することができました.
    また課題7で初めてファイルを分割しましたが,
    課題6以前で大枠ができていたにしても全体の構造がわかりづらく感じました.
    一からファイルを分割してプログラミングを行うとなると,
    フローチャートはほぼ必須だと思いました.

    その通りで,講義の冒頭でも説明しましたが,
    某C社に勤務するみなさんの先輩は必須だそうです.

  13. 構造体と,
    過去に学んだ配列などを含めた演習に取り組めた.
    課題7で,
    ファイルを分割してプログラムを書く方法を用いたが,
    どのようなメリットがあるのか気になった.

    講義でも述べたと思いますが,複数で開発する場合,
    個人でもよく使う関数がある場合など,メリットですね.

  14. 構造体とポインタを組み合わせて扱う過程で,
    いつアドレス演算子をつけて,
    いつ間接参照演算子を用いるのか混乱してしまったが,
    演習を進めるうちに頭の中で整理されて,
    うまく扱うことができるようになった.

    よろしいと思います.

  15. 最初は理解するのに時間を要したが,
    慣れてくるとめっちゃ便利なことに気づき,
    いろんなものに使えそうだなと思った.

    そうですね.便利ですよね.

  16. pairやtupleなどを使っていたため,
    今回のような自分で形を定義する構造体は馴染みはあった.
    課題も順調に終わらせることができた.
    コメント入力欄の上にHTMLの終了タグのようなボタンがあり,
    講義前にHTMLである的なことを伺って,
    その謎は解けました.
    前期から先生が改行するなとおっしゃっていたのはbrが入るからでしょうか.
    少し関係の無い質問ですが興味があったのでよろしければご回答ください.

    改行するなとは言っていないと思いますが,次回触れましょう.

  17. 今回の課題では,
    以前に少しだけ触れた「ファイルの分割」を行う課題があった.
    これまではファイルを分割して作成することがなかったのであまり気にしていなかった,
    いざやろうとするとやり方が分からず,
    過去の資料から探してくる羽目になってしまった.
    そのため,
    資料を探さなくてもパッと思い出せるよう,
    講義で扱った内容は欠けることなくしっかりと復習するべきだと感じた.

    資料をみても良いと思います.

  18. 今回の課題はスムーズに進めることが出来た.

    よろしいと思います.

  19. 今日は主に構造体について触れた.
    今回の内容は今までのものと比べると断然に難しく,
    理解するのに少し時間を要してしまった.
    だが,
    慣れてみると意外と使いやすく,
    配列よりもいろいろな情報量を格納することができるため便利に感じた.
    また,
    本講義の演習課題の7では初めてファイルを分割して統合した.
    かなり前の授業で振れていたので忘れていたが,
    やってみると楽しかった.
    また,
    コンパイルの作業が少し面倒だった.

    そうですね.慣れることは大切ですね.

  20. 今回の講義では構造体をやりました.
    最初の方の課題はあまり苦労せずに取り組めましたが,
    関数が絡んでくると急に出来なくなりました.
    ですので,
    しっかり,
    関数の定義や使い方の部分を復習したいと思います.

    分からなければ質問してください.

  21. 構造体を使うことで複数の要素をまとめて1つのオブジェクトとして扱うことができるので,
    プログラムの設計の幅がより広がったように思えた.

    そうですか.それはすばらしい.

  22. 今日の内容は少し難しいと感じていましたが,
    理解すると簡単に進める事ができたのでよかったです.
    kadai7で少し時間がかかってしまったので,
    復習を頑張ろうと思いました.

    理解できているようですね.この調子で.

  23. 構造体を用いるとデータを自分の用途に合ったように区分できとても便利だなと感じた.
    また,
    以前の課題で自分が何をどこに書いたか分からなくなってしまうことが多々あったが,
    構造体とvoid関数を両方用いると,
    main関数を見たときにどの順番でどんな処理を行っているのかひとめで分かり,
    作成する時だけでなく後から見たときもとても分かりやすいなと思った.
    ヘッダーファイルは理解すれば簡単だったが最初原理を良く分かっておらず少してこずった.

    でも理解できたようですね.よかったと思います.

  24. 本日の課題を通して,
    ポインタを使う場面は多いと感じました.
    課題についての質問なのですが,
    課題でその回で習ったことを必ず使ってコードを書かなければいけないのでしょうか.
    例えば,
    前回は配列とポインタについての課題でしたが,
    課題7ではポインタを使わないで,
    実行することができました.

    指示されていたら,それに従ってもらうので良いと思います.

  25. 今回の演習問題で初めてファイルを分割しました.
    ちょっと難しかったですが,
    分割した方がわかりやすいし,
    修正しやすいと感じました.

    すばらしい.その通りですね.

  26. 今日は構造体について学んだ.
    はじめにまとめて宣言しておくと別の関数では省略してかけて便利だと感じた

    うまく使ってください.

  27. &をつけたりなど色々な注意点が多く,
    しょうもないミスが多発してしまい大変だった.

    コンパイルエラーでしょうかね.

  28. 扱っている変数が記憶場所を示しているのかアドレスを示しているのか混乱することが多かったです.

    落ち着いて考えましょう.

  29. 構造体で情報をまとめて扱えることや,
    使い回せることがとても便利だと感じました.

    便利ですね.

  30. 構造体を用いることで,
    多くの変数を必要とする複雑な処理を,
    少しの変数だけで簡潔に記述できるようになり,
    プログラミングがより効率的に作成できると学ぶことが出来た.

    よろしいと思います.

  31. 今回は構造体について学びました.
    演習問題を通してアロー演算子についての理解を深めることができたと思います.
    また課題8で複数のファイルをリンクさせることについての復習ができました.

    よろしいと思います.

  32. 教科書のページの大部分が授業で終わっていると思うのですが,
    これはC言語を使っていく上での大体のことを学び終えたということなのでしょうか? それともこの教科書はやさしいCなのでこの教科書に書かれていることはごく一部であり,
    さらにレベルの高いところまで学んでいかなければならないのか教えていただきたいです.

    大体のことというよりも基本的な部分だけですね.
    まだまだ先はたくさんあります.

  33. 今回の課題は前ほど難しいではないが,
    実際に演習をやることで,
    構造体の便利さを知るようになった

    便利なのでうまく使ってください.

  34. 今回の課題を通して,
    構造体は自分で自由に型を決定するので,
    とても便利だなと思った.
    プログラムできることの幅がとても広がった気がした.

    確かに広がりますね.

  35. 資料や教科書を参考にして,
    構造体について理解することができた.
    講義冒頭のお話は,
    大変ためになった.
    自分も学んだことを生かせるようにしようと思った.

    ぜひうまく使えるようになってください.

  36. 今回の講義では主に構造体について学んだ.
    今回取り組んだ演習課題7にて行った,
    複数の異なるファイルごとに作成された関数のmain関数が書かれているファイルへの導入・そして実行は,
    今までの演習では実感することが無かったが実際に仕事でプログラミングを行う際には極めて身近であろう,
    コードの作成の分担のイメージを実感できるもので面白かった.
    講義の最初に(というか前々から常々)教授がおっしゃっていた,
    C言語は他のコードを書くのに応用できる最も基本的なプログラミング言語であるという言葉を聞き,
    まずはC言語を完璧にマスターすることから始めようと改めて思った.

    そうですね.それが一番だと思いますよ.

  37. 課題7で実際にファイルの分割をしてみることで,
    長いコードになる時は分けて書いた方がいいことを実感しました.

    わかりやすくなりますね.

  38. 直近2回の理解が浅く,
    少し課題をこなすのに時間がかかってしまった.
    課題を始める前にしっかりと勉強しなおせたので理解を深めることができたと思う.

    よろしいと思います.

  39. 今回の課題は個人的に前回の最後らへんの課題に似ている部分があるなと感じ, 結構要領よく進めることが出来た. ここまでの演習を通して似たような課題であったり, 出力結果は同じだけど使う関数が違うといったことが何回かあり, 実際使うときにもその場その場に合わせてどのコードを書いていくことが一番いいのかを取捨選択できることは大切だと思った.

    要領よくですか...大丈夫ですかね.日本は.

  40. 今回もしっかり解くことができた.

    よろしいと思います.

  41. 今回は構造体について学びました.
    オブジェクト指向と関数型の違いの理解を深めることができました.
    オブジェクト指向ではクラスを用いて,
    オブジェクトとメソッドを用意する一方,
    関数型では,
    構造体と関数を作っていることがわかりました.
    異なる言語の書き換えをやってみたいと思いました.
    また,
    外部ファイルの読み込みyコンパイルの手順についてリンカについても学習できました.

    色々と知っているということがわかりました.

  42. 今回の動画は1本であり時間も30分に満たないため容易にできると思っていましたが, 前回までの複雑なもの(ファイルの分割など)も課題に含まれており, そうは問屋が卸しませんでした. 新しいことだけ覚えても何もできないので復習, 特にフローチャートに力を入れたいです.

    まずは,どのように問題を解くかということをまずは考えるのが一番ということだと思います.

  43. 今回の課題ではファイルを分割する必要がありましたが,
    初めてだったので難しかったです.
    今回学んだ構造体はfor文で繰り返し構造を作るときに便利そうだなと感じました.

    そうですね.使われますね.

  44. 本日は構造体の宣言について学びました.
    また,
    Kadai7では関数やヘッダーファイルを個別的に生成しコンパイルすることをしました.
    コンパイルする際にはヘッダーファイルの経路を明示することと関数プロトタイプ宣言が重要だと気づきました.

    気づいたのであればよろしいと思います.

  45. 課題8で,
    なぜ同じ出力になるのかの理由で苦戦しました.
    分かっているつもりでしたが,
    言語化が全くできず,
    理解の浅さを実感しました.

    わかったつもりになるのが一番危ないですね.

  46. 今回は複数のデータをまとめて一つのものとして扱う構造体について学びました.
    演習の中で,
    調べていると,
    関数の引数として構造体を用いる際,
    ポインタを使わず値渡しとすると,
    構造体の中のすべてのメンバーをコピーして新しい構造体を作り,
    その新しい構造体を関数内で利用するという仕様となっていることを知りました.
    このような動作だと,
    構造体がとても大きいデータサイズになったとき,
    関数の引数として値渡しを使うことはできず,
    ポインタを使うしかないのでしょうか?

    通常は,構造体自体もポインタで扱うと思います.

  47. 構造体は使いやすいと思った.
    オブジェクト指向に近いとおっしゃっていたので,
    それも学んでみようと思う.

    近いというか,そのための基本というか,そんな感じだと思います.

  48. 今回の授業では,
    構造体について学んだが前回,
    前々回学んだポインタの内容も多くでていて良い思考の整理になりました.
    ヘッダーを用いたのは初めてだったので,
    難しかった.

    できましたか?

  49. 構造体のポインタを関数の引数とする課題に少し苦戦したが,
    演習を通じて構造体だけでなくポインタについての理解がより深まった.
    課題7がまだ出来ていないが,
    ファイルを分割する方法はかなり重要だと思うので演習と復習を十分に行い理解したい.

    まずは復習ですかね,

  50. 普通に構造体を宣言したらstruct Car型になるけど,
    typedefを使ってCar型にしているというイメージは重要だと思った.

    どちらでもよいですが,どのような型なのかをイメージしやすいかもしれませんね.自分で作ると.

  51. 今回初めて定義した関数を別ファイルにするやり方をした.
    やる前は難しそうだと思っていたが案外すんなりと終わらせることが出来てよかった.
    今回またポインタなどが頭の中でごちゃごちゃになってしまったためもう一度復習しようと思った.

    まずは落ち着いて考えてみるので良いと思います

  52. 今日は分割ファイルについて復習をすることが出来た.
    ずいぶん前に習ったことでもすぐ引き出せるように,
    教科書にメモしておきたいと思った.

    メモはたいせつですね.教科書にかくのがよいかどうかは微妙ですが...

  53. 複数のファイルをまとめてコンパイル?するということに時間がすごくかかった.
    実際,
    仕事をしていくときに一人だけで全てのコードを書くわけではないので複数のファイルをまとめてコンパイル?ビルド?することはできておかなければいけないと感じた.

    その通りかと思います.

  54. ポインタの使い所だったり,
    関数の呼び起こしなども課題で試行錯誤しながら学ぶことができました.

    よろしいと思います.

  55. 構造体について習いました,
    関数を使うときに非常に便利だと感じました.

    便利ですね.

  56. 配列と構造体の間にある,
    複数の値を一括して扱うことができることなどの共通点,
    配列は同一の型のみで集合扱う一方,
    構造体はメンバごとに異なる型でも扱うことができるなどの相違点,
    それぞれを整理することが理解を深める一助となった.

    その通りですね.使ってください,

  57. 今回の課題7でファイルの分割をしたが,
    第8回で扱ったにもかかわらず忘れてしまっていた.
    演習課題で使っていないものの復習を軽んじてしまったためだと考える.
    このようなことが再び起きることが無いよう反省し,
    改めて学習を進めたい.

    まずは復習してもらうのが良いかなと思います.

  58. 全体的に,
    ポインターを用いればmain関数から呼び出せることがわかった.
    構造体を用いることで,
    #defineと同じように変数が定義されたように用いることができ,
    とても便利であると感じた.
    また,
    ファイルを分割する際に,
    コンパイル方法が少し異なることから少し戸惑ってしまい,
    時間がかかってしまった.

    異なるわけではなくて,分割したので,まずは個別にコンパイルする必要があるということです.

  59. 前回の課題はかなり苦戦したが,
    本日の課題はすらすらと解くことが出来て,
    少し安心しました.
    (もちろん,
    ポインタがしっかりとできるようにならないといけないので,
    安心しすぎてはいけませんが...).
    また,
    本日の冒頭で触れていたシェルスクリプトについて興味が出てきたので,
    冬休みや春休みの間はそちらの勉強をしてみようと思いました.

    自分で勉強してみると面白いと思いますよ.
    例えば,前期のCS序論のRSAのカラクリで紹介した表も,UNIXでの
    bc とシェルスクリプトを使って作成しました.

  60. 構造体の意義について理解することができた.
    今まで習ってきたことは全て繋がっているので,
    抜けがないように学習していきたい.
    授業内容とは関係がないが,
    ヘッダーファイルの中身を見てみたいと思った.

    大切ですね.ぜひ,どのようになっているかを確認してください.

  61. 構造体という概念は,
    一目でわかるコードを書くためにとても便利だと思いました.
    可読性を上げるため,
    構造体や関数の名前を工夫することも大切だと考えました.

    それが大切ですね.

  62. 前回よりはわかりやすくコードの意味を理解しながらしっかり課題をやれたように感じた.
    またメンバは一つの,
    ことがらだけを表すのであれば少し効率の悪いように感じたが,
    逆に複数になった時にはメンバがあったほうが断然楽に感じた.

    その通りかなと思います.

  63. 課題では取り上げられていなかったが,
    実際にビットフィールドを変えることができることをコードを作ることで体感し余分なメモリを排除することがとても大切だと気づいた.
    また,
    同じ処理を全対象に行っていく上では配列を使うこと,
    関数を他に作っておきポインタを使ったメモリ渡しすることができるようになることが必須だと改めて実感した.

    よろしいと思います.

  64. 構造体の概念自体は比較的理解しやすかったが,
    構造体をポインタ変数を用いてコード内で使いこなすにはまだまだ練習が必要だと思った.
    池口先生の仰る通り,
    C言語を理解することは長期的にみてレバレッジが効く学習だと思うので確実に習得していきたい.

    まずは基本的な部分を理解するのがないと,砂上の楼閣ですね.

  65. ファイルの分割に苦戦してしまった.

    分からないところは質問してください.

  66. 同じ出力結果になるコードをいくつか書きましたが,
    それらの使い分けがまだ完全には理解できていません.
    とりあえず,
    今の段階では様々な書き方を知ることが大事だと思いました.

    そうですね.まずは知ることから始めましょう.

  67. 今回は構造体について学習しました.
    複数人のデータなどの整理にとても役立ちそうなツールで,
    実際に使う場面が想像できるような内容でした.
    今回の課題は,
    特定のプログラムについて改良していくようなもので,
    実務でのコード作成過程を垣間見ているように感じました.

    そう感じたのであれば,それはすばらしい.

  68. 構造体を使うことで異なる型のデータを一つにまとめて管理できるのが便利だと感じた.
    また,
    ポインタと組み合わせることで,
    プログラムがさらに柔軟に書けるようになるのが面白いと思った.

    そうですね.面白くなりますね.

  69. 今回の課題では異なるコードから同じ内容を出力した.
    同一のことを表すにも異なる方法があり自分がしたいことによって使い分けられるようにしていきたい.

    うまく使い分けてください.