いま、独学でc言語を勉強しています。

しかし、なかなか上達しません。問題を見たときに何を考えればいいのか
わからないのです。

友人の中には、問題を見てすぐにプログラミングが浮かんでくるという人がいるのですが、
このような人たちは問題から何を察知しているのでしょうか?
そして、どのようなことを頭のなかで考えているのでしょうか?

少し抽象的な質問ですが、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (12件中11~12件)

あくまでもわたしの場合の回答です。


何も察知しないし、
何も考えていません。

経験豊かなプログラマであれば、多少のプログラムは何も考えずに
半ば自発的に浮かんでくるはずです。

例えば、
1+1=?
という問題があったときに大多数の人が考えること無く
答えが浮かんでくることと同じ事だと思います。

問題と答えが既に頭の中で結びついているが為に為せる技です。
    • good
    • 0

問題を見てすぐにプログラミングが浮かんでくるというのは経験の賜だと


思います。英語できる人が、日本語聞いてすぐに英語が浮かぶのと同じような
ものです。

さて、「問題から何を察知しているか」ですが・・・。

ちょっと実例を挙げないと難しいですね。かと言ってこちらで適当なものを
考えても、それがmickmick2さんにとってピンとくるものかどうかがわかり
ませんし・・・。

問題を何か1つ挙げてみてくれませんか?

この回答への補足

なんでもいいんですか?
そうですねぇ。こんなのでいかがですか?

配列で表現した2分木を用いて名前を辞書順に並べるプログラムを作成せよ。ただし、
同じ名前が既にある場合は、追加しないこと。また、追加された場合、2分木のノード
および格納関係を表示すること。

どうですか?

補足日時:2001/06/05 19:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qプログラミングは独学で習得できるか。

質問タイトルのとおりなのですが、これから、プログラミングをやってみたいと思っている者です。
C言語やJavaを学びたいと思っているのですが、市販の書籍を
何冊か買ってきて一通りの基本的な事項というのは独習・体得できるものなのでしょうか。
良書を調べたりもしていますが、結構、初心者には熟読しても難しい概念が多いですよね。
応用や発展的な技術はたしかに、長い期間をかけての実際の仕事現場での経験、積み重ねが必要であるとは思いますが、変数、関数、クラス、条件分岐などの基礎的な概念や、文法は理解できるのだろうかと思ったりもしました。
プログラミングをマスターしている方というのは、だいたい本を見て独学でやられてきたのですか。
それとも、よくある大学や、「WAVE」「インディーフォルダ(元アウズ)」「ヒューマンアカデミー」などのスクールに通われて身に付けた方も多いのでしょうか。
私も体験入学などしてきましたが、「わからないところを質問できる」、「お金を払ってまで通うのであるから、なまけたり、挫折しないで学習を持続できる心理的な強制力がある」との利点はあるものの、それ以外での実際の学習内容は、一般の書籍と中身は大して変わらないのかなと思ったのですが。
たしかに自己管理をなかなかできない場合は、学費も大きいけれども、長い目で自分に投資するという観点から見た場合、非常に大きな払うだけの価値があるのかもしれませんが。
学費を払うだけの価値があるのかなと思い、迷っています。
もし、何かしらのアドバイスをいただけたら、ありがたく思います。

質問タイトルのとおりなのですが、これから、プログラミングをやってみたいと思っている者です。
C言語やJavaを学びたいと思っているのですが、市販の書籍を
何冊か買ってきて一通りの基本的な事項というのは独習・体得できるものなのでしょうか。
良書を調べたりもしていますが、結構、初心者には熟読しても難しい概念が多いですよね。
応用や発展的な技術はたしかに、長い期間をかけての実際の仕事現場での経験、積み重ねが必要であるとは思いますが、変数、関数、クラス、条件分岐などの基礎的な概念...続きを読む

Aベストアンサー

nobulinさんがプログラミングを何のために勉学するのかによります。
つまり、情報科学科の学生さんで学業のため、就職のため、趣味のためなど。

