2025年12月03日 第11回
最近の授業ではポインタやメンバ,
関数など,
置換して考えることが出来るようになるコマンドが多く,
よくこんがらがってしまった.
違いや特徴などが見た目も似ていることから分からなくなってしまいがちになり,
よくエラーで*や&が足りないと出たりした.
今回習った構造体は,
使用しなくても出来るが,
コードを整理して見やすくするために用いることがわかった.
演習問題をやることによって理解は進むと思います.
最初は配列と何が違うのかわからなかったが,
配列と違って,
型を別々に指定したものをまとめて1つとして扱うことができることが便利なのだとわかった.
配列とは違いますね.理解できましたか.
構造体を使うことで,
関連するデータを整理して記述できることが分かりました.
特に構造体を関数の引数として渡す方法や,
構造体の配列を使う方法は,
より複雑なプログラムを書く上で必須の知識だと感じたので,
課題を通してしっかり身につけたいです .
構造体は,その先にあるオブジェクト指向などを理解するためにも
重要となります.
今回の内容は比較的理解しやすかった.
構造体はあとからコードを見返したときにわかりやすくする意味で非常に重要だと感じた.
課題では課題7の,
複数のファイルに分割する方法で苦戦した.
より複雑で長いコードを書くようになったらファイルで管理することも必要になってくると思うのでこちらもしっかりと扱えるようになりたい.
そうですね.うまく使ってくれたらと思います.
今回の演習では,
構造体について学んだ.
構造体は一度宣言したら,
配列と組み合わせたり,
関数の中で使用したりと奥が深いと思った.
現時点では,
変数を群としてまとめて扱うことができるものとしてしか理解できていないが,
これからさまざまな使用の仕方を学びたい.
その通りです.関数の考え方と併せて,次に繋がりますね.
今回の課題では構造体について学べた.
構造体を活用することで複数のデータをまとめて管理でき,
読みやすいコードを書くことができた.
特に,
関数の引数として扱うことで,
一括で情報を渡すことができる点が便利だと感じた.
素晴らしい.この調子でお願いします.
本日は構造体の様々なことを学びました.
あるファイルを.hファイルで参照し,
それをincludeすることで別ファイルにも同じ関数を持ってこられるということが理解できてよかったです!.hはpythonでいうライブラリのようなものだったんですね.
C言語のヘッダーファイルは関数には限らないのですが,
まぁ,大雑把にいえば同じようなものかもしれませんね.
課題7で,ファイルをまたいで関数に構造体を引数として与えることが出来ず,構造体のメンバを引数として与えるような形となってしまった.私の実装力不足なのか,実際には構造体を引数として与えられるのか知りたい.その際(readdataの際)にポインタによるデータの受け渡しを用いる必要が出てきたためこれまでの学習の有用性を感じた.
もちろん引数として与えることができます.
構造体のようなものを疑似的に使っていたことがあったので,
(例えばcar_number[] , car_name[][100]という配列を用意しておく),
それを楽に管理できて便利だなあと思った.
また課題7でファイルを分けたが,
ファイルを分けることによって処理の時間がどれくらい変わるのか(もしくは変わらないのか)が気になった.
構造体のようなものと言えるのですかね...
今回の演習では主に構造体について取り扱った.
構造体の仕組み自体はシンプルで理解しやすかったが,
関数やポインタが絡むとコードを考えづらかった.
また,
課題7ではファイルの分割を行ったが,
前の講義で扱ったとはいえ,
実際にやってみるのは初めてだったため,
こちらもなかなか悪戦苦闘した.
理論と実戦は違いますね.
>今日の講義では,
構造体の基本的な扱い方と,
構造体を関数と組み合わせて使用する方法について学びました.
構造体の宣言やメンバへのアクセス方法は理解しやすく,
pc->memberと(*pc).member が同じ意味になる点もよく分かりました.
また,
構造体の配列を使って複数のデータを管理する方法もスムーズに理解できました.
一方で,
構造体を複数ファイルに分割して管理する部分はまだ十分に理解できていません.
特に,
ヘッダファイルの役割や #include の仕組み,
複数ファイルをコンパイルするときの流れが曖昧で,
自分で一から組むには不安があります.
不明なところは質問してもらうのが一番良いと思います.
本日は構造体とポインタを扱いました.
わざわざ(*ポインタ名).メンバ名のように書かなくても,
アロー演算子を使えば ポインタ名->メンバ名 のように,
何も挟まずに参照してくれるのはありがたいと感じました.
うまく使ってもらうと良いですね.
構造体を使うとデータを一つにまとめられるのでコードが整理されて分かりやすかった.
その通りですね.うまく使ってください.
課題7のようなファイルの分け方をタイミング良く学んでいたところだったので,
期せずして演習をすることができてよかった.
分割することでコードが見やすくなる一方で,
少し手間が増えるのでメリットデメリットを踏まえて適宜使い分けができるようにしたい.
そうですね.使いわけは大切かな.
ドット演算子を用いるべきなのかアロー演算子を用いるべきなのか一瞬こんがらがったが,
最終的にはよく理解できたので良かった.
理解できたのであれば良いと思います.
今日の内容はそのものに関する定義づけが簡単にできて,
なかなか便利なものだなと思った.
ポインタを初めて使った時には使うところが限定的かなと思ったけれど,
回がたつほどこれがないとやっていけなくなってきていて,
まだわかっていないところがあるので,
しっかり理解して使っていきたいと思う.
徐々にできるようになっていてとても素晴らしい.
構造体や関数の理解が深まり,
基礎的な内容をを実践的に学べてよかった.
よろしいと思います.
構造体に関する知識は容易だったが,
やはりポインタと絡んでくると難しかった.
今日までは,
単なる値を読むだけならコピー渡し,
関数などを用いてデータを更新したいときはポインタ渡しで処理するというざっくりとした分類をしていたが,
この考え方で今後も大丈夫かが心配である.
基本的には問題ないでしょう.
理解は難しかったが,
使いこなしたときの利点を課題を通して実感できたため良かった.
実感できたのは大切ですね.
期末テストの日程が告知され,
改めて最初のほうから少しづつ復習をしていく必要があると感じた.
また,
課題7ではプログラムをファイルごとに分ける必要があったが,
実際にプログラムを組むときに1つのファイルに関数をそれぞれ宣言するときと,
ファイルごとに分けるときの違いが何か気になった.
何を違いとして考えているのかよくわからないので,
直接質問してください.
本日の講義であつかった問題は自分の力で解ける問題が多かったです.
問題を解けた時の快感が忘れられないです.
しかし到達度評価がとても心配です,
,
,
,
そろそろ全体的に見直しを始めていきたいと思います.
ファンクラブ入りは避けてください.
ファイルの分割で戸惑う場面もあったが,
何とか形にすることができた.
プログラミングを始めた頃と比べると,
理解度が向上してきたように感じる.
ファイルの分割で戸惑う場面もあったが,
何とか形にすることができた.
ただ,
理由に確証はないものの,
タイピング速度の影響なのか,
序盤の段階から周りと進捗に差が開いてしまうことがある.
遅いということ?それとも回ごとい時間が違うということ?
2次元配列で,
たとえば数値と文字列をセットにしたいとき複数のデータ型で定義できないため良い方法はないかと思っていたが,
まさに構造体がうってつけだと感じた.
良かったですね.
今日の課題は簡単だったが,
まだポインタの内容を完全に理解しきれていないので,
テストまでに完璧にしたい.
完璧にしてください.期待していますよ.
今回は量も難易度もちょうどよく取り組みやすかった.
値渡しとポインタ渡しの使いどころの違いにも慣れてきた.
素晴らしい.この調子でお願いします.
今回はそこまで苦労することなく課題を終えることができた.C言語で構造体や一見難解だったアドレスを学んだことで,他のプログラミング言語への学習のハードルが下がったように思える.とりあえずは,C言語でおろそかになっている部分を完璧にしていきたい.
おろそかになっている部分はどこですかね.まずはそれが何かを明らかにすべきかと.
pc[0].capacity のような書き方ででメンバーにアクセスできる理由の説明に手間取った.
配列がポインタであるという意識が希薄であったことが苦戦の原因であると思うため,
今後配列を扱う際には意識するようにしたい.
手間取ったというのは,理由がわからなかったということ?
今回の演習では,
構造体について学んだ.
構造体を用いることで異なる型の値をまとめて扱えるということが理解できた.
また,
課題7でプログラムを複数のファイルに分割した時にヘッダーファイルの書き方やコンパイルとリンクのやり方を知ることができた.
授業もオプション課題を除けばあと1回ということなので,
試験に向けてしっかり復習したい.
よろしいと思います.試験も期待していますよ.
typedefと二通りの表現方法があると学んだ.
しかし,
どちらがどのような時にどれだけ便利かなど類似点,
相違点がまだ完全に理解できていないので数多くの練習を繰り返すことによってそれを体感できるようになりたいと思った.
まずはできるようになるところからですが,できましたか?
3週目にしてやっとポインタのことが理解できるようになってきた.
前回目標としてエラーが出ないようには前よりかは少なくすることができていると思うが,
まだ0回にはできていないので,
このまま徐々に少なくしていくことが重要だと感じた.
理解できるようになってきたのは素晴らしい!
構造体についての仕組みを知ることが出来た.
配列を学んだ時と同じように,
これは複数のデータを扱う際により簡潔に書くための重要なものだと感じた.
今までに作成したコードも今回習った内容で書き換えることが出来そうだと感じたので時間があるときに試して使い方を練習したい.
そうですね.何であっても試してみることは大切ですね.
今日は構造体について学びました.
構造体や関数を利用すれば,
わかりやすくカードを作れるなと思いました.
また,
ファイルなどを別にすることで問題が起きたときに,
どこで問題が起こってるかが非常にわかりやすいなと思いました.
そうですね.関数に分けるということとある意味同じですが,
これはプログラミングそのものの考え方として重要ですね.
アロー演算子の有用性がいまいちピンとこなかったので, 自分で少し複雑な構造体を持つコードをかいて実感しようと思った.
構造体で,ポインタとなると使うことになりますね.
まず,ポインタで宣言するときの有用性がありますね.
ファイルをまたがってプログラミングを行うとき,
ソースコードの記述はいつもと変わらないが,
コンパイルの作業が多く,
大変だった.
そうですね.本当ならMakefileの話をしていたのですが...
次回触れましょう.
今回は関数や構造体の使い回しで対応可能な課題がほとんどであり,
抽象化・モジュール化の威力を実感できた.
また,
私はアロー演算子はあまり使ったことがなく,
これまで(*pointer).memberの形で書くことが多かったのだが,
構造体のメンバ変数のアドレスを取得するときに一瞬戸惑い,
アロー演算子を思い出して書いてみるとすっきりしたので今後は使ってみようと思った.
使ってください.
ファイルの分割の話をすっかり忘れていたので,
復習しながら思い出すことができた.
&,
%,
->などどれをいつ使うか混乱するので早めに復習して試験対策をしたい.
落ち着けば大丈夫と思いますよ.
今回の授業では,
構造体を用いることで,
関数に引数を渡す際の記述を楽にする手法を学習することができました.
ただし,
main関数を分割するということになると,
分割した関数のそれぞれに,
ヘッダーをincudeする必要があるのが少し難点だと感じた.
それ以上の利点がありますね.
構造体変数の場合は「.」,
ポインタの場合は「->」と使い分けるのが難しく,
未だにポインタについてぼんやりとしか理解出来ていないためかなり不安である.
また,
期末も近づいてきていて,
授業の復習をやっぱりしたいなと感じる.
PCを自分で勝手に使える環境になったのが大学生となってからで,
周りと比べてタイピングの遅さや知識の無さがとても気にかかってしまう.
ただ,
日を重ねる毎に成長を微かに感じることが出来ているため,
引き続き頑張りたい.
タイピングのスピードは慣れというか,
いろいろとやっていけば早くなるものなので,
気にする必要はないと思います.
ただ,ある意味技術なので,
正しいポジションで,正しいフォームで行うかは大切ですね.
と言いながら,かなり前dすが,両手とも人差し指だけで,
超高速でタイプするおじさんをみて,
意外に型にハマらずとも行けることもあるのだ...と
感心したことがありますが.
今回の課題はくあまり苦戦することなく理解することができた.
課題7をやったときに別のファイルにある関数を呼び出すことが可能であることを初めて知った.
次回も頑張りたい.
誰でも,何に対しても初めてはあることなので,
今回知ることができて良かったのでは?
次からは使えるようになりますね.
今までの内容を総動員してやらなければならないような課題だった.
また,
特にファイルの分割が数回前にやった内容であまり覚えておらず手こずった.
復習をして今までの内容の理解を深めていきたい.
復習は大切ですので,やっておくと良いでしょう,
今回の講義では構造体の中身をドット演算子で扱う場合と構造体へのポインタをアロー演算子で扱う場合の違いが印象に残りました.
また,
pc->capacity ,(*pc).capacity ,pc[0].capacityが同じになる理由を確認することが仕組みの理解に役立ちました.
一方で,
課題7で行ったファイル内で複数に分割する方法にはまだ慣れていないため,
復習をしていきたいと思います.
方法自体は理解できましたか?
本日の演習では,
構造体をどのように定義するかやどのように扱うかを知ることができた.
序盤はスムーズに進めることができたが,
課題7の別々のファイルの問題が,
ファイルをどのように呼び出すかが分からなかった.
構造体に関しては,
理解を深めることができたと思う.
理解できたのであれば良かったと思います.
今日は提出はまだできなかったけれど,
ソースコード自体は全て書くことができたので良かった.
しかし,
前に講義内で習った.hファイルや関数のリンクの方法を完全に忘れていたので,
よく復習しておこうと思う.
そうですね.うまく行かないときは思い出すためにも復習してもらうのが良いでしょう.
今日の授業も大変ためになった.
第8講で少し出ていたファイルを分割するやり方を使った課題が楽しかった.
main関数が入っているファイルにつらつら書き続けると,
修正の際に目標の関数を探すのに手こずることが多かったので,
ファイルを分けると便利だなと思った.
いつも,
実験レポートを書くときにlatexのファイルがぐちゃぐちゃでpdfを見たときに気づいた間違いを直すのに手こずっていたが,
調べてみると子ファイルに分けられると判明したので,
QOR(quality of reports)が向上する気がする.
今日の授業は大変為になった.
そうですか.ためになったのであれば良かったです.
そうですね.LaTeX でも\input{hoge} とすると,
hoge.tex をその部分に埋め込むことができますね.
実験レポートだとあまり実感しないかもしれませんが,
例えば,卒論だと役立ちますね.
ちなみに,卒論ではうちの学科は卒論だけでなく抄録とよんでいる
4ページのバージョンも提出する必要がありますが,
卒論だけでなく,抄録のスタイルファイルもあるので,
私が作ったものですが,参考文献だけでなく (こちらは普通にLaTeXの相互参照でできる.
引用すると[1], [2] のように番号でひける),
皆さんが発表した自分自身の文献も,[P1], [P2]...というように,
引用できるようになっています.
こちらは通常ではできません.
今回は構造体について学習しました.
関数を指定する際に,
各関数で引数を用いる際に,
構造体はポインタとして渡すべきなのかそのまま渡すべきなのかの判断がまだ曖昧であるので,
復習をして確実に理解したいと思います.
特に,
今回の課題7のようにファイルを分けてコンパイルするものは非常に本格的であり本授業を真剣に取り組む意義が分かったように思えてきました.
ところで,
やさしいCが終わった場合,
次に行うC言語の学習でのお勧めの参考書があれば教えていただきたいです.
どのようなコードなのかをみていないので確かなことは言えませんが,
変数であることには代わりがないので,関数の章,ポインタの章で演習したのと同じようにするので良いでしょう.
質問があればコードを見せてください.
関数ファイルを分割してコンパイルするのは初めてだったので少し手こずってしまったが,
やっていて面白かった.
面白いのは大切ですね.この調子でお願いします.
構造体を用いて複数の情報をまとめて取り扱う方法を学んだ.
また,
単なる変数や配列の場合と同じようにアロー演算子などを用いてポインタを通して構造体を操作できることを学んだ.
理解できましたか.
少しずつ課題の難易度が上がってきているのを実感しているのでこれからも頑張ります
はい,期待しています.不明なところは質問しましょう.
課題7について,
複数ファイルで構造体を共有するもので少し時間がかかった.
ヘッダファイルに構造体定義を置くことで複数の .c ファイルで同じ型定義を共有することができるが,
これを行わずに各 .c ファイルで構造体を複製してしまうと,
後の開発で型が食い違いバグの原因になると調べた.
分かりやすいコメントアウトなども含め,
大規模な開発を見据えたコーディングが大切だと考えた.
コメントは分かりやすく,特に,後から見返して分かるものにすると良いですね.
今日の講義では,
構造体とポインタの関係,
およびそれを利用した関数へのデータ受け渡しについて学んだ.
構造体へのアクセスには複数の書き方があることは理解できたが,
日常的にどの場面でどの表現を使うのが適切なのか,
まだ判断がつかない部分がある.
特に,
配列とポインタの関係が混ざると混乱しやすいため,
より多くの例題で練習したいと感じた.
そうですね.練習が一番です.
今回は構造体について学んだ.
今回も難しく,
時間がかかった.
空いている時間にしっかり自習していきたい.
徐々にできるようになれば良いので,時間をかけて取り組みましょう.
今回の講義では, 構造体について学んだ. まとめて異なる型にする便利さが実感できたのでよかった. 課題7で今までと異なる, 別ファイルの作成をする工程があって戸惑ったが, 落ち着いて考えることでうまくいった.
うまくいったのであれば良かったと思います.
コードが長くなってくると,
関数などはとても楽なものであると感じた.
そうですね.関数は使うようにしてもらうと良いでしょう.
だんだん分からなかった点が分かってくるようになりました.
点と点がつながってきました.
素晴らしい.この調子でお願いします.
ポインタや引数についてまだ理解しきれておらず,
最近の課題に少し時間がかかっていたが演習を通して少しずつではあるがわかるようになってきた.
期末試験もあるので復習しておこうと思う.
分かるようになってきたのであれば,大丈夫ですかね.
今回の演習の問題は比較的簡単であった.
今まで扱ってこなかったヘッダーファイルを扱うことにより,
部品を作り,
それを最後に合わせるというイメージが湧いた.
イメージができましたね.
今回は構造体について学んだ.
あらゆる形のデータを1つにまとめることでとても簡単に今までの処理を簡潔にすることができた.
ポインタの使い方にも慣れてきて成長を感じる.
素晴らしい.
今日も楽しく課題に取り組むことができた.
別ファイルからの関数呼び出す方法について自身の理解の浅さを実感したので,
しっかり復習をして来週の課題に取り組みたい.
理解できましたか.よろしいと思います.
本日の課題では,
C言語における構造体について学習しました.
ヘッダファイルを用いたファイル分割(分割コンパイル)の手法も実践し,
これはプログラムの規模が大きくなった際の実践的な手法です.
自身が開発を行う中でも,
ファイル分割を行うことにより改善されると指摘されたことがあったため,
この機会に自分の開発の中でも使えるようにしたいと感じました.
改善されるとありますが,何が改善されるのですか.
今回の課題は.hファイルの使い方や複数ファイルでプログラムを構成する流れを思い出す良いきっかけになった.
関数を役割ごとに分けることで,
コードが整理されて読みやすくなったように思う.
そうですね.うまく使えるようになってもらうと良いでしょう.
以前よりもポインタの扱いに慣れることができたように感じる.
まだエラーを起こす回数は多いが,
考え方がわかってきたので,
引き続き頑張りたい.
エラーというのはコンパイルエラーですかね.
構造体で保持するデータの構造をしっかり考えることが大事だと思った.
そうですね.大切です.構造体に限らずですが.
構造自体は理解することができたがポインタに大きな苦手意識があるので,
いち早く克服したいと思う.
少しでも苦手なものが残っていたら後々大きく足を引っ張ってきそうで怖い.
地雷を残さないようにしていきたい.
苦手ですか...
今回の授業では構造体の扱いについて学びました.
メンバを指定するのにピリオドを使うところがJavascriptのオブジェクトに似ていると感じました.
しかし,
C言語の構造体はあくまで「新たな型」であるということを意識して,
混同しないように気をつけようと思いました.
課題2,3の時点でCarのメンバの値を入出力するための関数`inputCarData`と`printCarData`を作っていたので,
課題4で改めて関数を作るように要求されたときにやや困惑しました.
では課題2,3に戻って,関数出ないようにすれば良いですかね.
今回は比較的簡単だったが回数を重ねるにつれ内容が複雑になっているような気がして面白い反面不安を感じるようになってきました.
この授業も終わりに近づいており,
プログラミングについて考える中で,
次学ぶとしたらどの言語がいいのか気になったので教えていただきたいです.
また,
新しく学ぶよりは復習をした方がいいかなど重複になるかもしれませんが教えていただきたいです.
どの言語ですか...次回触れましょう.
本日は構造体の演習を行いました. 以前Pythonでclassを含むコードを書いたことがあったので概念自体の理解は容易だったのですが, ポインタと絡むとなかなか厄介に感じました. またまた予習していたので良いペースで進めることができました. これからも継続します.
そうですね.継続してください.
構造体を関数に渡す際,
値を変更するか否かでポインタ渡しと値渡しを使い分ける重要性が理解できた.
アロー演算子等のアクセス記法も整理できたため,
ポインタを用いた構造体の操作を確実に習得したい.
理解できているようですね.
構造体を学んだことで,
main関数内で呼び出す関数の引数が統一できるようになり,
より見やすいコードが書けるようになったことを実感した.
素晴らしい.この調子でお願いします.