大学のプログラミング演習の課題を添削するスレ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
純真な若者に変なことを教えてしまわないように、
大学のプログラミング演習の課題をブラッシュアップしよう。
2デフォルトの名無しさん:2007/08/31(金) 04:23:57
まずは、熊本大学のプログラミング演習第二。

問題は↓
ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/

くれぐれも、担当助手に個別連絡しないようにしてください。
スレで十分に議論して結論をまとめてから、代表一名が連絡するように。
3デフォルトの名無しさん:2007/08/31(金) 04:45:44
>>1
不可でもつけられたのか?? 言いたいことあったら自分で言ってこい。
4デフォルトの名無しさん:2007/08/31(金) 05:31:03
ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/02/index.html
> 問題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デフォルトの名無しさん:2007/08/31(金) 05:31:37
>
> 1. 「配列aとmallocで確保された領域bの違いは,
> 静的に確保されるメモリ領域と,
> __に確保されるメモリ領域という違いがある.」
> __に入る適切な言葉を以下から選びなさい.
>
> a.愛ゆえ
> b.俺的
> c.仮想的
> d.動的

これは酷い。
6デフォルトの名無しさん:2007/08/31(金) 08:10:21
おもむろに
にわかに
やにわに
7デフォルトの名無しさん:2007/08/31(金) 08:37:54
しかし、いくら個人名がないとはいえ、こんなもの公開しちゃダメだろ。
ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/attendance.html
さすがに成績はロックしているようだけど何考えてるんだ?
8デフォルトの名無しさん:2007/08/31(金) 09:11:06
夏厨が最期の力を振り絞ってゴミスレたてまくってるな
9デフォルトの名無しさん:2007/08/31(金) 09:32:32
課題にいちゃもんつけて期限延長とか課題自体を無効にしたいのかね
10デフォルトの名無しさん:2007/08/31(金) 09:36:49
>>9
どっから、そういう発想が出てくるんだろ。
とっくに提出期限は過ぎている課題っしょ?
11デフォルトの名無しさん:2007/08/31(金) 09:51:19
>>10
成績提出期限までなら成績変えられるからなぁ
121:2007/08/31(金) 10:08:19
>>11
考え杉。

とっくに大学は卒業してる。
ましてや熊本大学でもない。

別スレで見かけて、
こりゃ酷い
と思っただけさ。
13デフォルトの名無しさん:2007/08/31(金) 10:09:39
マジウゼェ
リアルで死ね>>1
14デフォルトの名無しさん:2007/08/31(金) 10:12:43
間違った知識を植えつけられ、
へんてこなコードを書く人間を、
業界に送り込んでくる大学の
ほうが遥かにウザいのですが。
15デフォルトの名無しさん:2007/08/31(金) 10:15:29
マ板でやれ
16デフォルトの名無しさん:2007/08/31(金) 10:23:03
いかに酷いかを理解できない時点で、自分が酷いってことを理解してないってことだ。
17デフォルトの名無しさん:2007/08/31(金) 10:34:27
大学は純粋培養で、
いま教える立場にある人達がC言語を覚えたのは、
10年とか20年も前だったりするんだろう。
そして今だにK&Rを教科書として使っていたりしてさ。

大学は職業訓練校ではないぞ、と言いたい人もいるだろうが、
他所の国の大学生が書いたオープンソースのコードを見て、
自分のところの学生の書くコードと比べてみるべきだろう。
18デフォルトの名無しさん:2007/08/31(金) 10:58:06
べつにどーでもいいんじゃね?
19デフォルトの名無しさん:2007/08/31(金) 11:34:53
これが東大なら大問題だが、熊本大なら無問題。

staticという予約語がある以上、別の意味で「静的」なんて言うべきじゃないんだけど、まぁいいや。
20デフォルトの名無しさん:2007/08/31(金) 12:42:38
sizeof(char)が必ず1でも、省略すべきではない
http://pc11.2ch.net/test/read.cgi/tech/1187521586/304-308

スレタイトルは添削とあるが、余りに酷いのでその気も失せた。
21デフォルトの名無しさん:2007/09/01(土) 06:01:39
ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/04/index.html

あまりに酷い。
メモリの管理がテーマではないにしろ、mallocしたものをfreeしないで終了するなんて。
バグの原因になるのでfreeしないほうがいい教を布教するのは勘弁してほしいです。
22デフォルトの名無しさん:2007/09/01(土) 23:58:40
ageますよ。
23デフォルトの名無しさん:2007/09/01(土) 23:59:46
そんなリストならfreeする必要なんて全然無いけどな
24デフォルトの名無しさん:2007/09/02(日) 00:00:28
>>22
リアルで死ね
25デフォルトの名無しさん:2007/09/02(日) 00:11:25
>>23
あなたが自家用に書くプログラムで手抜きするのはいいが、学生に教えるのはマズいでしょう。
こういう例で勉強した学生さんは、freeする必要があるプログラムを書けないでしょう?
26デフォルトの名無しさん:2007/09/02(日) 03:07:18
>>23
それこそが、
バグの原因になるのでfreeしないほうがいい教
ってやつだな。
27デフォルトの名無しさん:2007/09/02(日) 13:28:55
>2007/09/02
この日付と内容の古臭さのギャップに驚いた
28デフォルトの名無しさん:2007/09/04(火) 03:02:29
だいたいさ、大学で素っぴんのC言語なんて教える必要あるの? 時代遅れじゃない?
ふつーJavaだろ?
29デフォルトの名無しさん:2007/09/04(火) 06:52:48
教授が時代遅れなんだからしょうがない。
さび付いた頭でJavaを覚えなおせなんて酷だろう。
30デフォルトの名無しさん:2007/09/04(火) 08:10:22
こういう講義をするのは、助教授・準教授クラスの若い人だし、
課題の採点をするのは、助手とか博士課程の学生だよ?

