• 締切済み

CからC++に移る前に

こんにちは、はじめまして。 もうそろそろCを習得したと思うんですが、以下の事を知っているだけでC++に移れるでしょうか? ・関数の 使い方・作り方 ・マクロ定義 ・構造体 ・ヘッダファイル ・if,for,while,return ・ポインタ(良くわかんないけど値を参照して負荷減らすとか直接内容を変えるとか...) ・ライブラリ 他に何か覚えるべき知識があれば書いて頂けると嬉しいです。 あとお勧めのC++入門書を紹介してもらえると助かります。 チキンですみません、宜しくお願いします。

みんなの回答

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

プログラミングの初心者が陥る穴として文法を覚えたらプログラムができるようになったと思うことです。 実際には、仕様からプログラムがイメージ出来るようになってこそのプログラミング能力であって文法を覚えただけでプログラミングは出来ません。 で、簡単な問題を出しますから解いてみてください。 「Fizz-Buzz問題」 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 文法書や参考書を見ずに3分以内に作れますか?

kanto1580
質問者

お礼

なんというか、自分の未熟さがわかった気がします。 やはり経験を積んで、慣れて、ぱっぱっとアルゴリズムを組み立てる事が大切だと思い知りました。 問題集とか探したり自分で問題を作ったりしてプログラムに慣れていこうと思います ありがとうございました。

kanto1580
質問者

補足

どうすればこうなるかと考えたのが十五分 プログラム書いたのは五分 その内二分は間違いを直していました。 合計二十分も掛かってしまいました。