就職のためなら、自分に投資しても体系的に勉強する価値はあります。
学業なら、学校の先生や先輩に本や勉強法を伺うのもよいでしょう。
趣味ならば、その言語を使って何か製作したいソフトウェアを
考えて、それを作るにはどうやればよいか調べていくのも手です。

勉強するときは、まずはサンプルプログラムのソースコードが
書いてある本を見ながら自分でまったく同じプログラムをつくったり、
それをちょっとずつ改造・改変しながら応用していき、コマンドを
覚えるのが早道だと思います。

1つのプログラム言語を覚えれば、2つ目からは前に覚えた言語との
違い、コマンドの名前、引数の使い方の違いを覚えていけばよいと
思いますよ。

私は大学卒業後SEの道に進みました(今はSEを辞めぜんぜん違う仕事をしています)が、
学生時代は、大学の授業で今は無きMacのHyperTalkからスタートし、
会社に就職してからは会社の新人研修や実JOBで
COBOL→C言語→VB(VBA)→HTML/Perl→Oracle PL/SQLと
覚えていきました。
(覚えた順番はその時代およびお客様のシステムに関係する上、
すべての言語をパーフェクトに覚えたわけではありませんが)

また、できるだけ同じ言語を勉強している友達を見つけて
情報交換をしてみてください。

nobulinさんがプログラミングを何のために勉学するのかによります。
つまり、情報科学科の学生さんで学業のため、就職のため、趣味のためなど。

就職のためなら、自分に投資しても体系的に勉強する価値はあります。
学業なら、学校の先生や先輩に本や勉強法を伺うのもよいでしょう。
趣味ならば、その言語を使って何か製作したいソフトウェアを
考えて、それを作るにはどうやればよいか調べていくのも手です。

勉強するときは、まずはサンプルプログラムのソースコードが
書いてある本を見ながら自分で...続きを読む

Q高校に入ったら独学でプログラミングを学習しようと思います。言語のアドバイスください。

高校に入ったら部活に入らずに1時間ほどプログラミングを勉強しようと思っています。今のところパソコンがすきなのとプログラミングに興味がある、ゲームを作ってみたいというのがあります。

SEという仕事にも本当は興味があるのですが、忙しい、過労死が多い、うつ病になる人がおおいなど評判があまりよくないので残念ですが考えていません。

実際のところこのSEはどうなのでしょうか?

また、ゲームプログラミングは、趣味でもやりたいというのがあります


ゲームで習得していたほうがいい・比較的初心者が習得しやすい言語は何ですか?
やはりCから入ったほうがいいでしょうか?

また順序を教えていただきたいです。

例えば html→javascriptで学習するとjavascriptがすぐ理解できるとか、CからC++に入ると習得が早いとか・・・。

また、いきなりjavaというのはきついでしょうか?


作ったソフトは売ることもできるのですか?

質問ばかりですいません。

Aベストアンサー

仕事でSEもゲームプログラマも経験がありますが会社や上司次第って所でしょうか。死ぬほど忙しいところもあるし、基本的に定時退社って所もあります。まぁ、忙しいところが比較的多いのは確かですが。

とりあえずゲームに絞って言語を選ぶとするとCかC++、C#、JAVAですかね。
・C/C++はプロや多くのアマチュアがゲーム製作に使っています。
・C#は、Xbox360XNAプラットフォームが魅力ですがアマチュア中心です。
・JAVAは、携帯電話だとプロもアマも使っています。Winだと少ないかと思います。

>CからC++に入ると習得が早いとか・・・。
これは逆に邪魔になると言う意見も多いですね。私もそう思うところがあります。ゲームを作る場合Cだけでも作れますのでプロを考えないならC++に手を出さない手も有ります。

>比較的初心者が習得しやすい言語は何ですか?
これはCやJAVAだと難しいですね。
ゲーム製作に向いたスクリプト言語があるので、そちらの方が簡単です。
http://www.tonyu-arpg.com/
http://hsp.tv/make/hspbook.html

