こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

素人なのですが、プログラマになってしまいました。

営業として入った会社に技術者が足りないので、自習室を使ってもいいからC言語の勉強をして欲しいとの事で、プログラミング言語Cの著書では有名なK&Rを配布され、1章まで読み進めたところで会社側から問題を出されたのですが。

『入力
キーボードから文字を入力し、改行が入力されるまで、 1文字ずつ配列に文字を保存していきます。
出力
改行が入力されたら、それまでに保存した文字を配列から 1文字ずつ出力し、改行までに入力された文字数を画面に表示します。

入力仕様

(1)最大半角 80文字まで入力可能であること。
(2)入力された文字を保存する配列の大きさは defineで定義すること。
(3)入力を開始する前に入力を促すプロンプトとして「 Input>」を表示させること
(4)入力時のループは whileを使うこと。
(5)ループを抜ける条件は読み込んだ文字が改行文字である場合とすること。
出力仕様

(1)戻り値も引数も取らない一つの関数を宣言し、その関数を使って出力すること。
(2)出力時のループは for文を使うこと。
(3)ループを抜けた後、改行までに入力された文字数を画面に出力すること。
演習

(1)上記課題を作成せよ
(2) (1)で作成したプログラムについて、入力について配列の最大サイズを超えた入力は無効となる様にプログラムを変更せよ。』

上の内容を一つずつであればなんとかプログラミング出来るようになったのですが、全てを一つのプログラムにする、となると文の書き方が解らなくて困っています。
皆さんはプログラマーの勉強を始めて壁にぶつかった時、どう対処されていました??
回答よろしくお願いします。。

投稿日時 - 2009-08-06 23:45:26

QNo.5187928

困ってます

質問者が選んだベストアンサー

変数・常数・制御の流れ・配列・関数・#define定義 あたりでプログラムは書けますよね。
***
プログラムの書き方
■ライブラリ関数・ヘッダファイルの宣言
■変数・常数などの宣言は使用する前に必要
■グローバルな変数・ローカルな変数(記憶クラス)を意識する。
■Cは関数型プログラムで
main(){
}
から実行される。
全てを一つのプログラムにする
>>同じファイル上に記述する。
関数間で相互参照する変数を関数外に定義(グローバル変数にする)
関数をあとから呼ばれる順に1つのファイルにおさめる。




#inckude <stdio.h>
#define 配列サイス数の定義

グローバル変数の定義

func(aa){
int aa;
mainから呼ばれる関数ならここらに

}

main(){
 ローカル変数の定義
 プログラム部分
}




みたいに書くと思います。
今回は、ローカル変数のみでOKですね^^
**************************
↑だいたいの感じですから詳細はマニュアルを見てください。

ところで。。

あなたの大学での専攻は何ですか?
会社はどんなものを作る会社なのですか?
プログラマになることは誰でも、努力により可能ですが、参考までに教えてください^^

投稿日時 - 2009-08-07 06:05:17

お礼

レスありがとうございます!
解説までしていただいて本当に助かります。
私は大学を出てないんです。高卒止まりで…。
私の会社は組み込み系ですね。家電や通信機器等の組み込みが主だと聞きました。

投稿日時 - 2009-08-07 08:07:20

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(10)

ANo.10

すげー、趣味でプログラミング言語を勉強してる人も多いのに。

基本は調べる事と、実験の繰り返しが、血肉になります。
本を読んだだけで、理解できる人は一握りの天才でしょう。
また、最初の頃は、分からない所は、飛ばすのも勇気です。
とりあえず、目標を完成させる。
理由は後で考えましょう。
何度と繰り返すと、自然に分かる事もあります。
分からないから、続けないが、一番ダメ。

で、本は相性のようなものもあると思います。
1冊ではなく、数冊は覚悟しましょう。

もしかしたら、経費で落ちるかもしれないし。

いいな~。

投稿日時 - 2009-08-07 11:33:57

お礼

確かに調べると実行の繰り返しですよね(^_^;)
最初はエラー文の意味が解らなくて困っていました(笑)
参考書も種類が多いので自分に合う本が見つかるといいのですけど!

レスありがとうございます!

投稿日時 - 2009-08-07 12:45:23

ANo.9

私も今年からプログラムの勉強を始めた初心者です。
分からないことに対しては、基本はインターネットで関連語句を検索して、ソースと解説を探すといった手段を取っています。