関連するQ&A

  • C言語、初心者が書けそうなプログラムとは?

     はじめにお断りしますが、私はプログラマーになるつもりは全くないです。  それとプログラムの知識もほとんど全くありません。  純粋に興味として質問をさせていただきます。 以下はC言語の入門者用の目次からなのですが、 ---------------------------- if,switch,for,while 2次元配列、自作関数、ポインタ、 関数への・コマンドプロンプトでの引数の渡し方 ファイルへの読み込み・書き出し バイナリファイルの入出力 構造体、共用体と列挙体、マクロ、 複数ファイルのプログラム malloc関数 ---------------------------- (1)以上のもの+α程度を習得して、さらに人の助言などによって発展性をもたらすことができたら、具体的に(※)何のプログラムが自作できますか? (※)カレンダー、オセロゲーム など?? (2)C言語を扱うプログラマーとして会社に入社して、最初の1年目で任せられるようなプログラムとは具体的にどういうものがありますか?  特に(2)の質問は範囲が広すぎて回答が困難だと予想されますが、質問している私自身が何もわからない人間なので、質問の範囲を狭めることができません。申し訳ありませんが上手く答えられる方、お願いします。

  • C#について

    お世話になります。 今までUNIX-Cをやってましたが今度仕事でC#を使用することになりました。そこでC#の勉強に役立つ書籍やサイトがあれば教えてください。  初歩的な質問ですが、c#では、#defineでの数値などの定義が出来ないようですがそれらのマクロ定義はどうするのでしょうか。  また、ヘッダーファイルに相当するものなどはあるのでしょうか。

  • C言語で入門の本を読んだあとはどうすればいでしょうか

    C言語で入門の本を読んだあとはどうすればいでしょうか ポインタ、構造体までできたのですが、次はどのステップに進めばよいでしょうか

  • C, C++の入門書を読み終えて…

    趣味でUNIX系向けのソフトウェア開発がしたいのでC, C++の入門書を購入しました。 もともとPythonは書けましたし、アセンブリでだいたいメモリなどの仕組みなどもわかっていたのでそれらは滞りなく習得できました。 そして、実際に開発をしようと思うのですが、OSSのソースコードなどを眺めてみても入門書の知識だけではさっぱり分からないです(当然)… そこでUNIX系のソフトウェアの開発を学べる良い書籍や情報源などは無いでしょうか? 具体的には基本的なライブラリやAutotoolsなどを学びたいです どなたかアドバイスお願いしますm(_ _)m

  • C言語の問題について

    #include <stdio.h> #define NMAX 20 struct node_tag { ??????? }; int main(void) { ??????? struct node_tag *p; int i; for (???????) { ??????? } p = ???????; while (p!=NULL){ printf("%d %s\n", ???????, ???????); p = ??????? } return 0; } 「 日付(整数) と 曜日名(文字) と 次の要素を指すポインタ 」を要素に持つ自己参照構造体 struct note_tag を定義して、この構造体を利用して線形リストを作成し,日付と曜日を表示させるプログラムを作成したいのですが?がわからなくて困ってます・・・どうか教えてください

  • Java バイナリデータの扱い

    既出でないことを確認してみたつもりです。 <やりたいこと> 1.バイナリデータに埋め込まれたデータを読み込みたい。 2.バイナリデータの並びは例えば double d1,d2; char buffer[256]; int i1, i2; などとなっていてファイルヘッダとして同じフォーマットのファイルには全て埋め込まれています。これを読み込みたいです。 <質問> C言語であれば例えば構造体を定義してやって構造体のポインタに対して ヘッダの読み込みを行ってやれば上記のdoubleなどの変数は参照できる ようになりますが、Javaで同等の処理をやろうとするとどうすれば 良いのかわかりません。 良い方法があれば教えて下さい。宜しくお願いします。

    • ベストアンサー
    • Java
  • C言語でヘッダファイルを自作する

    C言語で#defineを用いてヘッダファイルを作成したのですが、 作成したコンパイルするときにヘッダファイルがオープンできません。 参考にしている資料があるのですが、そこに書かれているサンプルプログラムを 丸ごとコピーして作ったプログラムも同様にヘッダファイルがオープンできない というエラーが出るので、ヘッダファイルを定義する方法そのものが間違っていると 思うのですが、どこが間違っているのでしょうか? よろしければ正しい記述方法もお教えください。 #include <stdio.h> #if !defined SAMPLE_H #define SAMPLE_H wa(int a, int b) { return a+b; } #endif #include "sample.h" int main(){ printf("%d\n",wa(40,70)); return 0; } ヘッダファイルの定義の方法は他にもあるとは思いますが、 今回は#defineを用いた方法でお願いします。

  • C#とC++/CLI間でポインタが指す内容が変わる

    現在、C++/CLIプログラムをC#で使う必要があり、 C++/CLIで定義したメソッドとクラスでC#側とやり取りする必要が生じております。 以下の書き方で、C++/CLIとC#間のクラスのやり取りはできたのですが、 C++/CLI側で定義されているメソッド内で、ポインタが指し示す値(*id.head)が変わってしまいます(文字化けみたいな感じになる)。 引き渡したポインタ変数の値は一致しているのですが、 どうすれば、C++/CLI側で値を正しく取得できるのでしょうか?。 【C++/CLI側で定義されているクラス】 public value class class1 { public : ULONG code; header    *head; }; typedef struct _header { CHAR achCHdrType[2]; CHAR achMsgLen[2]; } header ; 【C++/CLI側で定義されているメソッド】 ULONG session::open(class1& id) { return session_oepn(id.code, *id.head) } 【C#側でのメソッド参照】 class1 c1 = new class1(); uint status = session.open(&c1); よろしくお願いします。

  • 組み込み系C言語の学習法

    私は組み込みソフトを8年やってきました。 規模としては、白物家電をイメージしてもらうと良いです。 但し、電子レンジなど表示機能がない製品が近いかもしれません。 近いものでは、洗濯機や冷蔵庫といった感じでしょうか。 マイコンは、旧三菱の740ファミリのM38000系です。 ただソフト経験(アセンブラ)はあるものの、C言語の経験は皆無なのです。 ただし、if-else, switch-case, for, while, break, continue は充分理解できます。 何故かというと、旧三菱系のマイコンには構造化アセンブラと言って、 C言語もどきの記述ができるのです。上記文のみ特別に設けられていたのです。 それを使ってソフトを作っていたので上記分は理解できるのです。 しかし、ややこしいのがポインタや構造体や共有体や配列です。 同じことをアセンブラでもやっているはずなのです。 ポインタや構造体や共有体をアセンブラで書くとどうなるかが知りたいのです。 ここの部分が書いてある書籍がないのです。 例えば、ポインタや配列は、旧三菱系で言うとXレジスタやYレジスタを 使って行っていた作業と似てるのかなと推測できます。 同じ境遇の方で克服された方がいらっしゃいましたらアドバイスをお願いします。 また、アマゾンで下記の本を見つけました。 参考になるのでしょうか? よろしくお願いします。  ""組込み現場の「C」プログラミング基礎からわかる徹底入門""

  • 文字列strの中から文字cを探すプログラム(C言語)がわからない

    文字列strの中から文字cを探すプログラム(C言語)がわからない 柴田望洋さんの「[新版]明解C言語」という本の演習11-2なんですがどうしてもわかりません。間違いは無いと思うのにコンパイルすると警告を吐かれます。 僕が書いたプログラムを載せます。 /* 文字列strの中に、文字cが含まれていれば(複数ある場合は、最も先頭側とする)、 その文字へのポインタを返し、含まれていなければNULLを返す関数 char *str_chr(const char *str, int c) {} を作成せよ。 */ #include<stdio.h> char *str_chr(const char *str, int c){ while(*str){ if(*str==c) return str; str++; }     return NULL; } int main(){ char *str; char c; scanf("%s",str); scanf(" %c",c);     printf("%d",str_chr(str,c)); return 0; } コンパイラは「関数str_chrのif分の中のreturn strの型変換に問題がある」と言っているんです。 型変換はしるつもりは無いのにコンパイラはなぜそのように認識するのでしょうか。 またネット答えを探しましたがどうやらこのreturn strの部分はreturn (char*)strが正解のようです。意味がわかりません。strはポインタなのになぜまたわざわざchar型に変換しているのですか?といか(char*)の意味が根本的にわかりません。 質問ばかりですみません。初心者でポインタがどうにも理解できないんです。 誰か詳しい人教えてください。 お願いします。

専門家に質問してみよう