>また、いきなりjavaというのはきついでしょうか?
いや、悪くないですよ。C→javaより良いかもしれません。

>作ったソフトは売ることもできるのですか?
シャエウェアで販売する方法や
http://www.vector.co.jp/vpack/filearea/win/game/
同人ソフトとして販売する方法があります(成人向けは閲覧禁止!)。
http://www.melonbooks.com/item/itemCategory/top/4

とりあえずネットで一番情報が多いC/C++言語のサイトを紹介します。最初は2Dのゲームから始めるのが難易度が低くて良いと思います。
http://www.plustarnet.com/aspil/Programming/
http://dixq.net/g/

>高校に入ったら部活に入らずに1時間ほどプログラミングを勉強しようと思っています。
いや、1日1時間だとたぶん一年経っても入門終わんないかもしれませんよ。高校と言わず今から始めてみましょう。

仕事でSEもゲームプログラマも経験がありますが会社や上司次第って所でしょうか。死ぬほど忙しいところもあるし、基本的に定時退社って所もあります。まぁ、忙しいところが比較的多いのは確かですが。

とりあえずゲームに絞って言語を選ぶとするとCかC++、C#、JAVAですかね。
・C/C++はプロや多くのアマチュアがゲーム製作に使っています。
・C#は、Xbox360XNAプラットフォームが魅力ですがアマチュア中心です。
・JAVAは、携帯電話だとプロもアマも使っています。Win...続きを読む

QMacでのソケットプログラミング(ネットワークプログラミング)

Macでネットワークプログラミング(UNIXベースのため)をしようと思っているのですが、サーバプログラムを作り実行したところ、「bind : Can't assign requested address」と出てしまい、実行することができません。
コンパイル時にエラーは出なかったので、プログラム自体にミスはないと思います。
ちなみにOSのバージョンはOS X Tiger 10.4.6です。
どなたか詳しい方、教えて下さい。

Aベストアンサー

そういえば、これは listen する側のソケットですよね?

だとすると

sin.sin_addr.s_addr = INADDR_ANY;

ではないのかな?

それと念のため

bzero( (char*) &serv, sizeof(serv) );

と最初にしておいた方がいいと思います。

Qプログラミング言語Cとプログラミング言語C++

プログラミング言語Cとプログラミング言語C++の違いって何ですか?
あと、プログラミング言語C++についていくつか質問があります。
#include <iostream>
using namespace std;
void main(){
cout << "Hello world!" << endl;
}
このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?
using namespace stdって何ですか?
あと、 cout <<"Hello world!"って何ですか?

Aベストアンサー

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド文字版を宣言するためのものです。
ですので、iostreamヘッダで宣言・定義される関数やクラスを使うだけでは一般的なファイルの操作はできませんし、sprintfやsscanfに相当するものもありません。
また、removeやrenameなど、ストリームとは関係のない操作も含まれていません。

> using namespace stdって何ですか?

「using指令」によって、名前空間stdの中にある名前を大域的名前空間でも使えるようにするものです。
せっかく名前空間を分けているのに、それを無効にしてしまうような機能ですから、安易にusing指令を使うのはお勧めしません。

> あと、 cout <<"Hello world!"って何ですか?

標準出力に対して、文字列"Hello, world!"を出力します。
ちなみに、endlは、改行を出力したあと、バッファにたまった内容を実際に吐き出します(フラッシュします)。単なる改行の出力ではないので要注意です。

C++の仕様は結構大きい方なので、遭遇した記述をひとつひとつ質問していたのではキリがありません。
まずは入門書を一冊読み、わからない用語等については、処理系のリファレンスを読むか、ネットで検索するなどしてください。

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド...続きを読む

Qプログラミングの考え方が出来ません

大学でC言語を習っていて、今も実験などでC言語のプログラミングをしなければならないのですが、なかなか思うようにプログラムが書けません。

いつも何回も友達や教授に聞かないと納得が出来ないし、とても時間がかかるので困っています。

情報系の学科なのでこれからも使うことになるだろうし、自分としてももっとプログラミングが出来るようになりたいと思っているのですが、良い勉強法などあれば教えてください。