また、C言語の参考書ということでしたら、『明解 C言語 入門編』が見ていて分かりやすいと感じました。
書店でもよく見かけるので、どんなものか一度見てみてはいかがでしょうか?
また参考URLのamazonレビューでいろいろ意見が書かれているので、そちらを参考にしても良いかもしれません。

参考URL:http://www.amazon.co.jp/dp/4797327928/

投稿日時 - 2009-08-07 10:52:39

お礼

初心者の方って結構いらっしゃるんですね!
この業界に入るまで全く知らなかったので驚きました(^_^;)

レスありがとうございます!

投稿日時 - 2009-08-07 12:25:13

ANo.8

まあ、そっけない書き方しましたが、他の人の反応も見て分かると思いますよ。事実上、K&Rで勉強するのはキツい、と言う事が。
翻訳の悪さ、ってのもずーっと指摘され続けてる事です(実は有名な話なんですけどね・笑)。
従って、まあ「会社を辞める」ってのは冗談にしても自衛策として、どの道別途参考書を買い求めなければならないでしょう。

さて、別のトコにも書いたんですが、C言語の入門書を「これだ!!!」って推薦するのも難しいんですよ。と言うのも「C言語入門書」ってのが数が多すぎるから、です。
何故こんなに「C言語入門書」ってのがあるのか?実は定番書籍が無い、って事実の裏返しに過ぎません。別に「C言語が人気があるから」ってのが理由じゃないんです。
(これは良く考えてみれば分かるでしょうが、「人気がある言語」=「入門書がたくさんある」と言う恒等式は成り立たない、んです)
構造的な欠陥をそもそも挙げると、「C言語はプログラミング入門者に分かりやすくデザインされた言語じゃないから」です。元々OS設計用の言語ですしね。
つまり、

「プログラミング入門者向けに書かれたC言語入門」

ってのは、実の話無理があって、ニュアンス的には

「外国語学習入門者向けに書かれた古代エジプト語入門」

くらい無理があるんです。それくらい酷いんで「決定打が無い」から雨後の筍の如くたくさんの類書がリリースされているわけです。
さて、そーなると実際本を手に取って相性調べてみた方が良い、って事ですね。他人に聞いた情報はあくまで参考情報と割り切って、自分で本屋にでも行って「個人的に相性が良い本」を探すしか無いでしょう。
まあ、ザーっとAmazonで検索でもかけてみて

c言語 入門:
http://www.amazon.co.jp/s/ref=nb_ss_gw_0_3?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Dstripbooks&field-keywords=c%8C%BE%8C%EA+%93%FC%96%E5&x=0&y=0&sprefix=C%8C%BE%8C%EA

書評を参考にしてメモって本屋で実物読んでみる事をお勧めします。
まあ、大体「売上人気順」信じておけば間違いないでしょうしね。他の言語の入門書と違って、まあ厳密/そーじゃないの差はありますが、そこそこ売れている本は「50歩100歩だ」ってのもC言語のプログラミング初心者向け入門書の特徴と言えます。

あとは、#3氏が示唆しているように、ネットに頼る、ってのも一つの手ですよね。
割に「苦C」

苦しんで覚えるC言語:
http://homepage3.nifty.com/mmgames/c_guide/

なんかはタイトルの割には定番サイトなのではないでしょうか。

投稿日時 - 2009-08-07 10:22:38

お礼

実際知人にもK&Rを配布された事を話したら驚いてました(笑)
私も目を通していて同じ事を感じましたし(^_^;)

参考書も本当に種類が多いので困りますね。自分に合う本を探してみようと思います。
ご親切にありがとうございました!
レスありがとうございますね(^^)

投稿日時 - 2009-08-07 12:30:12

あなたはCをやる理由がわかりました。是非マスターしてください。
本は、■関数リファレンス(使い方解説付)があれば便利ですよ。
とりあえず、コンパイルして実行形式ファイル作成までの手順を覚えてください。
**
がんばってくださいね。^^
↓include 間違い

投稿日時 - 2009-08-07 09:39:54

お礼

重ね重ねありがとうございます!
先程のアドバイスを参考に何とかコンパイル出来ました!

本当に助かりましたよ(^^)

レスありがとうございました!

投稿日時 - 2009-08-07 12:48:35

ANo.6

