ぷろぐらみんぐ!

プログラマーを目指して勉強する大学生のブログ

if文の使い方 C#5

こんにちは!

 

今回は比較を行う文というところからやっていこうと思います。

 

比較と判断まとめ

・条件によって処理を変える場合if文を使う。

・if文は下のように使う。

       if  (条件式) 文;

・条件による判定を行った時、0を偽、0以外の数値を真と呼ぶ。

・真の場合のみ横の文を実行する。

・2つの値が等しいか調べるときには、==演算子を使う。(数学でいう=と同じ)

2つの値が等しくないか調べるときには、!=演算子を使う。(数学でいう≠と同じ)

・==演算子と !=演算子を等値演算子という。

・< , > , <= , >= 、を関係演算子といい、使い方は数学と同じ。

・&& , || , ! ,を論理演算子という。

・&&演算子はかつ(and)、 || 演算子はまたは(or)、! 演算子は否(not)という意味。

・{ } で複数の文を囲んでひとまとめにされた文をブロック文という。

 

一気に進みました!

if文が使えるようになるといろんなことができそうですね。

 

 次は練習問題です。

 

f:id:fujigg7:20170213204606p:plain

 

プログラム書き取り問題が難しかったです。

冬季オリンピックの年がわかりませんでした(笑)

if文の条件の部分が答えと違うのでちゃんと動くのかわかりません。

一応試した範囲では大丈夫でした。

 

今回は短いですがこの辺で終わります。

 

それでは!

scanf関数、scanf_s関数どっちを使うべき? C#4

こんにちは!

 

今日は入力用の関数というところから始めていきたいと思います。

今回は新しい関数が出てきます!

それでは早速まとめます。

 

 

・キーボードからデータを入力するにはscanf関数を使う。

・scanf関数は下のようにして使う。

scanf("入力変換指定子",&変数名);

・入力変換指定子とは入力された数字をどのような数値に変換するかを表す文字のこと。

・scanf関数を使うには#include<stdio.h>を最初に書く必要がある。

・scanf関数で実数を入力する場合は%lf指定子を使う。

 

 

データ入力用の関数が新しく出てきました!

scanf関数を使ってみよう!ということで、サンプルプログラムを書き写してみました。

さっそく実行してみたところエラーが出ました。

 

f:id:fujigg7:20170212204846p:plain

 

これで実行してみると、

 

f:id:fujigg7:20170212204721p:plain

 

こうなりました。

 

f:id:fujigg7:20170212204944p:plain

 

打ち間違いはないはずです。

なのになぜエラーになったのか説明を読んでみると、

 

'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

 

グーグル翻訳してみると、

 

'scanf':この関数または変数は危険です。 代わりにscanf_sの使用を検討してください。 廃止予定を無効にするには、_CRT_SECURE_NO_WARNINGSを使用してください。 詳細については、オンラインヘルプを参照してください。

 

とのことです。

scanf関数が危険!?

今習ったばっかりの関数が危険というのはどういうことなのでしょうか。

 

scanf関数と、scanf_s関数について少し調べてみました。

scanf関数を使った場合、入力時に長い文字列を打ちこまれた時にエラーになります。

そしてそのエラーを利用してハッキングされる可能性があるのでscanf関数は危険ということみたいです。

scanf_s関数は入力される文字列の数を指定できるため、このような問題が起こることがなく安全だということらしいです。

 

今作っているプログラムを公開することはないので、scanf関数をVisual Studioで使えるようにします。

 

上のバーから、プロジェクト、Projectのプロパティをクリック。

f:id:fujigg7:20170212211745p:plain

左の欄の構成プロパティ、C/C++、全般と進んだ後、右のところにあるSDLチェックをいいえになるまでクリックします。

いいえになったら、適用、OKをクリックします。

 

これで設定は完了です。

さっきのプログラムを動かしてみます。

 

f:id:fujigg7:20170212212202p:plain

 

ちゃんと動きました!

ここで123と入力してみると、

 

f:id:fujigg7:20170212212254p:plain

 

123が入力できます。

そのあとprintf関数もしっかり動いていますね!

 

それでは次に進みます。

 

次は本格的なプログラム作成です!

数学で習ったΣの計算ができるプログラムを書いていきます!

サンプルプログラムを書き写して実行!

 

f:id:fujigg7:20170212214159p:plain

 

出来た!

 

f:id:fujigg7:20170212214345p:plain

 

計算もちゃんと合ってます!

 

プログラムが少しずつ本格的になってきました。

プログラミングには数学の知識も必要なんですね!

 

今回はもう少し進みます。

次はscanf関数に問題があることを学びます。

ってこれ、さっき調べちゃいましたね。

とりあえずさらっとまとめます。

 

・scanf関数は区切り記号を間違えたり、大きすぎる数値、文字列を打ち込まれてしまうと結果がめちゃくちゃになる。

 

解決法は今の段階では難しいのでもっと勉強が進んでから学ぶそうです。

 

ここまで読んだら練習問題です。

 

 

