ゲームなどを制作するにあたり、C言語のお勧めの
参考書籍や出版社等ありましたら教えてください。
レベルは初心者と考えてくださって結構です。

ただ、私が本格的にプログラムを組むことは、あまり考えられません(^^;
プランナやデザイナーの人が読んでおいたら、
プログラマーの方々と密にお話できるものがよいですね、
そんな便利な本ってあります???
とにかく、もっと予備知識をつけておきたいのです。
ちょとしたことでもお待ちしておりまーす、

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

A 回答 (2件)

質問には


「ゲームなどを制作するにあたり、」
「プランナやデザイナーの人が読んでおいたら、プログラマーの方々と密にお話できるものがよいですね」
とあるんですが、申し訳ありません、ここらへんのことはまったく知りません。

それなので、はずした回答になるかもしれませんが、初心者の方がC言語を勉強するのにお勧めの本ということで回答させてください。

C言語の初心者であれば、柴田望洋という人の書いた「定本 明解C言語 入門編」(ソフトバンクパブリッシングとかいう出版社)という本がお勧めだと思います。この本の問題集のような本があり「明解C言語 入門編 例解演習」というんですが、その問題を解いていくといいと思います。

また、C言語を勉強していくと、ポインタや2元配列(配列の配列)あたりとか、ポインタと配列の関係などでわけがわからなくなりがちです。そういう人には、前橋和弥著「C言語ポインタ完全制覇」(技術評論社)が最適です。
    • good
    • 0
この回答へのお礼

いえいえ、ありがとうございます。
僕もあれからちょと調べたのですが、定本明解C言語入門編や
C言語ポインタ完全制覇は、プログラマーの間で、
かなり人気のある本みたいですね。
アマゾンで上位ランキングされていました。

やはり勉強する上で、基本的な事項を抑えるのは、基本だと思いますので、
それらはチェックしてみようと思います。

あと、下記の本が気になっているのですが、誰か読んだ方いらしゃいます?
C言語〈1〉はじめてのCプログラミング プログラミング学習シリーズ
倉 薫 (著) 翔泳社

他の情報もお待ちしております。何でもOKですぅ(。^^。

お礼日時:2002/02/28 17:43

私は大学でCを習うことになったので自分で1から勉強するために「独習C」を買いました。

かなり分厚く高いんですが一人で勉強するのには最適だと思います。初心者向けの物ですのでほとんど基礎がない状態からでも読めると思います。予備知識をつけたいというのなら十分につくと思います。ただ問題は気軽に読むタイプのものではなくあくまで学習者向けの本であると言うことなんですが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、今度本屋で見てみることにします。感謝。

お礼日時:2002/02/27 23:06

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

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

QまだまだCプログラマーの初心者です、よろしくお願いします。

まだまだCプログラマーの初心者です、よろしくお願いします。
次のコードについての質問です。

void swap_str(char **s1, char **s2)
{
char *tmp;

tmp = *s1;
*s1 = *s2;
*s2 = tmp;
}

int main(void)
{
char a1[15], a2[15];

puts("2つの文字列を入力");
printf("文字列a1: ");scanf("%s", a1);
printf("文字列a2: ");scanf("%s", a2);

swap_str(&a1, &a2);

puts("【2つの文字列の交換完了】");
printf("文字列a1: %s\n", a1);
printf("文字列a2: %s\n", a2);

return 0;
}

このコードをコンパイルすると以下のwarningが出ました。
xxxxx.c:26: warning: passing arg 1 of `swap_str' from incompatible pointer type
xxxxx.c:26: warning: passing arg 2 of `swap_str' from incompatible pointer type
(26行目は "swap_str(&a1, &a2);" になります)
関数swap_strの仮引数部分でポインタの型が矛盾した型を受け取っているのが原因だと思うのですがどうなのでしょうか?
一応実行してみると、1byte分は交換されていましたが、それ以上の部分は交換されてませんでした。
正しく交換するためにはどのように修正すればよろしいでしょうか?

実行環境:WindowsVista(32)、コンパイラーはgccです。

以上です、よろしくお願いします。

まだまだCプログラマーの初心者です、よろしくお願いします。
次のコードについての質問です。

void swap_str(char **s1, char **s2)
{
char *tmp;

tmp = *s1;
*s1 = *s2;
*s2 = tmp;
}

int main(void)
{
char a1[15], a2[15];

puts("2つの文字列を入力");
printf("文字列a1: ");scanf("%s", a1);
printf("文字列a2: ");scanf("%s", a2);

swap_str(&a1, &a2);

puts("【2つの文字列の交換完了】");
printf("文字列a1: %s\n", a1);
printf("文字列a2: %s\n", a2);

return 0;
}

このコードをコンパイルする...続きを読む

Aベストアンサー

すみません。No.6です。
5文字目以降は変換されませんでした。

次のプログラムを実行してみました。
#include <stdio.h>
void swap_str(char **s1, char **s2)
{
char *tmp;

tmp = *s1;
*s1 = *s2;
*s2 = tmp;
}

int main(void)
{
char a1[15], a2[15];

puts("2つの文字列を入力");
printf("文字列a1: "); scanf("%s", a1);
printf("文字列a2: "); scanf("%s", a2);
printf("%X\n%X\n", a1, a2); //a1, a2それぞれの先頭のアドレスを表示

swap_str(&a1, &a2);

puts("【2つの文字列の交換完了】");
printf("%X\n%X\n", a1, a2); //a1, a2それぞれの先頭のアドレスを表示
printf("文字列a1: %s\n", a1);
printf("文字列a2: %s\n", a2);

return 0;
}

このプログラムを実行すると、結果は次のようになります。

2つの文字列を入力
文字列a1: abcdefg
文字列a2: hijklmn
13FDCC   <-a1の先頭のアドレス
13FDB4   <-a2の先頭のアドレス
【2つの文字列の交換完了】
13FDCC   <-a1の先頭のアドレス
13FDB4   <-a2の先頭のアドレス
文字列a1: hijkefg
文字列a2: abcdlmn


見てわかるとおり先頭のアドレスは、a1もa2も変わってません。
これは、

char str[10];

と配列を定義した場合、確かにstrで先頭アドレスをあらわしますが、配列のアドレスは「定数」であるとC言語の仕様で決まっているため、swap_str関数のような処理を行って、後から変更することはできないのです。
四文字目まで変換された理由は、わかりません。

すみません。No.6です。
5文字目以降は変換されませんでした。

次のプログラムを実行してみました。
#include <stdio.h>
void swap_str(char **s1, char **s2)
{
char *tmp;

tmp = *s1;
*s1 = *s2;
*s2 = tmp;
}

int main(void)
{
char a1[15], a2[15];

puts("2つの文字列を入力");
printf("文字列a1: "); scanf("%s", a1);
printf("文字列a2: "); scanf("%s", a2);
printf("%X\n%X\n", a1, a2); //a1, a2それぞれの先頭のアドレスを表示

swap_str(&a1, &a2);

puts("【2つの...続きを読む

Qちょ~ド素人の質問・・・・・・・

C言語の超入門サイトをみて思ったのですが、コードの書き方の前に、なにを使って記述するのか、JEDってなに?って感じでした・・・。
ただのメモ帳でもできるのかDOSを使うのかとか・・・。
そのへんが知りたいです。
ついでにJAVAもなにを使ってやるのかよくわかりませんでした・・・。
よろしくお願いします。

Aベストアンサー

こんにちは。itohhといいます。

コンパイラは、お持ちですか?
市販のコンパイラ(開発環境ソフト)をお持ちであれば、ソースコードを記述するところから
実行までその開発環境ソフトで行えます。

フリーのコンパイラをお使いならば。

ソースコードを記述するためにメモ帳、エディターなどのテキストファイルを編集できるソフトが
必要になります。
お薦めは、やっぱり、エディターですね、CやJavaのソースコードを書くのに適していると思いますよ。

Vectorでエディタの特集をやっていますのでそちらをご覧ください。
URL:http://www.vector.co.jp/magazine/spotlight/000329/sl0003291.html

また、実行形式のファイルにするためには、DOSプロンプトなどからコンパイラーを実行かけな
ければいけません。フリーのコンパイラに使い方が載っていると思いますので、確認してみてく
ださい。

参考URL:http://www.vector.co.jp/magazine/spotlight/000329/sl0003291.html

こんにちは。itohhといいます。

コンパイラは、お持ちですか?
市販のコンパイラ(開発環境ソフト)をお持ちであれば、ソースコードを記述するところから
実行までその開発環境ソフトで行えます。

フリーのコンパイラをお使いならば。

ソースコードを記述するためにメモ帳、エディターなどのテキストファイルを編集できるソフトが
必要になります。
お薦めは、やっぱり、エディターですね、CやJavaのソースコードを書くのに適していると思いますよ。

Vectorでエディタの特集をやっていますのでそ...続きを読む

Qあともうちょっで完成なのですが・・・

うまく動作しないのですが、以下のプログラムのどこが間違っているのでしょうか?
たぶん、メイン関数の宣言の部分だと思うのですが・・・。

#include<stdio.h>
typedef struct Time{
int hour;
int second;
int minute;
}Time;
int main(void){
Time time1,time2,time3;
Time time[3];
int i;
for(i=0;i<3;i++){
printf("time%dの時間を入力\n",i+1);
  scanf("%d",time[i].hour);
printf("time%dの分を入力\n",i+1)
  scanf("%d",time[i].minute);
printf("time%dの秒を入力\n",i+1);
scanf("%d",time[i].second);
}
time3.second = time1.second + time2.second;
if( time3.second >= 60 ){
time3.second=-60;
/* time3.second = time3.second - 60; */
time3.minute=1;
}else{
time3.minute=0;
}
time3.minute = time3.minute + time1.minute + time2.minute;
if( time3.minute >= 60 ){
time3.minute=-60;
/* time3.minute = time3.minute - 60; */
time3.hour=1;
}else{
time3.hour=0;
}
time3.hour= time3.hour+ time1.hour+ time2.hour;
return 0;
}

うまく動作しないのですが、以下のプログラムのどこが間違っているのでしょうか?
たぶん、メイン関数の宣言の部分だと思うのですが・・・。

#include<stdio.h>
typedef struct Time{
int hour;
int second;
int minute;
}Time;
int main(void){
Time time1,time2,time3;
Time time[3];
int i;
for(i=0;i<3;i++){
printf("time%dの時間を入力\n",i+1);
  scanf("%d",time[i].hour);
printf("time%dの分を入力\n",i+1)
  scanf("%d",time[i].minute);
...続きを読む

Aベストアンサー

> 構造体Timeを定義し、この構造体型を持つ変数time1,time2,time3を用意します。この変数time1,time2に時間、分、秒のデータを入力し,

その仕様でしたら、構造体の配列 time[3] は不要ですね。
scanf() のところを修正して、time1 と time2 に入力してください。

QC言語のプログラマー

同じ質問を違うカテで投稿したのですが、回答が明確でない為、再度質問をさせて下さい!!。
c言語のプログラマーについて教えてください。
私はc言語を勉強中のものです(DOSでやっています)
例えばdosレベルが出来る程度で会社に雇用してもらう
事はできますか?この場合+アセンブラではなく純粋にC言語だけです。
またあるのならどんな分野なのでしょうか?

Aベストアンサー

>例えばdosレベルが出来る程度で会社に雇用してもらう
>事はできますか?この場合+アセンブラではなく純粋にC言語だけです。

会社によります。が業務上未経験の場合は年齢が重視されます。20代ならOKの可能性が高いです。30代の場合は、可能性が低くなりますが、全くない訳ではありません。未経験の場合は、「やる気」があるかどうかが問われます。「やる気」があることをアピールすれば、採用される可能性が高くなります。少なくとも私はそういう人を採用します。

>またあるのならどんな分野なのでしょうか?
現在、UNIXでの証券関係の分野でC言語で開発をしています。
DOSでの仕事は、全く無いという訳ではありませんが少ないでしょう(自信なし)。
そのほかでは、組み込み機器関連、携帯電話等の分野での需要があります。(こちらの関連の仕事は最近やってないので多少自信なし)

QプログラマーとWebデザイン

来春、地元の専門学校に進学しようか悩んでいるのですが、どのコースが自分に合うのか判りません。
「プログラマコース」と「Webデザインコース」の2つです。
最初は「プログラマコース」を希望していたのですが、C言語等がとても難しそうに感じます。
浅い技術ではありますが、IllustlatorとPhotoshopを5年程使っていたので、少しでも活かしたいです。
それで趣味のWeb製作の範囲を広げて「Webデザインコース」も考えてみたのですが、私の住んでいる所は田舎なので、果たして卒業後、Webデザイナーとして就職できるのか不安があります。
地元のハローワークで調べてみましたが、プログラマーでは数件ありましたが、Webデザイナーの求人は1つもありませんでした。
一体どちらの方に進んだ方が、将来就職しやすいでしょうか?
あと、初心者でもすんなりと学べるのはどちらですか?

Aベストアンサー

>C言語等がとても難しそうに感じます。

何でも最初は難しいです(^^;
tori004さんも趣味でWeb製作をされていらっしゃったならお分かりかと思いますが、人に見せられる(お金を取れる)レベルまで到達するにはそれなりの時間と努力が必要ですよね。最初からプロレベルの人なんていません。

>一体どちらの方に進んだ方が、将来就職しやすいでしょうか?

皆さんがおっしゃるとおり、就職という面だけで見れば圧倒的にプログラマが有利です。
現実(=地元のハローワーク)を見て分かるように、地方でWebデザイナーとして就職するのは難しい、というかほぼ無理と思っておいたほうがいいでしょう。

ただ、どちらを選ぶか、という問題はまた別の話です。

「就職しやすさ」などで選んでしまうと、ほぼ100%後悔することになると思います。
まあ、プログラマコースに入って「意外と面白いな、向いてるんじゃぁ・・・」と感じてPG一直線という可能性も無きにしもあらずですが、これもおそらく就職してから泣きを見ることでしょう(笑)

ここではtori004さんの適性がはっきり分かっているわけではありませんので、できればオープンカレッジや説明会等で「何をするか」「どんな授業を受けられるのか」ということを体験してみてはいかがでしょうか。
また、知り合いやOB/OGにその専門学校のOB/OGがいれば、体験談などを聞いてみてもいいと思います。

>C言語等がとても難しそうに感じます。

何でも最初は難しいです(^^;
tori004さんも趣味でWeb製作をされていらっしゃったならお分かりかと思いますが、人に見せられる(お金を取れる)レベルまで到達するにはそれなりの時間と努力が必要ですよね。最初からプロレベルの人なんていません。

>一体どちらの方に進んだ方が、将来就職しやすいでしょうか?

皆さんがおっしゃるとおり、就職という面だけで見れば圧倒的にプログラマが有利です。
現実(=地元のハローワーク)を見て分かるように、地方でWebデザイナ...続きを読む


人気Q&Aランキング

おすすめ情報