今までちゃんとやったことのある言語はC言語のみで、大学では1年半C言語の授業がありました。

自分でプログラミングをしていて困ってしまうのは、主に条件分岐が複雑になってしまうときと、文字列の操作(ポインタ?)です。

今、3年後期なので4年次に研究室に配属されるまでにもっと出来るようになりたいのでよろしくお願いしますm(__)m

Aベストアンサー

>>困ってしまうのは、主に条件分岐が複雑になってしまうとき

これはなかなか答えづらい質問ですね。
論理的思考能力の問題かと思うのですが、訓練方法はよく知りません。
学生時代には数学とかいくら教えても理解できないヤツとかいましたし、
得手不得手の問題かと個人的には考えますが‥。
日頃から、「なぜ」この結果になるのか?と何度も本当に自分が理解できるまで
何度も「なぜ」を繰り返すと自然と身につくようになる気がします。

>>と、文字列の操作(ポインタ?)です。

ポインタが分からないという人は「変数」の仕様を理解していない場合が大半です。
簡単に言うと、

・「変数」は「文字や数」を格納するのに使用します。
・そして、メモリ上のどこに格納したかコンピュータが覚えておくために、
「変数」には必ず一意な「アドレス」が割り当てられます。
・「ポインタ変数」はこの「アドレス」を格納するための「変数」です

上記に書いたようなことを常に念頭におきながらポインタを使っているとだんだん慣れてきます。

int a; /* メモリ上にaの値を格納するための領域を確保
a=100; /* メモリ上に確保したaの領域に100を代入
int *b; /* メモリ上にアドレスを格納するための領域を確保
b = &a; /* メモリ上に確保したbの領域にaのアドレスを代入
int *c; /* メモリ上にアドレスを格納するための領域を確保
c = b; /* メモリ上に確保したcの領域にbの値(すなわちaのアドレス)を代入
c = &b; /* メモリ上に確保したcの領域にbのアドレスを代入

>>情報系の学科なのでこれからも使うことになるだろうし

情報系の学科であろうと、近年はプログラミングができる必要はないパターンが増えています。
例えば、サーバ構築やネットワーク構築などの分野ですと、
ほとんどプログラミングは行いません。
また、会社に就職しても、プログラミングを行うのはいわゆる「下っ端」で
偉くなればなるほど、プログラミングをする機会は少なくなりますし、
今では「オフショア」といって、日本人よりももっと賃金の安い海外の方に委託するパターンが非常に多くなっています。
今必要とされている能力は、「プログラミングができる能力」ではなく、「問題解決できる設計能力」です。
通常、システム開発は「設計」⇒「プログラミング」で進めますので、
いかに実現に沿った「設計」を行えるかが重要になります。
つまり、「設計」が正しく行われていれば、「プログラミング」は誰でもできる、ということです。

とはいえ、じゃあプログラミングはいらないのかと言われれば、そういうわけではありません。
優秀な人ほど、すべてにおいて秀でていますし、
そもそも設計自体もコーディングしていく過程と考え方は似かよる上、
プログラミングができる(わかる)こと自体が、具体的な実現物の根拠に結びつくからです。

右往左往しましたが、私の考えとしましては、
・システム開発ではできる限り、プログラミングのできる能力はほしいが、
どうしても無理な場合は、分野によって回避できる。
ということです。

>>困ってしまうのは、主に条件分岐が複雑になってしまうとき

これはなかなか答えづらい質問ですね。
論理的思考能力の問題かと思うのですが、訓練方法はよく知りません。
学生時代には数学とかいくら教えても理解できないヤツとかいましたし、
得手不得手の問題かと個人的には考えますが‥。
日頃から、「なぜ」この結果になるのか?と何度も本当に自分が理解できるまで
何度も「なぜ」を繰り返すと自然と身につくようになる気がします。

>>と、文字列の操作(ポインタ?)です。

ポインタが分からない...続きを読む


人気Q&Aランキング

おすすめ情報