[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): 2016/11/06(日)22:58 ID:dU5z27As(1) AAS
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
外部リンク:codepad.org (コンパイルもできるし出力結果も得られる[]privateをチェック)
外部リンク:ideone.com (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
省2
2
(1): 2016/11/06(日)23:23 ID:AHO3vAwR(1) AAS
>>3-1000は射精魔
3: 2016/11/07(月)00:30 ID:pyn9XiBr(1) AAS
>>2
訂正しときます
次スレの>>3-1000が射精魔
4
(3): 2016/11/07(月)09:27 ID:vooGYje+(1) AAS
前スレ>>999再掲
class A{
int a[2];
A(int b[])
:a(b) //error
{}
};

この:a(b)ってなにか書き方ありますか?

前スレ>>1000
無理でした・・・
5: 2016/11/07(月)09:34 ID:dSd+kVnH(1/2) AAS
何がしたいのかわからないので回答しようがないな
6: 2016/11/07(月)09:36 ID:dSd+kVnH(2/2) AAS
あ、初期化子か
インデントがないから見間違えた
7: 2016/11/07(月)09:38 ID:e8hpdnod(1) AAS
引数の int b[] って int* b と同じやしなぁ
8: 2016/11/07(月)09:47 ID:HQzTq5fm(1) AAS
std::array
9: 2016/11/07(月)12:11 ID:56hqYy7l(1) AAS
C++11以降なら
A(int (&b)[2]) : a{b[0], b[1]} {}
10: 2016/11/07(月)14:52 ID:fwwW9lIx(1/2) AAS
だがint b[2][3]はポインタ引数は・・・
11
(1): 2016/11/07(月)14:56 ID:6MsAvbZq(1) AAS
↑幻覚をみた糖質のつぶやき
12
(2): 2016/11/07(月)15:00 ID:3Xim9e5h(1/2) AAS
>>4
C++11以降ならstd::initializer_listが使える

#include <iostream>
#include <initializer_list>
#include <algorithm>

class A {
int a[6];
public:
A(std::initializer_list<int> b) {
std::copy(std::begin(b), std::end(b), a);
省11
13
(2): 2016/11/07(月)18:18 ID:hOJqMng1(1/4) AAS
>>12
それinitializer_listに6っこ以上与えたら実行時のアクセス違反になる

>>4
C++11以降ならstd::array使うべき
そうすれば普通に書ける

class A{
std::array<int,2> a;
public:
A(const std::array<int,2> &b):a(b)
{
省2
14: 13 2016/11/07(月)18:21 ID:hOJqMng1(2/4) AAS
2行目「6個より多く」だったね
15: 2016/11/07(月)18:44 ID:3Xim9e5h(2/2) AAS
>>13
いやいくらでも動的に増やせるんだけど初心者スレだから省略した

外部リンク:ideone.com
16
(3): 2016/11/07(月)19:07 ID:hOJqMng1(3/4) AAS
要求は固定長の配列であって、動的に増やせるようにしろとは言ってないので
それのコードは非効率にしかならないと思うよ
17: 2016/11/07(月)19:25 ID:fwwW9lIx(2/2) AAS
>>11
ん?
int b[2][3];をわたせんの?
func(int a[][3]);以外で
18: 2016/11/07(月)19:50 ID:Z2RT26Su(1/2) AAS
>>16
だからvector使ってないでしょう
unique_ptrのパフォーマンス知らないの?
19
(2): 2016/11/07(月)20:07 ID:Z2RT26Su(2/2) AAS
ID:hOJqMng1 の主張の変遷

1.わざと大きい初期化子を与えると実行時にアクセス違反になると主張
→だから動的に対応できるようにした

2.すると今度は非効率的だからarrayを使えという
→arrayが特に効率的なわけではないし、今度は「要求は固定長の配列だ」と言い出す

どう考えても言ってることがコロコロ変わってるんだが
20: 2016/11/07(月)21:12 ID:L762Pvtq(1) AAS
!!喧嘩の予感!!
21
(1): 2016/11/07(月)21:25 ID:nZ1H9hgf(1) AAS
A() : a{b[0], b[1]} {}がダメだった人にC++11を押しつけてどーすんだ
>>12に至ってはもとの質問と全然関係ねーし
22: 2016/11/07(月)21:26 ID:Rr8tj+hR(1) AAS
VC++で、マウスオーバーで色が少し変わって、クリックしたら沈んだみたいになる画像ボタンを作るにはどうしたらいいですか?
23: 2016/11/07(月)22:16 ID:hOJqMng1(4/4) AAS
>>19
まず効率は動的確保を行うnewとunique_ptrより確実にarrayのほうがいい

そして>>4の要求はコードから明らかに固定長でいいと言ってる
これは私の勝手な主張ではなく元の要求がそうなってる
目的を達成するために非効率な動的確保は必要ない

私はアクセス違反になるといったが動的確保にしろとは言っておらず、動的確保にしたのはそっちが勝手にやったこと
アクセス違反を回避するために動的確保にするのは全く割に合わない
だったら長さチェックすればいいだけ
24: 2016/11/07(月)22:20 ID:JXtVbtZ4(1) AAS
>>21で結論でてるじゃねえか
C+11を押し付けてる時点でおまえら全員ダメだ!
25: 2016/11/07(月)23:34 ID:lMECrzfj(1) AAS
いいぞ、もっとやれ〜♪
26: 2016/11/08(火)00:32 ID:t0HdCoBm(1) AAS
沸点低すぎワロタw
27: 2016/11/08(火)00:33 ID:2SYrs2Uf(1) AAS
>アクセス違反を回避するために動的確保にするのは全く割に合わない
こう書かれるべきものが
>>16
>それのコードは非効率にしかならないと思うよ
と書かれたため>>19が射精した

特に「非効率にしかならない」の「にしか」という表現が前後の繋がりを考えると最悪だ
28
(1): 2016/11/08(火)15:38 ID:FW358liz(1/3) AAS
using std;
int main() {
int a;
cout<< "数を入力してください" <<endl;
cin>> a;
cout<<a <<"ですね?" <<endl;
}
aを確実に入力させたくて困っています
ご教授ねがいます
29: 2016/11/08(火)16:03 ID:j/2yZvJO(1) AAS
まず確実ってなんやねん
数以外だったり未入力は弾くってか
30: 2016/11/08(火)16:26 ID:FW358liz(2/3) AAS
そうです
未入力で無限ループみたいに表示されて困っています
31: 2016/11/08(火)16:26 ID:Or+T0geg(1) AAS
教示ならしてやっても良いが、教授はお断りだ
32
(1): 2016/11/08(火)16:58 ID:sBMnjDSh(1) AAS
>>28
外部リンク:ideone.com

一応単なる改行や数字で始まらない文字列は弾くようにした
ただしコメントにも書いてあるけど 123def みたいな数字で始まる文字列を
入力したときは数字だけ返すんでそれが駄目なら自前で作るしかないね
33: 2016/11/08(火)17:22 ID:FW358liz(3/3) AAS
>>32
getline知りませんでしたが何とかできそうです
ありがとうございます
34
(3): 2016/11/10(木)10:52 ID:8ULjF/bN(1/8) AAS
独習C第4版 P197ページの再帰のプログラムなのですが、
#include <stdio.h>

void recurse(int i);

int main(void)
{
recurse(0);

return 0;
}

void recurse(int i)
{
省10
35
(2): 2016/11/10(木)11:03 ID:6ImFpJhK(1/3) AAS
引数だけ書くと
0+1
1+1
・・・
9+1
ここまではprintfまで来ないまま再帰
9+1でifに入らないからrecurseからリターン
printfがiを表示(9)してリターン
printfがiを表示(8)してリターン
の繰り返し
36
(1): 34 2016/11/10(木)11:07 ID:8ULjF/bN(2/8) AAS
>>35
早速のレスありがとうございます。

>9+1でifに入らないからrecurseからリターン
ということはmain関数のreturn 0でプログラムは終了してしまうのではないですか?
なぜprintfが呼ばれるのかわからんのですが。(iが減算される理由もわかりません)
37
(2): 34 2016/11/10(木)11:12 ID:8ULjF/bN(3/8) AAS
if(i < 10) {
recurse(i + 1);
printf("%d " , i);
}

recurseとprintfは同じifブロックに入っているので、ifが偽なら両方共スキップされると思うのですが、
なぜprintfだけ呼ばれるのでしょうか?
38
(1): 2016/11/10(木)11:20 ID:69ogPHI/(1/4) AAS
AA省
39
(1): 2016/11/10(木)11:28 ID:6ImFpJhK(2/3) AAS
>>37
9+1で入って偽で抜けたら
8+1で入ってきたif内のrecurseから抜けて次のprintfが実行されて抜ける
8+1で抜けたら7+1で入ってきたif内のrecurseから抜けて次のprintfが実行される
の繰り返し
40
(2): 34 2016/11/10(木)11:40 ID:8ULjF/bN(4/8) AAS
>>35-39さん
どうも再帰関数とforループがごっちゃになっていたようです。
何となくわかりました。
後は自分で考えてみます。
どうもありがとうございました。
41
(1): 2016/11/10(木)12:42 ID:69ogPHI/(2/4) AAS
再帰呼び出し後に書く  recurse(i+1); printf("%d ", i);

書いてから再帰呼び出し printf("%d ", i); recurse(i+1);
の違いとか

呼び出しの出入りを整理する
printf("in:%d\n", i);
recurse(i+1);
printf("out:%d\n", i);
と見えてくると思うよ
42
(1): 2016/11/10(木)13:57 ID:gEXUDT4B(1/5) AAS
なんか遠回りな説明ばかりだな
スタックフレームというキーワードを出してやれよ
43
(3): 40 2016/11/10(木)14:01 ID:8ULjF/bN(5/8) AAS
>>41
>再帰呼び出し後に書く  recurse(i+1); printf("%d ", i);
>と
>書いてから再帰呼び出し printf("%d ", i); recurse(i+1);
>の違いとか

これはこの本の次のページにも書いてありました。
書いてから再帰呼び出しの場合は昇順(1,2,3,4,5,6~)になりますね。

相変わらず曖昧な理解なんですが、
どのiの場合もi=10に達するまではrecurse(i+9)までしか実行されていなくて、
printfは実行されていない待機中の状態だと考えればいいのでしょうか?
省7
44: 2016/11/10(木)14:02 ID:69ogPHI/(3/4) AAS
再帰でどう動いてるか理解するのに
スタックフレーム出されても困らないか? 値の保持の実装でそうなってるってだけだし
45: 2016/11/10(木)14:09 ID:gEXUDT4B(2/5) AAS
この手の人は、具体的な実装例を見さえすれば、すぐさま疑問が解消されるんだよ
>>43でも「待機する」だとか
なんで逆順になるのか分からないとか
言っているが
スタックフレームさえ知れば全ての疑問は解決だし
C/C++するのにスタックフレームさえ知らない状態だと
このさき困難だろう
46: 2016/11/10(木)14:10 ID:69ogPHI/(4/4) AAS
おっけー まかせた
47: 2016/11/10(木)14:18 ID:gEXUDT4B(3/5) AAS
待機する、って言い方を見るに、何かキューのような物を連想しているようだし
実際、なんで逆順になるか分からないと発言しているわけだが
答えは関数呼び出しはキューではなくスタックだから、と言う他ない
キューやスタックという言葉の意味が分からなかったとしても
どのみちこれらも覚える必要のある最も基本的な事の一つだから
合わせて覚えればよいだろう
コンピュータの基本動作もよくわからないままプログラムを書くということは
多言語ではあり得るのかもしれんが、とりわけここはC/C++スレだからね
48: 2016/11/10(木)14:26 ID:gEXUDT4B(4/5) AAS
いや、俺は別に何も説明するつもりはないよ
ただ、スタックフレームというキーワードをだね
そうすれば後は本人が検索するなりなんなり、勝手に調べるだろう
キーワードが分からなきゃ検索も出来ないから、キーワードを出してやれという話
スタックを知らずして再起呼び出しの動作を理解するのは非常に困難というか
質問者は関数呼び出しがキューのようなものであると考えている可能性が高いようだけど
実際にはスタック動作だよ、と
ここを勘違いしていたら、答えにたどりつかないかなぁと
49: 2016/11/10(木)14:29 ID:6ImFpJhK(3/3) AAS
>>42
最短の説明で教えてあげてくれ任せた
50: 40 2016/11/10(木)14:33 ID:8ULjF/bN(6/8) AAS
スタックフレームで検索して見たところ、
外部リンク[html]:brain.cc.kogakuin.ac.jp
このページが一番わかりやすそうです。
LIFOなんで新しい関数と引数が上の方に積み上がっていくと考えれば良いのでしょうか?
first outなんで実効は新しい順(つまり今回の例の場合はi=9)ということですね。

スタックフレームという言葉で検索したらおもしろそうなサイトがたくさん出てきました。
皆さん今回はありがとうございました。
51
(1): 2016/11/10(木)14:51 ID:IzCfpVGN(1) AAS
>>43
まず大前提としてプログラムの流れは1本道で別れたりしないし、待機みたいなことも普通しない

そして再帰関数という特別な関数があるわけではない、recurseは普通の関数と何も変わらない

void recurse(int i)
{
if(i < 10) {
recurse(i + 1);
printf("%d " , i);
}
}
省4
52
(1): 43 2016/11/10(木)15:05 ID:8ULjF/bN(7/8) AAS
>>51
レスありがとうございます。
外部リンク:ipa-zone.info
このページに私が使っている独習Cの再帰の部分が丸ごと転載されているんですが(違法?)、

i=0~10と昇順で増加していく前半部分でも呼び出された関数(recurse(1)など)は終了した訳ではないですよね?
後半のi=10から降順で減少していくときにはじめてprintfが実行されて関数が終了すると思うんですが、
LIFOなんで最後に呼び出されたrecurse(9)からrecurese(0)まで降順で残ったprintfを実行していくということではないんですか?
53
(1): 2016/11/10(木)15:15 ID:gEXUDT4B(5/5) AAS
>実行は新しい順(つまり今回の例の場合はi=9)ということですね。

難しく考える必要は無い
関数を呼び出すとき、自分が今何をしていたかをそっくりそのまま保存した状態で
新たにスタックを確保して、呼び出した関数を実行する
関数の実行が終わると、使っていたスタックを開放して
呼び出される前に実行していた処理に復帰する
ちょうど君が
1)ビデオを見ていた時に電話がかかってきたら、ビデオを一時停止して電話に出る
2)電話が終わると、ビデオを再生して続きを見る
のと同じで、ビデオの一時停止機能がスタックに相当している
省10
54: 2016/11/10(木)15:18 ID:17noS2hU(1) AAS
長い。あとビデオ見ながら電話に出れるだろ
55
(2): 2016/11/10(木)15:21 ID:3AXwvnI0(1) AAS
ポインタを返すラムダをstd::functionで取り扱いたくて調べてるのだが
どうしてどの参考例もintやvoidの例しか示していないのだろう
参考例を示すまでもなく誰でも簡単に記述出来ているのだろうか
56: 52 2016/11/10(木)15:39 ID:8ULjF/bN(8/8) AAS
>>53
レスありがとうございます。参考になりました。
57
(1): 2016/11/10(木)20:21 ID:CLfGjB35(1) AAS
>>55
特に難しくは無いと思う
例えばどんなことをしたいの?
58: 2016/11/10(木)20:31 ID:AQTsjJgJ(1/3) AAS
文盲はお帰りください
59
(1): 2016/11/10(木)21:49 ID:cv2N5dvt(1) AAS
std::function<int*(const int)> create_array = [](const int n)->int*{ return new int[n]); };

でいいんじゃないの
誰かdeleteすんだよと思うけど
60
(1): 2016/11/10(木)22:03 ID:AQTsjJgJ(2/3) AAS
>誰かdeleteすんだよと思うけど

自覚があるならそんな変な例を出さなければいいのに
61: 2016/11/10(木)23:23 ID:wCaAZ9DK(1) AAS
>>60
じゃあお前が適切な答え書いてやれよ
62
(2): 2016/11/10(木)23:41 ID:AQTsjJgJ(3/3) AAS
>>55の回答はこんな感じでいいだろう
using ptr_type = void *;
std::function<ptr_type ()> f1{ []{ return ptr_type{}; } };

std::function<void *()> f2{ []{ return static_cast<void *>(nullptr); } };
63
(1): 2016/11/11(金)01:01 ID:JQalwGbJ(1/2) AAS
>>62
散々煽ってたから聞くけど
static_cast<void *>(nullptr)
このキャスト無駄じゃない?
これは変な例ではないの?
64: 2016/11/11(金)01:15 ID:tUBqvL6G(1/2) AAS
う〜んどうだろうね
よく見るとラムダの戻り値の型が省略されているし
こういったことがどの段階のC++のバージョンで出来るようになったのか
俺は知らないが、実際の戻り値の型からラムダの型を推測してくれる便利機能
を使っていると思われる
となれば、キャストなしのnullptrでは型がわからないから
ラムダの戻り値の型の推測もできず、コンパイルエラーになるのではないだろうか
65
(1): 2016/11/11(金)01:36 ID:tUBqvL6G(2/2) AAS
もしくは、ひょっとしたらnullptrには何らかな特殊な型が与えられているのかもしれんが
それはしらないが、ともかくvoid*型ではないのは確かなので
その場合でもstd::function<void *()>への代入で問題を起こすんだろう
nullptrに型が有るのか無いのか、俺は知らんし、興味もないんだけどね
66: 2016/11/11(金)01:48 ID:v3r+B2af(1/2) AAS
>>57>>59>>62
vsで試してて
std::function<void *()>
のような書き方をするとテンプレートがエラーを出していたので
関数ポインタのような特殊な記述が必要になるのかと思って調べていたのですが
原因が分かりました

仮で書いていたラムダ式の中の返り値を
return NULL;
にしていたのでこれがintなためエラーが出ていたようです
テンプレートの奥のほうで型の不一致を出していたので
省4
67
(2): 2016/11/11(金)01:56 ID:v3r+B2af(2/2) AAS
自宅のvs2015communityで実験したところ

std::function<void *(void)> f0 = [](void) { return NULL; };
std::function<void *(void)> f1 = [](void) { return (void *)NULL; };
std::function<void *(void)> f2 = [](void)->void * { return NULL; };
std::function<void *(void)> f3 = [](void) { return nullptr; };

だとf0のみエラーです
gccとかでも同様なんですかね
68: 2016/11/11(金)02:04 ID:JQalwGbJ(2/2) AAS
>>65
nullptrの型はnullptr_tだよ
だからラムダの戻り値の型はnullptr_tと推論される
ただ問題はvoid *を戻り値としたfunctionに代入できるか

ぶっちゃけ俺も書いてからやっちまったかと思って調べた

規格を調べたところやはり要らなかった
戻り値が暗黙変換できれば代入できると書いてある
つまりラムダの戻り値intでfunctionはdoubleとかもあり
そして当然nullptrはvoid *型に暗黙変換できる
なので要らない
省2
69: 2016/11/11(金)07:16 ID:hk5EgzxW(1) AAS
>>63
コンパイルが通るかどうか以前に55は『ポインタを返すラムダを』と言っているのだから、
無いとお題改変になってしまうだろう

>>67
当然
int f() {return NULL;}
void *関数() {
 return f();//エラー
}
と同じことなので
70: 2016/11/11(金)08:09 ID:JclCvFO1(1/2) AAS
ID:tUBqvL6Gは希にみる健常者
71: 2016/11/11(金)08:32 ID:JclCvFO1(2/2) AAS
>nullptrに型が有るのか無いのか
この手の文法で型が無い落とし穴は初期化の { } ぐらいか
int a = {0}; // 「{0}」は式でなく型も無い
72: 2016/11/29(火)23:30 ID:7z8mZ0fw(1) AAS
さすがにCは時代に取り残された感があるな
新規案件なら埋め込み系を除いて存在意義なし
73: 2016/11/30(水)02:47 ID:Ir3oZvjK(1) AAS
寂しいですなぁ
74: 2016/11/30(水)02:56 ID:a9ciiDR7(1) AAS
う、埋め込み…
75: 2016/11/30(水)04:02 ID:tfyAgmME(1) AAS
組み込み系って英語ではembedded なんちゃら だし
よくある間違いでしょ
76: 2016/11/30(水)05:21 ID:sG3uRZRm(1) AAS
韓国ではよくあるんだ。
77: 2016/11/30(水)05:53 ID:/gnC384r(1) AAS
埋めるのは中国の得意とする技術
78: 2016/11/30(水)21:26 ID:ncjk4kan(1) AAS
linuxのカーネルモジュールてC++で書けるようになったんだっけ?
79: 2016/11/30(水)22:16 ID:Yeu32peW(1) AAS
ドライバとかはサブシスは普通に書いてるぽい、コアな部分はメンテナがパニクルのでやっぱCかと
80: 2016/12/01(木)11:40 ID:OWujHEiH(1) AAS
実際ひと目でいいからソース見てみ
一生C++なんか使わねーという主張がにじみ出てるよ
81: 2016/12/01(木)12:49 ID:yfw1GD74(1) AAS
C++使わなくていいならそれに越したことはないからね
82: 2016/12/01(木)13:16 ID:VWu2OAFy(1) AAS
c++は個人差が大きすぎるようです。議論も出来ない。
方向がコンフリクトしたら大変なのは ここ見てればわかる。
83: 2016/12/03(土)01:01 ID:62YFpmrs(1) AAS
C++はマングリングとかややこしいから
84: 2016/12/03(土)20:56 ID:nmEGc+VH(1) AAS
マンコリング
85
(1): 2016/12/11(日)20:30 ID:CL+E9lTu(1) AAS
C++初学者です。

既存のCのライブラリに次のような関数が有るんだけど
bool SendData(uint32_t * txData, uint32_t * rxData, uint16_t length);

ラッパーで引数をuint16_tのポインタに変更したもを作りたいと考えています。
bool SendData(uint16_t * txData, uint16_t * rxData, uint_16_t length);

単にラッパーの中でバッファを持って変換してやれば良いとも思ったけど、
組み込み用途なんで速度や消費メモリ的にそれは避けたいです。
newやdeleteは無しでスタックのみを使用できれば、なお良いのですが、
良い方法が思いつきません。

何かスマートな方法は有りませんか?
86
(1): 2016/12/11(日)20:55 ID:Cd8ql2jy(1) AAS
元関数の length が uint32_t 単位での個数という仮定
→ uint32_t より小さい粒度は取り扱えない
→ uint16_t で取り扱える個数は偶数個に限定される
→ ポインタのキャストと length を /2 で渡すだけ
87
(1): 2016/12/11(日)21:42 ID:74mAoGAM(1) AAS
uint16_tの方がラッパーなの?
どちらにしろ元の関数をそのまま使うなら変換は必要だね。

スタックが使われるかどうかはしらないけどClangコンパイラなら
可変長配列(VLA)っていうのがC++でも使えたはず。
サイズが大きすぎるとオーバーフローするけど。newと兼用してみるのも手。
88: 85 2016/12/12(月)22:47 ID:lLNqHCIY(1) AAS
>>86
なるほど、
渡すデータを1つ置きにすれば良いわけですね。
渡すデータを組み立てるときにそうすれば良いですし変換のコストは少なそうです。
多少汚いとこが関数外に出ちゃいますが今回のケースでは現実的な方法だと思います。

>>87
残念ながら使用しているコンパイラはclangではないですし、
VLAは今回の用途には重そうですね。
便利そうなので、PC用のプログラムを作るときに使えるかもしれません。

ひとまず>>86さんの方向で考えてみます。
省1
89
(1): 2016/12/13(火)07:43 ID:vJwCdf+q(1/2) AAS
組み込みでスタックに可変長のデータ領域確保するとか頭大丈夫?
90
(1): 2016/12/13(火)18:19 ID:692Oa1tt(1) AAS
>>89
組み込みのことは知らないんだけど、サイズチェックして分岐するのはどうなん?

if (length * sizeof(uint32_t) < 32767) {
  uint32_t list[length];
  Test(list, length);
}
else {
  uint32_t list = new uint32_t[length];
  Test(list, length);
}
91: 2016/12/13(火)19:22 ID:vJwCdf+q(2/2) AAS
>>90
どうなのって言われても好きにしろよとしか言えないけど...
個人的には各々のテストも必要になるその手のコードは書かない
92
(2): 2016/12/15(木)21:00 ID:iypiqTM3(1) AAS
ガチの初心者でプログラミング勉強したいと思ってるんですが
プログラミング勉強するとなるとどんなものから作り始めればいいですかね?
ちなみにCの基本的なこと(if,for文やファイル入出力)くらいしか知りません
93
(1): 2016/12/15(木)22:16 ID:esEF0eVo(1) AAS
やっぱり画像が出たら楽しいから画像ビューアとかが良いんじゃないかな
画像が動いたらもっと楽しいって言うんならゲームもよいんじゃない?
音関係も楽しいんだが、サウンドプログラミングは結構専門知識がいるうえ
デバッグが難しいから最初は手を出さないほうが良いよ

ま、画像ビューアや動画プレイヤーが楽しいよ
ちょっとした実用性もあるし
94: 2016/12/15(木)22:22 ID:KqXo4C+P(1) AAS
Cであることに特に意味がないのなら別の言語の検討をすすめる
95: 2016/12/16(金)06:44 ID:cbHo8vE5(1) AAS
javaも悪くないと思いますよ。
96
(1): 2016/12/16(金)08:53 ID:hCzygT3G(1/2) AAS
>>92
プログラミングを習得した延長線上に何を作りたいか決まってる?
97
(1): 2016/12/16(金)08:59 ID:2kpKp/Uz(1) AAS
>>92
作りたいプログラム(今ならアプリケーションというのかな)の
イメージが先にないとアドバイスしにくい時代なのよ。

まずコンソールに hello, world を表示して、続いて標準入出力、
ソートやらリンクド・リストやらのアルゴリズムを習得して…
という順序を踏んでも、「マウスをクリックすると何かしてくれる」ような
今様のプログラムには少しも近づかないんだな、これが。
98
(1): 2016/12/16(金)09:22 ID:R8KZSjOU(1/3) AAS
>>96
ゆくゆくはカメラを使って画像処理的なものをしてみたいと思ってます
具体的にはまだ決まってませんが…
99: 2016/12/16(金)09:23 ID:R8KZSjOU(2/3) AAS
>>97
なるほど
将来的にやりたいことをしっかり考えたうえで何を学ぶべきか考えたほうがいいんですね!
100: 2016/12/16(金)09:30 ID:R8KZSjOU(3/3) AAS
>>93
なるほど!
参考になりますm(__)m
1-
あと 902 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.822s*