だいたい、URLを削って出てくる研究室の研究内容は、
ttp://www.syst.cs.kumamoto-u.ac.jp/study.html
だよ。

JavaではなくCが必須だというのはわかるが、
プログラミングの基礎をCでやる必要はないと思う。
31デフォルトの名無しさん:2007/09/04(火) 09:18:29
いや、「今の時代○○だよな」という考えで言語を選んでるんじゃないし…
言ってみれば、実験器具の使用方法を学んでいるのに等しい
のちのちC言語やFORTRANを使わされる人が多いからC言語やFORTRANを学ぶんだし


教養科目によっては「今の時代○○だよな」とかそういう「プログラミング思考なら何でもよし」なノリで選ばれることはあるけどな
32デフォルトの名無しさん:2007/09/04(火) 10:05:53
漏れが若い頃は、いきなりC言語はキツいので、Pascalから入ったぞ。
33デフォルトの名無しさん:2007/09/04(火) 17:43:16
というか、9割までの人間にとって必要なのは変数とループと条件分岐と算術演算くらいだろ

C言語である理由はほぼゼロだ
ポインタやらメモリ管理やらは不要な知識

Javaの「おまじない」もな
34デフォルトの名無しさん:2007/09/04(火) 18:43:14
データベースでしょ。最終的には。それ以外いらない。
35デフォルトの名無しさん:2007/09/04(火) 19:29:57
ぶっちゃけ、
MS-ExcelとVBAマクロで十分
だと思うんだよね。

変数や配列を表のオブジェクトとして持てば、
入出力のコードを書かなくて済むし、
処理中のデータの様子も見れるしさ。

キーボードからインタラクティブにデータを入力させ、
それをscanfで受けるとか、
もう、馬鹿馬鹿しい。
36デフォルトの名無しさん:2007/09/10(月) 04:40:06
プログラミングの授業って、数学や物理に比べたら、はるかに簡単なのかな。
37デフォルトの名無しさん:2007/09/18(火) 13:14:38
なぜ大学でプログラミング演習やるかっつーと、実際に研究初めてデータ解析に進んだとき必要になるから。
ということでjavaなどやっても時間の無駄遣い。
というか自分しか使わないプログラムなんだから、スパゲッティだろうとメモリ管理がいい加減であろうと
どうでもよい。free()?いらねーよそんなもん。

大体、知識足らずを業界に送り込んでくるってなに甘えてんだ。
金融だろうと商社だろうと製造だろうと、どんな業界だって新入社員は実務経験ゼロで入ってくるんだよ。
そいつらを教育するところから仕事なんだろ。
多少なりともコンピュータに触る時間を作ってやった大学に感謝しろ。
38デフォルトの名無しさん:2007/09/18(火) 13:22:05
>>37
どうでもいいけど、マ板逝け
39デフォルトの名無しさん:2007/09/18(火) 13:40:33
>>37
いまどき学生の間にアルバイトやベンチャーで、
いくらでも実務経験を積んでいると思うのだが。

実務経験ゼロの人間も取っているが、
プログラミング経験ゼロは取っていない。

この違い、わかる?

仕事ではなく趣味や研究のために、
一人で我流でプログラムを書く技術があることを前提に、
複数人でチームを組み、仕事としてプログラムを書くために、
やり方や作法を矯正していくのが、実務のための教育。
40デフォルトの名無しさん:2007/09/18(火) 16:26:25
大学に職業訓練校になれとは言わないが、
せめて、
間違ったことや変なことを教えて遠まわりさせるのだけは、
やめてもらいたい。

自動変数がメモリ上に静的に確保されるだなんて、
そんな言い方をするのは、大学だからといって許されることではない。
41デフォルトの名無しさん:2007/09/18(火) 16:37:27
>>39
バイトなんてただの社会見学だ、実務経験になんてならねえよ。
金融業務にバイトを携える企業があるか?? どこまで関われるかなんてたかが知れてる。

というかおまえさんは根本的に勘違いをしている。
>>複数人でチームを組み、仕事としてプログラムを書くために、
>>やり方や作法を矯正していくのが、実務のための教育。
大学はこんなことを目的としていない。
理系大学生のプログラミング教育は、自分自身で必要な数値解析を行えることを最終目的とする。
実務のための教育をされた人材を望むなら、まずそういう教育方針の学校探しから始めろ。


なんで学校で教えないんだよー、なんてのはただの甘えだ。
能力のある奴なんていくらでもいる。
結局、本人のレベルを見抜けなかった自分達が悪い。

42デフォルトの名無しさん:2007/09/18(火) 16:52:19
>>41
郵貯や社会保険庁のシステムの孫請けでアルバイトしていた学生が、
NTTデータに就職するなんていうのは、よくある光景なんだがなぁ。
上流工程をやる人間が現場を知らないと思ったら大間違いだよ。
できる学生は、ちゃーんと勉強している。

> 大学はこんなことを目的としていない。

当たり前だ。
あなたが引用した2行は、企業で行う新人教育の話だから。

その前提として、
> 仕事ではなく趣味や研究のために、
> 一人で我流でプログラムを書く技術
を、大学にいる間に習得しろという話なのだから。
43デフォルトの名無しさん:2007/09/18(火) 16:59:33
>>40
それは本当に正しい。
今の大学には、「情報教育」とか名乗っておきながら意味不明な授業を
展開する輩が多すぎる。

俺の分野で使うなら、どう確保されるなんて構わず、変数として使えれば困らん。
だから、こうすれば使えます、こう書けばいいんですとまでしか言わない。
もちろん聞かれりゃ答えるし、勉強したくなったやつは自分でしてる。
嘘を教えることは最大の罪だ。
これは、教育機関として絶対に許されるべきことじゃない。
44デフォルトの名無しさん:2007/09/18(火) 17:13:23
>>40
それは本当に正しい。
今の大学には、「情報教育」とか名乗っておきながら意味不明な授業を
展開する輩が多すぎる。