K&Rで独学で勉強するのはむずかしいです。
アレは辞書だと思って別の参考書を買うことをお勧めします。
辞書(リファレンス)は辞書で別に良い本もあるのですがね(苦笑


さて、一つずつを書けるのなら、あとはそれらを繋げるだけですが。
古典的ではありますが、フローチャートを描いてみるといいかもです。記号なんて適当で(全部○でも)いいので。
あとはその流れに沿ってループを書いたり、処理を並べたりするだけです。

投稿日時 - 2009-08-07 08:18:50

お礼

今思うと会社が何の意図でこの本を配布されたのか解らないです(笑)
読み進めてもほぼ理解出来ないまま次の項目に進むって感じなので(^_^;)

フローチャートって言葉を初めて聞きましたが、検索してみると解りやすいヒントを貰えましたよ!

なんとか演習もこなせたので助かりました!

レスありがとうございますm(__)m

投稿日時 - 2009-08-07 12:59:02

ANo.5

まあ演習なので一歩一歩やっていくしかないですね。
プログラミングが出来るようになるまでは,何度も失敗して問題点を理解していくことを繰り返すだけです。
演習内容の仕様は言語仕様の理解を確認するにはいい内容のようです。
しかしC言語(プログラム言語)を知らない人にはなかなか高いハードルかもしれません。
まずは仕様1つ以上満たすプログラムを書いて,わからないところを整理して社内の先輩に確認すべきかも。
たぶん,はじめからは100%の解答を期待していませんから。肩の力を抜いて取り組むべきと考えます。

あと,「プログラミング言語C」は一般の辞書程度と考えるべきですね。C言語がある程度わかるようになってから使うと,かなり役に立ちます。教えてくれる人がいれば教科書にはなるのかも。入門書は別途用意された方がいいかもしれません。

投稿日時 - 2009-08-07 06:35:43

お礼

レスありがとうございます。
会社では現状聞ける人がいないので、自分に合う参考書を探そうと考えています。

肩の力を抜いて取り組む>確かに、ガチガチに入れ込んでいたと思います。お陰様で肩の力が抜けました。
ご意見ありがとうございます。

投稿日時 - 2009-08-07 08:15:24

ANo.3

読んでみて分かりやすいと思った。
http://www.asahi-net.or.jp/~yf8k-kbys/c0.html

誰か一人でも教えてくれる人がいるといいんですけどね。
私は師匠がいました。
基本はその人のおかげで身に付いたと思います。
今ほどネットが普及してなかった頃のお話なので
ネットで調べろという人もいませんでしたので・・・。

投稿日時 - 2009-08-07 04:50:30

お礼

レスありがとうございます。
このホームページの内容なら私にもなんとか理解出来そうです。
私も誰か教えてくれる方が回りにいると助かるとは思ったのですが・・。
めぐり合わせっていろいろありますね。

投稿日時 - 2009-08-07 07:29:04

ANo.2

ちなみに私自身は持っていないので知りませんが, 一部方面では
「プログラミング言語 C」の日本語版はボロボロなことで有名
だそうです. 誤訳とかもちょこちょこあるみたいで, 「この本の記述でおかしなところを指摘できれば一人前」とか言っていた人もいます.
英語のやつはまともらしいんですけどね.
なので, K&R で勉強するなら「十分理解している人」にいつでも聞ける体制にしとかないとまずいかも.

投稿日時 - 2009-08-07 01:19:54

お礼

レスありがとうございます。
読んでいて難しい本だなって思ってはいたのですが、そのような評価がされていたとは・・。
私の方でも参考書とか探してみます。
ありがとうございました。

投稿日時 - 2009-08-07 07:13:54

ANo.1

ただ一つ言える事は

>プログラミング言語Cの著書では有名なK&Rを配布され

これは間違いでしょう。
そもそもK&RってのはFortranやPascal経験者向けに書かれた書籍なんで「まったくの素人」が使うには厳しすぎますね。
この辺、

>営業として入った会社に技術者が足りないので、自習室を使ってもいいからC言語の勉強をして欲しい

も合わせて無茶苦茶、です。
従って、

>どう対処されていました?

に対しては、

1.会社を辞める
2.もっとマシな参考書を自習用に買い求める

の二つしかないでしょう。

投稿日時 - 2009-08-07 00:13:00

お礼

確かに少し無茶だとは思いましたが、他に仕事が無いので暫くは頑張ってみようと思います。
レスありがとうございます。

投稿日時 - 2009-08-07 08:17:09

あなたにオススメの質問