07/08/31 04:21:39
純真な若者に変なことを教えてしまわないように、
大学のプログラミング演習の課題をブラッシュアップしよう。
2:デフォルトの名無しさん
07/08/31 04:23:57
まずは、熊本大学のプログラミング演習第二。
問題は↓
URLリンク(www.syst.cs.kumamoto-u.ac.jp)
くれぐれも、担当助手に個別連絡しないようにしてください。
スレで十分に議論して結論をまとめてから、代表一名が連絡するように。
3:デフォルトの名無しさん
07/08/31 04:45:44
>>1
不可でもつけられたのか?? 言いたいことあったら自分で言ってこい。
4:デフォルトの名無しさん
07/08/31 05:31:03
URLリンク(www.syst.cs.kumamoto-u.ac.jp)
> 問題2
> 以下のプログラムを見て,問に答えなさい.
> #include <stdio.h>
> #include <stdlib.h>
>
> #define SIZE 5
>
> int main()
> {
> int a[SIZE], i;
> int *b = (int *)malloc(sizeof(int)*SIZE);
>
> for (i = 0; i < SIZE; i++)
> a[i] = i * i;
>
> for (i = 0; i < SIZE; i++)
> b[i] = a[i];
>
> for (i = 0; i < SIZE; i++)
> printf("%d ", b[i]);
> printf("\n");
>
> return 0;
> }
5:デフォルトの名無しさん
07/08/31 05:31:37
>
> 1. 「配列aとmallocで確保された領域bの違いは,
> 静的に確保されるメモリ領域と,
> __に確保されるメモリ領域という違いがある.」
> __に入る適切な言葉を以下から選びなさい.
>
> a.愛ゆえ
> b.俺的
> c.仮想的
> d.動的
これは酷い。
6:デフォルトの名無しさん
07/08/31 08:10:21
おもむろに
にわかに
やにわに
7:デフォルトの名無しさん
07/08/31 08:37:54
しかし、いくら個人名がないとはいえ、こんなもの公開しちゃダメだろ。
URLリンク(www.syst.cs.kumamoto-u.ac.jp)
さすがに成績はロックしているようだけど何考えてるんだ?
8:デフォルトの名無しさん
07/08/31 09:11:06
夏厨が最期の力を振り絞ってゴミスレたてまくってるな
9:デフォルトの名無しさん
07/08/31 09:32:32
課題にいちゃもんつけて期限延長とか課題自体を無効にしたいのかね
10:デフォルトの名無しさん
07/08/31 09:36:49
>>9
どっから、そういう発想が出てくるんだろ。
とっくに提出期限は過ぎている課題っしょ?
11:デフォルトの名無しさん
07/08/31 09:51:19
>>10
成績提出期限までなら成績変えられるからなぁ
12:1
07/08/31 10:08:19
>>11
考え杉。
とっくに大学は卒業してる。
ましてや熊本大学でもない。
別スレで見かけて、
こりゃ酷い
と思っただけさ。
13:デフォルトの名無しさん
07/08/31 10:09:39
マジウゼェ
リアルで死ね>>1
14:デフォルトの名無しさん
07/08/31 10:12:43
間違った知識を植えつけられ、
へんてこなコードを書く人間を、
業界に送り込んでくる大学の
ほうが遥かにウザいのですが。
15:デフォルトの名無しさん
07/08/31 10:15:29
マ板でやれ
16:デフォルトの名無しさん
07/08/31 10:23:03
いかに酷いかを理解できない時点で、自分が酷いってことを理解してないってことだ。
17:デフォルトの名無しさん
07/08/31 10:34:27
大学は純粋培養で、
いま教える立場にある人達がC言語を覚えたのは、
10年とか20年も前だったりするんだろう。
そして今だにK&Rを教科書として使っていたりしてさ。
大学は職業訓練校ではないぞ、と言いたい人もいるだろうが、
他所の国の大学生が書いたオープンソースのコードを見て、
自分のところの学生の書くコードと比べてみるべきだろう。
18:デフォルトの名無しさん
07/08/31 10:58:06
べつにどーでもいいんじゃね?
19:デフォルトの名無しさん
07/08/31 11:34:53
これが東大なら大問題だが、熊本大なら無問題。
staticという予約語がある以上、別の意味で「静的」なんて言うべきじゃないんだけど、まぁいいや。
20:デフォルトの名無しさん
07/08/31 12:42:38
sizeof(char)が必ず1でも、省略すべきではない
スレリンク(tech板:304-308番)
スレタイトルは添削とあるが、余りに酷いのでその気も失せた。
21:デフォルトの名無しさん
07/09/01 06:01:39
URLリンク(www.syst.cs.kumamoto-u.ac.jp)
あまりに酷い。
メモリの管理がテーマではないにしろ、mallocしたものをfreeしないで終了するなんて。
バグの原因になるのでfreeしないほうがいい教を布教するのは勘弁してほしいです。
22:デフォルトの名無しさん
07/09/01 23:58:40
ageますよ。
23:デフォルトの名無しさん
07/09/01 23:59:46
そんなリストならfreeする必要なんて全然無いけどな
24:デフォルトの名無しさん
07/09/02 00:00:28
>>22
リアルで死ね
25:デフォルトの名無しさん
07/09/02 00:11:25
>>23
あなたが自家用に書くプログラムで手抜きするのはいいが、学生に教えるのはマズいでしょう。
こういう例で勉強した学生さんは、freeする必要があるプログラムを書けないでしょう?
26:デフォルトの名無しさん
07/09/02 03:07:18
>>23
それこそが、
バグの原因になるのでfreeしないほうがいい教
ってやつだな。
27:デフォルトの名無しさん
07/09/02 13:28:55
>2007/09/02
この日付と内容の古臭さのギャップに驚いた
28:デフォルトの名無しさん
07/09/04 03:02:29
だいたいさ、大学で素っぴんのC言語なんて教える必要あるの? 時代遅れじゃない?
ふつーJavaだろ?
29:デフォルトの名無しさん
07/09/04 06:52:48
教授が時代遅れなんだからしょうがない。
さび付いた頭でJavaを覚えなおせなんて酷だろう。
30:デフォルトの名無しさん
07/09/04 08:10:22
こういう講義をするのは、助教授・準教授クラスの若い人だし、
課題の採点をするのは、助手とか博士課程の学生だよ?
だいたい、URLを削って出てくる研究室の研究内容は、
URLリンク(www.syst.cs.kumamoto-u.ac.jp)
だよ。
JavaではなくCが必須だというのはわかるが、
プログラミングの基礎をCでやる必要はないと思う。
31:デフォルトの名無しさん
07/09/04 09:18:29
いや、「今の時代○○だよな」という考えで言語を選んでるんじゃないし…
言ってみれば、実験器具の使用方法を学んでいるのに等しい
のちのちC言語やFORTRANを使わされる人が多いからC言語やFORTRANを学ぶんだし
教養科目によっては「今の時代○○だよな」とかそういう「プログラミング思考なら何でもよし」なノリで選ばれることはあるけどな
32:デフォルトの名無しさん
07/09/04 10:05:53
漏れが若い頃は、いきなりC言語はキツいので、Pascalから入ったぞ。
33:デフォルトの名無しさん
07/09/04 17:43:16
というか、9割までの人間にとって必要なのは変数とループと条件分岐と算術演算くらいだろ
C言語である理由はほぼゼロだ
ポインタやらメモリ管理やらは不要な知識
Javaの「おまじない」もな
34:デフォルトの名無しさん
07/09/04 18:43:14
データベースでしょ。最終的には。それ以外いらない。
35:デフォルトの名無しさん
07/09/04 19:29:57
ぶっちゃけ、
MS-ExcelとVBAマクロで十分
だと思うんだよね。
変数や配列を表のオブジェクトとして持てば、
入出力のコードを書かなくて済むし、
処理中のデータの様子も見れるしさ。
キーボードからインタラクティブにデータを入力させ、
それをscanfで受けるとか、
もう、馬鹿馬鹿しい。
36:デフォルトの名無しさん
07/09/10 04:40:06
プログラミングの授業って、数学や物理に比べたら、はるかに簡単なのかな。
37:デフォルトの名無しさん
07/09/18 13:14:38
なぜ大学でプログラミング演習やるかっつーと、実際に研究初めてデータ解析に進んだとき必要になるから。
ということでjavaなどやっても時間の無駄遣い。
というか自分しか使わないプログラムなんだから、スパゲッティだろうとメモリ管理がいい加減であろうと
どうでもよい。free()?いらねーよそんなもん。
大体、知識足らずを業界に送り込んでくるってなに甘えてんだ。
金融だろうと商社だろうと製造だろうと、どんな業界だって新入社員は実務経験ゼロで入ってくるんだよ。
そいつらを教育するところから仕事なんだろ。
多少なりともコンピュータに触る時間を作ってやった大学に感謝しろ。
38:デフォルトの名無しさん
07/09/18 13:22:05
>>37
どうでもいいけど、マ板逝け
39:デフォルトの名無しさん
07/09/18 13:40:33
>>37
いまどき学生の間にアルバイトやベンチャーで、
いくらでも実務経験を積んでいると思うのだが。
実務経験ゼロの人間も取っているが、
プログラミング経験ゼロは取っていない。
この違い、わかる?
仕事ではなく趣味や研究のために、
一人で我流でプログラムを書く技術があることを前提に、
複数人でチームを組み、仕事としてプログラムを書くために、
やり方や作法を矯正していくのが、実務のための教育。
40:デフォルトの名無しさん
07/09/18 16:26:25
大学に職業訓練校になれとは言わないが、
せめて、
間違ったことや変なことを教えて遠まわりさせるのだけは、
やめてもらいたい。
自動変数がメモリ上に静的に確保されるだなんて、
そんな言い方をするのは、大学だからといって許されることではない。
41:デフォルトの名無しさん
07/09/18 16:37:27
>>39
バイトなんてただの社会見学だ、実務経験になんてならねえよ。
金融業務にバイトを携える企業があるか?? どこまで関われるかなんてたかが知れてる。
というかおまえさんは根本的に勘違いをしている。
>>複数人でチームを組み、仕事としてプログラムを書くために、
>>やり方や作法を矯正していくのが、実務のための教育。
大学はこんなことを目的としていない。
理系大学生のプログラミング教育は、自分自身で必要な数値解析を行えることを最終目的とする。
実務のための教育をされた人材を望むなら、まずそういう教育方針の学校探しから始めろ。
なんで学校で教えないんだよー、なんてのはただの甘えだ。
能力のある奴なんていくらでもいる。
結局、本人のレベルを見抜けなかった自分達が悪い。
42:デフォルトの名無しさん
07/09/18 16:52:19
>>41
郵貯や社会保険庁のシステムの孫請けでアルバイトしていた学生が、
NTTデータに就職するなんていうのは、よくある光景なんだがなぁ。
上流工程をやる人間が現場を知らないと思ったら大間違いだよ。
できる学生は、ちゃーんと勉強している。
> 大学はこんなことを目的としていない。
当たり前だ。
あなたが引用した2行は、企業で行う新人教育の話だから。
その前提として、
> 仕事ではなく趣味や研究のために、
> 一人で我流でプログラムを書く技術
を、大学にいる間に習得しろという話なのだから。
43:デフォルトの名無しさん
07/09/18 16:59:33
>>40
それは本当に正しい。
今の大学には、「情報教育」とか名乗っておきながら意味不明な授業を
展開する輩が多すぎる。
俺の分野で使うなら、どう確保されるなんて構わず、変数として使えれば困らん。
だから、こうすれば使えます、こう書けばいいんですとまでしか言わない。
もちろん聞かれりゃ答えるし、勉強したくなったやつは自分でしてる。
嘘を教えることは最大の罪だ。
これは、教育機関として絶対に許されるべきことじゃない。
44:デフォルトの名無しさん
07/09/18 17:13:23
>>40
それは本当に正しい。
今の大学には、「情報教育」とか名乗っておきながら意味不明な授業を
展開する輩が多すぎる。
俺の分野で使うなら、どう確保されるなんて構わず、変数として使えれば困らん。
だから、こうすれば使えます、こう書けばいいんですとまでしか言わない。
もちろん聞かれりゃ答えるし、勉強したくなったやつは自分でしてる。
嘘を教えることは最大の罪だ。
これは、教育機関として絶対に許されるべきことじゃない。
>>42
そういう奴らは、今話してる「変な教育受けた使えない学生」じゃないでしょ。
もともとインターンなりで十分判断できた上で採るんだから。
今は、「大学でて、とりあえずプログラマ受けてみました」っていう学生についてだ。
そういう奴らが怪しげな知識を持っている、これは大学が悪いのか?? っていうことを
話してるんじゃないのか??
>仕事ではなく趣味や研究のために、
>一人で我流でプログラムを書く技術
だからこれは今の段階で十分取得できている。
あんた、大学研究で必要とされるプログラミングレベルを過剰評価してないか??
45:デフォルトの名無しさん
07/09/18 17:14:20
かぶった
46:デフォルトの名無しさん
07/09/18 17:42:01
>>44
> だからこれは今の段階で十分取得できている。
mallocしてfreeしないのは、習得できているとは思えないけどな。
少なくとも情報工学とか銘打っているところでは、許されないだろう。
たとえば生物工学の人なら、
研究のための道具の1つに過ぎないプログラムを書くというのなら、
目的どおりに動けば何でもいいと思うよ。
でもね、情報工学の人は、それはダメだろう。
学部1~3年で様々な講義を受けておいて、
いざ研究となったら、それらを全て無視して、
動けば何でもいい、というのはお粗末過ぎる。
47:デフォルトの名無しさん
07/09/18 18:13:32
>>46
たしかにそれは正しい。そのへんは>>44でも言ったとおり、許しがたい奴らが大勢いる。
これ以上なんか言うと教育論になってしまうな。
48:デフォルトの名無しさん
07/09/20 21:56:23
> mallocしてfreeしないのは、習得できているとは思えないけどな。
常駐プロセスなら free するべきだろうけど、malloc したら必ずしも free する
必要はあるまい。
49:デフォルトの名無しさん
07/09/20 21:59:30
バカか
50:デフォルトの名無しさん
07/09/21 00:10:46
>>48
ソフトウェア工学とか勉強しておいて、
そういう非対称で歪なプログラムを書くのは、
キチガイだと思うんだが。
51:デフォルトの名無しさん
07/09/21 00:20:43
>>50
キチガイがあふれている世の中では生きにくいですね><
52:デフォルトの名無しさん
07/09/21 00:32:53
ただでさえ発展途上のソフトウェア工学が、
今よりもずっとずっと未発達だった頃の
やりかたでやるのは、どうかと思うよ。
20年前と同じじゃん、と。
53:デフォルトの名無しさん
07/09/21 00:34:41
別にデーモンでもないプログラムで馬鹿みたいに指摘するの方がどうかと思うけどね
54:デフォルトの名無しさん
07/09/21 00:40:47
>>53
そういう考え方は、昔にあったな。
プロセスの寿命は短く、
freeはバグの原因になるから、やらないこと
そういってプロセスをぼっこぼこforkしまくるというのが。
55:デフォルトの名無しさん
07/09/21 00:44:05
freeはバグを顕在化させるから、やらない
というのなら、まだ、いい。
freeがバグの原因だとか言うようじゃ、死んだほうがいい。
freeして問題になるようなら、freeしなくても問題なんだ。
ただそれが、表に出て来ないだけで。
56:デフォルトの名無しさん
07/09/23 23:45:00
なんでもいいから、準教授くらいになって論文書いてくれたら読んであげるよ。
57:デフォルトの名無しさん
07/09/24 02:46:16
>>56
いきなり何を言い出すんだ。
学生の教育なのだから、
たとえ例題が小さなプログラムだろうと、
大きなプログラムと同じようにやるべきだろう。
それともなにか、
あんたのところの研究では、
小さなプログラムだけで片付くのかい?
58:デフォルトの名無しさん
07/09/24 02:54:00
権威主義者が居るスレはここですか?
59:デフォルトの名無しさん
07/09/24 03:31:09
>>57
なにその大きなプログラムとか小さなプログラムとか。
まずは、プログラムの大きさについて書いてくれ。
60:デフォルトの名無しさん
07/09/24 03:45:09
>>59
小さなプログラムだから、適当でいいじゃん、という主張をしている人に聞いてくださいな。
61:デフォルトの名無しさん
07/09/24 03:49:50
>>60
>>57 と同一人物なのかわかんないけど。
「小さなプログラム」という言葉は、このスレでは >>57 が初めて使ったと思うんだ。
なにをもって「小さなプログラム」としたいのか明らかにしてもらわないことには
話が進まないと思うよ。
62:デフォルトの名無しさん
07/09/24 04:03:14
>>61
「小さなプログラム」という言葉は出てなかったね。
たとえば>>4のようなプログラム。
63:デフォルトの名無しさん
07/09/24 15:45:46
freeくらいめんどくさがるなよ
64:デフォルトの名無しさん
07/09/29 16:21:57
自前プール作って、プールごとfreeすればいいじゃん
65:デフォルトの名無しさん
07/09/29 22:02:41
プールを使うにしても、
free(p) ;
が
oPoolHoge.free(p) ;
とかになるだけじゃん。
66:デフォルトの名無しさん
07/09/29 22:11:03
いや、atexit()使って登録してしまえば明示的に呼ぶ必要はなくなる。
67:デフォルトの名無しさん
07/09/29 22:59:32
>>66
そんなことなら、freeしないのと一緒だろ。
68:デフォルトの名無しさん
07/09/29 23:06:00
freeすることが目的じゃあない。
1つは、その関数が繰り返し呼ばれたときにメモリリークしないこと
もう1つは、ポインタの指す先が無効であることを明確にすること
69:デフォルトの名無しさん
07/09/29 23:52:04
呼ばれてから、戻るまでしか寿命がないなら、
スタックでなんとかならないか検討する。
atexitだけじゃなくて、atreturnとかatendofscopeがあればいいのに。
70:デフォルトの名無しさん
07/09/30 00:54:34
>>69
C++のデストラクタは、スコープ抜けるタイミングで呼ばれるよ。
71:デフォルトの名無しさん
07/09/30 08:26:26
そうですね。そのおかげでC++でRAIIが実現できたわけで。
RAIIでちゃんとやれば、リソースの解放忘れは、だいぶ気にしなくて良くなりますね。
GCC使うなら、Cでもcleanupのattributeをつけてやれば、似たことは出来ますけど。
72:デフォルトの名無しさん
07/10/15 08:50:10
GC使えよ
73:デフォルトの名無しさん
07/10/15 15:21:27
メモリだけならGCでいいけど。
74:デフォルトの名無しさん
07/10/17 10:49:14
掛け算九九を出力しなさい。
for(i in 1:9){for(j in 1:9{
の後はどうすれば九九が出ますか?
わからないんで教えてください。
75:デフォルトの名無しさん
07/10/17 13:16:19
その言語は何?
76:デフォルトの名無しさん
07/10/17 13:47:58
>>72
冗談はよしてくれ。
77:デフォルトの名無しさん
07/10/17 18:49:58
九九プログラム
#include<stdio.h>
#define MAX 9
int main()
{
int i, j;
for(i=1; i<=MAX; i++){
for(j=1; j<=MAX; j++)
printf("%d * %d = %d\n", i, j, i*j);
}
return 0;
}
多重ループが理解できればおk
78:デフォルトの名無しさん
07/10/18 16:11:10
x[i+1]=0.5x(i)+1をx[1]=10を初期値としてx[100]まで求めなさい。
これのやりかたを教えてください。
79:デフォルトの名無しさん
07/10/18 16:56:32
>>78
double x[101] = {0, 10};
for (int i = 1; i < 100; ++i) x[i + 1] = 0.5 * x[i] + 1;
80:デフォルトの名無しさん
07/10/18 18:00:48
>>78
宿題を代わりにやるスレではないんだが。
ネタを振るなら、
大学名・学科名・教授名・科目名などを明らかにした上で、
問題の全文を晒してくれ。
81:デフォルトの名無しさん
07/10/20 13:09:45
x[i+1]-2=0.5*(x(i)-2)
だから、
x[i]=pow(0.5,i-1)*8+2 だね。あとは適当に i を決めれば?
82:デフォルトの名無しさん
07/10/22 10:16:22
>>81
スレ違い。
83:デフォルトの名無しさん
08/02/01 07:34:48
出身学校別・国益貢献力ランキング
高専>京大>東工・理科大>大学校・図書館情報≫電通・農工≫早慶≫高卒(農・水)>高卒(工・商)≒一橋>(要再教育の壁)>中卒≒高卒(普通)>(矯正不能の壁)>ソウル大(笑)≒東大
84:デフォルトの名無しさん
08/02/16 08:34:45
かなりスレ違いな予感がしますが投下
当方文系私大5回生です。
プログラミング入門という科目があって
そこで初めてプログラミングを経験したのですが(VisualBasicをやってます)
ベテランプログラマーの方々に質問です。
実技試験とか提出した課題が全て
「テキストボックスを空白にしていない(TextBox1とか入ってる)」
or
「名前書き忘れ(Form1.vb[デザイン]とForm1.vbの両方に記名が必要とのこと
ちなみに提出したフォルダ名は学籍番号なので個人特定可能)」
といういずれかの理由で評価対象外となり
0点にされて単位もらえずまたもや留年の危機ww
デバッグ無しで開始すると課題テーマ通り正常に動作するのですが・・・・
開始ボタンをクリックするとテキストボックスが空白になるように
自分なりに工夫してみたつもりでしたが裏目に出た結果になりました。
名前はForm1.vb[デザイン]とForm1.vbの両方に氏名表記がないと
採点するつもりはないと断言されてしまいました。
片方あればいいと思ってたorz
この採点基準はプログラマー的には普通なんですか?
「その2つは講義中に当然の常識的プログラミングマナーとして注意した」
と言いくるめられてしまったが、タイピングに必死で先生の発言なんて
聞いてる余裕なかったんだよおおお
これは独り言ですが、私と同様の感覚で提出していた友人二人はちゃんと点数ありました。
なんでやねん。
85:デフォルトの名無しさん
08/02/16 10:34:58
そんなDQNな講師がいるレベルの大学に入った奴が悪い
だから高校のときに皆必死でより偏差値の高い大学目指して勉強するのだ
86:デフォルトの名無しさん
08/02/16 10:52:17
単なる嫌がらせ。
87:デフォルトの名無しさん
08/02/16 10:58:12
プログラミング演習にVBなんか使うところだからたかが知れてるよね。
88:デフォルトの名無しさん
08/02/16 12:38:45
採点基準としてはどうかわからないけど、まあ誰が書いたかわかるようにはしておく。
89:デフォルトの名無しさん
08/02/16 13:31:16
他人のソースぱくってて
そいつの署名が残ってたから
0点にされただけだろうな
90:デフォルトの名無しさん
08/02/18 18:18:27
ソースの冒頭に著作権表示は最低限入れとかないとダメだろ
91:デフォルトの名無しさん
08/02/18 18:33:03
// (C) 2ch
92:デフォルトの名無しさん
08/02/19 05:34:55
プロセス終了とともに勝手にメモリ解放されるんだからfree()とか使う必要ない。
93:デフォルトの名無しさん
08/02/19 11:48:12
最後まで使うならね。
94:デフォルトの名無しさん
08/02/19 19:46:33
確保と解放を繰り返すような糞設計をしなけりゃいいだけだし。
95:デフォルトの名無しさん
08/02/20 18:48:40
まあそうだ。処理次第だけど。
処理単位に複数プロセスにして殺せばいいか。
96:デフォルトの名無しさん
08/03/21 00:31:42
>>92
またfree()不要論者かよ。
すくなくとも教育なんだから、
きちんとリソースの管理をするように教えるべきだろ。
97:デフォルトの名無しさん
08/03/21 01:25:37
一つ言えることは
本当に優秀で実戦的なノウハウ豊富なプログラマの人は、
他人にそれを教えることよりも、より多くのソフトウェアを産み出すことに、
限られた時間を使うだろう。
一流のプログラマとしてやっていけず脱落した人、
もしくは、疲れて引退した人でなければ、
とてもではないが、入門書を書くような暇はないだろう。
ろくな本がない理由は、そういうことだと思う。
98:デフォルトの名無しさん
08/03/21 03:07:49
大学教授と低学歴マとでは書く本の格が違うのも致し方ない
99:デフォルトの名無しさん
08/03/21 05:48:36
>>97
俺もそう思ってた
焼酎学校にまともな教師がいないのも同じ理由らしい
100:デフォルトの名無しさん
08/03/22 14:53:22
洋書の有名な本でも、書いているのはコンサルタント。
コンサルタントは机上の空論の専門家だからな。
101:デフォルトの名無しさん
08/07/09 02:10:32
プログラマっておかしな奴多いよ
頭おかしいよ
97の考えには同意できない
脱落とか、引退とか、
所詮生きてくための職業だろうが、
なんでそんな必死になってんの
102:デフォルトの名無しさん
08/07/09 05:30:03
こんばんは、C言語の課題で困ってます。
誰かわかる人がいれば教えてくれませんか。
URLリンク(uproda11.2ch-library.com)
実行結果
データを読み込むファイル名を入力してください:input02.txt
データベース内のデータを並び替えます
並び替える科目を選んでください
(1)数学 (2)英語 (0)終了:1
並び替える順序を選んでください
(1)昇順 (2)降順 (0)終了:1
並び替える方法を選んでください
(1)単純交換ソート(バブルソート) (2)単純選択ソート
(3)クイックソート (0)終了:1
データベース内のデータを先頭から順番に表示します
Name: Spike
Math: 45 Eng: 30
Name: Rachel
Math: 55 Eng: 85
・・・・・・・・
・・・・・・・・
Name: Ross
Math: 90 Eng: 85
103:デフォルトの名無しさん
08/07/09 07:37:27
>>101
同意!
104:デフォルトの名無しさん
08/07/09 11:02:00
本当に優秀で実戦的なノウハウ豊富なプログラマの人は、
いちいちfreeすることに気を使うことよりも、より多くのソフトウェアを産み出すことに、
限られた時間を使うだろう。
一流のプログラマとしてやっていけず脱落した人、
もしくは、疲れて引退した人でなければ、
とてもではないが、freeを過不足なく丁寧に書くような暇はないだろう。
メモリリークしないOSやアプリケーションがない理由は、そういうことだと思う。
105:デフォルトの名無しさん
08/07/09 13:06:03
>>102
何が分からないのかな?
106:デフォルトの名無しさん
08/07/10 01:07:44
>>104
丁寧に書いてさえも、足りなかったり、余計な free() を取り除けなかったりする。
どっかの文庫のしおりにあったが、間違いを犯すのは、人間に与えられた(機械には与えられない)優れた能力だ。
丁寧さ、慎重さは、プログラマにとっては美徳だと思う。
コンパイルする前に、コミットする前に、デプロイする前に、少し思いをコードに馳せてみよう。
107:デフォルトの名無しさん
08/07/17 16:14:35
>>101
どんな仕事でもそうだが、第一線で働き続けるというのは難しいのですよ。
108:デフォルトの名無しさん
08/07/17 16:16:57
私も入門書を書きたいとは思うのだけど、対価を払ってくれる当てがないので口に糊する仕事をするしかないのさ。
109:デフォルトの名無しさん
08/07/17 16:17:21
>>104
その通り。
freeを人間が管理するのは一流のプログラマのやることではない。
110:デフォルトの名無しさん
08/07/17 16:18:24
>>102
終わってるな。
いまどきデータベースって言ったら、なぁ。
C言語でやるこっちゃないよ。DBMS使え。
111:デフォルトの名無しさん
08/07/17 20:36:59
何でもかんでもDBMS使えばいいってもんじゃないけどな
112:デフォルトの名無しさん
08/07/25 12:46:02
malloc/freeごときをきちんと管理できないやつは一流のプログラマとはいえないだろうよ。
あまりに複雑でどうしてもちゃんとfreeできないというならば、それはGCを使えということだ。
113:デフォルトの名無しさん
08/07/25 13:00:42
>>112
ちゃんとfreeできないほど複雑にしてしまうのは、一流のプログラマのやることじゃない。
114:デフォルトの名無しさん
08/07/25 13:19:58
大学の演習ぐらいならな。
115:デフォルトの名無しさん
08/07/25 13:26:09
いやいや。
プロの仕事だからこそ、参照カウントやGCという乱暴な解決手段を避けるのですよ。
それらは問題解決に役立つ便利なものに見えて、かえって問題をややこしくするから。
116:デフォルトの名無しさん
08/07/25 13:42:20
自分で複雑怪奇な設計しておいて、
複雑でどうしてもちゃんとfreeできないんだから仕方ないだろ! って音をあげつつ逆切れするのが三流プログラマ。
複雑にならないように設計し、あるいは、複雑にしろと命令されるような仕事をやらなくて済むようにするのが一流プログラマ。
117:デフォルトの名無しさん
08/07/25 13:48:46
C++で、コンテナ使いまくりのプログラムをCにコンバートする羽目になった洩れ。
半泣きになりながらどこでfreeするか検討したよ。
で、終わってからatexit()みたいな仕掛けでデストラクタもどきを実装すればよかったことに気づいた罠。
118:デフォルトの名無しさん
08/07/25 15:17:25
GCは乱暴じゃないよ。
119:デフォルトの名無しさん
08/08/02 22:32:52
>>92
本当ですか?
120:デフォルトの名無しさん
08/08/06 11:37:47
OSによる
121:デフォルトの名無しさん
08/08/06 19:18:55
>>120
BSDは?Linuxは?win32は?
122:デフォルトの名無しさん
08/08/07 13:35:49
そいつらはfreeで解放できるようなメモリなら真
123:デフォルトの名無しさん
08/08/08 11:43:36
メモリリークのバグを発見する手段として、
プロセスが終了する時点でfreeされていないメモリブロックの有無を確認する
というのがあるのだが。
乱暴にfreeを省かれていると、そういう確認ができなくなってしまう。
124:デフォルトの名無しさん
08/08/09 09:26:21
リークする可能性がある、リークすると困るようなメモリならfreeするでしょう。
そうじゃなければ勝手にしろってだけでは?
125:デフォルトの名無しさん
08/08/09 10:30:13
>>124
どれがリークに繋がらないfree省略で、
どれがリークに繋がるfree忘れなのか、
ちゃんと管理できていればいいんだがな。
つまり、
メモリリークの有無を確認するときのみ、
前者についてfreeを呼び出すようにマクロで切り換えてコンパイルできるように・・・
ってするくらいなら、freeって直に書いてもいいんじゃないか?
126:デフォルトの名無しさん
08/08/10 08:46:52
>>123
そうですよね。宿題スレで
p = malloc(sizeof(struct node)) + 1;
と書いてしまって、自力で誤りがみつけられず、散々悩みました。
私の環境では、のミス含みでは一見、振る舞いに異常がみられず、ただリリースができない、という状況でした。
free() をきちんとかき動作確認をすることで、malloc() にミスがないことが同時に確認できるわけです。
127:デフォルトの名無しさん
08/08/10 10:01:46
>>126
C++にするだけで解決する問題だね。free()するかどうかは殆ど関係ない。
128:デフォルトの名無しさん
08/08/10 11:03:19
>>127
C++なら尚更、ちゃんとやらないと、大変なことになるぞ。
129:デフォルトの名無しさん
08/08/11 11:06:20
アライメント違反したら死ぬような環境ならすぐ分かるね。
130:デフォルトの名無しさん
08/08/11 11:54:10
>>129
今ならそうですが、はじめてみためには、free() がうまくいかないねー、くらいしかわからなかったのでした。
131:デフォルトの名無しさん
08/08/11 12:23:47
freeがうまく行かないって言うのは、けっこう聞きますね。
mallocが管理してるところをぶっ壊してるとか。
ものによるけど、それなりの規模のプログラムなら、
データ構造ごとにalloc/free用の関数作っちゃうから、
直にmalloc/free呼ぶことはほとんど無い。
132:デフォルトの名無しさん
08/08/11 14:02:19
Windows用のVC++なんかは、
デバッグビルドではヒープ破損のチェックとか自動で行われるんだが・・・。
133:デフォルトの名無しさん
08/08/11 14:17:54
なんかの書物に PHK malloc() の実装がありました。それをみると、今の malloc() では管理領域は簡単には壊れないようにできているようですね。
134:デフォルトの名無しさん
08/08/19 14:07:30
むしろ簡単に壊れてくれたほうがバグ発見が早くなる。
135:デフォルトの名無しさん
08/09/07 05:00:14
hosu
136:デフォルトの名無しさん
08/09/25 12:21:50
>>133
ポインタ求む。
137:デフォルトの名無しさん
09/02/16 13:16:31
もう話おわった?
138:デフォルトの名無しさん
09/02/16 15:46:16
誰か上の人達にstl教えてあげて。
139:デフォルトの名無しさん
09/02/16 15:48:38
まだ終らんよ