C言語なら俺に聞け 144
■ このスレッドは過去ログ倉庫に格納されています
>>210
個人利用の範囲で商用利用しなければ問題ない >>204
そこまで言うならって
俺は何か間違ったことや行き過ぎたことを言っているか? サブマリン特許は公開されてないから、「サブマリン」なんだが
それを誰が調べるの? >>217
それ昔の話
今は出願から一定期間経過したら公開されるし特許の権利期間も出願からの期間となってるからサブマリン特許はほとんどないよ >>219
これはプログラミングの話じゃなくてお前の日本語読解能力の問題。
13-3 の問題文にモロにヒントが書かれてる。 既にある連結リストにはqsortは使えない(これは常人でも考えれば分かる)
後からどうしてもソートしたいならマージソートを使う(これは常人がすぐに思い付くモンじゃないので知らないと出来ない、つまりは考えても無駄) >>210,212
著作権は商用かどうかは無関係。
個人で楽しむなどの目的で例外的に複製が認められるだけ。
もちろん勉強用なら複製は構わない。
それ以上の利用は本に明示してあることもある。 >>221
「だよねぇ」じゃなくて「13-3の3行目ですかねぇ」だろ。 ここで言っているコピーって、書籍に掲載されているロジックをそのまま借用するって事だよね >>219
「以下のプログラムの (1) (2) の部分を作成し」の「(1) (2) の部分」が見つからない >>226
ヒント:exit(1) の「(1)」のところかな?
言いたいことは分かるけど、まぁ…ね。 >>219
というか、これ学校の宿題レポートで先生が作った問題じゃないの?
こんな場でまるまる公開して教えてくれ、って大丈夫なのか。 >>219見てちょっと考えてみたけど、
初回だけ(topが未設定の場合だけ)場合分けで例外的な処理がいるの?
あと、大小で判定して挿入するとき、先頭もしくは末尾だけは例外的な処理がいるの?
かっこよくスマートに書けるやりかた教えて! 連結リストで検索すればお手本は大量に出てくる
この改まった場で今更説明するほどのものでもない >>234
なんも見ずに書いてみたけど(コンパイルもしてないけど)
片方向リストにしたらこんな感じかなあ
見た感じスマートじゃないからたぶん無駄なことしてるんだろうけど
// 打席数、安打数は省略
typedef struct PLAYER_tag PLAYER;
struct PLAYER_tag {
char name[20];
PLAYER *next;
};
int main() {
PLAYER *top; // 先頭の要素
PLAYER *p; // 追加する要素
PLAYER *q; // 現在の要素
PLAYER *z; // 一つ前の要素
(省略)
top = NULL;
while (EOFでない) {
// 1行読み込んで名前(name)、打席数、安打数を取得
(省略)
malloc(p, sizeof(struct PLAYER));
memset(p, 0, sizeof(struct PLAYER));
strcpy(p->name, name);
// topが未設定の場合だけは例外的な処理
if(top == NULL) {
// 先頭に挿入
top = p;
} else {
q = top;
z = NULL;
// リストの先頭から順に走査
while (q != NULL) {
// アルファベット順が大きい要素の直前に挿入
if (strcmp(p->name, q->name) < 0) {
if (z != NULL) z->next = p;
p->next = q;
break;
}
z = q;
q = q->next;
}
// 末尾に挿入するときだけは例外処理
if ((p->next == NULL) && (z != NULL)) z->next = p;
(省略) >>235
先頭に挿入した場合の例外的な処理も必要だった
if (z != NULL) z->next = p;
↓
if (z != NULL) {
z->next = p;
} else {
top = p;
} >>235
>struct PLAYER
PLAYER
の誤りだった とりあえず、実際にはリストとデータは分けた方がいいよね。
あと、リストのtopも実体にしたほうが、いい予感。 割とマジでvolatileって何に使うんだ。。。? >>239
volatile は揮発性のものってことで、読んだ次の瞬間に値が変わっている可能性がある変数に付けとくやつだ。
その変数は実際にはハードウェアによって変化するものに結びついているかも知れないし、他のプロセスや
スレッドによって書き換えられるものかも知れない。とにかくそのプログラムのメインの流れとは無関係に
変化する可能性があるということ。だから読む場合は必ずその変数の内容が読まれるようにコンパイルされる
必要がある。最適化してさっきから変更してないからレジスタに入ってる内容で代用しようみたいなコードに
なってはいけないわけだ。volatile を付けておくとそういう最適化をしなくなる。 >>239
知らないほうが幸せだよ
本当に必要なプロジェクトなら、過去に誰かがよく分からん不具合に何日・何週間も悩まされた末にコーディングルールに追加されてるから >>239
UARTのFIFOレジスタとかに使う。
ハードウェアを直接叩かなければ普通は要らない。 >>235
やっぱアセンブララッパー言語はゴミコードだな setjmp(), longjmp() 使う時も volatile 使わねばならない時がある。
https://www.jpcert.or.jp/sc-rules/c-msc22-c.html
ま、longjmp() 使うこと自体が稀だろうとは思うが。 長いことやってるがsetjump,longjump見たことない。 >>244
マルチスレッドとか使ったことないのか? longjmpはC++の例外のクソさに耐えきれなくなったときに使う >>249
普通は同期用の専用オブジェクト(mutex とか semaphoe とか)を使っておくね、それでいいよね… >>249
そのサンプルコード、ハンドシェークしてるんだが、そもそも普通これしないよな?
並列させたいだけなら、普通はシグナル(sleep/wake up)で同期させる。それの方が軽いはずだし。
スピンロックでハンドシェークって、完全非同期で独立動作してるときだが、
あまり用途は無いと思うんだが。 例えば、スイッチを入れると割り込みが入ってループから抜け出すプログラムとかでループ制御フラグをvolatileにする。 vbaを扱えるようになったんで次にC言語触ってみようと思うんですが、どう勉強してったらいいですか?これ作ればあらかた基礎コードや仕組みが学べるものってあります?
やることによるんだろうけど、例えばテトリス作れば基礎が固まるとか。ネット検索しても今一ピンとこなくて。
おすすめの参考書とかもあれば教えてください。 >>259
せっかくvba憶えたんならマシン語から入ってみては?
https://pf-j.桜.ne.jp/program/tips/vbasm.htm
ちな俺はBASIC->マシン語->Cで憶えたクチで
マシン語が透けて見えるCの特徴をありありと感じながら使えて
多重レベルポインタの**を全く悩まずにすんなり習得できた >>259
コマンドラインで使えるミニツール(dirなど)を真似て作ってみたら?
標準入出力、ファイルアクセス、データ編集の基礎が身につくと思う。 dirはファイルアクセスせんだろ
ファイルシステムに問い合わせをするだけで ディレクトリも一応ファイルと言えばファイルなわけで・・・ openもcloseもせんしデータ構造を理解してseekする必要もない >>259
Small-Cっていう C言語のサブセットがあって、
そのコンパイラを作るって本があったよ。
オレはこれで C言語の基礎を勉強した。
30年くらい前かな?
たぶん絶版で入手困難だと思う。
あと、アンドリュータネンバウム先生のMINIXオペレーティングシステムも勉強になる。
Linuxを作ったリーナストーバルズもアンドリュータネンバウム先生の教え子だったはず。 ディスクの挙動が知りたければ、Read Diagnostic だな 初心者は結城浩先生の
新版C言語プログラミングレッスン-入門編-
あたりで学習しときなyo! >>266
コンパイラつーか構文解析は何年たっても勉強する気が起きないわ
ほんと大変そうなんだもん プログラミング初心者なんだけどコマンドプロンプトとかの知識って必要なん?
一応簡単なバッチファイル作れるレベルまでは来たんだけど バッチファイルが作れるレベルでコマンドプロンプトの知識が必要かどうかがわからんとかあり得るのか... >>271
IDE build に頼らないで make する必要があるのなら
バッチファイルを作れる程度なら十分 >>271
君にとって必要かどうかは君がこれから何をするかによって変わる。 ファイルのIOの部分難解すぎて意味がわからない。
・文字列を処理したいのにchar型とかint型とか byte型とか
出て来るしtry catchとかIOExceptionとか何なのかがよくわからない。
・なんとかOutputStreamとか なんとかReader Writerが
おおすぎてどれを使っていいかわからない。
・オブジェクトを生成して別のコンストラクタの引数に渡している部分が
何をしているのかさっぱりわからない。
・BufferedReader / Writerとかを使う必要があるのかないのかよくわからない。
・結局文字列を読み書きするのとバイトを読み書きするのが何が違いがあるの?
・for(item : list){}文は使えないの? すみません、Javaのスレに書こうとして間違えました fwprintf(stdout,L"日本語");
4回に1回くらい文字欠けするんだが... fflush入れてみろ
もしくはsetvbufでバッファーサイズを0に プログラミング全く関係ねぇんだけど
組み込み系のプログラマーって電子制御とか電子回路、機械工学の知識必要ないん?
これ絶対プログラミングだけの知識で食っていける分野じゃねぇだろ 必要ないわけ無いじゃんw
何でそんな勘違いにたどり着いたしw >>281
やっぱそうなん?
あほらし
じゃあ組み込みc言語の本全部捨てよ
あほくさ、そんなん全部学ぶとか無理無理
情報工学の二回生だけどやめやめ、ばーか Cは別に組み込み専用言語でもないんだし、勉強続けりゃ良いじゃん。 >>283
あほやなぁ...
組み込み系以外でc言語の案件なんかまともにねぇだろ
どっかでグラフ見たけどcの用途なんか限られまくってるし
素直にPython勉強して人工知能するわ
人工知能なら電子回路とか機械工学の知識必要なさそうだし 組み込みCもいずれは勘定系のCOBOLみたいにごく一握りの職人にしかメンテできない時代になるんかな >>285
ヒエ〜!
機械工学科と電子電気科でもプログラミングの授業に力を入れる運動が出て来てるし(メカニクス的な意味で)こわい
情報学科って生きていけるんやろうか
俺も今のうちに基本的な電子回路制御の知識はつけておくべきか
アルゴリズムとか通信系学んだところでなんの意味があるんだくそがっ! どうかなあ?少なくとも新しいデバイスのデバイスドライバはC使われ続けるんじゃないか?丸々全部アセンブラにするより楽だから。
その後の処理は何の言語でも良い。 あとやはりOSはまだまだC言語使われ続けると思う。UNIXやLinuxは根深いからな。
LinuxなんかAndroidのベースになっちゃったしそこらじゅうのネットワーク機器や家電に入っちゃったもんだからまだまだ思い切り使われ続けるだろう。 C が滅びることはないでしょうね、真っ先に移植されるのが C コンパイラだし
>>289
はい とりあえず電子電気工学とか機械工学科じゃ太刀打ちできない人工知能の研究室選ぶは...
やっぱ時代はアルゴリズムや! 人工知能の高速化にGPUとASICが必要になる時代にCから逃げられると思うなよ >>292
もちろんcとPythonはやるぜ!
Java、Rubyさんはポイッ!w
あとは線形代数とかの数学的知識も必要か...
夢を決めると頑張れるな プログラマーは鳥籠のようなものだ。
外にいる鳥たちはいたずらに中に入ろうとし、
中にいる鳥たちはいたずらに外に出ようともがく。 見聞を広げた方が、新しいアイデア浮かぶから、捨てるなんて馬鹿な選択するな。
むしろ全く関係無い分野の知識が思わぬアイデアを出してくれるのがこの業界。 >>289
そう。ソース公開されてるから見てみな。
所々アセンブラ使ってる所があったとは思うが大半がC言語。
これについてはUNIXも同じ。というかむしろOS作って配布しやすくするためにC言語作ったようなもの。
そうするとCPUが違っても移植が楽だからね。 >>295
それだけ根性ねえやつがなる職業ってことかねえ
俺の時代っちゃなんだけど、あの当時は大学に情報処理のコースなんかほとんどなくて
大人たちはみんなゲーム小僧の遊びの延長はメインフレームには関係ねえなんて
ぬかしてやがってて、それでも実際に大学のセンターと家のマイコンを触り比べて
一縷の勝ち目を感じるのを信じて大勝負に出たんだよ
でジジイたちにひと泡吹かせることにはいちおう成功した
今さら後悔なんかしてねえぜ ぜひ組み込みCを自らプログラミングできる人工知能を生み出して
このスレにいる前時代の遺物のおっさんどもをギャフンと言わせてほしい 情報工学だからこそっていう仕事ねぇのか?
組み込み系って
情報工学でもやっていけるんか結局?
機械工学、電気電子のやつより上にたてる?
あいつらよりは地位上でいたい
なんかムカつくから あくまで私見だけどね
ストレートに情報へ行ったやつより
遠回りしてきたやつのほうが
俺は個人的には期待しちゃうな
ストレートタイプにもすげえのいるけど
確率論的なやつで 情報工学って結局何ができるのかね?
プログラミングなんかやってる奴よりは
MATLABとか操ってる奴の方が格上だし
PowerPointとExcelしか触らない奴の方がさらに格上だわな >>302
情報専攻の奴が他分野と張り合うとしたら工学の領域では厳しい
情報工学としてではなく情報科学の方面で学会とかで研究成果を発表していく研究者としての方が
上の立場を狙いやすいと思う 電気電子では技術者、情報では研究者、立場的に主流となる流れが違う印象だね >>302
そもそもpythonがC言語で書かれてるから当分は心配しなくていい 日本じゃソフトはハードのおまけだからどの分野でも立場は上がらないよ。
人工知能も車とかその他製品の便利機能にすぎん。 士・農・工・商・メカ・エレ・ソフト
機構設計(メカ)、ハード設計(エレキ)、ソフトの順で、ソフト技術者は最底辺ではある >>303
なんか先輩で
機械工学から大学院で知能情報なんとか?に入った人いるって言ってたけどそういうタイプか
でもそういうのって役に立つ人材なのかね
機械工学と情報工学が交わることって一切ないし ■ このスレッドは過去ログ倉庫に格納されています