ルビー、ruby の、初心者向けで良い本、教えて下さい。

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

A 回答 (1件)

たのしいruby


が初心者用です。
https://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%8 …

もし、ruby以外の他の言語は精通していて、rubyだけが初心者なら
Ruby逆引きハンドブック
がよいかと。
https://www.amazon.co.jp/Ruby%E9%80%86%E5%BC%95% …
    • good
    • 0
この回答へのお礼

ありがとうございます。実は、Java を独習しているのですが、難しいし、これからは、パイソンだとか、ruby だとか、go だとか、しかも、そちらの方が、易しそうなので、乗り換えようかな?と思ってます。

宗教じゃあないんだから、柔軟に考えないと。プログラミングは、硬直した考えでは、ダメですから。

要するに、これから、需要が増えて、国内に話者が少ない言語を学んだ方が良いですよね。

お礼日時:2017/04/17 20:43

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

このQ&Aを見た人はこんなQ&Aも見ています

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

Qc言語は独学で、どこまで出来ますか?

大学生です。初歩的なc言語を学ぶ講義があるのですが、訳あって受けられなくなったので、独学でいこうかなと思っています。

初心者の大学生が1年程度受ける講義の内容は、独学でも難しいですか?

独学経験者、プログラミングに詳しい方の意見を伺いたいです。

Aベストアンサー

それは大丈夫でしょう。
最初はC言語入門的な書籍から入ってもいいし、真髄を学びたければカーニハン&リッチーの定番から読むのもいいし、プライマーから入ってもいいし。

ただ、コードを書くだけではダメなので、構造化プログラミングとか、コンパイラとか、ゆくゆくはオブジェクト指向とかに入っていかないといけません。

QRuby

全くの初心者です。プログラムといえば昔に専門学校の時に教えてもらっていたCOBOLくらいしか分かりません。
何がやりたいという意志もなく将来的にそっちの分野で働けたらいい位です。

過去にはVB挫折 C言語挫折しました。教われる人が居なかったのが最大の原因ですがRubyも近くにも遠くにも教えてくれる人が居ません。
初心者向けの本は買おうと思います。VBもCも本は買いましたが無理でした。
ネットで調べると割りに楽に覚えれるような事を書いてありましたので挑戦しようとおもいました。
実際のところはどうなんでしょうか。どこまで覚えればRubyは扱えると履歴書に書けるのでしょうか。

Aベストアンサー

> VB位はマスターできる位でないとRubyも同じようになるという事ですか

あなたが、失敗から学ぶことができない人なら、Rubyでも同じような箇所で同じように失敗するでしょう。
失敗から学ぶことができる人なら、Rubyを始めることでそれを克服できたら、挫折したVBやCについてもわかるようになるかもしれません。


あと、「マスター」ってどんなものを考えてますか?
何でもこなせるなんて、一握りの天才だけです。
ほとんどの人が、自分のできる範囲でできることをやっています。

言語の全てをマスターしないとプログラムが作れない、なんてことはありません。
やろうとしていることが、自分のできること+調べたらわかることを使ってできれば、それで十分です。
完璧なマスターを目指して、そこに辿り着けなかったことが「挫折」なら、マスターなんか目指さなければよいのです。

QC言語 a * b / c の計算

特に困っているわけではないのですが、エレガントな方法が見つからないので質問します。

a,c は32ビット、bは8ビット、0<a≦c、0<b がわかっているとします。
このとき、8ビットの整数計算値 a * b / c を「最大32ビットの範囲」で計算する方法、教えてください。
一応C言語で考えていますので、以下の***の部分の具体的な計算方法がわかればうれしいです。

int a,c; // 32bit 符号付き整数
signed char b,d; // 8bit 符号付き整数
if(a<2^(32-8)) d = a * b /c;
else **** ← この部分のプログラム

Aベストアンサー

決してエレガントではありませんが、a, cは正でありしかし符号付の型だという前提で a * b / c の整数の商を求めるのであれば、最初にa - cを求めて一時変数に代入しておき、bの数だけループし、ループ中に一時変数にaを加え、それがc以上になったらdを1加えて一時変数からcを引き去ることを繰り返せば、間違いなくすべての数値は32ビット以内に収まると思います。CPUにALUしかない時代の発想で、歳がばれますね・・・