f:id:fujigg7:20170212221136p:plain

 

プログラム書取問題もいい感じです。

 

 

今回はここまでにしたいと思います。

今回はΣの計算が出てきました。

プログラミングの勉強だけでなく、数学も頑張らないといけないですね。

次回はif文が出てきます。

なんとなくプログラミングといえばif文というイメージがあったのですごく楽しみです!

 

 

それでは

 

変数なんて簡単簡単 C#3

こんにちは!

 

今回は数値の計算から始めていきたいと思います。

プログラミング言語は数値を計算するための言語だと勉強したので、気合い入れて頑張っていこうと思います。

 

 

C言語では数値と数字を区別して扱う。

C言語において""の中に書かれている文字や数字を文字列(文字列リテラル)という。

・数値を書きたい場合は""で囲わずに書く。

・数字は計算に使えず、数値は計算に使える。

・printf関数で数値を表現するには出力変換指定子を使う。

出力変換指定子とは外部のデータを文字列に変換して表示するときに、その変換方法を指定する記号。

・整数値を文字列に変換するには%d指定子を使う。

 

 

あまり耳慣れない言葉がいくつか出てきました。

出力変換指定子がよくわからなかったのですが、サンプルプログラムを書き写して実行してみると簡単にわかりました。

 

f:id:fujigg7:20170211035032p:plain

 

簡単に言うと、

""の中に数値を書きたいがそのまま書いてしまうと数字になってしまう。だから代わりに%dという記号を使って、後から数字を代入する

ということです。(長文になると簡単に見えない...)

 

続きをやっていきます!

 

 

C言語では掛け算の計算記号を * 、割り算を / で表す。(+,- はそのまま)

・% を使えば割り算した時の余り計算することができる。

・数値を整数として計算する時は少数以下は切り捨てられ、整数となる。

・数式の計算する順番は数学と同じ。

 

 

ここら辺はまだまだ余裕ですね。

どんどん先に進みます。

 

 

C言語では数値を整数と実数(浮動小数)の2種類に分類して扱う。

・整数とは、負の数と0と自然数のこと。

・実数とは、小数を含む数のこと。

・整数は10進数、8進数、16進数の3種類の書き方が出来る。

・数字をそのまま書けば10進数、数字の前に0を付ければ8進数、0xを付ければ16進数になる。

・実数を数字に変換するには %f 指定子を使う。

 

 

一見難しいことが書いてありますが、読んでみるとそうでもありませんでした。

次は練習問題です。

 

f:id:fujigg7:20170211042311p:plain

 

余裕です!

まだまだ進みましょう!

 

 

次は数値の記憶ということで、ついに変数が出てきます。

どんどんプログラミングっぽくなってきますね!

それでは簡単にまとめます。

 

 

・変数とは数値を保管するための箱のようなもの。

・変数に名前を付けることを変数を宣言するという。

・変数を宣言するには、型名 変数名; と書く。

・型名とは記憶しておきたい数値の種類を表す名前。

・今は整数を意味する int という型名を覚えておく。

・変数名とは変数に付ける名前のこと。

・変数に数値を記憶させるには、 変数名 = 数値; と書く。

・なお、= は右辺と左辺が等しいという数学的な意味ではなく、右辺の数値を左辺に代入するという意味。

f:id:fujigg7:20170211044722p:plain

f:id:fujigg7:20170211045321p:plain

 

少しずつまとめる内容が多くなってきました。

変数は数学でよく出てくる x のみたいなものなんでしょうか?

= の意味には要注意ですね。

←に置きかえたらわかりやすいみたいです。

ひととおり演算子を覚えたら次へ進みましょう。

 

C言語にはさまざまな種類の数値があり、それをデータ型と呼ぶことがある。

・整数を記憶する int 型、実数を意味する double 型、今はこの2種類のデータ型を覚えておく。

・整数と実数で計算を行った場合、結果は実数に変換される。

・型を強制的に変換する場合キャスト変換という機能を使う。

・キャスト変換をするには、下のように書く。

(変換する型名) 数値や変換名

・printf関数は、出力変換指定子の間に数字を入れると、その数字分の桁に揃えて表示してくれるという機能を持つ。

また、桁数の前に0を付けると、空白の代わりに0を付けて桁を揃えてくれる。

・実数値の桁数を揃えるには下のように書く。

%全体桁数.小数桁数f

全体桁数は小数の桁数と小数点を含むことに注意。

 

データ型の方は理解しやすいですが、桁揃えには少しややこしいですね。

特に実数値に注意。

 

 

次は練習問題です。

 

 

f:id:fujigg7:20170211062039p:plain

 

今回はプログラム書き取り問題に少し苦戦しました。

少し苦戦した分、うまくいったときは今まで以上にうれしかったです!

 

 

いつの間にか1600文字を超えていたので今回はここまでにしたいと思います。

今回でかなりプログラミングっぽい内容になってきました。

すごく楽しくなってきたのでこれからも毎日頑張っていきたいと思います!

 

 

それでは。