2025年11月26日 第11回
回数を重ねるごとに理解が少しずつ深まってきた気がする.
最近は解き方がわからないというよりも&を書き忘れるといった凡ミスで解けないことが増えてきた.
素晴らしい.この調子でお願いします.
配列が混ざるだけでかなり複雑に感じて混乱してしまったので,
慣れていけるように頑張りたい.
落ち着いて考えるようにすれば大丈夫でしょう.
内容が高度になってきて,
特にポインタの理解が難しいです.
不明なところは質問してください.
最近課題が急に難化しているように感じる.
おいて行かれないようにしたい.
分からなければ質問してください.
今回はポインタと配列の関係性に関して学んだ.
演習においては特に課題7の現在の時刻と次の時刻との関連性を理解して,
どの文字をどの配列に
結びつけるかに苦労した.
自分は変数を用意しすぎて複雑なコードを書いてしまう癖があり,
エラーの原因がほどんど変数の打ち間違いのミスだったので,
配列を如何に合理的に使うことができるのかを今後はより意識してシンプルなコードを書けるようにしていきたいと思う.
具体的なコードを見ていないので何とも言えませんが,
少なくとも使わない変数は定義しないのが良いですね.
課題7に一番時間がかかりましたが条件分岐をどう工夫して記述するかが面白かったです.
面白かったのであれば,大丈夫かな.
週ごとに課題が難しくなり,
期末テストが怖いなと思った.
また今回は特に課題7が難しく感じた.
怖いですよ〜.
今回の課題7は非常に楽しく取り組めました.
このようなアルゴリズム処理をいかにシンプルに,
かつ最適化して解くかを考えるのがとても好きで,
やりがいを感じます.
もし可能であれば,
毎回のコメント返しの時に,
前回の課題の中で特に独創的で興味深い解き方をしているコードをピックアップして紹介するコーナーを設けていただけると嬉しいです.
楽しかったのであれば良かったと思います.
プログラミングの内容が複雑になってきているので,
講義動画や教科書で復習するようにし,
内容を忘れないようにしたいと思った.
そうですね.まずは不明な点をクリアにしてもらうことが大切だと思います.
課題を通して,
配列とポインタの関係や,
動的メモリの確保,
2次元配列の扱いを理解できた.
理解できたようですね.この調子でお願いします.
今回の課題で,
変数のアドレスやデータ型のサイズを確認することで,
配列とポインタがメモリ上でどのように関連しているか理解することができた.
素晴らしい.
将来何したいとかあまり考えていなくてただ漠然と授業受けて課題に取り組んでいるのですが,
とりあえずc言語などのプログラミング言語を勉強し習得するということはこれから活きてくるものなのでしょうか.
プログラミング言語について言えば,まずは基本的なものが習得できることが大切で思います.
この意味ではC言語は枯れていると言えるので良い対象であると言えます.
次回触れますが,方向性があるからね.
ポインタと配列が密接した関係にあることが理解できた.
今日学んだことを使いこなせるようによく復習しておきたい.
理解できたようですね.この調子でお願いします.
mallocなどでメモリを管理できるのが便利で面白いが,
メモリリークなどの危険とは背中合わせのため,
慎重に実装しなければならないと思った.
そうですね.でもまず実装できないといけないですね.
今回の課題9ではmallocを使う利点がよくわからなかった.
配列を引数とできるようになったのはいろいろできることが広がりすごく便利だと思った.
配列のサイズをあらかじめ決めなくて良いので便利ですよね.
本日もありがとうございました.
前回のポインタ変数から特にプログラミングの面白さを感じてきました.
その一方でだんだんついていけなくなっている実感もあるので気を引き締めなおして学習に向き合いきたいと思います.
さて,
本日の課題4でsqrt関数を使う場合にgcc -lm -Wall -o kadai4 kadai4.cだとコンパイルができず,
-lmを後ろに回してgcc -Wall -o kadai4 kadai4.c -lmにするとうまくいきました.
何度か試したのですが,
結局gcc -lm -Wall -o kadai4 kadai4.cでコンパイルできるコードを書けませんでした.
自動でコンパイルをしているとお聞きしているのでそこが少し気がかりです.
自動で...気掛かりというのがいまいち不明ですが,
大学の環境でできたのですよね.だとしたら,大丈夫ですよ.
最近は直感的に理解しづらい内容が多く,
しっかり講義動画を見て深く理解しないとできないような問題ばっかりなので,
講義を見る段階で深く理解できるようにしようと思います.
そうですね.でも落ち着いて考えたら大丈夫だと思いますよ.
前回に引き続きポインタについて学んだ.
自分の中では構造を理解したつもりになっていた時でもエラーが起きてしまう時があったのでやはり紙に書くなどして視覚化していくことが大切だと感じた.
毎度毎度,
視覚化の大切さに気付かされるので小さなホワイトボードでも買おうかなと考えている.
ぜひ購入してください.小さいのでも役立ちますね.
でもノートで良いのでは?
書いたものを消さないというのは大切ですよ.
本日は配列のアドレスについて理解したほか,
mallocの使い方についても学んだ.
配列数を標準出力から指定する際にmallocは非常に便利だったため,
知ることができてよかった.
理解できたようですね.
ポインタ変数を用いることで,
自分で定義した関数内でmain関数で定義した配列が利用できることがとても便利に感じた.
うまく行きましたかね.よろしいと思います.
いまだに変数の型に気を遣えておらず,
コンパイルの時にエラーが出てしまい,
直すといいう作業を毎回しているので,
次回は型によるエラーが一回も出ないようにするということを自分ので課して行おうと思う.
落ち着いて作れば問題ないと思います.
苦手な「理由を説明する」というタイプの問題が多くて大変だった.
課題7も考えるべき要素が膨大で大変だった.
苦手なのは,理由を理解できていないからでは?
前回の内容と似ていることが多かったため何とか理解できた.
関数ポインタについては使用方法がいまいち掴みきれておらず,
今回の課題でも自分が使いこなせていないだけで本当はより簡潔に書ける方法があるのではないかと気になった.
関数ポイントについてはやっていないですね.
今回は,
問題の難易度自体はそこまで高くなかったが,
ポインタのポインタなど,
理解が難しい内容があった.
試験までに復習して,
自分の言葉で説明できるようにしたい.
そうですね.自分の言葉が大切ですね.
今回の演習では前回に続いてポインタの使い方について学んだ.
コードの内容もとても複雑になっており,
プログラミングをするのがとても難しく感じた.
改めてポインタの使い方を復習して正しく使えるようにしたいと思った.
落ち着いて考えれば大丈夫だと思います.
本日の内容は前回のものを少し深くしたようなものでした.
前回の内容への理解がより深められたし,
思ったよりもちゃんとわかっていなかったなと思いました.
理解したつもりになるとまずいですね.
確保したメモリの扱い方や解放の順番など,
メモリ管理の重要性を強く実感した.
最初は混乱する部分もあったが実際にコードを書いて動作を確認することで理解が深まり,
ポインタのしくみをより具体的に捉えることができた.
素晴らしい.やはり具体的に考えると理解が進みますね.
課題7で,
「a[i-1],a[i],a[i+1]に応じてt+1の時のa[i]の値を返す関数」と「配列aを受け取って一列描画する関数」を作ってみたらコードがすっきりして可読性がうんと上がったので良かった.
いろんなパーツをmain関数で組み立てるイメージなら関数を処理別に作っていく方が良さそうだと感じた.
そうですね.一番良いのは,main 関数の中身が全て関数という感じですかね.
今回の内容はなかなか難しく手こずってしまった.
どこがうまく行かなかったですか?
本日は配列とポインタについて学んだ.
課題7で離散数学で学んだ論理式の簡単化を用いることで,
条件式を短くすることができた.
また,
コードを書いた後に気付いたが,
せっかく関数を学んだのに使っていなかったので次回以降組み込んでみるようにしたい.
それはまずいですね.使ってください.
最近になって概念が難しくなって,
教科書で見たことをそのまま脳死で入力したくなりますが,
将来のために自分でしっかりと理解して何も見なくてもできるように勉強したいと思いました.
また,
ポインタと配列の長所短所がわかりました.
脳死?
今回の課題は頭を使ってかなりきれいにまとめることができた.特に課題7では条件を排他的論理和とみることでかなり簡潔にできた.
うまくできたようですね.
本日初めて時間内に終わらなかった.
しっかりと予習をして理解を深めていきたいです.
何度も言いますが,時間内に終わるのが大切ではないです.
和や平均を求める課題が一番エラーを出す回数が多かった.
今回は手当たり次第にコードを書いてしまうことが多かったので,
どのようにコードを書くかもう少し固まってから書き始めていきたい.
手当たり次第は一番ダメですね.
今回新たに習ったmallocは使うことはできるが,
正直しっかりと理解できておらず,
説明できるかと言われたらできないくらいの理解度となってしまった.
特に,
このmallocを使用することの利点などは特に見出すのが難しかった.
同様に配列も違う方法で書くことができることを知ることができたが,
利便性は理解が難しかった.
また,
課題の中にはどうしてこのようになるのかを書く,
考察する問題があったがどれくらいの量を書くべきか簡潔な量で良いのか気になった.
次回触れますが,配列のサイズを決めてしまうと困りませんか?
malloc関数を使えば,
pythonやC#のListのようなものを自作できるのではないかと考えた.
C言語は,
よりモダンな言語に比べ,
言語自体が持つ機能は貧弱ではあるが,
mallocのような関数を駆使することによって,
より高い利便性を実現できる点が魅力的だと思った.
色々と考えてみるのが良いでしょう.
C言語において,
ポインタと配列は切っても切り離せない関係にあること,
そして,
ポインタを通して配列を取り扱うことで,
関数と配列を通したやり取りをする方法を学んだ.
また,
mallocを利用して動的にメモリを確保する方法を学んだ.
動的に確保できるようになっておくと良いですね.
今回は前回学んだポインタと配列を組み合わせてコードを書いた.
配列の中の要素のアドレス値が綺麗に並んでいることを利用してより高度なコードが書けるようになった一方で,
関数の引数として用いるときの使い方が多少異なったりして混乱することもあった.
落ち着いて考えたら大丈夫なのでは?
今回は配列,
ポインタについて行った.
一つ一つ丁寧に理解しながら進めていきたい.
そうしてください.ゆっくりで良いのです.
今回の演習もとても難しかったと感じた. 配列を導入してからfor文で自動化出来たり, 変数の宣言が少なくなったというメリットが増えたが, 使いこなすまではなれていないので, 慣れていきたいと思った.
分からなければ質問してください.
配列に変わったら頭がこんがらがってしまった.
落ち着いて復習したい.
変わったらというのはどういうことですかね.落ち着いて考えてみてください.
今日は段々と難しくなってきていた.
アドレスなどに関して学習し,
利用したが,
これは高校数学でいうところの逆関数に近いものを感じることができた.
結びつけることができるとより覚えられ,
効率的に学習できると感じた.
なるほど面白い考えですね.
今回malloc関数を導入する際#include<stdlib.h>を2回入れ忘れて悲しく,
そしてなんとなく恥ずかしい気持ちになりました.
ただそのおかげでもうこのミスをすることはなくなりそうです.
課題については難易度が上がってきて頭を使う機会が増え面白くなってきたように感じます.
忘れても修正すれば良いから大丈夫なのでは.
問題なのは,このようにどこをどのように直せば良いか分からない間違いですね.
今回の演習では,
配列とポインタの応用について学んだ.
途中で配列とポインタの関係で混乱してしまい,
課題7以降でかなり苦戦した.
今回の内容はかなり多かったように感じたので,
配列の単元も含めてしっかり復習したい.
単元ですか...
今回の講義ではポインタと配列に関して学んだ.
まだポインタの使い方にはなれないが,
少しずつ理解が深まってきていると感じている.
ただ,
課題9のmallocの失敗を想定したコードが2次元配列になったときにどのようにするべきか理解するのに時間がかかった.
時間がかかったけどできましたかね.
動的に配列を確保する方法を学び,
ポインタの扱いに少し慣れることができた.
malloc を使った2次元配列の確保が最初は難しかったけれど,
実際に書いてみると理解が進んだ.
ポインタの動きを知る良い機会になったように思う.
理解が深まったようですね.
課題9に関して,
動的に二次元配列を確保することには,
配列サイズを実行時に決めることができる, 可変長構造が作れる, メモリが足りない場合にエラーチェックして安全に処理できる といったメリットがあると分かった.
一方で,
行が連続しないためキャッシュ効率が低くなる可能性がある, free の手順が増えるといったデメリットもある.
メリデメを理解したうえで適切に使用することが大切である.
色々と考えていますね.よろしいと思います.
今回の講義と演習では,
ポインタを配列に応用したコードの書き方を身につけることができた.
同じ結果を表すコードでも,
書き方を変えることで読みやすくなったり読みにくくなったりするため,
読みにくいコードの意味も解釈して理解できるようにしたい.
なるほど読めるかどうかですが,これも大切ですね.
ただ,大体他人が書いたコードは何やっているのか全く分からんときが多いですが...
本日は,
ポインタや配列の応用や,
動的なメモリの確保について扱いました.
最後に確保したメモリを必ず開放するとのことでした.
忘れた状態で提出しそうになったので危なかったですが,
無事修正して提出できて良かったです.
よろしいと思います.
課題7に関して,
配列a[i]の要素を更新する際next[i]という仮の配列を用意してif構文でnext[i]に0または1を代入した後,
for (i = 0; i < N; i++) a[i] = next[i];という処理で全て更新するという処理を行ったが,
わざわざ別の仮配列を準備しなくても処理できるのか疑問に思った.
具体的なコードをみていないのでちょっと分かりませんが,
値を退避する必要があるということ?
今回の課題も大変でしたが,
講義映像やネット上の様々な資料を参考にすることで,
だんだんとポインタの使い方や存在意義が理解できている気がします.
また,
初めの方にはおまじないのように書いていた部分のコードがどんな意味を持っているのか少しずつ種明かしされていく感覚が楽しいです.
あと少しですが頑張ります.
今回の課題も,ですか...
でも内容をみると理解できているようですね.
最近,
表面的な理解でおわってしまい,
本質的にわかってない気がしています.
今回の講義内容も曖昧な部分が残っているので復習を通じて理解していきます.
誰かに説明してみると良いと思います.
今回はかなりむずかしかったです.
簡単なやつと難しい奴の差が激しすぎました.
どこが難しかったですか.
本日は配列とポインタの応用について学んだ.
前回に引き続きポインタを学んだことで理解が深まった.
また,
malloc関数ではメモリが節約できることが分かった.
メモリの節約などの概念は初めての概念だったので,
これからも考えていくことが増えていくことに大変さを感じた.
理解できていますね.
前回に引き続きポインタということで,問題演習に取り組むことで少しづつ慣れてきた.今回の問題は比較的簡単に感じたが,どうしても冗長なコードを書いている気がしてならないので,無駄な記述を少しでも減らしつつ,可読性の高いコードを書けるようにしていきたい.また,AIに頼ることなく考察してコードを書いているが,コードレビューに関しては大いに活用できると思うので,提出後,復習として利用していきたいと思う.
頼らずにまずは考えるというのは大切ですね.
今回は授業時間内に終わらなかったが,
比較的理解しやすかった.
前期を思い返すと,
まず自分はタイピングが遅かったのがだいぶ早くなり,
またパソコンも大学に入るまであまり触ったことがなかったが使用する頻度が高くなったと感じる.
プログラミングを行うことに慣れてきたので,
これからも頑張りたい.
そうですね.ぜひそのようにしてください.
今回は前回の内容が頭から抜けていたこともあり,
とても難しかったです.
アドレスを使って関数で値を求める方法をよくわからず,
形をまねして使っているので,
原理をしっかり理解しようと思いました.
確かに原理は大切です.
今回の授業では,
ポインタを応用する方法を学習することができた.
ポインタを応用することで,
配列名を打つ時などに時短になるほか,
配列の要素数を標準入力させることで,
動的な配列を実現することができるということが分かったので,
積極的に扱いなれていきたいと思った.
そうですね.まずは使ってみて慣れるのが大切かと思います.
今日も無事にできた.
課題7は一見条件が複雑そうだが,
時刻t+1でのa[i]は時刻tでのa[i-1] XOR a[i+1]と一致することに気付いた.
よろしいと思います.
本日の演習では,
配列とポインタについて問題を通して学ぶことができた.
課題6まではスムーズに進むことができたが,
課題7がOの位置が思った場所に出力されなかったり,
全体的にずれていたりといったことがあり,
進めることができなかった.
for文を使用するときにはどこからどこまで繰り返すかを明確にしてからプログラムを書いて,
ずれが起きないようにしたい.
そうですね.まずはクリアにしてから取り組むのが良いですね.
今日の講義も面白かったです.
mallocを用いることで,
配列の大きさを入力などに応じて設定できるのはとても便利だなと思いました.
配列が確保できないというのは,
メモリの空きがない時ということですか?
面白かったのであれば良かったと思います.
今回の課題を通して,
ポインタ操作と動的メモリ確保の一連の流れを実装しました.
特に2次元配列を「ポインタのポインタ」として扱う構造は,
最初は複雑に感じましたが,
メモリ上でのデータの並び方を理解すると非常に理にかなっていて驚きました.
手動でのメモリ管理は大変ですが,
プログラムの挙動をより深く理解できたと思います.
色々と考えて理解できたようでとてもよろしいと思います.
今回の講義では,
配列とポインタの関係,
ポインタ演算,
malloc を使った動的配列,
多次元配列の扱いについて学びました.
演習を通して,
配列名が先頭アドレスを表すことや,
ポインタを使ったアクセス・演算の仕組みはよく理解できました.
また,
型によって隣接要素のアドレス差が変わる理由も納得できました.
一方で,
動的に二次元配列を確保する部分や,
malloc と free を正しく扱うところは難しく感じました.
慣れなので,色々とコードを書いてみましょう.
mallocを初めて触れた.
pythonだと配列の長さを好きにいじれるが,
c言語だとそうもいかない.
今までは,
長さの分からない配列はとりあえず長さを256としていたがこれだと要らない領域までメモリを食ってしまうのでmallocを使って必要分だけメモリを確保できるのは便利に感じた.
そうですね.そのように使うと便利ですね.