Qhelloworld

helloworld のプログラムコンパイルしたのですがそれダブルクリックして開いても一瞬コマンドプロントでて終わりです。どうすればいいのですか。

Aベストアンサー

作成したプログラムが「コンソールアプリケーション」であるならば、バッチプログラムであるため、そうなるのは当たり前です。

確認する方法として、以下の方法があります。
・コード上、プログラムの実行が終わったタイミングで、入力待ち状態にさせる。
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello world");

            Console.Read(); // これ
        }
    }
}


・プロジェクトのプロパティ→デバッグ→開始動作で「外部プログラムの開始」を選択し、
 プログラムに「C:\Windows\System32\cmd.exe」を指定。
 コマンドライン引数に「/K exe名」を入力してデバッグ実行。
 (添付画像参照)

・Windows+Rを押して「cmd」と入力するなどしてコマンドプロンプトを起動し、
 exeをコンソール上にドラッグして実行。

・バッチファイルを用意して、実行。
 【test.bat】
  D:\hoge\helloworld.exe (exeのフルパスの記述)
  pause


なお、フォームを持つアプリケーションを作りたい場合、一般的には以下のいずれかのプロジェクトで作成することになります。
 (Visual Studio 2012の場合)
 ・Windows フォーム アプリケーション
 ・WPF アプリケーション

 (Visual Studio 2017の場合)
 ・WPF アプリ (.NET Framework)
 ・Windows フォーム アプリケーション (.NET Framework)

作成したプログラムが「コンソールアプリケーション」であるならば、バッチプログラムであるため、そうなるのは当たり前です。

確認する方法として、以下の方法があります。
・コード上、プログラムの実行が終わったタイミングで、入力待ち状態にさせる。
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello world");

            Console.Read(); // ...続きを読む

QC言語はどこまでゲームを作り込むことができますか?

ゲームを作っているのですが、使用しているソフトではパフォーマンスに少し満足できません。
なのでC言語を学ぼうと思ったのですがC言語は、例えばACTが作れるとか、どのくらいまで作れるとか。
逆にRPGとかは作れないみたいな、そういった限界がどこまであるのかわかりますか?

Aベストアンサー

C言語に限界はありません。
限界は、プログラマの方にあります。
C言語に変えたら全て解決、といった単純な話ではありませんので、覚悟してください。


CPUは、機械語しか理解できません。
全てのプログラムは、機械語に翻訳されるか、「プログラミング言語を解釈して実行するプログラム」を使って実行されます。

C言語は、大体前者で、しかも、 機械語とほぼ同等なことができるように作られています。
なので、原理的には、今あるコンピュータゲームは、ほぼ全てC言語で作ることができる、となります。


ですが、あなたが言う「作れる」とはニュアンスが違うと思います。

C言語自体は、とても低機能です。
そのツールが持っているような機能、例えば「画面にキャラクターを表示する」といったものはありません。
「水平に弾を発射」と設定すればいいだけのものが、
「一定時間毎に座標を少しずつ変化させて表示。画面外に出たら廃棄」
といった感じの、細かく分解する必要があります。
(これでも不十分で、「一定時間毎」ってどうやる?「画面外」とは?等と、より細かく分解しなければなりません)

結局、C言語で作る、ということは、「今使っているツールと同じようなものを自作する」のと同じことです。


また、C言語は速い、と誤解されているようです。
「無駄を省く等のチューニングができる場合がある」から「速くなるかもしれない」だけです。
そのツールでも、パフォーマンスは考慮されているでしょう。
C言語で書いても、何の対策もしていないなら、ツール以下のパフォーマンスになることもあります。

C言語に限界はありません。
限界は、プログラマの方にあります。
C言語に変えたら全て解決、といった単純な話ではありませんので、覚悟してください。


CPUは、機械語しか理解できません。
全てのプログラムは、機械語に翻訳されるか、「プログラミング言語を解釈して実行するプログラム」を使って実行されます。