俺の分野で使うなら、どう確保されるなんて構わず、変数として使えれば困らん。
だから、こうすれば使えます、こう書けばいいんですとまでしか言わない。
もちろん聞かれりゃ答えるし、勉強したくなったやつは自分でしてる。
嘘を教えることは最大の罪だ。
これは、教育機関として絶対に許されるべきことじゃない。


>>42
そういう奴らは、今話してる「変な教育受けた使えない学生」じゃないでしょ。
もともとインターンなりで十分判断できた上で採るんだから。

今は、「大学でて、とりあえずプログラマ受けてみました」っていう学生についてだ。
そういう奴らが怪しげな知識を持っている、これは大学が悪いのか?? っていうことを
話してるんじゃないのか??


>仕事ではなく趣味や研究のために、
>一人で我流でプログラムを書く技術
だからこれは今の段階で十分取得できている。
あんた、大学研究で必要とされるプログラミングレベルを過剰評価してないか??
45デフォルトの名無しさん:2007/09/18(火) 17:14:20
かぶった
46デフォルトの名無しさん:2007/09/18(火) 17:42:01
>>44
> だからこれは今の段階で十分取得できている。

mallocしてfreeしないのは、習得できているとは思えないけどな。
少なくとも情報工学とか銘打っているところでは、許されないだろう。

たとえば生物工学の人なら、
研究のための道具の1つに過ぎないプログラムを書くというのなら、
目的どおりに動けば何でもいいと思うよ。

でもね、情報工学の人は、それはダメだろう。
学部1〜3年で様々な講義を受けておいて、
いざ研究となったら、それらを全て無視して、
動けば何でもいい、というのはお粗末過ぎる。
47デフォルトの名無しさん:2007/09/18(火) 18:13:32
>>46
たしかにそれは正しい。そのへんは>>44でも言ったとおり、許しがたい奴らが大勢いる。
これ以上なんか言うと教育論になってしまうな。


48デフォルトの名無しさん:2007/09/20(木) 21:56:23
> mallocしてfreeしないのは、習得できているとは思えないけどな。

常駐プロセスなら free するべきだろうけど、malloc したら必ずしも free する
必要はあるまい。
49デフォルトの名無しさん:2007/09/20(木) 21:59:30
バカか
50デフォルトの名無しさん:2007/09/21(金) 00:10:46
>>48
ソフトウェア工学とか勉強しておいて、
そういう非対称で歪なプログラムを書くのは、
キチガイだと思うんだが。
51デフォルトの名無しさん:2007/09/21(金) 00:20:43
>>50
キチガイがあふれている世の中では生きにくいですね><
52デフォルトの名無しさん:2007/09/21(金) 00:32:53
ただでさえ発展途上のソフトウェア工学が、
今よりもずっとずっと未発達だった頃の
やりかたでやるのは、どうかと思うよ。

20年前と同じじゃん、と。
53デフォルトの名無しさん:2007/09/21(金) 00:34:41
別にデーモンでもないプログラムで馬鹿みたいに指摘するの方がどうかと思うけどね
54デフォルトの名無しさん:2007/09/21(金) 00:40:47
>>53
そういう考え方は、昔にあったな。

プロセスの寿命は短く、
freeはバグの原因になるから、やらないこと
そういってプロセスをぼっこぼこforkしまくるというのが。
55デフォルトの名無しさん:2007/09/21(金) 00:44:05
freeはバグを顕在化させるから、やらない
というのなら、まだ、いい。
freeがバグの原因だとか言うようじゃ、死んだほうがいい。

freeして問題になるようなら、freeしなくても問題なんだ。
ただそれが、表に出て来ないだけで。
56デフォルトの名無しさん:2007/09/23(日) 23:45:00
なんでもいいから、準教授くらいになって論文書いてくれたら読んであげるよ。
57デフォルトの名無しさん:2007/09/24(月) 02:46:16
>>56
いきなり何を言い出すんだ。

学生の教育なのだから、
たとえ例題が小さなプログラムだろうと、
大きなプログラムと同じようにやるべきだろう。

それともなにか、
あんたのところの研究では、
小さなプログラムだけで片付くのかい?
58デフォルトの名無しさん:2007/09/24(月) 02:54:00
権威主義者が居るスレはここですか?
59デフォルトの名無しさん:2007/09/24(月) 03:31:09
>>57
なにその大きなプログラムとか小さなプログラムとか。
まずは、プログラムの大きさについて書いてくれ。
60デフォルトの名無しさん:2007/09/24(月) 03:45:09
>>59
小さなプログラムだから、適当でいいじゃん、という主張をしている人に聞いてくださいな。
61デフォルトの名無しさん:2007/09/24(月) 03:49:50
>>60
>>57 と同一人物なのかわかんないけど。
「小さなプログラム」という言葉は、このスレでは >>57 が初めて使ったと思うんだ。
なにをもって「小さなプログラム」としたいのか明らかにしてもらわないことには
話が進まないと思うよ。
62デフォルトの名無しさん:2007/09/24(月) 04:03:14
>>61
「小さなプログラム」という言葉は出てなかったね。

たとえば>>4のようなプログラム。
63デフォルトの名無しさん:2007/09/24(月) 15:45:46
freeくらいめんどくさがるなよ
64デフォルトの名無しさん:2007/09/29(土) 16:21:57
自前プール作って、プールごとfreeすればいいじゃん
65デフォルトの名無しさん:2007/09/29(土) 22:02:41
プールを使うにしても、

free(p) ;

