C言語 応用が利きません・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
柏餅

C言語 応用が利きません・・・

#1

投稿記事 by 柏餅 » 9年前

はじめまして柏餅といいます。
来年からゲームエンジニア専攻で入学で
最近C言語を勉強し始めたんですが、ちゃんと勉強したことを覚えているか不安です。

というのも、当たり前ですが本に載っているサンプルプログラムは打てるのですが
サンプルが載っていない演習問題が打てないんです。
(演算子の使い方など・・・)(要は応用が利かないんです)

初心者としてこれはよくあることなのでしょうか?
応用が利くようになるにはどのように勉強すればいいのでしょうか?

*ちなみに僕が勉強で使用している本は「柴田望洋 明解C言語入門編」です。

返答よろしくお願いいたします。

アバター
ookami
記事: 214
登録日時: 9年前
住所: 東京都

Re: C言語 応用が利きません・・・

#2

投稿記事 by ookami » 9年前

私もプロではないのでご参考までに...

> サンプルが載っていない演習問題が打てないんです。

サンプルが載っていれば演習問題が解けるってことなら、
問題ないと思いますよ。

特に、多言語を使うようになってくると、(C++, java, php,...)
構文が似ていて混乱してくるので、
私はしょっちゅうサンプルやリファレンスを見返しています。

> 応用が利くようになるにはどのように勉強すればいいのでしょうか?

とにかくたくさん打つこと、そして、
「あぁまた俺はこんなしょうもないミスを」
というのを、たくさん経験しておくことだと思います。

アバター
Ciel
記事: 252
登録日時: 9年前

Re: C言語 応用が利きません・・・

#3

投稿記事 by Ciel » 9年前

最初は私もその辺で悩みはしましたが、
気がついた時にはある程度欠けるようになってました。

最初は何も知識なんかないんだから、出来なくて当然でしょう。
諦めずにコツコツやってれば、いつかはある程度かけるようになるものです。
oui C'est la Vie♪

ぬっち
記事: 105
登録日時: 9年前
連絡を取る:

Re: C言語 応用が利きません・・・

#4

投稿記事 by ぬっち » 9年前

とにかく、書いて失敗しての繰り返しですかね・・・。
私ももう3年C言語やってますが、まだまだですね^^;
他の方が書いたコードとか見てるとこんな書き方とかあるんだーとか勉強になる部分が多いです。

本に載ってるサンプルが解けるのでしたらあとはもうひたすら、他の方のコードを読んでまねしたり、自分で実際にコードを書いてみることですかね。
そうすれば次第に応用のきいたコード(日本語おかしい?)が書けるようになってくると思います。

がんばってください(^^)/

柏餅

Re: C言語 応用が利きません・・・

#5

投稿記事 by 柏餅 » 9年前

返信が送れてすいません。
皆さん返答ありがとうございます。

繰り返し練習して
応用が利くように頑張ってみます。

あともういくつか質問なんですが、演算子の使い方はどのように覚えればよいのでしょうか?
本の演習問題などもこいつのお陰で、解けない問題がいくつか・・・

あとどのあたりを集中的にやった方がいいとかありますか?
(for文 if文 do文 演算子)などありますが・・・

返答の方お願いいたします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: C言語 応用が利きません・・・

#6

投稿記事 by softya(ソフト屋) » 9年前

柏餅 さんが書きました: あともういくつか質問なんですが、演算子の使い方はどのように覚えればよいのでしょうか?
本の演習問題などもこいつのお陰で、解けない問題がいくつか・・・
演算子一つ一つ自分で機能をテストするプログラムを自力で組んでみるのが一番良いと思います。
どのプログラミング言語の機能もそうですが、サンプルの丸写しや打ち込みだけしていても理解できるものではありません。

こんな風なプログラムを作って、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
ただ、こっちはかなり不安定なんですよね。
なので、あんまり当てにしないでください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
釣り師
記事: 33
登録日時: 9年前
住所: Stand by me.

Re: C言語 応用が利きません・・・

#7

投稿記事 by 釣り師 » 9年前

僕もあまりCとかには詳しくないので気のきいたことはいえないのですが、要は数学と一緒で長い間触れていれば応用は利くようになります。

if文for文switch文は出来るようになって損はありません。
うひょーい。

柏餅

Re: C言語 応用が利きません・・・

#8

投稿記事 by 柏餅 » 9年前

はじめたばかりで中々自信が持てず不安でしたが、頑張れそうです。

それにそんなソフトがあるなんて!
紹介してくださりありがとうございます。

何だか質問ばかりで申し訳ないんですが・・・
今for文の多重ループをやっているんですが、多重ループの流れが理解できません
for文は
for (式1; 式2; 式3)
ループ本体
で 式1 - 式2 - ループ本体 - 式3 が全体の流れですよね?

しかしこれが多重ループになるとどうも流れが分からなくて、困ってます。
簡単でいいので全体の流れを教えていただけないでしょうか、お願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: C言語 応用が利きません・・・

#9

投稿記事 by softya(ソフト屋) » 9年前

そんなに複雑に考える必要はないです。

コード:

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)へ
となります。いやかえって分かりづらいか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

柏餅

Re: C言語 応用が利きません・・・

#10

投稿記事 by 柏餅 » 9年前

なんとなくはわかりますが難しい・・・
それともう1つ、forが二つ並ぶ場合はどうゆう流れになるんですか?
code=c
for (式1; 式2; 式3){
for (式1; 式2; 式3){
ループ本体
}
}
/code
こいつが調べれば調べる程ややこしくて・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: C言語 応用が利きません・・・

#11

投稿記事 by softya(ソフト屋) » 9年前

>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" );
}
このプログラムを色々変更して試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Ultimate
記事: 38
登録日時: 9年前
住所: 埼玉県
連絡を取る:

Re: C言語 応用が利きません・・・

#12

投稿記事 by Ultimate » 9年前

>というのも、当たり前ですが本に載っているサンプルプログラムは打てるのですが
>サンプルが載っていない演習問題が打てないんです。
>(演算子の使い方など・・・)(要は応用が利かないんです)
>初心者としてこれはよくあることなのでしょうか?
>応用が利くようになるにはどのように勉強すればいいのでしょうか?

数学を例にとって考えると、少し数字が変わったり、図の方向が若干違ったりするものが解けないようでは、どうしようもありません。
でも、少し考えてみると少しずつできてくるものです。
途中であきらめないで、いろいろ考えてみてください!僕も初めて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;
}

それでは応援しています!!!

閉鎖

“C言語何でも質問掲示板” へ戻る