C言語は、大体前者で、しかも、 機械語とほぼ同等なことができるように作られています。
なので、原理的には、今あるコンピュータゲームは、ほぼ全てC言語で作ることができる、となります。


です...続きを読む

Q独学でc言語ってどうやって勉強したらいいですか?? 独学でどこまで行けますか?? ITパスポートって

独学でc言語ってどうやって勉強したらいいですか??
独学でどこまで行けますか??

ITパスポートって無知な人でも勉強すれば簡単に取れますか??
どうやって勉強すればいいですか??

教えてください。

Aベストアンサー

>>独学でc言語ってどうやって勉強したらいいですか??
独学でどこまで行けますか??

私の場合、C言語は独学です。勉強方法は

1)書店でC言語の入門書、中級の本、上級の本など、名著といわれるものをイロイロ買って読む
2)書籍にあるC言語のサンプルをパソコンに打ち込んで動かしてみる
3)米国の通販会社からCのプログラムソースを輸入して、コードを読んだり動かしてみる
4)C言語を良く理解するために、アセンブラの勉強をする

私がC言語を覚えた頃と違って、現在は普通の人でもインターネットに接続できます。
だから海外からCソースを買わないでも、沢山のCのソースをネットから無償で入手できるので恵まれていますね。

なお、C言語の文法を理解しても、実際のプログラミングとなると

・C言語用ライブラリ
・WindowsやLinuxのAPI
・ファイルシステム
・文字コード処理
・画面処理

など、実際の処理内容に応じて、多くの追加知識が必要になります。

そして、どこまで行けるか?は、その人のやる気しだいでしょうね。


>>ITパスポートって無知な人でも勉強すれば簡単に取れますか??
どうやって勉強すればいいですか??

ITパスポートは、普通の会社に勤めて、きちんとパソコンを使えるレベルを目指しています。
ですから、わりと簡単にとれるような気がします。
書店に行けば、受験用の参考書がいろいろありますので、それを購入して勉強したらいいと思います。

>>独学でc言語ってどうやって勉強したらいいですか??
独学でどこまで行けますか??

私の場合、C言語は独学です。勉強方法は

1)書店でC言語の入門書、中級の本、上級の本など、名著といわれるものをイロイロ買って読む
2)書籍にあるC言語のサンプルをパソコンに打ち込んで動かしてみる
3)米国の通販会社からCのプログラムソースを輸入して、コードを読んだり動かしてみる
4)C言語を良く理解するために、アセンブラの勉強をする

私がC言語を覚えた頃と違って、現在は普通の人でもインターネットに接続...続きを読む

Qc言語プログラミング

2つの符号なし整数a,bを受け取りaをbで割った余りを整数で出力するプログラムを記述するにはどのようにすればいいですか?
キーワード: 剰余演算子

Aベストアンサー

c=a%b

QC言語の問題です

こちらまだC言語を勉強したてであまり知識がありません。どなたかお力をお貸しください。

全部で8名から代表者を3名を無作為に選びたい。一様乱数を0から7の間で発生させる。それを100回試行して最も回数の多い順に並べ替えを行って表示した例である。下のような結果を得るプログラムを作成せよ。

第1位 16回 Eさん
第2位 15回 Dさん
第3位 15回 Cさん
第4位 14回 Bさん
第5位 13回 Gさん
第6位 11回 Hさん
第7位 8回 Aさん
第8位 8回 Fさん


#include<stdio.h>
#include<math.h>
#include<string.h>
main(){
int i,j,n,count[8];
unsigned char x;
int w;
char *work;
char *name[8]={"Aさん","Bさん","Cさん","Dさん","Eさん","Fさん","Gさん","Hさん"};

// srand(time(NULL));
for(n=0;n<8;n++){
count[n]=0;
}
for(i=1;i<=100;i++){
x=rand()%8;
count[x]++;
}

for(i=0;i<7;i++){
for(j=i+1;j<8;j++){
ifj]){
work=count[i];
count[i]=count[j];
count[j]=work;
}
}
}

for(i=0;i<8;i++){
printf("第%d位 %3d回 %10s\n",i+1,count[i],name[i]);
}
}

第〜位、〜回はちゃんと表示されるのですが、最後の〜さんがAーHまで順番になってしまいます。
助けてください。よろしくおねがいします。