oPoolHoge.free(p) ;
とかになるだけじゃん。
66デフォルトの名無しさん:2007/09/29(土) 22:11:03
いや、atexit()使って登録してしまえば明示的に呼ぶ必要はなくなる。
67デフォルトの名無しさん:2007/09/29(土) 22:59:32
>>66
そんなことなら、freeしないのと一緒だろ。
68デフォルトの名無しさん:2007/09/29(土) 23:06:00
freeすることが目的じゃあない。

1つは、その関数が繰り返し呼ばれたときにメモリリークしないこと
もう1つは、ポインタの指す先が無効であることを明確にすること
69デフォルトの名無しさん:2007/09/29(土) 23:52:04
呼ばれてから、戻るまでしか寿命がないなら、
スタックでなんとかならないか検討する。

atexitだけじゃなくて、atreturnとかatendofscopeがあればいいのに。
70デフォルトの名無しさん:2007/09/30(日) 00:54:34
>>69
C++のデストラクタは、スコープ抜けるタイミングで呼ばれるよ。
71デフォルトの名無しさん:2007/09/30(日) 08:26:26
そうですね。そのおかげでC++でRAIIが実現できたわけで。
RAIIでちゃんとやれば、リソースの解放忘れは、だいぶ気にしなくて良くなりますね。

