ぷろぐらみんぐ!

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

for文を使って九九表を表示する C#6

こんにちは!

 

今日は if - else 文のところからやっていこうと思います。

if文だけでは偽の場合は処理を何もしませんでしたが、else文を使うと何らかの処理ができるようになります。

 それでは早速まとめていきます。

 

if - else 文

  •  if - else 文は下のようにして使う。

    f:id:fujigg7:20170215213204p:plain

  • さらに場合分けするときは、else 文の中に if 文を入れて処理する。それを else - if 文と呼ぶ。
  • 番号分けするときなどは、else - if 文が増えすぎてしまい、プログラムが見づらくなってしまうので、switch - case 文を使う。
  • switch - case 文は下のようにして使う。

f:id:fujigg7:20170215214004p:plain

  • break文を忘れないように注意する。
  • switch - case 文は整数値と変数の比較にしか使えない。

 

 

 新しく2つの文が出てきました。

特にswitch - case 文は今までと少し違いますね。

書き方を覚えるためにサンプルプログラムを書き写してみました。

 

f:id:fujigg7:20170215215204p:plain

説明文を読んでみてもよくわからない時は、プログラムを書き写してみるのが一番いいですね。

そんなこんなで練習問題です。

 

f:id:fujigg7:20170215220033p:plain

 

ほとんど中身はないですが、初めて50行近いコードを書きました。

少しずつですがレベルアップ出来ている気がします。

少なくともタイピングはすごく早くなりました。

モチベーションも上がってきたところでどんどん先に進みましょう。

 

次は回数の決まっている繰り返しを行う文ということで、for文を勉強します。

ではまとめます。

 

for文

  • 回数の決まっている文にはfor文を使う。
  • for文は下のようにして使う。

  f:id:fujigg7:20170215230227p:plain

  わかりやすく言うと、

  f:id:fujigg7:20170215230322p:plain

  となる。

  • このとき、i のことをカウント変数と呼ぶことがある。
  • 初期化は、カウント変数を初期化するための文。
  • 条件式は、ループの回数を決定する文。ここの値が真の間は繰り返す文を実行し続ける。
  • 更新は、カウント変数の値を更新するための文。繰り返す文を実行した後に更新される。
  • 条件式の部分を省略すると無限ループになる。
  • 処理の部分でbreak文が実行されると、ループが強制的に終了される。

 

今回もfor文を理解するためにプログラムを書いてみます。

サンプルプログラムではメッセージという文字列を10回表示させていましたが、そのままでは面白くないので少し変えてみます。

1から10までの数字をすべて足すプログラムを書いてみたいと思います。

 

f:id:fujigg7:20170215232748p:plain

 

下の計算はこの前に簡易Σプログラムを作ったときに書いたやつです。

どちらも値が同じなので正しく書けていると思います。

 

次は i = 7の時にbreak文を実行してループを抜けてみたいと思います。

 

f:id:fujigg7:20170215233223p:plain

 

いい感じです。

 

無限ループはやめときます(笑)

 

それでは練習問題です。

 

f:id:fujigg7:20170215234058p:plain

 

きれいに揃ってはいますが、いまいち見やすくないので少し改良。

 

f:id:fujigg7:20170215234259p:plain

 

見やすくなった!

%4dではなく \t にするべきかな?と思ってやってみたけど長方形になったのでやめました。

答えを見たら前後に空白入れてるだけだった。

まぁ九九の表示はできてるしいっか。。。

 

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

プログラミングにはとても難しいイメージがありましたが、やってみると楽しく進めているのでよかったと思います。

明日からもどんどん進めていきたいと思っていますのでよろしくお願いします。

 

それでは。

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文というイメージがあったのですごく楽しみです!

 

 

それでは