こちらまだC言語を勉強したてであまり知識がありません。どなたかお力をお貸しください。

全部で8名から代表者を3名を無作為に選びたい。一様乱数を0から7の間で発生させる。それを100回試行して最も回数の多い順に並べ替えを行って表示した例である。下のような結果を得るプログラムを作成せよ。

第1位 16回 Eさん
第2位 15回 Dさん
第3位 15回 Cさん
第4位 14回 Bさん
第5位 13回 Gさん
第6位 11回 Hさん
第7位 8回 Aさん
第8位 8回 Fさん...続きを読む

Aベストアンサー

変数nameの内容を全然操作していません。初期値のままなので、、、

> 最後の〜さんがAーHまで順番になってしまいます。

となるのは当然かと。(^^;
nameをどのように扱えばよいか、countとnameをどのようなデータ構造としたら処理効率がよいかを考えられるとよいです。

で、そういったことは使用するプログラミング言語に完全には依存しない部分かと思います。
例えば名前と回数がペアになったような(論理的な)データ構造を考え、処理手順を日本語で(1), (2), (3), ... とかいった箇条書きで設計されるとよいでしょう。
フローチャートなどのチャート図をご存知でしたらそれで書くのが楽で効率的でしょう。

参考まで。

QC言語で四則演算を使って10を作るプログラム

C言語のプログラミングの問題です。
1桁の整数4つをキーボードから入力して、四則演算で10になる式をすべて出力するという問題で、演算子の優先順位ありで、括弧は使わないとし、数字は入れ替え可能です。
また、プログラムはint型の変数を用いるというものです。
とりあえずは数字入れ替えなしで、次のような力技でソースコードを作ってみたのですが、数字の入れ替えまで考えるとあまりに力技すぎるようなだらだらとしたプログラムになってしまいます。。。
数字の入れ替え可能としてもっと簡単なプログラムを作るにはどのようなソースコードになるのでしょうか。

以下ソースコードです。

#include<stdio.h>
#include<math.h>

int main(void) {

int a, b, c, d = 0;

printf("一桁の整数4つを入力してください。\n");
scanf_s("%d %d %d %d", &a, &b, &c, &d);

if (a + b - c * d == 10)
printf("%d+%d-%d*%d\n", a, b, c, d);
else if (a + b - c / d == 10)
printf("%d+%d-%d/%d\n", a, b, c, d);
else if (a + b * c - d == 10)
printf("%d+%d*%d-%d\n", a, b, c, d);
else if (a + b * c / d == 10)
printf("%d+%d*%d/%d\n", a, b, c, d);
else if (a + b / c - d == 10)
printf("%d+%d/%d-%d\n", a, b, c, d);
else if (a + b / c * d == 10)
printf("%d+%d/%d*%d\n", a, b, c, d);
else if (a - b + c * d == 10)
printf("%d-%d+%d*%d\n", a, b, c, d);
else if (a - b + c / d == 10)
printf("%d-%d+%d/%d\n", a, b, c, d);
else if (a - b * c + d == 10)
printf("%d-%d*%d+%d\n", a, b, c, d);
else if (a - b * c / d == 10)
printf("%d-%d*%d/%d\n", a, b, c, d);
else if (a - b / c + d == 10)
printf("%d-%d/%d+%d\n", a, b, c, d);
else if (a - b / c * d == 10)
printf("%d-%d/%d*%d\n", a, b, c, d);
else if (a * b + c - d == 10)
printf("%d*%d+%d-%d\n", a, b, c, d);
else if (a * b + c / d == 10)
printf("%d*%d+%d/%d\n", a, b, c, d);
else if (a * b - c + d == 10)
printf("%d*%d-%d+%d\n", a, b, c, d);
else if (a * b - c / d == 10)
printf("%d*%d-%d/%d\n", a, b, c, d);
else if (a * b / c + d == 10)
printf("%d*%d/%d+%d\n", a, b, c, d);
else if (a * b / c - d == 10)
printf("%d*%d/%d-%d\n", a, b, c, d);
else if (a / b + c - d == 10)
printf("%d/%d+%d-%d\n", a, b, c, d);
else if (a / b + c * d == 10)
printf("%d/%d+%d*%d\n", a, b, c, d);
else if (a / b - c + d == 10)
printf("%d/%d-%d+%d\n", a, b, c, d);
else if (a / b - c * d == 10)
printf("%d/%d-%d*%d\n", a, b, c, d);
else if (a / b * c + d == 10)
printf("%d/%d*%d+%d\n", a, b, c, d);
else if (a / b * c - d == 10)
printf("%d/%d*%d-%d\n", a, b, c, d);
else {
printf("10になる組み合わせはありません。");
}

return 0;

}

C言語のプログラミングの問題です。
1桁の整数4つをキーボードから入力して、四則演算で10になる式をすべて出力するという問題で、演算子の優先順位ありで、括弧は使わないとし、数字は入れ替え可能です。
また、プログラムはint型の変数を用いるというものです。
とりあえずは数字入れ替えなしで、次のような力技でソースコードを作ってみたのですが、数字の入れ替えまで考えるとあまりに力技すぎるようなだらだらとしたプログラムになってしまいます。。。
数字の入れ替え可能としてもっと簡単なプログラ...続きを読む

Aベストアンサー

No14です。
calcに一部誤りがありましたので、修正しました。
下記URLが正しいソースになります。こちらを使用してください。
http://climbi.com/b/10192/1
不明点があれば、補足してください。

QC言語プログラミングにて、arctanのマクローリン展開式を用いた計算

C言語のプログラミングについてです。
関数f(x)=arctan⁡xのマクローリン展開式を用いて、f(x)の値を、展開式のn項目までの計算結果と、n+1項目までの計算結果の相対誤差が10^(-10)以下になるまで(有効桁数10桁を保証するまで)試行して計算し、出力するプログラムを作成するという問題です。
次のように、展開式の項数を10000項と設定してプログラムを作成してみましたが、実行結果が-nan(ind)と出力されてしまい、有効桁数10桁での出力がされません。ソースコードのどの部分に不備があるのでしょうか?
以下ソースコードです。
#include<stdio.h>
#include<math.h>

int main(void) {
int i;
double x, a1, a2, arctan;
x = 0;
a1 = 0;
a2 = 0;
arctan = 0;

printf("f(x)=arctan x のマクローリン展開式よりf(x)の値を求める。\n");
printf("x=");
///数値xをキーボードから入力///
scanf_s("%lf", &x);

///有効桁判別ループ開始///
do {
///前値の受け渡し///
a2 = a1;

///項数の設定(10000項と設定)///
for (i = 1; i <= 10000; i++) {
///arctanのマクローリン展開式///
arctan = pow(-1, i - 1)*pow(x, 2 * i - 1) / (2 * i - 1);
a1 = a1 + arctan;
}

///相対誤差が10^-10以下になったら止める///
} while (fabs(a1 - a2) / a1 <= pow(10, -10));

///最終的な計算結果を出力///
printf("f(x)= %.9e \n", a1);

return 0;
}

C言語のプログラミングについてです。
関数f(x)=arctan⁡xのマクローリン展開式を用いて、f(x)の値を、展開式のn項目までの計算結果と、n+1項目までの計算結果の相対誤差が10^(-10)以下になるまで(有効桁数10桁を保証するまで)試行して計算し、出力するプログラムを作成するという問題です。
次のように、展開式の項数を10000項と設定してプログラムを作成してみましたが、実行結果が-nan(ind)と出力されてしまい、有効桁数10桁での出力がされません。ソースコードのどの部分に不備があるのでしょうか?
以下...続きを読む

Aベストアンサー

No1,No2の方の指摘はもっともですが、
そもそも、このマクローリン展開が成立するのは、負の数を除いて考えれば、0<=x<=1 の範囲です。
上記以外では、成立しません。
入力値を0<=x<=1に限定すれば、正しい結果が導かれています。
printf("f(x)= %.9e \n", a1);
のあとに
a2 = atan(x);
printf("arctan(x)= %.9e \n", a2);
を追加し、確認すればわかります。


このQ&Aを見た人がよく見るQ&A