GCC使うなら、Cでもcleanupのattributeをつけてやれば、似たことは出来ますけど。
72デフォルトの名無しさん:2007/10/15(月) 08:50:10
GC使えよ
73デフォルトの名無しさん:2007/10/15(月) 15:21:27
メモリだけならGCでいいけど。
74デフォルトの名無しさん:2007/10/17(水) 10:49:14
掛け算九九を出力しなさい。
for(i in 1:9){for(j in 1:9{
の後はどうすれば九九が出ますか?
わからないんで教えてください。
75デフォルトの名無しさん:2007/10/17(水) 13:16:19
その言語は何?
76デフォルトの名無しさん:2007/10/17(水) 13:47:58
>>72
冗談はよしてくれ。
77デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/10/18(木) 16:11:10
x[i+1]=0.5x(i)+1をx[1]=10を初期値としてx[100]まで求めなさい。
これのやりかたを教えてください。
79デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/10/18(木) 18:00:48
>>78
宿題を代わりにやるスレではないんだが。

ネタを振るなら、
大学名・学科名・教授名・科目名などを明らかにした上で、
問題の全文を晒してくれ。
81デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/10/22(月) 10:16:22
>>81
スレ違い。
83デフォルトの名無しさん:2008/02/01(金) 07:34:48
出身学校別・国益貢献力ランキング
高専>京大>東工・理科大>大学校・図書館情報≫電通・農工≫早慶≫高卒(農・水)>高卒(工・商)≒一橋>(要再教育の壁)>中卒≒高卒(普通)>(矯正不能の壁)>ソウル大(笑)≒東大
84デフォルトの名無しさん:2008/02/16(土) 08:34:45
かなりスレ違いな予感がしますが投下

当方文系私大5回生です。

プログラミング入門という科目があって
そこで初めてプログラミングを経験したのですが(VisualBasicをやってます)
ベテランプログラマーの方々に質問です。

実技試験とか提出した課題が全て
「テキストボックスを空白にしていない(TextBox1とか入ってる)」
  or
「名前書き忘れ(Form1.vb[デザイン]とForm1.vbの両方に記名が必要とのこと
ちなみに提出したフォルダ名は学籍番号なので個人特定可能)」
といういずれかの理由で評価対象外となり
0点にされて単位もらえずまたもや留年の危機ww
デバッグ無しで開始すると課題テーマ通り正常に動作するのですが・・・・

開始ボタンをクリックするとテキストボックスが空白になるように
自分なりに工夫してみたつもりでしたが裏目に出た結果になりました。

名前はForm1.vb[デザイン]とForm1.vbの両方に氏名表記がないと
採点するつもりはないと断言されてしまいました。
片方あればいいと思ってたorz

この採点基準はプログラマー的には普通なんですか?
「その2つは講義中に当然の常識的プログラミングマナーとして注意した」
と言いくるめられてしまったが、タイピングに必死で先生の発言なんて
聞いてる余裕なかったんだよおおお

これは独り言ですが、私と同様の感覚で提出していた友人二人はちゃんと点数ありました。
なんでやねん。
85デフォルトの名無しさん:2008/02/16(土) 10:34:58
そんなDQNな講師がいるレベルの大学に入った奴が悪い
だから高校のときに皆必死でより偏差値の高い大学目指して勉強するのだ
86デフォルトの名無しさん:2008/02/16(土) 10:52:17
単なる嫌がらせ。
87デフォルトの名無しさん:2008/02/16(土) 10:58:12
プログラミング演習にVBなんか使うところだからたかが知れてるよね。
88デフォルトの名無しさん:2008/02/16(土) 12:38:45
採点基準としてはどうかわからないけど、まあ誰が書いたかわかるようにはしておく。
89デフォルトの名無しさん:2008/02/16(土) 13:31:16
他人のソースぱくってて
そいつの署名が残ってたから
0点にされただけだろうな
90デフォルトの名無しさん:2008/02/18(月) 18:18:27
ソースの冒頭に著作権表示は最低限入れとかないとダメだろ
91デフォルトの名無しさん:2008/02/18(月) 18:33:03
// (C) 2ch
92デフォルトの名無しさん:2008/02/19(火) 05:34:55
プロセス終了とともに勝手にメモリ解放されるんだからfree()とか使う必要ない。
93デフォルトの名無しさん:2008/02/19(火) 11:48:12
最後まで使うならね。
94デフォルトの名無しさん:2008/02/19(火) 19:46:33
確保と解放を繰り返すような糞設計をしなけりゃいいだけだし。
95デフォルトの名無しさん:2008/02/20(水) 18:48:40
まあそうだ。処理次第だけど。
処理単位に複数プロセスにして殺せばいいか。
96デフォルトの名無しさん:2008/03/21(金) 00:31:42
>>92
またfree()不要論者かよ。

すくなくとも教育なんだから、
きちんとリソースの管理をするように教えるべきだろ。
97デフォルトの名無しさん:2008/03/21(金) 01:25:37
一つ言えることは

本当に優秀で実戦的なノウハウ豊富なプログラマの人は、
他人にそれを教えることよりも、より多くのソフトウェアを産み出すことに、
限られた時間を使うだろう。

一流のプログラマとしてやっていけず脱落した人、
もしくは、疲れて引退した人でなければ、
とてもではないが、入門書を書くような暇はないだろう。

ろくな本がない理由は、そういうことだと思う。
98デフォルトの名無しさん:2008/03/21(金) 03:07:49
大学教授と低学歴マとでは書く本の格が違うのも致し方ない
99デフォルトの名無しさん:2008/03/21(金) 05:48:36
>>97
俺もそう思ってた

焼酎学校にまともな教師がいないのも同じ理由らしい
100デフォルトの名無しさん:2008/03/22(土) 14:53:22
洋書の有名な本でも、書いているのはコンサルタント。
コンサルタントは机上の空論の専門家だからな。
101デフォルトの名無しさん:2008/07/09(水) 02:10:32
プログラマっておかしな奴多いよ
頭おかしいよ
97の考えには同意できない

脱落とか、引退とか、
所詮生きてくための職業だろうが、
なんでそんな必死になってんの
102デフォルトの名無しさん:2008/07/09(水) 05:30:03
こんばんは、C言語の課題で困ってます。
誰かわかる人がいれば教えてくれませんか。
ttp://uproda11.2ch-library.com/src/11100317.jpg
実行結果
データを読み込むファイル名を入力してください: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デフォルトの名無しさん:2008/07/09(水) 07:37:27
>>101
同意!
104デフォルトの名無しさん:2008/07/09(水) 11:02:00
本当に優秀で実戦的なノウハウ豊富なプログラマの人は、
いちいちfreeすることに気を使うことよりも、より多くのソフトウェアを産み出すことに、
限られた時間を使うだろう。

一流のプログラマとしてやっていけず脱落した人、
もしくは、疲れて引退した人でなければ、
とてもではないが、freeを過不足なく丁寧に書くような暇はないだろう。

メモリリークしないOSやアプリケーションがない理由は、そういうことだと思う。
105デフォルトの名無しさん:2008/07/09(水) 13:06:03
>>102
何が分からないのかな?
106デフォルトの名無しさん:2008/07/10(木) 01:07:44
>>104
丁寧に書いてさえも、足りなかったり、余計な free() を取り除けなかったりする。
どっかの文庫のしおりにあったが、間違いを犯すのは、人間に与えられた(機械には与えられない)優れた能力だ。


丁寧さ、慎重さは、プログラマにとっては美徳だと思う。
コンパイルする前に、コミットする前に、デプロイする前に、少し思いをコードに馳せてみよう。
107デフォルトの名無しさん:2008/07/17(木) 16:14:35
>>101
どんな仕事でもそうだが、第一線で働き続けるというのは難しいのですよ。
108デフォルトの名無しさん:2008/07/17(木) 16:16:57
私も入門書を書きたいとは思うのだけど、対価を払ってくれる当てがないので口に糊する仕事をするしかないのさ。
109デフォルトの名無しさん:2008/07/17(木) 16:17:21
>>104
その通り。

freeを人間が管理するのは一流のプログラマのやることではない。
110デフォルトの名無しさん:2008/07/17(木) 16:18:24
>>102
終わってるな。

いまどきデータベースって言ったら、なぁ。
C言語でやるこっちゃないよ。DBMS使え。
111デフォルトの名無しさん:2008/07/17(木) 20:36:59
何でもかんでもDBMS使えばいいってもんじゃないけどな
112デフォルトの名無しさん:2008/07/25(金) 12:46:02
malloc/freeごときをきちんと管理できないやつは一流のプログラマとはいえないだろうよ。
あまりに複雑でどうしてもちゃんとfreeできないというならば、それはGCを使えということだ。
113デフォルトの名無しさん:2008/07/25(金) 13:00:42
>>112
ちゃんとfreeできないほど複雑にしてしまうのは、一流のプログラマのやることじゃない。
114デフォルトの名無しさん:2008/07/25(金) 13:19:58
大学の演習ぐらいならな。
115デフォルトの名無しさん:2008/07/25(金) 13:26:09
いやいや。

プロの仕事だからこそ、参照カウントやGCという乱暴な解決手段を避けるのですよ。
それらは問題解決に役立つ便利なものに見えて、かえって問題をややこしくするから。
116デフォルトの名無しさん:2008/07/25(金) 13:42:20
自分で複雑怪奇な設計しておいて、
複雑でどうしてもちゃんとfreeできないんだから仕方ないだろ! って音をあげつつ逆切れするのが三流プログラマ。

複雑にならないように設計し、あるいは、複雑にしろと命令されるような仕事をやらなくて済むようにするのが一流プログラマ。
117デフォルトの名無しさん:2008/07/25(金) 13:48:46
C++で、コンテナ使いまくりのプログラムをCにコンバートする羽目になった洩れ。
半泣きになりながらどこでfreeするか検討したよ。
で、終わってからatexit()みたいな仕掛けでデストラクタもどきを実装すればよかったことに気づいた罠。
118デフォルトの名無しさん:2008/07/25(金) 15:17:25
GCは乱暴じゃないよ。
119デフォルトの名無しさん:2008/08/02(土) 22:32:52
>>92
本当ですか?
120デフォルトの名無しさん:2008/08/06(水) 11:37:47
OSによる
121デフォルトの名無しさん:2008/08/06(水) 19:18:55
>>120
BSDは?Linuxは?win32は?
122デフォルトの名無しさん:2008/08/07(木) 13:35:49
そいつらはfreeで解放できるようなメモリなら真
123デフォルトの名無しさん:2008/08/08(金) 11:43:36
メモリリークのバグを発見する手段として、
プロセスが終了する時点でfreeされていないメモリブロックの有無を確認する
というのがあるのだが。

乱暴にfreeを省かれていると、そういう確認ができなくなってしまう。
124デフォルトの名無しさん:2008/08/09(土) 09:26:21
リークする可能性がある、リークすると困るようなメモリならfreeするでしょう。
そうじゃなければ勝手にしろってだけでは?
125デフォルトの名無しさん:2008/08/09(土) 10:30:13
>>124
どれがリークに繋がらないfree省略で、
どれがリークに繋がるfree忘れなのか、
ちゃんと管理できていればいいんだがな。

つまり、
メモリリークの有無を確認するときのみ、
前者についてfreeを呼び出すようにマクロで切り換えてコンパイルできるように・・・
ってするくらいなら、freeって直に書いてもいいんじゃないか?
126デフォルトの名無しさん:2008/08/10(日) 08:46:52
>>123
そうですよね。宿題スレで
p = malloc(sizeof(struct node)) + 1;
と書いてしまって、自力で誤りがみつけられず、散々悩みました。
私の環境では、のミス含みでは一見、振る舞いに異常がみられず、ただリリースができない、という状況でした。
free() をきちんとかき動作確認をすることで、malloc() にミスがないことが同時に確認できるわけです。
127デフォルトの名無しさん:2008/08/10(日) 10:01:46
>>126
C++にするだけで解決する問題だね。free()するかどうかは殆ど関係ない。
128デフォルトの名無しさん:2008/08/10(日) 11:03:19
>>127
C++なら尚更、ちゃんとやらないと、大変なことになるぞ。
129デフォルトの名無しさん:2008/08/11(月) 11:06:20
アライメント違反したら死ぬような環境ならすぐ分かるね。
130デフォルトの名無しさん:2008/08/11(月) 11:54:10
>>129
今ならそうですが、はじめてみためには、free() がうまくいかないねー、くらいしかわからなかったのでした。
131デフォルトの名無しさん:2008/08/11(月) 12:23:47
freeがうまく行かないって言うのは、けっこう聞きますね。
mallocが管理してるところをぶっ壊してるとか。

ものによるけど、それなりの規模のプログラムなら、
データ構造ごとにalloc/free用の関数作っちゃうから、
直にmalloc/free呼ぶことはほとんど無い。
132デフォルトの名無しさん:2008/08/11(月) 14:02:19
Windows用のVC++なんかは、
デバッグビルドではヒープ破損のチェックとか自動で行われるんだが・・・。
133デフォルトの名無しさん:2008/08/11(月) 14:17:54
なんかの書物に PHK malloc() の実装がありました。それをみると、今の malloc() では管理領域は簡単には壊れないようにできているようですね。
134デフォルトの名無しさん:2008/08/19(火) 14:07:30
むしろ簡単に壊れてくれたほうがバグ発見が早くなる。
135デフォルトの名無しさん:2008/09/07(日) 05:00:14
hosu
136デフォルトの名無しさん:2008/09/25(木) 12:21:50
>>133
ポインタ求む。
137デフォルトの名無しさん:2009/02/16(月) 13:16:31
もう話おわった?
138デフォルトの名無しさん:2009/02/16(月) 15:46:16
誰か上の人達にstl教えてあげて。
139デフォルトの名無しさん:2009/02/16(月) 15:48:38
まだ終らんよ
140デフォルトの名無しさん:2009/04/09(木) 18:47:59
新学期age
141デフォルトの名無しさん:2009/04/10(金) 21:11:40
C言語で加算平均を求めるプログラムってどこかにありますか??
142デフォルトの名無しさん:2009/04/10(金) 21:53:11
ここは質問スレではないよ。
143デフォルトの名無しさん:2009/04/16(木) 00:41:12
はいはい
144デフォルトの名無しさん:2009/05/08(金) 11:30:45
先生!
それ階乗じゃなくてフィボなっち数です!(問4)

http://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/05/index.html
145デフォルトの名無しさん:2009/05/08(金) 23:56:35
フィボなっちw
146デフォルトの名無しさん:2009/05/09(土) 08:48:16
別にフィボナッチ数を求める関数として後置の!を使う記法があってもいいじゃない
147デフォルトの名無しさん:2009/06/25(木) 00:02:23
マジックナンバーだらけで、
ループ用のiやjまでグローバル変数ってなCのプログラムってどうよ?
148デフォルトの名無しさん:2009/06/25(木) 00:16:40
golf と判断します
149デフォルトの名無しさん:2009/06/27(土) 22:47:02
自分の中での既成概念が壊れてしまうのだが、
数値計算やシミュレーションは、
ほぼ全ての変数をグローバルで書く方が効率良い。
150デフォルトの名無しさん:2009/06/27(土) 23:27:09
と思ったら大間違いだ
151デフォルトの名無しさん:2009/06/29(月) 13:02:33
そんなの最適化でやってくれよ
152デフォルトの名無しさん:2009/06/29(月) 16:38:50
例えばこんなコード。
int foo;
void func()
{
for (foo = 0; foo < 1000 * 1000; ++foo) {
// some sequence w/o function.
}
}
最適化でこれ相当になるかもしれない。
int foo;
void func()
{
for (int ic = 0; ic < 1000 * 1000; ++ic) {
// some sequence w/o function.
}
foo = 1000 * 1000;
}
でも、ループ内部で(グローバルな)関数を呼んでいたら無理。

つまり、グローバル変数だけで書かれたコードは一般的に遅くなる。
# 開発効率がいいかどうかはプログラマ次第だが……
153デフォルトの名無しさん:2009/10/12(月) 12:48:35
まず基礎をちゃんとすることが肝心だから、
コードは意図した機能をストレートに書くべし、速度のために変な工夫をしたくなっても我慢しろ
って叩き込むべきだろう。

それにしても>>144は酷いな。
学生さんから授業料とって教えているのに、なんで20年も昔の内容を教えるんだろうな。
154デフォルトの名無しさん:2009/10/12(月) 13:13:57
なにが酷いか、書いたほうがいいか。

1、main関数内にダラダラ書いてあること。
あの内容に付けるべき関数名はmainじゃない。
mainとは別の関数にして、mainからそれを呼ぶようにすべき。
たった1つの関数を呼ぶだけのmainであっても、それは無駄じゃない。

2、main関数は2つの別の機能を持ってしまっていること。
リスト構造の構築 と リストのダンプ は、別の機能だから、それぞれ関数にすべき
たった2つの関数を呼ぶだけの関数であっても、それは無駄じゃない。

3、list_newで、mallocが失敗した場合に備えてない

4、llist_newは、3つのメンバの初期値を引数で受け取るべき
メモリは確保したら速やかに初期化すべきで、ゆえに、引数で受け取った初期値を代入してから返すほうがいい

5、mallocしたのをfreeしてないぞ

6、引数で引き回すのが面倒という理由でグローバル変数を使うべきじゃない

短いプログラムだからグチャグチャでいい、なんてのは学生さんに教えることじゃない。
いずれ書く大きなプログラムのために勉強してるんだから、短くても、大きなプログラムと同じように書くべき。
短いプログラムでしか通用しないことを勉強するのは無駄だし、いざ大きなプログラムを書くとなったときに困るんじゃ・・・
155デフォルトの名無しさん:2009/10/13(火) 11:26:16
んじゃ、私も>154に倣って。

・フィボナッチ数列のバッファに使うのなら可変長配列で充分だし、実際にリスト構造を扱う応用ではC++でSTLを使えばいいからリスト構造を教える意義が殆どない。
・配列版において配列の初期化にmemset()を使っているが、これもナンセンス。グローバルに置くなら初期化自体不要だし、そうでなくてもmemset()の使い方が間違っている。
・そもそも個数の13をマジックナンバーで与えるのは下策。神経を疑うと言ってもいい。
・これは細かい話になるが、fib()は静的にすべき。main()であれこれやるなというのは>154に既出だが、激しく同意。
156デフォルトの名無しさん:2009/10/14(水) 00:54:05
>>155
>実際にリスト構造を扱う応用ではC++でSTLを使えばいいからリスト構造を教える意義が殆どない。

こういうことを言う馬鹿に限ってリスト構造も作れなかったりしてな。
157デフォルトの名無しさん:2009/10/14(水) 04:00:13
リスト構造とはどういうものかは知らないと使えないけど、
リストを自分で作ることまでは、やらなくてもいいと思う。
(やらなくてもいいと、出来なくてもいいは違う。)

大学の授業って、1つの講義で一週間に、
授業90分、演習90分、自習180分くらいでしょ。
1年でそれなりのところまで行かないといけないから。

20年前と今とで、教える内容が同じなのはオカシイ。
そんな学校を卒業しても、20年前の新人と同じレベルだ。
使えない。

今の時代なら、
1年生の最後には、Scott MeyersやHarb Sutterの本を理解できるレベルにないと。
158デフォルトの名無しさん:2009/12/23(水) 01:42:25
>>154
Cだからそういう面倒くさいことやる必要が生じるのであってこれがLispか何かの問題ならかなりすっきりするんじゃないかな。
159デフォルトの名無しさん:2010/01/17(日) 06:51:52
お前らは>>144の問題の意図を勘違いしているな。
問題は穴埋め、つまり他の誰かさんが書いたコードから
その意図を読み取り、必要な変更を行えということだ。
ろくにドキュメントもないソフトウェア資産を継承しなければならない
今の時代に合った教育じゃないか。
160デフォルトの名無しさん:2010/01/17(日) 09:19:43
どんなライブラリを使えるのか、文法で許可されていることは
自由に使っていいのか明確に規定していない課題や試験は
まずいと思います
161デフォルトの名無しさん:2010/01/26(火) 21:07:05
>>154 >>155に反論。
> 1、main関数内にダラダラ書いてあること。

mainにダラダラ書いていい。
main内で**重複するコードがあれば**、
関数としてくくり出し、それを該当箇所で呼べば良い。

汎用的に括りだされた関数は、**使われる側**であって、
mainはそれを**使う側**でしかない。

> ・そもそも個数の13をマジックナンバーで与えるのは下策。神経を疑うと言ってもいい。

これも上のケースと同様。複数の関数をまたがるように、
それぞれの中で13が使われているのならともかく、各関数を使う側の文脈として、
mainのスコープ内で一箇所だけ使われてるのなら、何も困らない。
main以外の関数の中でマジックナンバーを使う件とは、話が違う。
main以外での場合は、汎用性を完全に失墜させる愚行。使われやすさが失われる。

> 3、list_newで、mallocが失敗した場合に備えてない

デーモンプロセスになるわけでもないプログラムならば、
失敗して結構。オチて結構。

> 5、mallocしたのをfreeしてないぞ

プログラムの動作としてバグっているのならともかく、
そうでないのなら、ましてや、
実行後すぐ終了するような小規模プログラムならば見過ごせる。

> 6、引数で引き回すのが面倒という理由でグローバル変数を使うべきじゃない

これだけは最高に同意。気軽にソレを使っちゃだめ。
162デフォルトの名無しさん:2010/02/01(月) 16:13:43
何ヶ月も経っているのに何を書いているのかと思えば、反論って程の反論になってない辺り。
main()にだらだら書いていると、そのロジックを他から利用したくなったときに書き換えが多く発生する。
main()はコマンドインタプリタとのI/F関数と言う位置づけに留めて処理の流れを書かない方がいい。
と言うのが、ある程度再利用を考慮に入れたプログラムの場合の鉄則。
最初から使い捨てが目的なら>161の言うようにmain()にマジックナンバーでも処理でも資源解放の
省略でも好きなように書いていいと思う。逆に言えば、使い捨てじゃないならどうすべきかは自明。
163デフォルトの名無しさん:2010/04/02(金) 18:13:12
まったく再利用しなくても、書き捨てでも、整然と書く習慣を付けるべきだと思うぞ。
わざわざ悪い習慣を染み込ませてから、それを拭うような矯正をするのは無駄だと思う。

たとえば
printf("Hello, world!\n");
なんてのを手本として示す人がいるけど、
自分が落ちた落とし穴に後輩をも落す陰湿な行為だと思うんだ。
164デフォルトの名無しさん:2010/04/08(木) 11:13:11
>>163
それのどこが問題なのか、詳しく。
もし仮に、私が想定している点を指摘したいのなら多くの人が落とし穴の存在にも気づいていないと思うのだが。
165163:2010/04/08(木) 18:26:13
printfの第一引数は、あくまでも「書式化文字列」へのポインタであって「表示したい任意の文字列」へのポインタではない、ってことを意識させないのが問題。

冗長なようでも
printf("%s", "Hello, world!\n");

fputs("Hello, world!\n", stdout);
とすべき。

あるいは1行ごとに出力なら
puts("Hello, world!");
でもいい。


失敗例1)
printf("100%suki!\n");

失敗例2)
void foo(char *str) {
中略
printf(str);
後略

失敗例3)
#define MESSAGE "hogehogehoge"
中略
printf(MESSAGE);
166デフォルトの名無しさん:2010/04/08(木) 19:07:17
やっぱりそういうことか。
まぁ、Cの入門書は実際に使っている人間が書いていないことはほぼ間違いないから仕方ないんじゃね?
>163はその手のバッドノウハウを纏めてwikiで公開してくれる気はないかい?
私も仕事をやめたらやろうかと思っているのだが、仕事をやめる気になれるほど稼げていないから未だ無理なんだ。
167デフォルトの名無しさん:2010/04/08(木) 19:41:05
素のstrcpyを使った「お手本」を示す本は発禁にしてほしいわ
168デフォルトの名無しさん:2010/04/08(木) 19:56:30
うーん、strcpy()はいい代案がないなぁ。
strcpy_s()が標準じゃないこともそうだけど、strcpy()で起きる問題の全てを解決できるわけではないし。
そもそも、実務ではstrcpy()というか、単純な文字列コピーを行なう機会は殆どないと思う。
# sprintf()が強力だし、文字列をコピーしなくてもポインタを引き渡せば済むことも多いし……
169163:2010/04/08(木) 21:40:41
>>166
人様に教えることが許されるほどのスキルはないんで無理だよー。
持ちネタも、このprintf一つだけだし。
170デフォルトの名無しさん:2010/04/12(月) 07:38:27
>>165
めちゃめちゃどうでもいいことだな。
こんなこと律儀にやってるやついないだろ。
171デフォルトの名無しさん:2010/04/13(火) 00:13:37
>>170
とても大切なことだよ。
何らかの教育機関でプログラミングを習うのなら、なぜ大切なのか教わって当然だと思う。
172デフォルトの名無しさん:2010/04/13(火) 09:12:33
printfというたったひとつの関数固有の、
引数の与え方がどれほど大切かね?w
173デフォルトの名無しさん:2010/04/13(火) 16:58:48
>>172
レポート課題は自分でやれ。
174デフォルトの名無しさん:2010/04/14(水) 01:27:43
>>172
バグに時間を取られないようにするためには、必要なこと
175デフォルトの名無しさん:2010/04/14(水) 09:25:36
針小棒大。
176デフォルトの名無しさん:2010/04/14(水) 16:14:03
んなこたーない

printfは基礎段階で用いる例であって、printfの使い方「だけ」の話ではない
これが適切にできないやつは、他でも同様のポカをする
177デフォルトの名無しさん:2010/04/14(水) 18:21:53
> これが適切にできないやつは、他でも同様のポカをする

何を根拠に…。
で、例えばどんなポカをすると? 同様の?
178デフォルトの名無しさん:2010/04/14(水) 18:33:59
例えば、SQLインジェクションを許してしまうようなセキュリティホールを作る、とかだな。
179デフォルトの名無しさん:2010/08/17(火) 20:39:55
今日の東工大計算工学専攻の院試問題(C言語)が激ムズだったらしい。
誰か問題どっかにうpしてくれないかな…
180デフォルトの名無しさん:2010/12/06(月) 15:25:53
純真な若者に一日中彼女と「おまんこ」し続けるとか変なことを教えてしまわないように、
大学レベルのプログラミング演習の課題をブラッシュアップしていこうう。
181デフォルトの名無しさん:2011/08/12(金) 04:34:07.97
首都圏もチェルノブイリ並みに汚染されている(日刊ゲンダイ)2011年8月9日
医師の土井里紗氏はこう言った。
「首都圏はチェルノブイリ事故のような汚染はない、とされてきたが、(調査結果は)それを否定するもの。
降り積もった(高濃度汚染の)砂塵(さじん)が風などで吹き上がれば、皮膚や粘膜に吸着される可能性もあります」
182デフォルトの名無しさん
どーせ、ほとんどがIT業界に行くんだから、
schemeインタプリタやOSぐらい演習で書かせりゃいいのに