ページ 1 / 1
C言語 応用が利きません・・・
Posted: 2010年11月29日(月) 17:22
by 柏餅
はじめまして柏餅といいます。
来年からゲームエンジニア専攻で入学で
最近C言語を勉強し始めたんですが、ちゃんと勉強したことを覚えているか不安です。
というのも、当たり前ですが本に載っているサンプルプログラムは打てるのですが
サンプルが載っていない演習問題が打てないんです。
(演算子の使い方など・・・)(要は応用が利かないんです)
初心者としてこれはよくあることなのでしょうか?
応用が利くようになるにはどのように勉強すればいいのでしょうか?
*ちなみに僕が勉強で使用している本は「柴田望洋 明解C言語入門編」です。
返答よろしくお願いいたします。
Re: C言語 応用が利きません・・・
Posted: 2010年11月29日(月) 17:32
by ookami
私もプロではないのでご参考までに...
> サンプルが載っていない演習問題が打てないんです。
サンプルが載っていれば演習問題が解けるってことなら、
問題ないと思いますよ。
特に、多言語を使うようになってくると、(C++, java, php,...)
構文が似ていて混乱してくるので、
私はしょっちゅうサンプルやリファレンスを見返しています。
> 応用が利くようになるにはどのように勉強すればいいのでしょうか?
とにかくたくさん打つこと、そして、
「あぁまた俺はこんなしょうもないミスを」
というのを、たくさん経験しておくことだと思います。
Re: C言語 応用が利きません・・・
Posted: 2010年11月29日(月) 19:09
by Ciel
最初は私もその辺で悩みはしましたが、
気がついた時にはある程度欠けるようになってました。
最初は何も知識なんかないんだから、出来なくて当然でしょう。
諦めずにコツコツやってれば、いつかはある程度かけるようになるものです。
Re: C言語 応用が利きません・・・
Posted: 2010年11月29日(月) 20:42
by ぬっち
とにかく、書いて失敗しての繰り返しですかね・・・。
私ももう3年C言語やってますが、まだまだですね^^;
他の方が書いたコードとか見てるとこんな書き方とかあるんだーとか勉強になる部分が多いです。
本に載ってるサンプルが解けるのでしたらあとはもうひたすら、他の方のコードを読んでまねしたり、自分で実際にコードを書いてみることですかね。
そうすれば次第に応用のきいたコード(日本語おかしい?)が書けるようになってくると思います。
がんばってください(^^)/
Re: C言語 応用が利きません・・・
Posted: 2010年11月30日(火) 13:21
by 柏餅
返信が送れてすいません。
皆さん返答ありがとうございます。
繰り返し練習して
応用が利くように頑張ってみます。
あともういくつか質問なんですが、演算子の使い方はどのように覚えればよいのでしょうか?
本の演習問題などもこいつのお陰で、解けない問題がいくつか・・・
あとどのあたりを集中的にやった方がいいとかありますか?
(for文 if文 do文 演算子)などありますが・・・
返答の方お願いいたします。
Re: C言語 応用が利きません・・・
Posted: 2010年11月30日(火) 13:49
by softya(ソフト屋)
柏餅 さんが書きました:
あともういくつか質問なんですが、演算子の使い方はどのように覚えればよいのでしょうか?
本の演習問題などもこいつのお陰で、解けない問題がいくつか・・・
演算子一つ一つ自分で機能をテストするプログラムを自力で組んでみるのが一番良いと思います。
どのプログラミング言語の機能もそうですが、サンプルの丸写しや打ち込みだけしていても理解できるものではありません。
こんな風なプログラムを作って、aとbをいろいろ変えてみると比較演算子の違いがわかります。
あくまで例ですので、自分で色々工夫してみてください。それがまた勉強になりますから。
コード:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int a=5;
int b=6;
printf( "%d\n", a > b );
printf( "%d\n", a >= b );
printf( "%d\n", a == b );
printf( "%d\n", a != b );
printf( "%d\n", a < b );
printf( "%d\n", a <= b );
}
柏餅 さんが書きました:
あとどのあたりを集中的にやった方がいいとかありますか?
(for文 if文 do文 演算子)などありますが・・・・
全部必要なんですよ。
なので集中的にやると言う選択肢はありません。
ただ、人によりますがdo文だけは余り使わないかな。
こんなソフトもあるので、参考にしてみてください。
「KSK C Animationの詳細情報」
http://www.vector.co.jp/soft/win95/edu/ ... tml?site=n
以下引用。
>C言語入門教育用ソフトです。
>C言語のプログラムの流れの基本制御構造を説明付きでアニメイションで見せます。
>1行ずつ実行して,変数が変化したり,画面に表示したりの作業が見えます。
【追記】
もうひとつ、「Visualization C Interpreter」も紹介します。
http://www.vector.co.jp/soft/win95/prog/se442764.html
ただ、こっちはかなり不安定なんですよね。
なので、あんまり当てにしないでください。
Re: C言語 応用が利きません・・・
Posted: 2010年12月01日(水) 18:51
by 釣り師
僕もあまりCとかには詳しくないので気のきいたことはいえないのですが、要は数学と一緒で長い間触れていれば応用は利くようになります。
if文for文switch文は出来るようになって損はありません。
Re: C言語 応用が利きません・・・
Posted: 2010年12月02日(木) 14:37
by 柏餅
はじめたばかりで中々自信が持てず不安でしたが、頑張れそうです。
それにそんなソフトがあるなんて!
紹介してくださりありがとうございます。
何だか質問ばかりで申し訳ないんですが・・・
今for文の多重ループをやっているんですが、多重ループの流れが理解できません
for文は
for (式1; 式2; 式3)
ループ本体
で 式1 - 式2 - ループ本体 - 式3 が全体の流れですよね?
しかしこれが多重ループになるとどうも流れが分からなくて、困ってます。
簡単でいいので全体の流れを教えていただけないでしょうか、お願いします。
Re: C言語 応用が利きません・・・
Posted: 2010年12月02日(木) 15:30
by softya(ソフト屋)
そんなに複雑に考える必要はないです。
コード:
for (式1; 式2; 式3) {
ループ本体a
for (式b1; 式b2; 式b3) {
ループ本体b
}
}
とすれば、
(1)式1
(2)式2で条件が偽ならば(11)へ
(3)ループ本体a
(4)式b1
(5)式b2で条件が偽ならば(9)へ
(6)ループ本体b
(7)式b3
(8) 戻る(5)へ
(9)式3
(10) 戻る(2)へ
となります。いやかえって分かりづらいか?
Re: C言語 応用が利きません・・・
Posted: 2010年12月02日(木) 18:29
by 柏餅
なんとなくはわかりますが難しい・・・
それともう1つ、forが二つ並ぶ場合はどうゆう流れになるんですか?
code=c
for (式1; 式2; 式3){
for (式1; 式2; 式3){
ループ本体
}
}
/code
こいつが調べれば調べる程ややこしくて・・・
Re: C言語 応用が利きません・・・
Posted: 2010年12月02日(木) 18:57
by softya(ソフト屋)
>forが二つ並ぶ場合はどうゆう流れになるんですか?
それは、私の例の(3)がなくなるだけで同じなんですよ。
じゃあ、こうしましょう。
printfを使ってプログラムの流れを理解する方法です。
printfはプログラムで実行順に出力されるので、これをプログラムの流れを調べるのに使います。
このテクニックは、難しいプログラムを組むようになっても使える基本デバッグのテクニックでもあります。
こういうプログラムを実行してみてください。
コード:
#include <stdio.h>
int main(void)
{
int a,b;
printf( "for(a) ループ開始 \n" );
for( a=0 ; a<3 ; a++ ) {
printf( " for(a) ループ中 a=%d\n", a );
printf( " for(b) ループ開始 \n" );
for( b=0 ; b<3 ; b++ ) {
printf( " for(a)-for(b) ループ中 a=%d b=%d\n", a,b );
}
printf( " for(b) ループ終了 \n" );
}
printf( "for(a) ループ終了 \n" );
}
このプログラムを色々変更して試してみてください。
Re: C言語 応用が利きません・・・
Posted: 2010年12月02日(木) 23:28
by Ultimate
>というのも、当たり前ですが本に載っているサンプルプログラムは打てるのですが
>サンプルが載っていない演習問題が打てないんです。
>(演算子の使い方など・・・)(要は応用が利かないんです)
>初心者としてこれはよくあることなのでしょうか?
>応用が利くようになるにはどのように勉強すればいいのでしょうか?
数学を例にとって考えると、少し数字が変わったり、図の方向が若干違ったりするものが解けないようでは、どうしようもありません。
でも、少し考えてみると少しずつできてくるものです。
途中であきらめないで、いろいろ考えてみてください!僕も初めて6か月ほどの中学2年ですが、慣れてからはどんどん新しいものを創作できるようになってきました。
ここががんばりどころです。
ちなみに、僕はグラフィック作成もやっているのですが、それも同じです。
基本的なやり方を覚えた後は、それを利用してまったく新しいものを作るのは最初は苦労しましたが、とりあえずどうしたら新しいものが作れるのか、やっぱり最初はどんどん挑戦してなれることも大切だと感じました。
結論として、新しく勉強をする前に、まずはじっくり時間をかけて考えて見ることが必要です。そしてたくさんの問題に触れたり、自分で課題を作って解いてみてください。本当にわからないときはここにくればヒント(答えではだめです。)をくれると思います。
プログラミングに限ったことではないですが、初心者の最大の壁なのではないかと思います。これを乗り越えると楽しさが見えてくるのではないでしょうか?(少なくとも僕はそう感じました。)
>*ちなみに僕が勉強で使用している本は「柴田望洋 明解C言語入門編」です。
僕も初めてのC言語の本はそれです。
いいと思います。
>今for文の多重ループをやっているんですが、多重ループの流れが理解できません
たとえばこんな感じのプログラムで流れをしっかり理解してください。
コード:
#include <stdio.h>
int main(){
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("i:%d j:%d\n",i,j);
}
}
printf("\n\nforが終了後\ni:%d j:%d",i,j);
return 0;
}
それでは応援しています!!!