2020年09月23日 第2回
変数や変数の使い方について理解出来ました.
キーボードの入力を受け取るscanfやgetcharについての動き方やその違いなど理解出来ました.
scanfの時に&が必要だったりdoubleでは%lfになることを忘れないようにしたい.
よろしいと思います.
今回の講義を受け,変数について理解することが出来た.
数学とのイコールの違いなどしっかり復習して理解をより深めたいと思う.
今回の演習の中でコンパイルするときにエラーが出たが,落ち着いてエラーメッセージを読んで対処することが出来た.
次回の演習ではエラーが出ないように気を付けたいと思う.
すばらしい!
課題4,5でgetcharの扱いに苦戦しました.
苦戦する時は,教科書のサンプルコードをみて, それを試してみましょう.
現段階では変数がどのように役立つのかわからない部分も多いので,
これからどのような広がりを見せるのか,楽しみです.
変数を使わない数値計算というのはありえないですね.
コンパイルしたファイルを実行し,
その実行したときに入力をするコマンドのscanf, getcharなどについて勉強することができた.
課題4などで多少つまづいたこともあるが,
TAに質問してはっきり答えてもらい,
時間内にすべての課題を解決することができた.
講義内容の他に質問ですが,
10月から対面希望の人は対面ですることを想定しているとなっていますが,
これは前期の計算機工学でのアンケートで参加を希望していると答えている人のみ対面で授業を受けるのですかそれとも今後対面希望のアンケートをもう一度とってから対面授業を始める予定ですか.
原則として,来たいという人はOKにできると思っています.
というのは,計算機工学でのアンケート結果は,だいたい半数の人が来たいという
ことだったからです.
ただ,次回の講義時にアンケートを取ろうとも思っていました.
これは,現状での希望者数を把握するためのものです.
というのも,葛飾キャンパスのターミナル室は,
コロナ禍のために人数制限がされていて,
一番大きいターミナル室3 (ここがプログラミング工学・演習1に割り当てられている) の
定員は(確か)57人です.
したがって,もし対面で来たいという人が57名を越えると,
交代制にしないといけないので,そのための調査です.
scanfやgetcharの指定で,
意図に反して入力されてしまう改行文字や区切りの除去に苦労した.
自分がプログラミングしている内容の意味を考えること,
意図した結果にたどり着くまで試行錯誤を繰り返すことの必要性を身をもって認識できた.
苦労は買ってでもしろ,といいますね.
課題4と課題6が苦戦した
苦戦した,ということは解決した,ということでしょうか.
苦戦しながらもなんとか終えることが出来ました.
よろしいと思います.
今日の内容は分からないところがかなりあった.
例えばどこがわからなかったでしょうか.
まずはじっくり考えよう.
変数には様々な型があり,
状況によって使い分けなければいけないことが分かった.
また, scanf と getchar のように一見同じ用途と見えて実際行えることは違ったものもあったので,
しっかりと使い分けをしながら使っていきたいと思った.
来週の式と演算子も予習しておこうと思います.
予習は大切ですね.
期待しています.
変数の仕組みや使い方がよく理解できましたが,
「変数の初期化」についてなぜ「初期化」というのか疑問に思いました.
「初期化」というと何かをリセットするようなイメージがありますが,
変数の宣言と値の設定を同時に行うという処理がそのイメージと合わなかったので違和感を感じました.
提出が遅れてしまい申し訳ありません.
宣言したときには,その変数にはどのような数値が入っているのかは未定なので,
一番最初に値を設定するという意味で初期化ということになります.
授業中に課題を終わらせることができて良かったです.
今後も授業時間内に課題が終わるように努力したいです.
それは甘いですね.まだ2回めですからね.
改行文字も文字の一つとして扱われることに注意してソースコードを書いていきたい.
色々と試してみるのが良いと思います.
getcharのところで,
エンターキーが入力の一つとなってしまうというところに,
細かいなととても感じさせられました.
次からはもっと思考を柔らかくして間違いがあれば一つ一つ検証しようと思います.
これも簡単なコードでいろいろと試してみると良いでしょう.
今回の内容も比較的スムーズに進めることができました.
ただ,scanfとgetcharの違いがkadai6.cのコードを実行してもイマイチピンときませんでした.
動作の違いがあるのですが,どちらでも同じになりましたか?
前回,使い方がよくわからなかった変換仕様の使い方が重要なものだとわかりました.
理解できたようでよかったと思います.
数字の範囲は大きければ,小さいものが来ても対応することができると思ったのですが,
範囲が小さいものを使うのはどのような時ですか?
説明でわからなかった部分も,演習によって意味が分かったりしたのでよかったです.
scanfとgetcharの違いも,少しはわかったと思うのでよかったと思います.
getcharは,charというだけあって,%cしかとらないということでいいのでしょうか?
また,有効数字の指定の仕方も,前回はちゃんと出来ていなかったことが分かって,
きちんと自分のしたいようにできるようになったので,よかったです.
まだ,どのようにscanfとgetcharを使い分けるかがわからないので,これから学んでいきたいです.
例えば,ある整数を扱うとき,その整数の範囲が高々±100程度だとします.
このとき,4バイトのintを用いたら,相当無駄ですよね.
charの扱える範囲は,±100を含むので,1バイトのcharで十分ということになります.
今回のプログラミングの課題で何度も行き詰った.
原因がなかなか見つからず難しいが,
原因が分かった時はとてもスッキリしました.
あと可能ならば,
演習時間での全体に対する質問の回答をletusに書いて貰いたいです.
回線が悪くなりzoomから落ちてしまったり,
聞き逃したりしてしまうことがあるからです.
なるほど.ではFAQを作りましょうかね.ただ,答えじゃなくてヒントに止めると思います.
新しく出てきた関数「scanf」と「getchar」をある程度マスターしたと思う.
また,課題6について質問があるのですが,
scanfを使って1つの文字を入力させるときのコードで,
下に書いたコードの様に先頭に半角スペースを入れると上手くいくのは,
どういう動き(処理?)をしているのかいまいちピンとこなかった.
先頭の半角スペースでエンターキーの入力を受け取ってるのでしょうか?以下はコード)〜scanf(" %c", &ch1);〜
ごめんなさい.ちょっと意味がわからないですが,半角スペースは関係ないと思います.
文字や数値によって,
使用する関数が違う事や変数の名前にも決まりがあることを学んだ.
また,キーボード入力が出来るプログラミングは,とても便利だと思った.
キーボードから入れるのは便利でなのですが,
実際の場面では,キーボードから入力することはほとんどないですね.
次回コメントします.
講義内容は教科書を予習していたため特に問題なく理解できた.
演習については,
課題4,5において初見ではprintfやgetcharを連続して使用する場合にうまく処理する方法がわからなかったが,
調べることで解決できた.
課題7では自分の言葉で説明することで理解が深まった.
すばらしい!
うまくいかないところを調べて解決することができたので,
これからも自分で解決できるように頑張っていきたいと思いました.
こちらもすばらしい.
getcharの使い方に苦戦しましたが,
今回は1時間くらいで終えられました.
演習問題でトライアンドエラーするのが段々楽しくなってきてます.
まだまだ耐えられそうです.
まだまだ序の口です.
C言語での入力について理解できた
よろしいと思います.
とりあえず大まかな骨組みを書いて実行し,
エラー個所を探していく作業は,
時間がかかるけど楽しめるようになってきた.
すぐに質問に行くのではなく,
自分で考えてみることが大切かなと感じた.
楽しめるというのはとてもすばらしい.
自分で考えてみることが大切と感じるところもすばらしい!
scanfの挙動(改行やスペースの取り扱いなど)が最初わからなかったため課題で少し苦労しましたが,
なんとかできました.
よろしいと思います.
%の横に半角スペースを入れないと改行してしまうのはなぜですか
どの部分かいまいち把握できていませんが,scanf の場合,空白を入れて,
改行コードを捨てるようにするということでしょうかね.
前期の情報処理演習と違い,
2時間たっぷり演習の時間があるのでじっくり取り組めて嬉しいです.
先生からアドバイスをもらいながら自分で考えて試行錯誤し,
出力された瞬間に一目で結果が分かる感じはとても工学的で,
プログラミングも立派な工学なんだなと思いました.
次はどんな事をするのかとても楽しみです!
楽しいのは良いと思いますが,
気になったのは,時間内で終わらなければ,その後対応するようにしてください.
高校生じゃないので.
今回の授業は作業が多く,
また初めての作業も多かったので,
作業が停滞することもあったが,
これから授業を繰り返し,
慣れていきたい.
そうですね.慣れると早くなるでしょう.
文字の連続入力の際に,
scanf,getcharともに改行の存在を意識しなければいけなかったところが少し難しいと感じました.
予習復習に励み,頑張りたいと思います.
一度はやっておくことが大切です.
前回の内容のところでも手間取ってしまった.
何回も使うことで慣れていきたいと思った.
そうですね.慣れると思います.
改行文字がcharの変数に入ってしまうことに気付かずかなり悩みました.
悩むことが大切なのです.
課題6がコピペだとエラーがたくさん出て面倒に感じましたが,
楽しみながら取り組めました.
コピペはダメです.
今回の演習で,
scanfとgetcharの違いについて調べたときに,
バッファの処理の違いなどの話が出てきて,
何を言っているのかわからなかったので,
今後の授業でそのあたりの話が出てくるのかがとても楽しみです.
一度説明した方が良いですかね.
getcharを使うとき,
それ以前のenterが一文字扱いされることにとても苦戦したので,
このことはこれからも頭に入れて置き,
同じところで苦戦しないようにしていこうと思う.
誰でも一度だけ経験するのよ.
課題4で苦しんだので,
課題4までしか終わりませんでした.
まだあまり理解できていないのですが,
2回目のscanfの時に改行が読み込まれてしまう?のか,
2回目のscanfがうまくいかず,
%cの手前にスペースを挟めばいいと知るまでにかなり時間を要してしまいました.
問題を切り分けるようにしたら良いと思います.
今回の講義では変数について詳しく学びましたが,
=が等しいという意味ではなく代入するという意味であるという認識はあまりなかったので今回学ぶことができて良かったです.
また,演習も少し悩む内容がありましたが,
前回の知識と組み合わせることで解決できたので良かったです.
次回以降でも出てくるので代入演算子については覚えておきましょう.
ずっと課題4で悩んでいたのですが,
&忘れという初歩的なミスをしていました.
発展的なものを学んでも基礎をしっかりしないといけないなと思いました.
小数を入力するのでもfloatとdoubleがあるのに驚きました.
使い分けが難しそうです.
&は忘れないようにしましょう.理由も説明しました.
getchar について,
課題6を見るまで enter も文字としてカウントされることに気づかず,
無駄に時間を消費してしまったので次回からは気を付けたい.
初めてなので,問題ないですよ.
アドレス演算子の説明が分かりやすかった.
理解してくれたのであれば良かったと思います.
scanf関数において,
%dや%cの前の空白に気付かず,
しばらく苦戦してましたがなんとかできました.
よろしいと思います.
scanfで入力した小数を,
入力そのままの小数点以下の数 (3.141なら3.141,3.14なら3.14)で表示する方法がわかりませんでした.
また,getcharを複数並べる時,
どれが改行用,スペース用なのかの判断が難しかったです.
課題6の最後のgetcharについて解説していただきたいです.
%fに数字をつけて,桁数を制御できます.
例えば,%A.Bf とすると,A桁,小数点以下B桁です.
演習する時に,いくつの問題にあいましたが,
ネットで調べたり,教科書で調べたりすることで解決しました.(課題6がいい参考になりました.)
授業ありがとうございました.
よろしいと思います.
今日は課題4,
5のgetchar()が改行文字などを取得してしまうことに気づかず,
使えるようになるまでにとても時間が掛かってしまいました.
また,
c言語をこれから頑張っていきたいと感じました.
今は,理解できたので大丈夫ですね.
変数の名前や型,
宣言の決まりや使い方などを理解することができました.
よろしいと思います.
scanfとgetcharを一緒に使うことはあるのか疑問に思った.
実際にはあまりないですが,今回は違いを理解してもらうためのものです.
scanfとgetcharについて学ぶことができてよかった.
改行文字の除去について知らなかったため,
getcharで反映されなくて苦戦した部分もあったが最終的に解決できたので安心した.
除去というよりもどのように処理されるかというところでしょうか.
課題4と課題5がかなり手こずった.
でもできましたか?
今回は始めからubuntuではなくTera Termで書きました.
前回から一気に難しくなったように感じました.
次回は予習をして,
少しでも理解してから受講しようと思いました.
まだまだこれからです.まだ離陸もしてないくらい,やっと滑走路に入ったところでしょうか.
夏休み前からpythonを勉強していたのでC言語を学習する上で登場する用語などに多少馴染みがあるものがあり楽に学習が進められたと思います.
自分でやっておくのは大切ですね.
ソースコードの中で,
getcharで文字を入力する部分がうまくいかず戸惑いましたが,
課題の注意点を適宜音声で全体に教えてくださったので理解することができました.
次回以降も同様にしてくださると嬉しいです.
理解してくれて良かったと思います.
演習課題4での getchar が二回必要であることについて,
説明が口頭であったので理解があまりできませんでした.
次回にスライド上での詳しい説明があると助かります.
演習時でのことだと思いますが,わからないときは質問してくれたら良いと思います.
高校生じゃないので,自分から積極的に聞くようにしてみましょう.
課題4で少し戸惑ったが,解決できてよかった.
getcharでスペースを押す分のことをきちんと覚えておこうと思う.
次回以降対応できればそれで良いと思います.
getcharが改行文字やスペースまで1文字として読み込んでしまうということにTAの方からのアドバイスがあるまで気がつくことができなかった.
プログラミング言語を用いてコンピュータに支持を与えるにあたって,
自分の入力していることがコンピュータにとってどのような理解をするものでるのかを一つ一つ考えながらコードを書くことが大切であると感じた.
人間なら考えればわかることでもコンピュータは指示されたことをそのまま素直に実行する,
ということを改めて感じた.
最初は気づかなくてもいいですよ.結果的にそうなることが分かれば良いと思います.
課題3での変数宣言を"int"で行っていたことに気づかず,そこで少し手間取りましたが,全体としてはそれなりにスムーズに進行できました.
よろしいと思います.
scanfやgetcharは,
ゲームなどで応用されて使われてそうだなと思い,
興味がわきました.
入力自体はどこでも使います.
提出が遅れて大変申し訳ありません.
今回の演習問題は周りに比べて時間がかかってしまいましたが,
課題を1つずつ進めるごとに,
頭の理解も追いつきコードの書き方が身についているように感じたので楽しかったです.
今後のソースコードの作成が難しくなった時に対応できるように,
どのようにコードを作成すれば良いのかを自分でよく理解し考えた上で実行することを心がけていこうと思います.
まずは慣れなので,色々と書いてみると良いと思います.
文字型の入力での改行文字の処理の仕方でかなり躓いたので,
getcharの扱いに気を付けるようにしたい.
次回以降気をつけてくれたら良いと思います.
英語のlと数字の1を見間違えてしまったせいで訂正箇所を見つけるのにかなり時間をかけてしまったので,
紛らわしい文字がある場合は正しいのかどうかしっかり確かめていこうと思います.
コンパイルエラーが出るから大丈夫でしょうかね.
ただ,問題は両方ともpossibleな場合コンパイルエラーが出ずに
間違いが出力されるということはあると思いますが.
エラーが起きたりしましたが,
なんとかできました.
エラーがおきたらそれを直せば良いと思います.
変数の概念とその有用性を知ることができた.
基本的な構文をしっかりと定着させていきたい.
そうしてください.
指数部や仮数部など計算機工学で学習した内容が出てきて,
点と点が結ばれたような感じがしてハッとしました.
よろしいと思います.
暫くC言語を触っていなかったせいか,
今回の授業の範囲にも少し忘れていた部分がありました.
すぐに思い出すと思います.
私はプログラミングを書き込むとき,
内容を少し考えてから入力するようにしてますが,
次回から頭の中で考えながらプログラミングを入力すル事ができるよう頑張ります.
本当はまずは手書きで書いてみるというのが重要です.
世の中にはプログラミングが好きな人が多くいると思います.
そのような人たちはプログラミングのどのようなところに魅力を感じているのでしょうか.
うーん,いい質問ですね.何か特殊なことができたとき,ということでしょうかね. 今度聞いてみようかね.
与えられたコードを入力して動作を確認するのではなく,
出力されるべき結果を見て自分でコードを考えて試行錯誤するのは難しかったのですが,
むしろミスをすることで変数や代入の仕組みを理解できました.
素晴らしい.ミスしても次に繋げれば良いのです.
少しずつ難しくなっていると感じました.
まだこの辺りも基礎部分であると思うのでここをしっかり固めていきたいと思います.
基礎部分というのはその通りなので,じっくり考えてもらうのが良いと思います.
今回も授業の内容を駆使して,
課題を終わらせることができました.
文字を入力するときはgetcharを用いると習いましたが,
scanfでも文字を受け取ることができると課題6で書いてありました.
使い分けの仕方はあるのでしょうか.
getchar自体は文字を受け付けますが,scanfは整数,浮動小数点数,文字,
文字列を入力できます.
今回の講義では何度も教科書を見て調べたので,
復習をしっかりしておきたいと思いました.
スライド10のfloatの部分で,
範囲が結局$-3.4×10^38~3.4 E+38$なのか,
元から書いてあるものなのかよくわからなかったのでぜひ教えていただきたいです.
よろしいと思います.
範囲としては,$\pm 3.4×10^388$です.
これから対面授業をやっていくかもしれないとこの前の授業でおっしゃっていたと思うのですが,
2限に同期遠隔授業がある場合は終わってから学校に急いで向かっても3限の開始時間に間に合わないのですが,
どうしたらいいのでしょうか?対面授業でも遠隔授業でもいい形式になるのでしょうか?
もちろんどちらでもいいです.
例えば,2限も大学に来て遠隔で受講して,という手もあります.
上手く動作しないときにもう少し早く原因を突き止められるようになりたい.
慣れてくればできるようになります.
なので色々と書いてみよう.
変数に入ってさっそくややこしさを感じましたが,
なんとか理解できたので安心しています.
細かい知識は復習しないとすぐ忘れそうなので,
こまめに教科書を見返したりするべきだなと感じました.
そうですね.分からなくなったら調べてみるのが良いと思います.
本日の授業でc言語の変数を学んで,
一気にプログラミングらしくなってきたように感じました.
今回の課題は前回より難しく,
前回の復習も含んでいて大変勉強になりました.
また,
前回よりも自分で考えることが多かったので,
楽しく取り組むことができました.
本日はありがとうございました.
次回もよろしくお願いします.
よろしいと思います.
今回は課題4,5でgetcharが改行文字をカウントしてしまうことに苦労しました.
課題6での相違点の確認やTAさんが質問の多い箇所への回答を全体アナウンスしてくださったおかげで学習しやすかったです.
授業中に先生がscanfで&が必要な理由の説明をしてくださったのも,
わかりやすく勉強になりました.
理解してくれたのであれば,良かったと思います.
アドレスがなぜ他の変数に必要ないのか,気になりました.
課題7の違いについて考えたのですが,
結局分からなかったので来週までに調べておこうと思います.
& をつけると変数のアドレス(メモリ上のどこか)を表します.
scanfはそれにしたがって,入力された情報をこのアドレスに入れるということです.
郵便に住所が書いてあったら,それを当該の家のポストに入れる感じですね.
わからなかった箇所を教科書やネットで調べたりして試行錯誤しながら取り組むのが楽しかった.
よろしいと思います.
前回の内容も出てきて,
復習をしっかりしておかないと次の講義をスムーズに進めることができなかったので,
復習や予習をしっかりやろうと思いました.
これからも頑張っていきたいです.
期待しています.
標準入力について理解することが出来た.
また,最初はscanfがあるのにわざわざgetcharを使うメリットが分からなかったが,
調べてみると組み込みなどの分野では重宝されていることが分かり,
とても面白かった.
文字の場合は大切ですね.
変数に名前を付ける際のルールに関して,
特に不便な決まりでもないと思いますがなぜ数字から始められないのだろうと気になりました.
またscanf関数とgetchar関数,
小数を表現するfloat型とdouble型は具体的にどのように使い分けるのかも疑問に思いました.
いい質問ですね.正確な答えは不明ですが,
コンパイラは文字列を処理して,何であるかを解釈するので,
先頭に数字がくると,数値定数 (第1回のときに,整数の123とか10.5を用いましたが,
これ) と判断するのに余計な手間がかかるからじゃないでしょうか.
getcharを用いる際には,
改行文字やスペースに注意してプログラムを記述する必要があるということを知りました.
復習しなければすぐに忘れてしまいそうなので講義外でも少し練習してみようかなと思いました.
getcharではなくて,scanfでしょうか.
比較してみてください.
改行文字をどう対処すればいいか分からなかったが,
TAの方がヒントをくださったのでうまく対処することができた.
(実際は課題6まで進めば対処の仕方がわかった.)
全体を通していろいろ考えてコードを書き進めていくのが楽しかった.
よろしいと思います.
学ぶたびに新しいミスができる気がするが根気強くやっていきたいです.
特にgetcharですごい引っかかってTAさんに質問しました.
少し考えてもわからなかったときはすぐに質問した方が良いと思いました.
最初はそういうものなので,徐々に慣れたらいいと思います.
今回の授業において,
新しくscanf関数を学んだが,
演習でprintf関数と組み合わせることでscanf関数の汎用性に気付いた.
また,演習で一度宣言した変数を何度も使用したとき,
変数の使い方がcssのclass属性の使い方に似ていると感じた.
確かに似ていますかね.
今日の講義では,
主に変数を用いたプログラムの書き方を学びました.
課題4,5あたりで,
getcharがうまく扱えず,
少し手間取りましたが,
課題6を見てgetcharの使い方を把握することができました.
これからの講義も楽しみです! 話は変わりますが,
他の皆がタイピングでどれくらいのスコアなのか,
どのタイミングでもいいので提示していただけると嬉しいです.
どうか,
宜しくお願いします.
課題6で解決.素晴らしい.
スコアについては次回あたりに発表しましょう.
以前,個人的にPythonの触り部分だけ勉強したことがあったのですが,
Pythonでは変数の宣言で型までは宣言しなかったのでC言語との違いに困惑しました.
これから先も言語による違いが多く出てくると思うのでその都度対処したいと考えています.
本当はPythonにも型はあるのですよ.
ある意味明示的に見えないだけで,変数には,
その型と値の両方の情報を持っているということです.
型宣言をしなくていいので,ある意味便利ですが,
でもその変数の型が何かという関数が用意されているくらいなので,
必要になるときもあるというところですね.
変数の宣言方法や使い方はすんなりと理解することが出来ました.
しかし,単精度・倍精度は前期の授業でも理解が甘かったところなので出てきたときに焦りました.
授業のノートとネットを活用して復習します.
演習ではエンターキーが入力とされてしまって読み飛ばされてしまうことに苦戦しました.
TAの方に対処法を教えていただきましたが,
これからプログラムをしていく上で結構出てくるのではないかと思うので,
意識するよう心がけます.
気合いで乗り切れます!
scanf() が難しかったです.
特に文字を入力するときに改行が入力されてしまうのを直すのに苦労しました.
調べてみるとスペースを用いたり %*c%c としたりしているのを見かけたのですが,
この2つの違いは何でしょうか.
スペースを入れると読み飛ばしてくれますが,後者だと読み捨てるので,
もし空白を意図的に入れたいときは前者でしょうか.
getcharで,
改行文字やスペースが一文字としてカウントされるのには驚きました.
除去する必要が出てきてしまうので,
文字を入力する際もscanfを使った方がミスが少なく済むのではないかなと思いました.
これはキーボードから入力した情報がバッファに溜まって,それが次々処理されるからですが, 次回その説明をします.
課題5の改行を読み込んでしまうところについて初見では少々難しかったです.
また,getcharとscanfの違いについても自分で調べてみたがいまいちぱっとしなかった.
だが,変数についてはとてもよく理解する事ができたのはとてもよかった.
前回もそうだったが,演習をやり終わってから時間がかなり余ると感じた.
まだ最初ですからね.徐々に増えていきます.
授業ありがとうございました.
問題が特にありませんでした.
よろしいと思います.
いくつか手こずったところもありましたが,
自力で解決できました.
課題内容の課題のソースコードには適切なコメント文を記入する,
というのは提示されているコードに出力時には表示されない何らかのコメント文を加える,
という解釈でいいのでしょうか.
その場合全ての課題に少なくとも一つはコメント文を書かなければいけないのでしょうか.
自力で解決したのは素晴らしいです.
コメントについてですが,実は難しいのですが,
今のレベルのコードではほとんど必要ないとは思います.
その意味ではわざわざ入れる必要はありませんが,でも課題6のように
違いを知るためのものであれば,理解したことを書いておくのは良いと思います.